').html(template.trim()).contents();\n var linkFn = $compile(element);\n\n // Return a linking function that can be used later when the element is ready\n return {\n locals: locals,\n element: element,\n link: function link (scope) {\n locals.$scope = scope;\n\n // Instantiate controller if it exists, because we have scope\n if (controller) {\n var invokeCtrl = $controller(controller, locals, true);\n if (bindToController) {\n angular.extend(invokeCtrl.instance, locals);\n }\n // Support angular@~1.2 invokeCtrl\n var ctrl = angular.isObject(invokeCtrl) ? invokeCtrl : invokeCtrl();\n // See angular-route source for this logic\n element.data('$ngControllerController', ctrl);\n element.children().data('$ngControllerController', ctrl);\n\n if (controllerAs) {\n scope[controllerAs] = ctrl;\n }\n }\n\n return linkFn.apply(null, arguments);\n }\n };\n });\n\n };\n\n function findElement (query, element) {\n return angular.element((element || document).querySelectorAll(query));\n }\n\n var fetchPromises = {};\n function fetchTemplate (template) {\n if (fetchPromises[template]) return fetchPromises[template];\n return (fetchPromises[template] = $http.get(template, {cache: $templateCache})\n .then(function (res) {\n return res.data;\n }));\n }\n\n}\n","'use strict';\n\nangular.module('mgcrea.ngStrap.datepicker', [\n 'mgcrea.ngStrap.helpers.dateParser',\n 'mgcrea.ngStrap.helpers.dateFormatter',\n 'mgcrea.ngStrap.tooltip'])\n\n .provider('$datepicker', function () {\n\n var defaults = this.defaults = {\n animation: 'am-fade',\n // Uncommenting the following line will break backwards compatability\n // prefixEvent: 'datepicker',\n prefixClass: 'datepicker',\n placement: 'bottom-left',\n templateUrl: 'datepicker/datepicker.tpl.html',\n trigger: 'focus',\n container: false,\n keyboard: true,\n html: false,\n delay: 0,\n // lang: $locale.id,\n useNative: false,\n dateType: 'date',\n dateFormat: 'shortDate',\n timezone: null,\n modelDateFormat: null,\n dayFormat: 'dd',\n monthFormat: 'MMM',\n yearFormat: 'yyyy',\n monthTitleFormat: 'MMMM yyyy',\n yearTitleFormat: 'yyyy',\n strictFormat: false,\n autoclose: false,\n minDate: -Infinity,\n maxDate: +Infinity,\n startView: 0,\n minView: 0,\n startWeek: 0,\n daysOfWeekDisabled: '',\n hasToday: false,\n hasClear: false,\n iconLeft: 'glyphicon glyphicon-chevron-left',\n iconRight: 'glyphicon glyphicon-chevron-right'\n };\n\n this.$get = function ($window, $document, $rootScope, $sce, $dateFormatter, datepickerViews, $tooltip, $timeout) {\n\n var isNative = /(ip[ao]d|iphone|android)/ig.test($window.navigator.userAgent);\n var isTouch = ('createTouch' in $window.document) && isNative;\n if (!defaults.lang) defaults.lang = $dateFormatter.getDefaultLocale();\n\n function DatepickerFactory (element, controller, config) {\n\n var $datepicker = $tooltip(element, angular.extend({}, defaults, config));\n var parentScope = config.scope;\n var options = $datepicker.$options;\n var scope = $datepicker.$scope;\n if (options.startView) options.startView -= options.minView;\n\n // View vars\n\n var pickerViews = datepickerViews($datepicker);\n $datepicker.$views = pickerViews.views;\n var viewDate = pickerViews.viewDate;\n scope.$mode = options.startView;\n scope.$iconLeft = options.iconLeft;\n scope.$iconRight = options.iconRight;\n scope.$hasToday = options.hasToday;\n scope.$hasClear = options.hasClear;\n var $picker = $datepicker.$views[scope.$mode];\n\n // Scope methods\n\n scope.$select = function (date) {\n $datepicker.select(date);\n };\n scope.$selectPane = function (value) {\n $datepicker.$selectPane(value);\n };\n scope.$toggleMode = function () {\n $datepicker.setMode((scope.$mode + 1) % $datepicker.$views.length);\n };\n scope.$setToday = function () {\n if (options.autoclose) {\n $datepicker.setMode(0);\n $datepicker.select(new Date());\n } else {\n $datepicker.select(new Date(), true);\n }\n };\n scope.$clear = function () {\n if (options.autoclose) {\n $datepicker.setMode(0);\n $datepicker.select(null);\n } else {\n $datepicker.select(null, true);\n }\n };\n\n // Public methods\n\n $datepicker.update = function (date) {\n // console.warn('$datepicker.update() newValue=%o', date);\n if (angular.isDate(date) && !isNaN(date.getTime())) {\n $datepicker.$date = date;\n $picker.update.call($picker, date);\n }\n // Build only if pristine\n $datepicker.$build(true);\n };\n\n $datepicker.updateDisabledDates = function (dateRanges) {\n options.disabledDateRanges = dateRanges;\n for (var i = 0, l = scope.rows.length; i < l; i++) {\n angular.forEach(scope.rows[i], $datepicker.$setDisabledEl);\n }\n };\n\n $datepicker.select = function (date, keep) {\n // console.warn('$datepicker.select', date, scope.$mode);\n if (angular.isDate(date)) {\n if (!angular.isDate(controller.$dateValue) || isNaN(controller.$dateValue.getTime())) {\n controller.$dateValue = new Date(date);\n }\n } else {\n controller.$dateValue = null;\n }\n if (!scope.$mode || keep) {\n controller.$setViewValue(angular.copy(date));\n controller.$render();\n if (options.autoclose && !keep) {\n $timeout(function () { $datepicker.hide(true); });\n }\n } else {\n angular.extend(viewDate, {year: date.getFullYear(), month: date.getMonth(), date: date.getDate()});\n $datepicker.setMode(scope.$mode - 1);\n $datepicker.$build();\n }\n };\n\n $datepicker.setMode = function (mode) {\n // console.warn('$datepicker.setMode', mode);\n scope.$mode = mode;\n $picker = $datepicker.$views[scope.$mode];\n $datepicker.$build();\n };\n\n // Protected methods\n\n $datepicker.$build = function (pristine) {\n // console.warn('$datepicker.$build() viewDate=%o', viewDate);\n if (pristine === true && $picker.built) return;\n if (pristine === false && !$picker.built) return;\n $picker.build.call($picker);\n };\n\n $datepicker.$updateSelected = function () {\n for (var i = 0, l = scope.rows.length; i < l; i++) {\n angular.forEach(scope.rows[i], updateSelected);\n }\n };\n\n $datepicker.$isSelected = function (date) {\n return $picker.isSelected(date);\n };\n\n $datepicker.$setDisabledEl = function (el) {\n el.disabled = $picker.isDisabled(el.date);\n };\n\n $datepicker.$selectPane = function (value) {\n var steps = $picker.steps;\n // set targetDate to first day of month to avoid problems with\n // date values rollover. This assumes the viewDate does not\n // depend on the day of the month\n var targetDate = new Date(Date.UTC(viewDate.year + ((steps.year || 0) * value), viewDate.month + ((steps.month || 0) * value), 1));\n angular.extend(viewDate, {year: targetDate.getUTCFullYear(), month: targetDate.getUTCMonth(), date: targetDate.getUTCDate()});\n $datepicker.$build();\n };\n\n $datepicker.$onMouseDown = function (evt) {\n // Prevent blur on mousedown on .dropdown-menu\n evt.preventDefault();\n evt.stopPropagation();\n // Emulate click for mobile devices\n if (isTouch) {\n var targetEl = angular.element(evt.target);\n if (targetEl[0].nodeName.toLowerCase() !== 'button') {\n targetEl = targetEl.parent();\n }\n targetEl.triggerHandler('click');\n }\n };\n\n $datepicker.$onKeyDown = function (evt) {\n if (!/(38|37|39|40|13)/.test(evt.keyCode) || evt.shiftKey || evt.altKey) return;\n evt.preventDefault();\n evt.stopPropagation();\n\n if (evt.keyCode === 13) {\n if (!scope.$mode) {\n $datepicker.hide(true);\n } else {\n scope.$apply(function () { $datepicker.setMode(scope.$mode - 1); });\n }\n return;\n }\n\n // Navigate with keyboard\n $picker.onKeyDown(evt);\n parentScope.$digest();\n };\n\n // Private\n\n function updateSelected (el) {\n el.selected = $datepicker.$isSelected(el.date);\n }\n\n function focusElement () {\n element[0].focus();\n }\n\n // Overrides\n\n var _init = $datepicker.init;\n $datepicker.init = function () {\n if (isNative && options.useNative) {\n element.prop('type', 'date');\n element.css('-webkit-appearance', 'textfield');\n return;\n } else if (isTouch) {\n element.prop('type', 'text');\n element.attr('readonly', 'true');\n element.on('click', focusElement);\n }\n _init();\n };\n\n var _destroy = $datepicker.destroy;\n $datepicker.destroy = function () {\n if (isNative && options.useNative) {\n element.off('click', focusElement);\n }\n _destroy();\n };\n\n var _show = $datepicker.show;\n $datepicker.show = function () {\n if ((!isTouch && element.attr('readonly')) || element.attr('disabled')) return;\n _show();\n // use timeout to hookup the events to prevent\n // event bubbling from being processed imediately.\n $timeout(function () {\n // if $datepicker is no longer showing, don't setup events\n if (!$datepicker.$isShown) return;\n $datepicker.$element.on(isTouch ? 'touchstart' : 'mousedown', $datepicker.$onMouseDown);\n if (options.keyboard) {\n element.on('keydown', $datepicker.$onKeyDown);\n }\n }, 0, false);\n };\n\n var _hide = $datepicker.hide;\n $datepicker.hide = function (blur) {\n if (!$datepicker.$isShown) return;\n $datepicker.$element.off(isTouch ? 'touchstart' : 'mousedown', $datepicker.$onMouseDown);\n if (options.keyboard) {\n element.off('keydown', $datepicker.$onKeyDown);\n }\n _hide(blur);\n };\n\n return $datepicker;\n\n }\n\n DatepickerFactory.defaults = defaults;\n return DatepickerFactory;\n\n };\n\n })\n\n .directive('bsDatepicker', function ($window, $parse, $q, $dateFormatter, $dateParser, $datepicker) {\n\n // var defaults = $datepicker.defaults;\n var isNative = /(ip[ao]d|iphone|android)/ig.test($window.navigator.userAgent);\n\n return {\n restrict: 'EAC',\n require: 'ngModel',\n link: function postLink (scope, element, attr, controller) {\n\n // Directive options\n var options = {scope: scope};\n angular.forEach(['template', 'templateUrl', 'controller', 'controllerAs', 'placement', 'container', 'delay', 'trigger', 'html', 'animation', 'autoclose', 'dateType', 'dateFormat', 'timezone', 'modelDateFormat', 'dayFormat', 'strictFormat', 'startWeek', 'startDate', 'useNative', 'lang', 'startView', 'minView', 'iconLeft', 'iconRight', 'daysOfWeekDisabled', 'id', 'prefixClass', 'prefixEvent', 'hasToday', 'hasClear'], function (key) {\n if (angular.isDefined(attr[key])) options[key] = attr[key];\n });\n\n // use string regex match boolean attr falsy values, leave truthy values be\n var falseValueRegExp = /^(false|0|)$/i;\n angular.forEach(['html', 'container', 'autoclose', 'useNative', 'hasToday', 'hasClear'], function (key) {\n if (angular.isDefined(attr[key]) && falseValueRegExp.test(attr[key])) {\n options[key] = false;\n }\n });\n\n // bind functions from the attrs to the show and hide events\n angular.forEach(['onBeforeShow', 'onShow', 'onBeforeHide', 'onHide'], function (key) {\n var bsKey = 'bs' + key.charAt(0).toUpperCase() + key.slice(1);\n if (angular.isDefined(attr[bsKey])) {\n options[key] = scope.$eval(attr[bsKey]);\n }\n });\n\n // Initialize datepicker\n var datepicker = $datepicker(element, controller, options);\n options = datepicker.$options;\n // Set expected iOS format\n if (isNative && options.useNative) options.dateFormat = 'yyyy-MM-dd';\n\n var lang = options.lang;\n\n var formatDate = function (date, format) {\n return $dateFormatter.formatDate(date, format, lang);\n };\n\n var dateParser = $dateParser({format: options.dateFormat, lang: lang, strict: options.strictFormat});\n\n // Visibility binding support\n if (attr.bsShow) {\n scope.$watch(attr.bsShow, function (newValue, oldValue) {\n if (!datepicker || !angular.isDefined(newValue)) return;\n if (angular.isString(newValue)) newValue = !!newValue.match(/true|,?(datepicker),?/i);\n if (newValue === true) {\n datepicker.show();\n } else {\n datepicker.hide();\n }\n });\n }\n\n // Observe attributes for changes\n angular.forEach(['minDate', 'maxDate'], function (key) {\n // console.warn('attr.$observe(%s)', key, attr[key]);\n if (angular.isDefined(attr[key])) {\n attr.$observe(key, function (newValue) {\n // console.warn('attr.$observe(%s)=%o', key, newValue);\n datepicker.$options[key] = dateParser.getDateForAttribute(key, newValue);\n // Build only if dirty\n if (!isNaN(datepicker.$options[key])) datepicker.$build(false);\n validateAgainstMinMaxDate(controller.$dateValue);\n });\n }\n });\n\n // Observe date format\n if (angular.isDefined(attr.dateFormat)) {\n attr.$observe('dateFormat', function (newValue) {\n datepicker.$options.dateFormat = newValue;\n });\n }\n\n // Watch model for changes\n scope.$watch(attr.ngModel, function (newValue, oldValue) {\n datepicker.update(controller.$dateValue);\n }, true);\n\n // Normalize undefined/null/empty array,\n // so that we don't treat changing from undefined->null as a change.\n function normalizeDateRanges (ranges) {\n if (!ranges || !ranges.length) return null;\n return ranges;\n }\n\n if (angular.isDefined(attr.disabledDates)) {\n scope.$watch(attr.disabledDates, function (disabledRanges, previousValue) {\n disabledRanges = normalizeDateRanges(disabledRanges);\n previousValue = normalizeDateRanges(previousValue);\n\n if (disabledRanges) {\n datepicker.updateDisabledDates(disabledRanges);\n }\n });\n }\n\n function validateAgainstMinMaxDate (parsedDate) {\n if (!angular.isDate(parsedDate)) return;\n var isMinValid = isNaN(datepicker.$options.minDate) || parsedDate.getTime() >= datepicker.$options.minDate;\n var isMaxValid = isNaN(datepicker.$options.maxDate) || parsedDate.getTime() <= datepicker.$options.maxDate;\n var isValid = isMinValid && isMaxValid;\n controller.$setValidity('date', isValid);\n controller.$setValidity('min', isMinValid);\n controller.$setValidity('max', isMaxValid);\n // Only update the model when we have a valid date\n if (isValid) controller.$dateValue = parsedDate;\n }\n\n // viewValue -> $parsers -> modelValue\n controller.$parsers.unshift(function (viewValue) {\n // console.warn('$parser(\"%s\"): viewValue=%o', element.attr('ng-model'), viewValue);\n var date;\n // Null values should correctly reset the model value & validity\n if (!viewValue) {\n controller.$setValidity('date', true);\n // BREAKING CHANGE:\n // return null (not undefined) when input value is empty, so angularjs 1.3\n // ngModelController can go ahead and run validators, like ngRequired\n return null;\n }\n var parsedDate = dateParser.parse(viewValue, controller.$dateValue);\n if (!parsedDate || isNaN(parsedDate.getTime())) {\n controller.$setValidity('date', false);\n // return undefined, causes ngModelController to\n // invalidate model value\n return;\n }\n validateAgainstMinMaxDate(parsedDate);\n\n if (options.dateType === 'string') {\n date = dateParser.timezoneOffsetAdjust(parsedDate, options.timezone, true);\n return formatDate(date, options.modelDateFormat || options.dateFormat);\n }\n date = dateParser.timezoneOffsetAdjust(controller.$dateValue, options.timezone, true);\n if (options.dateType === 'number') {\n return date.getTime();\n } else if (options.dateType === 'unix') {\n return date.getTime() / 1000;\n } else if (options.dateType === 'iso') {\n return date.toISOString();\n }\n return new Date(date);\n });\n\n // modelValue -> $formatters -> viewValue\n controller.$formatters.push(function (modelValue) {\n // console.warn('$formatter(\"%s\"): modelValue=%o (%o)', element.attr('ng-model'), modelValue, typeof modelValue);\n var date;\n if (angular.isUndefined(modelValue) || modelValue === null) {\n date = NaN;\n } else if (angular.isDate(modelValue)) {\n date = modelValue;\n } else if (options.dateType === 'string') {\n date = dateParser.parse(modelValue, null, options.modelDateFormat);\n } else if (options.dateType === 'unix') {\n date = new Date(modelValue * 1000);\n } else {\n date = new Date(modelValue);\n }\n // Setup default value?\n // if (isNaN(date.getTime())) {\n // var today = new Date();\n // date = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0, 0);\n // }\n controller.$dateValue = dateParser.timezoneOffsetAdjust(date, options.timezone);\n return getDateFormattedString();\n });\n\n // viewValue -> element\n controller.$render = function () {\n // console.warn('$render(\"%s\"): viewValue=%o', element.attr('ng-model'), controller.$viewValue);\n element.val(getDateFormattedString());\n };\n\n function getDateFormattedString () {\n return !controller.$dateValue || isNaN(controller.$dateValue.getTime()) ? '' : formatDate(controller.$dateValue, options.dateFormat);\n }\n\n // Garbage collection\n scope.$on('$destroy', function () {\n if (datepicker) datepicker.destroy();\n options = null;\n datepicker = null;\n });\n\n }\n };\n\n })\n\n .provider('datepickerViews', function () {\n\n // var defaults = this.defaults = {\n // dayFormat: 'dd',\n // daySplit: 7\n // };\n\n // Split array into smaller arrays\n function split (arr, size) {\n var arrays = [];\n while (arr.length > 0) {\n arrays.push(arr.splice(0, size));\n }\n return arrays;\n }\n\n // Modulus operator\n function mod (n, m) {\n return ((n % m) + m) % m;\n }\n\n this.$get = function ($dateFormatter, $dateParser, $sce) {\n\n return function (picker) {\n\n var scope = picker.$scope;\n var options = picker.$options;\n\n var lang = options.lang;\n var formatDate = function (date, format) {\n return $dateFormatter.formatDate(date, format, lang);\n };\n var dateParser = $dateParser({format: options.dateFormat, lang: lang, strict: options.strictFormat});\n\n var weekDaysMin = $dateFormatter.weekdaysShort(lang);\n var weekDaysLabels = weekDaysMin.slice(options.startWeek).concat(weekDaysMin.slice(0, options.startWeek));\n var weekDaysLabelsHtml = $sce.trustAsHtml('
' + weekDaysLabels.join(' ') + ' ');\n\n var startDate = picker.$date || (options.startDate ? dateParser.getDateForAttribute('startDate', options.startDate) : new Date());\n var viewDate = {year: startDate.getFullYear(), month: startDate.getMonth(), date: startDate.getDate()};\n\n var views = [{\n format: options.dayFormat,\n split: 7,\n steps: {month: 1},\n update: function (date, force) {\n if (!this.built || force || date.getFullYear() !== viewDate.year || date.getMonth() !== viewDate.month) {\n angular.extend(viewDate, {year: picker.$date.getFullYear(), month: picker.$date.getMonth(), date: picker.$date.getDate()});\n picker.$build();\n } else if (date.getDate() !== viewDate.date || date.getDate() === 1) {\n // chaging picker current month will cause viewDate.date to be set to first day of the month,\n // in $datepicker.$selectPane, so picker would not update selected day display if\n // user picks first day of the new month.\n // As a workaround, we are always forcing update when picked date is first day of month.\n viewDate.date = picker.$date.getDate();\n picker.$updateSelected();\n }\n },\n build: function () {\n var firstDayOfMonth = new Date(viewDate.year, viewDate.month, 1);\n var firstDayOfMonthOffset = firstDayOfMonth.getTimezoneOffset();\n var firstDate = new Date(+firstDayOfMonth - mod(firstDayOfMonth.getDay() - options.startWeek, 7) * 864e5);\n var firstDateOffset = firstDate.getTimezoneOffset();\n var today = dateParser.timezoneOffsetAdjust(new Date(), options.timezone).toDateString();\n // Handle daylight time switch\n if (firstDateOffset !== firstDayOfMonthOffset) firstDate = new Date(+firstDate + (firstDateOffset - firstDayOfMonthOffset) * 60e3);\n var days = [];\n var day;\n for (var i = 0; i < 42; i++) { // < 7 * 6\n day = dateParser.daylightSavingAdjust(new Date(firstDate.getFullYear(), firstDate.getMonth(), firstDate.getDate() + i));\n days.push({date: day, isToday: day.toDateString() === today, label: formatDate(day, this.format), selected: picker.$date && this.isSelected(day), muted: day.getMonth() !== viewDate.month, disabled: this.isDisabled(day)});\n }\n scope.title = formatDate(firstDayOfMonth, options.monthTitleFormat);\n scope.showLabels = true;\n scope.labels = weekDaysLabelsHtml;\n scope.rows = split(days, this.split);\n scope.isTodayDisabled = this.isDisabled(new Date());\n this.built = true;\n },\n isSelected: function (date) {\n return picker.$date && date.getFullYear() === picker.$date.getFullYear() && date.getMonth() === picker.$date.getMonth() && date.getDate() === picker.$date.getDate();\n },\n isDisabled: function (date) {\n var time = date.getTime();\n\n // Disabled because of min/max date.\n if (time < options.minDate || time > options.maxDate) return true;\n\n // Disabled due to being a disabled day of the week\n if (options.daysOfWeekDisabled.indexOf(date.getDay()) !== -1) return true;\n\n // Disabled because of disabled date range.\n if (options.disabledDateRanges) {\n for (var i = 0; i < options.disabledDateRanges.length; i++) {\n if (time >= options.disabledDateRanges[i].start && time <= options.disabledDateRanges[i].end) {\n return true;\n }\n }\n }\n\n return false;\n },\n onKeyDown: function (evt) {\n if (!picker.$date) {\n return;\n }\n var actualTime = picker.$date.getTime();\n var newDate;\n\n if (evt.keyCode === 37) newDate = new Date(actualTime - 1 * 864e5);\n else if (evt.keyCode === 38) newDate = new Date(actualTime - 7 * 864e5);\n else if (evt.keyCode === 39) newDate = new Date(actualTime + 1 * 864e5);\n else if (evt.keyCode === 40) newDate = new Date(actualTime + 7 * 864e5);\n\n if (!this.isDisabled(newDate)) picker.select(newDate, true);\n }\n }, {\n name: 'month',\n format: options.monthFormat,\n split: 4,\n steps: {year: 1},\n update: function (date, force) {\n if (!this.built || date.getFullYear() !== viewDate.year) {\n angular.extend(viewDate, {year: picker.$date.getFullYear(), month: picker.$date.getMonth(), date: picker.$date.getDate()});\n picker.$build();\n } else if (date.getMonth() !== viewDate.month) {\n angular.extend(viewDate, {month: picker.$date.getMonth(), date: picker.$date.getDate()});\n picker.$updateSelected();\n }\n },\n build: function () {\n // var firstMonth = new Date(viewDate.year, 0, 1);\n var months = [];\n var month;\n for (var i = 0; i < 12; i++) {\n month = new Date(viewDate.year, i, 1);\n months.push({date: month, label: formatDate(month, this.format), selected: picker.$isSelected(month), disabled: this.isDisabled(month)});\n }\n scope.title = formatDate(month, options.yearTitleFormat);\n scope.showLabels = false;\n scope.rows = split(months, this.split);\n this.built = true;\n },\n isSelected: function (date) {\n return picker.$date && date.getFullYear() === picker.$date.getFullYear() && date.getMonth() === picker.$date.getMonth();\n },\n isDisabled: function (date) {\n var lastDate = +new Date(date.getFullYear(), date.getMonth() + 1, 0);\n return lastDate < options.minDate || date.getTime() > options.maxDate;\n },\n onKeyDown: function (evt) {\n if (!picker.$date) {\n return;\n }\n var actualMonth = picker.$date.getMonth();\n var newDate = new Date(picker.$date);\n\n if (evt.keyCode === 37) newDate.setMonth(actualMonth - 1);\n else if (evt.keyCode === 38) newDate.setMonth(actualMonth - 4);\n else if (evt.keyCode === 39) newDate.setMonth(actualMonth + 1);\n else if (evt.keyCode === 40) newDate.setMonth(actualMonth + 4);\n\n if (!this.isDisabled(newDate)) picker.select(newDate, true);\n }\n }, {\n name: 'year',\n format: options.yearFormat,\n split: 4,\n steps: {year: 12},\n update: function (date, force) {\n if (!this.built || force || parseInt(date.getFullYear() / 20, 10) !== parseInt(viewDate.year / 20, 10)) {\n angular.extend(viewDate, {year: picker.$date.getFullYear(), month: picker.$date.getMonth(), date: picker.$date.getDate()});\n picker.$build();\n } else if (date.getFullYear() !== viewDate.year) {\n angular.extend(viewDate, {year: picker.$date.getFullYear(), month: picker.$date.getMonth(), date: picker.$date.getDate()});\n picker.$updateSelected();\n }\n },\n build: function () {\n var firstYear = viewDate.year - viewDate.year % (this.split * 3);\n var years = [];\n var year;\n for (var i = 0; i < 12; i++) {\n year = new Date(firstYear + i, 0, 1);\n years.push({date: year, label: formatDate(year, this.format), selected: picker.$isSelected(year), disabled: this.isDisabled(year)});\n }\n scope.title = years[0].label + '-' + years[years.length - 1].label;\n scope.showLabels = false;\n scope.rows = split(years, this.split);\n this.built = true;\n },\n isSelected: function (date) {\n return picker.$date && date.getFullYear() === picker.$date.getFullYear();\n },\n isDisabled: function (date) {\n var lastDate = +new Date(date.getFullYear() + 1, 0, 0);\n return lastDate < options.minDate || date.getTime() > options.maxDate;\n },\n onKeyDown: function (evt) {\n if (!picker.$date) {\n return;\n }\n var actualYear = picker.$date.getFullYear();\n var newDate = new Date(picker.$date);\n\n if (evt.keyCode === 37) newDate.setYear(actualYear - 1);\n else if (evt.keyCode === 38) newDate.setYear(actualYear - 4);\n else if (evt.keyCode === 39) newDate.setYear(actualYear + 1);\n else if (evt.keyCode === 40) newDate.setYear(actualYear + 4);\n\n if (!this.isDisabled(newDate)) picker.select(newDate, true);\n }\n }];\n\n return {\n views: options.minView ? Array.prototype.slice.call(views, options.minView) : views,\n viewDate: viewDate\n };\n\n };\n\n };\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.tooltip', ['mgcrea.ngStrap.core', 'mgcrea.ngStrap.helpers.dimensions'])\n\n .provider('$tooltip', function () {\n\n var defaults = this.defaults = {\n animation: 'am-fade',\n customClass: '',\n prefixClass: 'tooltip',\n prefixEvent: 'tooltip',\n container: false,\n target: false,\n placement: 'top',\n templateUrl: 'tooltip/tooltip.tpl.html',\n template: '',\n titleTemplate: false,\n trigger: 'hover focus',\n keyboard: false,\n html: false,\n show: false,\n title: '',\n type: '',\n delay: 0,\n autoClose: false,\n bsEnabled: true,\n mouseDownPreventDefault: true,\n mouseDownStopPropagation: true,\n viewport: {\n selector: 'body',\n padding: 0\n }\n };\n\n this.$get = function ($window, $rootScope, $bsCompiler, $q, $templateCache, $http, $animate, $sce, dimensions, $$rAF, $timeout) {\n\n var isNative = /(ip[ao]d|iphone|android)/ig.test($window.navigator.userAgent);\n var isTouch = ('createTouch' in $window.document) && isNative;\n var $body = angular.element($window.document);\n\n function TooltipFactory (element, config) {\n\n var $tooltip = {};\n\n // Common vars\n var options = $tooltip.$options = angular.extend({}, defaults, config);\n var promise = $tooltip.$promise = $bsCompiler.compile(options);\n var scope = $tooltip.$scope = options.scope && options.scope.$new() || $rootScope.$new();\n\n var nodeName = element[0].nodeName.toLowerCase();\n if (options.delay && angular.isString(options.delay)) {\n var split = options.delay.split(',').map(parseFloat);\n options.delay = split.length > 1 ? {show: split[0], hide: split[1]} : split[0];\n }\n\n // Store $id to identify the triggering element in events\n // give priority to options.id, otherwise, try to use\n // element id if defined\n $tooltip.$id = options.id || element.attr('id') || '';\n\n // Support scope as string options\n if (options.title) {\n scope.title = $sce.trustAsHtml(options.title);\n }\n\n // Provide scope helpers\n scope.$setEnabled = function (isEnabled) {\n scope.$$postDigest(function () {\n $tooltip.setEnabled(isEnabled);\n });\n };\n scope.$hide = function () {\n scope.$$postDigest(function () {\n $tooltip.hide();\n });\n };\n scope.$show = function () {\n scope.$$postDigest(function () {\n $tooltip.show();\n });\n };\n scope.$toggle = function () {\n scope.$$postDigest(function () {\n $tooltip.toggle();\n });\n };\n // Publish isShown as a protected var on scope\n $tooltip.$isShown = scope.$isShown = false;\n\n // Private vars\n var timeout;\n var hoverState;\n\n // Fetch, compile then initialize tooltip\n var compileData;\n var tipElement;\n var tipContainer;\n var tipScope;\n promise.then(function (data) {\n compileData = data;\n $tooltip.init();\n });\n\n $tooltip.init = function () {\n\n // Options: delay\n if (options.delay && angular.isNumber(options.delay)) {\n options.delay = {\n show: options.delay,\n hide: options.delay\n };\n }\n\n // Replace trigger on touch devices ?\n // if(isTouch && options.trigger === defaults.trigger) {\n // options.trigger.replace(/hover/g, 'click');\n // }\n\n // Options : container\n if (options.container === 'self') {\n tipContainer = element;\n } else if (angular.isElement(options.container)) {\n tipContainer = options.container;\n } else if (options.container) {\n tipContainer = findElement(options.container);\n }\n\n // Options: trigger\n bindTriggerEvents();\n\n // Options: target\n if (options.target) {\n options.target = angular.isElement(options.target) ? options.target : findElement(options.target);\n }\n\n // Options: show\n if (options.show) {\n scope.$$postDigest(function () {\n if (options.trigger === 'focus') {\n element[0].focus();\n } else {\n $tooltip.show();\n }\n });\n }\n\n };\n\n $tooltip.destroy = function () {\n\n // Unbind events\n unbindTriggerEvents();\n\n // Remove element\n destroyTipElement();\n\n // Destroy scope\n scope.$destroy();\n\n };\n\n $tooltip.enter = function () {\n\n clearTimeout(timeout);\n hoverState = 'in';\n if (!options.delay || !options.delay.show) {\n return $tooltip.show();\n }\n\n timeout = setTimeout(function () {\n if (hoverState === 'in') $tooltip.show();\n }, options.delay.show);\n\n };\n\n $tooltip.show = function () {\n if (!options.bsEnabled || $tooltip.$isShown) return;\n\n scope.$emit(options.prefixEvent + '.show.before', $tooltip);\n if (angular.isDefined(options.onBeforeShow) && angular.isFunction(options.onBeforeShow)) {\n options.onBeforeShow($tooltip);\n }\n var parent;\n var after;\n if (options.container) {\n parent = tipContainer;\n if (tipContainer[0].lastChild) {\n after = angular.element(tipContainer[0].lastChild);\n } else {\n after = null;\n }\n } else {\n parent = null;\n after = element;\n }\n\n\n // Hide any existing tipElement\n if (tipElement) destroyTipElement();\n // Fetch a cloned element linked from template\n tipScope = $tooltip.$scope.$new();\n tipElement = $tooltip.$element = compileData.link(tipScope, function (clonedElement, scope) {});\n\n // Set the initial positioning. Make the tooltip invisible\n // so IE doesn't try to focus on it off screen.\n tipElement.css({top: '-9999px', left: '-9999px', right: 'auto', display: 'block', visibility: 'hidden'});\n\n // Options: animation\n if (options.animation) tipElement.addClass(options.animation);\n // Options: type\n if (options.type) tipElement.addClass(options.prefixClass + '-' + options.type);\n // Options: custom classes\n if (options.customClass) tipElement.addClass(options.customClass);\n\n // Append the element, without any animations. If we append\n // using $animate.enter, some of the animations cause the placement\n // to be off due to the transforms.\n if (after) {\n after.after(tipElement);\n } else {\n parent.prepend(tipElement);\n }\n\n $tooltip.$isShown = scope.$isShown = true;\n safeDigest(scope);\n\n // Now, apply placement\n $tooltip.$applyPlacement();\n\n // Once placed, animate it.\n // Support v1.2+ $animate\n // https://github.com/angular/angular.js/issues/11713\n if (angular.version.minor <= 2) {\n $animate.enter(tipElement, parent, after, enterAnimateCallback);\n } else {\n $animate.enter(tipElement, parent, after).then(enterAnimateCallback);\n }\n safeDigest(scope);\n\n $$rAF(function () {\n // Once the tooltip is placed and the animation starts, make the tooltip visible\n if (tipElement) tipElement.css({visibility: 'visible'});\n\n // Bind events\n if (options.keyboard) {\n if (options.trigger !== 'focus') {\n $tooltip.focus();\n }\n bindKeyboardEvents();\n }\n });\n\n if (options.autoClose) {\n bindAutoCloseEvents();\n }\n\n };\n\n function enterAnimateCallback () {\n scope.$emit(options.prefixEvent + '.show', $tooltip);\n if (angular.isDefined(options.onShow) && angular.isFunction(options.onShow)) {\n options.onShow($tooltip);\n }\n }\n\n $tooltip.leave = function () {\n\n clearTimeout(timeout);\n hoverState = 'out';\n if (!options.delay || !options.delay.hide) {\n return $tooltip.hide();\n }\n timeout = setTimeout(function () {\n if (hoverState === 'out') {\n $tooltip.hide();\n }\n }, options.delay.hide);\n\n };\n\n var _blur;\n var _tipToHide;\n $tooltip.hide = function (blur) {\n\n if (!$tooltip.$isShown) return;\n scope.$emit(options.prefixEvent + '.hide.before', $tooltip);\n if (angular.isDefined(options.onBeforeHide) && angular.isFunction(options.onBeforeHide)) {\n options.onBeforeHide($tooltip);\n }\n\n // store blur value for leaveAnimateCallback to use\n _blur = blur;\n\n // store current tipElement reference to use\n // in leaveAnimateCallback\n _tipToHide = tipElement;\n\n // Support v1.2+ $animate\n // https://github.com/angular/angular.js/issues/11713\n if (angular.version.minor <= 2) {\n $animate.leave(tipElement, leaveAnimateCallback);\n } else {\n $animate.leave(tipElement).then(leaveAnimateCallback);\n }\n\n $tooltip.$isShown = scope.$isShown = false;\n safeDigest(scope);\n\n // Unbind events\n if (options.keyboard && tipElement !== null) {\n unbindKeyboardEvents();\n }\n\n if (options.autoClose && tipElement !== null) {\n unbindAutoCloseEvents();\n }\n };\n\n function leaveAnimateCallback () {\n scope.$emit(options.prefixEvent + '.hide', $tooltip);\n if (angular.isDefined(options.onHide) && angular.isFunction(options.onHide)) {\n options.onHide($tooltip);\n }\n\n // check if current tipElement still references\n // the same element when hide was called\n if (tipElement === _tipToHide) {\n // Allow to blur the input when hidden, like when pressing enter key\n if (_blur && options.trigger === 'focus') {\n return element[0].blur();\n }\n\n // clean up child scopes\n destroyTipElement();\n }\n }\n\n $tooltip.toggle = function (evt) {\n if (evt) { evt.preventDefault(); }\n if ($tooltip.$isShown) {\n $tooltip.leave();\n } else {\n $tooltip.enter();\n }\n };\n\n $tooltip.focus = function () {\n tipElement[0].focus();\n };\n\n $tooltip.setEnabled = function (isEnabled) {\n options.bsEnabled = isEnabled;\n };\n\n $tooltip.setViewport = function (viewport) {\n options.viewport = viewport;\n };\n\n // Protected methods\n\n $tooltip.$applyPlacement = function () {\n if (!tipElement) return;\n\n // Determine if we're doing an auto or normal placement\n var placement = options.placement;\n var autoToken = /\\s?auto?\\s?/i;\n var autoPlace = autoToken.test(placement);\n\n if (autoPlace) {\n placement = placement.replace(autoToken, '') || defaults.placement;\n }\n\n // Need to add the position class before we get\n // the offsets\n tipElement.addClass(options.placement);\n\n // Get the position of the target element\n // and the height and width of the tooltip so we can center it.\n var elementPosition = getPosition();\n var tipWidth = tipElement.prop('offsetWidth');\n var tipHeight = tipElement.prop('offsetHeight');\n\n // Refresh viewport position\n $tooltip.$viewport = options.viewport && findElement(options.viewport.selector || options.viewport);\n\n // If we're auto placing, we need to check the positioning\n if (autoPlace) {\n var originalPlacement = placement;\n var viewportPosition = getPosition($tooltip.$viewport);\n\n if (/bottom/.test(originalPlacement) && elementPosition.bottom + tipHeight > viewportPosition.bottom) {\n placement = originalPlacement.replace('bottom', 'top');\n } else if (/top/.test(originalPlacement) && elementPosition.top - tipHeight < viewportPosition.top) {\n placement = originalPlacement.replace('top', 'bottom');\n }\n\n if (/left/.test(originalPlacement) && elementPosition.left - tipWidth < viewportPosition.left) {\n placement = placement.replace('left', 'right');\n } else if (/right/.test(originalPlacement) && elementPosition.right + tipWidth > viewportPosition.width) {\n placement = placement.replace('right', 'left');\n }\n\n tipElement.removeClass(originalPlacement).addClass(placement);\n }\n\n // Get the tooltip's top and left coordinates to center it with this directive.\n var tipPosition = getCalculatedOffset(placement, elementPosition, tipWidth, tipHeight);\n applyPlacement(tipPosition, placement);\n };\n\n $tooltip.$onKeyUp = function (evt) {\n if (evt.which === 27 && $tooltip.$isShown) {\n $tooltip.hide();\n evt.stopPropagation();\n }\n };\n\n $tooltip.$onFocusKeyUp = function (evt) {\n if (evt.which === 27) {\n element[0].blur();\n evt.stopPropagation();\n }\n };\n\n $tooltip.$onFocusElementMouseDown = function (evt) {\n if (options.mouseDownPreventDefault) { evt.preventDefault(); }\n if (options.mouseDownStopPropagation) { evt.stopPropagation(); }\n // Some browsers do not auto-focus buttons (eg. Safari)\n if ($tooltip.$isShown) {\n element[0].blur();\n } else {\n element[0].focus();\n }\n };\n\n // bind/unbind events\n function bindTriggerEvents () {\n var triggers = options.trigger.split(' ');\n angular.forEach(triggers, function (trigger) {\n if (trigger === 'click' || trigger === 'contextmenu') {\n element.on(trigger, $tooltip.toggle);\n } else if (trigger !== 'manual') {\n element.on(trigger === 'hover' ? 'mouseenter' : 'focus', $tooltip.enter);\n element.on(trigger === 'hover' ? 'mouseleave' : 'blur', $tooltip.leave);\n if (nodeName === 'button' && trigger !== 'hover') {\n element.on(isTouch ? 'touchstart' : 'mousedown', $tooltip.$onFocusElementMouseDown);\n }\n }\n });\n }\n\n function unbindTriggerEvents () {\n var triggers = options.trigger.split(' ');\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i];\n if (trigger === 'click' || trigger === 'contextmenu') {\n element.off(trigger, $tooltip.toggle);\n } else if (trigger !== 'manual') {\n element.off(trigger === 'hover' ? 'mouseenter' : 'focus', $tooltip.enter);\n element.off(trigger === 'hover' ? 'mouseleave' : 'blur', $tooltip.leave);\n if (nodeName === 'button' && trigger !== 'hover') {\n element.off(isTouch ? 'touchstart' : 'mousedown', $tooltip.$onFocusElementMouseDown);\n }\n }\n }\n }\n\n function bindKeyboardEvents () {\n if (options.trigger !== 'focus') {\n tipElement.on('keyup', $tooltip.$onKeyUp);\n } else {\n element.on('keyup', $tooltip.$onFocusKeyUp);\n }\n }\n\n function unbindKeyboardEvents () {\n if (options.trigger !== 'focus') {\n tipElement.off('keyup', $tooltip.$onKeyUp);\n } else {\n element.off('keyup', $tooltip.$onFocusKeyUp);\n }\n }\n\n var _autoCloseEventsBinded = false;\n function bindAutoCloseEvents () {\n // use timeout to hookup the events to prevent\n // event bubbling from being processed imediately.\n $timeout(function () {\n // Stop propagation when clicking inside tooltip\n tipElement.on('click', stopEventPropagation);\n\n // Hide when clicking outside tooltip\n $body.on('click', $tooltip.hide);\n\n _autoCloseEventsBinded = true;\n }, 0, false);\n }\n\n function unbindAutoCloseEvents () {\n if (_autoCloseEventsBinded) {\n tipElement.off('click', stopEventPropagation);\n $body.off('click', $tooltip.hide);\n _autoCloseEventsBinded = false;\n }\n }\n\n function stopEventPropagation (event) {\n event.stopPropagation();\n }\n\n // Private methods\n\n function getPosition ($element) {\n $element = $element || (options.target || element);\n\n var el = $element[0];\n var isBody = el.tagName === 'BODY';\n\n var elRect = el.getBoundingClientRect();\n var rect = {};\n\n // IE8 has issues with angular.extend and using elRect directly.\n // By coping the values of elRect into a new object, we can continue to use extend\n /* eslint-disable guard-for-in */\n for (var p in elRect) { // eslint-disable-line\n // DO NOT use hasOwnProperty when inspecting the return of getBoundingClientRect.\n rect[p] = elRect[p];\n }\n /* eslint-enable guard-for-in */\n\n if (rect.width === null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n rect = angular.extend({}, rect, {width: elRect.right - elRect.left, height: elRect.bottom - elRect.top});\n }\n var elOffset = isBody ? {top: 0, left: 0} : dimensions.offset(el);\n var scroll = {scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.prop('scrollTop') || 0};\n var outerDims = isBody ? {width: document.documentElement.clientWidth, height: $window.innerHeight} : null;\n\n return angular.extend({}, rect, scroll, outerDims, elOffset);\n }\n\n function getCalculatedOffset (placement, position, actualWidth, actualHeight) {\n var offset;\n var split = placement.split('-');\n\n switch (split[0]) {\n case 'right':\n offset = {\n top: position.top + position.height / 2 - actualHeight / 2,\n left: position.left + position.width\n };\n break;\n case 'bottom':\n offset = {\n top: position.top + position.height,\n left: position.left + position.width / 2 - actualWidth / 2\n };\n break;\n case 'left':\n offset = {\n top: position.top + position.height / 2 - actualHeight / 2,\n left: position.left - actualWidth\n };\n break;\n default:\n offset = {\n top: position.top - actualHeight,\n left: position.left + position.width / 2 - actualWidth / 2\n };\n break;\n }\n\n if (!split[1]) {\n return offset;\n }\n\n // Add support for corners @todo css\n if (split[0] === 'top' || split[0] === 'bottom') {\n switch (split[1]) {\n case 'left':\n offset.left = position.left;\n break;\n case 'right':\n offset.left = position.left + position.width - actualWidth;\n break;\n default:\n break;\n }\n } else if (split[0] === 'left' || split[0] === 'right') {\n switch (split[1]) {\n case 'top':\n offset.top = position.top - actualHeight + position.height;\n break;\n case 'bottom':\n offset.top = position.top;\n break;\n default:\n break;\n }\n }\n\n return offset;\n }\n\n function applyPlacement (offset, placement) {\n var tip = tipElement[0];\n var width = tip.offsetWidth;\n var height = tip.offsetHeight;\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt(dimensions.css(tip, 'margin-top'), 10);\n var marginLeft = parseInt(dimensions.css(tip, 'margin-left'), 10);\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0;\n if (isNaN(marginLeft)) marginLeft = 0;\n\n offset.top = offset.top + marginTop;\n offset.left = offset.left + marginLeft;\n\n // dimensions setOffset doesn't round pixel values\n // so we use setOffset directly with our own function\n dimensions.setOffset(tip, angular.extend({\n using: function (props) {\n tipElement.css({\n top: Math.round(props.top) + 'px',\n left: Math.round(props.left) + 'px',\n right: ''\n });\n }\n }, offset), 0);\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = tip.offsetWidth;\n var actualHeight = tip.offsetHeight;\n\n if (placement === 'top' && actualHeight !== height) {\n offset.top = offset.top + height - actualHeight;\n }\n\n // If it's an exotic placement, exit now instead of\n // applying a delta and changing the arrow\n if (/top-left|top-right|bottom-left|bottom-right/.test(placement)) return;\n\n var delta = getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight);\n\n if (delta.left) {\n offset.left += delta.left;\n } else {\n offset.top += delta.top;\n }\n\n dimensions.setOffset(tip, offset);\n\n if (/top|right|bottom|left/.test(placement)) {\n var isVertical = /top|bottom/.test(placement);\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight;\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight';\n\n replaceArrow(arrowDelta, tip[arrowOffsetPosition], isVertical);\n }\n }\n\n // @source https://github.com/twbs/bootstrap/blob/v3.3.5/js/tooltip.js#L380\n function getViewportAdjustedDelta (placement, position, actualWidth, actualHeight) {\n var delta = {top: 0, left: 0};\n if (!$tooltip.$viewport) return delta;\n\n var viewportPadding = options.viewport && options.viewport.padding || 0;\n var viewportDimensions = getPosition($tooltip.$viewport);\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = position.top - viewportPadding - viewportDimensions.scroll;\n var bottomEdgeOffset = position.top + viewportPadding - viewportDimensions.scroll + actualHeight;\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset;\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset;\n }\n } else {\n var leftEdgeOffset = position.left - viewportPadding;\n var rightEdgeOffset = position.left + viewportPadding + actualWidth;\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset;\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset;\n }\n }\n\n return delta;\n }\n\n function replaceArrow (delta, dimension, isHorizontal) {\n var $arrow = findElement('.tooltip-arrow, .arrow', tipElement[0]);\n\n $arrow.css(isHorizontal ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isHorizontal ? 'top' : 'left', '');\n }\n\n function destroyTipElement () {\n // Cancel pending callbacks\n clearTimeout(timeout);\n\n if ($tooltip.$isShown && tipElement !== null) {\n if (options.autoClose) {\n unbindAutoCloseEvents();\n }\n\n if (options.keyboard) {\n unbindKeyboardEvents();\n }\n }\n\n if (tipScope) {\n tipScope.$destroy();\n tipScope = null;\n }\n\n if (tipElement) {\n tipElement.remove();\n tipElement = $tooltip.$element = null;\n }\n }\n\n return $tooltip;\n\n }\n\n // Helper functions\n\n function safeDigest (scope) {\n /* eslint-disable no-unused-expressions */\n scope.$$phase || (scope.$root && scope.$root.$$phase) || scope.$digest();\n /* eslint-enable no-unused-expressions */\n }\n\n function findElement (query, element) {\n return angular.element((element || document).querySelectorAll(query));\n }\n\n return TooltipFactory;\n\n };\n\n })\n\n .directive('bsTooltip', function ($window, $location, $sce, $parse, $tooltip, $$rAF) {\n\n return {\n restrict: 'EAC',\n scope: true,\n link: function postLink (scope, element, attr, transclusion) {\n\n var tooltip;\n // Directive options\n var options = {scope: scope};\n angular.forEach(['template', 'templateUrl', 'controller', 'controllerAs', 'titleTemplate', 'placement', 'container', 'delay', 'trigger', 'html', 'animation', 'backdropAnimation', 'type', 'customClass', 'id'], function (key) {\n if (angular.isDefined(attr[key])) options[key] = attr[key];\n });\n\n // use string regex match boolean attr falsy values, leave truthy values be\n var falseValueRegExp = /^(false|0|)$/i;\n angular.forEach(['html', 'container'], function (key) {\n if (angular.isDefined(attr[key]) && falseValueRegExp.test(attr[key])) {\n options[key] = false;\n }\n });\n\n // bind functions from the attrs to the show and hide events\n angular.forEach(['onBeforeShow', 'onShow', 'onBeforeHide', 'onHide'], function (key) {\n var bsKey = 'bs' + key.charAt(0).toUpperCase() + key.slice(1);\n if (angular.isDefined(attr[bsKey])) {\n options[key] = scope.$eval(attr[bsKey]);\n }\n });\n\n // should not parse target attribute (anchor tag), only data-target #1454\n var dataTarget = element.attr('data-target');\n if (angular.isDefined(dataTarget)) {\n if (falseValueRegExp.test(dataTarget)) {\n options.target = false;\n } else {\n options.target = dataTarget;\n }\n }\n\n // overwrite inherited title value when no value specified\n // fix for angular 1.3.1 531a8de72c439d8ddd064874bf364c00cedabb11\n if (!scope.hasOwnProperty('title')) {\n scope.title = '';\n }\n\n // Observe scope attributes for change\n attr.$observe('title', function (newValue) {\n if (angular.isDefined(newValue) || !scope.hasOwnProperty('title')) {\n var oldValue = scope.title;\n scope.title = $sce.trustAsHtml(newValue);\n if (angular.isDefined(oldValue)) {\n $$rAF(function () {\n if (tooltip) tooltip.$applyPlacement();\n });\n }\n }\n });\n\n attr.$observe('disabled', function (newValue) {\n if (newValue && tooltip.$isShown) {\n tooltip.hide();\n }\n });\n\n // Support scope as an object\n if (attr.bsTooltip) {\n scope.$watch(attr.bsTooltip, function (newValue, oldValue) {\n if (angular.isObject(newValue)) {\n angular.extend(scope, newValue);\n } else {\n scope.title = newValue;\n }\n if (angular.isDefined(oldValue)) {\n $$rAF(function () {\n if (tooltip) tooltip.$applyPlacement();\n });\n }\n }, true);\n }\n\n // Visibility binding support\n if (attr.bsShow) {\n scope.$watch(attr.bsShow, function (newValue, oldValue) {\n if (!tooltip || !angular.isDefined(newValue)) return;\n if (angular.isString(newValue)) newValue = !!newValue.match(/true|,?(tooltip),?/i);\n if (newValue === true) {\n tooltip.show();\n } else {\n tooltip.hide();\n }\n });\n }\n\n // Enabled binding support\n if (attr.bsEnabled) {\n scope.$watch(attr.bsEnabled, function (newValue, oldValue) {\n // console.warn('scope.$watch(%s)', attr.bsEnabled, newValue, oldValue);\n if (!tooltip || !angular.isDefined(newValue)) return;\n if (angular.isString(newValue)) newValue = !!newValue.match(/true|1|,?(tooltip),?/i);\n if (newValue === false) {\n tooltip.setEnabled(false);\n } else {\n tooltip.setEnabled(true);\n }\n });\n }\n\n // Viewport support\n if (attr.viewport) {\n scope.$watch(attr.viewport, function (newValue) {\n if (!tooltip || !angular.isDefined(newValue)) return;\n tooltip.setViewport(newValue);\n });\n }\n\n // Initialize popover\n tooltip = $tooltip(element, options);\n\n // Garbage collection\n scope.$on('$destroy', function () {\n if (tooltip) tooltip.destroy();\n options = null;\n tooltip = null;\n });\n\n }\n };\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.timepicker', ['mgcrea.ngStrap.helpers.dateParser', 'mgcrea.ngStrap.helpers.dateFormatter', 'mgcrea.ngStrap.tooltip'])\n\n .provider('$timepicker', function () {\n\n var defaults = this.defaults = {\n animation: 'am-fade',\n defaultDate: 'auto',\n // uncommenting the following line will break backwards compatability\n // prefixEvent: 'timepicker',\n prefixClass: 'timepicker',\n placement: 'bottom-left',\n templateUrl: 'timepicker/timepicker.tpl.html',\n trigger: 'focus',\n container: false,\n keyboard: true,\n html: false,\n delay: 0,\n // lang: $locale.id,\n useNative: true,\n timeType: 'date',\n timeFormat: 'shortTime',\n timezone: null,\n modelTimeFormat: null,\n autoclose: false,\n minTime: -Infinity,\n maxTime: +Infinity,\n length: 5,\n hourStep: 1,\n minuteStep: 5,\n secondStep: 5,\n roundDisplay: false,\n iconUp: 'glyphicon glyphicon-chevron-up',\n iconDown: 'glyphicon glyphicon-chevron-down',\n arrowBehavior: 'pager'\n };\n\n this.$get = function ($window, $document, $rootScope, $sce, $dateFormatter, $tooltip, $timeout) {\n\n var isNative = /(ip[ao]d|iphone|android)/ig.test($window.navigator.userAgent);\n var isTouch = ('createTouch' in $window.document) && isNative;\n if (!defaults.lang) {\n defaults.lang = $dateFormatter.getDefaultLocale();\n }\n\n function timepickerFactory (element, controller, config) {\n\n var $timepicker = $tooltip(element, angular.extend({}, defaults, config));\n var parentScope = config.scope;\n var options = $timepicker.$options;\n var scope = $timepicker.$scope;\n\n var lang = options.lang;\n var formatDate = function (date, format, timezone) {\n return $dateFormatter.formatDate(date, format, lang, timezone);\n };\n\n function floorMinutes (time) {\n // coeff used to floor current time to nearest minuteStep interval\n var coeff = 1000 * 60 * options.minuteStep;\n return new Date(Math.floor(time.getTime() / coeff) * coeff);\n }\n\n // View vars\n\n var selectedIndex = 0;\n var defaultDate = options.roundDisplay ? floorMinutes(new Date()) : new Date();\n var startDate = controller.$dateValue || defaultDate;\n var viewDate = {\n hour: startDate.getHours(),\n meridian: startDate.getHours() < 12,\n minute: startDate.getMinutes(),\n second: startDate.getSeconds(),\n millisecond: startDate.getMilliseconds()\n };\n\n var format = $dateFormatter.getDatetimeFormat(options.timeFormat, lang);\n\n var hoursFormat = $dateFormatter.hoursFormat(format);\n var timeSeparator = $dateFormatter.timeSeparator(format);\n var minutesFormat = $dateFormatter.minutesFormat(format);\n var secondsFormat = $dateFormatter.secondsFormat(format);\n var showSeconds = $dateFormatter.showSeconds(format);\n var showAM = $dateFormatter.showAM(format);\n\n scope.$iconUp = options.iconUp;\n scope.$iconDown = options.iconDown;\n\n // Scope methods\n\n scope.$select = function (date, index) {\n $timepicker.select(date, index);\n };\n scope.$moveIndex = function (value, index) {\n $timepicker.$moveIndex(value, index);\n };\n scope.$switchMeridian = function (date) {\n $timepicker.switchMeridian(date);\n };\n\n // Public methods\n\n $timepicker.update = function (date) {\n // console.warn('$timepicker.update() newValue=%o', date);\n if (angular.isDate(date) && !isNaN(date.getTime())) {\n $timepicker.$date = date;\n angular.extend(viewDate, {\n hour: date.getHours(),\n minute: date.getMinutes(),\n second: date.getSeconds(),\n millisecond: date.getMilliseconds()\n });\n $timepicker.$build();\n } else if (!$timepicker.$isBuilt) {\n $timepicker.$build();\n }\n };\n\n $timepicker.select = function (date, index, keep) {\n // console.warn('$timepicker.select', date, scope.$mode);\n if (!controller.$dateValue || isNaN(controller.$dateValue.getTime())) {\n controller.$dateValue = options.defaultDate === 'today' ? new Date() : new Date(1970, 0, 1);\n }\n\n if (!angular.isDate(date)) date = new Date(date);\n if (index === 0) controller.$dateValue.setHours(date.getHours());\n else if (index === 1) controller.$dateValue.setMinutes(date.getMinutes());\n else if (index === 2) controller.$dateValue.setSeconds(date.getSeconds());\n controller.$setViewValue(angular.copy(controller.$dateValue));\n controller.$render();\n if (options.autoclose && !keep) {\n $timeout(function () {\n $timepicker.hide(true);\n });\n }\n };\n\n $timepicker.switchMeridian = function (date) {\n if (!controller.$dateValue || isNaN(controller.$dateValue.getTime())) {\n return;\n }\n var hours = (date || controller.$dateValue).getHours();\n controller.$dateValue.setHours(hours < 12 ? hours + 12 : hours - 12);\n controller.$setViewValue(angular.copy(controller.$dateValue));\n controller.$render();\n };\n\n // Protected methods\n\n $timepicker.$build = function () {\n // console.warn('$timepicker.$build() viewDate=%o', viewDate);\n var i;\n var midIndex = scope.midIndex = parseInt(options.length / 2, 10);\n var hours = [];\n var hour;\n for (i = 0; i < options.length; i++) {\n hour = new Date(1970, 0, 1, viewDate.hour - (midIndex - i) * options.hourStep);\n hours.push({\n date: hour,\n label: formatDate(hour, hoursFormat),\n selected: $timepicker.$date && $timepicker.$isSelected(hour, 0),\n disabled: $timepicker.$isDisabled(hour, 0)\n });\n }\n var minutes = [];\n var minute;\n for (i = 0; i < options.length; i++) {\n minute = new Date(1970, 0, 1, 0, viewDate.minute - (midIndex - i) * options.minuteStep);\n minutes.push({\n date: minute,\n label: formatDate(minute, minutesFormat),\n selected: $timepicker.$date && $timepicker.$isSelected(minute, 1),\n disabled: $timepicker.$isDisabled(minute, 1)\n });\n }\n var seconds = [];\n var second;\n for (i = 0; i < options.length; i++) {\n second = new Date(1970, 0, 1, 0, 0, viewDate.second - (midIndex - i) * options.secondStep);\n seconds.push({\n date: second,\n label: formatDate(second, secondsFormat),\n selected: $timepicker.$date && $timepicker.$isSelected(second, 2),\n disabled: $timepicker.$isDisabled(second, 2)\n });\n }\n\n var rows = [];\n for (i = 0; i < options.length; i++) {\n if (showSeconds) {\n rows.push([hours[i], minutes[i], seconds[i]]);\n } else {\n rows.push([hours[i], minutes[i]]);\n }\n }\n scope.rows = rows;\n scope.showSeconds = showSeconds;\n scope.showAM = showAM;\n scope.isAM = ($timepicker.$date || hours[midIndex].date).getHours() < 12;\n scope.timeSeparator = timeSeparator;\n $timepicker.$isBuilt = true;\n };\n\n $timepicker.$isSelected = function (date, index) {\n if (!$timepicker.$date) return false;\n else if (index === 0) {\n return date.getHours() === $timepicker.$date.getHours();\n } else if (index === 1) {\n return date.getMinutes() === $timepicker.$date.getMinutes();\n } else if (index === 2) {\n return date.getSeconds() === $timepicker.$date.getSeconds();\n }\n };\n\n $timepicker.$isDisabled = function (date, index) {\n var selectedTime;\n if (index === 0) {\n selectedTime = date.getTime() + viewDate.minute * 6e4 + viewDate.second * 1e3;\n } else if (index === 1) {\n selectedTime = date.getTime() + viewDate.hour * 36e5 + viewDate.second * 1e3;\n } else if (index === 2) {\n selectedTime = date.getTime() + viewDate.hour * 36e5 + viewDate.minute * 6e4;\n }\n return selectedTime < options.minTime * 1 || selectedTime > options.maxTime * 1;\n };\n\n scope.$arrowAction = function (value, index) {\n if (options.arrowBehavior === 'picker') {\n $timepicker.$setTimeByStep(value, index);\n } else {\n $timepicker.$moveIndex(value, index);\n }\n };\n\n $timepicker.$setTimeByStep = function (value, index) {\n var newDate = new Date($timepicker.$date || startDate);\n var hours = newDate.getHours();\n var minutes = newDate.getMinutes();\n var seconds = newDate.getSeconds();\n if (index === 0) {\n newDate.setHours(hours - (parseInt(options.hourStep, 10) * value));\n } else if (index === 1) {\n newDate.setMinutes(minutes - (parseInt(options.minuteStep, 10) * value));\n } else if (index === 2) {\n newDate.setSeconds(seconds - (parseInt(options.secondStep, 10) * value));\n }\n $timepicker.select(newDate, index, true);\n };\n\n $timepicker.$moveIndex = function (value, index) {\n var targetDate;\n if (index === 0) {\n targetDate = new Date(1970, 0, 1, viewDate.hour + (value * options.length), viewDate.minute, viewDate.second);\n angular.extend(viewDate, {\n hour: targetDate.getHours()\n });\n } else if (index === 1) {\n targetDate = new Date(1970, 0, 1, viewDate.hour, viewDate.minute + (value * options.length * options.minuteStep), viewDate.second);\n angular.extend(viewDate, {\n minute: targetDate.getMinutes()\n });\n } else if (index === 2) {\n targetDate = new Date(1970, 0, 1, viewDate.hour, viewDate.minute, viewDate.second + (value * options.length * options.secondStep));\n angular.extend(viewDate, {\n second: targetDate.getSeconds()\n });\n }\n $timepicker.$build();\n };\n\n $timepicker.$onMouseDown = function (evt) {\n // Prevent blur on mousedown on .dropdown-menu\n if (evt.target.nodeName.toLowerCase() !== 'input') evt.preventDefault();\n evt.stopPropagation();\n // Emulate click for mobile devices\n if (isTouch) {\n var targetEl = angular.element(evt.target);\n if (targetEl[0].nodeName.toLowerCase() !== 'button') {\n targetEl = targetEl.parent();\n }\n targetEl.triggerHandler('click');\n }\n };\n\n $timepicker.$onKeyDown = function (evt) {\n if (!/(38|37|39|40|13)/.test(evt.keyCode) || evt.shiftKey || evt.altKey) return;\n evt.preventDefault();\n evt.stopPropagation();\n\n // Close on enter\n if (evt.keyCode === 13) {\n $timepicker.hide(true);\n return;\n }\n\n // Navigate with keyboard\n var newDate = new Date($timepicker.$date);\n var hours = newDate.getHours();\n var hoursLength = formatDate(newDate, hoursFormat).length;\n var minutes = newDate.getMinutes();\n var minutesLength = formatDate(newDate, minutesFormat).length;\n var seconds = newDate.getSeconds();\n var secondsLength = formatDate(newDate, secondsFormat).length;\n var sepLength = 1;\n var lateralMove = /(37|39)/.test(evt.keyCode);\n var count = 2 + showSeconds * 1 + showAM * 1;\n\n // Navigate indexes (left, right)\n if (lateralMove) {\n if (evt.keyCode === 37) selectedIndex = selectedIndex < 1 ? count - 1 : selectedIndex - 1;\n else if (evt.keyCode === 39) selectedIndex = selectedIndex < count - 1 ? selectedIndex + 1 : 0;\n }\n\n // Update values (up, down)\n var selectRange = [0, hoursLength];\n var incr = 0;\n if (evt.keyCode === 38) incr = -1;\n if (evt.keyCode === 40) incr = +1;\n var isSeconds = selectedIndex === 2 && showSeconds;\n var isMeridian = selectedIndex === 2 && !showSeconds || selectedIndex === 3 && showSeconds;\n if (selectedIndex === 0) {\n newDate.setHours(hours + incr * parseInt(options.hourStep, 10));\n // re-calculate hours length because we have changed hours value\n hoursLength = formatDate(newDate, hoursFormat).length;\n selectRange = [0, hoursLength];\n } else if (selectedIndex === 1) {\n newDate.setMinutes(minutes + incr * parseInt(options.minuteStep, 10));\n // re-calculate minutes length because we have changes minutes value\n minutesLength = formatDate(newDate, minutesFormat).length;\n selectRange = [hoursLength + sepLength, minutesLength];\n } else if (isSeconds) {\n newDate.setSeconds(seconds + incr * parseInt(options.secondStep, 10));\n // re-calculate seconds length because we have changes seconds value\n secondsLength = formatDate(newDate, secondsFormat).length;\n selectRange = [hoursLength + sepLength + minutesLength + sepLength, secondsLength];\n } else if (isMeridian) {\n if (!lateralMove) $timepicker.switchMeridian();\n selectRange = [hoursLength + sepLength + minutesLength + sepLength + (secondsLength + sepLength) * showSeconds, 2];\n }\n $timepicker.select(newDate, selectedIndex, true);\n createSelection(selectRange[0], selectRange[1]);\n parentScope.$digest();\n };\n\n // Private\n\n function createSelection (start, length) {\n var end = start + length;\n if (element[0].createTextRange) {\n var selRange = element[0].createTextRange();\n selRange.collapse(true);\n selRange.moveStart('character', start);\n selRange.moveEnd('character', end);\n selRange.select();\n } else if (element[0].setSelectionRange) {\n element[0].setSelectionRange(start, end);\n } else if (angular.isUndefined(element[0].selectionStart)) {\n element[0].selectionStart = start;\n element[0].selectionEnd = end;\n }\n }\n\n function focusElement () {\n element[0].focus();\n }\n\n // Overrides\n\n var _init = $timepicker.init;\n $timepicker.init = function () {\n if (isNative && options.useNative) {\n element.prop('type', 'time');\n element.css('-webkit-appearance', 'textfield');\n return;\n } else if (isTouch) {\n element.prop('type', 'text');\n element.attr('readonly', 'true');\n element.on('click', focusElement);\n }\n _init();\n };\n\n var _destroy = $timepicker.destroy;\n $timepicker.destroy = function () {\n if (isNative && options.useNative) {\n element.off('click', focusElement);\n }\n _destroy();\n };\n\n var _show = $timepicker.show;\n $timepicker.show = function () {\n if ((!isTouch && element.attr('readonly')) || element.attr('disabled')) return;\n _show();\n // use timeout to hookup the events to prevent\n // event bubbling from being processed imediately.\n $timeout(function () {\n if ($timepicker.$element) $timepicker.$element.on(isTouch ? 'touchstart' : 'mousedown', $timepicker.$onMouseDown);\n if (options.keyboard) {\n if (element) element.on('keydown', $timepicker.$onKeyDown);\n }\n }, 0, false);\n };\n\n var _hide = $timepicker.hide;\n $timepicker.hide = function (blur) {\n if (!$timepicker.$isShown) return;\n if ($timepicker.$element) $timepicker.$element.off(isTouch ? 'touchstart' : 'mousedown', $timepicker.$onMouseDown);\n if (options.keyboard) {\n if (element) element.off('keydown', $timepicker.$onKeyDown);\n }\n _hide(blur);\n };\n\n return $timepicker;\n\n }\n\n timepickerFactory.defaults = defaults;\n return timepickerFactory;\n\n };\n\n })\n\n\n .directive('bsTimepicker', function ($window, $parse, $q, $dateFormatter, $dateParser, $timepicker) {\n\n var defaults = $timepicker.defaults;\n var isNative = /(ip[ao]d|iphone|android)/ig.test($window.navigator.userAgent);\n\n return {\n restrict: 'EAC',\n require: 'ngModel',\n link: function postLink (scope, element, attr, controller) {\n\n // Directive options\n var options = {\n scope: scope\n };\n angular.forEach(['template', 'templateUrl', 'controller', 'controllerAs', 'placement', 'container', 'delay', 'trigger', 'keyboard', 'html', 'animation', 'autoclose', 'timeType', 'timeFormat', 'timezone', 'modelTimeFormat', 'useNative', 'hourStep', 'minuteStep', 'secondStep', 'length', 'arrowBehavior', 'iconUp', 'iconDown', 'roundDisplay', 'id', 'prefixClass', 'prefixEvent', 'defaultDate'], function (key) {\n if (angular.isDefined(attr[key])) options[key] = attr[key];\n });\n\n // use string regex match boolean attr falsy values, leave truthy values be\n var falseValueRegExp = /^(false|0|)$/i;\n angular.forEach(['html', 'container', 'autoclose', 'useNative', 'roundDisplay'], function (key) {\n if (angular.isDefined(attr[key]) && falseValueRegExp.test(attr[key])) {\n options[key] = false;\n }\n });\n\n // bind functions from the attrs to the show and hide events\n angular.forEach(['onBeforeShow', 'onShow', 'onBeforeHide', 'onHide'], function (key) {\n var bsKey = 'bs' + key.charAt(0).toUpperCase() + key.slice(1);\n if (angular.isDefined(attr[bsKey])) {\n options[key] = scope.$eval(attr[bsKey]);\n }\n });\n\n // Initialize timepicker\n if (isNative && (options.useNative || defaults.useNative)) options.timeFormat = 'HH:mm';\n var timepicker = $timepicker(element, controller, options);\n options = timepicker.$options;\n\n var lang = options.lang;\n var formatDate = function (date, format, timezone) {\n return $dateFormatter.formatDate(date, format, lang, timezone);\n };\n\n // Visibility binding support\n if (attr.bsShow) {\n scope.$watch(attr.bsShow, function (newValue, oldValue) {\n if (!timepicker || !angular.isDefined(newValue)) return;\n if (angular.isString(newValue)) newValue = !!newValue.match(/true|,?(timepicker),?/i);\n if (newValue === true) {\n timepicker.show();\n } else {\n timepicker.hide();\n }\n });\n }\n\n // Initialize parser\n var dateParser = $dateParser({\n format: options.timeFormat,\n lang: lang\n });\n\n // Observe attributes for changes\n angular.forEach(['minTime', 'maxTime'], function (key) {\n // console.warn('attr.$observe(%s)', key, attr[key]);\n if (angular.isDefined(attr[key])) {\n attr.$observe(key, function (newValue) {\n timepicker.$options[key] = dateParser.getTimeForAttribute(key, newValue);\n if (!isNaN(timepicker.$options[key])) timepicker.$build();\n validateAgainstMinMaxTime(controller.$dateValue);\n });\n }\n });\n\n // Watch model for changes\n scope.$watch(attr.ngModel, function (newValue, oldValue) {\n // console.warn('scope.$watch(%s)', attr.ngModel, newValue, oldValue, controller.$dateValue);\n timepicker.update(controller.$dateValue);\n }, true);\n\n function validateAgainstMinMaxTime (parsedTime) {\n if (!angular.isDate(parsedTime)) return;\n var isMinValid = isNaN(options.minTime) || new Date(parsedTime.getTime()).setFullYear(1970, 0, 1) >= options.minTime;\n var isMaxValid = isNaN(options.maxTime) || new Date(parsedTime.getTime()).setFullYear(1970, 0, 1) <= options.maxTime;\n var isValid = isMinValid && isMaxValid;\n controller.$setValidity('date', isValid);\n controller.$setValidity('min', isMinValid);\n controller.$setValidity('max', isMaxValid);\n // Only update the model when we have a valid date\n if (!isValid) {\n return;\n }\n controller.$dateValue = parsedTime;\n }\n\n // viewValue -> $parsers -> modelValue\n controller.$parsers.unshift(function (viewValue) {\n // console.warn('$parser(\"%s\"): viewValue=%o', element.attr('ng-model'), viewValue);\n var date;\n // Null values should correctly reset the model value & validity\n if (!viewValue) {\n // BREAKING CHANGE:\n // return null (not undefined) when input value is empty, so angularjs 1.3\n // ngModelController can go ahead and run validators, like ngRequired\n controller.$setValidity('date', true);\n return null;\n }\n var parsedTime = angular.isDate(viewValue) ? viewValue : dateParser.parse(viewValue, controller.$dateValue);\n if (!parsedTime || isNaN(parsedTime.getTime())) {\n controller.$setValidity('date', false);\n // Return undefined, causes ngModelController to\n // invalidate model value\n return undefined;\n }\n validateAgainstMinMaxTime(parsedTime);\n\n if (options.timeType === 'string') {\n date = dateParser.timezoneOffsetAdjust(parsedTime, options.timezone, true);\n return formatDate(date, options.modelTimeFormat || options.timeFormat);\n }\n date = dateParser.timezoneOffsetAdjust(controller.$dateValue, options.timezone, true);\n if (options.timeType === 'number') {\n return date.getTime();\n } else if (options.timeType === 'unix') {\n return date.getTime() / 1000;\n } else if (options.timeType === 'iso') {\n return date.toISOString();\n }\n return new Date(date);\n });\n\n // modelValue -> $formatters -> viewValue\n controller.$formatters.push(function (modelValue) {\n // console.warn('$formatter(\"%s\"): modelValue=%o (%o)', element.attr('ng-model'), modelValue, typeof modelValue);\n var date;\n if (angular.isUndefined(modelValue) || modelValue === null) {\n date = NaN;\n } else if (angular.isDate(modelValue)) {\n date = modelValue;\n } else if (options.timeType === 'string') {\n date = dateParser.parse(modelValue, null, options.modelTimeFormat);\n } else if (options.timeType === 'unix') {\n date = new Date(modelValue * 1000);\n } else {\n date = new Date(modelValue);\n }\n // Setup default value?\n // if(isNaN(date.getTime())) date = new Date(new Date().setMinutes(0) + 36e5);\n controller.$dateValue = dateParser.timezoneOffsetAdjust(date, options.timezone);\n return getTimeFormattedString();\n });\n\n // viewValue -> element\n controller.$render = function () {\n // console.warn('$render(\"%s\"): viewValue=%o', element.attr('ng-model'), controller.$viewValue);\n element.val(getTimeFormattedString());\n };\n\n function getTimeFormattedString () {\n return !controller.$dateValue || isNaN(controller.$dateValue.getTime()) ? '' : formatDate(controller.$dateValue, options.timeFormat);\n }\n\n // Garbage collection\n scope.$on('$destroy', function () {\n if (timepicker) timepicker.destroy();\n options = null;\n timepicker = null;\n });\n\n }\n };\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.tab', [])\n\n .provider('$tab', function () {\n\n var defaults = this.defaults = {\n animation: 'am-fade',\n template: 'tab/tab.tpl.html',\n navClass: 'nav-tabs',\n activeClass: 'active'\n };\n\n var controller = this.controller = function ($scope, $element, $attrs) {\n var self = this;\n\n // Attributes options\n self.$options = angular.copy(defaults);\n angular.forEach(['animation', 'navClass', 'activeClass'], function (key) {\n if (angular.isDefined($attrs[key])) self.$options[key] = $attrs[key];\n });\n\n // Publish options on scope\n $scope.$navClass = self.$options.navClass;\n $scope.$activeClass = self.$options.activeClass;\n\n self.$panes = $scope.$panes = [];\n\n // Please use $activePaneChangeListeners if you use `bsActivePane`\n // Because we removed `ngModel` as default, we rename viewChangeListeners to\n // activePaneChangeListeners to make more sense.\n self.$activePaneChangeListeners = self.$viewChangeListeners = [];\n\n self.$push = function (pane) {\n if (angular.isUndefined(self.$panes.$active)) {\n $scope.$setActive(pane.name || 0);\n }\n self.$panes.push(pane);\n };\n\n self.$remove = function (pane) {\n var index = self.$panes.indexOf(pane);\n var active = self.$panes.$active;\n var activeIndex;\n if (angular.isString(active)) {\n activeIndex = self.$panes.map(function (pane) {\n return pane.name;\n }).indexOf(active);\n } else {\n activeIndex = self.$panes.$active;\n }\n\n // remove pane from $panes array\n self.$panes.splice(index, 1);\n\n if (index < activeIndex) {\n // we removed a pane before the active pane, so we need to\n // decrement the active pane index\n activeIndex--;\n } else if (index === activeIndex && activeIndex === self.$panes.length) {\n // we remove the active pane and it was the one at the end,\n // so select the previous one\n activeIndex--;\n }\n if (activeIndex >= 0 && activeIndex < self.$panes.length) {\n self.$setActive(self.$panes[activeIndex].name || activeIndex);\n } else {\n self.$setActive();\n }\n };\n\n self.$setActive = $scope.$setActive = function (value) {\n self.$panes.$active = value;\n self.$activePaneChangeListeners.forEach(function (fn) {\n fn();\n });\n };\n\n self.$isActive = $scope.$isActive = function ($pane, $index) {\n return self.$panes.$active === $pane.name || self.$panes.$active === $index;\n };\n\n };\n\n this.$get = function () {\n var $tab = {};\n $tab.defaults = defaults;\n $tab.controller = controller;\n return $tab;\n };\n\n })\n\n .directive('bsTabs', function ($window, $animate, $tab, $parse) {\n\n var defaults = $tab.defaults;\n\n return {\n require: ['?ngModel', 'bsTabs'],\n transclude: true,\n scope: true,\n controller: ['$scope', '$element', '$attrs', $tab.controller],\n templateUrl: function (element, attr) {\n return attr.template || defaults.template;\n },\n link: function postLink (scope, element, attrs, controllers) {\n\n var ngModelCtrl = controllers[0];\n var bsTabsCtrl = controllers[1];\n\n // 'ngModel' does interfere with form validation\n // and status, use `bsActivePane` instead to avoid it\n if (ngModelCtrl) {\n\n // Update the modelValue following\n bsTabsCtrl.$activePaneChangeListeners.push(function () {\n ngModelCtrl.$setViewValue(bsTabsCtrl.$panes.$active);\n });\n\n // modelValue -> $formatters -> viewValue\n ngModelCtrl.$formatters.push(function (modelValue) {\n // console.warn('$formatter(\"%s\"): modelValue=%o (%o)', element.attr('ng-model'), modelValue, typeof modelValue);\n bsTabsCtrl.$setActive(modelValue);\n return modelValue;\n });\n\n }\n\n if (attrs.bsActivePane) {\n // adapted from angularjs ngModelController bindings\n // https://github.com/angular/angular.js/blob/v1.3.1/src%2Fng%2Fdirective%2Finput.js#L1730\n var parsedBsActivePane = $parse(attrs.bsActivePane);\n\n // Update bsActivePane value with change\n bsTabsCtrl.$activePaneChangeListeners.push(function () {\n parsedBsActivePane.assign(scope, bsTabsCtrl.$panes.$active);\n });\n\n // watch bsActivePane for value changes\n scope.$watch(attrs.bsActivePane, function (newValue, oldValue) {\n bsTabsCtrl.$setActive(newValue);\n }, true);\n }\n }\n };\n\n })\n\n .directive('bsPane', function ($window, $animate, $sce) {\n\n return {\n require: ['^?ngModel', '^bsTabs'],\n scope: true,\n link: function postLink (scope, element, attrs, controllers) {\n\n // var ngModelCtrl = controllers[0];\n var bsTabsCtrl = controllers[1];\n\n // Add base class\n element.addClass('tab-pane');\n\n // Observe title attribute for change\n attrs.$observe('title', function (newValue, oldValue) {\n scope.title = $sce.trustAsHtml(newValue);\n });\n\n // Save tab name into scope\n scope.name = attrs.name;\n\n // Add animation class\n if (bsTabsCtrl.$options.animation) {\n element.addClass(bsTabsCtrl.$options.animation);\n }\n\n attrs.$observe('disabled', function (newValue, oldValue) {\n scope.disabled = scope.$eval(newValue);\n });\n\n // Push pane to parent bsTabs controller\n bsTabsCtrl.$push(scope);\n\n // remove pane from tab controller when pane is destroyed\n scope.$on('$destroy', function () {\n bsTabsCtrl.$remove(scope);\n });\n\n function render () {\n var index = bsTabsCtrl.$panes.indexOf(scope);\n $animate[bsTabsCtrl.$isActive(scope, index) ? 'addClass' : 'removeClass'](element, bsTabsCtrl.$options.activeClass);\n }\n\n bsTabsCtrl.$activePaneChangeListeners.push(function () {\n render();\n });\n render();\n\n }\n };\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.scrollspy', ['mgcrea.ngStrap.helpers.debounce', 'mgcrea.ngStrap.helpers.dimensions'])\n\n .provider('$scrollspy', function () {\n\n // Pool of registered spies\n var spies = this.$$spies = {};\n\n var defaults = this.defaults = {\n debounce: 150,\n throttle: 100,\n offset: 100\n };\n\n this.$get = function ($window, $document, $rootScope, dimensions, debounce, throttle) {\n\n var windowEl = angular.element($window);\n var docEl = angular.element($document.prop('documentElement'));\n var bodyEl = angular.element($window.document.body);\n\n // Helper functions\n\n function nodeName (element, name) {\n return element[0].nodeName && element[0].nodeName.toLowerCase() === name.toLowerCase();\n }\n\n function ScrollSpyFactory (config) {\n\n // Common vars\n var options = angular.extend({}, defaults, config);\n if (!options.element) options.element = bodyEl;\n var isWindowSpy = nodeName(options.element, 'body');\n var scrollEl = isWindowSpy ? windowEl : options.element;\n var scrollId = isWindowSpy ? 'window' : options.id;\n\n // Use existing spy\n if (spies[scrollId]) {\n spies[scrollId].$$count++;\n return spies[scrollId];\n }\n\n var $scrollspy = {};\n\n // Private vars\n var unbindViewContentLoaded;\n var unbindIncludeContentLoaded;\n var trackedElements = $scrollspy.$trackedElements = [];\n var sortedElements = [];\n var activeTarget;\n var debouncedCheckPosition;\n var throttledCheckPosition;\n var debouncedCheckOffsets;\n /* eslint-disable no-unused-vars */\n var viewportHeight;\n /* eslint-enable no-unused-vars */\n var scrollTop;\n\n $scrollspy.init = function () {\n\n // Setup internal ref counter\n this.$$count = 1;\n\n // Bind events\n debouncedCheckPosition = debounce(this.checkPosition, options.debounce);\n throttledCheckPosition = throttle(this.checkPosition, options.throttle);\n scrollEl.on('click', this.checkPositionWithEventLoop);\n windowEl.on('resize', debouncedCheckPosition);\n scrollEl.on('scroll', throttledCheckPosition);\n\n debouncedCheckOffsets = debounce(this.checkOffsets, options.debounce);\n unbindViewContentLoaded = $rootScope.$on('$viewContentLoaded', debouncedCheckOffsets);\n unbindIncludeContentLoaded = $rootScope.$on('$includeContentLoaded', debouncedCheckOffsets);\n debouncedCheckOffsets();\n\n // Register spy for reuse\n if (scrollId) {\n spies[scrollId] = $scrollspy;\n }\n\n };\n\n $scrollspy.destroy = function () {\n\n // Check internal ref counter\n this.$$count--;\n if (this.$$count > 0) {\n return;\n }\n\n // Unbind events\n scrollEl.off('click', this.checkPositionWithEventLoop);\n windowEl.off('resize', debouncedCheckPosition);\n scrollEl.off('scroll', throttledCheckPosition);\n unbindViewContentLoaded();\n unbindIncludeContentLoaded();\n if (scrollId) {\n delete spies[scrollId];\n }\n };\n\n $scrollspy.checkPosition = function () {\n\n // Not ready yet\n if (!sortedElements.length) return;\n\n // Calculate the scroll position\n scrollTop = (isWindowSpy ? $window.pageYOffset : scrollEl.prop('scrollTop')) || 0;\n\n // Calculate the viewport height for use by the components\n viewportHeight = Math.max($window.innerHeight, docEl.prop('clientHeight'));\n\n // Activate first element if scroll is smaller\n if (scrollTop < sortedElements[0].offsetTop && activeTarget !== sortedElements[0].target) {\n return $scrollspy.$activateElement(sortedElements[0]);\n }\n\n // Activate proper element\n for (var i = sortedElements.length; i--;) {\n if (angular.isUndefined(sortedElements[i].offsetTop) || sortedElements[i].offsetTop === null) continue;\n if (activeTarget === sortedElements[i].target) continue;\n if (scrollTop < sortedElements[i].offsetTop) continue;\n if (sortedElements[i + 1] && scrollTop > sortedElements[i + 1].offsetTop) continue;\n return $scrollspy.$activateElement(sortedElements[i]);\n }\n\n };\n\n $scrollspy.checkPositionWithEventLoop = function () {\n // IE 9 throws an error if we use 'this' instead of '$scrollspy'\n // in this setTimeout call\n setTimeout($scrollspy.checkPosition, 1);\n };\n\n // Protected methods\n\n $scrollspy.$activateElement = function (element) {\n if (activeTarget) {\n var activeElement = $scrollspy.$getTrackedElement(activeTarget);\n if (activeElement) {\n activeElement.source.removeClass('active');\n if (nodeName(activeElement.source, 'li') && nodeName(activeElement.source.parent().parent(), 'li')) {\n activeElement.source.parent().parent().removeClass('active');\n }\n }\n }\n activeTarget = element.target;\n element.source.addClass('active');\n if (nodeName(element.source, 'li') && nodeName(element.source.parent().parent(), 'li')) {\n element.source.parent().parent().addClass('active');\n }\n };\n\n $scrollspy.$getTrackedElement = function (target) {\n return trackedElements.filter(function (obj) {\n return obj.target === target;\n })[0];\n };\n\n // Track offsets behavior\n\n $scrollspy.checkOffsets = function () {\n\n angular.forEach(trackedElements, function (trackedElement) {\n var targetElement = document.querySelector(trackedElement.target);\n trackedElement.offsetTop = targetElement ? dimensions.offset(targetElement).top : null;\n if (options.offset && trackedElement.offsetTop !== null) trackedElement.offsetTop -= options.offset * 1;\n });\n\n sortedElements = trackedElements\n .filter(function (el) {\n return el.offsetTop !== null;\n })\n .sort(function (a, b) {\n return a.offsetTop - b.offsetTop;\n });\n\n debouncedCheckPosition();\n\n };\n\n $scrollspy.trackElement = function (target, source) {\n trackedElements.push({target: target, source: source});\n };\n\n $scrollspy.untrackElement = function (target, source) {\n var toDelete;\n for (var i = trackedElements.length; i--;) {\n if (trackedElements[i].target === target && trackedElements[i].source === source) {\n toDelete = i;\n break;\n }\n }\n trackedElements.splice(toDelete, 1);\n };\n\n $scrollspy.activate = function (i) {\n trackedElements[i].addClass('active');\n };\n\n // Initialize plugin\n\n $scrollspy.init();\n return $scrollspy;\n\n }\n\n return ScrollSpyFactory;\n\n };\n\n })\n\n .directive('bsScrollspy', function ($rootScope, debounce, dimensions, $scrollspy) {\n\n return {\n restrict: 'EAC',\n link: function postLink (scope, element, attr) {\n\n var options = {scope: scope};\n angular.forEach(['offset', 'target'], function (key) {\n if (angular.isDefined(attr[key])) options[key] = attr[key];\n });\n\n var scrollspy = $scrollspy(options);\n scrollspy.trackElement(options.target, element);\n\n scope.$on('$destroy', function () {\n if (scrollspy) {\n scrollspy.untrackElement(options.target, element);\n scrollspy.destroy();\n }\n options = null;\n scrollspy = null;\n });\n\n }\n };\n\n })\n\n\n .directive('bsScrollspyList', function ($rootScope, debounce, dimensions, $scrollspy) {\n\n return {\n restrict: 'A',\n compile: function postLink (element, attr) {\n var children = element[0].querySelectorAll('li > a[href]');\n angular.forEach(children, function (child) {\n var childEl = angular.element(child);\n childEl.parent().attr('bs-scrollspy', '').attr('data-target', childEl.attr('href'));\n });\n }\n\n };\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.select', ['mgcrea.ngStrap.tooltip', 'mgcrea.ngStrap.helpers.parseOptions'])\n\n .provider('$select', function () {\n\n var defaults = this.defaults = {\n animation: 'am-fade',\n prefixClass: 'select',\n prefixEvent: '$select',\n placement: 'bottom-left',\n templateUrl: 'select/select.tpl.html',\n trigger: 'focus',\n container: false,\n keyboard: true,\n html: false,\n delay: 0,\n multiple: false,\n allNoneButtons: false,\n sort: true,\n caretHtml: '
',\n placeholder: 'Choose among the following...',\n allText: 'All',\n noneText: 'None',\n maxLength: 3,\n maxLengthHtml: 'selected',\n iconCheckmark: 'glyphicon glyphicon-ok',\n toggle: false\n };\n\n this.$get = function ($window, $document, $rootScope, $tooltip, $timeout) {\n\n // var bodyEl = angular.element($window.document.body);\n var isNative = /(ip[ao]d|iphone|android)/ig.test($window.navigator.userAgent);\n var isTouch = ('createTouch' in $window.document) && isNative;\n\n function SelectFactory (element, controller, config) {\n\n var $select = {};\n\n // Common vars\n var options = angular.extend({}, defaults, config);\n\n $select = $tooltip(element, options);\n var scope = $select.$scope;\n\n scope.$matches = [];\n if (options.multiple) {\n scope.$activeIndex = [];\n } else {\n scope.$activeIndex = -1;\n }\n scope.$isMultiple = options.multiple;\n scope.$showAllNoneButtons = options.allNoneButtons && options.multiple;\n scope.$iconCheckmark = options.iconCheckmark;\n scope.$allText = options.allText;\n scope.$noneText = options.noneText;\n\n scope.$activate = function (index) {\n scope.$$postDigest(function () {\n $select.activate(index);\n });\n };\n\n scope.$select = function (index, evt) {\n scope.$$postDigest(function () {\n $select.select(index);\n });\n };\n\n scope.$isVisible = function () {\n return $select.$isVisible();\n };\n\n scope.$isActive = function (index) {\n return $select.$isActive(index);\n };\n\n scope.$selectAll = function () {\n for (var i = 0; i < scope.$matches.length; i++) {\n if (!scope.$isActive(i)) {\n scope.$select(i);\n }\n }\n };\n\n scope.$selectNone = function () {\n for (var i = 0; i < scope.$matches.length; i++) {\n if (scope.$isActive(i)) {\n scope.$select(i);\n }\n }\n };\n\n // Public methods\n\n $select.update = function (matches) {\n scope.$matches = matches;\n $select.$updateActiveIndex();\n };\n\n $select.activate = function (index) {\n if (options.multiple) {\n if ($select.$isActive(index)) {\n scope.$activeIndex.splice(scope.$activeIndex.indexOf(index), 1);\n } else {\n scope.$activeIndex.push(index);\n }\n if (options.sort) scope.$activeIndex.sort(function (a, b) { return a - b; }); // use numeric sort instead of default sort\n } else {\n scope.$activeIndex = index;\n }\n return scope.$activeIndex;\n };\n\n $select.select = function (index) {\n if (angular.isUndefined(index) || index < 0 || index >= scope.$matches.length) { return; }\n var value = scope.$matches[index].value;\n scope.$apply(function () {\n $select.activate(index);\n if (options.multiple) {\n controller.$setViewValue(scope.$activeIndex.map(function (index) {\n if (angular.isUndefined(scope.$matches[index])) {\n return null;\n }\n return scope.$matches[index].value;\n }));\n } else {\n if (options.toggle) {\n controller.$setViewValue((value === controller.$modelValue) ? undefined : value);\n } else {\n controller.$setViewValue(value);\n }\n // Hide if single select\n $select.hide();\n }\n });\n // Emit event\n scope.$emit(options.prefixEvent + '.select', value, index, $select);\n if (angular.isDefined(options.onSelect) && angular.isFunction(options.onSelect)) {\n options.onSelect(value, index, $select);\n }\n };\n\n // Protected methods\n\n $select.$updateActiveIndex = function () {\n if (options.multiple) {\n if (angular.isArray(controller.$modelValue)) {\n scope.$activeIndex = controller.$modelValue.map(function (value) {\n return $select.$getIndex(value);\n });\n } else {\n scope.$activeIndex = [];\n }\n } else {\n if (angular.isDefined(controller.$modelValue) && scope.$matches.length) {\n scope.$activeIndex = $select.$getIndex(controller.$modelValue);\n } else {\n scope.$activeIndex = -1;\n }\n }\n };\n\n $select.$isVisible = function () {\n if (!options.minLength || !controller) {\n return scope.$matches.length;\n }\n // minLength support\n return scope.$matches.length && controller.$viewValue.length >= options.minLength;\n };\n\n $select.$isActive = function (index) {\n if (options.multiple) {\n return scope.$activeIndex.indexOf(index) !== -1;\n }\n return scope.$activeIndex === index;\n };\n\n $select.$getIndex = function (value) {\n var index;\n for (index = scope.$matches.length; index--;) {\n if (angular.equals(scope.$matches[index].value, value)) break;\n }\n return index;\n };\n\n $select.$onMouseDown = function (evt) {\n // Prevent blur on mousedown on .dropdown-menu\n evt.preventDefault();\n evt.stopPropagation();\n // Emulate click for mobile devices\n if (isTouch) {\n var targetEl = angular.element(evt.target);\n var anchor;\n\n if (evt.target.nodeName !== 'A') {\n var anchorCandidate = targetEl.parent();\n while (!anchor && anchorCandidate.length > 0) {\n if (anchorCandidate[0].nodeName === 'A') {\n anchor = anchorCandidate;\n }\n anchorCandidate = anchorCandidate.parent();\n }\n }\n\n if (anchor) {\n angular.element(anchor).triggerHandler('click');\n } else {\n targetEl.triggerHandler('click');\n }\n }\n };\n\n $select.$onKeyDown = function (evt) {\n if (!/(9|13|38|40)/.test(evt.keyCode)) return;\n // Let tab propagate\n if (evt.keyCode !== 9) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n // release focus on tab\n if (options.multiple && evt.keyCode === 9) {\n return $select.hide();\n }\n\n // Select with enter\n if (!options.multiple && (evt.keyCode === 13 || evt.keyCode === 9)) {\n return $select.select(scope.$activeIndex);\n }\n\n if (!options.multiple) {\n // Navigate with keyboard\n if (evt.keyCode === 38 && scope.$activeIndex > 0) scope.$activeIndex--;\n else if (evt.keyCode === 38 && scope.$activeIndex < 0) scope.$activeIndex = scope.$matches.length - 1;\n else if (evt.keyCode === 40 && scope.$activeIndex < scope.$matches.length - 1) scope.$activeIndex++;\n else if (angular.isUndefined(scope.$activeIndex)) scope.$activeIndex = 0;\n scope.$digest();\n }\n };\n\n $select.$isIE = function () {\n var ua = $window.navigator.userAgent;\n return ua.indexOf('MSIE ') > 0 || ua.indexOf('Trident/') > 0 || ua.indexOf('Edge/') > 0;\n };\n\n $select.$selectScrollFix = function (e) {\n if ($document[0].activeElement.tagName === 'UL') {\n e.preventDefault();\n e.stopImmediatePropagation();\n e.target.focus();\n }\n };\n\n // Overrides\n\n var _show = $select.show;\n $select.show = function () {\n _show();\n if (options.multiple) {\n $select.$element.addClass('select-multiple');\n }\n // use timeout to hookup the events to prevent\n // event bubbling from being processed imediately.\n $timeout(function () {\n $select.$element.on(isTouch ? 'touchstart' : 'mousedown', $select.$onMouseDown);\n if (options.keyboard) {\n element.on('keydown', $select.$onKeyDown);\n }\n }, 0, false);\n };\n\n var _hide = $select.hide;\n $select.hide = function () {\n if (!options.multiple && angular.isUndefined(controller.$modelValue)) {\n scope.$activeIndex = -1;\n }\n $select.$element.off(isTouch ? 'touchstart' : 'mousedown', $select.$onMouseDown);\n if (options.keyboard) {\n element.off('keydown', $select.$onKeyDown);\n }\n _hide(true);\n };\n\n return $select;\n\n }\n\n SelectFactory.defaults = defaults;\n return SelectFactory;\n\n };\n\n })\n\n .directive('bsSelect', function ($window, $parse, $q, $select, $parseOptions) {\n\n var defaults = $select.defaults;\n\n return {\n restrict: 'EAC',\n require: 'ngModel',\n link: function postLink (scope, element, attr, controller) {\n\n // Directive options\n var options = {scope: scope, placeholder: defaults.placeholder};\n angular.forEach(['template', 'templateUrl', 'controller', 'controllerAs', 'placement', 'container', 'delay', 'trigger', 'keyboard', 'html', 'animation', 'placeholder', 'allNoneButtons', 'maxLength', 'maxLengthHtml', 'allText', 'noneText', 'iconCheckmark', 'autoClose', 'id', 'sort', 'caretHtml', 'prefixClass', 'prefixEvent', 'toggle'], function (key) {\n if (angular.isDefined(attr[key])) options[key] = attr[key];\n });\n\n // use string regex match boolean attr falsy values, leave truthy values be\n var falseValueRegExp = /^(false|0|)$/i;\n angular.forEach(['html', 'container', 'allNoneButtons', 'sort'], function (key) {\n if (angular.isDefined(attr[key]) && falseValueRegExp.test(attr[key])) {\n options[key] = false;\n }\n });\n\n // bind functions from the attrs to the show, hide and select events\n angular.forEach(['onBeforeShow', 'onShow', 'onBeforeHide', 'onHide', 'onSelect'], function (key) {\n var bsKey = 'bs' + key.charAt(0).toUpperCase() + key.slice(1);\n if (angular.isDefined(attr[bsKey])) {\n options[key] = scope.$eval(attr[bsKey]);\n }\n });\n\n // Only parse data-multiple. Angular sets existence attributes to true (multiple/required/etc), they apply this\n // to data-multiple as well for some reason, so we'll parse this ourselves and disregard multiple\n var dataMultiple = element.attr('data-multiple');\n if (angular.isDefined(dataMultiple)) {\n if (falseValueRegExp.test(dataMultiple)) {\n options.multiple = false;\n } else {\n options.multiple = dataMultiple;\n }\n }\n\n // Add support for select markup\n if (element[0].nodeName.toLowerCase() === 'select') {\n var inputEl = element;\n inputEl.css('display', 'none');\n element = angular.element('
');\n inputEl.after(element);\n }\n\n // Build proper bsOptions\n var parsedOptions = $parseOptions(attr.bsOptions);\n\n // Initialize select\n var select = $select(element, controller, options);\n\n if (select.$isIE()) {\n element[0].addEventListener('blur', select.$selectScrollFix);\n }\n\n // Watch bsOptions values before filtering for changes\n var watchedOptions = parsedOptions.$match[7].replace(/\\|.+/, '').trim();\n scope.$watch(watchedOptions, function (newValue, oldValue) {\n // console.warn('scope.$watch(%s)', watchedOptions, newValue, oldValue);\n parsedOptions.valuesFn(scope, controller)\n .then(function (values) {\n select.update(values);\n controller.$render();\n });\n }, true);\n\n // Watch model for changes\n scope.$watch(attr.ngModel, function (newValue, oldValue) {\n // console.warn('scope.$watch(%s)', attr.ngModel, newValue, oldValue);\n select.$updateActiveIndex();\n controller.$render();\n }, true);\n\n // Model rendering in view\n controller.$render = function () {\n // console.warn('$render', element.attr('ng-model'), 'controller.$modelValue', typeof controller.$modelValue, controller.$modelValue, 'controller.$viewValue', typeof controller.$viewValue, controller.$viewValue);\n var selected;\n var index;\n if (options.multiple && angular.isArray(controller.$modelValue)) {\n selected = controller.$modelValue.map(function (value) {\n index = select.$getIndex(value);\n return index !== -1 ? select.$scope.$matches[index].label : false;\n }).filter(angular.isDefined);\n if (selected.length > (options.maxLength || defaults.maxLength)) {\n selected = selected.length + ' ' + (options.maxLengthHtml || defaults.maxLengthHtml);\n } else {\n selected = selected.join(', ');\n }\n } else {\n index = select.$getIndex(controller.$modelValue);\n selected = index !== -1 ? select.$scope.$matches[index].label : false;\n }\n element.html((selected || options.placeholder) + (options.caretHtml || defaults.caretHtml));\n };\n\n if (options.multiple) {\n controller.$isEmpty = function (value) {\n return !value || value.length === 0;\n };\n }\n\n // Garbage collection\n scope.$on('$destroy', function () {\n if (select) select.destroy();\n options = null;\n select = null;\n });\n\n }\n };\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.popover', ['mgcrea.ngStrap.tooltip'])\n\n .provider('$popover', function () {\n\n var defaults = this.defaults = {\n animation: 'am-fade',\n customClass: '',\n // uncommenting the next two lines will break backwards compatability\n // prefixClass: 'popover',\n // prefixEvent: 'popover',\n container: false,\n target: false,\n placement: 'right',\n templateUrl: 'popover/popover.tpl.html',\n contentTemplate: false,\n trigger: 'click',\n keyboard: true,\n html: false,\n title: '',\n content: '',\n delay: 0,\n autoClose: false\n };\n\n this.$get = function ($tooltip) {\n\n function PopoverFactory (element, config) {\n\n // Common vars\n var options = angular.extend({}, defaults, config);\n\n var $popover = $tooltip(element, options);\n\n // Support scope as string options [/*title, */content]\n if (options.content) {\n $popover.$scope.content = options.content;\n }\n\n return $popover;\n\n }\n\n return PopoverFactory;\n\n };\n\n })\n\n .directive('bsPopover', function ($window, $sce, $popover) {\n\n var requestAnimationFrame = $window.requestAnimationFrame || $window.setTimeout;\n\n return {\n restrict: 'EAC',\n scope: true,\n link: function postLink (scope, element, attr) {\n\n var popover;\n // Directive options\n var options = {scope: scope};\n angular.forEach(['template', 'templateUrl', 'controller', 'controllerAs', 'contentTemplate', 'placement', 'container', 'delay', 'trigger', 'html', 'animation', 'customClass', 'autoClose', 'id', 'prefixClass', 'prefixEvent', 'bsEnabled'], function (key) {\n if (angular.isDefined(attr[key])) options[key] = attr[key];\n });\n\n // use string regex match boolean attr falsy values, leave truthy values be\n var falseValueRegExp = /^(false|0|)$/i;\n angular.forEach(['html', 'container', 'autoClose'], function (key) {\n if (angular.isDefined(attr[key]) && falseValueRegExp.test(attr[key])) options[key] = false;\n });\n\n // bind functions from the attrs to the show and hide events\n angular.forEach(['onBeforeShow', 'onShow', 'onBeforeHide', 'onHide'], function (key) {\n var bsKey = 'bs' + key.charAt(0).toUpperCase() + key.slice(1);\n if (angular.isDefined(attr[bsKey])) {\n options[key] = scope.$eval(attr[bsKey]);\n }\n });\n\n // should not parse target attribute (anchor tag), only data-target #1454\n var dataTarget = element.attr('data-target');\n if (angular.isDefined(dataTarget)) {\n if (falseValueRegExp.test(dataTarget)) {\n options.target = false;\n } else {\n options.target = dataTarget;\n }\n }\n\n // Support scope as data-attrs\n angular.forEach(['title', 'content'], function (key) {\n if (attr[key]) {\n attr.$observe(key, function (newValue, oldValue) {\n scope[key] = $sce.trustAsHtml(newValue);\n if (angular.isDefined(oldValue)) {\n requestAnimationFrame(function () {\n if (popover) popover.$applyPlacement();\n });\n }\n });\n }\n });\n\n // Support scope as an object\n if (attr.bsPopover) {\n scope.$watch(attr.bsPopover, function (newValue, oldValue) {\n if (angular.isObject(newValue)) {\n angular.extend(scope, newValue);\n } else {\n scope.content = newValue;\n }\n if (angular.isDefined(oldValue)) {\n requestAnimationFrame(function () {\n if (popover) popover.$applyPlacement();\n });\n }\n }, true);\n }\n\n // Visibility binding support\n if (attr.bsShow) {\n scope.$watch(attr.bsShow, function (newValue, oldValue) {\n if (!popover || !angular.isDefined(newValue)) return;\n if (angular.isString(newValue)) newValue = !!newValue.match(/true|,?(popover),?/i);\n if (newValue === true) {\n popover.show();\n } else {\n popover.hide();\n }\n });\n }\n\n // Enabled binding support\n if (attr.bsEnabled) {\n scope.$watch(attr.bsEnabled, function (newValue) {\n if (!popover || !angular.isDefined(newValue)) return;\n if (angular.isString(newValue)) newValue = !!newValue.match(/true|1|,?(popover),?/i);\n if (newValue === false) {\n popover.setEnabled(false);\n } else {\n popover.setEnabled(true);\n }\n });\n }\n\n // Viewport support\n if (attr.viewport) {\n scope.$watch(attr.viewport, function (newValue) {\n if (!popover || !angular.isDefined(newValue)) return;\n popover.setViewport(newValue);\n });\n }\n\n // Initialize popover\n popover = $popover(element, options);\n\n // Garbage collection\n scope.$on('$destroy', function () {\n if (popover) popover.destroy();\n options = null;\n popover = null;\n });\n\n }\n };\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.navbar', [])\n\n .provider('$navbar', function () {\n\n var defaults = this.defaults = {\n activeClass: 'active',\n routeAttr: 'data-match-route',\n strict: false\n };\n\n this.$get = function () {\n return {defaults: defaults};\n };\n\n })\n\n .directive('bsNavbar', function ($window, $location, $navbar) {\n\n var defaults = $navbar.defaults;\n\n return {\n restrict: 'A',\n link: function postLink (scope, element, attr, controller) {\n\n // Directive options\n var options = angular.copy(defaults);\n angular.forEach(Object.keys(defaults), function (key) {\n if (angular.isDefined(attr[key])) options[key] = attr[key];\n });\n\n // Watch for the $location\n scope.$watch(function () {\n\n return $location.path();\n\n }, function (newValue, oldValue) {\n\n var liElements = element[0].querySelectorAll('li[' + options.routeAttr + ']');\n\n angular.forEach(liElements, function (li) {\n\n var liElement = angular.element(li);\n var pattern = liElement.attr(options.routeAttr).replace('/', '\\\\/');\n if (options.strict) {\n pattern = '^' + pattern + '$';\n }\n var regexp = new RegExp(pattern, 'i');\n\n if (regexp.test(newValue)) {\n liElement.addClass(options.activeClass);\n } else {\n liElement.removeClass(options.activeClass);\n }\n\n });\n\n });\n\n }\n\n };\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.dropdown', ['mgcrea.ngStrap.tooltip'])\n\n .provider('$dropdown', function () {\n\n var defaults = this.defaults = {\n animation: 'am-fade',\n prefixClass: 'dropdown',\n prefixEvent: 'dropdown',\n placement: 'bottom-left',\n templateUrl: 'dropdown/dropdown.tpl.html',\n trigger: 'click',\n container: false,\n keyboard: true,\n html: false,\n delay: 0\n };\n\n this.$get = function ($window, $rootScope, $tooltip, $timeout) {\n\n var bodyEl = angular.element($window.document.body);\n var matchesSelector = Element.prototype.matchesSelector || Element.prototype.webkitMatchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector;\n\n function DropdownFactory (element, config) {\n\n var $dropdown = {};\n\n // Common vars\n var options = angular.extend({}, defaults, config);\n /* var scope = */$dropdown.$scope = options.scope && options.scope.$new() || $rootScope.$new();\n\n $dropdown = $tooltip(element, options);\n var parentEl = element.parent();\n\n // Protected methods\n\n $dropdown.$onKeyDown = function (evt) {\n if (!/(38|40)/.test(evt.keyCode)) return;\n evt.preventDefault();\n evt.stopPropagation();\n\n // Retrieve focused index\n var items = angular.element($dropdown.$element[0].querySelectorAll('li:not(.divider) a'));\n if (!items.length) return;\n var index;\n angular.forEach(items, function (el, i) {\n if (matchesSelector && matchesSelector.call(el, ':focus')) index = i;\n });\n\n // Navigate with keyboard\n if (evt.keyCode === 38 && index > 0) index--;\n else if (evt.keyCode === 40 && index < items.length - 1) index++;\n else if (angular.isUndefined(index)) index = 0;\n items.eq(index)[0].focus();\n\n };\n\n // Overrides\n\n var show = $dropdown.show;\n $dropdown.show = function () {\n show();\n // use timeout to hookup the events to prevent\n // event bubbling from being processed imediately.\n $timeout(function () {\n if (options.keyboard && $dropdown.$element) $dropdown.$element.on('keydown', $dropdown.$onKeyDown);\n bodyEl.on('click', onBodyClick);\n }, 0, false);\n if (parentEl.hasClass('dropdown')) parentEl.addClass('open');\n };\n\n var hide = $dropdown.hide;\n $dropdown.hide = function () {\n if (!$dropdown.$isShown) return;\n if (options.keyboard && $dropdown.$element) $dropdown.$element.off('keydown', $dropdown.$onKeyDown);\n bodyEl.off('click', onBodyClick);\n if (parentEl.hasClass('dropdown')) parentEl.removeClass('open');\n hide();\n };\n\n var destroy = $dropdown.destroy;\n $dropdown.destroy = function () {\n bodyEl.off('click', onBodyClick);\n destroy();\n };\n\n // Private functions\n\n function onBodyClick (evt) {\n if (evt.target === element[0]) return;\n return evt.target !== element[0] && $dropdown.hide();\n }\n\n return $dropdown;\n\n }\n\n return DropdownFactory;\n\n };\n\n })\n\n .directive('bsDropdown', function ($window, $sce, $dropdown) {\n\n return {\n restrict: 'EAC',\n scope: true,\n compile: function (tElement, tAttrs) {\n\n // Support for inlined template (next sibling)\n // It must be fetched before compilation\n if (!tAttrs.bsDropdown) {\n var nextSibling = tElement[0].nextSibling;\n while (nextSibling && nextSibling.nodeType !== 1) {\n nextSibling = nextSibling.nextSibling;\n }\n if (nextSibling && nextSibling.className.split(' ').indexOf('dropdown-menu') >= 0) {\n tAttrs.template = nextSibling.outerHTML;\n tAttrs.templateUrl = undefined;\n nextSibling.parentNode.removeChild(nextSibling);\n }\n }\n\n return function postLink (scope, element, attr) {\n\n // Directive options\n var options = {scope: scope};\n angular.forEach(['template', 'templateUrl', 'controller', 'controllerAs', 'placement', 'container', 'delay', 'trigger', 'keyboard', 'html', 'animation', 'id', 'autoClose'], function (key) {\n if (angular.isDefined(tAttrs[key])) options[key] = tAttrs[key];\n });\n\n // use string regex match boolean attr falsy values, leave truthy values be\n var falseValueRegExp = /^(false|0|)$/i;\n angular.forEach(['html', 'container'], function (key) {\n if (angular.isDefined(attr[key]) && falseValueRegExp.test(attr[key])) options[key] = false;\n });\n\n // bind functions from the attrs to the show and hide events\n angular.forEach(['onBeforeShow', 'onShow', 'onBeforeHide', 'onHide'], function (key) {\n var bsKey = 'bs' + key.charAt(0).toUpperCase() + key.slice(1);\n if (angular.isDefined(attr[bsKey])) {\n options[key] = scope.$eval(attr[bsKey]);\n }\n });\n\n // Support scope as an object\n if (attr.bsDropdown) {\n scope.$watch(attr.bsDropdown, function (newValue, oldValue) {\n scope.content = newValue;\n }, true);\n }\n\n // Initialize dropdown\n var dropdown = $dropdown(element, options);\n\n // Visibility binding support\n if (attr.bsShow) {\n scope.$watch(attr.bsShow, function (newValue, oldValue) {\n if (!dropdown || !angular.isDefined(newValue)) return;\n if (angular.isString(newValue)) newValue = !!newValue.match(/true|,?(dropdown),?/i);\n if (newValue === true) {\n dropdown.show();\n } else {\n dropdown.hide();\n }\n });\n }\n\n // Garbage collection\n scope.$on('$destroy', function () {\n if (dropdown) dropdown.destroy();\n options = null;\n dropdown = null;\n });\n\n };\n }\n };\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.modal', ['mgcrea.ngStrap.core', 'mgcrea.ngStrap.helpers.dimensions'])\n\n .provider('$modal', function () {\n\n var defaults = this.defaults = {\n animation: 'am-fade',\n backdropAnimation: 'am-fade',\n customClass: '',\n prefixClass: 'modal',\n prefixEvent: 'modal',\n placement: 'top',\n templateUrl: 'modal/modal.tpl.html',\n template: '',\n contentTemplate: false,\n container: false,\n element: null,\n backdrop: true,\n keyboard: true,\n html: false,\n show: true,\n size: null,\n zIndex: null\n };\n\n this.$get = function ($window, $rootScope, $bsCompiler, $animate, $timeout, $sce, dimensions) {\n\n var forEach = angular.forEach;\n var requestAnimationFrame = $window.requestAnimationFrame || $window.setTimeout;\n var bodyElement = angular.element($window.document.body);\n\n var backdropCount = 0;\n var dialogBaseZindex = 1050;\n var backdropBaseZindex = 1040;\n\n var validSizes = {\n lg: 'modal-lg',\n sm: 'modal-sm'\n };\n\n function ModalFactory (config) {\n\n var $modal = {};\n\n // Common vars\n var options = $modal.$options = angular.extend({}, defaults, config);\n var promise = $modal.$promise = $bsCompiler.compile(options);\n var scope = $modal.$scope = options.scope && options.scope.$new() || $rootScope.$new();\n\n if (!options.element && !options.container) {\n options.container = 'body';\n }\n\n if (options.zIndex) {\n dialogBaseZindex = parseInt(options.zIndex, 10);\n backdropBaseZindex = dialogBaseZindex - 10;\n }\n\n // Store $id to identify the triggering element in events\n // give priority to options.id, otherwise, try to use\n // element id if defined\n $modal.$id = options.id || options.element && options.element.attr('id') || '';\n\n // Support scope as string options\n forEach(['title', 'content'], function (key) {\n if (options[key]) scope[key] = $sce.trustAsHtml(options[key]);\n });\n\n // Provide scope helpers\n scope.$hide = function () {\n scope.$$postDigest(function () {\n $modal.hide();\n });\n };\n scope.$show = function () {\n scope.$$postDigest(function () {\n $modal.show();\n });\n };\n scope.$toggle = function () {\n scope.$$postDigest(function () {\n $modal.toggle();\n });\n };\n // Publish isShown as a protected var on scope\n $modal.$isShown = scope.$isShown = false;\n\n // Fetch, compile then initialize modal\n var compileData;\n var modalElement;\n var modalScope;\n var backdropElement = angular.element('
');\n backdropElement.css({position: 'fixed', top: '0px', left: '0px', bottom: '0px', right: '0px'});\n promise.then(function (data) {\n compileData = data;\n $modal.init();\n });\n\n $modal.init = function () {\n\n // Options: show\n if (options.show) {\n scope.$$postDigest(function () {\n $modal.show();\n });\n }\n\n };\n\n $modal.destroy = function () {\n\n // Remove element\n destroyModalElement();\n\n // remove backdrop element\n if (backdropElement) {\n backdropElement.remove();\n backdropElement = null;\n }\n\n // Destroy scope\n scope.$destroy();\n };\n\n $modal.show = function () {\n if ($modal.$isShown) return;\n\n var parent;\n var after;\n if (angular.isElement(options.container)) {\n parent = options.container;\n after = options.container[0].lastChild ? angular.element(options.container[0].lastChild) : null;\n } else {\n if (options.container) {\n parent = findElement(options.container);\n after = parent[0] && parent[0].lastChild ? angular.element(parent[0].lastChild) : null;\n } else {\n parent = null;\n after = options.element;\n }\n }\n\n // destroy any existing modal elements\n if (modalElement) destroyModalElement();\n\n // create a new scope, so we can destroy it and all child scopes\n // when destroying the modal element\n modalScope = $modal.$scope.$new();\n // Fetch a cloned element linked from template (noop callback is required)\n modalElement = $modal.$element = compileData.link(modalScope, function (clonedElement, scope) {});\n\n if (options.backdrop) {\n // set z-index\n modalElement.css({'z-index': dialogBaseZindex + (backdropCount * 20)});\n backdropElement.css({'z-index': backdropBaseZindex + (backdropCount * 20)});\n\n // increment number of backdrops\n backdropCount++;\n }\n\n if (scope.$emit(options.prefixEvent + '.show.before', $modal).defaultPrevented) {\n return;\n }\n if (angular.isDefined(options.onBeforeShow) && angular.isFunction(options.onBeforeShow)) {\n options.onBeforeShow($modal);\n }\n\n // Set the initial positioning.\n modalElement.css({display: 'block'}).addClass(options.placement);\n\n // Options: customClass\n if (options.customClass) {\n modalElement.addClass(options.customClass);\n }\n\n // Options: size\n if (options.size && validSizes[options.size]) {\n angular.element(findElement('.modal-dialog', modalElement[0])).addClass(validSizes[options.size]);\n }\n\n // Options: animation\n if (options.animation) {\n if (options.backdrop) {\n backdropElement.addClass(options.backdropAnimation);\n }\n modalElement.addClass(options.animation);\n }\n\n if (options.backdrop) {\n $animate.enter(backdropElement, bodyElement, null);\n }\n\n // Support v1.2+ $animate\n // https://github.com/angular/angular.js/issues/11713\n if (angular.version.minor <= 2) {\n $animate.enter(modalElement, parent, after, enterAnimateCallback);\n } else {\n $animate.enter(modalElement, parent, after).then(enterAnimateCallback);\n }\n\n $modal.$isShown = scope.$isShown = true;\n safeDigest(scope);\n // Focus once the enter-animation has started\n // Weird PhantomJS bug hack\n var el = modalElement[0];\n requestAnimationFrame(function () {\n el.focus();\n });\n\n bodyElement.addClass(options.prefixClass + '-open');\n if (options.animation) {\n bodyElement.addClass(options.prefixClass + '-with-' + options.animation);\n }\n\n // Bind events\n bindBackdropEvents();\n bindKeyboardEvents();\n };\n\n function enterAnimateCallback () {\n scope.$emit(options.prefixEvent + '.show', $modal);\n if (angular.isDefined(options.onShow) && angular.isFunction(options.onShow)) {\n options.onShow($modal);\n }\n }\n\n $modal.hide = function () {\n if (!$modal.$isShown) return;\n\n if (scope.$emit(options.prefixEvent + '.hide.before', $modal).defaultPrevented) {\n return;\n }\n if (angular.isDefined(options.onBeforeHide) && angular.isFunction(options.onBeforeHide)) {\n options.onBeforeHide($modal);\n }\n\n // Support v1.2+ $animate\n // https://github.com/angular/angular.js/issues/11713\n if (angular.version.minor <= 2) {\n $animate.leave(modalElement, leaveAnimateCallback);\n } else {\n $animate.leave(modalElement).then(leaveAnimateCallback);\n }\n\n if (options.backdrop) {\n // decrement number of backdrops\n backdropCount--;\n $animate.leave(backdropElement);\n }\n $modal.$isShown = scope.$isShown = false;\n safeDigest(scope);\n\n // Unbind events\n unbindBackdropEvents();\n unbindKeyboardEvents();\n };\n\n function leaveAnimateCallback () {\n scope.$emit(options.prefixEvent + '.hide', $modal);\n if (angular.isDefined(options.onHide) && angular.isFunction(options.onHide)) {\n options.onHide($modal);\n }\n if (findElement('.modal').length <= 0) {\n bodyElement.removeClass(options.prefixClass + '-open');\n }\n if (options.animation) {\n bodyElement.removeClass(options.prefixClass + '-with-' + options.animation);\n }\n }\n\n $modal.toggle = function () {\n if ($modal.$isShown) {\n $modal.hide();\n } else {\n $modal.show();\n }\n };\n\n $modal.focus = function () {\n modalElement[0].focus();\n };\n\n // Protected methods\n\n $modal.$onKeyUp = function (evt) {\n\n if (evt.which === 27 && $modal.$isShown) {\n $modal.hide();\n evt.stopPropagation();\n }\n\n };\n\n function bindBackdropEvents () {\n if (options.backdrop) {\n modalElement.on('click', hideOnBackdropClick);\n backdropElement.on('click', hideOnBackdropClick);\n backdropElement.on('wheel', preventEventDefault);\n }\n }\n\n function unbindBackdropEvents () {\n if (options.backdrop) {\n modalElement.off('click', hideOnBackdropClick);\n backdropElement.off('click', hideOnBackdropClick);\n backdropElement.off('wheel', preventEventDefault);\n }\n }\n\n function bindKeyboardEvents () {\n if (options.keyboard) {\n modalElement.on('keyup', $modal.$onKeyUp);\n }\n }\n\n function unbindKeyboardEvents () {\n if (options.keyboard) {\n modalElement.off('keyup', $modal.$onKeyUp);\n }\n }\n\n // Private helpers\n\n function hideOnBackdropClick (evt) {\n if (evt.target !== evt.currentTarget) return;\n if (options.backdrop === 'static') {\n $modal.focus();\n } else {\n $modal.hide();\n }\n }\n\n function preventEventDefault (evt) {\n evt.preventDefault();\n }\n\n function destroyModalElement () {\n if ($modal.$isShown && modalElement !== null) {\n // un-bind events\n unbindBackdropEvents();\n unbindKeyboardEvents();\n }\n\n if (modalScope) {\n modalScope.$destroy();\n modalScope = null;\n }\n\n if (modalElement) {\n modalElement.remove();\n modalElement = $modal.$element = null;\n }\n }\n\n return $modal;\n\n }\n\n // Helper functions\n\n function safeDigest (scope) {\n /* eslint-disable no-unused-expressions */\n scope.$$phase || (scope.$root && scope.$root.$$phase) || scope.$digest();\n /* eslint-enable no-unused-expressions */\n }\n\n function findElement (query, element) {\n return angular.element((element || document).querySelectorAll(query));\n }\n\n return ModalFactory;\n\n };\n\n })\n\n .directive('bsModal', function ($window, $sce, $parse, $modal) {\n\n return {\n restrict: 'EAC',\n scope: true,\n link: function postLink (scope, element, attr, transclusion) {\n\n // Directive options\n var options = {scope: scope, element: element, show: false};\n angular.forEach(['template', 'templateUrl', 'controller', 'controllerAs', 'contentTemplate', 'placement', 'backdrop', 'keyboard', 'html', 'container', 'animation', 'backdropAnimation', 'id', 'prefixEvent', 'prefixClass', 'customClass', 'modalClass', 'size', 'zIndex'], function (key) {\n if (angular.isDefined(attr[key])) options[key] = attr[key];\n });\n\n // Options: alias modalClass to customClass\n if (options.modalClass) {\n options.customClass = options.modalClass;\n }\n\n // use string regex match boolean attr falsy values, leave truthy values be\n var falseValueRegExp = /^(false|0|)$/i;\n angular.forEach(['backdrop', 'keyboard', 'html', 'container'], function (key) {\n if (angular.isDefined(attr[key]) && falseValueRegExp.test(attr[key])) options[key] = false;\n });\n\n // bind functions from the attrs to the show and hide events\n angular.forEach(['onBeforeShow', 'onShow', 'onBeforeHide', 'onHide'], function (key) {\n var bsKey = 'bs' + key.charAt(0).toUpperCase() + key.slice(1);\n if (angular.isDefined(attr[bsKey])) {\n options[key] = scope.$eval(attr[bsKey]);\n }\n });\n\n // Support scope as data-attrs\n angular.forEach(['title', 'content'], function (key) {\n if (attr[key]) {\n attr.$observe(key, function (newValue, oldValue) {\n scope[key] = $sce.trustAsHtml(newValue);\n });\n }\n });\n\n // Support scope as an object\n if (attr.bsModal) {\n scope.$watch(attr.bsModal, function (newValue, oldValue) {\n if (angular.isObject(newValue)) {\n angular.extend(scope, newValue);\n } else {\n scope.content = newValue;\n }\n }, true);\n }\n\n // Initialize modal\n var modal = $modal(options);\n\n // Trigger\n element.on(attr.trigger || 'click', modal.toggle);\n\n // Garbage collection\n scope.$on('$destroy', function () {\n if (modal) modal.destroy();\n options = null;\n modal = null;\n });\n\n }\n };\n\n });\n","'use strict';\n\nif (angular.version.minor < 3 && angular.version.dot < 14) {\n angular.module('ng')\n\n .factory('$$rAF', function ($window, $timeout) {\n\n var requestAnimationFrame = $window.requestAnimationFrame ||\n $window.webkitRequestAnimationFrame ||\n $window.mozRequestAnimationFrame;\n\n var cancelAnimationFrame = $window.cancelAnimationFrame ||\n $window.webkitCancelAnimationFrame ||\n $window.mozCancelAnimationFrame ||\n $window.webkitCancelRequestAnimationFrame;\n\n var rafSupported = !!requestAnimationFrame;\n var raf = rafSupported ?\n function (fn) {\n var id = requestAnimationFrame(fn);\n return function () {\n cancelAnimationFrame(id);\n };\n } :\n function (fn) {\n var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666\n return function () {\n $timeout.cancel(timer);\n };\n };\n\n raf.supported = rafSupported;\n\n return raf;\n\n });\n}\n","'use strict';\n\nangular.module('mgcrea.ngStrap.helpers.parseOptions', [])\n\n .provider('$parseOptions', function () {\n\n var defaults = this.defaults = {\n regexp: /^\\s*(.*?)(?:\\s+as\\s+(.*?))?(?:\\s+group\\s+by\\s+(.*))?\\s+for\\s+(?:([\\$\\w][\\$\\w]*)|(?:\\(\\s*([\\$\\w][\\$\\w]*)\\s*,\\s*([\\$\\w][\\$\\w]*)\\s*\\)))\\s+in\\s+(.*?)(?:\\s+track\\s+by\\s+(.*?))?$/\n };\n\n this.$get = function ($parse, $q) {\n\n function ParseOptionsFactory (attr, config) {\n\n var $parseOptions = {};\n\n // Common vars\n var options = angular.extend({}, defaults, config);\n $parseOptions.$values = [];\n\n // Private vars\n var match;\n var displayFn;\n var valueName;\n /* eslint-disable no-unused-vars */\n var keyName;\n var groupByFn;\n /* eslint-enable no-unused-vars */\n var valueFn;\n var valuesFn;\n\n $parseOptions.init = function () {\n $parseOptions.$match = match = attr.match(options.regexp);\n displayFn = $parse(match[2] || match[1]);\n valueName = match[4] || match[6];\n keyName = match[5];\n groupByFn = $parse(match[3] || '');\n valueFn = $parse(match[2] ? match[1] : valueName);\n valuesFn = $parse(match[7]);\n };\n\n $parseOptions.valuesFn = function (scope, controller) {\n return $q.when(valuesFn(scope, controller))\n .then(function (values) {\n if (!angular.isArray(values)) {\n values = [];\n }\n $parseOptions.$values = values.length ? parseValues(values, scope) : [];\n return $parseOptions.$values;\n });\n };\n\n $parseOptions.displayValue = function (modelValue) {\n var scope = {};\n scope[valueName] = modelValue;\n return displayFn(scope);\n };\n\n // Private functions\n\n function parseValues (values, scope) {\n return values.map(function (match, index) {\n var locals = {};\n var label;\n var value;\n locals[valueName] = match;\n label = displayFn(scope, locals);\n value = valueFn(scope, locals);\n return {label: label, value: value, index: index};\n });\n }\n\n $parseOptions.init();\n return $parseOptions;\n\n }\n\n return ParseOptionsFactory;\n\n };\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.helpers.dimensions', [])\n\n .factory('dimensions', function () {\n\n var fn = {};\n\n /**\n * Test the element nodeName\n * @param element\n * @param name\n */\n var nodeName = fn.nodeName = function (element, name) {\n return element.nodeName && element.nodeName.toLowerCase() === name.toLowerCase();\n };\n\n /**\n * Returns the element computed style\n * @param element\n * @param prop\n * @param extra\n */\n fn.css = function (element, prop, extra) {\n var value;\n if (element.currentStyle) { // IE\n value = element.currentStyle[prop];\n } else if (window.getComputedStyle) {\n value = window.getComputedStyle(element)[prop];\n } else {\n value = element.style[prop];\n }\n return extra === true ? parseFloat(value) || 0 : value;\n };\n\n /**\n * Provides read-only equivalent of jQuery's offset function:\n * @required-by bootstrap-tooltip, bootstrap-affix\n * @url http://api.jquery.com/offset/\n * @param element\n */\n fn.offset = function (element) {\n var boxRect = element.getBoundingClientRect();\n var docElement = element.ownerDocument;\n return {\n width: boxRect.width || element.offsetWidth,\n height: boxRect.height || element.offsetHeight,\n top: boxRect.top + (window.pageYOffset || docElement.documentElement.scrollTop) - (docElement.documentElement.clientTop || 0),\n left: boxRect.left + (window.pageXOffset || docElement.documentElement.scrollLeft) - (docElement.documentElement.clientLeft || 0)\n };\n };\n\n /**\n * Provides set equivalent of jQuery's offset function:\n * @required-by bootstrap-tooltip\n * @url http://api.jquery.com/offset/\n * @param element\n * @param options\n * @param i\n */\n fn.setOffset = function (element, options, i) {\n var curPosition;\n var curLeft;\n var curCSSTop;\n var curTop;\n var curOffset;\n var curCSSLeft;\n var calculatePosition;\n var position = fn.css(element, 'position');\n var curElem = angular.element(element);\n var props = {};\n\n // Set position first, in-case top/left are set even on static elem\n if (position === 'static') {\n element.style.position = 'relative';\n }\n\n curOffset = fn.offset(element);\n curCSSTop = fn.css(element, 'top');\n curCSSLeft = fn.css(element, 'left');\n calculatePosition = (position === 'absolute' || position === 'fixed') &&\n (curCSSTop + curCSSLeft).indexOf('auto') > -1;\n\n // Need to be able to calculate position if either\n // top or left is auto and position is either absolute or fixed\n if (calculatePosition) {\n curPosition = fn.position(element);\n curTop = curPosition.top;\n curLeft = curPosition.left;\n } else {\n curTop = parseFloat(curCSSTop) || 0;\n curLeft = parseFloat(curCSSLeft) || 0;\n }\n\n if (angular.isFunction(options)) {\n options = options.call(element, i, curOffset);\n }\n\n if (options.top !== null) {\n props.top = (options.top - curOffset.top) + curTop;\n }\n if (options.left !== null) {\n props.left = (options.left - curOffset.left) + curLeft;\n }\n\n if ('using' in options) {\n options.using.call(curElem, props);\n } else {\n curElem.css({\n top: props.top + 'px',\n left: props.left + 'px'\n });\n }\n };\n\n /**\n * Provides read-only equivalent of jQuery's position function\n * @required-by bootstrap-tooltip, bootstrap-affix\n * @url http://api.jquery.com/offset/\n * @param element\n */\n fn.position = function (element) {\n\n var offsetParentRect = {top: 0, left: 0};\n var offsetParentEl;\n var offset;\n\n // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent\n if (fn.css(element, 'position') === 'fixed') {\n\n // We assume that getBoundingClientRect is available when computed position is fixed\n offset = element.getBoundingClientRect();\n\n } else {\n\n // Get *real* offsetParentEl\n offsetParentEl = offsetParentElement(element);\n\n // Get correct offsets\n offset = fn.offset(element);\n if (!nodeName(offsetParentEl, 'html')) {\n offsetParentRect = fn.offset(offsetParentEl);\n }\n\n // Add offsetParent borders\n offsetParentRect.top += fn.css(offsetParentEl, 'borderTopWidth', true);\n offsetParentRect.left += fn.css(offsetParentEl, 'borderLeftWidth', true);\n }\n\n // Subtract parent offsets and element margins\n return {\n width: element.offsetWidth,\n height: element.offsetHeight,\n top: offset.top - offsetParentRect.top - fn.css(element, 'marginTop', true),\n left: offset.left - offsetParentRect.left - fn.css(element, 'marginLeft', true)\n };\n\n };\n\n /**\n * Returns the closest, non-statically positioned offsetParent of a given element\n * @required-by fn.position\n * @param element\n */\n function offsetParentElement (element) {\n var docElement = element.ownerDocument;\n var offsetParent = element.offsetParent || docElement;\n if (nodeName(offsetParent, '#document')) return docElement.documentElement;\n while (offsetParent && !nodeName(offsetParent, 'html') && fn.css(offsetParent, 'position') === 'static') {\n offsetParent = offsetParent.offsetParent;\n }\n return offsetParent || docElement.documentElement;\n }\n\n /**\n * Provides equivalent of jQuery's height function\n * @required-by bootstrap-affix\n * @url http://api.jquery.com/height/\n * @param element\n * @param outer\n */\n fn.height = function (element, outer) {\n var value = element.offsetHeight;\n if (outer) {\n value += fn.css(element, 'marginTop', true) + fn.css(element, 'marginBottom', true);\n } else {\n value -= fn.css(element, 'paddingTop', true) + fn.css(element, 'paddingBottom', true) + fn.css(element, 'borderTopWidth', true) + fn.css(element, 'borderBottomWidth', true);\n }\n return value;\n };\n\n /**\n * Provides equivalent of jQuery's width function\n * @required-by bootstrap-affix\n * @url http://api.jquery.com/width/\n * @param element\n * @param outer\n */\n fn.width = function (element, outer) {\n var value = element.offsetWidth;\n if (outer) {\n value += fn.css(element, 'marginLeft', true) + fn.css(element, 'marginRight', true);\n } else {\n value -= fn.css(element, 'paddingLeft', true) + fn.css(element, 'paddingRight', true) + fn.css(element, 'borderLeftWidth', true) + fn.css(element, 'borderRightWidth', true);\n }\n return value;\n };\n\n return fn;\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.helpers.debounce', [])\n\n// @source jashkenas/underscore\n// @url https://github.com/jashkenas/underscore/blob/1.5.2/underscore.js#L693\n.factory('debounce', function ($timeout) {\n return function (func, wait, immediate) {\n var timeout = null;\n return function () {\n var context = this;\n var args = arguments;\n var callNow = immediate && !timeout;\n if (timeout) {\n $timeout.cancel(timeout);\n }\n timeout = $timeout(function later () {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n }, wait, false);\n if (callNow) {\n func.apply(context, args);\n }\n return timeout;\n };\n };\n})\n\n\n// @source jashkenas/underscore\n// @url https://github.com/jashkenas/underscore/blob/1.5.2/underscore.js#L661\n.factory('throttle', function ($timeout) {\n return function (func, wait, options) {\n var timeout = null;\n if (!options) options = {};\n return function () {\n var context = this;\n var args = arguments;\n if (!timeout) {\n if (options.leading !== false) {\n func.apply(context, args);\n }\n timeout = $timeout(function later () {\n timeout = null;\n if (options.trailing !== false) {\n func.apply(context, args);\n }\n }, wait, false);\n }\n };\n };\n});\n","'use strict';\n\nangular.module('mgcrea.ngStrap.helpers.dateParser', [])\n\n.provider('$dateParser', function ($localeProvider) {\n\n // define a custom ParseDate object to use instead of native Date\n // to avoid date values wrapping when setting date component values\n function ParseDate () {\n this.year = 1970;\n this.month = 0;\n this.day = 1;\n this.hours = 0;\n this.minutes = 0;\n this.seconds = 0;\n this.milliseconds = 0;\n }\n\n ParseDate.prototype.setMilliseconds = function (value) { this.milliseconds = value; };\n ParseDate.prototype.setSeconds = function (value) { this.seconds = value; };\n ParseDate.prototype.setMinutes = function (value) { this.minutes = value; };\n ParseDate.prototype.setHours = function (value) { this.hours = value; };\n ParseDate.prototype.getHours = function () { return this.hours; };\n ParseDate.prototype.setDate = function (value) { this.day = value; };\n ParseDate.prototype.setMonth = function (value) { this.month = value; };\n ParseDate.prototype.setFullYear = function (value) { this.year = value; };\n ParseDate.prototype.fromDate = function (value) {\n this.year = value.getFullYear();\n this.month = value.getMonth();\n this.day = value.getDate();\n this.hours = value.getHours();\n this.minutes = value.getMinutes();\n this.seconds = value.getSeconds();\n this.milliseconds = value.getMilliseconds();\n return this;\n };\n\n ParseDate.prototype.toDate = function () {\n return new Date(this.year, this.month, this.day, this.hours, this.minutes, this.seconds, this.milliseconds);\n };\n\n var proto = ParseDate.prototype;\n\n function noop () {\n }\n\n function isNumeric (n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function indexOfCaseInsensitive (array, value) {\n var len = array.length;\n var str = value.toString().toLowerCase();\n for (var i = 0; i < len; i++) {\n if (array[i].toLowerCase() === str) { return i; }\n }\n return -1; // Return -1 per the \"Array.indexOf()\" method.\n }\n\n var defaults = this.defaults = {\n format: 'shortDate',\n strict: false\n };\n\n this.$get = function ($locale, dateFilter) {\n\n var DateParserFactory = function (config) {\n\n var options = angular.extend({}, defaults, config);\n\n var $dateParser = {};\n\n /* eslint-disable key-spacing, quote-props */\n var regExpMap = {\n 'sss' : '[0-9]{3}',\n 'ss' : '[0-5][0-9]',\n 's' : options.strict ? '[1-5]?[0-9]' : '[0-9]|[0-5][0-9]',\n 'mm' : '[0-5][0-9]',\n 'm' : options.strict ? '[1-5]?[0-9]' : '[0-9]|[0-5][0-9]',\n 'HH' : '[01][0-9]|2[0-3]',\n 'H' : options.strict ? '1?[0-9]|2[0-3]' : '[01]?[0-9]|2[0-3]',\n 'hh' : '[0][1-9]|[1][012]',\n 'h' : options.strict ? '[1-9]|1[012]' : '0?[1-9]|1[012]',\n 'a' : 'AM|PM',\n 'EEEE' : $locale.DATETIME_FORMATS.DAY.join('|'),\n 'EEE' : $locale.DATETIME_FORMATS.SHORTDAY.join('|'),\n 'dd' : '0[1-9]|[12][0-9]|3[01]',\n 'd' : options.strict ? '[1-9]|[1-2][0-9]|3[01]' : '0?[1-9]|[1-2][0-9]|3[01]',\n 'MMMM' : $locale.DATETIME_FORMATS.MONTH.join('|'),\n 'MMM' : $locale.DATETIME_FORMATS.SHORTMONTH.join('|'),\n 'MM' : '0[1-9]|1[012]',\n 'M' : options.strict ? '[1-9]|1[012]' : '0?[1-9]|1[012]',\n 'yyyy' : '[1]{1}[0-9]{3}|[2]{1}[0-9]{3}',\n 'yy' : '[0-9]{2}',\n 'y' : options.strict ? '-?(0|[1-9][0-9]{0,3})' : '-?0*[0-9]{1,4}'\n };\n\n var setFnMap = {\n 'sss' : proto.setMilliseconds,\n 'ss' : proto.setSeconds,\n 's' : proto.setSeconds,\n 'mm' : proto.setMinutes,\n 'm' : proto.setMinutes,\n 'HH' : proto.setHours,\n 'H' : proto.setHours,\n 'hh' : proto.setHours,\n 'h' : proto.setHours,\n 'EEEE' : noop,\n 'EEE' : noop,\n 'dd' : proto.setDate,\n 'd' : proto.setDate,\n 'a' : function (value) { var hours = this.getHours() % 12; return this.setHours(value.match(/pm/i) ? hours + 12 : hours); },\n 'MMMM' : function (value) { return this.setMonth(indexOfCaseInsensitive($locale.DATETIME_FORMATS.MONTH, value)); },\n 'MMM' : function (value) { return this.setMonth(indexOfCaseInsensitive($locale.DATETIME_FORMATS.SHORTMONTH, value)); },\n 'MM' : function (value) { return this.setMonth(1 * value - 1); },\n 'M' : function (value) { return this.setMonth(1 * value - 1); },\n 'yyyy' : proto.setFullYear,\n 'yy' : function (value) { return this.setFullYear(2000 + 1 * value); },\n 'y' : function (value) { return (1 * value <= 50 && value.length === 2) ? this.setFullYear(2000 + 1 * value) : this.setFullYear(1 * value); }\n };\n /* eslint-enable key-spacing, quote-props */\n\n var regex;\n var setMap;\n\n $dateParser.init = function () {\n $dateParser.$format = $locale.DATETIME_FORMATS[options.format] || options.format;\n regex = regExpForFormat($dateParser.$format);\n setMap = setMapForFormat($dateParser.$format);\n };\n\n $dateParser.isValid = function (date) {\n if (angular.isDate(date)) return !isNaN(date.getTime());\n return regex.test(date);\n };\n\n $dateParser.parse = function (value, baseDate, format, timezone) {\n // check for date format special names\n if (format) format = $locale.DATETIME_FORMATS[format] || format;\n if (angular.isDate(value)) value = dateFilter(value, format || $dateParser.$format, timezone);\n var formatRegex = format ? regExpForFormat(format) : regex;\n var formatSetMap = format ? setMapForFormat(format) : setMap;\n var matches = formatRegex.exec(value);\n if (!matches) return false;\n // use custom ParseDate object to set parsed values\n var date = baseDate && !isNaN(baseDate.getTime()) ? new ParseDate().fromDate(baseDate) : new ParseDate().fromDate(new Date(1970, 0, 1, 0));\n for (var i = 0; i < matches.length - 1; i++) {\n if (formatSetMap[i]) formatSetMap[i].call(date, matches[i + 1]);\n }\n // convert back to native Date object\n var newDate = date.toDate();\n\n // check new native Date object for day values overflow\n if (parseInt(date.day, 10) !== newDate.getDate()) {\n return false;\n }\n\n return newDate;\n };\n\n $dateParser.getDateForAttribute = function (key, value) {\n var date;\n\n if (value === 'today') {\n var today = new Date();\n date = new Date(today.getFullYear(), today.getMonth(), today.getDate() + (key === 'maxDate' ? 1 : 0), 0, 0, 0, (key === 'minDate' ? 0 : -1));\n } else if (angular.isString(value) && value.match(/^\".+\"$/)) { // Support {{ dateObj }}\n date = new Date(value.substr(1, value.length - 2));\n } else if (isNumeric(value)) {\n date = new Date(parseInt(value, 10));\n } else if (angular.isString(value) && value.length === 0) { // Reset date\n date = key === 'minDate' ? -Infinity : +Infinity;\n } else {\n date = new Date(value);\n }\n\n return date;\n };\n\n $dateParser.getTimeForAttribute = function (key, value) {\n var time;\n\n if (value === 'now') {\n time = new Date().setFullYear(1970, 0, 1);\n } else if (angular.isString(value) && value.match(/^\".+\"$/)) {\n time = new Date(value.substr(1, value.length - 2)).setFullYear(1970, 0, 1);\n } else if (isNumeric(value)) {\n time = new Date(parseInt(value, 10)).setFullYear(1970, 0, 1);\n } else if (angular.isString(value) && value.length === 0) { // Reset time\n time = key === 'minTime' ? -Infinity : +Infinity;\n } else {\n time = $dateParser.parse(value, new Date(1970, 0, 1, 0));\n }\n\n return time;\n };\n\n /* Handle switch to/from daylight saving.\n * Hours may be non-zero on daylight saving cut-over:\n * > 12 when midnight changeover, but then cannot generate\n * midnight datetime, so jump to 1AM, otherwise reset.\n * @param date (Date) the date to check\n * @return (Date) the corrected date\n *\n * __ copied from jquery ui datepicker __\n */\n $dateParser.daylightSavingAdjust = function (date) {\n if (!date) {\n return null;\n }\n date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n return date;\n };\n\n /* Correct the date for timezone offset.\n * @param date (Date) the date to adjust\n * @param timezone (string) the timezone to adjust for\n * @param undo (boolean) to add or subtract timezone offset\n * @return (Date) the corrected date\n */\n $dateParser.timezoneOffsetAdjust = function (date, timezone, undo) {\n if (!date) {\n return null;\n }\n // Right now, only 'UTC' is supported.\n if (timezone && timezone === 'UTC') {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + (undo ? -1 : 1) * date.getTimezoneOffset());\n }\n return date;\n };\n\n // Private functions\n\n function regExpForFormat (format) {\n // `format` string can contain literal values.\n // These need to be escaped by surrounding with\n // single quotes (e.g. `\"h 'in the morning'\"`).\n // In order to output a single quote, escape it - i.e.,\n // two single quotes in a sequence (e.g. `\"h 'o''clock'\"`).\n\n var re = buildDateAbstractRegex(format);\n return buildDateParseRegex(re);\n }\n\n function buildDateAbstractRegex (format) {\n var escapedFormat = escapeReservedSymbols(format);\n var escapedLiteralFormat = escapedFormat.replace(/''/g, '\\\\\\'');\n var literalRegex = /('(?:\\\\'|.)*?')/;\n var formatParts = escapedLiteralFormat.split(literalRegex);\n var dateElements = Object.keys(regExpMap);\n var dateRegexParts = [];\n\n angular.forEach(formatParts, function (part) {\n if (isFormatStringLiteral(part)) {\n part = trimLiteralEscapeChars(part);\n } else {\n // Abstract replaces to avoid collisions\n for (var i = 0; i < dateElements.length; i++) {\n part = part.split(dateElements[i]).join('${' + i + '}');\n }\n }\n dateRegexParts.push(part);\n });\n\n return dateRegexParts.join('');\n }\n\n function escapeReservedSymbols (text) {\n return text.replace(/\\\\/g, '[\\\\\\\\]')\n .replace(/-/g, '[-]')\n .replace(/\\./g, '[.]')\n .replace(/\\*/g, '[*]')\n .replace(/\\+/g, '[+]')\n .replace(/\\?/g, '[?]')\n .replace(/\\$/g, '[$]')\n .replace(/\\^/g, '[^]')\n .replace(/\\//g, '[/]')\n .replace(/\\\\s/g, '[\\\\s]');\n }\n\n function isFormatStringLiteral (text) {\n return /^'.*'$/.test(text);\n }\n\n function trimLiteralEscapeChars (text) {\n return text.replace(/^'(.*)'$/, '$1');\n }\n\n function buildDateParseRegex (abstractRegex) {\n var dateElements = Object.keys(regExpMap);\n var re = abstractRegex;\n\n // Replace abstracted values\n for (var i = 0; i < dateElements.length; i++) {\n re = re.split('${' + i + '}').join('(' + regExpMap[dateElements[i]] + ')');\n }\n\n return new RegExp('^' + re + '$', ['i']);\n }\n\n function setMapForFormat (format) {\n var re = buildDateAbstractRegex(format);\n return buildDateParseValuesMap(re);\n }\n\n function buildDateParseValuesMap (abstractRegex) {\n var dateElements = Object.keys(regExpMap);\n var valuesRegex = new RegExp('\\\\${(\\\\d+)}', 'g');\n var valuesMatch;\n var keyIndex;\n var valueKey;\n var valueFunction;\n var valuesFunctionMap = [];\n\n /* eslint-disable no-cond-assign */\n while ((valuesMatch = valuesRegex.exec(abstractRegex)) !== null) {\n keyIndex = valuesMatch[1];\n valueKey = dateElements[keyIndex];\n valueFunction = setFnMap[valueKey];\n\n valuesFunctionMap.push(valueFunction);\n }\n\n return valuesFunctionMap;\n }\n\n $dateParser.init();\n return $dateParser;\n\n };\n\n return DateParserFactory;\n\n };\n\n});\n","'use strict';\n\nangular.module('mgcrea.ngStrap.helpers.dateFormatter', [])\n\n .service('$dateFormatter', function ($locale, dateFilter) {\n\n // The unused `lang` arguments are on purpose. The default implementation does not\n // use them and it always uses the locale loaded into the `$locale` service.\n // Custom implementations might use it, thus allowing different directives to\n // have different languages.\n\n this.getDefaultLocale = function () {\n return $locale.id;\n };\n\n // Format is either a data format name, e.g. \"shortTime\" or \"fullDate\", or a date format\n // Return either the corresponding date format or the given date format.\n this.getDatetimeFormat = function (format, lang) {\n return $locale.DATETIME_FORMATS[format] || format;\n };\n\n this.weekdaysShort = function (lang) {\n return $locale.DATETIME_FORMATS.SHORTDAY;\n };\n\n function splitTimeFormat (format) {\n return /(h+)([:\\.])?(m+)([:\\.])?(s*)[ ]?(a?)/i.exec(format).slice(1);\n }\n\n // h:mm a => h\n this.hoursFormat = function (timeFormat) {\n return splitTimeFormat(timeFormat)[0];\n };\n\n // h:mm a => mm\n this.minutesFormat = function (timeFormat) {\n return splitTimeFormat(timeFormat)[2];\n };\n\n // h:mm:ss a => ss\n this.secondsFormat = function (timeFormat) {\n return splitTimeFormat(timeFormat)[4];\n };\n\n // h:mm a => :\n this.timeSeparator = function (timeFormat) {\n return splitTimeFormat(timeFormat)[1];\n };\n\n // h:mm:ss a => true, h:mm a => false\n this.showSeconds = function (timeFormat) {\n return !!splitTimeFormat(timeFormat)[4];\n };\n\n // h:mm a => true, H.mm => false\n this.showAM = function (timeFormat) {\n return !!splitTimeFormat(timeFormat)[5];\n };\n\n this.formatDate = function (date, format, lang, timezone) {\n return dateFilter(date, format, timezone);\n };\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.button', [])\n\n .provider('$button', function () {\n\n var defaults = this.defaults = {\n activeClass: 'active',\n toggleEvent: 'click'\n };\n\n this.$get = function () {\n return {defaults: defaults};\n };\n\n })\n\n .directive('bsCheckboxGroup', function () {\n\n return {\n restrict: 'A',\n require: 'ngModel',\n compile: function postLink (element, attr) {\n element.attr('data-toggle', 'buttons');\n element.removeAttr('ng-model');\n var children = element[0].querySelectorAll('input[type=\"checkbox\"]');\n angular.forEach(children, function (child) {\n var childEl = angular.element(child);\n childEl.attr('bs-checkbox', '');\n childEl.attr('ng-model', attr.ngModel + '.' + childEl.attr('value'));\n });\n }\n\n };\n\n })\n\n .directive('bsCheckbox', function ($button, $$rAF) {\n\n var defaults = $button.defaults;\n var constantValueRegExp = /^(true|false|\\d+)$/;\n\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function postLink (scope, element, attr, controller) {\n\n var options = defaults;\n\n // Support label > input[type=\"checkbox\"]\n var isInput = element[0].nodeName === 'INPUT';\n var activeElement = isInput ? element.parent() : element;\n\n var trueValue = angular.isDefined(attr.trueValue) ? attr.trueValue : true;\n if (constantValueRegExp.test(attr.trueValue)) {\n trueValue = scope.$eval(attr.trueValue);\n }\n var falseValue = angular.isDefined(attr.falseValue) ? attr.falseValue : false;\n if (constantValueRegExp.test(attr.falseValue)) {\n falseValue = scope.$eval(attr.falseValue);\n }\n\n // Parse exotic values\n var hasExoticValues = typeof trueValue !== 'boolean' || typeof falseValue !== 'boolean';\n if (hasExoticValues) {\n controller.$parsers.push(function (viewValue) {\n // console.warn('$parser', element.attr('ng-model'), 'viewValue', viewValue);\n return viewValue ? trueValue : falseValue;\n });\n // modelValue -> $formatters -> viewValue\n controller.$formatters.push(function (modelValue) {\n // console.warn('$formatter(\"%s\"): modelValue=%o (%o)', element.attr('ng-model'), modelValue, typeof modelValue);\n return angular.equals(modelValue, trueValue);\n });\n }\n\n // model -> view\n controller.$render = function () {\n // console.warn('$render', element.attr('ng-model'), 'controller.$modelValue', typeof controller.$modelValue, controller.$modelValue, 'controller.$viewValue', typeof controller.$viewValue, controller.$viewValue);\n var isActive = !!controller.$viewValue;\n $$rAF(function () {\n if (isInput) element[0].checked = isActive;\n activeElement.toggleClass(options.activeClass, isActive);\n });\n };\n\n // view -> model\n element.bind(options.toggleEvent, function () {\n scope.$apply(function () {\n // console.warn('!click', element.attr('ng-model'), 'controller.$viewValue', typeof controller.$viewValue, controller.$viewValue, 'controller.$modelValue', typeof controller.$modelValue, controller.$modelValue);\n if (!isInput) {\n controller.$setViewValue(!activeElement.hasClass('active'));\n }\n controller.$render();\n });\n });\n\n }\n\n };\n\n })\n\n .directive('bsRadioGroup', function () {\n\n return {\n restrict: 'A',\n require: 'ngModel',\n compile: function postLink (element, attr) {\n element.attr('data-toggle', 'buttons');\n element.removeAttr('ng-model');\n var children = element[0].querySelectorAll('input[type=\"radio\"]');\n angular.forEach(children, function (child) {\n angular.element(child).attr('bs-radio', '');\n angular.element(child).attr('ng-model', attr.ngModel);\n });\n }\n\n };\n\n })\n\n .directive('bsRadio', function ($button, $$rAF) {\n\n var defaults = $button.defaults;\n var constantValueRegExp = /^(true|false|\\d+)$/;\n\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function postLink (scope, element, attr, controller) {\n\n var options = defaults;\n\n // Support `label > input[type=\"radio\"]` markup\n var isInput = element[0].nodeName === 'INPUT';\n var activeElement = isInput ? element.parent() : element;\n\n var value;\n attr.$observe('value', function (v) {\n if (typeof v !== 'boolean' && constantValueRegExp.test(v)) {\n value = scope.$eval(v);\n } else {\n value = v;\n }\n controller.$render();\n });\n\n // model -> view\n controller.$render = function () {\n // console.warn('$render', element.attr('value'), 'controller.$modelValue', typeof controller.$modelValue, controller.$modelValue, 'controller.$viewValue', typeof controller.$viewValue, controller.$viewValue);\n var isActive = angular.equals(controller.$viewValue, value);\n $$rAF(function () {\n if (isInput) element[0].checked = isActive;\n activeElement.toggleClass(options.activeClass, isActive);\n });\n };\n\n // view -> model\n element.bind(options.toggleEvent, function () {\n scope.$apply(function () {\n // console.warn('!click', element.attr('value'), 'controller.$viewValue', typeof controller.$viewValue, controller.$viewValue, 'controller.$modelValue', typeof controller.$modelValue, controller.$modelValue);\n controller.$setViewValue(value);\n controller.$render();\n });\n });\n\n }\n\n };\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.collapse', [])\n\n .provider('$collapse', function () {\n\n var defaults = this.defaults = {\n animation: 'am-collapse',\n disallowToggle: false,\n activeClass: 'in',\n startCollapsed: false,\n allowMultiple: false\n };\n\n var controller = this.controller = function ($scope, $element, $attrs) {\n var self = this;\n\n // Attributes options\n self.$options = angular.copy(defaults);\n angular.forEach(['animation', 'disallowToggle', 'activeClass', 'startCollapsed', 'allowMultiple'], function (key) {\n if (angular.isDefined($attrs[key])) self.$options[key] = $attrs[key];\n });\n\n // use string regex match boolean attr falsy values, leave truthy values be\n var falseValueRegExp = /^(false|0|)$/i;\n angular.forEach(['disallowToggle', 'startCollapsed', 'allowMultiple'], function (key) {\n if (angular.isDefined($attrs[key]) && falseValueRegExp.test($attrs[key])) {\n self.$options[key] = false;\n }\n });\n\n self.$toggles = [];\n self.$targets = [];\n\n self.$viewChangeListeners = [];\n\n self.$registerToggle = function (element) {\n self.$toggles.push(element);\n };\n self.$registerTarget = function (element) {\n self.$targets.push(element);\n };\n\n self.$unregisterToggle = function (element) {\n var index = self.$toggles.indexOf(element);\n // remove toggle from $toggles array\n self.$toggles.splice(index, 1);\n };\n self.$unregisterTarget = function (element) {\n var index = self.$targets.indexOf(element);\n\n // remove element from $targets array\n self.$targets.splice(index, 1);\n\n if (self.$options.allowMultiple) {\n // remove target index from $active array values\n deactivateItem(element);\n }\n\n // fix active item indexes\n fixActiveItemIndexes(index);\n\n self.$viewChangeListeners.forEach(function (fn) {\n fn();\n });\n };\n\n // use array to store all the currently open panels\n self.$targets.$active = !self.$options.startCollapsed ? [0] : [];\n self.$setActive = $scope.$setActive = function (value) {\n if (angular.isArray(value)) {\n self.$targets.$active = value;\n } else if (!self.$options.disallowToggle && isActive(value)) {\n deactivateItem(value);\n } else {\n activateItem(value);\n }\n\n self.$viewChangeListeners.forEach(function (fn) {\n fn();\n });\n };\n\n self.$activeIndexes = function () {\n if (self.$options.allowMultiple) {\n return self.$targets.$active;\n }\n return self.$targets.$active.length === 1 ? self.$targets.$active[0] : -1;\n };\n\n function fixActiveItemIndexes (index) {\n // item with index was removed, so we\n // need to adjust other items index values\n var activeIndexes = self.$targets.$active;\n for (var i = 0; i < activeIndexes.length; i++) {\n if (index < activeIndexes[i]) {\n activeIndexes[i] = activeIndexes[i] - 1;\n }\n\n // the last item is active, so we need to\n // adjust its index\n if (activeIndexes[i] === self.$targets.length) {\n activeIndexes[i] = self.$targets.length - 1;\n }\n }\n }\n\n function isActive (value) {\n var activeItems = self.$targets.$active;\n return activeItems.indexOf(value) !== -1;\n }\n\n function deactivateItem (value) {\n var index = self.$targets.$active.indexOf(value);\n if (index !== -1) {\n self.$targets.$active.splice(index, 1);\n }\n }\n\n function activateItem (value) {\n if (!self.$options.allowMultiple) {\n // remove current selected item\n self.$targets.$active.splice(0, 1);\n }\n\n if (self.$targets.$active.indexOf(value) === -1) {\n self.$targets.$active.push(value);\n }\n }\n\n };\n\n this.$get = function () {\n var $collapse = {};\n $collapse.defaults = defaults;\n $collapse.controller = controller;\n return $collapse;\n };\n\n })\n\n .directive('bsCollapse', function ($window, $animate, $collapse) {\n\n return {\n require: ['?ngModel', 'bsCollapse'],\n controller: ['$scope', '$element', '$attrs', $collapse.controller],\n link: function postLink (scope, element, attrs, controllers) {\n\n var ngModelCtrl = controllers[0];\n var bsCollapseCtrl = controllers[1];\n\n if (ngModelCtrl) {\n\n // Update the modelValue following\n bsCollapseCtrl.$viewChangeListeners.push(function () {\n ngModelCtrl.$setViewValue(bsCollapseCtrl.$activeIndexes());\n });\n\n // modelValue -> $formatters -> viewValue\n ngModelCtrl.$formatters.push(function (modelValue) {\n // console.warn('$formatter(\"%s\"): modelValue=%o (%o)', element.attr('ng-model'), modelValue, typeof modelValue);\n if (angular.isArray(modelValue)) {\n // model value is an array, so just replace\n // the active items directly\n bsCollapseCtrl.$setActive(modelValue);\n } else {\n var activeIndexes = bsCollapseCtrl.$activeIndexes();\n\n if (angular.isArray(activeIndexes)) {\n // we have an array of selected indexes\n if (activeIndexes.indexOf(modelValue * 1) === -1) {\n // item with modelValue index is not active\n bsCollapseCtrl.$setActive(modelValue * 1);\n }\n } else if (activeIndexes !== modelValue * 1) {\n bsCollapseCtrl.$setActive(modelValue * 1);\n }\n }\n return modelValue;\n });\n\n }\n\n }\n };\n\n })\n\n .directive('bsCollapseToggle', function () {\n\n return {\n require: ['^?ngModel', '^bsCollapse'],\n link: function postLink (scope, element, attrs, controllers) {\n\n // var ngModelCtrl = controllers[0];\n var bsCollapseCtrl = controllers[1];\n\n // Add base attr\n element.attr('data-toggle', 'collapse');\n\n // Push pane to parent bsCollapse controller\n bsCollapseCtrl.$registerToggle(element);\n\n // remove toggle from collapse controller when toggle is destroyed\n scope.$on('$destroy', function () {\n bsCollapseCtrl.$unregisterToggle(element);\n });\n\n element.on('click', function () {\n if (!attrs.disabled) {\n var index = attrs.bsCollapseToggle && attrs.bsCollapseToggle !== 'bs-collapse-toggle' ? attrs.bsCollapseToggle : bsCollapseCtrl.$toggles.indexOf(element);\n bsCollapseCtrl.$setActive(index * 1);\n scope.$apply();\n }\n });\n\n }\n };\n\n })\n\n .directive('bsCollapseTarget', function ($animate) {\n\n return {\n require: ['^?ngModel', '^bsCollapse'],\n // scope: true,\n link: function postLink (scope, element, attrs, controllers) {\n\n // var ngModelCtrl = controllers[0];\n var bsCollapseCtrl = controllers[1];\n\n // Add base class\n element.addClass('collapse');\n\n // Add animation class\n if (bsCollapseCtrl.$options.animation) {\n element.addClass(bsCollapseCtrl.$options.animation);\n }\n\n // Push pane to parent bsCollapse controller\n bsCollapseCtrl.$registerTarget(element);\n\n // remove pane target from collapse controller when target is destroyed\n scope.$on('$destroy', function () {\n bsCollapseCtrl.$unregisterTarget(element);\n });\n\n function render () {\n var index = bsCollapseCtrl.$targets.indexOf(element);\n var active = bsCollapseCtrl.$activeIndexes();\n var action = 'removeClass';\n if (angular.isArray(active)) {\n if (active.indexOf(index) !== -1) {\n action = 'addClass';\n }\n } else if (index === active) {\n action = 'addClass';\n }\n\n $animate[action](element, bsCollapseCtrl.$options.activeClass);\n }\n\n bsCollapseCtrl.$viewChangeListeners.push(function () {\n render();\n });\n render();\n\n }\n };\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.aside', ['mgcrea.ngStrap.modal'])\n\n .provider('$aside', function () {\n\n var defaults = this.defaults = {\n animation: 'am-fade-and-slide-right',\n prefixClass: 'aside',\n prefixEvent: 'aside',\n placement: 'right',\n templateUrl: 'aside/aside.tpl.html',\n contentTemplate: false,\n container: false,\n element: null,\n backdrop: true,\n keyboard: true,\n html: false,\n show: true\n };\n\n this.$get = function ($modal) {\n\n function AsideFactory (config) {\n\n var $aside = {};\n\n // Common vars\n var options = angular.extend({}, defaults, config);\n\n $aside = $modal(options);\n\n return $aside;\n\n }\n\n return AsideFactory;\n\n };\n\n })\n\n .directive('bsAside', function ($window, $sce, $aside) {\n\n return {\n restrict: 'EAC',\n scope: true,\n link: function postLink (scope, element, attr, transclusion) {\n // Directive options\n var options = {scope: scope, element: element, show: false};\n angular.forEach(['template', 'templateUrl', 'controller', 'controllerAs', 'contentTemplate', 'placement', 'backdrop', 'keyboard', 'html', 'container', 'animation'], function (key) {\n if (angular.isDefined(attr[key])) options[key] = attr[key];\n });\n\n // use string regex match boolean attr falsy values, leave truthy values be\n var falseValueRegExp = /^(false|0|)$/i;\n angular.forEach(['backdrop', 'keyboard', 'html', 'container'], function (key) {\n if (angular.isDefined(attr[key]) && falseValueRegExp.test(attr[key])) options[key] = false;\n });\n\n // bind functions from the attrs to the show and hide events\n angular.forEach(['onBeforeShow', 'onShow', 'onBeforeHide', 'onHide'], function (key) {\n var bsKey = 'bs' + key.charAt(0).toUpperCase() + key.slice(1);\n if (angular.isDefined(attr[bsKey])) {\n options[key] = scope.$eval(attr[bsKey]);\n }\n });\n\n // Support scope as data-attrs\n angular.forEach(['title', 'content'], function (key) {\n if (attr[key]) {\n attr.$observe(key, function (newValue, oldValue) {\n scope[key] = $sce.trustAsHtml(newValue);\n });\n }\n });\n\n // Support scope as an object\n if (attr.bsAside) {\n scope.$watch(attr.bsAside, function (newValue, oldValue) {\n if (angular.isObject(newValue)) {\n angular.extend(scope, newValue);\n } else {\n scope.content = newValue;\n }\n }, true);\n }\n\n // Initialize aside\n var aside = $aside(options);\n\n // Trigger\n element.on(attr.trigger || 'click', aside.toggle);\n\n // Garbage collection\n scope.$on('$destroy', function () {\n if (aside) aside.destroy();\n options = null;\n aside = null;\n });\n\n }\n };\n\n });\n","'use strict';\n\n// @BUG: following snippet won't compile correctly\n\nangular.module('mgcrea.ngStrap.alert', ['mgcrea.ngStrap.modal'])\n\n .provider('$alert', function () {\n\n var defaults = this.defaults = {\n animation: 'am-fade',\n prefixClass: 'alert',\n prefixEvent: 'alert',\n placement: null,\n templateUrl: 'alert/alert.tpl.html',\n container: false,\n element: null,\n backdrop: false,\n keyboard: true,\n show: true,\n // Specific options\n duration: false,\n type: false,\n dismissable: true\n };\n\n this.$get = function ($modal, $timeout) {\n\n function AlertFactory (config) {\n\n var $alert = {};\n\n // Common vars\n var options = angular.extend({}, defaults, config);\n\n $alert = $modal(options);\n\n // Support scope as string options [/*title, content, */ type, dismissable]\n $alert.$scope.dismissable = !!options.dismissable;\n if (options.type) {\n $alert.$scope.type = options.type;\n }\n\n // Support auto-close duration\n var show = $alert.show;\n if (options.duration) {\n $alert.show = function () {\n show();\n $timeout(function () {\n $alert.hide();\n }, options.duration * 1000);\n };\n }\n\n return $alert;\n\n }\n\n return AlertFactory;\n\n };\n\n })\n\n .directive('bsAlert', function ($window, $sce, $alert) {\n\n return {\n restrict: 'EAC',\n scope: true,\n link: function postLink (scope, element, attr, transclusion) {\n\n // Directive options\n var options = {scope: scope, element: element, show: false};\n angular.forEach(['template', 'templateUrl', 'controller', 'controllerAs', 'placement', 'keyboard', 'html', 'container', 'animation', 'duration', 'dismissable'], function (key) {\n if (angular.isDefined(attr[key])) options[key] = attr[key];\n });\n\n // use string regex match boolean attr falsy values, leave truthy values be\n var falseValueRegExp = /^(false|0|)$/i;\n angular.forEach(['keyboard', 'html', 'container', 'dismissable'], function (key) {\n if (angular.isDefined(attr[key]) && falseValueRegExp.test(attr[key])) options[key] = false;\n });\n\n // bind functions from the attrs to the show and hide events\n angular.forEach(['onBeforeShow', 'onShow', 'onBeforeHide', 'onHide'], function (key) {\n var bsKey = 'bs' + key.charAt(0).toUpperCase() + key.slice(1);\n if (angular.isDefined(attr[bsKey])) {\n options[key] = scope.$eval(attr[bsKey]);\n }\n });\n\n // overwrite inherited title value when no value specified\n // fix for angular 1.3.1 531a8de72c439d8ddd064874bf364c00cedabb11\n if (!scope.hasOwnProperty('title')) {\n scope.title = '';\n }\n\n // Support scope as data-attrs\n angular.forEach(['title', 'content', 'type'], function (key) {\n if (attr[key]) {\n attr.$observe(key, function (newValue, oldValue) {\n scope[key] = $sce.trustAsHtml(newValue);\n });\n }\n });\n\n // Support scope as an object\n if (attr.bsAlert) {\n scope.$watch(attr.bsAlert, function (newValue, oldValue) {\n if (angular.isObject(newValue)) {\n angular.extend(scope, newValue);\n } else {\n scope.content = newValue;\n }\n }, true);\n }\n\n // Initialize alert\n var alert = $alert(options);\n\n // Trigger\n element.on(attr.trigger || 'click', alert.toggle);\n\n // Garbage collection\n scope.$on('$destroy', function () {\n if (alert) alert.destroy();\n options = null;\n alert = null;\n });\n\n }\n };\n\n });\n","'use strict';\n\nangular.module('mgcrea.ngStrap.affix', ['mgcrea.ngStrap.helpers.dimensions', 'mgcrea.ngStrap.helpers.debounce'])\n\n .provider('$affix', function () {\n\n var defaults = this.defaults = {\n offsetTop: 'auto',\n inlineStyles: true,\n setWidth: true\n };\n\n this.$get = function ($window, debounce, dimensions) {\n\n var bodyEl = angular.element($window.document.body);\n var windowEl = angular.element($window);\n\n function AffixFactory (element, config) {\n\n var $affix = {};\n\n // Common vars\n var options = angular.extend({}, defaults, config);\n var targetEl = options.target;\n\n // Initial private vars\n var reset = 'affix affix-top affix-bottom';\n var setWidth = false;\n var initialAffixTop = 0;\n var initialOffsetTop = 0;\n var offsetTop = 0;\n var offsetBottom = 0;\n var affixed = null;\n var unpin = null;\n\n var parent = element.parent();\n // Options: custom parent\n if (options.offsetParent) {\n if (options.offsetParent.match(/^\\d+$/)) {\n for (var i = 0; i < (options.offsetParent * 1) - 1; i++) {\n parent = parent.parent();\n }\n } else {\n parent = angular.element(options.offsetParent);\n }\n }\n\n $affix.init = function () {\n\n this.$parseOffsets();\n initialOffsetTop = dimensions.offset(element[0]).top + initialAffixTop;\n setWidth = options.setWidth && !element[0].style.width;\n\n // Bind events\n targetEl.on('scroll', this.checkPosition);\n targetEl.on('click', this.checkPositionWithEventLoop);\n windowEl.on('resize', this.$debouncedOnResize);\n\n // Both of these checkPosition() calls are necessary for the case where\n // the user hits refresh after scrolling to the bottom of the page.\n this.checkPosition();\n this.checkPositionWithEventLoop();\n\n };\n\n $affix.destroy = function () {\n\n // Unbind events\n targetEl.off('scroll', this.checkPosition);\n targetEl.off('click', this.checkPositionWithEventLoop);\n windowEl.off('resize', this.$debouncedOnResize);\n\n };\n\n $affix.checkPositionWithEventLoop = function () {\n\n // IE 9 throws an error if we use 'this' instead of '$affix'\n // in this setTimeout call\n setTimeout($affix.checkPosition, 1);\n\n };\n\n $affix.checkPosition = function () {\n // if (!this.$element.is(':visible')) return\n\n var scrollTop = getScrollTop();\n var position = dimensions.offset(element[0]);\n var elementHeight = dimensions.height(element[0]);\n\n // Get required affix class according to position\n var affix = getRequiredAffixClass(unpin, position, elementHeight);\n\n // Did affix status changed this last check?\n if (affixed === affix) return;\n affixed = affix;\n\n if (affix === 'top') {\n unpin = null;\n if (setWidth) {\n element.css('width', '');\n }\n if (options.inlineStyles) {\n element.css('position', (options.offsetParent) ? '' : 'relative');\n element.css('top', '');\n }\n } else if (affix === 'bottom') {\n if (options.offsetUnpin) {\n unpin = -(options.offsetUnpin * 1);\n } else {\n // Calculate unpin threshold when affixed to bottom.\n // Hopefully the browser scrolls pixel by pixel.\n unpin = position.top - scrollTop;\n }\n if (setWidth) {\n element.css('width', '');\n }\n if (options.inlineStyles) {\n element.css('position', (options.offsetParent) ? '' : 'relative');\n element.css('top', (options.offsetParent) ? '' : ((bodyEl[0].offsetHeight - offsetBottom - elementHeight - initialOffsetTop) + 'px'));\n }\n } else { // affix === 'middle'\n unpin = null;\n if (setWidth) {\n element.css('width', element[0].offsetWidth + 'px');\n }\n if (options.inlineStyles) {\n element.css('position', 'fixed');\n element.css('top', initialAffixTop + 'px');\n }\n }\n\n // Add proper affix class\n element.removeClass(reset).addClass('affix' + ((affix !== 'middle') ? '-' + affix : ''));\n\n };\n\n $affix.$onResize = function () {\n $affix.$parseOffsets();\n $affix.checkPosition();\n };\n $affix.$debouncedOnResize = debounce($affix.$onResize, 50);\n\n $affix.$parseOffsets = function () {\n var initialPosition = element[0].style.position;\n var initialTop = element[0].style.top;\n // Reset position to calculate correct offsetTop\n if (options.inlineStyles) {\n element.css('position', (options.offsetParent) ? '' : 'relative');\n element.css('top', '');\n }\n\n if (options.offsetTop) {\n if (options.offsetTop === 'auto') {\n options.offsetTop = '+0';\n }\n if (options.offsetTop.match(/^[-+]\\d+$/)) {\n initialAffixTop = - options.offsetTop * 1;\n if (options.offsetParent) {\n offsetTop = dimensions.offset(parent[0]).top + (options.offsetTop * 1);\n } else {\n offsetTop = dimensions.offset(element[0]).top - dimensions.css(element[0], 'marginTop', true) + (options.offsetTop * 1);\n }\n } else {\n offsetTop = options.offsetTop * 1;\n }\n }\n\n if (options.offsetBottom) {\n if (options.offsetParent && options.offsetBottom.match(/^[-+]\\d+$/)) {\n // add 1 pixel due to rounding problems...\n offsetBottom = getScrollHeight() - (dimensions.offset(parent[0]).top + dimensions.height(parent[0])) + (options.offsetBottom * 1) + 1;\n } else {\n offsetBottom = options.offsetBottom * 1;\n }\n }\n\n // Bring back the element's position after calculations\n if (options.inlineStyles) {\n element.css('position', initialPosition);\n element.css('top', initialTop);\n }\n };\n\n // Private methods\n\n function getRequiredAffixClass (_unpin, position, elementHeight) {\n var scrollTop = getScrollTop();\n var scrollHeight = getScrollHeight();\n\n if (scrollTop <= offsetTop) {\n return 'top';\n } else if (_unpin !== null) {\n return scrollTop + _unpin <= position.top ? 'middle' : 'bottom';\n } else if (offsetBottom !== null && (position.top + elementHeight + initialAffixTop >= scrollHeight - offsetBottom)) {\n return 'bottom';\n }\n return 'middle';\n }\n\n function getScrollTop () {\n return targetEl[0] === $window ? $window.pageYOffset : targetEl[0].scrollTop;\n }\n\n function getScrollHeight () {\n return targetEl[0] === $window ? $window.document.body.scrollHeight : targetEl[0].scrollHeight;\n }\n\n $affix.init();\n return $affix;\n\n }\n\n return AffixFactory;\n\n };\n\n })\n\n .directive('bsAffix', function ($affix, $window, $timeout) {\n\n return {\n restrict: 'EAC',\n require: '^?bsAffixTarget',\n link: function postLink (scope, element, attr, affixTarget) {\n\n var options = {scope: scope, target: affixTarget ? affixTarget.$element : angular.element($window)};\n angular.forEach(['offsetTop', 'offsetBottom', 'offsetParent', 'offsetUnpin', 'inlineStyles', 'setWidth'], function (key) {\n if (angular.isDefined(attr[key])) {\n var option = attr[key];\n if (/true/i.test(option)) option = true;\n if (/false/i.test(option)) option = false;\n options[key] = option;\n }\n });\n\n var affix;\n $timeout(function () { affix = $affix(element, options); });\n scope.$on('$destroy', function () {\n if (affix) affix.destroy();\n options = null;\n affix = null;\n });\n\n }\n };\n\n })\n\n .directive('bsAffixTarget', function () {\n return {\n controller: function ($element) {\n this.$element = $element;\n }\n };\n });\n","\nangular.module('mgcrea.ngStrap', [\n 'mgcrea.ngStrap.modal',\n 'mgcrea.ngStrap.aside',\n 'mgcrea.ngStrap.alert',\n 'mgcrea.ngStrap.button',\n 'mgcrea.ngStrap.select',\n 'mgcrea.ngStrap.datepicker',\n 'mgcrea.ngStrap.timepicker',\n 'mgcrea.ngStrap.navbar',\n 'mgcrea.ngStrap.tooltip',\n 'mgcrea.ngStrap.popover',\n 'mgcrea.ngStrap.dropdown',\n 'mgcrea.ngStrap.typeahead',\n 'mgcrea.ngStrap.scrollspy',\n 'mgcrea.ngStrap.affix',\n 'mgcrea.ngStrap.tab',\n 'mgcrea.ngStrap.collapse'\n]);\n"]}
\ No newline at end of file
diff --git a/static/js/angular-strap.tpl.min.js b/static/js/angular-strap.tpl.min.js
new file mode 100644
index 0000000..ff8e042
--- /dev/null
+++ b/static/js/angular-strap.tpl.min.js
@@ -0,0 +1,8 @@
+/**
+ * angular-strap
+ * @version v2.3.10 - 2016-10-17
+ * @link http://mgcrea.github.io/angular-strap
+ * @author Olivier Louvignes
(https://github.com/mgcrea)
+ * @license MIT License, http://www.opensource.org/licenses/MIT
+ */
+!function(t,e,n){'use strict';angular.module('mgcrea.ngStrap.alert').run(['$templateCache',function(t){t.put('alert/alert.tpl.html','×
')}]),angular.module('mgcrea.ngStrap.aside').run(['$templateCache',function(t){t.put('aside/aside.tpl.html','')}]),angular.module('mgcrea.ngStrap.datepicker').run(['$templateCache',function(t){t.put('datepicker/datepicker.tpl.html','')}]),angular.module('mgcrea.ngStrap.modal').run(['$templateCache',function(t){t.put('modal/modal.tpl.html','')}]),angular.module('mgcrea.ngStrap.dropdown').run(['$templateCache',function(t){t.put('dropdown/dropdown.tpl.html','')}]),angular.module('mgcrea.ngStrap.popover').run(['$templateCache',function(t){t.put('popover/popover.tpl.html','')}]),angular.module('mgcrea.ngStrap.select').run(['$templateCache',function(t){t.put('select/select.tpl.html','')}]),angular.module('mgcrea.ngStrap.tab').run(['$templateCache',function(t){t.put('tab/tab.tpl.html','
')}]),angular.module('mgcrea.ngStrap.timepicker').run(['$templateCache',function(t){t.put('timepicker/timepicker.tpl.html','')}]),angular.module('mgcrea.ngStrap.tooltip').run(['$templateCache',function(t){t.put('tooltip/tooltip.tpl.html','')}]),angular.module('mgcrea.ngStrap.typeahead').run(['$templateCache',function(t){t.put('typeahead/typeahead.tpl.html','')}])}(window,document);
\ No newline at end of file
diff --git a/static/js/api-check.js b/static/js/api-check.js
new file mode 100644
index 0000000..c00281d
--- /dev/null
+++ b/static/js/api-check.js
@@ -0,0 +1,1332 @@
+//! api-check version 7.5.5 built with ♥ by Kent C. Dodds (http://kent.doddsfamily.us) (ó ì_í)=óò=(ì_í ò)
+
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define(factory);
+ else if(typeof exports === 'object')
+ exports["apiCheck"] = factory();
+ else
+ root["apiCheck"] = factory();
+})(this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+
+
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ Object.defineProperty(exports, '__esModule', {
+ value: true
+ });
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _apiCheck = __webpack_require__(1);
+
+ var _apiCheck2 = _interopRequireDefault(_apiCheck);
+
+ exports['default'] = _apiCheck2['default'];
+ module.exports = exports['default'];
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ var stringify = __webpack_require__(2);
+ var apiCheckUtil = __webpack_require__(3);
+ var each = apiCheckUtil.each;
+ var isError = apiCheckUtil.isError;
+ var t = apiCheckUtil.t;
+ var arrayify = apiCheckUtil.arrayify;
+ var getCheckerDisplay = apiCheckUtil.getCheckerDisplay;
+ var typeOf = apiCheckUtil.typeOf;
+ var getError = apiCheckUtil.getError;
+
+ var checkers = __webpack_require__(4);
+ var apiCheckApis = getApiCheckApis();
+
+ module.exports = getApiCheckInstance;
+ module.exports.VERSION = ("7.5.5");
+ module.exports.utils = apiCheckUtil;
+ module.exports.globalConfig = {
+ verbose: false,
+ disabled: false
+ };
+
+ var apiCheckApiCheck = getApiCheckInstance({
+ output: { prefix: 'apiCheck' }
+ });
+ module.exports.internalChecker = apiCheckApiCheck;
+
+ each(checkers, function (checker, name) {
+ return module.exports[name] = checker;
+ });
+
+ function getApiCheckInstance() {
+ var config = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
+ var extraCheckers = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
+
+ /* eslint complexity:[2, 6] */
+ if (apiCheckApiCheck && arguments.length) {
+ apiCheckApiCheck['throw'](apiCheckApis.getApiCheckInstanceCheckers, arguments, {
+ prefix: 'creating an apiCheck instance'
+ });
+ }
+
+ var additionalProperties = {
+ 'throw': getApiCheck(true),
+ warn: getApiCheck(false),
+ getErrorMessage: getErrorMessage,
+ handleErrorMessage: handleErrorMessage,
+ config: {
+ output: config.output || {
+ prefix: '',
+ suffix: '',
+ docsBaseUrl: ''
+ },
+ verbose: config.verbose || false,
+ disabled: config.disabled || false
+ },
+ utils: apiCheckUtil
+ };
+
+ each(additionalProperties, function (wrapper, name) {
+ return apiCheck[name] = wrapper;
+ });
+
+ var disabled = apiCheck.disabled || module.exports.globalConfig.disabled;
+ each(checkers.getCheckers(disabled), function (checker, name) {
+ return apiCheck[name] = checker;
+ });
+ each(extraCheckers, function (checker, name) {
+ return apiCheck[name] = checker;
+ });
+
+ return apiCheck;
+
+ /**
+ * This is the instance function. Other things are attached to this see additional properties above.
+ * @param {Array} api - the checkers to check with
+ * @param {Array} args - the args to check
+ * @param {Object} output - output options
+ * @returns {Object} - if this has a failed = true property, then it failed
+ */
+ function apiCheck(api, args, output) {
+ /* eslint complexity:[2, 8] */
+ if (apiCheck.config.disabled || module.exports.globalConfig.disabled) {
+ return {
+ apiTypes: {}, argTypes: {},
+ passed: true, message: '',
+ failed: false
+ }; // empty version of what is normally returned
+ }
+ checkApiCheckApi(arguments);
+ if (!Array.isArray(api)) {
+ api = [api];
+ args = [args];
+ } else {
+ // turn arguments into an array
+ args = Array.prototype.slice.call(args);
+ }
+ var messages = checkEnoughArgs(api, args);
+ if (!messages.length) {
+ // this is where we actually go perform the checks.
+ messages = checkApiWithArgs(api, args);
+ }
+
+ var returnObject = getTypes(api, args);
+ returnObject.args = args;
+ if (messages.length) {
+ returnObject.message = apiCheck.getErrorMessage(api, args, messages, output);
+ returnObject.failed = true;
+ returnObject.passed = false;
+ } else {
+ returnObject.message = '';
+ returnObject.failed = false;
+ returnObject.passed = true;
+ }
+ return returnObject;
+ }
+
+ /**
+ * checkApiCheckApi, should be read like: check apiCheck api. As in, check the api for apiCheck :-)
+ * @param {Array} checkApiArgs - args provided to apiCheck function
+ */
+ function checkApiCheckApi(checkApiArgs) {
+ var api = checkApiArgs[0];
+ var args = checkApiArgs[1];
+ var isArrayOrArgs = Array.isArray(args) || args && typeof args === 'object' && typeof args.length === 'number';
+
+ if (Array.isArray(api) && !isArrayOrArgs) {
+ throw new Error(getErrorMessage(api, [args], ['If an array is provided for the api, an array must be provided for the args as well.'], { prefix: 'apiCheck' }));
+ }
+ // dog fooding here
+ var errors = checkApiWithArgs(apiCheckApis.checkApiCheckApi, checkApiArgs);
+ if (errors.length) {
+ var message = apiCheck.getErrorMessage(apiCheckApis.checkApiCheckApi, checkApiArgs, errors, {
+ prefix: 'apiCheck'
+ });
+ apiCheck.handleErrorMessage(message, true);
+ }
+ }
+
+ function getApiCheck(shouldThrow) {
+ return function apiCheckWrapper(api, args, output) {
+ var result = apiCheck(api, args, output);
+ apiCheck.handleErrorMessage(result.message, shouldThrow);
+ return result; // wont get here if an error is thrown
+ };
+ }
+
+ function handleErrorMessage(message, shouldThrow) {
+ if (shouldThrow && message) {
+ throw new Error(message);
+ } else if (message) {
+ /* eslint no-console:0 */
+ console.warn(message);
+ }
+ }
+
+ function getErrorMessage(api, args) {
+ var messages = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];
+ var output = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];
+
+ var gOut = apiCheck.config.output || {};
+ var prefix = getPrefix();
+ var suffix = getSuffix();
+ var url = getUrl();
+ var message = 'apiCheck failed! ' + messages.join(', ');
+ var passedAndShouldHavePassed = '\n\n' + buildMessageFromApiAndArgs(api, args);
+ return (prefix + ' ' + message + ' ' + suffix + ' ' + (url || '') + passedAndShouldHavePassed).trim();
+
+ function getPrefix() {
+ var p = output.onlyPrefix;
+ if (!p) {
+ p = ((gOut.prefix || '') + ' ' + (output.prefix || '')).trim();
+ }
+ return p;
+ }
+
+ function getSuffix() {
+ var s = output.onlySuffix;
+ if (!s) {
+ s = ((output.suffix || '') + ' ' + (gOut.suffix || '')).trim();
+ }
+ return s;
+ }
+
+ function getUrl() {
+ var u = output.url;
+ if (!u) {
+ u = gOut.docsBaseUrl && output.urlSuffix && ('' + gOut.docsBaseUrl + output.urlSuffix).trim();
+ }
+ return u;
+ }
+ }
+
+ function buildMessageFromApiAndArgs(api, args) {
+ var _getTypes = getTypes(api, args);
+
+ var apiTypes = _getTypes.apiTypes;
+ var argTypes = _getTypes.argTypes;
+
+ var copy = Array.prototype.slice.call(args || []);
+ var replacedItems = [];
+ replaceFunctionWithName(copy);
+ var passedArgs = getObjectString(copy);
+ argTypes = getObjectString(argTypes);
+ apiTypes = getObjectString(apiTypes);
+
+ return generateMessage();
+
+ // functions
+
+ function replaceFunctionWithName(obj) {
+ each(obj, function (val, name) {
+ /* eslint complexity:[2, 6] */
+ if (replacedItems.indexOf(val) === -1) {
+ // avoid recursive problems
+ replacedItems.push(val);
+ if (typeof val === 'object') {
+ replaceFunctionWithName(obj);
+ } else if (typeof val === 'function') {
+ obj[name] = val.displayName || val.name || 'anonymous function';
+ }
+ }
+ });
+ }
+
+ function getObjectString(types) {
+ if (!types || !types.length) {
+ return 'nothing';
+ } else if (types && types.length === 1) {
+ types = types[0];
+ }
+ return stringify(types, null, 2);
+ }
+
+ function generateMessage() {
+ var n = '\n';
+ var useS = true;
+ if (args && args.length === 1) {
+ if (typeof args[0] === 'object' && args[0] !== null) {
+ useS = !!Object.keys(args[0]).length;
+ } else {
+ useS = false;
+ }
+ }
+ var types = 'type' + (useS ? 's' : '');
+ var newLine = n + n;
+ return 'You passed:' + n + passedArgs + newLine + ('With the ' + types + ':' + n + argTypes + newLine) + ('The API calls for:' + n + apiTypes);
+ }
+ }
+
+ function getTypes(api, args) {
+ api = arrayify(api);
+ args = arrayify(args);
+ var apiTypes = api.map(function (checker, index) {
+ var specified = module.exports.globalConfig.hasOwnProperty('verbose');
+ return getCheckerDisplay(checker, {
+ terse: specified ? !module.exports.globalConfig.verbose : !apiCheck.config.verbose,
+ obj: args[index],
+ addHelpers: true
+ });
+ });
+ var argTypes = args.map(function (arg) {
+ return getArgDisplay(arg, []);
+ });
+ return { argTypes: argTypes, apiTypes: apiTypes };
+ }
+ }
+
+ // STATELESS FUNCTIONS
+
+ /**
+ * This is where the magic happens for actually checking the arguments with the api.
+ * @param {Array} api - checkers
+ * @param {Array} args - and arguments object
+ * @returns {Array} - the error messages
+ */
+ function checkApiWithArgs(api, args) {
+ /* eslint complexity:[2, 7] */
+ var messages = [];
+ var failed = false;
+ var checkerIndex = 0;
+ var argIndex = 0;
+ var arg = undefined,
+ checker = undefined,
+ res = undefined,
+ lastChecker = undefined,
+ argName = undefined,
+ argFailed = undefined,
+ skipPreviousChecker = undefined;
+ /* jshint -W084 */
+ while ((checker = api[checkerIndex++]) && argIndex < args.length) {
+ arg = args[argIndex++];
+ argName = 'Argument ' + argIndex + (checker.isOptional ? ' (optional)' : '');
+ res = checker(arg, 'value', argName);
+ argFailed = isError(res);
+ lastChecker = checkerIndex >= api.length;
+ skipPreviousChecker = checkerIndex > 1 && api[checkerIndex - 1].isOptional;
+ if (argFailed && lastChecker || argFailed && !lastChecker && !checker.isOptional && !skipPreviousChecker) {
+ failed = true;
+ messages.push(getCheckerErrorMessage(res, checker, arg));
+ } else if (argFailed && checker.isOptional) {
+ argIndex--;
+ } else {
+ messages.push(t(argName) + ' passed');
+ }
+ }
+ return failed ? messages : [];
+ }
+
+ checkerTypeType.type = 'function with __apiCheckData property and `${function.type}` property';
+ function checkerTypeType(checkerType, name, location) {
+ var apiCheckDataChecker = checkers.shape({
+ type: checkers.string,
+ optional: checkers.bool
+ });
+ var asFunc = checkers.func.withProperties({ __apiCheckData: apiCheckDataChecker });
+ var asShape = checkers.shape({ __apiCheckData: apiCheckDataChecker });
+ var wrongShape = checkers.oneOfType([asFunc, asShape])(checkerType, name, location);
+ if (isError(wrongShape)) {
+ return wrongShape;
+ }
+ if (typeof checkerType !== 'function' && !checkerType.hasOwnProperty(checkerType.__apiCheckData.type)) {
+ return getError(name, location, checkerTypeType.type);
+ }
+ }
+
+ function getCheckerErrorMessage(res, checker, val) {
+ var checkerHelp = getCheckerHelp(checker, val);
+ checkerHelp = checkerHelp ? ' - ' + checkerHelp : '';
+ return res.message + checkerHelp;
+ }
+
+ function getCheckerHelp(_ref, val) {
+ var help = _ref.help;
+
+ if (!help) {
+ return '';
+ }
+ if (typeof help === 'function') {
+ help = help(val);
+ }
+ return help;
+ }
+
+ function checkEnoughArgs(api, args) {
+ var requiredArgs = api.filter(function (a) {
+ return !a.isOptional;
+ });
+ if (args.length < requiredArgs.length) {
+ return ['Not enough arguments specified. Requires `' + requiredArgs.length + '`, you passed `' + args.length + '`'];
+ } else {
+ return [];
+ }
+ }
+
+ function getArgDisplay(arg, gottenArgs) {
+ /* eslint complexity:[2, 7] */
+ var cName = arg && arg.constructor && arg.constructor.name;
+ var type = typeOf(arg);
+ if (type === 'function') {
+ if (hasKeys()) {
+ var properties = stringify(getDisplayIfNotGotten());
+ return cName + ' (with properties: ' + properties + ')';
+ }
+ return cName;
+ }
+
+ if (arg === null) {
+ return 'null';
+ }
+
+ if (type !== 'array' && type !== 'object') {
+ return type;
+ }
+
+ if (hasKeys()) {
+ return getDisplayIfNotGotten();
+ }
+
+ return cName;
+
+ // utility functions
+ function hasKeys() {
+ return arg && Object.keys(arg).length;
+ }
+
+ function getDisplayIfNotGotten() {
+ if (gottenArgs.indexOf(arg) !== -1) {
+ return '[Circular]';
+ }
+ gottenArgs.push(arg);
+ return getDisplay(arg, gottenArgs);
+ }
+ }
+
+ function getDisplay(obj, gottenArgs) {
+ var argDisplay = {};
+ each(obj, function (v, k) {
+ return argDisplay[k] = getArgDisplay(v, gottenArgs);
+ });
+ return argDisplay;
+ }
+
+ function getApiCheckApis() {
+ var os = checkers.string.optional;
+
+ var checkerFnChecker = checkers.func.withProperties({
+ type: checkers.oneOfType([checkers.string, checkerTypeType]).optional,
+ displayName: checkers.string.optional,
+ shortType: checkers.string.optional,
+ notOptional: checkers.bool.optional,
+ notRequired: checkers.bool.optional
+ });
+
+ var getApiCheckInstanceCheckers = [checkers.shape({
+ output: checkers.shape({
+ prefix: checkers.string.optional,
+ suffix: checkers.string.optional,
+ docsBaseUrl: checkers.string.optional
+ }).strict.optional,
+ verbose: checkers.bool.optional,
+ disabled: checkers.bool.optional
+ }).strict.optional, checkers.objectOf(checkerFnChecker).optional];
+
+ var checkApiCheckApi = [checkers.typeOrArrayOf(checkerFnChecker), checkers.any.optional, checkers.shape({
+ prefix: os, suffix: os, urlSuffix: os, // appended case
+ onlyPrefix: os, onlySuffix: os, url: os // override case
+ }).strict.optional];
+
+ return {
+ checkerFnChecker: checkerFnChecker,
+ getApiCheckInstanceCheckers: getApiCheckInstanceCheckers,
+ checkApiCheckApi: checkApiCheckApi
+ };
+ }
+
+/***/ },
+/* 2 */
+/***/ function(module, exports) {
+
+ module.exports = stringify;
+
+ function getSerialize (fn, decycle) {
+ var seen = [], keys = [];
+ decycle = decycle || function(key, value) {
+ return '[Circular ' + getPath(value, seen, keys) + ']'
+ };
+ return function(key, value) {
+ var ret = value;
+ if (typeof value === 'object' && value) {
+ if (seen.indexOf(value) !== -1)
+ ret = decycle(key, value);
+ else {
+ seen.push(value);
+ keys.push(key);
+ }
+ }
+ if (fn) ret = fn(key, ret);
+ return ret;
+ }
+ }
+
+ function getPath (value, seen, keys) {
+ var index = seen.indexOf(value);
+ var path = [ keys[index] ];
+ for (index--; index >= 0; index--) {
+ if (seen[index][ path[0] ] === value) {
+ value = seen[index];
+ path.unshift(keys[index]);
+ }
+ }
+ return '~' + path.join('.');
+ }
+
+ function stringify(obj, fn, spaces, decycle) {
+ return JSON.stringify(obj, getSerialize(fn, decycle), spaces);
+ }
+
+ stringify.getSerialize = getSerialize;
+
+
+/***/ },
+/* 3 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+ var stringify = __webpack_require__(2);
+ var checkerHelpers = {
+ addOptional: addOptional, getRequiredVersion: getRequiredVersion, setupChecker: setupChecker, addNullable: addNullable
+ };
+
+ module.exports = {
+ each: each, copy: copy, typeOf: typeOf, arrayify: arrayify, getCheckerDisplay: getCheckerDisplay,
+ isError: isError, list: list, getError: getError, nAtL: nAtL, t: t, undef: undef, checkerHelpers: checkerHelpers,
+ noop: noop
+ };
+
+ function copy(obj) {
+ var type = typeOf(obj);
+ var daCopy = undefined;
+ if (type === 'array') {
+ daCopy = [];
+ } else if (type === 'object') {
+ daCopy = {};
+ } else {
+ return obj;
+ }
+ each(obj, function (val, key) {
+ daCopy[key] = val; // cannot single-line this because we don't want to abort the each
+ });
+ return daCopy;
+ }
+
+ function typeOf(obj) {
+ if (Array.isArray(obj)) {
+ return 'array';
+ } else if (obj instanceof RegExp) {
+ return 'object';
+ } else {
+ return typeof obj;
+ }
+ }
+
+ function getCheckerDisplay(checker, options) {
+ /* eslint complexity:[2, 7] */
+ var display = undefined;
+ var short = options && options.short;
+ if (short && checker.shortType) {
+ display = checker.shortType;
+ } else if (!short && typeof checker.type === 'object' || checker.type === 'function') {
+ display = getCheckerType(checker, options);
+ } else {
+ display = getCheckerType(checker, options) || checker.displayName || checker.name;
+ }
+ return display;
+ }
+
+ function getCheckerType(_ref, options) {
+ var type = _ref.type;
+
+ if (typeof type === 'function') {
+ var __apiCheckData = type.__apiCheckData;
+ var typeTypes = type(options);
+ type = _defineProperty({
+ __apiCheckData: __apiCheckData
+ }, __apiCheckData.type, typeTypes);
+ }
+ return type;
+ }
+
+ function arrayify(obj) {
+ if (!obj) {
+ return [];
+ } else if (Array.isArray(obj)) {
+ return obj;
+ } else {
+ return [obj];
+ }
+ }
+
+ function each(obj, iterator, context) {
+ if (Array.isArray(obj)) {
+ return eachArry(obj, iterator, context);
+ } else {
+ return eachObj(obj, iterator, context);
+ }
+ }
+
+ function eachObj(obj, iterator, context) {
+ var ret = undefined;
+ var hasOwn = Object.prototype.hasOwnProperty;
+ /* eslint prefer-const:0 */ // some weird eslint bug?
+ for (var key in obj) {
+ if (hasOwn.call(obj, key)) {
+ ret = iterator.call(context, obj[key], key, obj);
+ if (ret === false) {
+ return ret;
+ }
+ }
+ }
+ return true;
+ }
+
+ function eachArry(obj, iterator, context) {
+ var ret = undefined;
+ var length = obj.length;
+ for (var i = 0; i < length; i++) {
+ ret = iterator.call(context, obj[i], i, obj);
+ if (ret === false) {
+ return ret;
+ }
+ }
+ return true;
+ }
+
+ function isError(obj) {
+ return obj instanceof Error;
+ }
+
+ function list(arry, join, finalJoin) {
+ arry = arrayify(arry);
+ var copy = arry.slice();
+ var last = copy.pop();
+ if (copy.length === 1) {
+ join = ' ';
+ }
+ return copy.join(join) + ('' + (copy.length ? join + finalJoin : '') + last);
+ }
+
+ function getError(name, location, checkerType) {
+ if (typeof checkerType === 'function') {
+ checkerType = checkerType({ short: true });
+ }
+ var stringType = typeof checkerType !== 'object' ? checkerType : stringify(checkerType);
+ return new Error(nAtL(name, location) + ' must be ' + t(stringType));
+ }
+
+ function nAtL(name, location) {
+ var tName = t(name || 'value');
+ var tLocation = !location ? '' : ' at ' + t(location);
+ return '' + tName + tLocation;
+ }
+
+ function t(thing) {
+ return '`' + thing + '`';
+ }
+
+ function undef(thing) {
+ return typeof thing === 'undefined';
+ }
+
+ /**
+ * This will set up the checker with all of the defaults that most checkers want like required by default and an
+ * optional version
+ *
+ * @param {Function} checker - the checker to setup with properties
+ * @param {Object} properties - properties to add to the checker
+ * @param {boolean} disabled - when set to true, this will set the checker to a no-op function
+ * @returns {Function} checker - the setup checker
+ */
+ function setupChecker(checker, properties, disabled) {
+ /* eslint complexity:[2, 9] */
+ if (disabled) {
+ // swap out the checker for its own copy of noop
+ checker = getNoop();
+ checker.isNoop = true;
+ }
+
+ if (typeof checker.type === 'string') {
+ checker.shortType = checker.type;
+ }
+
+ // assign all properties given
+ each(properties, function (prop, name) {
+ return checker[name] = prop;
+ });
+
+ if (!checker.displayName) {
+ checker.displayName = 'apiCheck ' + t(checker.shortType || checker.type || checker.name) + ' type checker';
+ }
+
+ if (!checker.notRequired) {
+ checker = getRequiredVersion(checker, disabled);
+ }
+
+ if (!checker.notNullable) {
+ addNullable(checker, disabled);
+ }
+
+ if (!checker.notOptional) {
+ addOptional(checker, disabled);
+ }
+
+ return checker;
+ }
+
+ function getRequiredVersion(checker, disabled) {
+ var requiredChecker = disabled ? getNoop() : function requiredChecker(val, name, location, obj) {
+ if (undef(val) && !checker.isOptional) {
+ var tLocation = location ? ' in ' + t(location) : '';
+ var type = getCheckerDisplay(checker, { short: true });
+ var stringType = typeof type !== 'object' ? type : stringify(type);
+ return new Error('Required ' + t(name) + ' not specified' + tLocation + '. Must be ' + t(stringType));
+ } else {
+ return checker(val, name, location, obj);
+ }
+ };
+ copyProps(checker, requiredChecker);
+ requiredChecker.originalChecker = checker;
+ return requiredChecker;
+ }
+
+ function addOptional(checker, disabled) {
+ var optionalCheck = disabled ? getNoop() : function optionalCheck(val, name, location, obj) {
+ if (!undef(val)) {
+ return checker(val, name, location, obj);
+ }
+ };
+ // inherit all properties on the original checker
+ copyProps(checker, optionalCheck);
+
+ optionalCheck.isOptional = true;
+ optionalCheck.displayName = checker.displayName + ' (optional)';
+ optionalCheck.originalChecker = checker;
+
+ // the magic line that allows you to add .optional to the end of the checkers
+ checker.optional = optionalCheck;
+
+ fixType(checker, checker.optional);
+ }
+
+ function addNullable(checker, disabled) {
+ var nullableCheck = disabled ? getNoop() : function nullableCheck(val, name, location, obj) {
+ if (val !== null) {
+ return checker(val, name, location, obj);
+ }
+ };
+ // inherit all properties on the original checker
+ copyProps(checker, nullableCheck);
+
+ nullableCheck.isNullable = true;
+ nullableCheck.displayName = checker.displayName + ' (nullable)';
+ nullableCheck.originalChecker = checker;
+
+ // the magic line that allows you to add .nullable to the end of the checkers
+ checker.nullable = nullableCheck;
+
+ fixType(checker, checker.nullable);
+ if (!checker.notOptional) {
+ addOptional(checker.nullable, disabled);
+ }
+ }
+
+ function fixType(checker, checkerCopy) {
+ // fix type, because it's not a straight copy...
+ // the reason is we need to specify type.__apiCheckData.optional as true for the terse/verbose option.
+ // we also want to add "(optional)" to the types with a string
+ if (typeof checkerCopy.type === 'object') {
+ checkerCopy.type = copy(checkerCopy.type); // make our own copy of this
+ } else if (typeof checkerCopy.type === 'function') {
+ checkerCopy.type = function () {
+ return checker.type.apply(checker, arguments);
+ };
+ } else {
+ checkerCopy.type += ' (optional)';
+ return;
+ }
+ checkerCopy.type.__apiCheckData = copy(checker.type.__apiCheckData) || {}; // and this
+ checkerCopy.type.__apiCheckData.optional = true;
+ }
+
+ // UTILS
+
+ function copyProps(src, dest) {
+ each(Object.keys(src), function (key) {
+ return dest[key] = src[key];
+ });
+ }
+
+ function noop() {}
+
+ function getNoop() {
+ /* eslint no-shadow:0 */
+ /* istanbul ignore next */
+ return function noop() {};
+ }
+
+/***/ },
+/* 4 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ var stringify = __webpack_require__(2);
+
+ var _require = __webpack_require__(3);
+
+ var typeOf = _require.typeOf;
+ var each = _require.each;
+ var copy = _require.copy;
+ var getCheckerDisplay = _require.getCheckerDisplay;
+ var isError = _require.isError;
+ var arrayify = _require.arrayify;
+ var list = _require.list;
+ var getError = _require.getError;
+ var nAtL = _require.nAtL;
+ var t = _require.t;
+ var checkerHelpers = _require.checkerHelpers;
+ var undef = _require.undef;
+ var setupChecker = checkerHelpers.setupChecker;
+
+ var checkers = module.exports = getCheckers();
+ module.exports.getCheckers = getCheckers;
+
+ function getCheckers(disabled) {
+ return {
+ array: typeOfCheckGetter('Array'),
+ bool: typeOfCheckGetter('Boolean'),
+ number: typeOfCheckGetter('Number'),
+ string: typeOfCheckGetter('String'),
+ func: funcCheckGetter(),
+ object: objectCheckGetter(),
+
+ emptyObject: emptyObjectCheckGetter(),
+
+ instanceOf: instanceCheckGetter,
+ oneOf: oneOfCheckGetter,
+ oneOfType: oneOfTypeCheckGetter,
+
+ arrayOf: arrayOfCheckGetter,
+ objectOf: objectOfCheckGetter,
+ typeOrArrayOf: typeOrArrayOfCheckGetter,
+
+ range: rangeCheckGetter,
+ lessThan: lessThanCheckGetter,
+ greaterThan: greaterThanCheckGetter,
+
+ shape: getShapeCheckGetter(),
+ args: argumentsCheckerGetter(),
+
+ any: anyCheckGetter(),
+ 'null': nullCheckGetter()
+
+ };
+
+ function typeOfCheckGetter(type) {
+ var lType = type.toLowerCase();
+ return setupChecker(function typeOfCheckerDefinition(val, name, location) {
+ if (typeOf(val) !== lType) {
+ return getError(name, location, type);
+ }
+ }, { type: type }, disabled);
+ }
+
+ function funcCheckGetter() {
+ var type = 'Function';
+ var functionChecker = setupChecker(function functionCheckerDefinition(val, name, location) {
+ if (typeOf(val) !== 'function') {
+ return getError(name, location, type);
+ }
+ }, { type: type }, disabled);
+
+ functionChecker.withProperties = function getWithPropertiesChecker(properties) {
+ var apiError = checkers.objectOf(checkers.func)(properties, 'properties', 'apiCheck.func.withProperties');
+ if (isError(apiError)) {
+ throw apiError;
+ }
+ var shapeChecker = checkers.shape(properties, true);
+ shapeChecker.type.__apiCheckData.type = 'func.withProperties';
+
+ return setupChecker(function functionWithPropertiesChecker(val, name, location) {
+ var notFunction = checkers.func(val, name, location);
+ if (isError(notFunction)) {
+ return notFunction;
+ }
+ return shapeChecker(val, name, location);
+ }, { type: shapeChecker.type, shortType: 'func.withProperties' }, disabled);
+ };
+ return functionChecker;
+ }
+
+ function objectCheckGetter() {
+ var type = 'Object';
+ var nullType = 'Object (null ok)';
+ var objectNullOkChecker = setupChecker(function objectNullOkCheckerDefinition(val, name, location) {
+ if (typeOf(val) !== 'object') {
+ return getError(name, location, nullType);
+ }
+ }, { type: nullType }, disabled);
+
+ var objectChecker = setupChecker(function objectCheckerDefinition(val, name, location) {
+ if (val === null || isError(objectNullOkChecker(val, name, location))) {
+ return getError(name, location, objectChecker.type);
+ }
+ }, { type: type, nullOk: objectNullOkChecker }, disabled);
+
+ return objectChecker;
+ }
+
+ function instanceCheckGetter(classToCheck) {
+ return setupChecker(function instanceCheckerDefinition(val, name, location) {
+ if (!(val instanceof classToCheck)) {
+ return getError(name, location, classToCheck.name);
+ }
+ }, { type: classToCheck.name }, disabled);
+ }
+
+ function oneOfCheckGetter(enums) {
+ var type = {
+ __apiCheckData: { optional: false, type: 'enum' },
+ 'enum': enums
+ };
+ var shortType = 'oneOf[' + enums.map(function (enm) {
+ return stringify(enm);
+ }).join(', ') + ']';
+ return setupChecker(function oneOfCheckerDefinition(val, name, location) {
+ if (!enums.some(function (enm) {
+ return enm === val;
+ })) {
+ return getError(name, location, shortType);
+ }
+ }, { type: type, shortType: shortType }, disabled);
+ }
+
+ function oneOfTypeCheckGetter(typeCheckers) {
+ var checkersDisplay = typeCheckers.map(function (checker) {
+ return getCheckerDisplay(checker, { short: true });
+ });
+ var shortType = 'oneOfType[' + checkersDisplay.join(', ') + ']';
+ function type(options) {
+ if (options && options.short) {
+ return shortType;
+ }
+ return typeCheckers.map(function (checker) {
+ return getCheckerDisplay(checker, options);
+ });
+ }
+ type.__apiCheckData = { optional: false, type: 'oneOfType' };
+ return setupChecker(function oneOfTypeCheckerDefinition(val, name, location) {
+ if (!typeCheckers.some(function (checker) {
+ return !isError(checker(val, name, location));
+ })) {
+ return getError(name, location, shortType);
+ }
+ }, { type: type, shortType: shortType }, disabled);
+ }
+
+ function arrayOfCheckGetter(checker) {
+ var shortCheckerDisplay = getCheckerDisplay(checker, { short: true });
+ var shortType = 'arrayOf[' + shortCheckerDisplay + ']';
+
+ function type(options) {
+ if (options && options.short) {
+ return shortType;
+ }
+ return getCheckerDisplay(checker, options);
+ }
+ type.__apiCheckData = { optional: false, type: 'arrayOf' };
+
+ return setupChecker(function arrayOfCheckerDefinition(val, name, location) {
+ if (isError(checkers.array(val)) || !val.every(function (item) {
+ return !isError(checker(item));
+ })) {
+ return getError(name, location, shortType);
+ }
+ }, { type: type, shortType: shortType }, disabled);
+ }
+
+ function objectOfCheckGetter(checker) {
+ var checkerDisplay = getCheckerDisplay(checker, { short: true });
+ var shortType = 'objectOf[' + checkerDisplay + ']';
+
+ function type(options) {
+ if (options && options.short) {
+ return shortType;
+ }
+ return getCheckerDisplay(checker, options);
+ }
+ type.__apiCheckData = { optional: false, type: 'objectOf' };
+
+ return setupChecker(function objectOfCheckerDefinition(val, name, location) {
+ var notObject = checkers.object(val, name, location);
+ if (isError(notObject)) {
+ return notObject;
+ }
+ var allTypesSuccess = each(val, function (item, key) {
+ if (isError(checker(item, key, name))) {
+ return false;
+ }
+ });
+ if (!allTypesSuccess) {
+ return getError(name, location, shortType);
+ }
+ }, { type: type, shortType: shortType }, disabled);
+ }
+
+ function typeOrArrayOfCheckGetter(checker) {
+ var checkerDisplay = getCheckerDisplay(checker, { short: true });
+ var shortType = 'typeOrArrayOf[' + checkerDisplay + ']';
+
+ function type(options) {
+ if (options && options.short) {
+ return shortType;
+ }
+ return getCheckerDisplay(checker, options);
+ }
+
+ type.__apiCheckData = { optional: false, type: 'typeOrArrayOf' };
+ return setupChecker(function typeOrArrayOfDefinition(val, name, location, obj) {
+ if (isError(checkers.oneOfType([checker, checkers.arrayOf(checker)])(val, name, location, obj))) {
+ return getError(name, location, shortType);
+ }
+ }, { type: type, shortType: shortType }, disabled);
+ }
+
+ function getShapeCheckGetter() {
+ function shapeCheckGetter(shape, nonObject) {
+ var shapeTypes = {};
+ each(shape, function (checker, prop) {
+ shapeTypes[prop] = getCheckerDisplay(checker);
+ });
+ function type() {
+ var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
+
+ var ret = {};
+ var terse = options.terse;
+ var obj = options.obj;
+ var addHelpers = options.addHelpers;
+
+ var parentRequired = options.required;
+ each(shape, function (checker, prop) {
+ /* eslint complexity:[2, 6] */
+ var specified = obj && obj.hasOwnProperty(prop);
+ var required = undef(parentRequired) ? !checker.isOptional : parentRequired;
+ if (!terse || (specified || !checker.isOptional)) {
+ ret[prop] = getCheckerDisplay(checker, { terse: terse, obj: obj && obj[prop], required: required, addHelpers: addHelpers });
+ }
+ if (addHelpers) {
+ modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required);
+ }
+ });
+ return ret;
+
+ function modifyTypeDisplayToHelpOut(theRet, prop, specified, checker, required) {
+ if (!specified && required && !checker.isOptional) {
+ var item = 'ITEM';
+ if (checker.type && checker.type.__apiCheckData) {
+ item = checker.type.__apiCheckData.type.toUpperCase();
+ }
+ addHelper('missing', 'MISSING THIS ' + item, ' <-- YOU ARE MISSING THIS');
+ } else if (specified) {
+ var error = checker(obj[prop], prop, null, obj);
+ if (isError(error)) {
+ addHelper('error', 'THIS IS THE PROBLEM: ' + error.message, ' <-- THIS IS THE PROBLEM: ' + error.message);
+ }
+ }
+
+ function addHelper(property, objectMessage, stringMessage) {
+ if (typeof theRet[prop] === 'string') {
+ theRet[prop] += stringMessage;
+ } else {
+ theRet[prop].__apiCheckData[property] = objectMessage;
+ }
+ }
+ }
+ }
+
+ type.__apiCheckData = { strict: false, optional: false, type: 'shape' };
+ var shapeChecker = setupChecker(function shapeCheckerDefinition(val, name, location) {
+ /* eslint complexity:[2, 6] */
+ var isObject = !nonObject && checkers.object(val, name, location);
+ if (isError(isObject)) {
+ return isObject;
+ }
+ var shapePropError = undefined;
+ location = location ? location + (name ? '/' : '') : '';
+ name = name || '';
+ each(shape, function (checker, prop) {
+ if (val.hasOwnProperty(prop) || !checker.isOptional) {
+ shapePropError = checker(val[prop], prop, '' + location + name, val);
+ return !isError(shapePropError);
+ }
+ });
+ if (isError(shapePropError)) {
+ return shapePropError;
+ }
+ }, { type: type, shortType: 'shape' }, disabled);
+
+ function strictType() {
+ return type.apply(undefined, arguments);
+ }
+
+ strictType.__apiCheckData = copy(shapeChecker.type.__apiCheckData);
+ strictType.__apiCheckData.strict = true;
+ shapeChecker.strict = setupChecker(function strictShapeCheckerDefinition(val, name, location) {
+ var shapeError = shapeChecker(val, name, location);
+ if (isError(shapeError)) {
+ return shapeError;
+ }
+ var allowedProperties = Object.keys(shape);
+ var extraProps = Object.keys(val).filter(function (prop) {
+ return allowedProperties.indexOf(prop) === -1;
+ });
+ if (extraProps.length) {
+ return new Error(nAtL(name, location) + ' cannot have extra properties: ' + t(extraProps.join('`, `')) + '.' + ('It is limited to ' + t(allowedProperties.join('`, `'))));
+ }
+ }, { type: strictType, shortType: 'strict shape' }, disabled);
+
+ return shapeChecker;
+ }
+
+ shapeCheckGetter.ifNot = function ifNot(otherProps, propChecker) {
+ if (!Array.isArray(otherProps)) {
+ otherProps = [otherProps];
+ }
+ var description = undefined;
+ if (otherProps.length === 1) {
+ description = 'specified only if ' + otherProps[0] + ' is not specified';
+ } else {
+ description = 'specified only if none of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';
+ }
+ var shortType = 'ifNot[' + otherProps.join(', ') + ']';
+ var type = getTypeForShapeChild(propChecker, description, shortType);
+ return setupChecker(function ifNotChecker(prop, propName, location, obj) {
+ var propExists = obj && obj.hasOwnProperty(propName);
+ var otherPropsExist = otherProps.some(function (otherProp) {
+ return obj && obj.hasOwnProperty(otherProp);
+ });
+ if (propExists === otherPropsExist) {
+ return getError(propName, location, type);
+ } else if (propExists) {
+ return propChecker(prop, propName, location, obj);
+ }
+ }, { notRequired: true, type: type, shortType: shortType }, disabled);
+ };
+
+ shapeCheckGetter.onlyIf = function onlyIf(otherProps, propChecker) {
+ otherProps = arrayify(otherProps);
+ var description = undefined;
+ if (otherProps.length === 1) {
+ description = 'specified only if ' + otherProps[0] + ' is also specified';
+ } else {
+ description = 'specified only if all of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';
+ }
+ var shortType = 'onlyIf[' + otherProps.join(', ') + ']';
+ var type = getTypeForShapeChild(propChecker, description, shortType);
+ return setupChecker(function onlyIfCheckerDefinition(prop, propName, location, obj) {
+ var othersPresent = otherProps.every(function (property) {
+ return obj.hasOwnProperty(property);
+ });
+ if (!othersPresent) {
+ return getError(propName, location, type);
+ } else {
+ return propChecker(prop, propName, location, obj);
+ }
+ }, { type: type, shortType: shortType }, disabled);
+ };
+
+ shapeCheckGetter.requiredIfNot = function shapeRequiredIfNot(otherProps, propChecker) {
+ if (!Array.isArray(otherProps)) {
+ otherProps = [otherProps];
+ }
+ return getRequiredIfNotChecker(false, otherProps, propChecker);
+ };
+
+ shapeCheckGetter.requiredIfNot.all = function shapeRequiredIfNotAll(otherProps, propChecker) {
+ if (!Array.isArray(otherProps)) {
+ throw new Error('requiredIfNot.all must be passed an array');
+ }
+ return getRequiredIfNotChecker(true, otherProps, propChecker);
+ };
+
+ function getRequiredIfNotChecker(all, otherProps, propChecker) {
+ var props = t(otherProps.join(', '));
+ var ifProps = 'if ' + (all ? 'all of' : 'at least one of');
+ var description = 'specified ' + ifProps + ' these are not specified: ' + props + ' (otherwise it\'s optional)';
+ var shortType = 'requiredIfNot' + (all ? '.all' : '') + '[' + otherProps.join(', ') + '}]';
+ var type = getTypeForShapeChild(propChecker, description, shortType);
+ return setupChecker(function shapeRequiredIfNotDefinition(prop, propName, location, obj) {
+ var propExists = obj && obj.hasOwnProperty(propName);
+ var iteration = all ? 'every' : 'some';
+ var otherPropsExist = otherProps[iteration](function (otherProp) {
+ return obj && obj.hasOwnProperty(otherProp);
+ });
+ if (!otherPropsExist && !propExists) {
+ return getError(propName, location, type);
+ } else if (propExists) {
+ return propChecker(prop, propName, location, obj);
+ }
+ }, { type: type, notRequired: true }, disabled);
+ }
+
+ return shapeCheckGetter;
+
+ function getTypeForShapeChild(propChecker, description, shortType) {
+ function type(options) {
+ if (options && options.short) {
+ return shortType;
+ }
+ return getCheckerDisplay(propChecker);
+ }
+ type.__apiCheckData = { optional: false, type: 'ifNot', description: description };
+ return type;
+ }
+ }
+
+ function argumentsCheckerGetter() {
+ var type = 'function arguments';
+ return setupChecker(function argsCheckerDefinition(val, name, location) {
+ if (Array.isArray(val) || isError(checkers.object(val)) || isError(checkers.number(val.length))) {
+ return getError(name, location, type);
+ }
+ }, { type: type }, disabled);
+ }
+
+ function anyCheckGetter() {
+ return setupChecker(function anyCheckerDefinition() {
+ // don't do anything
+ }, { type: 'any' }, disabled);
+ }
+
+ function nullCheckGetter() {
+ var type = 'null';
+ return setupChecker(function nullChecker(val, name, location) {
+ if (val !== null) {
+ return getError(name, location, type);
+ }
+ }, { type: type }, disabled);
+ }
+
+ function rangeCheckGetter(min, max) {
+ var type = 'Range (' + min + ' - ' + max + ')';
+ return setupChecker(function rangeChecker(val, name, location) {
+ if (typeof val !== 'number' || val < min || val > max) {
+ return getError(name, location, type);
+ }
+ }, { type: type }, disabled);
+ }
+
+ function lessThanCheckGetter(min) {
+ var type = 'lessThan[' + min + ']';
+ return setupChecker(function lessThanChecker(val, name, location) {
+ if (typeof val !== 'number' || val > min) {
+ return getError(name, location, type);
+ }
+ }, { type: type }, disabled);
+ }
+
+ function greaterThanCheckGetter(max) {
+ var type = 'greaterThan[' + max + ']';
+ return setupChecker(function greaterThanChecker(val, name, location) {
+ if (typeof val !== 'number' || val < max) {
+ return getError(name, location, type);
+ }
+ }, { type: type }, disabled);
+ }
+
+ function emptyObjectCheckGetter() {
+ var type = 'empty object';
+ return setupChecker(function emptyObjectChecker(val, name, location) {
+ if (typeOf(val) !== 'object' || val === null || Object.keys(val).length) {
+ return getError(name, location, type);
+ }
+ }, { type: type }, disabled);
+ }
+ }
+
+/***/ }
+/******/ ])
+});
+;
\ No newline at end of file
diff --git a/static/js/api-check.min.js b/static/js/api-check.min.js
index 61ed10a..b6c9bb1 100644
--- a/static/js/api-check.min.js
+++ b/static/js/api-check.min.js
@@ -1,4 +1,3 @@
-// apiCheck.js v7.2.4 built with ♥ by Kent C. Dodds (ó ì_í)=óò=(ì_í ò)
-
-!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):"object"==typeof exports?exports.apiCheck=r():e.apiCheck=r()}(this,function(){return function(e){function r(n){if(t[n])return t[n].exports;var o=t[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}var t={};return r.m=e,r.c=t,r.p="",r(0)}([function(e,r,t){"use strict";e.exports=t(3)},function(e){function r(e,r){var n=[],o=[];return r=r||function(e,r){return"[Circular "+t(r,n,o)+"]"},function(t,i){var a=i;return"object"==typeof i&&i&&(-1!==n.indexOf(i)?a=r(t,i):(n.push(i),o.push(t))),e&&(a=e(t,a)),a}}function t(e,r,t){var n=r.indexOf(e),o=[t[n]];for(n--;n>=0;n--)r[n][o[0]]===e&&(e=r[n],o.unshift(t[n]));return"~"+o.join(".")}function n(e,t,n,o){return JSON.stringify(e,r(t,o),n)}e.exports=n,n.getSerialize=r},function(e,r,t){"use strict";function n(e){var r=o(e),t=void 0;if("array"===r)t=[];else{if("object"!==r)return e;t={}}return p(e,function(e,r){t[r]=e}),t}function o(e){return Array.isArray(e)?"array":e instanceof RegExp?"object":typeof e}function i(e,r){var t=void 0,n=r&&r["short"];return t=n&&e.shortType?e.shortType:!n&&"object"==typeof e.type||"function"===e.type?a(e,r):a(e,r)||e.displayName||e.name}function a(e,r){var t=e.type;if("function"==typeof t){var n=t.__apiCheckData,o=t(r);t=_({__apiCheckData:n},n.type,o)}return t}function u(e){return e?Array.isArray(e)?e:[e]:[]}function p(e){return Array.isArray(e)?c.apply(void 0,arguments):f.apply(void 0,arguments)}function f(e,r,t){var n,o=Object.prototype.hasOwnProperty;for(var i in e)if(o.call(e,i)&&(n=r.call(t,e[i],i,e),n===!1))return n;return!0}function c(e,r,t){for(var n,o=e.length,i=0;o>i;i++)if(n=r.call(t,e[i],i,e),n===!1)return n;return!0}function s(e){return e instanceof Error}function l(e,r,t){e=u(e);var n=e.slice(),o=n.pop();return 1===n.length&&(r=" "),n.join(r)+(""+(n.length?r+t:"")+o)}function y(e,r,t){"function"==typeof t&&(t=t({"short":!0}));var n="object"!=typeof t?t:A(t);return new Error(""+h(e,r)+" must be "+d(n))}function h(e,r){var t=d(e||"value"),n=r?" at "+d(r):"";return""+t+n}function d(e){return"`"+e+"`"}function v(e){return"undefined"==typeof e}function g(e,r,t){return t&&(e=x(),e.isNoop=!0),"string"==typeof e.type&&(e.shortType=e.type),p(r,function(r,t){return e[t]=r}),e.displayName||(e.displayName="apiCheck "+d(e.shortType||e.type||e.name)+" type checker"),e.notRequired||(e=b(e,t)),e.notNullable||O(e,t),e.notOptional||m(e,t),e}function b(e,r){var t=r?x():function(r,t,n,o){if(v(r)&&!e.isOptional){var a=n?" in "+d(n):"",u=i(e,{"short":!0}),p="object"!=typeof u?u:A(u);return new Error("Required "+d(t)+" not specified"+a+". Must be "+d(p))}return e(r,t,n,o)};return C(e,t),t.originalChecker=e,t}function m(e,r){var t=r?x():function(r,t,n,o){return v(r)?void 0:e(r,t,n,o)};C(e,t),t.isOptional=!0,t.displayName=e.displayName+" (optional)",t.originalChecker=e,e.optional=t,k(e,e.optional)}function O(e,r){var t=r?x():function(r,t,n,o){return null!==r?e(r,t,n,o):void 0};C(e,t),t.isNullable=!0,t.displayName=e.displayName+" (nullable)",t.originalChecker=e,e.nullable=t,k(e,e.nullable),e.notOptional||m(e.nullable,r)}function k(e,r){if("object"==typeof r.type)r.type=n(r.type);else{if("function"!=typeof r.type)return void(r.type+=" (optional)");r.type=function(){return e.type.apply(e,arguments)}}r.type.__apiCheckData=n(e.type.__apiCheckData)||{},r.type.__apiCheckData.optional=!0}function C(e,r){p(Object.keys(e),function(t){return r[t]=e[t]})}function j(){}function x(){return function(){}}var _=function(e,r,t){return Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0})},A=t(1),w={addOptional:m,getRequiredVersion:b,setupChecker:g,addNullable:O};e.exports={each:p,copy:n,typeOf:o,arrayify:u,getCheckerDisplay:i,isError:s,list:l,getError:y,nAtL:h,t:d,undef:v,checkerHelpers:w,noop:j}},function(e,r,t){"use strict";function n(){function r(n,i,a){if(r.config.disabled||e.exports.globalConfig.disabled)return{apiTypes:{},argTypes:{},passed:!0,message:"",failed:!1};t(arguments),Array.isArray(n)?i=Array.prototype.slice.call(i):(n=[n],i=[i]);var u=p(n,i);u.length||(u=o(n,i));var f=c(n,i);return u.length?(f.message=r.getErrorMessage(n,i,u,a),f.failed=!0,f.passed=!1):(f.message="",f.failed=!1,f.passed=!0),f}function t(e){var t=e[0],n=e[1],i=Array.isArray(n)||n&&"object"==typeof n&&"number"==typeof n.length;if(Array.isArray(t)&&!i)throw new Error(a(t,[n],["If an array is provided for the api, an array must be provided for the args as well."],{prefix:"apiCheck"}));var u=o(C.checkApiCheckApi,e);if(u.length){var p=r.getErrorMessage(C.checkApiCheckApi,e,u,{prefix:"apiCheck"});r.handleErrorMessage(p,!0)}}function n(e){return function(t,n,o){var i=r(t,n,o);return r.handleErrorMessage(i.message,e),i}}function i(e,r){if(r&&e)throw new Error(e);e&&console.warn(e)}function a(e,t){function n(){var e=p.onlyPrefix;return e||(e=(""+(f.prefix||"")+" "+(p.prefix||"")).trim()),e}function o(){var e=p.onlySuffix;return e||(e=(""+(p.suffix||"")+" "+(f.suffix||"")).trim()),e}function i(){var e=p.url;return e||(e=f.docsBaseUrl&&p.urlSuffix&&(""+f.docsBaseUrl+p.urlSuffix).trim()),e}var a=void 0===arguments[2]?[]:arguments[2],p=void 0===arguments[3]?{}:arguments[3],f=r.config.output||{},c=n(),s=o(),l=i(),y="apiCheck failed! "+a.join(", "),h="\n\n"+u(e,t);return(""+c+" "+y+" "+s+" "+(l||"")+h).trim()}function u(e,r){function t(e){h(e,function(r,n){-1===f.indexOf(r)&&(f.push(r),"object"==typeof r?t(e):"function"==typeof r&&(e[n]=r.displayName||r.name||"anonymous function"))})}function n(e){return e&&e.length?(e&&1===e.length&&(e=e[0]),l(e,null,2)):"nothing"}function o(){var e="\n",t=!0;r&&1===r.length&&(t="object"==typeof r[0]?!!Object.keys(r[0]).length:!1);var n="type"+(t?"s":""),o=e+e;return"You passed:"+e+s+o+("With the "+n+":"+e+u+o)+("The API calls for:"+e+a)}var i=c(e,r),a=i.apiTypes,u=i.argTypes,p=Array.prototype.slice.call(r||[]),f=[];t(p);var s=n(p);return u=n(u),a=n(a),o()}function c(t,n){t=g(t),n=g(n);var o=t.map(function(t,o){var i=e.exports.globalConfig.hasOwnProperty("verbose");return b(t,{terse:i?!e.exports.globalConfig.verbose:!r.config.verbose,obj:n[o],addHelpers:!0})}),i=n.map(function(e){return f(e,[])});return{argTypes:i,apiTypes:o}}var s=void 0===arguments[0]?{}:arguments[0],d=void 0===arguments[1]?{}:arguments[1];j&&arguments.length&&j["throw"](C.getApiCheckInstanceCheckers,arguments,{prefix:"creating an apiCheck instance"});var v={"throw":n(!0),warn:n(!1),getErrorMessage:a,handleErrorMessage:i,config:{output:s.output||{prefix:"",suffix:"",docsBaseUrl:""},verbose:s.verbose||!1,disabled:s.disabled||!1},utils:y};h(v,function(e,t){return r[t]=e});var m=r.disabled||e.exports.globalConfig.disabled;return h(k.getCheckers(m),function(e,t){return r[t]=e}),h(d,function(e,t){return r[t]=e}),r}function o(e,r){for(var t=[],n=!1,o=0,i=0,u=void 0,p=void 0,f=void 0,c=void 0,s=void 0,l=void 0,y=void 0;(p=e[o++])&&i=e.length,y=o>1&&e[o-1].isOptional,l&&c||l&&!c&&!p.isOptional&&!y?(n=!0,t.push(a(f,p,u))):l&&p.isOptional?i--:t.push(""+v(s)+" passed");return n?t:[]}function i(e,r,t){var n=k.shape({type:k.string,optional:k.bool}),o=k.func.withProperties({__apiCheckData:n}),a=k.shape({__apiCheckData:n}),u=k.oneOfType([o,a])(e,r,t);return d(u)?u:"function"==typeof e||e.hasOwnProperty(e.__apiCheckData.type)?void 0:O(r,t,i.type)}function a(e,r,t){var n=u(r,t);return n=n?" - "+n:"",e.message+n}function u(e,r){var t=e.help;return t?("function"==typeof t&&(t=t(r)),t):""}function p(e,r){var t=e.filter(function(e){return!e.isOptional});return r.lengthe||e>t?y(o,i,n):void 0},{type:n},e)}function D(){var r="empty object";return b(function(e,t,n){return"object"!==a(e)||null===e||Object.keys(e).length?y(t,n,r):void 0},{type:r},e)}return{array:r("Array"),bool:r("Boolean"),number:r("Number"),string:r("String"),func:t(),object:n(),emptyObject:D(),instanceOf:i,oneOf:v,oneOfType:O,arrayOf:k,objectOf:C,typeOrArrayOf:j,range:T,shape:x(),args:_(),any:A(),"null":w()}}var o=t(1),i=t(2),a=i.typeOf,u=i.each,p=i.copy,f=i.getCheckerDisplay,c=i.isError,s=i.arrayify,l=i.list,y=i.getError,h=i.nAtL,d=i.t,v=i.checkerHelpers,g=i.undef,b=v.setupChecker,m=e.exports=n();e.exports.getCheckers=n}])});
+//! api-check version 7.5.5 built with ♥ by Kent C. Dodds (http://kent.doddsfamily.us) (ó ì_í)=óò=(ì_í ò)
+!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):"object"==typeof exports?exports.apiCheck=r():e.apiCheck=r()}(this,function(){return function(e){function r(n){if(t[n])return t[n].exports;var o=t[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}var t={};return r.m=e,r.c=t,r.p="",r(0)}([function(e,r,t){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(r,"__esModule",{value:!0});var o=t(3),i=n(o);r["default"]=i["default"],e.exports=r["default"]},function(e,r){function t(e,r){var t=[],o=[];return r=r||function(e,r){return"[Circular "+n(r,t,o)+"]"},function(n,i){var a=i;return"object"==typeof i&&i&&(-1!==t.indexOf(i)?a=r(n,i):(t.push(i),o.push(n))),e&&(a=e(n,a)),a}}function n(e,r,t){var n=r.indexOf(e),o=[t[n]];for(n--;n>=0;n--)r[n][o[0]]===e&&(e=r[n],o.unshift(t[n]));return"~"+o.join(".")}function o(e,r,n,o){return JSON.stringify(e,t(r,o),n)}e.exports=o,o.getSerialize=t},function(e,r,t){"use strict";function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e){var r=i(e),t=void 0;if("array"===r)t=[];else{if("object"!==r)return e;t={}}return f(e,function(e,r){t[r]=e}),t}function i(e){return Array.isArray(e)?"array":e instanceof RegExp?"object":typeof e}function a(e,r){var t=void 0,n=r&&r["short"];return t=n&&e.shortType?e.shortType:!n&&"object"==typeof e.type||"function"===e.type?u(e,r):u(e,r)||e.displayName||e.name}function u(e,r){var t=e.type;if("function"==typeof t){var o=t.__apiCheckData,i=t(r);t=n({__apiCheckData:o},o.type,i)}return t}function p(e){return e?Array.isArray(e)?e:[e]:[]}function f(e,r,t){return Array.isArray(e)?s(e,r,t):c(e,r,t)}function c(e,r,t){var n=void 0,o=Object.prototype.hasOwnProperty;for(var i in e)if(o.call(e,i)&&(n=r.call(t,e[i],i,e),n===!1))return n;return!0}function s(e,r,t){for(var n=void 0,o=e.length,i=0;o>i;i++)if(n=r.call(t,e[i],i,e),n===!1)return n;return!0}function l(e){return e instanceof Error}function y(e,r,t){e=p(e);var n=e.slice(),o=n.pop();return 1===n.length&&(r=" "),n.join(r)+(""+(n.length?r+t:"")+o)}function h(e,r,t){"function"==typeof t&&(t=t({"short":!0}));var n="object"!=typeof t?t:A(t);return new Error(d(e,r)+" must be "+v(n))}function d(e,r){var t=v(e||"value"),n=r?" at "+v(r):"";return""+t+n}function v(e){return"`"+e+"`"}function g(e){return"undefined"==typeof e}function b(e,r,t){return t&&(e=_(),e.isNoop=!0),"string"==typeof e.type&&(e.shortType=e.type),f(r,function(r,t){return e[t]=r}),e.displayName||(e.displayName="apiCheck "+v(e.shortType||e.type||e.name)+" type checker"),e.notRequired||(e=m(e,t)),e.notNullable||k(e,t),e.notOptional||O(e,t),e}function m(e,r){var t=r?_():function(r,t,n,o){if(g(r)&&!e.isOptional){var i=n?" in "+v(n):"",u=a(e,{"short":!0}),p="object"!=typeof u?u:A(u);return new Error("Required "+v(t)+" not specified"+i+". Must be "+v(p))}return e(r,t,n,o)};return j(e,t),t.originalChecker=e,t}function O(e,r){var t=r?_():function(r,t,n,o){return g(r)?void 0:e(r,t,n,o)};j(e,t),t.isOptional=!0,t.displayName=e.displayName+" (optional)",t.originalChecker=e,e.optional=t,C(e,e.optional)}function k(e,r){var t=r?_():function(r,t,n,o){return null!==r?e(r,t,n,o):void 0};j(e,t),t.isNullable=!0,t.displayName=e.displayName+" (nullable)",t.originalChecker=e,e.nullable=t,C(e,e.nullable),e.notOptional||O(e.nullable,r)}function C(e,r){if("object"==typeof r.type)r.type=o(r.type);else{if("function"!=typeof r.type)return void(r.type+=" (optional)");r.type=function(){return e.type.apply(e,arguments)}}r.type.__apiCheckData=o(e.type.__apiCheckData)||{},r.type.__apiCheckData.optional=!0}function j(e,r){f(Object.keys(e),function(t){return r[t]=e[t]})}function x(){}function _(){return function(){}}var A=t(1),T={addOptional:O,getRequiredVersion:m,setupChecker:b,addNullable:k};e.exports={each:f,copy:o,typeOf:i,arrayify:p,getCheckerDisplay:a,isError:l,list:y,getError:h,nAtL:d,t:v,undef:g,checkerHelpers:T,noop:x}},function(e,r,t){"use strict";function n(){function r(n,i,a){if(r.config.disabled||e.exports.globalConfig.disabled)return{apiTypes:{},argTypes:{},passed:!0,message:"",failed:!1};t(arguments),Array.isArray(n)?i=Array.prototype.slice.call(i):(n=[n],i=[i]);var u=p(n,i);u.length||(u=o(n,i));var f=c(n,i);return f.args=i,u.length?(f.message=r.getErrorMessage(n,i,u,a),f.failed=!0,f.passed=!1):(f.message="",f.failed=!1,f.passed=!0),f}function t(e){var t=e[0],n=e[1],i=Array.isArray(n)||n&&"object"==typeof n&&"number"==typeof n.length;if(Array.isArray(t)&&!i)throw new Error(a(t,[n],["If an array is provided for the api, an array must be provided for the args as well."],{prefix:"apiCheck"}));var u=o(C.checkApiCheckApi,e);if(u.length){var p=r.getErrorMessage(C.checkApiCheckApi,e,u,{prefix:"apiCheck"});r.handleErrorMessage(p,!0)}}function n(e){return function(t,n,o){var i=r(t,n,o);return r.handleErrorMessage(i.message,e),i}}function i(e,r){if(r&&e)throw new Error(e);e&&console.warn(e)}function a(e,t){function n(){var e=p.onlyPrefix;return e||(e=((f.prefix||"")+" "+(p.prefix||"")).trim()),e}function o(){var e=p.onlySuffix;return e||(e=((p.suffix||"")+" "+(f.suffix||"")).trim()),e}function i(){var e=p.url;return e||(e=f.docsBaseUrl&&p.urlSuffix&&(""+f.docsBaseUrl+p.urlSuffix).trim()),e}var a=arguments.length<=2||void 0===arguments[2]?[]:arguments[2],p=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],f=r.config.output||{},c=n(),s=o(),l=i(),y="apiCheck failed! "+a.join(", "),h="\n\n"+u(e,t);return(c+" "+y+" "+s+" "+(l||"")+h).trim()}function u(e,r){function t(e){h(e,function(r,n){-1===f.indexOf(r)&&(f.push(r),"object"==typeof r?t(e):"function"==typeof r&&(e[n]=r.displayName||r.name||"anonymous function"))})}function n(e){return e&&e.length?(e&&1===e.length&&(e=e[0]),l(e,null,2)):"nothing"}function o(){var e="\n",t=!0;r&&1===r.length&&(t="object"==typeof r[0]&&null!==r[0]?!!Object.keys(r[0]).length:!1);var n="type"+(t?"s":""),o=e+e;return"You passed:"+e+s+o+("With the "+n+":"+e+u+o)+("The API calls for:"+e+a)}var i=c(e,r),a=i.apiTypes,u=i.argTypes,p=Array.prototype.slice.call(r||[]),f=[];t(p);var s=n(p);return u=n(u),a=n(a),o()}function c(t,n){t=g(t),n=g(n);var o=t.map(function(t,o){var i=e.exports.globalConfig.hasOwnProperty("verbose");return b(t,{terse:i?!e.exports.globalConfig.verbose:!r.config.verbose,obj:n[o],addHelpers:!0})}),i=n.map(function(e){return f(e,[])});return{argTypes:i,apiTypes:o}}var s=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],d=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];j&&arguments.length&&j["throw"](C.getApiCheckInstanceCheckers,arguments,{prefix:"creating an apiCheck instance"});var v={"throw":n(!0),warn:n(!1),getErrorMessage:a,handleErrorMessage:i,config:{output:s.output||{prefix:"",suffix:"",docsBaseUrl:""},verbose:s.verbose||!1,disabled:s.disabled||!1},utils:y};h(v,function(e,t){return r[t]=e});var m=r.disabled||e.exports.globalConfig.disabled;return h(k.getCheckers(m),function(e,t){return r[t]=e}),h(d,function(e,t){return r[t]=e}),r}function o(e,r){for(var t=[],n=!1,o=0,i=0,u=void 0,p=void 0,f=void 0,c=void 0,s=void 0,l=void 0,y=void 0;(p=e[o++])&&i=e.length,y=o>1&&e[o-1].isOptional,l&&c||l&&!c&&!p.isOptional&&!y?(n=!0,t.push(a(f,p,u))):l&&p.isOptional?i--:t.push(v(s)+" passed");return n?t:[]}function i(e,r,t){var n=k.shape({type:k.string,optional:k.bool}),o=k.func.withProperties({__apiCheckData:n}),a=k.shape({__apiCheckData:n}),u=k.oneOfType([o,a])(e,r,t);return d(u)?u:"function"==typeof e||e.hasOwnProperty(e.__apiCheckData.type)?void 0:O(r,t,i.type)}function a(e,r,t){var n=u(r,t);return n=n?" - "+n:"",e.message+n}function u(e,r){var t=e.help;return t?("function"==typeof t&&(t=t(r)),t):""}function p(e,r){var t=e.filter(function(e){return!e.isOptional});return r.lengthe||e>t?y(o,i,n):void 0},{type:n},e)}function E(r){var t="lessThan["+r+"]";return b(function(e,n,o){return"number"!=typeof e||e>r?y(n,o,t):void 0},{type:t},e)}function D(r){var t="greaterThan["+r+"]";return b(function(e,n,o){return"number"!=typeof e||r>e?y(n,o,t):void 0},{type:t},e)}function N(){var r="empty object";return b(function(e,t,n){return"object"!==a(e)||null===e||Object.keys(e).length?y(t,n,r):void 0},{type:r},e)}return{array:r("Array"),bool:r("Boolean"),number:r("Number"),string:r("String"),func:t(),object:n(),emptyObject:N(),instanceOf:i,oneOf:v,oneOfType:O,arrayOf:k,objectOf:C,typeOrArrayOf:j,range:w,lessThan:E,greaterThan:D,shape:x(),args:_(),any:A(),"null":T()}}var o=t(1),i=t(2),a=i.typeOf,u=i.each,p=i.copy,f=i.getCheckerDisplay,c=i.isError,s=i.arrayify,l=i.list,y=i.getError,h=i.nAtL,d=i.t,v=i.checkerHelpers,g=i.undef,b=v.setupChecker,m=e.exports=n();e.exports.getCheckers=n}])});
//# sourceMappingURL=api-check.min.js.map
\ No newline at end of file
diff --git a/static/js/api-check.min.js.map b/static/js/api-check.min.js.map
index e2cd834..11acc90 100644
--- a/static/js/api-check.min.js.map
+++ b/static/js/api-check.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///api-check.min.js","webpack:///webpack/bootstrap 494eb46361cc8c5a6356","webpack:///./index.js","webpack:///../~/json-stringify-safe/stringify.js","webpack:///./apiCheckUtil.js","webpack:///./apiCheck.js","webpack:///./checkers.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","getSerialize","fn","decycle","seen","keys","key","value","getPath","ret","indexOf","push","index","path","unshift","join","stringify","obj","spaces","JSON","copy","type","typeOf","daCopy","undefined","each","val","Array","isArray","RegExp","getCheckerDisplay","checker","options","display","short","shortType","getCheckerType","displayName","name","_ref","__apiCheckData","typeTypes","_defineProperty","arrayify","eachArry","apply","arguments","eachObj","iterator","context","hasOwn","Object","prototype","hasOwnProperty","length","i","isError","Error","list","arry","finalJoin","slice","last","pop","getError","location","checkerType","stringType","nAtL","t","tName","tLocation","thing","undef","setupChecker","properties","disabled","getNoop","isNoop","prop","notRequired","getRequiredVersion","notNullable","addNullable","notOptional","addOptional","requiredChecker","isOptional","copyProps","originalChecker","optionalCheck","optional","fixType","nullableCheck","isNullable","nullable","checkerCopy","src","dest","noop","defineProperty","enumerable","configurable","writable","checkerHelpers","getApiCheckInstance","apiCheck","api","args","output","config","globalConfig","apiTypes","argTypes","passed","message","failed","checkApiCheckApi","messages","checkEnoughArgs","checkApiWithArgs","returnObject","getTypes","getErrorMessage","checkApiArgs","isArrayOrArgs","prefix","errors","apiCheckApis","handleErrorMessage","getApiCheck","shouldThrow","result","console","warn","getPrefix","onlyPrefix","gOut","trim","getSuffix","suffix","onlySuffix","getUrl","url","docsBaseUrl","urlSuffix","passedAndShouldHavePassed","buildMessageFromApiAndArgs","replaceFunctionWithName","replacedItems","getObjectString","types","generateMessage","n","useS","newLine","passedArgs","_getTypes","map","specified","terse","verbose","addHelpers","arg","getArgDisplay","extraCheckers","apiCheckApiCheck","getApiCheckInstanceCheckers","additionalProperties","throw","utils","apiCheckUtil","wrapper","checkers","getCheckers","checkerIndex","argIndex","res","lastChecker","argName","argFailed","skipPreviousChecker","getCheckerErrorMessage","checkerTypeType","apiCheckDataChecker","shape","string","bool","asFunc","func","withProperties","asShape","wrongShape","oneOfType","checkerHelp","getCheckerHelp","help","requiredArgs","filter","a","gottenArgs","hasKeys","getDisplayIfNotGotten","getDisplay","cName","constructor","argDisplay","v","k","getApiCheckApis","os","checkerFnChecker","strict","objectOf","typeOrArrayOf","any","internalChecker","typeOfCheckGetter","lType","toLowerCase","funcCheckGetter","functionChecker","apiError","shapeChecker","notFunction","objectCheckGetter","nullType","objectNullOkChecker","objectChecker","nullOk","instanceCheckGetter","classToCheck","oneOfCheckGetter","enums","enum","enm","some","oneOfTypeCheckGetter","checkersDisplay","arrayOfCheckGetter","shortCheckerDisplay","array","every","item","objectOfCheckGetter","checkerDisplay","notObject","object","allTypesSuccess","typeOrArrayOfCheckGetter","arrayOf","getShapeCheckGetter","shapeCheckGetter","nonObject","modifyTypeDisplayToHelpOut","required","addHelper","property","objectMessage","stringMessage","error","toUpperCase","parentRequired","strictType","shapeTypes","isObject","shapePropError","shapeError","allowedProperties","extraProps","getRequiredIfNotChecker","all","otherProps","propChecker","props","ifProps","description","getTypeForShapeChild","propName","propExists","iteration","otherPropsExist","otherProp","ifNot","onlyIf","othersPresent","requiredIfNot","argumentsCheckerGetter","number","anyCheckGetter","nullCheckGetter","rangeCheckGetter","min","max","emptyObjectCheckGetter","emptyObject","instanceOf","oneOf","range","null","_require"],"mappings":"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","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apiCheck\"] = factory();\n\telse\n\t\troot[\"apiCheck\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apiCheck\"] = factory();\n\telse\n\t\troot[\"apiCheck\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = __webpack_require__(3);\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = stringify;\n\t\n\tfunction getSerialize (fn, decycle) {\n\t var seen = [], keys = [];\n\t decycle = decycle || function(key, value) {\n\t return '[Circular ' + getPath(value, seen, keys) + ']'\n\t };\n\t return function(key, value) {\n\t var ret = value;\n\t if (typeof value === 'object' && value) {\n\t if (seen.indexOf(value) !== -1)\n\t ret = decycle(key, value);\n\t else {\n\t seen.push(value);\n\t keys.push(key);\n\t }\n\t }\n\t if (fn) ret = fn(key, ret);\n\t return ret;\n\t }\n\t}\n\t\n\tfunction getPath (value, seen, keys) {\n\t var index = seen.indexOf(value);\n\t var path = [ keys[index] ];\n\t for (index--; index >= 0; index--) {\n\t if (seen[index][ path[0] ] === value) {\n\t value = seen[index];\n\t path.unshift(keys[index]);\n\t }\n\t }\n\t return '~' + path.join('.');\n\t}\n\t\n\tfunction stringify(obj, fn, spaces, decycle) {\n\t return JSON.stringify(obj, getSerialize(fn, decycle), spaces);\n\t}\n\t\n\tstringify.getSerialize = getSerialize;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tvar _defineProperty = function (obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); };\n\t\n\tvar stringify = __webpack_require__(1);\n\tvar checkerHelpers = {\n\t addOptional: addOptional, getRequiredVersion: getRequiredVersion, setupChecker: setupChecker, addNullable: addNullable\n\t};\n\t\n\tmodule.exports = {\n\t each: each, copy: copy, typeOf: typeOf, arrayify: arrayify, getCheckerDisplay: getCheckerDisplay,\n\t isError: isError, list: list, getError: getError, nAtL: nAtL, t: t, undef: undef, checkerHelpers: checkerHelpers,\n\t noop: noop\n\t};\n\t\n\tfunction copy(obj) {\n\t var type = typeOf(obj);\n\t var daCopy = undefined;\n\t if (type === \"array\") {\n\t daCopy = [];\n\t } else if (type === \"object\") {\n\t daCopy = {};\n\t } else {\n\t return obj;\n\t }\n\t each(obj, function (val, key) {\n\t daCopy[key] = val; // cannot single-line this because we don't want to abort the each\n\t });\n\t return daCopy;\n\t}\n\t\n\tfunction typeOf(obj) {\n\t if (Array.isArray(obj)) {\n\t return \"array\";\n\t } else if (obj instanceof RegExp) {\n\t return \"object\";\n\t } else {\n\t return typeof obj;\n\t }\n\t}\n\t\n\tfunction getCheckerDisplay(checker, options) {\n\t /* jshint maxcomplexity:7 */\n\t var display = undefined;\n\t var short = options && options.short;\n\t if (short && checker.shortType) {\n\t display = checker.shortType;\n\t } else if (!short && typeof checker.type === \"object\" || checker.type === \"function\") {\n\t display = getCheckerType(checker, options);\n\t } else {\n\t display = getCheckerType(checker, options) || checker.displayName || checker.name;\n\t }\n\t return display;\n\t}\n\t\n\tfunction getCheckerType(_ref, options) {\n\t var type = _ref.type;\n\t\n\t if (typeof type === \"function\") {\n\t var __apiCheckData = type.__apiCheckData;\n\t var typeTypes = type(options);\n\t type = _defineProperty({\n\t __apiCheckData: __apiCheckData }, __apiCheckData.type, typeTypes);\n\t }\n\t return type;\n\t}\n\t\n\tfunction arrayify(obj) {\n\t if (!obj) {\n\t return [];\n\t } else if (Array.isArray(obj)) {\n\t return obj;\n\t } else {\n\t return [obj];\n\t }\n\t}\n\t\n\tfunction each(obj, iterator, context) {\n\t if (Array.isArray(obj)) {\n\t return eachArry.apply(undefined, arguments);\n\t } else {\n\t return eachObj.apply(undefined, arguments);\n\t }\n\t}\n\t\n\tfunction eachObj(obj, iterator, context) {\n\t var ret;\n\t var hasOwn = Object.prototype.hasOwnProperty;\n\t for (var key in obj) {\n\t if (hasOwn.call(obj, key)) {\n\t ret = iterator.call(context, obj[key], key, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t }\n\t return true;\n\t}\n\t\n\tfunction eachArry(obj, iterator, context) {\n\t var ret;\n\t var length = obj.length;\n\t for (var i = 0; i < length; i++) {\n\t ret = iterator.call(context, obj[i], i, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t return true;\n\t}\n\t\n\tfunction isError(obj) {\n\t return obj instanceof Error;\n\t}\n\t\n\tfunction list(arry, join, finalJoin) {\n\t arry = arrayify(arry);\n\t var copy = arry.slice();\n\t var last = copy.pop();\n\t if (copy.length === 1) {\n\t join = \" \";\n\t }\n\t return copy.join(join) + (\"\" + (copy.length ? join + finalJoin : \"\") + \"\" + last);\n\t}\n\t\n\tfunction getError(name, location, checkerType) {\n\t if (typeof checkerType === \"function\") {\n\t checkerType = checkerType({ short: true });\n\t }\n\t var stringType = typeof checkerType !== \"object\" ? checkerType : stringify(checkerType);\n\t return new Error(\"\" + nAtL(name, location) + \" must be \" + t(stringType));\n\t}\n\t\n\tfunction nAtL(name, location) {\n\t var tName = t(name || \"value\");\n\t var tLocation = !location ? \"\" : \" at \" + t(location);\n\t return \"\" + tName + \"\" + tLocation;\n\t}\n\t\n\tfunction t(thing) {\n\t return \"`\" + thing + \"`\";\n\t}\n\t\n\tfunction undef(thing) {\n\t return typeof thing === \"undefined\";\n\t}\n\t\n\t/**\n\t * This will set up the checker with all of the defaults that most checkers want like required by default and an\n\t * optional version\n\t * @param checker\n\t * @param properties properties to add to the checker\n\t * @param disabled - when set to true, this will set the checker to a no-op function\n\t */\n\tfunction setupChecker(checker, properties, disabled) {\n\t /* jshint maxcomplexity:9 */\n\t if (disabled) {\n\t // swap out the checker for its own copy of noop\n\t checker = getNoop();\n\t checker.isNoop = true;\n\t }\n\t\n\t if (typeof checker.type === \"string\") {\n\t checker.shortType = checker.type;\n\t }\n\t\n\t // assign all properties given\n\t each(properties, function (prop, name) {\n\t return checker[name] = prop;\n\t });\n\t\n\t if (!checker.displayName) {\n\t checker.displayName = \"apiCheck \" + t(checker.shortType || checker.type || checker.name) + \" type checker\";\n\t }\n\t\n\t if (!checker.notRequired) {\n\t checker = getRequiredVersion(checker, disabled);\n\t }\n\t\n\t if (!checker.notNullable) {\n\t addNullable(checker, disabled);\n\t }\n\t\n\t if (!checker.notOptional) {\n\t addOptional(checker, disabled);\n\t }\n\t\n\t return checker;\n\t}\n\t\n\tfunction getRequiredVersion(checker, disabled) {\n\t var requiredChecker = disabled ? getNoop() : function requiredChecker(val, name, location, obj) {\n\t if (undef(val) && !checker.isOptional) {\n\t var tLocation = location ? \" in \" + t(location) : \"\";\n\t var type = getCheckerDisplay(checker, { short: true });\n\t var stringType = typeof type !== \"object\" ? type : stringify(type);\n\t return new Error(\"Required \" + t(name) + \" not specified\" + tLocation + \". Must be \" + t(stringType));\n\t } else {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t copyProps(checker, requiredChecker);\n\t requiredChecker.originalChecker = checker;\n\t return requiredChecker;\n\t}\n\t\n\tfunction addOptional(checker, disabled) {\n\t var optionalCheck = disabled ? getNoop() : function optionalCheck(val, name, location, obj) {\n\t if (!undef(val)) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, optionalCheck);\n\t\n\t optionalCheck.isOptional = true;\n\t optionalCheck.displayName = checker.displayName + \" (optional)\";\n\t optionalCheck.originalChecker = checker;\n\t\n\t // the magic line that allows you to add .optional to the end of the checkers\n\t checker.optional = optionalCheck;\n\t\n\t fixType(checker, checker.optional);\n\t}\n\t\n\tfunction addNullable(checker, disabled) {\n\t var nullableCheck = disabled ? getNoop() : function nullableCheck(val, name, location, obj) {\n\t if (val !== null) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, nullableCheck);\n\t\n\t nullableCheck.isNullable = true;\n\t nullableCheck.displayName = checker.displayName + \" (nullable)\";\n\t nullableCheck.originalChecker = checker;\n\t\n\t // the magic line that allows you to add .nullable to the end of the checkers\n\t checker.nullable = nullableCheck;\n\t\n\t fixType(checker, checker.nullable);\n\t if (!checker.notOptional) {\n\t addOptional(checker.nullable, disabled);\n\t }\n\t}\n\t\n\tfunction fixType(checker, checkerCopy) {\n\t // fix type, because it's not a straight copy...\n\t // the reason is we need to specify type.__apiCheckData.optional as true for the terse/verbose option.\n\t // we also want to add \"(optional)\" to the types with a string\n\t if (typeof checkerCopy.type === \"object\") {\n\t checkerCopy.type = copy(checkerCopy.type); // make our own copy of this\n\t } else if (typeof checkerCopy.type === \"function\") {\n\t checkerCopy.type = function () {\n\t return checker.type.apply(checker, arguments);\n\t };\n\t } else {\n\t checkerCopy.type += \" (optional)\";\n\t return;\n\t }\n\t checkerCopy.type.__apiCheckData = copy(checker.type.__apiCheckData) || {}; // and this\n\t checkerCopy.type.__apiCheckData.optional = true;\n\t}\n\t\n\t// UTILS\n\t\n\tfunction copyProps(src, dest) {\n\t each(Object.keys(src), function (key) {\n\t return dest[key] = src[key];\n\t });\n\t}\n\t\n\tfunction noop() {}\n\t\n\tfunction getNoop() {\n\t /* istanbul ignore next */\n\t return function noop() {};\n\t}\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tvar stringify = __webpack_require__(1);\n\tvar apiCheckUtil = __webpack_require__(2);\n\tvar each = apiCheckUtil.each;\n\tvar isError = apiCheckUtil.isError;\n\tvar t = apiCheckUtil.t;\n\tvar arrayify = apiCheckUtil.arrayify;\n\tvar getCheckerDisplay = apiCheckUtil.getCheckerDisplay;\n\tvar typeOf = apiCheckUtil.typeOf;\n\tvar getError = apiCheckUtil.getError;\n\t\n\tvar checkers = __webpack_require__(4);\n\tvar apiCheckApis = getApiCheckApis();\n\t\n\tmodule.exports = getApiCheckInstance;\n\tmodule.exports.utils = apiCheckUtil;\n\tmodule.exports.globalConfig = {\n\t verbose: false,\n\t disabled: false\n\t};\n\t\n\tvar apiCheckApiCheck = getApiCheckInstance({\n\t output: { prefix: \"apiCheck\" }\n\t});\n\tmodule.exports.internalChecker = apiCheckApiCheck;\n\t\n\teach(checkers, function (checker, name) {\n\t return module.exports[name] = checker;\n\t});\n\t\n\tfunction getApiCheckInstance() {\n\t var config = arguments[0] === undefined ? {} : arguments[0];\n\t var extraCheckers = arguments[1] === undefined ? {} : arguments[1];\n\t\n\t /* jshint maxcomplexity:6 */\n\t if (apiCheckApiCheck && arguments.length) {\n\t apiCheckApiCheck[\"throw\"](apiCheckApis.getApiCheckInstanceCheckers, arguments, {\n\t prefix: \"creating an apiCheck instance\"\n\t });\n\t }\n\t\n\t var additionalProperties = {\n\t \"throw\": getApiCheck(true),\n\t warn: getApiCheck(false),\n\t getErrorMessage: getErrorMessage,\n\t handleErrorMessage: handleErrorMessage,\n\t config: {\n\t output: config.output || {\n\t prefix: \"\",\n\t suffix: \"\",\n\t docsBaseUrl: \"\"\n\t },\n\t verbose: config.verbose || false,\n\t disabled: config.disabled || false\n\t },\n\t utils: apiCheckUtil\n\t };\n\t\n\t each(additionalProperties, function (wrapper, name) {\n\t return apiCheck[name] = wrapper;\n\t });\n\t\n\t var disabled = apiCheck.disabled || module.exports.globalConfig.disabled;\n\t each(checkers.getCheckers(disabled), function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\t each(extraCheckers, function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\t\n\t return apiCheck;\n\t\n\t /**\n\t * This is the instance function. Other things are attached to this see additional properties above.\n\t * @param api {Array}\n\t * @param args {arguments}\n\t * @param output {Object}\n\t * @returns {Object} - if this has a failed = true property, then it failed\n\t */\n\t function apiCheck(api, args, output) {\n\t /* jshint maxcomplexity:8 */\n\t if (apiCheck.config.disabled || module.exports.globalConfig.disabled) {\n\t return {\n\t apiTypes: {}, argTypes: {},\n\t passed: true, message: \"\",\n\t failed: false\n\t }; // empty version of what is normally returned\n\t }\n\t checkApiCheckApi(arguments);\n\t if (!Array.isArray(api)) {\n\t api = [api];\n\t args = [args];\n\t } else {\n\t // turn arguments into an array\n\t args = Array.prototype.slice.call(args);\n\t }\n\t var messages = checkEnoughArgs(api, args);\n\t if (!messages.length) {\n\t // this is where we actually go perform the checks.\n\t messages = checkApiWithArgs(api, args);\n\t }\n\t\n\t var returnObject = getTypes(api, args);\n\t if (messages.length) {\n\t returnObject.message = apiCheck.getErrorMessage(api, args, messages, output);\n\t returnObject.failed = true;\n\t returnObject.passed = false;\n\t } else {\n\t returnObject.message = \"\";\n\t returnObject.failed = false;\n\t returnObject.passed = true;\n\t }\n\t return returnObject;\n\t }\n\t\n\t /**\n\t * checkApiCheckApi, should be read like: check apiCheck api. As in, check the api for apiCheck :-)\n\t * @param checkApiArgs\n\t */\n\t function checkApiCheckApi(checkApiArgs) {\n\t var api = checkApiArgs[0];\n\t var args = checkApiArgs[1];\n\t var isArrayOrArgs = Array.isArray(args) || args && typeof args === \"object\" && typeof args.length === \"number\";\n\t\n\t if (Array.isArray(api) && !isArrayOrArgs) {\n\t throw new Error(getErrorMessage(api, [args], [\"If an array is provided for the api, an array must be provided for the args as well.\"], { prefix: \"apiCheck\" }));\n\t }\n\t // dog fooding here\n\t var errors = checkApiWithArgs(apiCheckApis.checkApiCheckApi, checkApiArgs);\n\t if (errors.length) {\n\t var message = apiCheck.getErrorMessage(apiCheckApis.checkApiCheckApi, checkApiArgs, errors, {\n\t prefix: \"apiCheck\"\n\t });\n\t apiCheck.handleErrorMessage(message, true);\n\t }\n\t }\n\t\n\t function getApiCheck(shouldThrow) {\n\t return function apiCheckWrapper(api, args, output) {\n\t var result = apiCheck(api, args, output);\n\t apiCheck.handleErrorMessage(result.message, shouldThrow);\n\t return result; // wont get here if an error is thrown\n\t };\n\t }\n\t\n\t function handleErrorMessage(message, shouldThrow) {\n\t if (shouldThrow && message) {\n\t throw new Error(message);\n\t } else if (message) {\n\t console.warn(message);\n\t }\n\t }\n\t\n\t function getErrorMessage(api, args) {\n\t var messages = arguments[2] === undefined ? [] : arguments[2];\n\t var output = arguments[3] === undefined ? {} : arguments[3];\n\t\n\t var gOut = apiCheck.config.output || {};\n\t var prefix = getPrefix();\n\t var suffix = getSuffix();\n\t var url = getUrl();\n\t var message = \"apiCheck failed! \" + messages.join(\", \");\n\t var passedAndShouldHavePassed = \"\\n\\n\" + buildMessageFromApiAndArgs(api, args);\n\t return (\"\" + prefix + \" \" + message + \" \" + suffix + \" \" + (url || \"\") + \"\" + passedAndShouldHavePassed).trim();\n\t\n\t function getPrefix() {\n\t var prefix = output.onlyPrefix;\n\t if (!prefix) {\n\t prefix = (\"\" + (gOut.prefix || \"\") + \" \" + (output.prefix || \"\")).trim();\n\t }\n\t return prefix;\n\t }\n\t\n\t function getSuffix() {\n\t var suffix = output.onlySuffix;\n\t if (!suffix) {\n\t suffix = (\"\" + (output.suffix || \"\") + \" \" + (gOut.suffix || \"\")).trim();\n\t }\n\t return suffix;\n\t }\n\t\n\t function getUrl() {\n\t var url = output.url;\n\t if (!url) {\n\t url = gOut.docsBaseUrl && output.urlSuffix && (\"\" + gOut.docsBaseUrl + \"\" + output.urlSuffix).trim();\n\t }\n\t return url;\n\t }\n\t }\n\t\n\t function buildMessageFromApiAndArgs(api, args) {\n\t var _getTypes = getTypes(api, args);\n\t\n\t var apiTypes = _getTypes.apiTypes;\n\t var argTypes = _getTypes.argTypes;\n\t\n\t var copy = Array.prototype.slice.call(args || []);\n\t var replacedItems = [];\n\t replaceFunctionWithName(copy);\n\t var passedArgs = getObjectString(copy);\n\t argTypes = getObjectString(argTypes);\n\t apiTypes = getObjectString(apiTypes);\n\t\n\t return generateMessage();\n\t\n\t // functions\n\t\n\t function replaceFunctionWithName(obj) {\n\t each(obj, function (val, name) {\n\t /* jshint maxcomplexity:6 */\n\t if (replacedItems.indexOf(val) === -1) {\n\t // avoid recursive problems\n\t replacedItems.push(val);\n\t if (typeof val === \"object\") {\n\t replaceFunctionWithName(obj);\n\t } else if (typeof val === \"function\") {\n\t obj[name] = val.displayName || val.name || \"anonymous function\";\n\t }\n\t }\n\t });\n\t }\n\t\n\t function getObjectString(types) {\n\t if (!types || !types.length) {\n\t return \"nothing\";\n\t } else if (types && types.length === 1) {\n\t types = types[0];\n\t }\n\t return stringify(types, null, 2);\n\t }\n\t\n\t function generateMessage() {\n\t var n = \"\\n\";\n\t var useS = true;\n\t if (args && args.length === 1) {\n\t if (typeof args[0] === \"object\") {\n\t useS = !!Object.keys(args[0]).length;\n\t } else {\n\t useS = false;\n\t }\n\t }\n\t var types = \"type\" + (useS ? \"s\" : \"\");\n\t var newLine = n + n;\n\t return \"You passed:\" + n + \"\" + passedArgs + \"\" + newLine + (\"With the \" + types + \":\" + n + \"\" + argTypes + \"\" + newLine) + (\"The API calls for:\" + n + \"\" + apiTypes);\n\t }\n\t }\n\t\n\t function getTypes(api, args) {\n\t api = arrayify(api);\n\t args = arrayify(args);\n\t var apiTypes = api.map(function (checker, index) {\n\t var specified = module.exports.globalConfig.hasOwnProperty(\"verbose\");\n\t return getCheckerDisplay(checker, {\n\t terse: specified ? !module.exports.globalConfig.verbose : !apiCheck.config.verbose,\n\t obj: args[index],\n\t addHelpers: true\n\t });\n\t });\n\t var argTypes = args.map(function (arg) {\n\t return getArgDisplay(arg, []);\n\t });\n\t return { argTypes: argTypes, apiTypes: apiTypes };\n\t }\n\t}\n\t\n\t// STATELESS FUNCTIONS\n\t\n\t/**\n\t * This is where the magic happens for actually checking the arguments with the api.\n\t * @param api {Array} - checkers\n\t * @param args {Array} - and arguments object\n\t * @returns {Array}\n\t */\n\tfunction checkApiWithArgs(api, args) {\n\t /* jshint maxcomplexity:7 */\n\t var messages = [];\n\t var failed = false;\n\t var checkerIndex = 0;\n\t var argIndex = 0;\n\t var arg = undefined,\n\t checker = undefined,\n\t res = undefined,\n\t lastChecker = undefined,\n\t argName = undefined,\n\t argFailed = undefined,\n\t skipPreviousChecker = undefined;\n\t /* jshint -W084 */\n\t while ((checker = api[checkerIndex++]) && argIndex < args.length) {\n\t arg = args[argIndex++];\n\t argName = \"Argument \" + argIndex + (checker.isOptional ? \" (optional)\" : \"\");\n\t res = checker(arg, \"value\", argName);\n\t argFailed = isError(res);\n\t lastChecker = checkerIndex >= api.length;\n\t skipPreviousChecker = checkerIndex > 1 && api[checkerIndex - 1].isOptional;\n\t if (argFailed && lastChecker || argFailed && !lastChecker && !checker.isOptional && !skipPreviousChecker) {\n\t failed = true;\n\t messages.push(getCheckerErrorMessage(res, checker, arg));\n\t } else if (argFailed && checker.isOptional) {\n\t argIndex--;\n\t } else {\n\t messages.push(\"\" + t(argName) + \" passed\");\n\t }\n\t }\n\t return failed ? messages : [];\n\t}\n\t\n\tcheckerTypeType.type = \"function with __apiCheckData property and `${function.type}` property\";\n\tfunction checkerTypeType(checkerType, name, location) {\n\t var apiCheckDataChecker = checkers.shape({\n\t type: checkers.string,\n\t optional: checkers.bool\n\t });\n\t var asFunc = checkers.func.withProperties({ __apiCheckData: apiCheckDataChecker });\n\t var asShape = checkers.shape({ __apiCheckData: apiCheckDataChecker });\n\t var wrongShape = checkers.oneOfType([asFunc, asShape])(checkerType, name, location);\n\t if (isError(wrongShape)) {\n\t return wrongShape;\n\t }\n\t if (typeof checkerType !== \"function\" && !checkerType.hasOwnProperty(checkerType.__apiCheckData.type)) {\n\t return getError(name, location, checkerTypeType.type);\n\t }\n\t}\n\t\n\tfunction getCheckerErrorMessage(res, checker, val) {\n\t var checkerHelp = getCheckerHelp(checker, val);\n\t checkerHelp = checkerHelp ? \" - \" + checkerHelp : \"\";\n\t return res.message + checkerHelp;\n\t}\n\t\n\tfunction getCheckerHelp(_ref, val) {\n\t var help = _ref.help;\n\t\n\t if (!help) {\n\t return \"\";\n\t }\n\t if (typeof help === \"function\") {\n\t help = help(val);\n\t }\n\t return help;\n\t}\n\t\n\tfunction checkEnoughArgs(api, args) {\n\t var requiredArgs = api.filter(function (a) {\n\t return !a.isOptional;\n\t });\n\t if (args.length < requiredArgs.length) {\n\t return [\"Not enough arguments specified. Requires `\" + requiredArgs.length + \"`, you passed `\" + args.length + \"`\"];\n\t } else {\n\t return [];\n\t }\n\t}\n\t\n\tfunction getArgDisplay(arg, gottenArgs) {\n\t /* jshint maxcomplexity:7 */\n\t var cName = arg && arg.constructor && arg.constructor.name;\n\t var type = typeOf(arg);\n\t if (type === \"function\") {\n\t if (hasKeys()) {\n\t var properties = stringify(getDisplayIfNotGotten());\n\t return cName + \" (with properties: \" + properties + \")\";\n\t }\n\t return cName;\n\t }\n\t\n\t if (arg === null) {\n\t return \"null\";\n\t }\n\t\n\t if (type !== \"array\" && type !== \"object\") {\n\t return type;\n\t }\n\t\n\t if (hasKeys()) {\n\t return getDisplayIfNotGotten();\n\t }\n\t\n\t return cName;\n\t\n\t // utility functions\n\t function hasKeys() {\n\t return arg && Object.keys(arg).length;\n\t }\n\t\n\t function getDisplayIfNotGotten() {\n\t if (gottenArgs.indexOf(arg) !== -1) {\n\t return \"[Circular]\";\n\t }\n\t gottenArgs.push(arg);\n\t return getDisplay(arg, gottenArgs);\n\t }\n\t}\n\t\n\tfunction getDisplay(obj, gottenArgs) {\n\t var argDisplay = {};\n\t each(obj, function (v, k) {\n\t return argDisplay[k] = getArgDisplay(v, gottenArgs);\n\t });\n\t return argDisplay;\n\t}\n\t\n\tfunction getApiCheckApis() {\n\t var os = checkers.string.optional;\n\t\n\t var checkerFnChecker = checkers.func.withProperties({\n\t type: checkers.oneOfType([checkers.string, checkerTypeType]).optional,\n\t displayName: checkers.string.optional,\n\t shortType: checkers.string.optional,\n\t notOptional: checkers.bool.optional,\n\t notRequired: checkers.bool.optional\n\t });\n\t\n\t var getApiCheckInstanceCheckers = [checkers.shape({\n\t output: checkers.shape({\n\t prefix: checkers.string.optional,\n\t suffix: checkers.string.optional,\n\t docsBaseUrl: checkers.string.optional\n\t }).strict.optional,\n\t verbose: checkers.bool.optional,\n\t disabled: checkers.bool.optional\n\t }).strict.optional, checkers.objectOf(checkerFnChecker).optional];\n\t\n\t var checkApiCheckApi = [checkers.typeOrArrayOf(checkerFnChecker), checkers.any.optional, checkers.shape({\n\t prefix: os, suffix: os, urlSuffix: os, // appended case\n\t onlyPrefix: os, onlySuffix: os, url: os // override case\n\t }).strict.optional];\n\t\n\t return {\n\t checkerFnChecker: checkerFnChecker,\n\t getApiCheckInstanceCheckers: getApiCheckInstanceCheckers,\n\t checkApiCheckApi: checkApiCheckApi\n\t };\n\t}\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tvar stringify = __webpack_require__(1);\n\t\n\tvar _require = __webpack_require__(2);\n\t\n\tvar typeOf = _require.typeOf;\n\tvar each = _require.each;\n\tvar copy = _require.copy;\n\tvar getCheckerDisplay = _require.getCheckerDisplay;\n\tvar isError = _require.isError;\n\tvar arrayify = _require.arrayify;\n\tvar list = _require.list;\n\tvar getError = _require.getError;\n\tvar nAtL = _require.nAtL;\n\tvar t = _require.t;\n\tvar checkerHelpers = _require.checkerHelpers;\n\tvar undef = _require.undef;\n\tvar setupChecker = checkerHelpers.setupChecker;\n\t\n\tvar checkers = module.exports = getCheckers();\n\tmodule.exports.getCheckers = getCheckers;\n\t\n\tfunction getCheckers(disabled) {\n\t return {\n\t array: typeOfCheckGetter(\"Array\"),\n\t bool: typeOfCheckGetter(\"Boolean\"),\n\t number: typeOfCheckGetter(\"Number\"),\n\t string: typeOfCheckGetter(\"String\"),\n\t func: funcCheckGetter(),\n\t object: objectCheckGetter(),\n\t\n\t emptyObject: emptyObjectCheckGetter(),\n\t\n\t instanceOf: instanceCheckGetter,\n\t oneOf: oneOfCheckGetter,\n\t oneOfType: oneOfTypeCheckGetter,\n\t\n\t arrayOf: arrayOfCheckGetter,\n\t objectOf: objectOfCheckGetter,\n\t typeOrArrayOf: typeOrArrayOfCheckGetter,\n\t\n\t range: rangeCheckGetter,\n\t\n\t shape: getShapeCheckGetter(),\n\t args: argumentsCheckerGetter(),\n\t\n\t any: anyCheckGetter(),\n\t \"null\": nullCheckGetter()\n\t\n\t };\n\t\n\t function typeOfCheckGetter(type) {\n\t var lType = type.toLowerCase();\n\t return setupChecker(function typeOfCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== lType) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t\n\t function funcCheckGetter() {\n\t var type = \"Function\";\n\t var functionChecker = setupChecker(function functionCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== \"function\") {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t\n\t functionChecker.withProperties = function getWithPropertiesChecker(properties) {\n\t var apiError = checkers.objectOf(checkers.func)(properties, \"properties\", \"apiCheck.func.withProperties\");\n\t if (isError(apiError)) {\n\t throw apiError;\n\t }\n\t var shapeChecker = checkers.shape(properties, true);\n\t shapeChecker.type.__apiCheckData.type = \"func.withProperties\";\n\t\n\t return setupChecker(function functionWithPropertiesChecker(val, name, location) {\n\t var notFunction = checkers.func(val, name, location);\n\t if (isError(notFunction)) {\n\t return notFunction;\n\t }\n\t return shapeChecker(val, name, location);\n\t }, { type: shapeChecker.type, shortType: \"func.withProperties\" }, disabled);\n\t };\n\t return functionChecker;\n\t }\n\t\n\t function objectCheckGetter() {\n\t var type = \"Object\";\n\t var nullType = \"Object (null ok)\";\n\t var objectNullOkChecker = setupChecker(function objectNullOkCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== \"object\") {\n\t return getError(name, location, nullType);\n\t }\n\t }, { type: nullType }, disabled);\n\t\n\t var objectChecker = setupChecker(function objectCheckerDefinition(val, name, location) {\n\t if (val === null || isError(objectNullOkChecker(val, name, location))) {\n\t return getError(name, location, objectChecker.type);\n\t }\n\t }, { type: type, nullOk: objectNullOkChecker }, disabled);\n\t\n\t return objectChecker;\n\t }\n\t\n\t function instanceCheckGetter(classToCheck) {\n\t return setupChecker(function instanceCheckerDefinition(val, name, location) {\n\t if (!(val instanceof classToCheck)) {\n\t return getError(name, location, classToCheck.name);\n\t }\n\t }, { type: classToCheck.name }, disabled);\n\t }\n\t\n\t function oneOfCheckGetter(enums) {\n\t var type = {\n\t __apiCheckData: { optional: false, type: \"enum\" },\n\t \"enum\": enums\n\t };\n\t var shortType = \"oneOf[\" + enums.map(function (enm) {\n\t return stringify(enm);\n\t }).join(\", \") + \"]\";\n\t return setupChecker(function oneOfCheckerDefinition(val, name, location) {\n\t if (!enums.some(function (enm) {\n\t return enm === val;\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function oneOfTypeCheckGetter(checkers) {\n\t var checkersDisplay = checkers.map(function (checker) {\n\t return getCheckerDisplay(checker, { short: true });\n\t });\n\t var shortType = \"oneOfType[\" + checkersDisplay.join(\", \") + \"]\";\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return checkers.map(function (checker) {\n\t return getCheckerDisplay(checker, options);\n\t });\n\t }\n\t type.__apiCheckData = { optional: false, type: \"oneOfType\" };\n\t return setupChecker(function oneOfTypeCheckerDefinition(val, name, location) {\n\t if (!checkers.some(function (checker) {\n\t return !isError(checker(val, name, location));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function arrayOfCheckGetter(checker) {\n\t var shortCheckerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = \"arrayOf[\" + shortCheckerDisplay + \"]\";\n\t\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: \"arrayOf\" };\n\t\n\t return setupChecker(function arrayOfCheckerDefinition(val, name, location) {\n\t if (isError(checkers.array(val)) || !val.every(function (item) {\n\t return !isError(checker(item));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function objectOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = \"objectOf[\" + checkerDisplay + \"]\";\n\t\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: \"objectOf\" };\n\t\n\t return setupChecker(function objectOfCheckerDefinition(val, name, location) {\n\t var notObject = checkers.object(val, name, location);\n\t if (isError(notObject)) {\n\t return notObject;\n\t }\n\t var allTypesSuccess = each(val, function (item, key) {\n\t if (isError(checker(item, key, name))) {\n\t return false;\n\t }\n\t });\n\t if (!allTypesSuccess) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function typeOrArrayOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = \"typeOrArrayOf[\" + checkerDisplay + \"]\";\n\t\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t\n\t type.__apiCheckData = { optional: false, type: \"typeOrArrayOf\" };\n\t return setupChecker(function typeOrArrayOfDefinition(val, name, location, obj) {\n\t if (isError(checkers.oneOfType([checker, checkers.arrayOf(checker)])(val, name, location, obj))) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function getShapeCheckGetter() {\n\t function shapeCheckGetter(shape, nonObject) {\n\t var shapeTypes = {};\n\t each(shape, function (checker, prop) {\n\t shapeTypes[prop] = getCheckerDisplay(checker);\n\t });\n\t function type() {\n\t var options = arguments[0] === undefined ? {} : arguments[0];\n\t\n\t var ret = {};\n\t var terse = options.terse;\n\t var obj = options.obj;\n\t var addHelpers = options.addHelpers;\n\t\n\t var parentRequired = options.required;\n\t each(shape, function (checker, prop) {\n\t /* jshint maxcomplexity:6 */\n\t var specified = obj && obj.hasOwnProperty(prop);\n\t var required = undef(parentRequired) ? !checker.isOptional : parentRequired;\n\t if (!terse || (specified || !checker.isOptional)) {\n\t ret[prop] = getCheckerDisplay(checker, { terse: terse, obj: obj && obj[prop], required: required, addHelpers: addHelpers });\n\t }\n\t if (addHelpers) {\n\t modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required);\n\t }\n\t });\n\t return ret;\n\t\n\t function modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required) {\n\t if (!specified && required && !checker.isOptional) {\n\t var item = \"ITEM\";\n\t if (checker.type && checker.type.__apiCheckData) {\n\t item = checker.type.__apiCheckData.type.toUpperCase();\n\t }\n\t addHelper(\"missing\", \"MISSING THIS \" + item, \" <-- YOU ARE MISSING THIS\");\n\t } else if (specified) {\n\t var error = checker(obj[prop], prop, null, obj);\n\t if (isError(error)) {\n\t addHelper(\"error\", \"THIS IS THE PROBLEM: \" + error.message, \" <-- THIS IS THE PROBLEM: \" + error.message);\n\t }\n\t }\n\t\n\t function addHelper(property, objectMessage, stringMessage) {\n\t if (typeof ret[prop] === \"string\") {\n\t ret[prop] += stringMessage;\n\t } else {\n\t ret[prop].__apiCheckData[property] = objectMessage;\n\t }\n\t }\n\t }\n\t }\n\t\n\t type.__apiCheckData = { strict: false, optional: false, type: \"shape\" };\n\t var shapeChecker = setupChecker(function shapeCheckerDefinition(val, name, location) {\n\t /* jshint maxcomplexity:6 */\n\t var isObject = !nonObject && checkers.object(val, name, location);\n\t if (isError(isObject)) {\n\t return isObject;\n\t }\n\t var shapePropError = undefined;\n\t location = location ? location + (name ? \"/\" : \"\") : \"\";\n\t name = name || \"\";\n\t each(shape, function (checker, prop) {\n\t if (val.hasOwnProperty(prop) || !checker.isOptional) {\n\t shapePropError = checker(val[prop], prop, \"\" + location + \"\" + name, val);\n\t return !isError(shapePropError);\n\t }\n\t });\n\t if (isError(shapePropError)) {\n\t return shapePropError;\n\t }\n\t }, { type: type, shortType: \"shape\" }, disabled);\n\t\n\t function strictType() {\n\t return type.apply(undefined, arguments);\n\t }\n\t\n\t strictType.__apiCheckData = copy(shapeChecker.type.__apiCheckData);\n\t strictType.__apiCheckData.strict = true;\n\t shapeChecker.strict = setupChecker(function strictShapeCheckerDefinition(val, name, location) {\n\t var shapeError = shapeChecker(val, name, location);\n\t if (isError(shapeError)) {\n\t return shapeError;\n\t }\n\t var allowedProperties = Object.keys(shape);\n\t var extraProps = Object.keys(val).filter(function (prop) {\n\t return allowedProperties.indexOf(prop) === -1;\n\t });\n\t if (extraProps.length) {\n\t return new Error(\"\" + nAtL(name, location) + \" cannot have extra properties: \" + t(extraProps.join(\"`, `\")) + \".\" + (\"It is limited to \" + t(allowedProperties.join(\"`, `\"))));\n\t }\n\t }, { type: strictType, shortType: \"strict shape\" }, disabled);\n\t\n\t return shapeChecker;\n\t }\n\t\n\t shapeCheckGetter.ifNot = function ifNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = \"specified only if \" + otherProps[0] + \" is not specified\";\n\t } else {\n\t description = \"specified only if none of the following are specified: [\" + list(otherProps, \", \", \"and \") + \"]\";\n\t }\n\t var shortType = \"ifNot[\" + otherProps.join(\", \") + \"]\";\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function ifNotChecker(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (propExists === otherPropsExist) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { notRequired: true, type: type, shortType: shortType }, disabled);\n\t };\n\t\n\t shapeCheckGetter.onlyIf = function onlyIf(otherProps, propChecker) {\n\t otherProps = arrayify(otherProps);\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = \"specified only if \" + otherProps[0] + \" is also specified\";\n\t } else {\n\t description = \"specified only if all of the following are specified: [\" + list(otherProps, \", \", \"and \") + \"]\";\n\t }\n\t var shortType = \"onlyIf[\" + otherProps.join(\", \") + \"]\";\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function onlyIfCheckerDefinition(prop, propName, location, obj) {\n\t var othersPresent = otherProps.every(function (prop) {\n\t return obj.hasOwnProperty(prop);\n\t });\n\t if (!othersPresent) {\n\t return getError(propName, location, type);\n\t } else {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t };\n\t\n\t shapeCheckGetter.requiredIfNot = function shapeRequiredIfNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t return getRequiredIfNotChecker(false, otherProps, propChecker);\n\t };\n\t\n\t shapeCheckGetter.requiredIfNot.all = function shapeRequiredIfNotAll(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t throw new Error(\"requiredIfNot.all must be passed an array\");\n\t }\n\t return getRequiredIfNotChecker(true, otherProps, propChecker);\n\t };\n\t\n\t function getRequiredIfNotChecker(all, otherProps, propChecker) {\n\t var props = t(otherProps.join(\", \"));\n\t var ifProps = \"if \" + (all ? \"all of\" : \"at least one of\");\n\t var description = \"specified \" + ifProps + \" these are not specified: \" + props + \" (otherwise it's optional)\";\n\t var shortType = \"requiredIfNot\" + (all ? \".all\" : \"\") + \"[\" + otherProps.join(\", \") + \"}]\";\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var iteration = all ? \"every\" : \"some\";\n\t var otherPropsExist = otherProps[iteration](function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (!otherPropsExist && !propExists) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, notRequired: true }, disabled);\n\t }\n\t\n\t return shapeCheckGetter;\n\t\n\t function getTypeForShapeChild(propChecker, description, shortType) {\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(propChecker);\n\t }\n\t type.__apiCheckData = { optional: false, type: \"ifNot\", description: description };\n\t return type;\n\t }\n\t }\n\t\n\t function argumentsCheckerGetter() {\n\t var type = \"function arguments\";\n\t return setupChecker(function argsCheckerDefinition(val, name, location) {\n\t if (Array.isArray(val) || isError(checkers.object(val)) || isError(checkers.number(val.length))) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t\n\t function anyCheckGetter() {\n\t return setupChecker(function anyCheckerDefinition() {}, { type: \"any\" }, disabled);\n\t }\n\t\n\t function nullCheckGetter() {\n\t var type = \"null\";\n\t return setupChecker(function nullChecker(val, name, location) {\n\t if (val !== null) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t\n\t function rangeCheckGetter(min, max) {\n\t var type = \"Range (\" + min + \" - \" + max + \")\";\n\t return setupChecker(function rangeChecker(val, name, location) {\n\t if (typeof val !== \"number\" || val < min || val > max) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t\n\t function emptyObjectCheckGetter() {\n\t var type = \"empty object\";\n\t return setupChecker(function emptyObjectChecker(val, name, location) {\n\t if (typeOf(val) !== \"object\" || val === null || Object.keys(val).length) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t}\n\t\n\t// don't do anything\n\n/***/ }\n/******/ ])\n});\n\n\n\n/** WEBPACK FOOTER **\n ** api-check.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 494eb46361cc8c5a6356\n **/","module.exports = require('./apiCheck');\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jshint-loader!./index.js\n **/","module.exports = stringify;\n\nfunction getSerialize (fn, decycle) {\n var seen = [], keys = [];\n decycle = decycle || function(key, value) {\n return '[Circular ' + getPath(value, seen, keys) + ']'\n };\n return function(key, value) {\n var ret = value;\n if (typeof value === 'object' && value) {\n if (seen.indexOf(value) !== -1)\n ret = decycle(key, value);\n else {\n seen.push(value);\n keys.push(key);\n }\n }\n if (fn) ret = fn(key, ret);\n return ret;\n }\n}\n\nfunction getPath (value, seen, keys) {\n var index = seen.indexOf(value);\n var path = [ keys[index] ];\n for (index--; index >= 0; index--) {\n if (seen[index][ path[0] ] === value) {\n value = seen[index];\n path.unshift(keys[index]);\n }\n }\n return '~' + path.join('.');\n}\n\nfunction stringify(obj, fn, spaces, decycle) {\n return JSON.stringify(obj, getSerialize(fn, decycle), spaces);\n}\n\nstringify.getSerialize = getSerialize;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/json-stringify-safe/stringify.js\n ** module id = 1\n ** module chunks = 0\n **/","const stringify = require('json-stringify-safe');\nconst checkerHelpers = {\n addOptional, getRequiredVersion, setupChecker, addNullable\n};\n\nmodule.exports = {\n each, copy, typeOf, arrayify, getCheckerDisplay,\n isError, list, getError, nAtL, t, undef, checkerHelpers,\n noop\n};\n\nfunction copy(obj) {\n let type = typeOf(obj);\n let daCopy;\n if (type === 'array') {\n daCopy = [];\n } else if (type === 'object') {\n daCopy = {};\n } else {\n return obj;\n }\n each(obj, (val, key) => {\n daCopy[key] = val; // cannot single-line this because we don't want to abort the each\n });\n return daCopy;\n}\n\n\nfunction typeOf(obj) {\n if (Array.isArray(obj)) {\n return 'array';\n } else if (obj instanceof RegExp) {\n return 'object';\n } else {\n return typeof obj;\n }\n}\n\nfunction getCheckerDisplay(checker, options) {\n /* jshint maxcomplexity:7 */\n let display;\n let short = options && options.short;\n if (short && checker.shortType) {\n display = checker.shortType;\n } else if (!short && typeof checker.type === 'object' || checker.type === 'function') {\n display = getCheckerType(checker, options);\n } else {\n display = getCheckerType(checker, options) || checker.displayName || checker.name;\n }\n return display;\n}\n\nfunction getCheckerType({type}, options) {\n if (typeof type === 'function') {\n let __apiCheckData = type.__apiCheckData;\n let typeTypes = type(options);\n type = {\n __apiCheckData,\n [__apiCheckData.type]: typeTypes\n };\n }\n return type;\n}\n\nfunction arrayify(obj) {\n if (!obj) {\n return [];\n } else if (Array.isArray(obj)) {\n return obj;\n } else {\n return [obj];\n }\n}\n\n\nfunction each(obj, iterator, context) {\n if (Array.isArray(obj)) {\n return eachArry(...arguments);\n } else {\n return eachObj(...arguments);\n }\n}\n\nfunction eachObj(obj, iterator, context) {\n var ret;\n var hasOwn = Object.prototype.hasOwnProperty;\n for (var key in obj) {\n if (hasOwn.call(obj, key)) {\n ret = iterator.call(context, obj[key], key, obj);\n if (ret === false) {\n return ret;\n }\n }\n }\n return true;\n}\n\nfunction eachArry(obj, iterator, context) {\n var ret;\n var length = obj.length;\n for (var i = 0; i < length; i++) {\n ret = iterator.call(context, obj[i], i, obj);\n if (ret === false) {\n return ret;\n }\n }\n return true;\n}\n\nfunction isError(obj) {\n return obj instanceof Error;\n}\n\nfunction list(arry, join, finalJoin) {\n arry = arrayify(arry);\n let copy = arry.slice();\n let last = copy.pop();\n if (copy.length === 1) {\n join = ' ';\n }\n return copy.join(join) + `${copy.length ? join + finalJoin : ''}${last}`;\n}\n\n\nfunction getError(name, location, checkerType) {\n if (typeof checkerType === 'function') {\n checkerType = checkerType({short: true});\n }\n const stringType = typeof checkerType !== 'object' ? checkerType : stringify(checkerType);\n return new Error(`${nAtL(name, location)} must be ${t(stringType)}`);\n}\n\nfunction nAtL(name, location) {\n const tName = t(name || 'value');\n let tLocation = !location ? '' : ' at ' + t(location);\n return `${tName}${tLocation}`;\n}\n\nfunction t(thing) {\n return '`' + thing + '`';\n}\n\nfunction undef(thing) {\n return typeof thing === 'undefined';\n}\n\n\n/**\n * This will set up the checker with all of the defaults that most checkers want like required by default and an\n * optional version\n * @param checker\n * @param properties properties to add to the checker\n * @param disabled - when set to true, this will set the checker to a no-op function\n */\nfunction setupChecker(checker, properties, disabled) {\n /* jshint maxcomplexity:9 */\n if (disabled) { // swap out the checker for its own copy of noop\n checker = getNoop();\n checker.isNoop = true;\n }\n\n if (typeof checker.type === 'string') {\n checker.shortType = checker.type;\n }\n\n // assign all properties given\n each(properties, (prop, name) => checker[name] = prop);\n\n if (!checker.displayName) {\n checker.displayName = `apiCheck ${t(checker.shortType || checker.type || checker.name)} type checker`;\n }\n\n\n if (!checker.notRequired) {\n checker = getRequiredVersion(checker, disabled);\n }\n\n if (!checker.notNullable) {\n addNullable(checker, disabled);\n }\n\n if (!checker.notOptional) {\n addOptional(checker, disabled);\n }\n\n return checker;\n}\n\nfunction getRequiredVersion(checker, disabled) {\n var requiredChecker = disabled ? getNoop() : function requiredChecker(val, name, location, obj) {\n if (undef(val) && !checker.isOptional) {\n let tLocation = location ? ` in ${t(location)}` : '';\n const type = getCheckerDisplay(checker, {short: true});\n const stringType = typeof type !== 'object' ? type : stringify(type);\n return new Error(`Required ${t(name)} not specified${tLocation}. Must be ${t(stringType)}`);\n } else {\n return checker(val, name, location, obj);\n }\n };\n copyProps(checker, requiredChecker);\n requiredChecker.originalChecker = checker;\n return requiredChecker;\n}\n\nfunction addOptional(checker, disabled) {\n var optionalCheck = disabled ? getNoop() : function optionalCheck(val, name, location, obj) {\n if (!undef(val)) {\n return checker(val, name, location, obj);\n }\n };\n // inherit all properties on the original checker\n copyProps(checker, optionalCheck);\n\n optionalCheck.isOptional = true;\n optionalCheck.displayName = checker.displayName + ' (optional)';\n optionalCheck.originalChecker = checker;\n\n\n // the magic line that allows you to add .optional to the end of the checkers\n checker.optional = optionalCheck;\n\n fixType(checker, checker.optional);\n}\n\nfunction addNullable(checker, disabled) {\n var nullableCheck = disabled ? getNoop() : function nullableCheck(val, name, location, obj) {\n if (val !== null) {\n return checker(val, name, location, obj);\n }\n };\n // inherit all properties on the original checker\n copyProps(checker, nullableCheck);\n\n nullableCheck.isNullable = true;\n nullableCheck.displayName = checker.displayName + ' (nullable)';\n nullableCheck.originalChecker = checker;\n\n // the magic line that allows you to add .nullable to the end of the checkers\n checker.nullable = nullableCheck;\n\n fixType(checker, checker.nullable);\n if (!checker.notOptional) {\n addOptional(checker.nullable, disabled);\n }\n}\n\nfunction fixType(checker, checkerCopy) {\n // fix type, because it's not a straight copy...\n // the reason is we need to specify type.__apiCheckData.optional as true for the terse/verbose option.\n // we also want to add \"(optional)\" to the types with a string\n if (typeof checkerCopy.type === 'object') {\n checkerCopy.type = copy(checkerCopy.type); // make our own copy of this\n } else if (typeof checkerCopy.type === 'function') {\n checkerCopy.type = function() {\n return checker.type(...arguments);\n };\n } else {\n checkerCopy.type += ' (optional)';\n return;\n }\n checkerCopy.type.__apiCheckData = copy(checker.type.__apiCheckData) || {}; // and this\n checkerCopy.type.__apiCheckData.optional = true;\n}\n\n\n// UTILS\n\nfunction copyProps(src, dest) {\n each(Object.keys(src), key => dest[key] = src[key]);\n}\n\nfunction noop() {\n}\n\nfunction getNoop() {\n /* istanbul ignore next */\n return function noop() {\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jshint-loader!./apiCheckUtil.js\n **/","const stringify = require('json-stringify-safe');\nconst apiCheckUtil = require('./apiCheckUtil');\nconst {each, isError, t, arrayify, getCheckerDisplay, typeOf, getError} = apiCheckUtil;\nconst checkers = require('./checkers');\nconst apiCheckApis = getApiCheckApis();\n\nmodule.exports = getApiCheckInstance;\nmodule.exports.utils = apiCheckUtil;\nmodule.exports.globalConfig = {\n verbose: false,\n disabled: false\n};\n\nconst apiCheckApiCheck = getApiCheckInstance({\n output: {prefix: 'apiCheck'}\n});\nmodule.exports.internalChecker = apiCheckApiCheck;\n\n\neach(checkers, (checker, name) => module.exports[name] = checker);\n\nfunction getApiCheckInstance(config = {}, extraCheckers = {}) {\n /* jshint maxcomplexity:6 */\n if (apiCheckApiCheck && arguments.length) {\n apiCheckApiCheck.throw(apiCheckApis.getApiCheckInstanceCheckers, arguments, {\n prefix: 'creating an apiCheck instance'\n });\n }\n\n let additionalProperties = {\n throw: getApiCheck(true),\n warn: getApiCheck(false),\n getErrorMessage,\n handleErrorMessage,\n config: {\n output: config.output || {\n prefix: '',\n suffix: '',\n docsBaseUrl: ''\n },\n verbose: config.verbose || false,\n disabled: config.disabled || false\n },\n utils: apiCheckUtil\n };\n\n each(additionalProperties, (wrapper, name) => apiCheck[name] = wrapper);\n\n const disabled = apiCheck.disabled || module.exports.globalConfig.disabled;\n each(checkers.getCheckers(disabled), (checker, name) => apiCheck[name] = checker);\n each(extraCheckers, (checker, name) => apiCheck[name] = checker);\n\n return apiCheck;\n\n\n /**\n * This is the instance function. Other things are attached to this see additional properties above.\n * @param api {Array}\n * @param args {arguments}\n * @param output {Object}\n * @returns {Object} - if this has a failed = true property, then it failed\n */\n function apiCheck(api, args, output) {\n /* jshint maxcomplexity:8 */\n if (apiCheck.config.disabled || module.exports.globalConfig.disabled) {\n return {\n apiTypes: {}, argTypes: {},\n passed: true, message: '',\n failed: false\n }; // empty version of what is normally returned\n }\n checkApiCheckApi(arguments);\n if (!Array.isArray(api)) {\n api = [api];\n args = [args];\n } else {\n // turn arguments into an array\n args = Array.prototype.slice.call(args);\n }\n let messages = checkEnoughArgs(api, args);\n if (!messages.length) {\n // this is where we actually go perform the checks.\n messages = checkApiWithArgs(api, args);\n }\n\n let returnObject = getTypes(api, args);\n if (messages.length) {\n returnObject.message = apiCheck.getErrorMessage(api, args, messages, output);\n returnObject.failed = true;\n returnObject.passed = false;\n } else {\n returnObject.message = '';\n returnObject.failed = false;\n returnObject.passed = true;\n }\n return returnObject;\n }\n\n /**\n * checkApiCheckApi, should be read like: check apiCheck api. As in, check the api for apiCheck :-)\n * @param checkApiArgs\n */\n function checkApiCheckApi(checkApiArgs) {\n const api = checkApiArgs[0];\n const args = checkApiArgs[1];\n var isArrayOrArgs = Array.isArray(args) || (args && typeof args === 'object' && typeof args.length === 'number');\n\n if (Array.isArray(api) && !isArrayOrArgs) {\n throw new Error(getErrorMessage(api, [args],\n ['If an array is provided for the api, an array must be provided for the args as well.'],\n {prefix: 'apiCheck'}\n ));\n }\n // dog fooding here\n const errors = checkApiWithArgs(apiCheckApis.checkApiCheckApi, checkApiArgs);\n if (errors.length) {\n const message = apiCheck.getErrorMessage(apiCheckApis.checkApiCheckApi, checkApiArgs, errors, {\n prefix: 'apiCheck'\n });\n apiCheck.handleErrorMessage(message, true);\n }\n }\n\n\n function getApiCheck(shouldThrow) {\n return function apiCheckWrapper(api, args, output) {\n let result = apiCheck(api, args, output);\n apiCheck.handleErrorMessage(result.message, shouldThrow);\n return result; // wont get here if an error is thrown\n };\n }\n\n function handleErrorMessage(message, shouldThrow) {\n if (shouldThrow && message) {\n throw new Error(message);\n } else if (message) {\n console.warn(message);\n }\n }\n\n function getErrorMessage(api, args, messages = [], output = {}) {\n let gOut = apiCheck.config.output || {};\n let prefix = getPrefix();\n let suffix = getSuffix();\n let url = getUrl();\n let message = `apiCheck failed! ${messages.join(', ')}`;\n var passedAndShouldHavePassed = '\\n\\n' + buildMessageFromApiAndArgs(api, args);\n return `${prefix} ${message} ${suffix} ${url || ''}${passedAndShouldHavePassed}`.trim();\n\n function getPrefix() {\n let prefix = output.onlyPrefix;\n if (!prefix) {\n prefix = `${gOut.prefix || ''} ${output.prefix || ''}`.trim();\n }\n return prefix;\n }\n\n function getSuffix() {\n let suffix = output.onlySuffix;\n if (!suffix) {\n suffix = `${output.suffix || ''} ${gOut.suffix || ''}`.trim();\n }\n return suffix;\n }\n\n function getUrl() {\n let url = output.url;\n if (!url) {\n url = gOut.docsBaseUrl && output.urlSuffix && `${gOut.docsBaseUrl}${output.urlSuffix}`.trim();\n }\n return url;\n }\n }\n\n function buildMessageFromApiAndArgs(api, args) {\n let {apiTypes, argTypes} = getTypes(api, args);\n let copy = Array.prototype.slice.call(args || []);\n let replacedItems = [];\n replaceFunctionWithName(copy);\n const passedArgs = getObjectString(copy);\n argTypes = getObjectString(argTypes);\n apiTypes = getObjectString(apiTypes);\n\n return generateMessage();\n\n\n // functions\n\n function replaceFunctionWithName(obj) {\n each(obj, (val, name) => {\n /* jshint maxcomplexity:6 */\n if (replacedItems.indexOf(val) === -1) { // avoid recursive problems\n replacedItems.push(val);\n if (typeof val === 'object') {\n replaceFunctionWithName(obj);\n } else if (typeof val === 'function') {\n obj[name] = val.displayName || val.name || 'anonymous function';\n }\n }\n });\n }\n\n function getObjectString(types) {\n if (!types || !types.length) {\n return 'nothing';\n } else if (types && types.length === 1) {\n types = types[0];\n }\n return stringify(types, null, 2);\n }\n\n function generateMessage() {\n const n = '\\n';\n let useS = true;\n if (args && args.length === 1) {\n if (typeof args[0] === 'object') {\n useS = !!Object.keys(args[0]).length;\n } else {\n useS = false;\n }\n }\n const types = `type${useS ? 's' : ''}`;\n const newLine = n + n;\n return `You passed:${n}${passedArgs}${newLine}` +\n `With the ${types}:${n}${argTypes}${newLine}` +\n `The API calls for:${n}${apiTypes}`;\n }\n }\n\n function getTypes(api, args) {\n api = arrayify(api);\n args = arrayify(args);\n let apiTypes = api.map((checker, index) => {\n const specified = module.exports.globalConfig.hasOwnProperty('verbose');\n return getCheckerDisplay(checker, {\n terse: specified ? !module.exports.globalConfig.verbose : !apiCheck.config.verbose,\n obj: args[index],\n addHelpers: true\n });\n });\n let argTypes = args.map((arg) => getArgDisplay(arg, []));\n return {argTypes: argTypes, apiTypes};\n }\n\n}\n\n\n// STATELESS FUNCTIONS\n\n/**\n * This is where the magic happens for actually checking the arguments with the api.\n * @param api {Array} - checkers\n * @param args {Array} - and arguments object\n * @returns {Array}\n */\nfunction checkApiWithArgs(api, args) {\n /* jshint maxcomplexity:7 */\n let messages = [];\n let failed = false;\n let checkerIndex = 0;\n let argIndex = 0;\n let arg, checker, res, lastChecker, argName, argFailed, skipPreviousChecker;\n /* jshint -W084 */\n while ((checker = api[checkerIndex++]) && (argIndex < args.length)) {\n arg = args[argIndex++];\n argName = 'Argument ' + argIndex + (checker.isOptional ? ' (optional)' : '');\n res = checker(arg, 'value', argName);\n argFailed = isError(res);\n lastChecker = checkerIndex >= api.length;\n skipPreviousChecker = checkerIndex > 1 && api[checkerIndex - 1].isOptional;\n if ((argFailed && lastChecker) || (argFailed && !lastChecker && !checker.isOptional && !skipPreviousChecker)) {\n failed = true;\n messages.push(getCheckerErrorMessage(res, checker, arg));\n } else if (argFailed && checker.isOptional) {\n argIndex--;\n } else {\n messages.push(`${t(argName)} passed`);\n }\n }\n return failed ? messages : [];\n}\n\n\ncheckerTypeType.type = 'function with __apiCheckData property and `${function.type}` property';\nfunction checkerTypeType(checkerType, name, location) {\n const apiCheckDataChecker = checkers.shape({\n type: checkers.string,\n optional: checkers.bool\n });\n const asFunc = checkers.func.withProperties({__apiCheckData: apiCheckDataChecker});\n const asShape = checkers.shape({__apiCheckData: apiCheckDataChecker});\n const wrongShape = checkers.oneOfType([\n asFunc, asShape\n ])(checkerType, name, location);\n if (isError(wrongShape)) {\n return wrongShape;\n }\n if (typeof checkerType !== 'function' && !checkerType.hasOwnProperty(checkerType.__apiCheckData.type)) {\n return getError(name, location, checkerTypeType.type);\n }\n}\n\nfunction getCheckerErrorMessage(res, checker, val) {\n let checkerHelp = getCheckerHelp(checker, val);\n checkerHelp = checkerHelp ? ' - ' + checkerHelp : '';\n return res.message + checkerHelp;\n}\n\nfunction getCheckerHelp({help}, val) {\n if (!help) {\n return '';\n }\n if (typeof help === 'function') {\n help = help(val);\n }\n return help;\n}\n\n\nfunction checkEnoughArgs(api, args) {\n let requiredArgs = api.filter(a => !a.isOptional);\n if (args.length < requiredArgs.length) {\n return [\n 'Not enough arguments specified. Requires `' + requiredArgs.length + '`, you passed `' + args.length + '`'\n ];\n } else {\n return [];\n }\n}\n\nfunction getArgDisplay(arg, gottenArgs) {\n /* jshint maxcomplexity:7 */\n const cName = arg && arg.constructor && arg.constructor.name;\n const type = typeOf(arg);\n if (type === 'function') {\n if (hasKeys()) {\n let properties = stringify(getDisplayIfNotGotten());\n return cName + ' (with properties: ' + properties + ')';\n }\n return cName;\n }\n\n if (arg === null) {\n return 'null';\n }\n\n if (type !== 'array' && type !== 'object') {\n return type;\n }\n\n if (hasKeys()) {\n return getDisplayIfNotGotten();\n }\n\n return cName;\n\n // utility functions\n function hasKeys() {\n return arg && Object.keys(arg).length;\n }\n\n function getDisplayIfNotGotten() {\n if (gottenArgs.indexOf(arg) !== -1) {\n return '[Circular]';\n }\n gottenArgs.push(arg);\n return getDisplay(arg, gottenArgs);\n }\n}\n\nfunction getDisplay(obj, gottenArgs) {\n var argDisplay = {};\n each(obj, (v, k) => argDisplay[k] = getArgDisplay(v, gottenArgs));\n return argDisplay;\n}\n\nfunction getApiCheckApis() {\n const os = checkers.string.optional;\n\n const checkerFnChecker = checkers.func.withProperties({\n type: checkers.oneOfType([checkers.string, checkerTypeType]).optional,\n displayName: checkers.string.optional,\n shortType: checkers.string.optional,\n notOptional: checkers.bool.optional,\n notRequired: checkers.bool.optional\n });\n\n const getApiCheckInstanceCheckers = [\n checkers.shape({\n output: checkers.shape({\n prefix: checkers.string.optional,\n suffix: checkers.string.optional,\n docsBaseUrl: checkers.string.optional\n }).strict.optional,\n verbose: checkers.bool.optional,\n disabled: checkers.bool.optional\n }).strict.optional,\n checkers.objectOf(checkerFnChecker).optional\n ];\n\n const checkApiCheckApi = [\n checkers.typeOrArrayOf(checkerFnChecker),\n checkers.any.optional,\n checkers.shape({\n prefix: os, suffix: os, urlSuffix: os, // appended case\n onlyPrefix: os, onlySuffix: os, url: os // override case\n }).strict.optional\n ];\n\n return {\n checkerFnChecker,\n getApiCheckInstanceCheckers,\n checkApiCheckApi\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jshint-loader!./apiCheck.js\n **/","const stringify = require('json-stringify-safe');\nconst {\n typeOf, each, copy, getCheckerDisplay, isError,\n arrayify, list, getError, nAtL, t, checkerHelpers,\n undef\n } = require('./apiCheckUtil');\nconst {setupChecker} = checkerHelpers;\n\nlet checkers = module.exports = getCheckers();\nmodule.exports.getCheckers = getCheckers;\n\nfunction getCheckers(disabled) {\n return {\n array: typeOfCheckGetter('Array'),\n bool: typeOfCheckGetter('Boolean'),\n number: typeOfCheckGetter('Number'),\n string: typeOfCheckGetter('String'),\n func: funcCheckGetter(),\n object: objectCheckGetter(),\n\n emptyObject: emptyObjectCheckGetter(),\n\n instanceOf: instanceCheckGetter,\n oneOf: oneOfCheckGetter,\n oneOfType: oneOfTypeCheckGetter,\n\n arrayOf: arrayOfCheckGetter,\n objectOf: objectOfCheckGetter,\n typeOrArrayOf: typeOrArrayOfCheckGetter,\n\n range: rangeCheckGetter,\n\n shape: getShapeCheckGetter(),\n args: argumentsCheckerGetter(),\n\n any: anyCheckGetter(),\n null: nullCheckGetter()\n\n };\n\n function typeOfCheckGetter(type) {\n const lType = type.toLowerCase();\n return setupChecker(function typeOfCheckerDefinition(val, name, location) {\n if (typeOf(val) !== lType) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n function funcCheckGetter() {\n const type = 'Function';\n let functionChecker = setupChecker(function functionCheckerDefinition(val, name, location) {\n if (typeOf(val) !== 'function') {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n\n functionChecker.withProperties = function getWithPropertiesChecker(properties) {\n const apiError = checkers.objectOf(checkers.func)(properties, 'properties', 'apiCheck.func.withProperties');\n if (isError(apiError)) {\n throw apiError;\n }\n let shapeChecker = checkers.shape(properties, true);\n shapeChecker.type.__apiCheckData.type = 'func.withProperties';\n\n return setupChecker(function functionWithPropertiesChecker(val, name, location) {\n const notFunction = checkers.func(val, name, location);\n if (isError(notFunction)) {\n return notFunction;\n }\n return shapeChecker(val, name, location);\n }, {type: shapeChecker.type, shortType: 'func.withProperties'}, disabled);\n };\n return functionChecker;\n }\n\n function objectCheckGetter() {\n const type = 'Object';\n const nullType = 'Object (null ok)';\n let objectNullOkChecker = setupChecker(function objectNullOkCheckerDefinition(val, name, location) {\n if (typeOf(val) !== 'object') {\n return getError(name, location, nullType);\n }\n }, {type: nullType}, disabled);\n\n let objectChecker = setupChecker(function objectCheckerDefinition(val, name, location) {\n if (val === null || isError(objectNullOkChecker(val, name, location))) {\n return getError(name, location, objectChecker.type);\n }\n }, {type, nullOk: objectNullOkChecker}, disabled);\n\n return objectChecker;\n }\n\n\n function instanceCheckGetter(classToCheck) {\n return setupChecker(function instanceCheckerDefinition(val, name, location) {\n if (!(val instanceof classToCheck)) {\n return getError(name, location, classToCheck.name);\n }\n }, {type: classToCheck.name}, disabled);\n }\n\n function oneOfCheckGetter(enums) {\n const type = {\n __apiCheckData: {optional: false, type: 'enum'},\n enum: enums\n };\n const shortType = `oneOf[${enums.map(enm => stringify(enm)).join(', ')}]`;\n return setupChecker(function oneOfCheckerDefinition(val, name, location) {\n if (!enums.some(enm => enm === val)) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function oneOfTypeCheckGetter(checkers) {\n const checkersDisplay = checkers.map((checker) => getCheckerDisplay(checker, {short: true}));\n const shortType = `oneOfType[${checkersDisplay.join(', ')}]`;\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return checkers.map((checker) => getCheckerDisplay(checker, options));\n }\n type.__apiCheckData = {optional: false, type: 'oneOfType'};\n return setupChecker(function oneOfTypeCheckerDefinition(val, name, location) {\n if (!checkers.some(checker => !isError(checker(val, name, location)))) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function arrayOfCheckGetter(checker) {\n const shortCheckerDisplay = getCheckerDisplay(checker, {short: true});\n const shortType = `arrayOf[${shortCheckerDisplay}]`;\n\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return getCheckerDisplay(checker, options);\n }\n type.__apiCheckData = {optional: false, type: 'arrayOf'};\n\n return setupChecker(function arrayOfCheckerDefinition(val, name, location) {\n if (isError(checkers.array(val)) || !val.every((item) => !isError(checker(item)))) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function objectOfCheckGetter(checker) {\n const checkerDisplay = getCheckerDisplay(checker, {short: true});\n const shortType = `objectOf[${checkerDisplay}]`;\n\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return getCheckerDisplay(checker, options);\n }\n type.__apiCheckData = {optional: false, type: 'objectOf'};\n\n return setupChecker(function objectOfCheckerDefinition(val, name, location) {\n const notObject = checkers.object(val, name, location);\n if (isError(notObject)) {\n return notObject;\n }\n const allTypesSuccess = each(val, (item, key) => {\n if (isError(checker(item, key, name))) {\n return false;\n }\n });\n if (!allTypesSuccess) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function typeOrArrayOfCheckGetter(checker) {\n const checkerDisplay = getCheckerDisplay(checker, {short: true});\n const shortType = `typeOrArrayOf[${checkerDisplay}]`;\n\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return getCheckerDisplay(checker, options);\n }\n\n type.__apiCheckData = {optional: false, type: 'typeOrArrayOf'};\n return setupChecker(function typeOrArrayOfDefinition(val, name, location, obj) {\n if (isError(checkers.oneOfType([checker, checkers.arrayOf(checker)])(val, name, location, obj))) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function getShapeCheckGetter() {\n function shapeCheckGetter(shape, nonObject) {\n let shapeTypes = {};\n each(shape, (checker, prop) => {\n shapeTypes[prop] = getCheckerDisplay(checker);\n });\n function type(options = {}) {\n let ret = {};\n const {terse, obj, addHelpers} = options;\n const parentRequired = options.required;\n each(shape, (checker, prop) => {\n /* jshint maxcomplexity:6 */\n const specified = obj && obj.hasOwnProperty(prop);\n const required = undef(parentRequired) ? !checker.isOptional : parentRequired;\n if (!terse || (specified || !checker.isOptional)) {\n ret[prop] = getCheckerDisplay(checker, {terse, obj: obj && obj[prop], required, addHelpers});\n }\n if (addHelpers) {\n modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required);\n }\n });\n return ret;\n\n function modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required) {\n if (!specified && required && !checker.isOptional) {\n let item = 'ITEM';\n if (checker.type && checker.type.__apiCheckData) {\n item = checker.type.__apiCheckData.type.toUpperCase();\n }\n addHelper('missing', `MISSING THIS ${item}`, ' <-- YOU ARE MISSING THIS');\n } else if (specified) {\n let error = checker(obj[prop], prop, null, obj);\n if (isError(error)) {\n addHelper('error', `THIS IS THE PROBLEM: ${error.message}`, ` <-- THIS IS THE PROBLEM: ${error.message}`);\n }\n }\n\n function addHelper(property, objectMessage, stringMessage) {\n if (typeof ret[prop] === 'string') {\n ret[prop] += stringMessage;\n } else {\n ret[prop].__apiCheckData[property] = objectMessage;\n }\n }\n }\n }\n\n type.__apiCheckData = {strict: false, optional: false, type: 'shape'};\n let shapeChecker = setupChecker(function shapeCheckerDefinition(val, name, location) {\n /* jshint maxcomplexity:6 */\n let isObject = !nonObject && checkers.object(val, name, location);\n if (isError(isObject)) {\n return isObject;\n }\n let shapePropError;\n location = location ? location + (name ? '/' : '') : '';\n name = name || '';\n each(shape, (checker, prop) => {\n if (val.hasOwnProperty(prop) || !checker.isOptional) {\n shapePropError = checker(val[prop], prop, `${location}${name}`, val);\n return !isError(shapePropError);\n }\n });\n if (isError(shapePropError)) {\n return shapePropError;\n }\n }, {type, shortType: 'shape'}, disabled);\n\n function strictType() {\n return type(...arguments);\n }\n\n strictType.__apiCheckData = copy(shapeChecker.type.__apiCheckData);\n strictType.__apiCheckData.strict = true;\n shapeChecker.strict = setupChecker(function strictShapeCheckerDefinition(val, name, location) {\n const shapeError = shapeChecker(val, name, location);\n if (isError(shapeError)) {\n return shapeError;\n }\n const allowedProperties = Object.keys(shape);\n const extraProps = Object.keys(val).filter(prop => allowedProperties.indexOf(prop) === -1);\n if (extraProps.length) {\n return new Error(\n `${nAtL(name, location)} cannot have extra properties: ${t(extraProps.join('`, `'))}.` +\n `It is limited to ${t(allowedProperties.join('`, `'))}`\n );\n }\n }, {type: strictType, shortType: 'strict shape'}, disabled);\n\n return shapeChecker;\n }\n\n shapeCheckGetter.ifNot = function ifNot(otherProps, propChecker) {\n if (!Array.isArray(otherProps)) {\n otherProps = [otherProps];\n }\n let description;\n if (otherProps.length === 1) {\n description = `specified only if ${otherProps[0]} is not specified`;\n } else {\n description = `specified only if none of the following are specified: [${list(otherProps, ', ', 'and ')}]`;\n }\n const shortType = `ifNot[${otherProps.join(', ')}]`;\n const type = getTypeForShapeChild(propChecker, description, shortType);\n return setupChecker(function ifNotChecker(prop, propName, location, obj) {\n let propExists = obj && obj.hasOwnProperty(propName);\n let otherPropsExist = otherProps.some(otherProp => obj && obj.hasOwnProperty(otherProp));\n if (propExists === otherPropsExist) {\n return getError(propName, location, type);\n } else if (propExists) {\n return propChecker(prop, propName, location, obj);\n }\n }, {notRequired: true, type, shortType}, disabled);\n };\n\n shapeCheckGetter.onlyIf = function onlyIf(otherProps, propChecker) {\n otherProps = arrayify(otherProps);\n let description;\n if (otherProps.length === 1) {\n description = `specified only if ${otherProps[0]} is also specified`;\n } else {\n description = `specified only if all of the following are specified: [${list(otherProps, ', ', 'and ')}]`;\n }\n const shortType = `onlyIf[${otherProps.join(', ')}]`;\n const type = getTypeForShapeChild(propChecker, description, shortType);\n return setupChecker(function onlyIfCheckerDefinition(prop, propName, location, obj) {\n const othersPresent = otherProps.every(prop => obj.hasOwnProperty(prop));\n if (!othersPresent) {\n return getError(propName, location, type);\n } else {\n return propChecker(prop, propName, location, obj);\n }\n }, {type, shortType}, disabled);\n };\n\n shapeCheckGetter.requiredIfNot = function shapeRequiredIfNot(otherProps, propChecker) {\n if (!Array.isArray(otherProps)) {\n otherProps = [otherProps];\n }\n return getRequiredIfNotChecker(false, otherProps, propChecker);\n };\n\n shapeCheckGetter.requiredIfNot.all = function shapeRequiredIfNotAll(otherProps, propChecker) {\n if (!Array.isArray(otherProps)) {\n throw new Error('requiredIfNot.all must be passed an array');\n }\n return getRequiredIfNotChecker(true, otherProps, propChecker);\n };\n\n function getRequiredIfNotChecker(all, otherProps, propChecker) {\n const props = t(otherProps.join(', '));\n const ifProps = `if ${all ? 'all of' : 'at least one of'}`;\n const description = `specified ${ifProps} these are not specified: ${props} (otherwise it's optional)`;\n const shortType = `requiredIfNot${all ? '.all' : ''}[${otherProps.join(', ')}}]`;\n const type = getTypeForShapeChild(propChecker, description, shortType);\n return setupChecker(function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n const propExists = obj && obj.hasOwnProperty(propName);\n const iteration = all ? 'every' : 'some';\n const otherPropsExist = otherProps[iteration](function (otherProp) {\n return obj && obj.hasOwnProperty(otherProp);\n });\n if (!otherPropsExist && !propExists) {\n return getError(propName, location, type);\n } else if (propExists) {\n return propChecker(prop, propName, location, obj);\n }\n }, {type, notRequired: true}, disabled);\n }\n\n return shapeCheckGetter;\n\n function getTypeForShapeChild(propChecker, description, shortType) {\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return getCheckerDisplay(propChecker);\n }\n type.__apiCheckData = {optional: false, type: 'ifNot', description};\n return type;\n }\n }\n\n function argumentsCheckerGetter() {\n const type = 'function arguments';\n return setupChecker(function argsCheckerDefinition(val, name, location) {\n if (Array.isArray(val) || isError(checkers.object(val)) || isError(checkers.number(val.length))) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n function anyCheckGetter() {\n return setupChecker(function anyCheckerDefinition() {\n // don't do anything\n }, {type: 'any'}, disabled);\n }\n\n function nullCheckGetter() {\n const type = 'null';\n return setupChecker(function nullChecker(val, name, location) {\n if (val !== null) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n function rangeCheckGetter(min, max) {\n const type = `Range (${min} - ${max})`;\n return setupChecker(function rangeChecker(val, name, location) {\n if (typeof val !== 'number' || val < min || val > max) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n function emptyObjectCheckGetter() {\n const type = 'empty object';\n return setupChecker(function emptyObjectChecker(val, name, location) {\n if (typeOf(val) !== 'object' || val === null || Object.keys(val).length) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/jshint-loader!./checkers.js\n **/"],"sourceRoot":"","file":"api-check.min.js"}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///dist/api-check.min.js","webpack:///webpack/bootstrap 0063d8845a3f72305aa5","webpack:///./index.js","webpack:///../~/json-stringify-safe/stringify.js","webpack:///./api-check-util.js","webpack:///./api-check.js","webpack:///./checkers.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_apiCheck","_apiCheck2","getSerialize","fn","decycle","seen","keys","key","getPath","ret","indexOf","push","index","path","unshift","join","stringify","spaces","JSON","_defineProperty","enumerable","configurable","writable","copy","type","typeOf","daCopy","undefined","each","val","Array","isArray","RegExp","getCheckerDisplay","checker","options","display","short","shortType","getCheckerType","displayName","name","_ref","__apiCheckData","typeTypes","arrayify","iterator","context","eachArry","eachObj","hasOwn","prototype","hasOwnProperty","length","i","isError","Error","list","arry","finalJoin","slice","last","pop","getError","location","checkerType","stringType","nAtL","t","tName","tLocation","thing","undef","setupChecker","properties","disabled","getNoop","isNoop","prop","notRequired","getRequiredVersion","notNullable","addNullable","notOptional","addOptional","requiredChecker","isOptional","copyProps","originalChecker","optionalCheck","optional","fixType","nullableCheck","isNullable","nullable","checkerCopy","apply","arguments","src","dest","noop","checkerHelpers","getApiCheckInstance","apiCheck","api","args","output","config","globalConfig","apiTypes","argTypes","passed","message","failed","checkApiCheckApi","messages","checkEnoughArgs","checkApiWithArgs","returnObject","getTypes","getErrorMessage","checkApiArgs","isArrayOrArgs","prefix","errors","apiCheckApis","handleErrorMessage","getApiCheck","shouldThrow","result","console","warn","getPrefix","onlyPrefix","gOut","trim","getSuffix","s","onlySuffix","suffix","getUrl","u","url","docsBaseUrl","urlSuffix","passedAndShouldHavePassed","buildMessageFromApiAndArgs","replaceFunctionWithName","replacedItems","getObjectString","types","generateMessage","n","useS","newLine","passedArgs","_getTypes","map","specified","terse","verbose","addHelpers","arg","getArgDisplay","extraCheckers","apiCheckApiCheck","getApiCheckInstanceCheckers","additionalProperties","throw","utils","apiCheckUtil","wrapper","checkers","getCheckers","checkerIndex","argIndex","res","lastChecker","argName","argFailed","skipPreviousChecker","getCheckerErrorMessage","checkerTypeType","apiCheckDataChecker","shape","string","bool","asFunc","func","withProperties","asShape","wrongShape","oneOfType","checkerHelp","getCheckerHelp","help","requiredArgs","filter","a","gottenArgs","hasKeys","getDisplayIfNotGotten","getDisplay","cName","constructor","argDisplay","v","k","getApiCheckApis","os","checkerFnChecker","strict","objectOf","typeOrArrayOf","any","VERSION","internalChecker","typeOfCheckGetter","lType","toLowerCase","funcCheckGetter","functionChecker","apiError","shapeChecker","notFunction","objectCheckGetter","nullType","objectNullOkChecker","objectChecker","nullOk","instanceCheckGetter","classToCheck","oneOfCheckGetter","enums","enum","enm","some","oneOfTypeCheckGetter","typeCheckers","checkersDisplay","arrayOfCheckGetter","shortCheckerDisplay","array","every","item","objectOfCheckGetter","checkerDisplay","notObject","object","allTypesSuccess","typeOrArrayOfCheckGetter","arrayOf","getShapeCheckGetter","shapeCheckGetter","nonObject","modifyTypeDisplayToHelpOut","theRet","required","addHelper","property","objectMessage","stringMessage","error","toUpperCase","parentRequired","strictType","shapeTypes","isObject","shapePropError","shapeError","allowedProperties","extraProps","getRequiredIfNotChecker","all","otherProps","propChecker","props","ifProps","description","getTypeForShapeChild","propName","propExists","iteration","otherPropsExist","otherProp","ifNot","onlyIf","othersPresent","requiredIfNot","argumentsCheckerGetter","number","anyCheckGetter","nullCheckGetter","rangeCheckGetter","min","max","lessThanCheckGetter","greaterThanCheckGetter","emptyObjectCheckGetter","emptyObject","instanceOf","oneOf","range","lessThan","greaterThan","null","_require"],"mappings":"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","file":"dist/api-check.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apiCheck\"] = factory();\n\telse\n\t\troot[\"apiCheck\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","//! api-check version 7.5.5 built with ♥ by Kent C. Dodds (http://kent.doddsfamily.us) (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apiCheck\"] = factory();\n\telse\n\t\troot[\"apiCheck\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _apiCheck = __webpack_require__(3);\n\t\n\tvar _apiCheck2 = _interopRequireDefault(_apiCheck);\n\n\texports['default'] = _apiCheck2['default'];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\tmodule.exports = stringify;\n\t\n\tfunction getSerialize (fn, decycle) {\n\t var seen = [], keys = [];\n\t decycle = decycle || function(key, value) {\n\t return '[Circular ' + getPath(value, seen, keys) + ']'\n\t };\n\t return function(key, value) {\n\t var ret = value;\n\t if (typeof value === 'object' && value) {\n\t if (seen.indexOf(value) !== -1)\n\t ret = decycle(key, value);\n\t else {\n\t seen.push(value);\n\t keys.push(key);\n\t }\n\t }\n\t if (fn) ret = fn(key, ret);\n\t return ret;\n\t }\n\t}\n\t\n\tfunction getPath (value, seen, keys) {\n\t var index = seen.indexOf(value);\n\t var path = [ keys[index] ];\n\t for (index--; index >= 0; index--) {\n\t if (seen[index][ path[0] ] === value) {\n\t value = seen[index];\n\t path.unshift(keys[index]);\n\t }\n\t }\n\t return '~' + path.join('.');\n\t}\n\t\n\tfunction stringify(obj, fn, spaces, decycle) {\n\t return JSON.stringify(obj, getSerialize(fn, decycle), spaces);\n\t}\n\t\n\tstringify.getSerialize = getSerialize;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tvar stringify = __webpack_require__(1);\n\tvar checkerHelpers = {\n\t addOptional: addOptional, getRequiredVersion: getRequiredVersion, setupChecker: setupChecker, addNullable: addNullable\n\t};\n\t\n\tmodule.exports = {\n\t each: each, copy: copy, typeOf: typeOf, arrayify: arrayify, getCheckerDisplay: getCheckerDisplay,\n\t isError: isError, list: list, getError: getError, nAtL: nAtL, t: t, undef: undef, checkerHelpers: checkerHelpers,\n\t noop: noop\n\t};\n\t\n\tfunction copy(obj) {\n\t var type = typeOf(obj);\n\t var daCopy = undefined;\n\t if (type === 'array') {\n\t daCopy = [];\n\t } else if (type === 'object') {\n\t daCopy = {};\n\t } else {\n\t return obj;\n\t }\n\t each(obj, function (val, key) {\n\t daCopy[key] = val; // cannot single-line this because we don't want to abort the each\n\t });\n\t return daCopy;\n\t}\n\t\n\tfunction typeOf(obj) {\n\t if (Array.isArray(obj)) {\n\t return 'array';\n\t } else if (obj instanceof RegExp) {\n\t return 'object';\n\t } else {\n\t return typeof obj;\n\t }\n\t}\n\t\n\tfunction getCheckerDisplay(checker, options) {\n\t /* eslint complexity:[2, 7] */\n\t var display = undefined;\n\t var short = options && options.short;\n\t if (short && checker.shortType) {\n\t display = checker.shortType;\n\t } else if (!short && typeof checker.type === 'object' || checker.type === 'function') {\n\t display = getCheckerType(checker, options);\n\t } else {\n\t display = getCheckerType(checker, options) || checker.displayName || checker.name;\n\t }\n\t return display;\n\t}\n\t\n\tfunction getCheckerType(_ref, options) {\n\t var type = _ref.type;\n\t\n\t if (typeof type === 'function') {\n\t var __apiCheckData = type.__apiCheckData;\n\t var typeTypes = type(options);\n\t type = _defineProperty({\n\t __apiCheckData: __apiCheckData\n\t }, __apiCheckData.type, typeTypes);\n\t }\n\t return type;\n\t}\n\t\n\tfunction arrayify(obj) {\n\t if (!obj) {\n\t return [];\n\t } else if (Array.isArray(obj)) {\n\t return obj;\n\t } else {\n\t return [obj];\n\t }\n\t}\n\t\n\tfunction each(obj, iterator, context) {\n\t if (Array.isArray(obj)) {\n\t return eachArry(obj, iterator, context);\n\t } else {\n\t return eachObj(obj, iterator, context);\n\t }\n\t}\n\t\n\tfunction eachObj(obj, iterator, context) {\n\t var ret = undefined;\n\t var hasOwn = Object.prototype.hasOwnProperty;\n\t /* eslint prefer-const:0 */ // some weird eslint bug?\n\t for (var key in obj) {\n\t if (hasOwn.call(obj, key)) {\n\t ret = iterator.call(context, obj[key], key, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t }\n\t return true;\n\t}\n\t\n\tfunction eachArry(obj, iterator, context) {\n\t var ret = undefined;\n\t var length = obj.length;\n\t for (var i = 0; i < length; i++) {\n\t ret = iterator.call(context, obj[i], i, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t return true;\n\t}\n\t\n\tfunction isError(obj) {\n\t return obj instanceof Error;\n\t}\n\t\n\tfunction list(arry, join, finalJoin) {\n\t arry = arrayify(arry);\n\t var copy = arry.slice();\n\t var last = copy.pop();\n\t if (copy.length === 1) {\n\t join = ' ';\n\t }\n\t return copy.join(join) + ('' + (copy.length ? join + finalJoin : '') + last);\n\t}\n\t\n\tfunction getError(name, location, checkerType) {\n\t if (typeof checkerType === 'function') {\n\t checkerType = checkerType({ short: true });\n\t }\n\t var stringType = typeof checkerType !== 'object' ? checkerType : stringify(checkerType);\n\t return new Error(nAtL(name, location) + ' must be ' + t(stringType));\n\t}\n\t\n\tfunction nAtL(name, location) {\n\t var tName = t(name || 'value');\n\t var tLocation = !location ? '' : ' at ' + t(location);\n\t return '' + tName + tLocation;\n\t}\n\t\n\tfunction t(thing) {\n\t return '`' + thing + '`';\n\t}\n\t\n\tfunction undef(thing) {\n\t return typeof thing === 'undefined';\n\t}\n\t\n\t/**\n\t * This will set up the checker with all of the defaults that most checkers want like required by default and an\n\t * optional version\n\t *\n\t * @param {Function} checker - the checker to setup with properties\n\t * @param {Object} properties - properties to add to the checker\n\t * @param {boolean} disabled - when set to true, this will set the checker to a no-op function\n\t * @returns {Function} checker - the setup checker\n\t */\n\tfunction setupChecker(checker, properties, disabled) {\n\t /* eslint complexity:[2, 9] */\n\t if (disabled) {\n\t // swap out the checker for its own copy of noop\n\t checker = getNoop();\n\t checker.isNoop = true;\n\t }\n\t\n\t if (typeof checker.type === 'string') {\n\t checker.shortType = checker.type;\n\t }\n\t\n\t // assign all properties given\n\t each(properties, function (prop, name) {\n\t return checker[name] = prop;\n\t });\n\t\n\t if (!checker.displayName) {\n\t checker.displayName = 'apiCheck ' + t(checker.shortType || checker.type || checker.name) + ' type checker';\n\t }\n\t\n\t if (!checker.notRequired) {\n\t checker = getRequiredVersion(checker, disabled);\n\t }\n\t\n\t if (!checker.notNullable) {\n\t addNullable(checker, disabled);\n\t }\n\t\n\t if (!checker.notOptional) {\n\t addOptional(checker, disabled);\n\t }\n\t\n\t return checker;\n\t}\n\t\n\tfunction getRequiredVersion(checker, disabled) {\n\t var requiredChecker = disabled ? getNoop() : function requiredChecker(val, name, location, obj) {\n\t if (undef(val) && !checker.isOptional) {\n\t var tLocation = location ? ' in ' + t(location) : '';\n\t var type = getCheckerDisplay(checker, { short: true });\n\t var stringType = typeof type !== 'object' ? type : stringify(type);\n\t return new Error('Required ' + t(name) + ' not specified' + tLocation + '. Must be ' + t(stringType));\n\t } else {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t copyProps(checker, requiredChecker);\n\t requiredChecker.originalChecker = checker;\n\t return requiredChecker;\n\t}\n\t\n\tfunction addOptional(checker, disabled) {\n\t var optionalCheck = disabled ? getNoop() : function optionalCheck(val, name, location, obj) {\n\t if (!undef(val)) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, optionalCheck);\n\t\n\t optionalCheck.isOptional = true;\n\t optionalCheck.displayName = checker.displayName + ' (optional)';\n\t optionalCheck.originalChecker = checker;\n\t\n\t // the magic line that allows you to add .optional to the end of the checkers\n\t checker.optional = optionalCheck;\n\t\n\t fixType(checker, checker.optional);\n\t}\n\t\n\tfunction addNullable(checker, disabled) {\n\t var nullableCheck = disabled ? getNoop() : function nullableCheck(val, name, location, obj) {\n\t if (val !== null) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, nullableCheck);\n\t\n\t nullableCheck.isNullable = true;\n\t nullableCheck.displayName = checker.displayName + ' (nullable)';\n\t nullableCheck.originalChecker = checker;\n\t\n\t // the magic line that allows you to add .nullable to the end of the checkers\n\t checker.nullable = nullableCheck;\n\t\n\t fixType(checker, checker.nullable);\n\t if (!checker.notOptional) {\n\t addOptional(checker.nullable, disabled);\n\t }\n\t}\n\t\n\tfunction fixType(checker, checkerCopy) {\n\t // fix type, because it's not a straight copy...\n\t // the reason is we need to specify type.__apiCheckData.optional as true for the terse/verbose option.\n\t // we also want to add \"(optional)\" to the types with a string\n\t if (typeof checkerCopy.type === 'object') {\n\t checkerCopy.type = copy(checkerCopy.type); // make our own copy of this\n\t } else if (typeof checkerCopy.type === 'function') {\n\t checkerCopy.type = function () {\n\t return checker.type.apply(checker, arguments);\n\t };\n\t } else {\n\t checkerCopy.type += ' (optional)';\n\t return;\n\t }\n\t checkerCopy.type.__apiCheckData = copy(checker.type.__apiCheckData) || {}; // and this\n\t checkerCopy.type.__apiCheckData.optional = true;\n\t}\n\t\n\t// UTILS\n\t\n\tfunction copyProps(src, dest) {\n\t each(Object.keys(src), function (key) {\n\t return dest[key] = src[key];\n\t });\n\t}\n\t\n\tfunction noop() {}\n\t\n\tfunction getNoop() {\n\t /* eslint no-shadow:0 */\n\t /* istanbul ignore next */\n\t return function noop() {};\n\t}\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar stringify = __webpack_require__(1);\n\tvar apiCheckUtil = __webpack_require__(2);\n\tvar each = apiCheckUtil.each;\n\tvar isError = apiCheckUtil.isError;\n\tvar t = apiCheckUtil.t;\n\tvar arrayify = apiCheckUtil.arrayify;\n\tvar getCheckerDisplay = apiCheckUtil.getCheckerDisplay;\n\tvar typeOf = apiCheckUtil.typeOf;\n\tvar getError = apiCheckUtil.getError;\n\t\n\tvar checkers = __webpack_require__(4);\n\tvar apiCheckApis = getApiCheckApis();\n\t\n\tmodule.exports = getApiCheckInstance;\n\tmodule.exports.VERSION = (\"7.5.5\");\n\tmodule.exports.utils = apiCheckUtil;\n\tmodule.exports.globalConfig = {\n\t verbose: false,\n\t disabled: false\n\t};\n\t\n\tvar apiCheckApiCheck = getApiCheckInstance({\n\t output: { prefix: 'apiCheck' }\n\t});\n\tmodule.exports.internalChecker = apiCheckApiCheck;\n\t\n\teach(checkers, function (checker, name) {\n\t return module.exports[name] = checker;\n\t});\n\t\n\tfunction getApiCheckInstance() {\n\t var config = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t var extraCheckers = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\t\n\t /* eslint complexity:[2, 6] */\n\t if (apiCheckApiCheck && arguments.length) {\n\t apiCheckApiCheck['throw'](apiCheckApis.getApiCheckInstanceCheckers, arguments, {\n\t prefix: 'creating an apiCheck instance'\n\t });\n\t }\n\t\n\t var additionalProperties = {\n\t 'throw': getApiCheck(true),\n\t warn: getApiCheck(false),\n\t getErrorMessage: getErrorMessage,\n\t handleErrorMessage: handleErrorMessage,\n\t config: {\n\t output: config.output || {\n\t prefix: '',\n\t suffix: '',\n\t docsBaseUrl: ''\n\t },\n\t verbose: config.verbose || false,\n\t disabled: config.disabled || false\n\t },\n\t utils: apiCheckUtil\n\t };\n\t\n\t each(additionalProperties, function (wrapper, name) {\n\t return apiCheck[name] = wrapper;\n\t });\n\t\n\t var disabled = apiCheck.disabled || module.exports.globalConfig.disabled;\n\t each(checkers.getCheckers(disabled), function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\t each(extraCheckers, function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\t\n\t return apiCheck;\n\t\n\t /**\n\t * This is the instance function. Other things are attached to this see additional properties above.\n\t * @param {Array} api - the checkers to check with\n\t * @param {Array} args - the args to check\n\t * @param {Object} output - output options\n\t * @returns {Object} - if this has a failed = true property, then it failed\n\t */\n\t function apiCheck(api, args, output) {\n\t /* eslint complexity:[2, 8] */\n\t if (apiCheck.config.disabled || module.exports.globalConfig.disabled) {\n\t return {\n\t apiTypes: {}, argTypes: {},\n\t passed: true, message: '',\n\t failed: false\n\t }; // empty version of what is normally returned\n\t }\n\t checkApiCheckApi(arguments);\n\t if (!Array.isArray(api)) {\n\t api = [api];\n\t args = [args];\n\t } else {\n\t // turn arguments into an array\n\t args = Array.prototype.slice.call(args);\n\t }\n\t var messages = checkEnoughArgs(api, args);\n\t if (!messages.length) {\n\t // this is where we actually go perform the checks.\n\t messages = checkApiWithArgs(api, args);\n\t }\n\t\n\t var returnObject = getTypes(api, args);\n\t returnObject.args = args;\n\t if (messages.length) {\n\t returnObject.message = apiCheck.getErrorMessage(api, args, messages, output);\n\t returnObject.failed = true;\n\t returnObject.passed = false;\n\t } else {\n\t returnObject.message = '';\n\t returnObject.failed = false;\n\t returnObject.passed = true;\n\t }\n\t return returnObject;\n\t }\n\t\n\t /**\n\t * checkApiCheckApi, should be read like: check apiCheck api. As in, check the api for apiCheck :-)\n\t * @param {Array} checkApiArgs - args provided to apiCheck function\n\t */\n\t function checkApiCheckApi(checkApiArgs) {\n\t var api = checkApiArgs[0];\n\t var args = checkApiArgs[1];\n\t var isArrayOrArgs = Array.isArray(args) || args && typeof args === 'object' && typeof args.length === 'number';\n\t\n\t if (Array.isArray(api) && !isArrayOrArgs) {\n\t throw new Error(getErrorMessage(api, [args], ['If an array is provided for the api, an array must be provided for the args as well.'], { prefix: 'apiCheck' }));\n\t }\n\t // dog fooding here\n\t var errors = checkApiWithArgs(apiCheckApis.checkApiCheckApi, checkApiArgs);\n\t if (errors.length) {\n\t var message = apiCheck.getErrorMessage(apiCheckApis.checkApiCheckApi, checkApiArgs, errors, {\n\t prefix: 'apiCheck'\n\t });\n\t apiCheck.handleErrorMessage(message, true);\n\t }\n\t }\n\t\n\t function getApiCheck(shouldThrow) {\n\t return function apiCheckWrapper(api, args, output) {\n\t var result = apiCheck(api, args, output);\n\t apiCheck.handleErrorMessage(result.message, shouldThrow);\n\t return result; // wont get here if an error is thrown\n\t };\n\t }\n\t\n\t function handleErrorMessage(message, shouldThrow) {\n\t if (shouldThrow && message) {\n\t throw new Error(message);\n\t } else if (message) {\n\t /* eslint no-console:0 */\n\t console.warn(message);\n\t }\n\t }\n\t\n\t function getErrorMessage(api, args) {\n\t var messages = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];\n\t var output = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];\n\t\n\t var gOut = apiCheck.config.output || {};\n\t var prefix = getPrefix();\n\t var suffix = getSuffix();\n\t var url = getUrl();\n\t var message = 'apiCheck failed! ' + messages.join(', ');\n\t var passedAndShouldHavePassed = '\\n\\n' + buildMessageFromApiAndArgs(api, args);\n\t return (prefix + ' ' + message + ' ' + suffix + ' ' + (url || '') + passedAndShouldHavePassed).trim();\n\t\n\t function getPrefix() {\n\t var p = output.onlyPrefix;\n\t if (!p) {\n\t p = ((gOut.prefix || '') + ' ' + (output.prefix || '')).trim();\n\t }\n\t return p;\n\t }\n\t\n\t function getSuffix() {\n\t var s = output.onlySuffix;\n\t if (!s) {\n\t s = ((output.suffix || '') + ' ' + (gOut.suffix || '')).trim();\n\t }\n\t return s;\n\t }\n\t\n\t function getUrl() {\n\t var u = output.url;\n\t if (!u) {\n\t u = gOut.docsBaseUrl && output.urlSuffix && ('' + gOut.docsBaseUrl + output.urlSuffix).trim();\n\t }\n\t return u;\n\t }\n\t }\n\t\n\t function buildMessageFromApiAndArgs(api, args) {\n\t var _getTypes = getTypes(api, args);\n\t\n\t var apiTypes = _getTypes.apiTypes;\n\t var argTypes = _getTypes.argTypes;\n\t\n\t var copy = Array.prototype.slice.call(args || []);\n\t var replacedItems = [];\n\t replaceFunctionWithName(copy);\n\t var passedArgs = getObjectString(copy);\n\t argTypes = getObjectString(argTypes);\n\t apiTypes = getObjectString(apiTypes);\n\t\n\t return generateMessage();\n\t\n\t // functions\n\t\n\t function replaceFunctionWithName(obj) {\n\t each(obj, function (val, name) {\n\t /* eslint complexity:[2, 6] */\n\t if (replacedItems.indexOf(val) === -1) {\n\t // avoid recursive problems\n\t replacedItems.push(val);\n\t if (typeof val === 'object') {\n\t replaceFunctionWithName(obj);\n\t } else if (typeof val === 'function') {\n\t obj[name] = val.displayName || val.name || 'anonymous function';\n\t }\n\t }\n\t });\n\t }\n\t\n\t function getObjectString(types) {\n\t if (!types || !types.length) {\n\t return 'nothing';\n\t } else if (types && types.length === 1) {\n\t types = types[0];\n\t }\n\t return stringify(types, null, 2);\n\t }\n\t\n\t function generateMessage() {\n\t var n = '\\n';\n\t var useS = true;\n\t if (args && args.length === 1) {\n\t if (typeof args[0] === 'object' && args[0] !== null) {\n\t useS = !!Object.keys(args[0]).length;\n\t } else {\n\t useS = false;\n\t }\n\t }\n\t var types = 'type' + (useS ? 's' : '');\n\t var newLine = n + n;\n\t return 'You passed:' + n + passedArgs + newLine + ('With the ' + types + ':' + n + argTypes + newLine) + ('The API calls for:' + n + apiTypes);\n\t }\n\t }\n\t\n\t function getTypes(api, args) {\n\t api = arrayify(api);\n\t args = arrayify(args);\n\t var apiTypes = api.map(function (checker, index) {\n\t var specified = module.exports.globalConfig.hasOwnProperty('verbose');\n\t return getCheckerDisplay(checker, {\n\t terse: specified ? !module.exports.globalConfig.verbose : !apiCheck.config.verbose,\n\t obj: args[index],\n\t addHelpers: true\n\t });\n\t });\n\t var argTypes = args.map(function (arg) {\n\t return getArgDisplay(arg, []);\n\t });\n\t return { argTypes: argTypes, apiTypes: apiTypes };\n\t }\n\t}\n\t\n\t// STATELESS FUNCTIONS\n\t\n\t/**\n\t * This is where the magic happens for actually checking the arguments with the api.\n\t * @param {Array} api - checkers\n\t * @param {Array} args - and arguments object\n\t * @returns {Array} - the error messages\n\t */\n\tfunction checkApiWithArgs(api, args) {\n\t /* eslint complexity:[2, 7] */\n\t var messages = [];\n\t var failed = false;\n\t var checkerIndex = 0;\n\t var argIndex = 0;\n\t var arg = undefined,\n\t checker = undefined,\n\t res = undefined,\n\t lastChecker = undefined,\n\t argName = undefined,\n\t argFailed = undefined,\n\t skipPreviousChecker = undefined;\n\t /* jshint -W084 */\n\t while ((checker = api[checkerIndex++]) && argIndex < args.length) {\n\t arg = args[argIndex++];\n\t argName = 'Argument ' + argIndex + (checker.isOptional ? ' (optional)' : '');\n\t res = checker(arg, 'value', argName);\n\t argFailed = isError(res);\n\t lastChecker = checkerIndex >= api.length;\n\t skipPreviousChecker = checkerIndex > 1 && api[checkerIndex - 1].isOptional;\n\t if (argFailed && lastChecker || argFailed && !lastChecker && !checker.isOptional && !skipPreviousChecker) {\n\t failed = true;\n\t messages.push(getCheckerErrorMessage(res, checker, arg));\n\t } else if (argFailed && checker.isOptional) {\n\t argIndex--;\n\t } else {\n\t messages.push(t(argName) + ' passed');\n\t }\n\t }\n\t return failed ? messages : [];\n\t}\n\t\n\tcheckerTypeType.type = 'function with __apiCheckData property and `${function.type}` property';\n\tfunction checkerTypeType(checkerType, name, location) {\n\t var apiCheckDataChecker = checkers.shape({\n\t type: checkers.string,\n\t optional: checkers.bool\n\t });\n\t var asFunc = checkers.func.withProperties({ __apiCheckData: apiCheckDataChecker });\n\t var asShape = checkers.shape({ __apiCheckData: apiCheckDataChecker });\n\t var wrongShape = checkers.oneOfType([asFunc, asShape])(checkerType, name, location);\n\t if (isError(wrongShape)) {\n\t return wrongShape;\n\t }\n\t if (typeof checkerType !== 'function' && !checkerType.hasOwnProperty(checkerType.__apiCheckData.type)) {\n\t return getError(name, location, checkerTypeType.type);\n\t }\n\t}\n\t\n\tfunction getCheckerErrorMessage(res, checker, val) {\n\t var checkerHelp = getCheckerHelp(checker, val);\n\t checkerHelp = checkerHelp ? ' - ' + checkerHelp : '';\n\t return res.message + checkerHelp;\n\t}\n\t\n\tfunction getCheckerHelp(_ref, val) {\n\t var help = _ref.help;\n\t\n\t if (!help) {\n\t return '';\n\t }\n\t if (typeof help === 'function') {\n\t help = help(val);\n\t }\n\t return help;\n\t}\n\t\n\tfunction checkEnoughArgs(api, args) {\n\t var requiredArgs = api.filter(function (a) {\n\t return !a.isOptional;\n\t });\n\t if (args.length < requiredArgs.length) {\n\t return ['Not enough arguments specified. Requires `' + requiredArgs.length + '`, you passed `' + args.length + '`'];\n\t } else {\n\t return [];\n\t }\n\t}\n\t\n\tfunction getArgDisplay(arg, gottenArgs) {\n\t /* eslint complexity:[2, 7] */\n\t var cName = arg && arg.constructor && arg.constructor.name;\n\t var type = typeOf(arg);\n\t if (type === 'function') {\n\t if (hasKeys()) {\n\t var properties = stringify(getDisplayIfNotGotten());\n\t return cName + ' (with properties: ' + properties + ')';\n\t }\n\t return cName;\n\t }\n\t\n\t if (arg === null) {\n\t return 'null';\n\t }\n\t\n\t if (type !== 'array' && type !== 'object') {\n\t return type;\n\t }\n\t\n\t if (hasKeys()) {\n\t return getDisplayIfNotGotten();\n\t }\n\t\n\t return cName;\n\t\n\t // utility functions\n\t function hasKeys() {\n\t return arg && Object.keys(arg).length;\n\t }\n\t\n\t function getDisplayIfNotGotten() {\n\t if (gottenArgs.indexOf(arg) !== -1) {\n\t return '[Circular]';\n\t }\n\t gottenArgs.push(arg);\n\t return getDisplay(arg, gottenArgs);\n\t }\n\t}\n\t\n\tfunction getDisplay(obj, gottenArgs) {\n\t var argDisplay = {};\n\t each(obj, function (v, k) {\n\t return argDisplay[k] = getArgDisplay(v, gottenArgs);\n\t });\n\t return argDisplay;\n\t}\n\t\n\tfunction getApiCheckApis() {\n\t var os = checkers.string.optional;\n\t\n\t var checkerFnChecker = checkers.func.withProperties({\n\t type: checkers.oneOfType([checkers.string, checkerTypeType]).optional,\n\t displayName: checkers.string.optional,\n\t shortType: checkers.string.optional,\n\t notOptional: checkers.bool.optional,\n\t notRequired: checkers.bool.optional\n\t });\n\t\n\t var getApiCheckInstanceCheckers = [checkers.shape({\n\t output: checkers.shape({\n\t prefix: checkers.string.optional,\n\t suffix: checkers.string.optional,\n\t docsBaseUrl: checkers.string.optional\n\t }).strict.optional,\n\t verbose: checkers.bool.optional,\n\t disabled: checkers.bool.optional\n\t }).strict.optional, checkers.objectOf(checkerFnChecker).optional];\n\t\n\t var checkApiCheckApi = [checkers.typeOrArrayOf(checkerFnChecker), checkers.any.optional, checkers.shape({\n\t prefix: os, suffix: os, urlSuffix: os, // appended case\n\t onlyPrefix: os, onlySuffix: os, url: os // override case\n\t }).strict.optional];\n\t\n\t return {\n\t checkerFnChecker: checkerFnChecker,\n\t getApiCheckInstanceCheckers: getApiCheckInstanceCheckers,\n\t checkApiCheckApi: checkApiCheckApi\n\t };\n\t}\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar stringify = __webpack_require__(1);\n\t\n\tvar _require = __webpack_require__(2);\n\t\n\tvar typeOf = _require.typeOf;\n\tvar each = _require.each;\n\tvar copy = _require.copy;\n\tvar getCheckerDisplay = _require.getCheckerDisplay;\n\tvar isError = _require.isError;\n\tvar arrayify = _require.arrayify;\n\tvar list = _require.list;\n\tvar getError = _require.getError;\n\tvar nAtL = _require.nAtL;\n\tvar t = _require.t;\n\tvar checkerHelpers = _require.checkerHelpers;\n\tvar undef = _require.undef;\n\tvar setupChecker = checkerHelpers.setupChecker;\n\t\n\tvar checkers = module.exports = getCheckers();\n\tmodule.exports.getCheckers = getCheckers;\n\t\n\tfunction getCheckers(disabled) {\n\t return {\n\t array: typeOfCheckGetter('Array'),\n\t bool: typeOfCheckGetter('Boolean'),\n\t number: typeOfCheckGetter('Number'),\n\t string: typeOfCheckGetter('String'),\n\t func: funcCheckGetter(),\n\t object: objectCheckGetter(),\n\t\n\t emptyObject: emptyObjectCheckGetter(),\n\t\n\t instanceOf: instanceCheckGetter,\n\t oneOf: oneOfCheckGetter,\n\t oneOfType: oneOfTypeCheckGetter,\n\t\n\t arrayOf: arrayOfCheckGetter,\n\t objectOf: objectOfCheckGetter,\n\t typeOrArrayOf: typeOrArrayOfCheckGetter,\n\t\n\t range: rangeCheckGetter,\n\t lessThan: lessThanCheckGetter,\n\t greaterThan: greaterThanCheckGetter,\n\t\n\t shape: getShapeCheckGetter(),\n\t args: argumentsCheckerGetter(),\n\t\n\t any: anyCheckGetter(),\n\t 'null': nullCheckGetter()\n\t\n\t };\n\t\n\t function typeOfCheckGetter(type) {\n\t var lType = type.toLowerCase();\n\t return setupChecker(function typeOfCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== lType) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t\n\t function funcCheckGetter() {\n\t var type = 'Function';\n\t var functionChecker = setupChecker(function functionCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== 'function') {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t\n\t functionChecker.withProperties = function getWithPropertiesChecker(properties) {\n\t var apiError = checkers.objectOf(checkers.func)(properties, 'properties', 'apiCheck.func.withProperties');\n\t if (isError(apiError)) {\n\t throw apiError;\n\t }\n\t var shapeChecker = checkers.shape(properties, true);\n\t shapeChecker.type.__apiCheckData.type = 'func.withProperties';\n\t\n\t return setupChecker(function functionWithPropertiesChecker(val, name, location) {\n\t var notFunction = checkers.func(val, name, location);\n\t if (isError(notFunction)) {\n\t return notFunction;\n\t }\n\t return shapeChecker(val, name, location);\n\t }, { type: shapeChecker.type, shortType: 'func.withProperties' }, disabled);\n\t };\n\t return functionChecker;\n\t }\n\t\n\t function objectCheckGetter() {\n\t var type = 'Object';\n\t var nullType = 'Object (null ok)';\n\t var objectNullOkChecker = setupChecker(function objectNullOkCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== 'object') {\n\t return getError(name, location, nullType);\n\t }\n\t }, { type: nullType }, disabled);\n\t\n\t var objectChecker = setupChecker(function objectCheckerDefinition(val, name, location) {\n\t if (val === null || isError(objectNullOkChecker(val, name, location))) {\n\t return getError(name, location, objectChecker.type);\n\t }\n\t }, { type: type, nullOk: objectNullOkChecker }, disabled);\n\t\n\t return objectChecker;\n\t }\n\t\n\t function instanceCheckGetter(classToCheck) {\n\t return setupChecker(function instanceCheckerDefinition(val, name, location) {\n\t if (!(val instanceof classToCheck)) {\n\t return getError(name, location, classToCheck.name);\n\t }\n\t }, { type: classToCheck.name }, disabled);\n\t }\n\t\n\t function oneOfCheckGetter(enums) {\n\t var type = {\n\t __apiCheckData: { optional: false, type: 'enum' },\n\t 'enum': enums\n\t };\n\t var shortType = 'oneOf[' + enums.map(function (enm) {\n\t return stringify(enm);\n\t }).join(', ') + ']';\n\t return setupChecker(function oneOfCheckerDefinition(val, name, location) {\n\t if (!enums.some(function (enm) {\n\t return enm === val;\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function oneOfTypeCheckGetter(typeCheckers) {\n\t var checkersDisplay = typeCheckers.map(function (checker) {\n\t return getCheckerDisplay(checker, { short: true });\n\t });\n\t var shortType = 'oneOfType[' + checkersDisplay.join(', ') + ']';\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return typeCheckers.map(function (checker) {\n\t return getCheckerDisplay(checker, options);\n\t });\n\t }\n\t type.__apiCheckData = { optional: false, type: 'oneOfType' };\n\t return setupChecker(function oneOfTypeCheckerDefinition(val, name, location) {\n\t if (!typeCheckers.some(function (checker) {\n\t return !isError(checker(val, name, location));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function arrayOfCheckGetter(checker) {\n\t var shortCheckerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'arrayOf[' + shortCheckerDisplay + ']';\n\t\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'arrayOf' };\n\t\n\t return setupChecker(function arrayOfCheckerDefinition(val, name, location) {\n\t if (isError(checkers.array(val)) || !val.every(function (item) {\n\t return !isError(checker(item));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function objectOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'objectOf[' + checkerDisplay + ']';\n\t\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'objectOf' };\n\t\n\t return setupChecker(function objectOfCheckerDefinition(val, name, location) {\n\t var notObject = checkers.object(val, name, location);\n\t if (isError(notObject)) {\n\t return notObject;\n\t }\n\t var allTypesSuccess = each(val, function (item, key) {\n\t if (isError(checker(item, key, name))) {\n\t return false;\n\t }\n\t });\n\t if (!allTypesSuccess) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function typeOrArrayOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'typeOrArrayOf[' + checkerDisplay + ']';\n\t\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t\n\t type.__apiCheckData = { optional: false, type: 'typeOrArrayOf' };\n\t return setupChecker(function typeOrArrayOfDefinition(val, name, location, obj) {\n\t if (isError(checkers.oneOfType([checker, checkers.arrayOf(checker)])(val, name, location, obj))) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\t\n\t function getShapeCheckGetter() {\n\t function shapeCheckGetter(shape, nonObject) {\n\t var shapeTypes = {};\n\t each(shape, function (checker, prop) {\n\t shapeTypes[prop] = getCheckerDisplay(checker);\n\t });\n\t function type() {\n\t var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t\n\t var ret = {};\n\t var terse = options.terse;\n\t var obj = options.obj;\n\t var addHelpers = options.addHelpers;\n\t\n\t var parentRequired = options.required;\n\t each(shape, function (checker, prop) {\n\t /* eslint complexity:[2, 6] */\n\t var specified = obj && obj.hasOwnProperty(prop);\n\t var required = undef(parentRequired) ? !checker.isOptional : parentRequired;\n\t if (!terse || (specified || !checker.isOptional)) {\n\t ret[prop] = getCheckerDisplay(checker, { terse: terse, obj: obj && obj[prop], required: required, addHelpers: addHelpers });\n\t }\n\t if (addHelpers) {\n\t modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required);\n\t }\n\t });\n\t return ret;\n\t\n\t function modifyTypeDisplayToHelpOut(theRet, prop, specified, checker, required) {\n\t if (!specified && required && !checker.isOptional) {\n\t var item = 'ITEM';\n\t if (checker.type && checker.type.__apiCheckData) {\n\t item = checker.type.__apiCheckData.type.toUpperCase();\n\t }\n\t addHelper('missing', 'MISSING THIS ' + item, ' <-- YOU ARE MISSING THIS');\n\t } else if (specified) {\n\t var error = checker(obj[prop], prop, null, obj);\n\t if (isError(error)) {\n\t addHelper('error', 'THIS IS THE PROBLEM: ' + error.message, ' <-- THIS IS THE PROBLEM: ' + error.message);\n\t }\n\t }\n\t\n\t function addHelper(property, objectMessage, stringMessage) {\n\t if (typeof theRet[prop] === 'string') {\n\t theRet[prop] += stringMessage;\n\t } else {\n\t theRet[prop].__apiCheckData[property] = objectMessage;\n\t }\n\t }\n\t }\n\t }\n\t\n\t type.__apiCheckData = { strict: false, optional: false, type: 'shape' };\n\t var shapeChecker = setupChecker(function shapeCheckerDefinition(val, name, location) {\n\t /* eslint complexity:[2, 6] */\n\t var isObject = !nonObject && checkers.object(val, name, location);\n\t if (isError(isObject)) {\n\t return isObject;\n\t }\n\t var shapePropError = undefined;\n\t location = location ? location + (name ? '/' : '') : '';\n\t name = name || '';\n\t each(shape, function (checker, prop) {\n\t if (val.hasOwnProperty(prop) || !checker.isOptional) {\n\t shapePropError = checker(val[prop], prop, '' + location + name, val);\n\t return !isError(shapePropError);\n\t }\n\t });\n\t if (isError(shapePropError)) {\n\t return shapePropError;\n\t }\n\t }, { type: type, shortType: 'shape' }, disabled);\n\t\n\t function strictType() {\n\t return type.apply(undefined, arguments);\n\t }\n\t\n\t strictType.__apiCheckData = copy(shapeChecker.type.__apiCheckData);\n\t strictType.__apiCheckData.strict = true;\n\t shapeChecker.strict = setupChecker(function strictShapeCheckerDefinition(val, name, location) {\n\t var shapeError = shapeChecker(val, name, location);\n\t if (isError(shapeError)) {\n\t return shapeError;\n\t }\n\t var allowedProperties = Object.keys(shape);\n\t var extraProps = Object.keys(val).filter(function (prop) {\n\t return allowedProperties.indexOf(prop) === -1;\n\t });\n\t if (extraProps.length) {\n\t return new Error(nAtL(name, location) + ' cannot have extra properties: ' + t(extraProps.join('`, `')) + '.' + ('It is limited to ' + t(allowedProperties.join('`, `'))));\n\t }\n\t }, { type: strictType, shortType: 'strict shape' }, disabled);\n\t\n\t return shapeChecker;\n\t }\n\t\n\t shapeCheckGetter.ifNot = function ifNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = 'specified only if ' + otherProps[0] + ' is not specified';\n\t } else {\n\t description = 'specified only if none of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t }\n\t var shortType = 'ifNot[' + otherProps.join(', ') + ']';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function ifNotChecker(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (propExists === otherPropsExist) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { notRequired: true, type: type, shortType: shortType }, disabled);\n\t };\n\t\n\t shapeCheckGetter.onlyIf = function onlyIf(otherProps, propChecker) {\n\t otherProps = arrayify(otherProps);\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = 'specified only if ' + otherProps[0] + ' is also specified';\n\t } else {\n\t description = 'specified only if all of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t }\n\t var shortType = 'onlyIf[' + otherProps.join(', ') + ']';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function onlyIfCheckerDefinition(prop, propName, location, obj) {\n\t var othersPresent = otherProps.every(function (property) {\n\t return obj.hasOwnProperty(property);\n\t });\n\t if (!othersPresent) {\n\t return getError(propName, location, type);\n\t } else {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t };\n\t\n\t shapeCheckGetter.requiredIfNot = function shapeRequiredIfNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t return getRequiredIfNotChecker(false, otherProps, propChecker);\n\t };\n\t\n\t shapeCheckGetter.requiredIfNot.all = function shapeRequiredIfNotAll(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t throw new Error('requiredIfNot.all must be passed an array');\n\t }\n\t return getRequiredIfNotChecker(true, otherProps, propChecker);\n\t };\n\t\n\t function getRequiredIfNotChecker(all, otherProps, propChecker) {\n\t var props = t(otherProps.join(', '));\n\t var ifProps = 'if ' + (all ? 'all of' : 'at least one of');\n\t var description = 'specified ' + ifProps + ' these are not specified: ' + props + ' (otherwise it\\'s optional)';\n\t var shortType = 'requiredIfNot' + (all ? '.all' : '') + '[' + otherProps.join(', ') + '}]';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var iteration = all ? 'every' : 'some';\n\t var otherPropsExist = otherProps[iteration](function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (!otherPropsExist && !propExists) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, notRequired: true }, disabled);\n\t }\n\t\n\t return shapeCheckGetter;\n\t\n\t function getTypeForShapeChild(propChecker, description, shortType) {\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(propChecker);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'ifNot', description: description };\n\t return type;\n\t }\n\t }\n\t\n\t function argumentsCheckerGetter() {\n\t var type = 'function arguments';\n\t return setupChecker(function argsCheckerDefinition(val, name, location) {\n\t if (Array.isArray(val) || isError(checkers.object(val)) || isError(checkers.number(val.length))) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t\n\t function anyCheckGetter() {\n\t return setupChecker(function anyCheckerDefinition() {\n\t // don't do anything\n\t }, { type: 'any' }, disabled);\n\t }\n\t\n\t function nullCheckGetter() {\n\t var type = 'null';\n\t return setupChecker(function nullChecker(val, name, location) {\n\t if (val !== null) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t\n\t function rangeCheckGetter(min, max) {\n\t var type = 'Range (' + min + ' - ' + max + ')';\n\t return setupChecker(function rangeChecker(val, name, location) {\n\t if (typeof val !== 'number' || val < min || val > max) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t\n\t function lessThanCheckGetter(min) {\n\t var type = 'lessThan[' + min + ']';\n\t return setupChecker(function lessThanChecker(val, name, location) {\n\t if (typeof val !== 'number' || val > min) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t\n\t function greaterThanCheckGetter(max) {\n\t var type = 'greaterThan[' + max + ']';\n\t return setupChecker(function greaterThanChecker(val, name, location) {\n\t if (typeof val !== 'number' || val < max) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t\n\t function emptyObjectCheckGetter() {\n\t var type = 'empty object';\n\t return setupChecker(function emptyObjectChecker(val, name, location) {\n\t if (typeOf(val) !== 'object' || val === null || Object.keys(val).length) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t}\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** dist/api-check.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 0063d8845a3f72305aa5\n **/","import apiCheckFactory from './api-check';\n\nexport default apiCheckFactory;\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./index.js\n **/","module.exports = stringify;\n\nfunction getSerialize (fn, decycle) {\n var seen = [], keys = [];\n decycle = decycle || function(key, value) {\n return '[Circular ' + getPath(value, seen, keys) + ']'\n };\n return function(key, value) {\n var ret = value;\n if (typeof value === 'object' && value) {\n if (seen.indexOf(value) !== -1)\n ret = decycle(key, value);\n else {\n seen.push(value);\n keys.push(key);\n }\n }\n if (fn) ret = fn(key, ret);\n return ret;\n }\n}\n\nfunction getPath (value, seen, keys) {\n var index = seen.indexOf(value);\n var path = [ keys[index] ];\n for (index--; index >= 0; index--) {\n if (seen[index][ path[0] ] === value) {\n value = seen[index];\n path.unshift(keys[index]);\n }\n }\n return '~' + path.join('.');\n}\n\nfunction stringify(obj, fn, spaces, decycle) {\n return JSON.stringify(obj, getSerialize(fn, decycle), spaces);\n}\n\nstringify.getSerialize = getSerialize;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ../~/json-stringify-safe/stringify.js\n ** module id = 1\n ** module chunks = 0\n **/","const stringify = require('json-stringify-safe');\nconst checkerHelpers = {\n addOptional, getRequiredVersion, setupChecker, addNullable\n};\n\nmodule.exports = {\n each, copy, typeOf, arrayify, getCheckerDisplay,\n isError, list, getError, nAtL, t, undef, checkerHelpers,\n noop\n};\n\nfunction copy(obj) {\n const type = typeOf(obj);\n let daCopy;\n if (type === 'array') {\n daCopy = [];\n } else if (type === 'object') {\n daCopy = {};\n } else {\n return obj;\n }\n each(obj, (val, key) => {\n daCopy[key] = val; // cannot single-line this because we don't want to abort the each\n });\n return daCopy;\n}\n\n\nfunction typeOf(obj) {\n if (Array.isArray(obj)) {\n return 'array';\n } else if (obj instanceof RegExp) {\n return 'object';\n } else {\n return typeof obj;\n }\n}\n\nfunction getCheckerDisplay(checker, options) {\n /* eslint complexity:[2, 7] */\n let display;\n const short = options && options.short;\n if (short && checker.shortType) {\n display = checker.shortType;\n } else if (!short && typeof checker.type === 'object' || checker.type === 'function') {\n display = getCheckerType(checker, options);\n } else {\n display = getCheckerType(checker, options) || checker.displayName || checker.name;\n }\n return display;\n}\n\nfunction getCheckerType({type}, options) {\n if (typeof type === 'function') {\n const __apiCheckData = type.__apiCheckData;\n const typeTypes = type(options);\n type = {\n __apiCheckData,\n [__apiCheckData.type]: typeTypes\n };\n }\n return type;\n}\n\nfunction arrayify(obj) {\n if (!obj) {\n return [];\n } else if (Array.isArray(obj)) {\n return obj;\n } else {\n return [obj];\n }\n}\n\n\nfunction each(obj, iterator, context) {\n if (Array.isArray(obj)) {\n return eachArry(obj, iterator, context);\n } else {\n return eachObj(obj, iterator, context);\n }\n}\n\nfunction eachObj(obj, iterator, context) {\n let ret;\n const hasOwn = Object.prototype.hasOwnProperty;\n /* eslint prefer-const:0 */ // some weird eslint bug?\n for (let key in obj) {\n if (hasOwn.call(obj, key)) {\n ret = iterator.call(context, obj[key], key, obj);\n if (ret === false) {\n return ret;\n }\n }\n }\n return true;\n}\n\nfunction eachArry(obj, iterator, context) {\n let ret;\n const length = obj.length;\n for (let i = 0; i < length; i++) {\n ret = iterator.call(context, obj[i], i, obj);\n if (ret === false) {\n return ret;\n }\n }\n return true;\n}\n\nfunction isError(obj) {\n return obj instanceof Error;\n}\n\nfunction list(arry, join, finalJoin) {\n arry = arrayify(arry);\n const copy = arry.slice();\n const last = copy.pop();\n if (copy.length === 1) {\n join = ' ';\n }\n return copy.join(join) + `${copy.length ? join + finalJoin : ''}${last}`;\n}\n\n\nfunction getError(name, location, checkerType) {\n if (typeof checkerType === 'function') {\n checkerType = checkerType({short: true});\n }\n const stringType = typeof checkerType !== 'object' ? checkerType : stringify(checkerType);\n return new Error(`${nAtL(name, location)} must be ${t(stringType)}`);\n}\n\nfunction nAtL(name, location) {\n const tName = t(name || 'value');\n let tLocation = !location ? '' : ' at ' + t(location);\n return `${tName}${tLocation}`;\n}\n\nfunction t(thing) {\n return '`' + thing + '`';\n}\n\nfunction undef(thing) {\n return typeof thing === 'undefined';\n}\n\n\n/**\n * This will set up the checker with all of the defaults that most checkers want like required by default and an\n * optional version\n *\n * @param {Function} checker - the checker to setup with properties\n * @param {Object} properties - properties to add to the checker\n * @param {boolean} disabled - when set to true, this will set the checker to a no-op function\n * @returns {Function} checker - the setup checker\n */\nfunction setupChecker(checker, properties, disabled) {\n /* eslint complexity:[2, 9] */\n if (disabled) { // swap out the checker for its own copy of noop\n checker = getNoop();\n checker.isNoop = true;\n }\n\n if (typeof checker.type === 'string') {\n checker.shortType = checker.type;\n }\n\n // assign all properties given\n each(properties, (prop, name) => checker[name] = prop);\n\n if (!checker.displayName) {\n checker.displayName = `apiCheck ${t(checker.shortType || checker.type || checker.name)} type checker`;\n }\n\n\n if (!checker.notRequired) {\n checker = getRequiredVersion(checker, disabled);\n }\n\n if (!checker.notNullable) {\n addNullable(checker, disabled);\n }\n\n if (!checker.notOptional) {\n addOptional(checker, disabled);\n }\n\n return checker;\n}\n\nfunction getRequiredVersion(checker, disabled) {\n const requiredChecker = disabled ? getNoop() : function requiredChecker(val, name, location, obj) {\n if (undef(val) && !checker.isOptional) {\n let tLocation = location ? ` in ${t(location)}` : '';\n const type = getCheckerDisplay(checker, {short: true});\n const stringType = typeof type !== 'object' ? type : stringify(type);\n return new Error(`Required ${t(name)} not specified${tLocation}. Must be ${t(stringType)}`);\n } else {\n return checker(val, name, location, obj);\n }\n };\n copyProps(checker, requiredChecker);\n requiredChecker.originalChecker = checker;\n return requiredChecker;\n}\n\nfunction addOptional(checker, disabled) {\n const optionalCheck = disabled ? getNoop() : function optionalCheck(val, name, location, obj) {\n if (!undef(val)) {\n return checker(val, name, location, obj);\n }\n };\n // inherit all properties on the original checker\n copyProps(checker, optionalCheck);\n\n optionalCheck.isOptional = true;\n optionalCheck.displayName = checker.displayName + ' (optional)';\n optionalCheck.originalChecker = checker;\n\n\n // the magic line that allows you to add .optional to the end of the checkers\n checker.optional = optionalCheck;\n\n fixType(checker, checker.optional);\n}\n\nfunction addNullable(checker, disabled) {\n const nullableCheck = disabled ? getNoop() : function nullableCheck(val, name, location, obj) {\n if (val !== null) {\n return checker(val, name, location, obj);\n }\n };\n // inherit all properties on the original checker\n copyProps(checker, nullableCheck);\n\n nullableCheck.isNullable = true;\n nullableCheck.displayName = checker.displayName + ' (nullable)';\n nullableCheck.originalChecker = checker;\n\n // the magic line that allows you to add .nullable to the end of the checkers\n checker.nullable = nullableCheck;\n\n fixType(checker, checker.nullable);\n if (!checker.notOptional) {\n addOptional(checker.nullable, disabled);\n }\n}\n\nfunction fixType(checker, checkerCopy) {\n // fix type, because it's not a straight copy...\n // the reason is we need to specify type.__apiCheckData.optional as true for the terse/verbose option.\n // we also want to add \"(optional)\" to the types with a string\n if (typeof checkerCopy.type === 'object') {\n checkerCopy.type = copy(checkerCopy.type); // make our own copy of this\n } else if (typeof checkerCopy.type === 'function') {\n checkerCopy.type = function() {\n return checker.type(...arguments);\n };\n } else {\n checkerCopy.type += ' (optional)';\n return;\n }\n checkerCopy.type.__apiCheckData = copy(checker.type.__apiCheckData) || {}; // and this\n checkerCopy.type.__apiCheckData.optional = true;\n}\n\n\n// UTILS\n\nfunction copyProps(src, dest) {\n each(Object.keys(src), key => dest[key] = src[key]);\n}\n\nfunction noop() {\n}\n\nfunction getNoop() {\n /* eslint no-shadow:0 */\n /* istanbul ignore next */\n return function noop() {\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./api-check-util.js\n **/","const stringify = require('json-stringify-safe');\nconst apiCheckUtil = require('./api-check-util');\nconst {each, isError, t, arrayify, getCheckerDisplay, typeOf, getError} = apiCheckUtil;\nconst checkers = require('./checkers');\nconst apiCheckApis = getApiCheckApis();\n\nmodule.exports = getApiCheckInstance;\nmodule.exports.VERSION = VERSION;\nmodule.exports.utils = apiCheckUtil;\nmodule.exports.globalConfig = {\n verbose: false,\n disabled: false\n};\n\nconst apiCheckApiCheck = getApiCheckInstance({\n output: {prefix: 'apiCheck'}\n});\nmodule.exports.internalChecker = apiCheckApiCheck;\n\n\neach(checkers, (checker, name) => module.exports[name] = checker);\n\nfunction getApiCheckInstance(config = {}, extraCheckers = {}) {\n /* eslint complexity:[2, 6] */\n if (apiCheckApiCheck && arguments.length) {\n apiCheckApiCheck.throw(apiCheckApis.getApiCheckInstanceCheckers, arguments, {\n prefix: 'creating an apiCheck instance'\n });\n }\n\n const additionalProperties = {\n throw: getApiCheck(true),\n warn: getApiCheck(false),\n getErrorMessage,\n handleErrorMessage,\n config: {\n output: config.output || {\n prefix: '',\n suffix: '',\n docsBaseUrl: ''\n },\n verbose: config.verbose || false,\n disabled: config.disabled || false\n },\n utils: apiCheckUtil\n };\n\n each(additionalProperties, (wrapper, name) => apiCheck[name] = wrapper);\n\n const disabled = apiCheck.disabled || module.exports.globalConfig.disabled;\n each(checkers.getCheckers(disabled), (checker, name) => apiCheck[name] = checker);\n each(extraCheckers, (checker, name) => apiCheck[name] = checker);\n\n return apiCheck;\n\n\n /**\n * This is the instance function. Other things are attached to this see additional properties above.\n * @param {Array} api - the checkers to check with\n * @param {Array} args - the args to check\n * @param {Object} output - output options\n * @returns {Object} - if this has a failed = true property, then it failed\n */\n function apiCheck(api, args, output) {\n /* eslint complexity:[2, 8] */\n if (apiCheck.config.disabled || module.exports.globalConfig.disabled) {\n return {\n apiTypes: {}, argTypes: {},\n passed: true, message: '',\n failed: false\n }; // empty version of what is normally returned\n }\n checkApiCheckApi(arguments);\n if (!Array.isArray(api)) {\n api = [api];\n args = [args];\n } else {\n // turn arguments into an array\n args = Array.prototype.slice.call(args);\n }\n let messages = checkEnoughArgs(api, args);\n if (!messages.length) {\n // this is where we actually go perform the checks.\n messages = checkApiWithArgs(api, args);\n }\n\n const returnObject = getTypes(api, args);\n returnObject.args = args;\n if (messages.length) {\n returnObject.message = apiCheck.getErrorMessage(api, args, messages, output);\n returnObject.failed = true;\n returnObject.passed = false;\n } else {\n returnObject.message = '';\n returnObject.failed = false;\n returnObject.passed = true;\n }\n return returnObject;\n }\n\n /**\n * checkApiCheckApi, should be read like: check apiCheck api. As in, check the api for apiCheck :-)\n * @param {Array} checkApiArgs - args provided to apiCheck function\n */\n function checkApiCheckApi(checkApiArgs) {\n const api = checkApiArgs[0];\n const args = checkApiArgs[1];\n const isArrayOrArgs = Array.isArray(args) || (args && typeof args === 'object' && typeof args.length === 'number');\n\n if (Array.isArray(api) && !isArrayOrArgs) {\n throw new Error(getErrorMessage(api, [args],\n ['If an array is provided for the api, an array must be provided for the args as well.'],\n {prefix: 'apiCheck'}\n ));\n }\n // dog fooding here\n const errors = checkApiWithArgs(apiCheckApis.checkApiCheckApi, checkApiArgs);\n if (errors.length) {\n const message = apiCheck.getErrorMessage(apiCheckApis.checkApiCheckApi, checkApiArgs, errors, {\n prefix: 'apiCheck'\n });\n apiCheck.handleErrorMessage(message, true);\n }\n }\n\n\n function getApiCheck(shouldThrow) {\n return function apiCheckWrapper(api, args, output) {\n const result = apiCheck(api, args, output);\n apiCheck.handleErrorMessage(result.message, shouldThrow);\n return result; // wont get here if an error is thrown\n };\n }\n\n function handleErrorMessage(message, shouldThrow) {\n if (shouldThrow && message) {\n throw new Error(message);\n } else if (message) {\n /* eslint no-console:0 */\n console.warn(message);\n }\n }\n\n function getErrorMessage(api, args, messages = [], output = {}) {\n const gOut = apiCheck.config.output || {};\n const prefix = getPrefix();\n const suffix = getSuffix();\n const url = getUrl();\n const message = `apiCheck failed! ${messages.join(', ')}`;\n const passedAndShouldHavePassed = '\\n\\n' + buildMessageFromApiAndArgs(api, args);\n return `${prefix} ${message} ${suffix} ${url || ''}${passedAndShouldHavePassed}`.trim();\n\n function getPrefix() {\n let p = output.onlyPrefix;\n if (!p) {\n p = `${gOut.prefix || ''} ${output.prefix || ''}`.trim();\n }\n return p;\n }\n\n function getSuffix() {\n let s = output.onlySuffix;\n if (!s) {\n s = `${output.suffix || ''} ${gOut.suffix || ''}`.trim();\n }\n return s;\n }\n\n function getUrl() {\n let u = output.url;\n if (!u) {\n u = gOut.docsBaseUrl && output.urlSuffix && `${gOut.docsBaseUrl}${output.urlSuffix}`.trim();\n }\n return u;\n }\n }\n\n function buildMessageFromApiAndArgs(api, args) {\n let {apiTypes, argTypes} = getTypes(api, args);\n const copy = Array.prototype.slice.call(args || []);\n const replacedItems = [];\n replaceFunctionWithName(copy);\n const passedArgs = getObjectString(copy);\n argTypes = getObjectString(argTypes);\n apiTypes = getObjectString(apiTypes);\n\n return generateMessage();\n\n\n // functions\n\n function replaceFunctionWithName(obj) {\n each(obj, (val, name) => {\n /* eslint complexity:[2, 6] */\n if (replacedItems.indexOf(val) === -1) { // avoid recursive problems\n replacedItems.push(val);\n if (typeof val === 'object') {\n replaceFunctionWithName(obj);\n } else if (typeof val === 'function') {\n obj[name] = val.displayName || val.name || 'anonymous function';\n }\n }\n });\n }\n\n function getObjectString(types) {\n if (!types || !types.length) {\n return 'nothing';\n } else if (types && types.length === 1) {\n types = types[0];\n }\n return stringify(types, null, 2);\n }\n\n function generateMessage() {\n const n = '\\n';\n let useS = true;\n if (args && args.length === 1) {\n if (typeof args[0] === 'object' && args[0] !== null) {\n useS = !!Object.keys(args[0]).length;\n } else {\n useS = false;\n }\n }\n const types = `type${useS ? 's' : ''}`;\n const newLine = n + n;\n return `You passed:${n}${passedArgs}${newLine}` +\n `With the ${types}:${n}${argTypes}${newLine}` +\n `The API calls for:${n}${apiTypes}`;\n }\n }\n\n function getTypes(api, args) {\n api = arrayify(api);\n args = arrayify(args);\n const apiTypes = api.map((checker, index) => {\n const specified = module.exports.globalConfig.hasOwnProperty('verbose');\n return getCheckerDisplay(checker, {\n terse: specified ? !module.exports.globalConfig.verbose : !apiCheck.config.verbose,\n obj: args[index],\n addHelpers: true\n });\n });\n const argTypes = args.map((arg) => getArgDisplay(arg, []));\n return {argTypes, apiTypes};\n }\n\n}\n\n\n// STATELESS FUNCTIONS\n\n/**\n * This is where the magic happens for actually checking the arguments with the api.\n * @param {Array} api - checkers\n * @param {Array} args - and arguments object\n * @returns {Array} - the error messages\n */\nfunction checkApiWithArgs(api, args) {\n /* eslint complexity:[2, 7] */\n const messages = [];\n let failed = false;\n let checkerIndex = 0;\n let argIndex = 0;\n let arg, checker, res, lastChecker, argName, argFailed, skipPreviousChecker;\n /* jshint -W084 */\n while ((checker = api[checkerIndex++]) && (argIndex < args.length)) {\n arg = args[argIndex++];\n argName = 'Argument ' + argIndex + (checker.isOptional ? ' (optional)' : '');\n res = checker(arg, 'value', argName);\n argFailed = isError(res);\n lastChecker = checkerIndex >= api.length;\n skipPreviousChecker = checkerIndex > 1 && api[checkerIndex - 1].isOptional;\n if ((argFailed && lastChecker) || (argFailed && !lastChecker && !checker.isOptional && !skipPreviousChecker)) {\n failed = true;\n messages.push(getCheckerErrorMessage(res, checker, arg));\n } else if (argFailed && checker.isOptional) {\n argIndex--;\n } else {\n messages.push(`${t(argName)} passed`);\n }\n }\n return failed ? messages : [];\n}\n\n\ncheckerTypeType.type = 'function with __apiCheckData property and `${function.type}` property';\nfunction checkerTypeType(checkerType, name, location) {\n const apiCheckDataChecker = checkers.shape({\n type: checkers.string,\n optional: checkers.bool\n });\n const asFunc = checkers.func.withProperties({__apiCheckData: apiCheckDataChecker});\n const asShape = checkers.shape({__apiCheckData: apiCheckDataChecker});\n const wrongShape = checkers.oneOfType([\n asFunc, asShape\n ])(checkerType, name, location);\n if (isError(wrongShape)) {\n return wrongShape;\n }\n if (typeof checkerType !== 'function' && !checkerType.hasOwnProperty(checkerType.__apiCheckData.type)) {\n return getError(name, location, checkerTypeType.type);\n }\n}\n\nfunction getCheckerErrorMessage(res, checker, val) {\n let checkerHelp = getCheckerHelp(checker, val);\n checkerHelp = checkerHelp ? ' - ' + checkerHelp : '';\n return res.message + checkerHelp;\n}\n\nfunction getCheckerHelp({help}, val) {\n if (!help) {\n return '';\n }\n if (typeof help === 'function') {\n help = help(val);\n }\n return help;\n}\n\n\nfunction checkEnoughArgs(api, args) {\n const requiredArgs = api.filter(a => !a.isOptional);\n if (args.length < requiredArgs.length) {\n return [\n 'Not enough arguments specified. Requires `' + requiredArgs.length + '`, you passed `' + args.length + '`'\n ];\n } else {\n return [];\n }\n}\n\nfunction getArgDisplay(arg, gottenArgs) {\n /* eslint complexity:[2, 7] */\n const cName = arg && arg.constructor && arg.constructor.name;\n const type = typeOf(arg);\n if (type === 'function') {\n if (hasKeys()) {\n const properties = stringify(getDisplayIfNotGotten());\n return cName + ' (with properties: ' + properties + ')';\n }\n return cName;\n }\n\n if (arg === null) {\n return 'null';\n }\n\n if (type !== 'array' && type !== 'object') {\n return type;\n }\n\n if (hasKeys()) {\n return getDisplayIfNotGotten();\n }\n\n return cName;\n\n // utility functions\n function hasKeys() {\n return arg && Object.keys(arg).length;\n }\n\n function getDisplayIfNotGotten() {\n if (gottenArgs.indexOf(arg) !== -1) {\n return '[Circular]';\n }\n gottenArgs.push(arg);\n return getDisplay(arg, gottenArgs);\n }\n}\n\nfunction getDisplay(obj, gottenArgs) {\n const argDisplay = {};\n each(obj, (v, k) => argDisplay[k] = getArgDisplay(v, gottenArgs));\n return argDisplay;\n}\n\nfunction getApiCheckApis() {\n const os = checkers.string.optional;\n\n const checkerFnChecker = checkers.func.withProperties({\n type: checkers.oneOfType([checkers.string, checkerTypeType]).optional,\n displayName: checkers.string.optional,\n shortType: checkers.string.optional,\n notOptional: checkers.bool.optional,\n notRequired: checkers.bool.optional\n });\n\n const getApiCheckInstanceCheckers = [\n checkers.shape({\n output: checkers.shape({\n prefix: checkers.string.optional,\n suffix: checkers.string.optional,\n docsBaseUrl: checkers.string.optional\n }).strict.optional,\n verbose: checkers.bool.optional,\n disabled: checkers.bool.optional\n }).strict.optional,\n checkers.objectOf(checkerFnChecker).optional\n ];\n\n const checkApiCheckApi = [\n checkers.typeOrArrayOf(checkerFnChecker),\n checkers.any.optional,\n checkers.shape({\n prefix: os, suffix: os, urlSuffix: os, // appended case\n onlyPrefix: os, onlySuffix: os, url: os // override case\n }).strict.optional\n ];\n\n return {\n checkerFnChecker,\n getApiCheckInstanceCheckers,\n checkApiCheckApi\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./api-check.js\n **/","const stringify = require('json-stringify-safe');\nconst {\n typeOf, each, copy, getCheckerDisplay, isError,\n arrayify, list, getError, nAtL, t, checkerHelpers,\n undef\n } = require('./api-check-util');\nconst {setupChecker} = checkerHelpers;\n\nconst checkers = module.exports = getCheckers();\nmodule.exports.getCheckers = getCheckers;\n\nfunction getCheckers(disabled) {\n return {\n array: typeOfCheckGetter('Array'),\n bool: typeOfCheckGetter('Boolean'),\n number: typeOfCheckGetter('Number'),\n string: typeOfCheckGetter('String'),\n func: funcCheckGetter(),\n object: objectCheckGetter(),\n\n emptyObject: emptyObjectCheckGetter(),\n\n instanceOf: instanceCheckGetter,\n oneOf: oneOfCheckGetter,\n oneOfType: oneOfTypeCheckGetter,\n\n arrayOf: arrayOfCheckGetter,\n objectOf: objectOfCheckGetter,\n typeOrArrayOf: typeOrArrayOfCheckGetter,\n\n range: rangeCheckGetter,\n lessThan: lessThanCheckGetter,\n greaterThan: greaterThanCheckGetter,\n\n shape: getShapeCheckGetter(),\n args: argumentsCheckerGetter(),\n\n any: anyCheckGetter(),\n null: nullCheckGetter()\n\n };\n\n function typeOfCheckGetter(type) {\n const lType = type.toLowerCase();\n return setupChecker(function typeOfCheckerDefinition(val, name, location) {\n if (typeOf(val) !== lType) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n function funcCheckGetter() {\n const type = 'Function';\n const functionChecker = setupChecker(function functionCheckerDefinition(val, name, location) {\n if (typeOf(val) !== 'function') {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n\n functionChecker.withProperties = function getWithPropertiesChecker(properties) {\n const apiError = checkers.objectOf(checkers.func)(properties, 'properties', 'apiCheck.func.withProperties');\n if (isError(apiError)) {\n throw apiError;\n }\n const shapeChecker = checkers.shape(properties, true);\n shapeChecker.type.__apiCheckData.type = 'func.withProperties';\n\n return setupChecker(function functionWithPropertiesChecker(val, name, location) {\n const notFunction = checkers.func(val, name, location);\n if (isError(notFunction)) {\n return notFunction;\n }\n return shapeChecker(val, name, location);\n }, {type: shapeChecker.type, shortType: 'func.withProperties'}, disabled);\n };\n return functionChecker;\n }\n\n function objectCheckGetter() {\n const type = 'Object';\n const nullType = 'Object (null ok)';\n const objectNullOkChecker = setupChecker(function objectNullOkCheckerDefinition(val, name, location) {\n if (typeOf(val) !== 'object') {\n return getError(name, location, nullType);\n }\n }, {type: nullType}, disabled);\n\n const objectChecker = setupChecker(function objectCheckerDefinition(val, name, location) {\n if (val === null || isError(objectNullOkChecker(val, name, location))) {\n return getError(name, location, objectChecker.type);\n }\n }, {type, nullOk: objectNullOkChecker}, disabled);\n\n return objectChecker;\n }\n\n\n function instanceCheckGetter(classToCheck) {\n return setupChecker(function instanceCheckerDefinition(val, name, location) {\n if (!(val instanceof classToCheck)) {\n return getError(name, location, classToCheck.name);\n }\n }, {type: classToCheck.name}, disabled);\n }\n\n function oneOfCheckGetter(enums) {\n const type = {\n __apiCheckData: {optional: false, type: 'enum'},\n enum: enums\n };\n const shortType = `oneOf[${enums.map(enm => stringify(enm)).join(', ')}]`;\n return setupChecker(function oneOfCheckerDefinition(val, name, location) {\n if (!enums.some(enm => enm === val)) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function oneOfTypeCheckGetter(typeCheckers) {\n const checkersDisplay = typeCheckers.map((checker) => getCheckerDisplay(checker, {short: true}));\n const shortType = `oneOfType[${checkersDisplay.join(', ')}]`;\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return typeCheckers.map((checker) => getCheckerDisplay(checker, options));\n }\n type.__apiCheckData = {optional: false, type: 'oneOfType'};\n return setupChecker(function oneOfTypeCheckerDefinition(val, name, location) {\n if (!typeCheckers.some(checker => !isError(checker(val, name, location)))) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function arrayOfCheckGetter(checker) {\n const shortCheckerDisplay = getCheckerDisplay(checker, {short: true});\n const shortType = `arrayOf[${shortCheckerDisplay}]`;\n\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return getCheckerDisplay(checker, options);\n }\n type.__apiCheckData = {optional: false, type: 'arrayOf'};\n\n return setupChecker(function arrayOfCheckerDefinition(val, name, location) {\n if (isError(checkers.array(val)) || !val.every((item) => !isError(checker(item)))) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function objectOfCheckGetter(checker) {\n const checkerDisplay = getCheckerDisplay(checker, {short: true});\n const shortType = `objectOf[${checkerDisplay}]`;\n\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return getCheckerDisplay(checker, options);\n }\n type.__apiCheckData = {optional: false, type: 'objectOf'};\n\n return setupChecker(function objectOfCheckerDefinition(val, name, location) {\n const notObject = checkers.object(val, name, location);\n if (isError(notObject)) {\n return notObject;\n }\n const allTypesSuccess = each(val, (item, key) => {\n if (isError(checker(item, key, name))) {\n return false;\n }\n });\n if (!allTypesSuccess) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function typeOrArrayOfCheckGetter(checker) {\n const checkerDisplay = getCheckerDisplay(checker, {short: true});\n const shortType = `typeOrArrayOf[${checkerDisplay}]`;\n\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return getCheckerDisplay(checker, options);\n }\n\n type.__apiCheckData = {optional: false, type: 'typeOrArrayOf'};\n return setupChecker(function typeOrArrayOfDefinition(val, name, location, obj) {\n if (isError(checkers.oneOfType([checker, checkers.arrayOf(checker)])(val, name, location, obj))) {\n return getError(name, location, shortType);\n }\n }, {type, shortType}, disabled);\n }\n\n function getShapeCheckGetter() {\n function shapeCheckGetter(shape, nonObject) {\n const shapeTypes = {};\n each(shape, (checker, prop) => {\n shapeTypes[prop] = getCheckerDisplay(checker);\n });\n function type(options = {}) {\n const ret = {};\n const {terse, obj, addHelpers} = options;\n const parentRequired = options.required;\n each(shape, (checker, prop) => {\n /* eslint complexity:[2, 6] */\n const specified = obj && obj.hasOwnProperty(prop);\n const required = undef(parentRequired) ? !checker.isOptional : parentRequired;\n if (!terse || (specified || !checker.isOptional)) {\n ret[prop] = getCheckerDisplay(checker, {terse, obj: obj && obj[prop], required, addHelpers});\n }\n if (addHelpers) {\n modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required);\n }\n });\n return ret;\n\n function modifyTypeDisplayToHelpOut(theRet, prop, specified, checker, required) {\n if (!specified && required && !checker.isOptional) {\n let item = 'ITEM';\n if (checker.type && checker.type.__apiCheckData) {\n item = checker.type.__apiCheckData.type.toUpperCase();\n }\n addHelper('missing', `MISSING THIS ${item}`, ' <-- YOU ARE MISSING THIS');\n } else if (specified) {\n const error = checker(obj[prop], prop, null, obj);\n if (isError(error)) {\n addHelper('error', `THIS IS THE PROBLEM: ${error.message}`, ` <-- THIS IS THE PROBLEM: ${error.message}`);\n }\n }\n\n function addHelper(property, objectMessage, stringMessage) {\n if (typeof theRet[prop] === 'string') {\n theRet[prop] += stringMessage;\n } else {\n theRet[prop].__apiCheckData[property] = objectMessage;\n }\n }\n }\n }\n\n type.__apiCheckData = {strict: false, optional: false, type: 'shape'};\n const shapeChecker = setupChecker(function shapeCheckerDefinition(val, name, location) {\n /* eslint complexity:[2, 6] */\n const isObject = !nonObject && checkers.object(val, name, location);\n if (isError(isObject)) {\n return isObject;\n }\n let shapePropError;\n location = location ? location + (name ? '/' : '') : '';\n name = name || '';\n each(shape, (checker, prop) => {\n if (val.hasOwnProperty(prop) || !checker.isOptional) {\n shapePropError = checker(val[prop], prop, `${location}${name}`, val);\n return !isError(shapePropError);\n }\n });\n if (isError(shapePropError)) {\n return shapePropError;\n }\n }, {type, shortType: 'shape'}, disabled);\n\n function strictType() {\n return type(...arguments);\n }\n\n strictType.__apiCheckData = copy(shapeChecker.type.__apiCheckData);\n strictType.__apiCheckData.strict = true;\n shapeChecker.strict = setupChecker(function strictShapeCheckerDefinition(val, name, location) {\n const shapeError = shapeChecker(val, name, location);\n if (isError(shapeError)) {\n return shapeError;\n }\n const allowedProperties = Object.keys(shape);\n const extraProps = Object.keys(val).filter(prop => allowedProperties.indexOf(prop) === -1);\n if (extraProps.length) {\n return new Error(\n `${nAtL(name, location)} cannot have extra properties: ${t(extraProps.join('`, `'))}.` +\n `It is limited to ${t(allowedProperties.join('`, `'))}`\n );\n }\n }, {type: strictType, shortType: 'strict shape'}, disabled);\n\n return shapeChecker;\n }\n\n shapeCheckGetter.ifNot = function ifNot(otherProps, propChecker) {\n if (!Array.isArray(otherProps)) {\n otherProps = [otherProps];\n }\n let description;\n if (otherProps.length === 1) {\n description = `specified only if ${otherProps[0]} is not specified`;\n } else {\n description = `specified only if none of the following are specified: [${list(otherProps, ', ', 'and ')}]`;\n }\n const shortType = `ifNot[${otherProps.join(', ')}]`;\n const type = getTypeForShapeChild(propChecker, description, shortType);\n return setupChecker(function ifNotChecker(prop, propName, location, obj) {\n const propExists = obj && obj.hasOwnProperty(propName);\n const otherPropsExist = otherProps.some(otherProp => obj && obj.hasOwnProperty(otherProp));\n if (propExists === otherPropsExist) {\n return getError(propName, location, type);\n } else if (propExists) {\n return propChecker(prop, propName, location, obj);\n }\n }, {notRequired: true, type, shortType}, disabled);\n };\n\n shapeCheckGetter.onlyIf = function onlyIf(otherProps, propChecker) {\n otherProps = arrayify(otherProps);\n let description;\n if (otherProps.length === 1) {\n description = `specified only if ${otherProps[0]} is also specified`;\n } else {\n description = `specified only if all of the following are specified: [${list(otherProps, ', ', 'and ')}]`;\n }\n const shortType = `onlyIf[${otherProps.join(', ')}]`;\n const type = getTypeForShapeChild(propChecker, description, shortType);\n return setupChecker(function onlyIfCheckerDefinition(prop, propName, location, obj) {\n const othersPresent = otherProps.every(property => obj.hasOwnProperty(property));\n if (!othersPresent) {\n return getError(propName, location, type);\n } else {\n return propChecker(prop, propName, location, obj);\n }\n }, {type, shortType}, disabled);\n };\n\n shapeCheckGetter.requiredIfNot = function shapeRequiredIfNot(otherProps, propChecker) {\n if (!Array.isArray(otherProps)) {\n otherProps = [otherProps];\n }\n return getRequiredIfNotChecker(false, otherProps, propChecker);\n };\n\n shapeCheckGetter.requiredIfNot.all = function shapeRequiredIfNotAll(otherProps, propChecker) {\n if (!Array.isArray(otherProps)) {\n throw new Error('requiredIfNot.all must be passed an array');\n }\n return getRequiredIfNotChecker(true, otherProps, propChecker);\n };\n\n function getRequiredIfNotChecker(all, otherProps, propChecker) {\n const props = t(otherProps.join(', '));\n const ifProps = `if ${all ? 'all of' : 'at least one of'}`;\n const description = `specified ${ifProps} these are not specified: ${props} (otherwise it's optional)`;\n const shortType = `requiredIfNot${all ? '.all' : ''}[${otherProps.join(', ')}}]`;\n const type = getTypeForShapeChild(propChecker, description, shortType);\n return setupChecker(function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n const propExists = obj && obj.hasOwnProperty(propName);\n const iteration = all ? 'every' : 'some';\n const otherPropsExist = otherProps[iteration](function(otherProp) {\n return obj && obj.hasOwnProperty(otherProp);\n });\n if (!otherPropsExist && !propExists) {\n return getError(propName, location, type);\n } else if (propExists) {\n return propChecker(prop, propName, location, obj);\n }\n }, {type, notRequired: true}, disabled);\n }\n\n return shapeCheckGetter;\n\n function getTypeForShapeChild(propChecker, description, shortType) {\n function type(options) {\n if (options && options.short) {\n return shortType;\n }\n return getCheckerDisplay(propChecker);\n }\n type.__apiCheckData = {optional: false, type: 'ifNot', description};\n return type;\n }\n }\n\n function argumentsCheckerGetter() {\n const type = 'function arguments';\n return setupChecker(function argsCheckerDefinition(val, name, location) {\n if (Array.isArray(val) || isError(checkers.object(val)) || isError(checkers.number(val.length))) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n function anyCheckGetter() {\n return setupChecker(function anyCheckerDefinition() {\n // don't do anything\n }, {type: 'any'}, disabled);\n }\n\n function nullCheckGetter() {\n const type = 'null';\n return setupChecker(function nullChecker(val, name, location) {\n if (val !== null) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n function rangeCheckGetter(min, max) {\n const type = `Range (${min} - ${max})`;\n return setupChecker(function rangeChecker(val, name, location) {\n if (typeof val !== 'number' || val < min || val > max) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n function lessThanCheckGetter(min) {\n const type = `lessThan[${min}]`;\n return setupChecker(function lessThanChecker(val, name, location) {\n if (typeof val !== 'number' || val > min) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n function greaterThanCheckGetter(max) {\n const type = `greaterThan[${max}]`;\n return setupChecker(function greaterThanChecker(val, name, location) {\n if (typeof val !== 'number' || val < max) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n function emptyObjectCheckGetter() {\n const type = 'empty object';\n return setupChecker(function emptyObjectChecker(val, name, location) {\n if (typeOf(val) !== 'object' || val === null || Object.keys(val).length) {\n return getError(name, location, type);\n }\n }, {type}, disabled);\n }\n\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./checkers.js\n **/"],"sourceRoot":""}
\ No newline at end of file
diff --git a/static/js/eda.dragdropway.css b/static/js/eda.dragdropway.css
new file mode 100644
index 0000000..2a80d5d
--- /dev/null
+++ b/static/js/eda.dragdropway.css
@@ -0,0 +1,913 @@
+/*=========================================================
+ colors const
+===========================================================*/
+/*=========================================================
+ fonts const
+===========================================================*/
+/*=========================================================
+ common
+===========================================================*/
+.ta-hidden-input {
+ width: 1px;
+ height: 1px;
+ border: none;
+ margin: 0;
+ padding: 0;
+ position: absolute;
+ top: -10000px;
+ left: -10000px;
+ opacity: 0;
+ overflow: hidden; }
+
+.ta-root.focussed > .ta-scroll-window.form-control {
+ border-color: #66afe9;
+ outline: 0;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }
+
+.ta-editor.ta-html, .ta-scroll-window.form-control {
+ min-height: 300px;
+ height: auto;
+ overflow: auto;
+ font-family: inherit;
+ font-size: 100%; }
+
+.ta-scroll-window.form-control {
+ position: relative;
+ padding: 0; }
+
+.ta-scroll-window > .ta-bind {
+ height: auto;
+ min-height: 300px;
+ padding: 6px 12px; }
+
+.ta-editor:focus {
+ -webkit-user-select: text;
+ -moz-user-select: text;
+ -ms-user-select: text;
+ user-select: text; }
+
+.ta-resizer-handle-overlay {
+ z-index: 100;
+ position: absolute;
+ display: none; }
+
+.ta-resizer-handle-overlay > .ta-resizer-handle-info {
+ position: absolute;
+ bottom: 16px;
+ right: 16px;
+ border: 1px solid #000;
+ background-color: #FFF;
+ padding: 0 4px;
+ opacity: .7; }
+
+.ta-resizer-handle-overlay > .ta-resizer-handle-background {
+ position: absolute;
+ bottom: 5px;
+ right: 5px;
+ left: 5px;
+ top: 5px;
+ border: 1px solid #000;
+ background-color: rgba(0, 0, 0, 0.2); }
+
+.ta-resizer-handle-overlay > .ta-resizer-handle-corner {
+ width: 10px;
+ height: 10px;
+ position: absolute; }
+
+.ta-resizer-handle-overlay > .ta-resizer-handle-corner-tl {
+ top: 0;
+ left: 0;
+ border-left: 1px solid #000;
+ border-top: 1px solid #000; }
+
+.ta-resizer-handle-overlay > .ta-resizer-handle-corner-tr {
+ top: 0;
+ right: 0;
+ border-right: 1px solid #000;
+ border-top: 1px solid #000; }
+
+.ta-resizer-handle-overlay > .ta-resizer-handle-corner-bl {
+ bottom: 0;
+ left: 0;
+ border-left: 1px solid #000;
+ border-bottom: 1px solid #000; }
+
+.ta-resizer-handle-overlay > .ta-resizer-handle-corner-br {
+ bottom: 0;
+ right: 0;
+ border: 1px solid #000;
+ cursor: se-resize;
+ background-color: #fff; }
+
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1060;
+ display: none;
+ max-width: 276px;
+ padding: 1px;
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 1.42857143;
+ text-align: left;
+ white-space: normal;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 6px;
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); }
+
+.popover.top {
+ margin-top: -10px; }
+
+.popover.bottom {
+ margin-top: 10px; }
+
+.popover-title {
+ padding: 8px 14px;
+ margin: 0;
+ font-size: 14px;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ border-radius: 5px 5px 0 0; }
+
+.popover-content {
+ padding: 9px 14px; }
+
+.popover > .arrow, .popover > .arrow:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid; }
+
+.popover > .arrow {
+ border-width: 11px; }
+
+.popover > .arrow:after {
+ content: "";
+ border-width: 10px; }
+
+.popover.top > .arrow {
+ bottom: -11px;
+ left: 50%;
+ margin-left: -11px;
+ border-top-color: #999;
+ border-top-color: rgba(0, 0, 0, 0.25);
+ border-bottom-width: 0; }
+
+.popover.top > .arrow:after {
+ bottom: 1px;
+ margin-left: -10px;
+ content: " ";
+ border-top-color: #fff;
+ border-bottom-width: 0; }
+
+.popover.bottom > .arrow {
+ top: -11px;
+ left: 50%;
+ margin-left: -11px;
+ border-top-width: 0;
+ border-bottom-color: #999;
+ border-bottom-color: rgba(0, 0, 0, 0.25); }
+
+.popover.bottom > .arrow:after {
+ top: 1px;
+ margin-left: -10px;
+ content: " ";
+ border-top-width: 0;
+ border-bottom-color: #fff; }
+
+/*=========================================================
+ common
+===========================================================*/
+body {
+ padding-top: 50px;
+ padding-bottom: 20px;
+ height: 100%;
+ background-color: #F2F2F2;
+ font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; }
+
+.margintop60px {
+ margin-top: 80px; }
+
+.margintop120px {
+ margin-top: 120px; }
+
+.vAlignMiddle {
+ vertical-align: middle; }
+
+[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
+ display: none !important; }
+
+/*=========================================================
+ bootstrap overrides
+===========================================================*/
+.nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
+ background-color: #0d87e9;
+ border-color: #2196f3; }
+
+/*correction bug sur theme bootstrap journal*/
+.modal-backdrop {
+ z-index: -1; }
+
+.navbar-right {
+ margin-right: 20px; }
+
+textarea, textarea.form-control, input.form-control,
+input[type=text], input[type=password], input[type=email],
+input[type=number], [type=text].form-control, [type=password].form-control,
+[type=email].form-control, [type=tel].form-control, [contenteditable].form-control {
+ font-size: 13px; }
+
+select, select.form-control {
+ font-size: 13px; }
+
+/*container to 100%*/
+@media (min-width: 1200px) {
+ .container {
+ width: 100%;
+ margin-right: 20px; } }
+
+@media (min-width: 768px) {
+ .container {
+ width: 100%;
+ margin-right: 20px; } }
+
+@media (min-width: 992px) {
+ .container {
+ width: 100%; } }
+
+.container-fluid {
+ margin-right: auto;
+ margin-left: auto; }
+
+.container-fluid padding {
+ left: 30px;
+ right: 30px; }
+
+.panel-default > .panel-heading {
+ color: #212121;
+ background-color: #fff;
+ border-color: #eee; }
+
+.navbar-nav > li > a {
+ line-height: 30px; }
+
+.navbar-default .navbar-brand {
+ line-height: initial; }
+
+.panel-heading {
+ background-color: none;
+ border-bottom: solid 1px #eee; }
+
+.navBtnGroup {
+ padding-top: 20px;
+ padding-bottom: 22px;
+ padding-right: 15px;
+ padding-left: 15px; }
+
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ vertical-align: middle; }
+
+a:hover {
+ color: #fff; }
+
+a:focus {
+ color: #fff; }
+
+/*Forms setup*/
+.form-control {
+ border-radius: 0;
+ box-shadow: none;
+ height: auto; }
+
+.float-label {
+ font-size: 10px; }
+
+.socialIcon {
+ font-size: 32px; }
+ .socialIcon:hover {
+ color: #F2F2F2; }
+
+input[type="text"].form-control,
+input[type="search"].form-control {
+ border: none;
+ border-bottom: 1px dotted #CFCFCF; }
+
+textarea {
+ border: 1px dotted #CFCFCF !important;
+ height: 130px !important; }
+
+/*Content Container*/
+.content-container {
+ background-color: #fff;
+ padding: 35px 20px;
+ margin-bottom: 20px; }
+
+h1.content-title {
+ font-size: 32px;
+ font-weight: 300;
+ text-align: center;
+ margin-top: 0;
+ margin-bottom: 20px;
+ font-family: "Open Sans", sans-serif !important; }
+
+/*paper theme bootstrap*/
+.form-control {
+ font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ display: block;
+ width: 100%;
+ height: 39px;
+ padding: 8px 12px;
+ font-size: 13px;
+ line-height: 1.42857143;
+ color: #777777;
+ background-color: #ffffff;
+ background-image: none;
+ border: 1px solid #cccccc;
+ border-radius: 4px;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; }
+
+.form-control:focus {
+ border-color: #66afe9;
+ outline: 0;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }
+
+.form-control::-moz-placeholder {
+ color: #999999;
+ opacity: 1; }
+
+.form-control:-ms-input-placeholder {
+ color: #999999; }
+
+.form-control::-webkit-input-placeholder {
+ color: #999999; }
+
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ background-color: #eeeeee;
+ opacity: 1; }
+
+.form-control[disabled],
+fieldset[disabled] .form-control {
+ cursor: not-allowed; }
+
+textarea.form-control {
+ height: auto; }
+
+.fakeControl[disabled] {
+ background-color: #fff;
+ opacity: 1; }
+
+.fakeControl[disabled] {
+ cursor: all-scroll; }
+
+.radio input[type=radio].fakeCheck {
+ cursor: all-scroll; }
+
+.checkbox input[type=checkbox].fakeCheck {
+ cursor: all-scroll; }
+
+label.fakeCheck {
+ cursor: all-scroll; }
+
+/* animation ng-repeat
+easy customize animation from here : http://www.nganimate.org/angularjs/ng-repeat/yo-yo-css3-keyframes-animation*/
+.animate-enter {
+ animation: enter 600ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
+ display: block;
+ position: relative; }
+
+@keyframes enter {
+ from {
+ opacity: 0;
+ height: 0px;
+ left: -70px; }
+ 75% {
+ left: 15px; }
+ to {
+ opacity: 1;
+ height: 30px;
+ left: 0px; } }
+
+.animate-leave {
+ animation: leave 600ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
+ display: block;
+ position: relative; }
+
+@keyframes leave {
+ to {
+ opacity: 0;
+ height: 0px;
+ left: -70px; }
+ 25% {
+ left: 15px; }
+ from {
+ opacity: 1;
+ height: 30px;
+ left: 0px; } }
+
+/* td table in myprofile */
+.tdCommun, .td40, .td60 {
+ height: 75px;
+ vertical-align: none; }
+
+.td40 {
+ width: 40%; }
+
+.td60 {
+ width: 60%; }
+
+.table-user-information > thead > tr > th,
+.table-user-information > tbody > tr > th,
+.table-user-information > tfoot > tr > th,
+.table-user-information > thead > tr > td,
+.table-user-information > tbody > tr > td,
+.table-user-information > tfoot > tr > td {
+ vertical-align: middle; }
+
+/*=========================================================
+ ANGULAR ANIMATIONS (in pair on animate.css)
+===========================================================*/
+/* animation on ng-switch */
+.switchAngularFadeIn .ng-enter {
+ animation: fadeIn 1s; }
+
+/*=========================================================
+ wfEdit
+===========================================================*/
+#pageWfEdit {
+ margin-top: 40px;
+ /* right:2%;
+ left:2%; */
+ padding-top: 30px;
+ padding-bottom: 30px;
+ background-color: #F2F2F2;
+ /* border-top: solid 3px white;
+ border-bottom: solid 3px white; */ }
+
+.lineCommandButtons {
+ padding-bottom: 25px; }
+
+.addNewLine {
+ font-size: 24px;
+ vertical-align: middle;
+ color: #666666; }
+
+#editor {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ height: 150px;
+ background-color: #52B3D9;
+ border-bottom: solid 1px #2C3E50; }
+
+#editor-content {
+ /* padding-top: 25px; */
+ /* padding-bottom: 25px; */
+ text-align: center;
+ color: white;
+ font-size: 13px; }
+
+#preview {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ /* background-color: #E4F1FE; */
+ border: solid 1 px #2C3E50;
+ -o-box-shadow: 0px 0px 10px 0px #ddd;
+ box-shadow: 0px 0px 10px 0px #ddd;
+ filter: progid:DXImageTransform.Microsoft.Shadow(color=#ddd, Direction=NaN, Strength=10); }
+
+#preview-content {
+ background-color: #FFF;
+ padding-bottom: 25px;
+ /*text-align: center;*/
+ color: black;
+ /*font-size: 13px;*/ }
+
+#commandPanel {
+ padding-top: 25px;
+ padding-bottom: 25px; }
+
+/* #commandPanel.affix {
+ position: fixed;
+ top: 0;
+ width:25%;
+ margin-top: -45px;
+ } */
+#visualPanel {
+ padding-top: 25px;
+ padding-bottom: 25px; }
+
+.customPagerButton {
+ width: 100px; }
+
+.numberOfColumnsLabel {
+ font-size: 32px;
+ text-align: center;
+ padding-top: 25%;
+ padding-bottom: 25%;
+ font-weight: bold;
+ text-align: center;
+ color: #666666; }
+
+.btnMinusColumns {
+ margin-top: 10px; }
+
+.btnAddColumns {
+ margin-top: 10px; }
+
+.numberOfcolumsText {
+ color: #666666; }
+
+.greyText {
+ color: #666666; }
+
+.blackText {
+ color: #000; }
+
+/*=========================================================
+ ANIMATE NG-SWITCH
+=========================================================*/
+.animate-switch-container {
+ position: relative;
+ background: white;
+ border-top: solid 1px #ECECEC;
+ border-bottom: solid 1px #ECECEC;
+ overflow: scroll; }
+ .animate-switch-container .well {
+ background-color: #89C4F4;
+ margin-bottom: 0px;
+ color: #ECECEC; }
+
+.linesList {
+ margin-top: 5px; }
+
+/*switch 1 : move top*/
+.animate-switch {
+ padding: 10px; }
+
+.animate-switch.ng-animate {
+ transition: all cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.6s;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0; }
+
+.animate-switch.ng-leave.ng-leave-active,
+.animate-switch.ng-enter {
+ left: 0px;
+ top: -500px;
+ opacity: 0; }
+
+.animate-switch.ng-leave,
+.animate-switch.ng-enter.ng-enter-active {
+ left: 0px;
+ top: 0px;
+ opacity: 0.8; }
+
+/*=========================================================
+ STEP INDICATOR
+=========================================================*/
+.stepwizardTopmargin {
+ margin-top: 25px; }
+
+.stepwizard-step p {
+ margin-top: 10px;
+ color: #666666; }
+
+.stepwizard-row {
+ display: table-row; }
+
+.stepwizard {
+ display: table;
+ width: 100%;
+ position: relative; }
+
+.stepwizard-step button[disabled] {
+ opacity: 1 !important;
+ filter: alpha(opacity=100) !important; }
+
+.stepwizard-row:before {
+ top: 14px;
+ bottom: 0;
+ position: absolute;
+ content: " ";
+ width: 100%;
+ height: 1px;
+ background-color: #ccc;
+ z-order: 0; }
+
+.stepwizard-step {
+ display: table-cell;
+ text-align: center;
+ position: relative; }
+
+.btn-circle {
+ width: 30px;
+ height: 30px;
+ text-align: center;
+ padding: 6px 0;
+ font-size: 12px;
+ line-height: 1.428571429;
+ border-radius: 15px; }
+
+.panelDebugScope {
+ color: #000; }
+
+/*=========================================================
+ Modal add control
+=========================================================*/
+.texteRouge {
+ color: #CF000F; }
+
+.editPropertiesLabel {
+ margin-top: 6px; }
+
+.textControlLabel {
+ color: #000; }
+
+.marginTopFivepixels {
+ margin-top: 5px; }
+
+.marginTopTenpixels {
+ margin-top: 5px; }
+
+.checkboxCssCorrection {
+ font-size: 4px; }
+
+.noGroupText {
+ margin-bottom: 0px; }
+
+.nya-bs-select {
+ margin-bottom: 16px; }
+
+.ta-scroll-window {
+ margin-bottom: 16px; }
+
+.formly-field-checkbox {
+ margin-top: 28px; }
+
+#inputAddNewRadioOption {
+ margin-bottom: 20px; }
+
+#inputAddNewBasicOption {
+ margin-bottom: 20px; }
+
+#inputAddNewGroupedOption {
+ margin-bottom: 20px; }
+
+#inputAddNewGroupGroupedOption {
+ margin-bottom: 20px; }
+
+.editGroupedSelectnyaSelect {
+ margin-bottom: 0px; }
+
+.heading-preview {
+ cursor: pointer; }
+
+/*=========================================================
+ specific drag and drop test (will change or be deleted)
+===========================================================*/
+/***************************** pageSlide directive css *****************************/
+/* Needed for hiding crollbars when pushing */
+html {
+ overflow-x: hidden; }
+
+.ng-pageslide {
+ background: #eee;
+ box-shadow: 5px 1px 12px 0px rgba(188, 183, 183, 0.7);
+ -moz-box-shadow: 5px 1px 12px 0px rgba(188, 183, 183, 0.7);
+ -webkit-box-shadow: 5px 1px 12px 0px rgba(188, 183, 183, 0.7); }
+
+#controlEditLeftPanel {
+ margin-top: 95px;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ padding-right: 10px;
+ padding-left: 10px;
+ height: 85%;
+ overflow-y: scroll; }
+
+.separator10pixel {
+ margin-top: 5px;
+ margin-bottom: 5px;
+ height: 25px; }
+
+.panelControlWidth {
+ width: 45%; }
+
+/***************************** Required styles *****************************/
+/**
+ * For the correct positioning of the placeholder element, the dnd-list and
+ * it's children must have position: relative
+ */
+.advancedDemo ul[dnd-list],
+.advancedDemo ul[dnd-list] > li {
+ position: relative;
+ border: solid 1px #F1F1F1; }
+
+/***************************** Dropzone Styling *****************************/
+/**
+ * The dnd-list should always have a min-height,
+ * otherwise you can't drop to it once it's empty
+ */
+.advancedDemo .dropzone ul[dnd-list] {
+ min-height: 42px;
+ margin: 0px;
+ padding-left: 0px; }
+
+/**
+ * The dnd-lists's child elements currently MUST have
+ * position: relative. Otherwise we can not determine
+ * whether the mouse pointer is in the upper or lower
+ * half of the element we are dragging over. In other
+ * browsers we can use event.offsetY for this.
+ */
+.advancedDemo .dropzone li {
+ display: block; }
+
+/**
+ * Reduce opacity of elements during the drag operation. This allows the user
+ * to see where he is dropping his element, even if the element is huge. The
+ * .dndDragging class is automatically set during the drag operation.
+ */
+.advancedDemo .dropzone .dndDragging {
+ opacity: 0.7;
+ border: 2px dotted #000; }
+
+/**
+ * The dndDraggingSource class will be applied to the source element of a drag
+ * operation. It makes sense to hide it to give the user the feeling that he's
+ * actually moving it. Note that the source element has also .dndDragging class.
+ */
+.advancedDemo .dropzone .dndDraggingSource {
+ display: none; }
+
+/**
+ * An element with .dndPlaceholder class will be added as child of the dnd-list
+ * while the user is dragging over it.
+ */
+.advancedDemo .dropzone .dndPlaceholder {
+ background-color: #ddd !important;
+ min-height: 155px;
+ display: block;
+ position: relative;
+ -o-box-shadow: inset 0px 0px 5px 0px #343434;
+ box-shadow: inset 0px 0px 5px 0px #343434;
+ filter: progid:DXImageTransform.Microsoft.Shadow(color=#343434, Direction=NaN, Strength=5); }
+
+/***************************** Element type specific styles *****************************/
+.advancedDemo .dropzone .itemlist {
+ min-height: 115px !important; }
+
+ul.itemlist.ng-scope {
+ border: none; }
+
+.effect1ForDragDropItem, #itemContent {
+ box-shadow: 0 10px 6px -6px #777;
+ min-height: 115px; }
+
+.advancedDemo .dropzone .itemlist > li {
+ border: none;
+ min-width: 180px;
+ border-radius: .25em;
+ float: left;
+ font-weight: 700;
+ height: 135px; }
+
+#itemContent {
+ background-color: #fff;
+ border: 2px outset #0d87e9;
+ border-radius: .25em;
+ color: #fff;
+ float: left;
+ font-weight: 700;
+ height: 115px;
+ margin: 5px;
+ padding: 3px;
+ text-align: center;
+ width: 100%;
+ cursor: all-scroll; }
+
+.dragItemtextarea {
+ height: 60px; }
+
+textarea {
+ border: 1px dotted #CFCFCF !important;
+ height: 50px !important; }
+
+.advancedDemo .dropzone .container-element {
+ margin: 10px; }
+
+.isCollapsableZone {
+ cursor: pointer; }
+
+.buttonHeaderAddNewLine {
+ margin-top: 15px;
+ margin-bottom: 0px; }
+
+.buttonCloneLineHidden {
+ visibility: hidden; }
+
+.buttonCloseLine {
+ margin-top: -10px;
+ margin-right: -10px;
+ border-radius: 50%;
+ height: 45px; }
+
+.interligne {
+ padding-bottom: 10px; }
+
+.confirmLineDelete {
+ margin-top: 0;
+ margin-bottom: 0;
+ background-color: #F5F5F5;
+ opacity: 1.0;
+ animation: shake 1.3s infinite; }
+
+.demoddDatepicker {
+ padding-left: 0;
+ margin-left: 0; }
+
+.selectfordemo {
+ margin-top: 30px; }
+
+/*=========================================================
+ animation shake
+===========================================================*/
+
+@keyframes shake {
+ 0%, 100% {
+ transform: translate3d(0, 0, 0); }
+ 10%, 30%, 50%, 70%, 90% {
+ transform: translate3d(-10px, 0, 0); }
+ 20%, 40%, 60%, 80% {
+ transform: translate3d(10px, 0, 0); } }
+
+.shake {
+ animation-name: shake; }
+
+.previewControlinItem {
+ margin-top: 2%;
+ background-color: #fff;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ padding-left: 10px;
+ padding-right: 10px;
+ border-radius: 5px;
+ color: #F1F1F1;
+ font-size: 18px; }
+
+.vertical-line {
+ border-left: thick solid #000; }
+
+/*=========================================================
+ animation glyphicon rotate
+===========================================================*/
+.gly-spin {
+ animation: spin 2s infinite linear; }
+
+@keyframes spin {
+ 0% {
+ transform: rotate(0deg); }
+ 100% {
+ transform: rotate(359deg); } }
+
+.gly-rotate-90 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+ transform: rotate(90deg); }
+
+.gly-rotate-180 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+ transform: rotate(180deg); }
+
+.gly-rotate-270 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+ transform: rotate(270deg); }
+
+.gly-flip-horizontal {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
+ transform: scale(-1, 1); }
+
+.gly-flip-vertical {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
+ transform: scale(1, -1); }
+
+.rightClickCtrl {
+ opacity: 1.0;
+ transition: opacity .3s ease-in; }
+
+.rightClickCtrlSelected {
+ opacity: 0.5; }
diff --git a/static/js/eda.dragdropway.css.map b/static/js/eda.dragdropway.css.map
new file mode 100644
index 0000000..68ed994
--- /dev/null
+++ b/static/js/eda.dragdropway.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"eda.dragdropway.css","sourceRoot":""}
\ No newline at end of file
diff --git a/static/js/eda.dragdropway.js b/static/js/eda.dragdropway.js
index f6badf4..1f5a301 100644
--- a/static/js/eda.dragdropway.js
+++ b/static/js/eda.dragdropway.js
@@ -1,6158 +1,545 @@
-!function(e){function r(e,r,o){return 4===arguments.length?t.apply(this,arguments):void n(e,{declarative:!0,deps:r,declare:o})}function t(e,r,t,o){n(e,{declarative:!1,deps:r,executingRequire:t,execute:o})}function n(e,r){r.name=e,e in p||(p[e]=r),r.normalizedDeps=r.deps}function o(e,r){if(r[e.groupIndex]=r[e.groupIndex]||[],-1==v.call(r[e.groupIndex],e)){r[e.groupIndex].push(e);for(var t=0,n=e.normalizedDeps.length;n>t;t++){var a=e.normalizedDeps[t],u=p[a];if(u&&!u.evaluated){var d=e.groupIndex+(u.declarative!=e.declarative);if(void 0===u.groupIndex||u.groupIndex=0;a--){for(var u=t[a],i=0;ia;a++){var d=t.importers[a];if(!d.locked)for(var i=0;ia;a++){var l,s=r.normalizedDeps[a],c=p[s],v=x[s];v?l=v.exports:c&&!c.declarative?l=c.esModule:c?(d(c),v=c.module,l=v.exports):l=f(s),v&&v.importers?(v.importers.push(t),t.dependencies.push(v)):t.dependencies.push(null),t.setters[a]&&t.setters[a](l)}}}function i(e){var r,t=p[e];if(t)t.declarative?c(e,[]):t.evaluated||l(t),r=t.module.exports;else if(r=f(e),!r)throw new Error("Unable to load dependency "+e+".");return(!t||t.declarative)&&r&&r.__useDefault?r["default"]:r}function l(r){if(!r.module){var t={},n=r.module={exports:t,id:r.name};if(!r.executingRequire)for(var o=0,a=r.normalizedDeps.length;a>o;o++){var u=r.normalizedDeps[o],d=p[u];d&&l(d)}r.evaluated=!0;var c=r.execute.call(e,function(e){for(var t=0,n=r.deps.length;n>t;t++)if(r.deps[t]==e)return i(r.normalizedDeps[t]);throw new TypeError("Module "+e+" not declared as a dependency.")},t,n);c&&(n.exports=c),t=n.exports,t&&t.__esModule?r.esModule=t:r.esModule=s(t)}}function s(r){if(r===e)return r;var t={};if("object"==typeof r||"function"==typeof r)if(g){var n;for(var o in r)(n=Object.getOwnPropertyDescriptor(r,o))&&h(t,o,n)}else{var a=r&&r.hasOwnProperty;for(var o in r)(!a||r.hasOwnProperty(o))&&(t[o]=r[o])}return t["default"]=r,h(t,"__useDefault",{value:!0}),t}function c(r,t){var n=p[r];if(n&&!n.evaluated&&n.declarative){t.push(r);for(var o=0,a=n.normalizedDeps.length;a>o;o++){var u=n.normalizedDeps[o];-1==v.call(t,u)&&(p[u]?c(u,t):f(u))}n.evaluated||(n.evaluated=!0,n.module.execute.call(e))}}function f(e){if(D[e])return D[e];if("@node/"==e.substr(0,6))return y(e.substr(6));var r=p[e];if(!r)throw"Module "+e+" not present.";return a(e),c(e,[]),p[e]=void 0,r.declarative&&h(r.module.exports,"__esModule",{value:!0}),D[e]=r.declarative?r.module.exports:r.esModule}var p={},v=Array.prototype.indexOf||function(e){for(var r=0,t=this.length;t>r;r++)if(this[r]===e)return r;return-1},g=!0;try{Object.getOwnPropertyDescriptor({a:0},"a")}catch(m){g=!1}var h;!function(){try{Object.defineProperty({},"a",{})&&(h=Object.defineProperty)}catch(e){h=function(e,r,t){try{e[r]=t.value||t.get.call(e)}catch(n){}}}}();var x={},y="undefined"!=typeof System&&System._nodeRequire||"undefined"!=typeof require&&require.resolve&&"undefined"!=typeof process&&require,D={"@empty":{}};return function(e,n,o){return function(a){a(function(a){for(var u={_nodeRequire:y,register:r,registerDynamic:t,get:f,set:function(e,r){D[e]=r},newModule:function(e){return e}},d=0;d1)for(var d=1;d '
- });
-
- EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({
- id: 'empty',
- name: 'no control',
- subtitle: 'no control',
- group: 'Blank',
- formlyType: 'blank',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: []
- });
-
- easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({
- label: '
',
- control: 'empty',
- cssClass: 'col-xs-12'
- }, {
- addToGroupCtrl: 'blank'
- });
-
- EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({
- id: 'Header',
- name: 'Header',
- subtitle: 'no control',
- group: 'Decoration',
- formlyType: 'header',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: []
- });
-
- easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({
- label: ['
'].join(''),
- control: 'Header',
- cssClass: 'col-xs-12'
- }, {
- addToGroupCtrl: 'headers'
- });
-
- var subTitleTemplate = '\n
';
-
- formlyConfigProvider.setType({
- name: 'subTitle',
- template: subTitleTemplate
- });
-
- EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({
- id: 'Subtitle',
- name: 'Subtitle',
- subtitle: 'no control',
- group: 'Decoration',
- formlyType: 'subTitle',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: []
- });
-
- easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({
- 'label': '
',
- 'control': 'Subtitle',
- 'cssClass': 'col-xs-12'
- }, {
- addToGroupCtrl: 'headers'
- });
-
- EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({
- id: 'TextInput',
- name: 'Text input',
- subtitle: 'Text input',
- group: 'input',
- formlyType: 'input',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: []
- });
-
- /**
- * drag and drop text input (basic) control template
- *
- *
- * @PARAM 1 : control template object (drag an drop)
- * @PARAM 2 : object to indicates in which group of control it will be inserted
- * (related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)
- */
- easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({
- 'label': '
',
- 'control': 'TextInput',
- 'cssClass': 'col-xs-12'
- }, {
- addToGroupCtrl: 'inputs'
- });
-
- /**
- * Add text input (Password)
- *
- * note : formly template already exists
- * no need to create a custom one
- *
- * just declare in EasyFormGenFormlyBindingModelsProvider
- */
- EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({
- id: 'Password',
- name: 'Password',
- subtitle: 'Password',
- group: 'input',
- formlyType: 'input',
- formlySubtype: 'password',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: []
- });
- /**
- * drag and drop text input — password —control template
- *
- *
- * @PARAM 1 : control template object (drag an drop)
- * @PARAM 2 : object to indicates in which group of control it will be inserted
- * (related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)
- */
- easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({
- 'label': '
',
- 'control': 'Password',
- 'cssClass': 'col-xs-12'
- }, {
- addToGroupCtrl: 'inputs'
- });
-
- /**
- * Add angular UI date picker
- *
- * thx Kent C. Dodds for formly config template (since it was a huge config)
- */
- var attributes = ['date-disabled', 'custom-class', 'show-weeks', 'starting-day', 'init-date', 'min-mode', 'max-mode', 'format-day', 'format-month', 'format-year', 'format-day-header', 'format-day-title', 'format-month-title', 'year-range', 'shortcut-propagation', 'datepicker-popup', 'show-button-bar', 'current-text', 'clear-text', 'close-text', 'close-on-date-selection', 'datepicker-append-to-body'];
-
- var bindings = ['datepicker-mode', 'min-date', 'max-date'];
-
- var ngModelAttrs = {};
-
- angular.forEach(attributes, function (attr) {
- return ngModelAttrs[camelize(attr)] = { attribute: attr };
- });
- angular.forEach(bindings, function (binding) {
- return ngModelAttrs[camelize(binding)] = { bound: binding };
- });
-
- function camelize(string) {
- string = string.replace(/[\-_\s]+(.)?/g, function (match, chr) {
- return chr ? chr.toUpperCase() : '';
- });
- // Ensure 1st char is always lowercase
- return string.replace(/^([A-Z])/, function (match, chr) {
- return chr ? chr.toLowerCase() : '';
- });
- }
-
- var angularUIDatePickerTemplate = '\n
';
-
- formlyConfigProvider.setType({
- name: 'datepicker',
- template: angularUIDatePickerTemplate,
- wrapper: ['bootstrapLabel', 'bootstrapHasError'],
- controller: ['$scope', function ($scope) {
- $scope.open = function ($event) {
- $event.preventDefault();
- $event.stopPropagation();
- $scope.opened = true;
- };
- }],
- defaultOptions: {
- ngModelAttrs: ngModelAttrs,
- templateOptions: {
- addonLeft: {
- 'class': 'glyphicon glyphicon-calendar',
- onClick: function onClick(options) {
- return options.templateOptions.isOpen = !options.templateOptions.isOpen;
- }
- },
- onFocus: function onFocus($viewValue, $modelValue, scope) {
- return scope.to.isOpen = !scope.to.isOpen;
- },
- datepickerOptions: {}
- }
- }
- });
-
- EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({
- id: 'Date',
- name: 'Date',
- subtitle: 'Date',
- group: 'input',
- formlyType: 'datepicker',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- datepickerPopup: 'dd-MMMM-yyyy'
- });
- /**
- * drag and drop text input — date — control template (using angular UI datepicker)
- *
- *
- * @PARAM 1 : control template object (drag an drop)
- * @PARAM 2 : object to indicates in which group of control it will be inserted
- * (related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)
- */
- easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({
- label: '\n
',
- control: 'Date',
- cssClass: 'col-xs-12'
- }, {
- addToGroupCtrl: 'inputs'
- });
-
- /**
- * Add textarea
- *
- * note : formly template already exists
- * no need to create a custom one
- *
- * just declare in EasyFormGenFormlyBindingModelsProvider
- */
- EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({
- id: 'Texarea',
- name: 'Textarea',
- subtitle: 'Textarea',
- group: 'Textarea',
- formlyType: 'textarea',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: []
- });
- /**
- * drag and drop textarea control template
- *
- *
- * @PARAM 1 : control template object (drag an drop)
- * @PARAM 2 : object to indicates in which group of control it will be inserted
- * (related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)
- */
- easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({
- 'label': '\n
',
- 'control': 'Texarea',
- 'cssClass': 'col-xs-12'
- }, {
- addToGroupCtrl: 'textareas'
- });
-
- /**
- * Add rich text editor control (using textAngular)
- *
- */
- var richTexEditorTemplate = '\n
';
-
- formlyConfigProvider.setType({
- name: 'richEditor',
- template: richTexEditorTemplate
- });
-
- EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({
- id: 'RichTextEditor',
- name: 'RichTextEditor',
- subtitle: 'RichTextEditor',
- group: 'Textarea',
- formlyType: 'richEditor',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: []
- });
- /**
- * drag and drop rich text editor control template (using textAngular)
- *
- *
- * @PARAM 1 : control template object (drag an drop)
- * @PARAM 2 : object to indicates in which group of control it will be inserted
- * (related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)
- */
- easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({
- label: '\n
',
- control: 'RichTextEditor',
- cssClass: 'col-xs-12'
- }, {
- addToGroupCtrl: 'textareas'
- });
-
- /**
- * Add radio
- *
- * note : formly template already exists
- * no need to create a custom one
- *
- * just declare in EasyFormGenFormlyBindingModelsProvider
- */
- EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({
- id: 'Radio',
- name: 'Radio',
- subtitle: 'Radio',
- options: [],
- group: 'Radio',
- formlyType: 'radio',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: []
- });
- /**
- * drag and drop radio control template (using textAngular)
- *
- *
- * @PARAM 1 : control template object (drag an drop)
- * @PARAM 2 : object to indicates in which group of control it will be inserted
- * (related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)
- */
- easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({
- 'label': '\n
',
- 'control': 'Radio',
- 'cssClass': 'col-xs-12'
- }, {
- addToGroupCtrl: 'radios'
- });
-
- /**
- * Add checkbox
- *
- * note : formly template already exists
- * no need to create a custom one
- *
- * just declare in EasyFormGenFormlyBindingModelsProvider
- */
- EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({
- id: 'Checkbox',
- name: 'Checkbox',
- subtitle: 'Checkbox',
- group: 'Checkbox',
- formlyType: 'checkbox',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: []
- });
- /**
- * drag and drop checkbox control template (using textAngular)
- *
- *
- * @PARAM 1 : control template object (drag an drop)
- * @PARAM 2 : object to indicates in which group of control it will be inserted
- * (related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)
- */
- easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({
- label: '\n
',
- control: 'Checkbox',
- cssClass: 'col-xs-12'
- }, {
- addToGroupCtrl: 'checkboxes'
- });
-
- /**
- * Add basic Select control
- *
- * using nya-bs-select
- */
- var basicSelectTemplate = '\n
';
-
- formlyConfigProvider.setType({
- name: 'basicSelect',
- template: basicSelectTemplate
- });
-
- EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({
- id: 'BasicSelect',
- name: 'Basic select',
- subtitle: 'Basic select',
- options: [],
- group: 'Select',
- formlyType: 'basicSelect',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: []
- });
-
- /**
- * drag and drop basic select control template (using textAngular)
- *
- *
- * @PARAM 1 : control template object (drag an drop)
- * @PARAM 2 : object to indicates in which group of control it will be inserted
- * (related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)
- */
- easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({
- label: '\n
\n
',
- control: 'BasicSelect',
- cssClass: 'col-xs-12'
- }, {
- addToGroupCtrl: 'selects'
- });
-
- /**
- * Add Grouped Select control
- *
- * using nya-bs-select
- */
- var groupedSelectTemplate = '\n
\n \n \n \n {{option.name}} \n \n \n \n ';
-
- formlyConfigProvider.setType({
- name: 'groupedSelect',
- template: groupedSelectTemplate
- });
-
- EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({
- id: 'GroupedSelect',
- name: 'Grouped Select',
- subtitle: 'Grouped Select',
- options: [],
- group: 'Select',
- formlyType: 'groupedSelect',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: []
- });
- /**
- * drag and drop grouped select control template (using textAngular)
- *
- *
- * @PARAM 1 : control template object (drag an drop)
- * @PARAM 2 : object to indicates in which group of control it will be inserted
- * (related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)
- */
- easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({
- label: '\n
\n
',
- control: 'GroupedSelect',
- cssClass: 'col-xs-12'
- }, {
- addToGroupCtrl: 'selects'
- });
- }
-
- return {
- setters: [],
- execute: function () {
- formlyConfig.$inject = ['formlyConfigProvider', 'EasyFormGenFormlyBindingModelsProvider', 'easyFormDragWayConfigProvider'];
-
- _export('default', formlyConfig);
- }
- };
-});
-$__System.registerDynamic("4", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = {
- "stepway": {"version": "1.1.0"},
- "dragdropway": {"version": "1.1.0"},
- "formviewer": {"version": "1.1.0"}
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('5', ['4'], function (_export) {
- 'use strict';
-
- var easyFormConfig, EASY_FORM_DD_VERSION_NAME, EASY_FORM_DD_VERSION_VALUE;
-
- function dragDropConfigFunct(easyFormDragWayConfigProvider) {
- easyFormDragWayConfigProvider.setItemsNotTocount({
- //placeholder : '',
- itemBeingDragged: 'dndDraggingSource'
- });
- }
-
- return {
- setters: [function (_) {
- easyFormConfig = _['default'];
- }],
- execute: function () {
- EASY_FORM_DD_VERSION_NAME = 'easyFormGenVersion';
- EASY_FORM_DD_VERSION_VALUE = easyFormConfig.dragdropway.version;
- dragDropConfigFunct.$inject = ['easyFormDragWayConfigProvider'];
-
- _export('default', dragDropConfigFunct);
-
- _export('EASY_FORM_DD_VERSION_NAME', EASY_FORM_DD_VERSION_NAME);
-
- _export('EASY_FORM_DD_VERSION_VALUE', EASY_FORM_DD_VERSION_VALUE);
- }
- };
-});
-$__System.register('6', [], function (_export) {
- 'use strict';
-
- var CORE_MODULES;
- return {
- setters: [],
- execute: function () {
- CORE_MODULES = ['textAngular', 'textAngularSetup', 'ngAnimate', 'toaster', 'formly', 'formlyBootstrap', 'ui.bootstrap', 'nya.bootstrap.select', 'mgcrea.ngStrap.affix'
- // 'pascalprecht.translate'
- ];
-
- _export('default', angular.module('easyFormGen.dragDropWay.core', CORE_MODULES));
- }
- };
-});
-$__System.register('7', [], function (_export) {
- 'use strict';
-
- var dateFormats, setToday, clearDateTime;
- return {
- setters: [],
- execute: function () {
- dateFormats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];
-
- setToday = function setToday(datetimePickerModel) {
- datetimePickerModel.dt = new Date();
- };
-
- clearDateTime = function clearDateTime(datetimePickerModel) {
- datetimePickerModel.dt = new Date();
- };
-
- _export('dateFormats', dateFormats);
-
- _export('setToday', setToday);
-
- _export('clearDateTime', clearDateTime);
- }
- };
-});
-$__System.register('8', ['7', '9', 'a'], function (_export) {
- var dateFormats, setToday, clearDateTime, _createClass, _classCallCheck, LEFT_PANEL_CONTROLLER, LEFT_PANEL_CONTROLLERAS, leftPanelController;
-
- return {
- setters: [function (_2) {
- dateFormats = _2.dateFormats;
- setToday = _2.setToday;
- clearDateTime = _2.clearDateTime;
- }, function (_) {
- _createClass = _['default'];
- }, function (_a) {
- _classCallCheck = _a['default'];
- }],
- execute: function () {
- 'use strict';
-
- LEFT_PANEL_CONTROLLER = 'leftPanelController';
- LEFT_PANEL_CONTROLLERAS = 'leftPanelCtrl';
-
- leftPanelController = (function () {
- function leftPanelController(toaster, $timeout, $selectOptionMange, controllerModalProxy) {
- _classCallCheck(this, leftPanelController);
-
- this.toaster = toaster;
- this.$timeout = $timeout;
- this.$selectOptionMange = $selectOptionMange;
- this.controllerModalProxy = controllerModalProxy;
-
- this.init();
- }
-
- _createClass(leftPanelController, [{
- key: 'init',
- value: function init() {
- this.proxyModel = this.controllerModalProxy.proxyModel;
- this.proxyModel.selectedControl = this.proxyModel.temporyConfig.selectedControl;
- this.basicSelectRowCollection = this.controllerModalProxy.basicSelectRowCollection;
- this.newOptionBasicSelect = this.controllerModalProxy.newOptionBasicSelect;
-
- this.groupedSelectRowCollection = this.controllerModalProxy.groupedSelectRowCollection;
- this.newOptionGroupedSelect = this.controllerModalProxy.newOptionGroupedSelect;
- this.GroupedSelectGroups = this.controllerModalProxy.GroupedSelectGroups;
- this.newGroupGroupedSelect = this.controllerModalProxy.newGroupGroupedSelect;
- this.groupSelectGroupClick = this.controllerModalProxy.groupSelectGroupClick;
-
- this.radioRowCollection = this.controllerModalProxy.radioRowCollection;
- this.newOptionRadio = this.controllerModalProxy.newOptionRadio;
-
- this.demodt = {};
- this.demodt.formats = dateFormats;
- this.dateOptions = this.getDateOptions();
-
- // this.controllerModalProxy.resetAllTemporyModels();
- this.initNyaSelectConformingSelectedControl();
- }
- }, {
- key: 'getDateOptions',
- value: function getDateOptions() {
- var dateOptions = {
- formatYear: 'yy',
- startingDay: 1,
- showWeeks: true,
- initDate: null
- };
- return dateOptions;
- }
- }, {
- key: 'initNyaSelectConformingSelectedControl',
- value: function initNyaSelectConformingSelectedControl() {
- //place proxyModel to selection if not none :
- if (this.proxyModel.temporyConfig.selectedControl !== 'none') {
- for (var i = this.proxyModel.controls.length - 1; i >= 0; i--) {
- if (this.proxyModel.controls[i].id === this.proxyModel.temporyConfig.selectedControl) this.modelproxyModel = this.proxyModel.controls[i];
- }
- if (this.proxyModel.temporyConfig.selectedControl === 'BasicSelect') this.controllerModalProxy.bindBasicSelectFromProxyModel(self.basicSelectRowCollection);
- if (this.proxyModel.temporyConfig.selectedControl === 'GroupedSelect') this.controllerModalProxy.bindGroupedSelectFromProxyModel(this.groupedSelectRowCollection, this.GroupedSelectGroups);
- if (this.proxyModel.temporyConfig.selectedControl === 'Radio') this.controllerModalProxy.bindRadioFromProxyModel(this.radioRowCollection);
- }
- }
- }, {
- key: 'updateSpecialControl',
- value: function updateSpecialControl() {
- //refresh service data for particular controls as selects and radio
- this.proxyModel.basicSelectRowCollection = this.basicSelectRowCollection;
- this.proxyModel.newOptionBasicSelect = this.newOptionBasicSelect;
- this.proxyModel.groupedSelectRowCollection = this.groupedSelectRowCollection;
- this.proxyModel.newOptionGroupedSelect = this.newOptionGroupedSelect;
- this.proxyModel.GroupedSelectGroups = this.GroupedSelectGroups;
- this.proxyModel.newGroupGroupedSelect = this.newGroupGroupedSelect;
- this.proxyModel.groupSelectGroupClick = this.groupSelectGroupClick;
- this.proxyModel.radioRowCollection = this.radioRowCollection;
- this.proxyModel.newOptionRadio = this.newOptionRadio;
- //force apply update proxyModel
- this.controllerModalProxy.bindSpecialCtrlTemporyModelsToProxyModel();
- return true;
- }
- }, {
- key: 'resetTemporyConfig',
- value: function resetTemporyConfig() {
- this.proxyModel.temporyConfig = {
- formlyLabel: '',
- formlyRequired: false,
- formlyPlaceholder: '',
- formlyDesciption: '',
- formlyOptions: []
- };
- }
- }, {
- key: 'resetControl',
- value: function resetControl() {
- this.proxyModel.temporyConfig.formlyLabel = '';
- this.proxyModel.temporyConfig.formlyRequired = false;
- this.proxyModel.temporyConfig.formlyPlaceholder = '';
- this.proxyModel.temporyConfig.formlyDesciption = '';
- this.proxyModel.temporyConfig.formlyOptions = [];
- this.proxyModel.temporyConfig.datepickerPopup = this.initDatePicker();
- }
- }, {
- key: 'initDatePicker',
- value: function initDatePicker() {
- this.proxyModel.temporyConfig.datepickerPopup = this.demodt.formats[0];
- }
- }, {
- key: 'selectThisControl',
- value: function selectThisControl(controlName) {
- this.proxyModel.selectedControl = 'none';
- this.resetTemporyConfig();
- for (var i = this.proxyModel.controls.length - 1; i >= 0; i--) {
- if (this.proxyModel.controls[i].id === controlName) {
- this.proxyModel.selectedControl = this.proxyModel.controls[i].id;
- }
- }
- if (this.proxyModel.selectedControl === 'Date') this.initDatePicker();
- }
-
- /**
- * ==============================================================
- * specific controls management
- * (display, properties.... : ex : grouped Select)
- * ==============================================================
- */
- }, {
- key: 'addNewOptionRadio',
- value: function addNewOptionRadio() {
- var result = this.$selectOptionMange.addNewOptionRadio(this.radioRowCollection, this.newOptionRadio.saisie);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: '\'' + this.newOptionRadio.saisie + '\' cannot be added.',
- showCloseButton: true
- });
- }
- //reset input
- this.newOptionRadio = { saisie: '' };
- }
- }, {
- key: 'removeRadioRow',
- value: function removeRadioRow(index) {
- var result = this.$selectOptionMange.removeOption(this.radioRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Delete was cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'upThisRadioRow',
- value: function upThisRadioRow(index) {
- var result = this.$selectOptionMange.upthisOption(this.radioRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Operation cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'downThisRadioRow',
- value: function downThisRadioRow(index) {
- var result = this.$selectOptionMange.downthisOption(this.radioRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Operation cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'addNewOptionBasicSelect',
- value: function addNewOptionBasicSelect() {
- var result = this.$selectOptionMange.addNewOptionBasicSelect(this.basicSelectRowCollection, this.newOptionBasicSelect.saisie);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: '\'' + this.newOptionBasicSelect.saisie + '\' cannot be added.',
- showCloseButton: true
- });
- }
- this.newOptionBasicSelect = { saisie: '' }; //reset input
- }
- }, {
- key: 'removeRow',
- value: function removeRow(index) {
- var result = this.$selectOptionMange.removeOption(this.basicSelectRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Delete was cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'upThisRow',
- value: function upThisRow(index) {
- var result = this.$selectOptionMange.upthisOption(this.basicSelectRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Operation cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'downThisRow',
- value: function downThisRow(index) {
- var result = this.$selectOptionMange.downthisOption(this.basicSelectRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Operation cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'showGroupListToChoose',
- value: function showGroupListToChoose() {
- this.groupSelectGroupClick.showList = !this.groupSelectGroupClick.showList;
- }
- }, {
- key: 'addNewGroupToGroupedSelect',
- value: function addNewGroupToGroupedSelect() {
- if (this.newGroupGroupedSelect.saisie !== '') {
- for (var i = this.GroupedSelectGroups.list.length - 1; i >= 0; i--) {
- if (this.GroupedSelectGroups.list[i] === this.newGroupGroupedSelect.saisie) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: 'Group already exists',
- body: 'No group added.',
- showCloseButton: true
- });
- }
- }
- this.GroupedSelectGroups.list.push(this.newGroupGroupedSelect.saisie);
- } else {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: 'Not a valid group to add',
- body: 'No group added.',
- showCloseButton: true
- });
- }
- this.newGroupGroupedSelect.saisie = '';
- }
- }, {
- key: 'addNewOptionGroupedSelect',
- value: function addNewOptionGroupedSelect() {
- var result = this.$selectOptionMange.addNewOptionGroupedSelect(this.groupedSelectRowCollection, this.newOptionGroupedSelect.saisie, '');
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: '\'' + this.newOptionGroupedSelect.saisie + '\' cannot be added.',
- showCloseButton: true
- });
- }
- //bind nya : dont bind here $apply is not done fast enough
- //bindGroupedSelectToNya();
- //reset input
- this.newOptionGroupedSelect = { saisie: '' };
- }
- }, {
- key: 'removeGroupedSelectRow',
- value: function removeGroupedSelectRow(index) {
- var result = this.$selectOptionMange.removeOption(this.groupedSelectRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Delete was cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'upThisGroupedSelectRow',
- value: function upThisGroupedSelectRow(index) {
- var result = this.$selectOptionMange.upthisOption(this.groupedSelectRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Operation cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'downThisGroupedSelectRow',
- value: function downThisGroupedSelectRow(index) {
- var result = this.$selectOptionMange.downthisOption(this.groupedSelectRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Operation cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'today',
- value: function today() {
- setToday(this.demodt);
- }
- }, {
- key: 'clear',
- value: function clear() {
- clearDateTime(this.demodt);
- }
- }, {
- key: 'open',
- value: function open($event) {
- $event.preventDefault();
- $event.stopPropagation();
- this.demodt.opened = true;
- }
- }]);
-
- return leftPanelController;
- })();
-
- leftPanelController.$inject = ['toaster', '$timeout', '$selectOptionMange', 'controllerModalProxy'];
-
- _export('default', leftPanelController);
-
- _export('LEFT_PANEL_CONTROLLER', LEFT_PANEL_CONTROLLER);
-
- _export('LEFT_PANEL_CONTROLLERAS', LEFT_PANEL_CONTROLLERAS);
- }
- };
-});
-$__System.registerDynamic("b", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "
\n\t
\n\t\t\n\t\t\t\n ×\n \n\t\t \n\t
\n\t
\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n \n \n Select a control\n \n\t\t\t\t\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t
\n\t
\n Close\n \n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('c', ['8', 'b'], function (_export) {
- 'use strict';
-
- var LEFT_PANEL_CONTROLLER, LEFT_PANEL_CONTROLLERAS, leftPanelTemplate, LEFT_PANEL_DIRECTIVE;
-
- function leftPanel() {
- var directive = {
- restrict: 'E',
- template: leftPanelTemplate,
- scope: {},
- controller: LEFT_PANEL_CONTROLLER,
- controllerAs: LEFT_PANEL_CONTROLLERAS,
- bindToController: {
- closeEditPanel: '&',
- selectedControl: '&',
- saveFromEditPanel: '&'
- }
- };
- return directive;
- }
-
- return {
- setters: [function (_) {
- LEFT_PANEL_CONTROLLER = _.LEFT_PANEL_CONTROLLER;
- LEFT_PANEL_CONTROLLERAS = _.LEFT_PANEL_CONTROLLERAS;
- }, function (_b) {
- leftPanelTemplate = _b['default'];
- }],
- execute: function () {
- LEFT_PANEL_DIRECTIVE = 'leftPanel';
- leftPanel.$inject = [];
-
- _export('default', leftPanel);
-
- _export('LEFT_PANEL_DIRECTIVE', LEFT_PANEL_DIRECTIVE);
- }
- };
-});
-$__System.register('d', [], function (_export) {
- /* global angular */
- 'use strict';
-
- var resetModel, validOption;
- return {
- setters: [],
- execute: function () {
- resetModel = function resetModel(selectObj) {
- var zeroModel = { rows: [] };
- angular.copy(zeroModel, selectObj);
- };
-
- validOption = function validOption(selectObj, newOptionText) {
- var fullResponse = {
- resultFlag: false,
- details: ''
- };
- if (typeof newOptionText === 'undefined') {
- fullResponse.resultFlag = false;
- fullResponse.details = 'Entered option is empty';
- return fullResponse;
- }
- if (newOptionText !== '') {
- for (var i = selectObj.rows.length - 1; i >= 0; i--) {
- if (selectObj.rows[i].option === newOptionText) {
- fullResponse.resultFlag = false;
- fullResponse.details = 'Entered option is not unique';
- return fullResponse;
- }
- }
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- }
- fullResponse.resultFlag = false;
- fullResponse.details = 'Entered option is empty';
- return fullResponse;
- };
-
- _export('resetModel', resetModel);
-
- _export('validOption', validOption);
- }
- };
-});
-$__System.register('e', ['9', 'a', 'd'], function (_export) {
- var _createClass, _classCallCheck, helpers, LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE, selectOptionMange;
-
- return {
- setters: [function (_) {
- _createClass = _['default'];
- }, function (_a) {
- _classCallCheck = _a['default'];
- }, function (_d) {
- helpers = _d;
- }],
- execute: function () {
- /* global angular */
- 'use strict';
-
- LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE = '$selectOptionMange';
-
- selectOptionMange = (function () {
- function selectOptionMange() {
- _classCallCheck(this, selectOptionMange);
-
- this.init();
- }
-
- _createClass(selectOptionMange, [{
- key: 'init',
- value: function init() {}
- }, {
- key: 'initModel',
- value: function initModel(selectObj) {
- helpers.resetModel(selectObj);
- }
- }, {
- key: 'isOptionUnique',
- value: function isOptionUnique(selectObj, textValue) {
- for (var i = selectObj.rows.length - 1; i >= 0; i--) {
- if (selectObj.rows[i].option === textValue) return false;
- }
- return true;
- }
- }, {
- key: 'isOptionValidFormat',
- value: function isOptionValidFormat(textValue) {
- if (textValue !== '') return true;
- return false;
- }
- }, {
- key: 'addNewOptionRadio',
- value: function addNewOptionRadio(selectObj, newOptionText) {
- var fullResponse = {
- resultFlag: false,
- details: ''
- };
- var checkResult = helpers.validOption(selectObj, newOptionText);
- if (checkResult.resultFlag === true) {
- var newOption = {
- option: newOptionText,
- order: selectObj.rows.length
- };
- selectObj.rows.push(newOption);
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- } else {
- angular.copy(checkResult, fullResponse);
- return fullResponse;
- }
- }
- }, {
- key: 'addNewOptionBasicSelect',
- value: function addNewOptionBasicSelect(selectObj, newOptionText) {
- var fullResponse = {
- resultFlag: false,
- details: ''
- };
- var checkResult = helpers.validOption(selectObj, newOptionText);
- if (checkResult.resultFlag === true) {
- var newOption = {
- option: newOptionText,
- order: selectObj.rows.length
- };
- selectObj.rows.push(newOption);
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- } else {
- angular.copy(checkResult, fullResponse);
- return fullResponse;
- }
- }
- }, {
- key: 'addNewOptionGroupedSelect',
- value: function addNewOptionGroupedSelect(selectObj, newOptionText, newOptionGroup) {
- var fullResponse = {
- resultFlag: false,
- details: ''
- };
- var checkResult = helpers.validOption(selectObj, newOptionText);
- if (checkResult.resultFlag === true) {
- var newOption = {
- option: newOptionText,
- group: newOptionGroup,
- order: selectObj.rows.length
- };
- selectObj.rows.push(newOption);
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- } else {
- angular.copy(checkResult, fullResponse);
- return fullResponse;
- }
- }
- }, {
- key: 'removeOption',
- value: function removeOption(selectObj, AtIndex) {
- var fullResponse = {
- resultFlag: false,
- details: ''
- };
- if (AtIndex !== -1) {
- selectObj.rows.splice(AtIndex, 1);
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- } else {
- fullResponse.resultFlag = false;
- fullResponse.details = 'Option index not valid';
- return fullResponse;
- }
- }
- }, {
- key: 'upthisOption',
- value: function upthisOption(selectObj, indexOption) {
- var fullResponse = {
- resultFlag: false,
- details: ''
- };
- if (indexOption > -1) {
- if (indexOption > 0) {
- if (selectObj.rows[indexOption - 1]) {
- var currentOption = selectObj.rows[indexOption];
- selectObj.rows.splice(indexOption, 1);
- selectObj.rows.splice(indexOption - 1, 0, currentOption);
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- } else {
- fullResponse.resultFlag = false;
- fullResponse.details = 'Can\'t retreive option from option index';
- return fullResponse;
- }
- } else {
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- }
- } else {
- fullResponse.resultFlag = false;
- fullResponse.details = 'Option index not valid';
- return fullResponse;
- }
- }
- }, {
- key: 'downthisOption',
- value: function downthisOption(selectObj, indexOption) {
- var fullResponse = {
- resultFlag: false,
- details: ''
- };
- if (indexOption > -1) {
- if (indexOption < selectObj.rows.length - 1) {
- if (selectObj.rows[indexOption + 1]) {
- var currentOption = selectObj.rows[indexOption];
- selectObj.rows.splice(indexOption, 1);
- selectObj.rows.splice(indexOption + 1, 0, currentOption);
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- } else {
- fullResponse.resultFlag = false;
- fullResponse.details = 'Can\'t retreive option from option index';
- return fullResponse;
- }
- } else {
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- }
- } else {
- fullResponse.resultFlag = false;
- fullResponse.details = 'Option index not valid';
- return fullResponse;
- }
- }
- }]);
-
- return selectOptionMange;
- })();
-
- selectOptionMange.$inject = [];
-
- _export('default', selectOptionMange);
-
- _export('LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE', LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE);
- }
- };
-});
-$__System.register('f', ['9', 'a'], function (_export) {
- var _createClass, _classCallCheck, CONTROLLER_MODAL_PROXY, INIT_OPTION_MODEL, controllerModalProxy;
-
- return {
- setters: [function (_2) {
- _createClass = _2['default'];
- }, function (_a) {
- _classCallCheck = _a['default'];
- }],
- execute: function () {
- ///
- ///
-
- /**
- * TODO :
- * - clean deprecated functions
- * - method 'resetAllTemporyModels' -> remove no use angular.copy to optimize
- */
-
- 'use strict';
-
- CONTROLLER_MODAL_PROXY = 'controllerModalProxy';
- INIT_OPTION_MODEL = { rows: [] };
-
- controllerModalProxy = (function () {
- function controllerModalProxy(EasyFormGenFormlyBindingModels) {
- _classCallCheck(this, controllerModalProxy);
-
- this.EasyFormGenFormlyBindingModels = EasyFormGenFormlyBindingModels;
- this.init();
- }
-
- _createClass(controllerModalProxy, [{
- key: 'init',
- value: function init() {
- this.proxyModel = {};
- this.resetProxyModel();
- this.editPanelModel = {
- toggle: false,
- lineIndex: -1,
- columnIndex: -1,
- control: {}
- };
- this.basicSelectRowCollection = angular.copy(INIT_OPTION_MODEL);
- this.newOptionBasicSelect = angular.copy({ saisie: '' });
-
- this.groupedSelectRowCollection = angular.copy(INIT_OPTION_MODEL);
- this.newOptionGroupedSelect = angular.copy({ saisie: '' });
- this.GroupedSelectGroups = angular.copy({ list: [] });
- this.newGroupGroupedSelect = angular.copy({ saisie: '' });
- this.groupSelectGroupClick = angular.copy({ showList: false });
-
- this.radioRowCollection = angular.copy(INIT_OPTION_MODEL);
- this.newOptionRadio = angular.copy({ saisie: '' });
- }
-
- // deprecated in drag and drop version, use initProxyModel insead
- }, {
- key: 'initNyaSelect',
- value: function initNyaSelect(nyaSelectObj) {
- return this.resetNyaSelect(nyaSelectObj);
- }
- }, {
- key: 'initProxyModel',
- value: function initProxyModel(thisProxyModelToInit) {
- return this.resetProxyModel(thisProxyModelToInit);
- }
-
- // deprecated : in drag and drop version, use "resetProxyModel()""
- }, {
- key: 'resetNyaSelect',
- value: function resetNyaSelect(nyaSelectObj) {
- var newNyaSelectObj = this.EasyFormGenFormlyBindingModels.getEasyFormListControls();
- angular.copy(newNyaSelectObj, nyaSelectObj);
- return true;
- }
- }, {
- key: 'resetProxyModel',
- value: function resetProxyModel() {
- var newProxyModel = this.EasyFormGenFormlyBindingModels.getEasyFormListControls();
- this.proxyModel = angular.copy(newProxyModel);
- return true;
- }
- }, {
- key: 'returnControlFromAddCtrlModalModel',
- value: function returnControlFromAddCtrlModalModel(CtrlModalModel) {
- var modelToReturn = {
- selectedControl: 'none',
- formlyType: 'none',
- formlySubtype: 'none',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyPlaceholder: '',
- formlyOptions: []
- };
- for (var i = CtrlModalModel.controls.length - 1; i >= 0; i--) {
- if (CtrlModalModel.selectedControl === CtrlModalModel.controls[i].id) {
-
- modelToReturn.selectedControl = CtrlModalModel.selectedControl;
- modelToReturn.formlyType = CtrlModalModel.controls[i].formlyType;
- modelToReturn.formlySubtype = CtrlModalModel.controls[i].formlySubtype;
- modelToReturn.formlyLabel = CtrlModalModel.controls[i].formlyLabel;
- modelToReturn.formlyRequired = CtrlModalModel.controls[i].formlyRequired;
- modelToReturn.formlyDesciption = CtrlModalModel.controls[i].formlyDesciption;
- modelToReturn.formlyPlaceholder = CtrlModalModel.controls[i].formlyPlaceholder;
- modelToReturn.formlyOptions = CtrlModalModel.controls[i].formlyOptions;
- // particular properties, here ; datetpicker format
- if (CtrlModalModel.controls[i].formlyType === 'datepicker') modelToReturn.datepickerPopup = CtrlModalModel.controls[i].datepickerPopup;
- }
- }
- return modelToReturn;
- }
- }, {
- key: 'validKeyUniqueness',
- value: function validKeyUniqueness(thisKey, configurationObj) {
- var isUnique = true;
- for (var i = configurationObj.lines.length - 1; i >= 0; i--) {
- for (var j = configurationObj.lines[i].columns.length - 1; j >= 0; j--) {
- if (configurationObj.lines[i].columns[j].control.key === thisKey) {
- isUnique = false;
- }
- }
- }
- return isUnique;
- }
- }, {
- key: 'getSelectedProxyModel',
- value: function getSelectedProxyModel(configurationSelectedCtrl) {
- var selectedProxyModelControl = 'none';
- var listProxyModelCTRL = angular.copy(this.EasyFormGenFormlyBindingModels.getEasyFormListControls().controls);
-
- listProxyModelCTRL.forEach(function (control) {
- if (control.formlyType === configurationSelectedCtrl.type && control.formlySubtype === configurationSelectedCtrl.subtype) {
- selectedProxyModelControl = control.id;
- return selectedProxyModelControl;
- }
- });
- return selectedProxyModelControl;
- }
-
- // to refresh configuration model from edit panel
- }, {
- key: 'bindConfigurationModelFromProxyModel',
- value: function bindConfigurationModelFromProxyModel(indexLine, numcolumn, configurationObj) {
- var extractedProps = angular.copy(this.proxyModel.temporyConfig);
-
- configurationObj.lines[indexLine].columns[numcolumn].control.selectedControl = extractedProps.selectedControl;
- configurationObj.lines[indexLine].columns[numcolumn].control.type = extractedProps.formlyType;
- configurationObj.lines[indexLine].columns[numcolumn].control.subtype = extractedProps.formlySubtype;
- // templateOptions
- configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions = {
- label: '',
- required: false,
- description: '',
- placeholder: '',
- options: []
- };
- // then bind template option
- configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label = extractedProps.formlyLabel;
- configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required = extractedProps.formlyRequired;
- configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description = extractedProps.formlyDesciption;
- configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder = extractedProps.formlyPlaceholder;
- configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options = extractedProps.formlyOptions;
- // add additionnal — particular — properties : -> datepicker : datepickerPopup
- if (configurationObj.lines[indexLine].columns[numcolumn].control.type === 'datepicker') {
- configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup = extractedProps.datepickerPopup;
- }
- // unique key (set only first time) in this model is formly control type + Date.now();
- var newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();
-
- if (this.validKeyUniqueness(newKey, configurationObj) === true) {
- configurationObj.lines[indexLine].columns[numcolumn].control.key = newKey;
- } else {
- newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();
- if (this.validKeyUniqueness(newKey, configurationObj) === true) {
- configurationObj.lines[indexLine].columns[numcolumn].control.key = newKey;
- } else {
- newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();
- }
- }
- configurationObj.lines[indexLine].columns[numcolumn].control.edited = true;
- }
-
- /**
- * set local proxyModel from Selected control in configuration model
- *
- * replace deprecated "getNyASelectFromSelectedLineColumn"
- * -model is now named "proxyModel"
- * -model is stored in this service
- *
- * -> it has just more sence!
- */
- }, {
- key: 'setProxyModelFromConfigurationSelection',
- value: function setProxyModelFromConfigurationSelection(configurationObj, indexLine, numcolumn) {
- // data send to modal controller
- if (typeof configurationObj.lines[indexLine].columns[numcolumn].control != 'undefined') {
- // determine selected control from indexes and control.type and control.subtype in configuration model
- this.proxyModel.selectedControl = typeof configurationObj.lines[indexLine].columns[numcolumn].control.type != 'undefined' ? this.getSelectedProxyModel(configurationObj.lines[indexLine].columns[numcolumn].control) : 'none';
- this.proxyModel.temporyConfig.selectedControl = typeof configurationObj.lines[indexLine].columns[numcolumn].control.type != 'undefined' ? this.getSelectedProxyModel(configurationObj.lines[indexLine].columns[numcolumn].control) : 'none';
- this.proxyModel.temporyConfig.formlyType = typeof configurationObj.lines[indexLine].columns[numcolumn].control.type != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.type : 'none';
- this.proxyModel.temporyConfig.formlySubtype = typeof configurationObj.lines[indexLine].columns[numcolumn].control.subtype != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.subtype : 'none';
- this.proxyModel.temporyConfig.formlyLabel = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label : '';
- this.proxyModel.temporyConfig.formlyRequired = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required : '';
- this.proxyModel.temporyConfig.formlyDesciption = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description : '';
- this.proxyModel.temporyConfig.formlyPlaceholder = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder : '';
- this.proxyModel.temporyConfig.formlyOptions = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options : '';
- // particular case : datepicker
- if (this.proxyModel.temporyConfig.selectedControl === 'Date') {
- this.proxyModel.temporyConfig.datepickerPopup = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup : '';
- }
- // console.info('debug setProxyModelFromConfigurationSelection');
- // console.dir({
- // selectedControl : angular.copy(this.proxyModel.selectedControl ),
- // temporyConfig : angular.copy(this.proxyModel.temporyConfig)
- // });
- }
- return this.proxyModel;
- }
- }, {
- key: 'getProxyModel',
- value: function getProxyModel() {
- return this.proxyModel;
- }
-
- /**
- * ============================================================
- * following methods for "editPanelModel"
- *
- * Note this model :
- * - to manage side edit control panel
- * ============================================================
- */
-
- // getter : editPanelModel (whole model => type = object)
- }, {
- key: 'getEditPanelModelAllModel',
- value: function getEditPanelModelAllModel() {
- return this.editPanelModel;
- }
-
- // setter : editPanelModel (whole model => type = object)
- }, {
- key: 'setEditPanelModelControl',
- value: function setEditPanelModelControl(newEditPanelModel) {
- var successfullDone = false;
- if (typeof newEditPanelModel !== 'undefined') {
- angular.merge(this.editPanelModel, newEditPanelModel);
- successfullDone = true;
- }
- return successfullDone;
- }
-
- // getter : editPanelModel.columnIndex
- }, {
- key: 'getEditPanelModelColumnIndex',
- value: function getEditPanelModelColumnIndex() {
- return this.editPanelModel.columnIndex;
- }
-
- // setter : editPanelModel.columnIndex
- }, {
- key: 'setEditPanelModelColumnIndex',
- value: function setEditPanelModelColumnIndex(newColumnIndex) {
- var successfullDone = false;
- if (typeof newColumnIndex !== 'undefined') {
- this.editPanelModel.columnIndex = newColumnIndex;
- successfullDone = true;
- }
- return successfullDone;
- }
-
- // getter : editPanelModel.lineIndex
- }, {
- key: 'getEditPanelModelLineIndex',
- value: function getEditPanelModelLineIndex() {
- return this.editPanelModel.lineIndex;
- }
-
- // setter : editPanelModel.lineIndex
- }, {
- key: 'setEditPanelModelLineIndex',
- value: function setEditPanelModelLineIndex(newLineIndex) {
- var successfullDone = false;
- if (typeof newLineIndex !== 'undefined') {
- this.editPanelModel.lineIndex = newLineIndex;
- successfullDone = true;
- }
- return successfullDone;
- }
-
- // getter : editPanelModel.control
- }, {
- key: 'getEditPanelModelControl',
- value: function getEditPanelModelControl() {
- return this.editPanelModel.control;
- }
-
- // getter : editPanelModel.toggle
- }, {
- key: 'getEditPanelModelToggle',
- value: function getEditPanelModelToggle() {
- return this.editPanelModel.toggle;
- }
-
- // setter : editPanelModel.toggle
- }, {
- key: 'setEditPanelModelToggle',
- value: function setEditPanelModelToggle(newToggleValue) {
- var successfullDone = false;
- if (typeof newToggleValue !== 'undefined') {
- this.editPanelModel.toggle = newToggleValue;
- successfullDone = true;
- }
- return successfullDone;
- }
- }, {
- key: 'resetAllTemporyModels',
- value: function resetAllTemporyModels() {
- this.basicSelectRowCollection = angular.copy(INIT_OPTION_MODEL);
- this.newOptionBasicSelect = angular.copy({ saisie: '' });
-
- this.groupedSelectRowCollection = angular.copy(INIT_OPTION_MODEL);
- this.newOptionGroupedSelect = angular.copy({ saisie: '' });
- this.GroupedSelectGroups = angular.copy({ list: [] });
- this.newGroupGroupedSelect = angular.copy({ saisie: '' });
- this.groupSelectGroupClick = angular.copy({ showList: false });
-
- this.radioRowCollection = angular.copy(INIT_OPTION_MODEL);
- this.newOptionRadio = angular.copy({ saisie: '' });
- return true;
- }
-
- /**
- * bindSpecialCtrlTemporyModelsToProxyModel: needed when validating after editing a control
- * tempory models applied to proxyModel if control is one of these
- *
- * example : if selected control is a basic select options
- * -> so its tempory models are bound to proxyModel
- */
- }, {
- key: 'bindSpecialCtrlTemporyModelsToProxyModel',
- value: function bindSpecialCtrlTemporyModelsToProxyModel() {
- if (this.proxyModel.selectedControl === 'BasicSelect') {
- this.bindBasicSelectToProxyModel(this.basicSelectRowCollection);
- }
- if (this.proxyModel.selectedControl === 'GroupedSelect') {
- this.bindGroupedSelectToProxyModel(this.groupedSelectRowCollection);
- }
- if (this.proxyModel.selectedControl === 'Radio') {
- this.bindRadioToProxyModel(this.radioRowCollection);
- }
- }
-
- // basic select
- }, {
- key: 'bindBasicSelectFromProxyModel',
- value: function bindBasicSelectFromProxyModel(basicSelectRowCollection) {
- if (this.proxyModel.temporyConfig.formlyOptions.length > 0) {
- for (var i = 0; i <= this.proxyModel.temporyConfig.formlyOptions.length - 1; i++) {
- var newOption = {
- 'option': this.proxyModel.temporyConfig.formlyOptions[i].name,
- 'order': i,
- 'group': ''
- };
- basicSelectRowCollection.rows.push(newOption);
- }
- }
- }
- }, {
- key: 'bindBasicSelectToProxyModel',
- value: function bindBasicSelectToProxyModel(basicSelectRowCollection) {
- var resetNyASelectOptions = [];
- this.proxyModel.temporyConfig.formlyOptions = resetNyASelectOptions;
- if (basicSelectRowCollection.rows.length > 0) {
- for (var i = 0; i <= basicSelectRowCollection.rows.length - 1; i++) {
- var newOption = {
- 'name': basicSelectRowCollection.rows[i].option,
- 'value': i,
- 'group': ''
- };
- this.proxyModel.temporyConfig.formlyOptions.push(newOption);
- }
- }
- }
-
- //* grouped select
- }, {
- key: 'bindGroupedSelectFromProxyModel',
- value: function bindGroupedSelectFromProxyModel(groupedSelectRowCollection, GroupedSelectGroups) {
- if (this.proxyModel.temporyConfig.formlyOptions.length > 0) {
- for (var i = 0; i <= this.proxyModel.temporyConfig.formlyOptions.length - 1; i++) {
- var newOption = {
- 'option': this.proxyModel.temporyConfig.formlyOptions[i].name,
- 'order': i,
- 'group': this.proxyModel.temporyConfig.formlyOptions[i].group
- };
- groupedSelectRowCollection.rows.push(newOption);
- }
- //grouplist : thx to lodash it is easy
- var filteredgroup = _.uniq(_.pluck(groupedSelectRowCollection.rows, 'group'));
- angular.copy(filteredgroup, GroupedSelectGroups.list);
- }
- }
- }, {
- key: 'bindGroupedSelectToProxyModel',
- value: function bindGroupedSelectToProxyModel(groupedSelectRowCollection) {
- this.proxyModel.temporyConfig.formlyOptions = [];
- for (var i = 0; i <= groupedSelectRowCollection.rows.length - 1; i++) {
- var newOption = {
- 'name': groupedSelectRowCollection.rows[i].option,
- 'value': i,
- 'group': groupedSelectRowCollection.rows[i].group
- };
- this.proxyModel.temporyConfig.formlyOptions.push(newOption);
- }
- }
-
- // radio
- }, {
- key: 'bindRadioFromProxyModel',
- value: function bindRadioFromProxyModel(radioRowCollection) {
- if (this.proxyModel.temporyConfig.formlyOptions.length > 0) {
- for (var i = 0; i <= this.proxyModel.temporyConfig.formlyOptions.length - 1; i++) {
- var newOption = {
- 'option': this.proxyModel.temporyConfig.formlyOptions[i].name,
- 'order': i,
- 'group': ''
- };
- radioRowCollection.rows.push(newOption);
- }
- }
- }
- }, {
- key: 'bindRadioToProxyModel',
- value: function bindRadioToProxyModel(radioRowCollection) {
- var resetproxyModelOptions = [];
- this.proxyModel.temporyConfig.formlyOptions = resetproxyModelOptions;
- if (radioRowCollection.rows.length > 0) {
- for (var i = 0; i <= radioRowCollection.rows.length - 1; i++) {
- var newOption = {
- 'name': radioRowCollection.rows[i].option,
- 'value': i,
- 'group': ''
- };
- this.proxyModel.temporyConfig.formlyOptions.push(newOption);
- }
- }
- }
- }]);
-
- return controllerModalProxy;
- })();
-
- controllerModalProxy.$inject = ['EasyFormGenFormlyBindingModels'];
-
- _export('default', controllerModalProxy);
-
- _export('CONTROLLER_MODAL_PROXY', CONTROLLER_MODAL_PROXY);
- }
- };
-});
-$__System.registerDynamic("10", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('11', ['10'], function (_export) {
- 'use strict';
-
- var leftPanelValidEditFooterTemplate, LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE;
-
- function leftPanelValidEditFooter() {
- var directive = {
- restrict: 'E',
- template: leftPanelValidEditFooterTemplate
- };
- return directive;
- }
-
- return {
- setters: [function (_) {
- leftPanelValidEditFooterTemplate = _['default'];
- }],
- execute: function () {
- LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE = 'leftPanelValidEditFooter';
- leftPanelValidEditFooter.$inject = [];
-
- _export('default', leftPanelValidEditFooter);
-
- _export('LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE', LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE);
- }
- };
-});
-$__System.registerDynamic("12", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "
\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('13', ['12'], function (_export) {
- 'use strict';
-
- var leftPanelTextInputControlTemplate, LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE;
-
- function leftPanelTextInputControl() {
- var directive = {
- restrict: 'E',
- template: leftPanelTextInputControlTemplate
- };
- return directive;
- }
-
- return {
- setters: [function (_) {
- leftPanelTextInputControlTemplate = _['default'];
- }],
- execute: function () {
- LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE = 'leftPanelTextInputControl';
- leftPanelTextInputControl.$inject = [];
-
- _export('default', leftPanelTextInputControl);
-
- _export('LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE', LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE);
- }
- };
-});
-$__System.registerDynamic("14", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "
\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('15', ['14'], function (_export) {
- 'use strict';
-
- var leftPanelTextareaControlTemplate, LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE;
-
- function leftPanelTextareaControl() {
- var directive = {
- restrict: 'E',
- template: leftPanelTextareaControlTemplate
- };
- return directive;
- }
-
- return {
- setters: [function (_) {
- leftPanelTextareaControlTemplate = _['default'];
- }],
- execute: function () {
- LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE = 'leftPanelTextareaControl';
- leftPanelTextareaControl.$inject = [];
-
- _export('default', leftPanelTextareaControl);
-
- _export('LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE', LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE);
- }
- };
-});
-$__System.registerDynamic("16", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "
\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('17', ['16'], function (_export) {
- 'use strict';
-
- var leftPanelSubtitleControlTemplate, LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE;
-
- function leftPanelSubtitleControl() {
- var directive = {
- restrict: 'E',
- template: leftPanelSubtitleControlTemplate
- };
- return directive;
- }
-
- return {
- setters: [function (_) {
- leftPanelSubtitleControlTemplate = _['default'];
- }],
- execute: function () {
- LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE = 'leftPanelSubtitleControl';
- leftPanelSubtitleControl.$inject = [];
-
- _export('default', leftPanelSubtitleControl);
-
- _export('LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE', LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE);
- }
- };
-});
-$__System.registerDynamic("18", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "
\n
\n
\n
\n
\n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('19', ['18'], function (_export) {
- 'use strict';
-
- var leftPanelRichTextEditorControlTemplate, LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE;
-
- function leftPanelRichTextEditorControl() {
- var directive = {
- restrict: 'E',
- template: leftPanelRichTextEditorControlTemplate
- };
- return directive;
- }
-
- return {
- setters: [function (_) {
- leftPanelRichTextEditorControlTemplate = _['default'];
- }],
- execute: function () {
- LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE = 'leftPanelRichTextEditorControl';
- leftPanelRichTextEditorControl.$inject = [];
-
- _export('default', leftPanelRichTextEditorControl);
-
- _export('LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE', LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE);
- }
- };
-});
-$__System.registerDynamic("1a", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "
\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n \n Add new radio :\n \n
\n
\n
\n
\n
\n \n Edit/Remove radio :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('1b', ['1a'], function (_export) {
- 'use strict';
-
- var leftPanelRadioControlTemplate, LEFT_PANEL_RADIO_CONTROL_DIRECTIVE;
-
- function leftPanelRadioControl() {
- var directive = {
- restrict: 'E',
- template: leftPanelRadioControlTemplate
- };
- return directive;
- }
-
- return {
- setters: [function (_a) {
- leftPanelRadioControlTemplate = _a['default'];
- }],
- execute: function () {
- LEFT_PANEL_RADIO_CONTROL_DIRECTIVE = 'leftPanelRadioControl';
- leftPanelRadioControl.$inject = [];
-
- _export('default', leftPanelRadioControl);
-
- _export('LEFT_PANEL_RADIO_CONTROL_DIRECTIVE', LEFT_PANEL_RADIO_CONTROL_DIRECTIVE);
- }
- };
-});
-$__System.registerDynamic("1c", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "
\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('1d', ['1c'], function (_export) {
- 'use strict';
-
- var leftPanelPasswordControlTemplate, LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE;
-
- function leftPanelPasswordControl() {
- var directive = {
- restrict: 'E',
- template: leftPanelPasswordControlTemplate
- };
- return directive;
- }
-
- return {
- setters: [function (_c) {
- leftPanelPasswordControlTemplate = _c['default'];
- }],
- execute: function () {
- LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE = 'leftPanelPasswordControl';
- leftPanelPasswordControl.$inject = [];
-
- _export('default', leftPanelPasswordControl);
-
- _export('LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE', LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE);
- }
- };
-});
-$__System.registerDynamic("1e", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "
\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('1f', ['1e'], function (_export) {
- 'use strict';
-
- var leftPanelHeaderControlTemplate, LEFT_PANEL_HEADER_CONTROL_DIRECTIVE;
-
- function leftPanelHeaderControl() {
- var directive = {
- restrict: 'E',
- template: leftPanelHeaderControlTemplate
- };
- return directive;
- }
-
- return {
- setters: [function (_e) {
- leftPanelHeaderControlTemplate = _e['default'];
- }],
- execute: function () {
- LEFT_PANEL_HEADER_CONTROL_DIRECTIVE = 'leftPanelHeaderControl';
- leftPanelHeaderControl.$inject = [];
-
- _export('default', leftPanelHeaderControl);
-
- _export('LEFT_PANEL_HEADER_CONTROL_DIRECTIVE', LEFT_PANEL_HEADER_CONTROL_DIRECTIVE);
- }
- };
-});
-$__System.registerDynamic("20", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "
\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n \n Add new options :\n \n
\n
\n
\n
\n
\n \n Add new groups :\n \n
\n
\n
\n
\n
\n \n Edit/Remove options/groups:\n \n
\n
\n
\n
\n
\n
\n
\n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('21', ['20'], function (_export) {
- 'use strict';
-
- var leftPanelGroupedSelectControlTemplate, LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE;
-
- function leftPanelGroupedSelectControl() {
- var directive = {
- restrict: 'E',
- template: leftPanelGroupedSelectControlTemplate
- };
- return directive;
- }
-
- return {
- setters: [function (_) {
- leftPanelGroupedSelectControlTemplate = _['default'];
- }],
- execute: function () {
- LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE = 'leftPanelGroupedSelectControl';
- leftPanelGroupedSelectControl.$inject = [];
-
- _export('default', leftPanelGroupedSelectControl);
-
- _export('LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE', LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE);
- }
- };
-});
-$__System.registerDynamic("22", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "
\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n Date format :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('23', ['22'], function (_export) {
- 'use strict';
-
- var leftPanelDateControlTemplate, LEFT_PANEL_DATE_CONTROL_DIRECTIVE;
-
- function leftPanelDateControl() {
- var directive = {
- restrict: 'E',
- template: leftPanelDateControlTemplate
- };
- return directive;
- }
-
- return {
- setters: [function (_) {
- leftPanelDateControlTemplate = _['default'];
- }],
- execute: function () {
- LEFT_PANEL_DATE_CONTROL_DIRECTIVE = 'leftPanelDateControl';
- leftPanelDateControl.$inject = [];
-
- _export('default', leftPanelDateControl);
-
- _export('LEFT_PANEL_DATE_CONTROL_DIRECTIVE', LEFT_PANEL_DATE_CONTROL_DIRECTIVE);
- }
- };
-});
-$__System.registerDynamic("24", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "
\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('25', ['24'], function (_export) {
- 'use strict';
-
- var leftPanelCheckBoxControlTemplate, LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE;
-
- function leftPanelCheckBoxControl() {
- var directive = {
- restrict: 'E',
- template: leftPanelCheckBoxControlTemplate
- };
- return directive;
- }
-
- return {
- setters: [function (_) {
- leftPanelCheckBoxControlTemplate = _['default'];
- }],
- execute: function () {
- LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE = 'leftPanelCheckBoxControl';
- leftPanelCheckBoxControl.$inject = [];
-
- _export('default', leftPanelCheckBoxControl);
-
- _export('LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE', LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE);
- }
- };
-});
-$__System.registerDynamic("26", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "
\n
\n
\n
\n
\n \n \n Edit :\n \n \n
\n
\n
\n
\n Column will be blank\n \n \n
\n
\n
\n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('27', ['26'], function (_export) {
- 'use strict';
-
- var leftPanelBlankControlTemplate, LEFT_PANEL_BLANK_CONTROL_DIRECTIVE;
-
- function leftPanelBlankControl() {
- var directive = {
- restrict: 'E',
- template: leftPanelBlankControlTemplate
- };
- return directive;
- }
-
- return {
- setters: [function (_) {
- leftPanelBlankControlTemplate = _['default'];
- }],
- execute: function () {
- LEFT_PANEL_BLANK_CONTROL_DIRECTIVE = 'leftPanelBlankControl';
- leftPanelBlankControl.$inject = [];
-
- _export('default', leftPanelBlankControl);
-
- _export('LEFT_PANEL_BLANK_CONTROL_DIRECTIVE', LEFT_PANEL_BLANK_CONTROL_DIRECTIVE);
- }
- };
-});
-$__System.registerDynamic("28", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "
\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n \n Add new options :\n \n
\n
\n
\n
\n
\n \n Edit/Remove options :\n \n
\n
\n
\n
\n
\n
\n
\n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('29', ['28'], function (_export) {
- 'use strict';
-
- var leftPanelBasicSelectControlTemplate, LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE;
-
- function leftPanelBasicSelectControl() {
- var directive = {
- restrict: 'E',
- template: leftPanelBasicSelectControlTemplate
- };
- return directive;
- }
-
- return {
- setters: [function (_) {
- leftPanelBasicSelectControlTemplate = _['default'];
- }],
- execute: function () {
- LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE = 'leftPanelBasicSelectControl';
- leftPanelBasicSelectControl.$inject = [];
-
- _export('default', leftPanelBasicSelectControl);
-
- _export('LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE', LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE);
- }
- };
-});
-$__System.register('2a', ['8', '11', '13', '15', '17', '19', '21', '23', '25', '27', '29', 'c', 'e', 'f', '1b', '1d', '1f'], function (_export) {
- /* global angular */
- 'use strict';
-
- var leftPanelController, LEFT_PANEL_CONTROLLER, leftPanelValidEditFooter, LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE, leftPanelTextInputControl, LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE, leftPanelTextareaControl, LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE, leftPanelSubtitleControl, LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE, leftPanelRichTextEditorControl, LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE, leftPanelGroupedSelectControl, LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE, leftPanelDateControl, LEFT_PANEL_DATE_CONTROL_DIRECTIVE, leftPanelCheckBoxControl, LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE, leftPanelBlankControl, LEFT_PANEL_BLANK_CONTROL_DIRECTIVE, leftPanelBasicSelectControl, LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE, leftPanel, LEFT_PANEL_DIRECTIVE, selectOptionMange, LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE, controllerModalProxy, CONTROLLER_MODAL_PROXY, leftPanelRadioControl, LEFT_PANEL_RADIO_CONTROL_DIRECTIVE, leftPanelPasswordControl, LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE, leftPanelHeaderControl, LEFT_PANEL_HEADER_CONTROL_DIRECTIVE, LEFT_PANEL_MODULE;
- return {
- setters: [function (_) {
- leftPanelController = _['default'];
- LEFT_PANEL_CONTROLLER = _.LEFT_PANEL_CONTROLLER;
- }, function (_2) {
- leftPanelValidEditFooter = _2['default'];
- LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE = _2.LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE;
- }, function (_3) {
- leftPanelTextInputControl = _3['default'];
- LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE = _3.LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE;
- }, function (_4) {
- leftPanelTextareaControl = _4['default'];
- LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE = _4.LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE;
- }, function (_5) {
- leftPanelSubtitleControl = _5['default'];
- LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE = _5.LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE;
- }, function (_6) {
- leftPanelRichTextEditorControl = _6['default'];
- LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE = _6.LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE;
- }, function (_7) {
- leftPanelGroupedSelectControl = _7['default'];
- LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE = _7.LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE;
- }, function (_8) {
- leftPanelDateControl = _8['default'];
- LEFT_PANEL_DATE_CONTROL_DIRECTIVE = _8.LEFT_PANEL_DATE_CONTROL_DIRECTIVE;
- }, function (_9) {
- leftPanelCheckBoxControl = _9['default'];
- LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE = _9.LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE;
- }, function (_10) {
- leftPanelBlankControl = _10['default'];
- LEFT_PANEL_BLANK_CONTROL_DIRECTIVE = _10.LEFT_PANEL_BLANK_CONTROL_DIRECTIVE;
- }, function (_11) {
- leftPanelBasicSelectControl = _11['default'];
- LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE = _11.LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE;
- }, function (_c) {
- leftPanel = _c['default'];
- LEFT_PANEL_DIRECTIVE = _c.LEFT_PANEL_DIRECTIVE;
- }, function (_e) {
- selectOptionMange = _e['default'];
- LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE = _e.LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE;
- }, function (_f) {
- controllerModalProxy = _f['default'];
- CONTROLLER_MODAL_PROXY = _f.CONTROLLER_MODAL_PROXY;
- }, function (_b) {
- leftPanelRadioControl = _b['default'];
- LEFT_PANEL_RADIO_CONTROL_DIRECTIVE = _b.LEFT_PANEL_RADIO_CONTROL_DIRECTIVE;
- }, function (_d) {
- leftPanelPasswordControl = _d['default'];
- LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE = _d.LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE;
- }, function (_f2) {
- leftPanelHeaderControl = _f2['default'];
- LEFT_PANEL_HEADER_CONTROL_DIRECTIVE = _f2.LEFT_PANEL_HEADER_CONTROL_DIRECTIVE;
- }],
- execute: function () {
- LEFT_PANEL_MODULE = 'edaDragDropWay.leftPanel.module';
-
- _export('default', angular.module(LEFT_PANEL_MODULE, []).directive(LEFT_PANEL_DIRECTIVE, leftPanel).controller(LEFT_PANEL_CONTROLLER, leftPanelController).service(LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE, selectOptionMange).service(CONTROLLER_MODAL_PROXY, controllerModalProxy).directive(LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE, leftPanelValidEditFooter).directive(LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE, leftPanelTextInputControl).directive(LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE, leftPanelTextareaControl).directive(LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE, leftPanelSubtitleControl).directive(LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE, leftPanelRichTextEditorControl).directive(LEFT_PANEL_RADIO_CONTROL_DIRECTIVE, leftPanelRadioControl).directive(LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE, leftPanelPasswordControl).directive(LEFT_PANEL_HEADER_CONTROL_DIRECTIVE, leftPanelHeaderControl).directive(LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE, leftPanelGroupedSelectControl).directive(LEFT_PANEL_DATE_CONTROL_DIRECTIVE, leftPanelDateControl).directive(LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE, leftPanelCheckBoxControl).directive(LEFT_PANEL_BLANK_CONTROL_DIRECTIVE, leftPanelBlankControl).directive(LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE, leftPanelBasicSelectControl));
- }
- };
-});
-$__System.register('2b', ['9', 'a'], function (_export) {
- var _createClass, _classCallCheck, FORM_FIELD_MANAGE_SERVICE, formFieldManage;
-
- return {
- setters: [function (_) {
- _createClass = _['default'];
- }, function (_a) {
- _classCallCheck = _a['default'];
- }],
- execute: function () {
- 'use strict';
-
- FORM_FIELD_MANAGE_SERVICE = 'formFieldManage';
-
- formFieldManage = (function () {
- function formFieldManage(EasyFormGenFormlyBindingModels) {
- _classCallCheck(this, formFieldManage);
-
- this.EasyFormGenFormlyBindingModels = EasyFormGenFormlyBindingModels;
- this.init();
- }
-
- _createClass(formFieldManage, [{
- key: 'init',
- value: function init() {}
-
- /**
- * At initial state : configuration model will contain 1 line, since :
- * -> it is non sense to create a form without a single line (no line = no form at all)
- * -> so it is non sense to force user to add a first line
- *
- * PLEASE NOTE columns array contains objects that look like formly fields one
- */
- }, {
- key: 'initConfigurationEditFromScratch',
- value: function initConfigurationEditFromScratch(configurationModel, addStepWayProperties) {
- var configurationModelInit = this.EasyFormGenFormlyBindingModels.getEasyFormInitialStateConfigurationModel(addStepWayProperties);
- angular.copy(configurationModelInit, configurationModel);
- }
-
- /**
- * Get an configuration empty (no init line) then empty it with lines array provided in param
- * @param object - configurationModel [configuration model]
- * @param array - lines [an array : lines to apply to an empty configuration model]
- * @param bool - addStepWayProperties [description]
- * @return {object message} [give details on how it happened to caller]
- */
- }, {
- key: 'bindConfigurationLines',
- value: function bindConfigurationLines(configurationModel, lines, addStepWayProperties) {
- if (Object.prototype.toString.call(lines) === '[object Array]') {
- var configurationModelResult = this.EasyFormGenFormlyBindingModels.getEasyFormReloadConfigurationModel(addStepWayProperties);
- configurationModelResult.lines = [].concat(lines);
- angular.copy(configurationModelResult, configurationModel);
- return this.getMessageObject('configuration model is bound', 'lines are bound to configuration model.');
- } else {
- return this.getErrorObject('lines is not an array', 'Checks lines type, it is not an array.');
- }
- }
-
- /**
- * applyConfigurationToformlyModel :
- * - bind configuration model into formly field model
- * - reset dataModel (formlyfield may have changed so previous dataModel would be false)
- * @param configurationModel
- * @param formlyModel
- * @param formlyDataModel
- */
- }, {
- key: 'applyConfigurationToformlyModel',
- value: function applyConfigurationToformlyModel(configurationModel, formlyModel, formlyDataModel) {
- this.resetFormlyModel(formlyModel);
- this.resetDataModel(formlyDataModel);
- var lineNumber = configurationModel.lines.length;
- for (var i = 0; i < lineNumber; i++) {
- this.AddNColumnControl(formlyModel, configurationModel, i);
- }
- }
- }, {
- key: 'resetFormlyModel',
- value: function resetFormlyModel(formlyModel) {
- var resetformly = [];
- angular.copy(resetformly, formlyModel);
- }
- }, {
- key: 'AddNColumnControl',
- value: function AddNColumnControl(formlyModel, configurationModel, lineIndex) {
- var _this = this;
-
- var numberOfColumns = configurationModel.lines[lineIndex].columns.length;
- /**
- * push formly model
- * here : only className and empty fieldGroup (controls != header)
- * if header will be reset to set a template (at least we have now indexFormlyModel)
- */
- var rawFormlyModel = {
- className: 'row',
- fieldGroup: []
- };
- //get index formlyModel for this line :
- var indexFormlyModel = formlyModel.push(rawFormlyModel) - 1;
-
- // iterates through controls in the line
- configurationModel.lines[lineIndex].columns.forEach(function (column) {
- var controlTemplate = {};
- if (typeof controlTemplate !== 'undefined' &&
- // column.control.type !== 'header' &&
- // column.control.type !== 'subTitle' &&
- column.control.type !== 'none') {
- /**
- * controls : getFormlyControlTemplateForNcolumnLine()
- *
- * @PARAM numberOfColumns : integer to deduce cssClss to apply
- * @PARAM column.control.type : to add if needed specific properties (example : datepicker)
- */
- if (column.control.type === 'header' || column.control.type === 'subTitle') {
- var headerTextContent = column.control.templateOptions.description;
- controlTemplate.template = _this.EasyFormGenFormlyBindingModels.getHeaderTemplateForNcolumnLine(numberOfColumns, headerTextContent).template;
- controlTemplate.className = _this.EasyFormGenFormlyBindingModels.getRawHeaderTemplates().selectedClass;
- } else {
- controlTemplate = _this.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(numberOfColumns, column.control.type);
- /**
- * NEED REFACTOR HERE
- * should bind properties dynamically
- *
- * TODO need to validate all controls (datepicker may not work)
- * need to refactor
- */
- controlTemplate.className = column.control.className;
- controlTemplate.type = column.control.type;
- controlTemplate.key = column.control.key;
- controlTemplate.templateOptions.type = column.control.templateOptions.type;
- controlTemplate.templateOptions.label = column.control.templateOptions.label;
- controlTemplate.templateOptions.required = column.control.templateOptions.required;
- controlTemplate.templateOptions.placeholder = column.control.templateOptions.placeholder;
- controlTemplate.templateOptions.description = column.control.templateOptions.description;
- controlTemplate.templateOptions.options = [].concat(column.control.templateOptions.options);
-
- if (typeof controlTemplate.templateOptions.datepickerPopup !== 'undefined') column.control.templateOptions.datepickerPopup = controlTemplate.templateOptions.datepickerPopup;
- }
- /**
- * popuplate properties
- */
-
- /**
- * push control into formly model in its group
- */
-
- /**
- * need to catch this random error
- */
- formlyModel[indexFormlyModel].fieldGroup.push(controlTemplate);
- }
- });
- }
- }, {
- key: 'isTemplateOptionDefined',
- value: function isTemplateOptionDefined(obj) {
- return typeof obj.templateOptions !== 'undefined' ? true : false;
- }
- }, {
- key: 'extractTemplateOptionLabel',
- value: function extractTemplateOptionLabel(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.label !== 'undefined' ? obj.templateOptions.label : '' : '';
- }
- }, {
- key: 'extractTemplateOptionDatepickerPopup',
- value: function extractTemplateOptionDatepickerPopup(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.datepickerPopup !== 'undefined' ? obj.templateOptions.datepickerPopup : '' : '';
- }
- }, {
- key: 'extractTemplateOptionRequired',
- value: function extractTemplateOptionRequired(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.required !== 'undefined' ? obj.templateOptions.required : '' : '';
- }
-
- //radio and select
- }, {
- key: 'extractTemplateOptionOptions',
- value: function extractTemplateOptionOptions(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.options !== 'undefined' ? obj.templateOptions.options : '' : '';
- }
- }, {
- key: 'extractTemplateOptionType',
- value: function extractTemplateOptionType(obj) {
- return typeof obj.subtype !== 'undefined' ? obj.subtype : '';
- }
- }, {
- key: 'extractTemplateOptionPlaceholder',
- value: function extractTemplateOptionPlaceholder(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.placeholder !== 'undefined' ? obj.templateOptions.placeholder : '' : '';
- }
- }, {
- key: 'extractTemplateOptionDescription',
- value: function extractTemplateOptionDescription(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.description !== 'undefined' ? obj.templateOptions.description : '' : '';
- }
-
- // formly model functions
- }, {
- key: 'resetDataModel',
- value: function resetDataModel(obj) {
- var emptyDataModel = {};
- angular.copy(emptyDataModel, obj);
- return true;
- }
-
- // custom errors
- }, {
- key: 'getErrorObject',
- value: function getErrorObject(errorTitle, errorMessage) {
- var messageObj = {
- noError: false,
- title: '',
- Message: ''
- };
- messageObj.noError = false;
- messageObj.title = errorTitle;
- messageObj.Message = errorMessage;
- return messageObj;
- }
- }, {
- key: 'getMessageObject',
- value: function getMessageObject(messageTitle, messageBody) {
- var messageObj = {
- noError: false,
- title: '',
- Message: ''
- };
- messageObj.noError = true;
- messageObj.title = messageTitle;
- messageObj.Message = messageBody;
- return messageObj;
- }
- }]);
-
- return formFieldManage;
- })();
-
- formFieldManage.$inject = ['EasyFormGenFormlyBindingModels'];
-
- _export('default', formFieldManage);
-
- _export('FORM_FIELD_MANAGE_SERVICE', FORM_FIELD_MANAGE_SERVICE);
- }
- };
-});
-$__System.register('2c', [], function (_export) {
- 'use strict';
-
- var initEasyFormListControls, initEasyFormEmptyConfigurationLineModel, initEmptyControlFieldModel, initEasyFormInitialStateConfigurationModel, initEasyFormInitialStateConfigurationModelAddOnForStepWay, initEasyFormReloadConfigurationModel, initHeaderTemplates, initFormlyControlTemplates, initParticularControlProperties;
- return {
- setters: [],
- execute: function () {
- initEasyFormListControls = function initEasyFormListControls() {
- return {
- controls: [],
- selectedControl: 'none',
- temporyConfig: {
- selectedControl: 'none',
- formlyLabel: 'label',
- formlyRequired: false,
- formlyDesciption: '',
- formlyPlaceholder: '',
- formlyOptions: []
- }
- };
- };
-
- _export('initEasyFormListControls', initEasyFormListControls);
-
- initEasyFormEmptyConfigurationLineModel = function initEasyFormEmptyConfigurationLineModel() {
- return {
- line: 1,
- activeColumn: 1,
- columns: [{
- numColumn: 1,
- exist: true,
- control: {
- type: 'none',
- key: 'none'
- }
- }]
- };
- };
-
- _export('initEasyFormEmptyConfigurationLineModel', initEasyFormEmptyConfigurationLineModel);
-
- initEmptyControlFieldModel = function initEmptyControlFieldModel() {
- return {
- 'control': {
- 'type': 'none',
- 'key': 'none'
- }
- };
- };
-
- _export('initEmptyControlFieldModel', initEmptyControlFieldModel);
-
- initEasyFormInitialStateConfigurationModel = function initEasyFormInitialStateConfigurationModel(_easyFormEmptyConfigurationLineModel) {
- // commun all easy form generator ways
- return {
- submitButtonText: 'submit',
- cancelButtonText: 'cancel',
- lines: [].concat(_easyFormEmptyConfigurationLineModel)
- };
- };
-
- _export('initEasyFormInitialStateConfigurationModel', initEasyFormInitialStateConfigurationModel);
-
- initEasyFormInitialStateConfigurationModelAddOnForStepWay = function initEasyFormInitialStateConfigurationModelAddOnForStepWay() {
- // specific easy form generator — step way — (not drag and drop way), needed for wizard management
- return {
- activeLine: 1,
- listConfigStep: ['init', 'first', 'second', 'third'],
- stepIndicators: [true, false, false, false],
- configStepCounter: 0
- };
- };
-
- _export('initEasyFormInitialStateConfigurationModelAddOnForStepWay', initEasyFormInitialStateConfigurationModelAddOnForStepWay);
-
- initEasyFormReloadConfigurationModel = function initEasyFormReloadConfigurationModel() {
- var reloadConfigModel = initEasyFormInitialStateConfigurationModel();
- reloadConfigModel.lines = [];
- return reloadConfigModel;
- };
-
- _export('initEasyFormReloadConfigurationModel', initEasyFormReloadConfigurationModel);
-
- // can't use arrow function here -> 'this' would be bound to caller rather than expected current returned object...
-
- initHeaderTemplates = function initHeaderTemplates() {
- var headerTemplate = {
- cssClass: ['col-xs-12', 'col-xs-6', 'col-xs-4'],
- textContent: '',
- html_part1: ['
', '
'].join(''),
- html_part3: this.textContent,
- html_part4: [' ', ' ', ' '].join(''),
- simpleHtml1: ['
'].join(''),
- simpleHtml2: [' ', ' '].join('')
- };
- return headerTemplate;
- };
-
- _export('initHeaderTemplates', initHeaderTemplates);
-
- initFormlyControlTemplates = function initFormlyControlTemplates() {
- return {
- className: ['col-xs-12', 'col-xs-6', 'col-xs-4'],
- type: '',
- key: '',
- templateOptions: {
- type: '',
- label: '',
- required: '',
- placeholder: '',
- description: '',
- options: ''
- }
- };
- };
-
- _export('initFormlyControlTemplates', initFormlyControlTemplates);
-
- initParticularControlProperties = function initParticularControlProperties() {
- return [{
- controlType: 'datepicker',
- properties: [{
- isRoot: false,
- isTemplateOptions: true,
- value: 'datepickerPopup'
- }]
- }];
- };
-
- _export('initParticularControlProperties', initParticularControlProperties);
- }
- };
-});
-$__System.register('2d', ['2c'], function (_export) {
- 'use strict';
-
- var helpers, EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER;
-
- function EasyFormGenFormlyBindingModels() {
-
- var _easyFormListControls = helpers.initEasyFormListControls();
- var _easyFormEmptyConfigurationLineModel = helpers.initEasyFormEmptyConfigurationLineModel();
- var _emptyControlFieldModel = helpers.initEmptyControlFieldModel();
- var _easyFormInitialStateConfigurationModel = helpers.initEasyFormInitialStateConfigurationModel(_easyFormEmptyConfigurationLineModel);
- var _easyFormInitialStateConfigurationModelAddOnForStepWay = helpers.initEasyFormInitialStateConfigurationModelAddOnForStepWay();
- var _easyFormReloadConfigurationModel = helpers.initEasyFormReloadConfigurationModel();
- var _headerTemplates = helpers.initHeaderTemplates();
- var _formlyControlTemplates = helpers.initFormlyControlTemplates();
- var _particularControlProperties = helpers.initParticularControlProperties();
-
- this.getAllParticularControlProperties = getAllParticularControlProperties;
- this.addParticularControlProperties = addParticularControlProperties;
- this.getEasyFormListControls = getEasyFormListControls;
- this.addEasyFormControlToList = addEasyFormControlToList;
- this.getHeaderTemplates = getHeaderTemplates;
- this.addHeaderTemplateCssClass = addHeaderTemplateCssClass;
- this.getFormlyControlTemplate = getFormlyControlTemplate;
- this.addformlyControlTemplatesCssClass = addformlyControlTemplatesCssClass;
- this.setFormlyControlTemplate = setFormlyControlTemplate;
- this.$get = getFct;
-
- function getAllParticularControlProperties() {
- return _particularControlProperties;
- }
-
- function addParticularControlProperties(newParticularControlProperty) {
- // test object param has waited properties
- if ('controlType' in newParticularControlProperty && 'properties' in newParticularControlProperty) {
- var isAnUpdate = false;
- if (_particularControlProperties.length > 0) {
- _particularControlProperties.forEach(function (controlProp) {
- if (controlProp.controlType === newParticularControlProperty.controlType) {
- controlProp.properties = [].concat(newParticularControlProperty.properties);
- isAnUpdate = true;
- }
- });
- }
- if (!isAnUpdate) {
- _particularControlProperties.push(newParticularControlProperty);
- }
- }
- return _particularControlProperties;
- }
-
- function getEasyFormListControls() {
- return _easyFormListControls;
- }
-
- function addEasyFormControlToList(controlDeclaration) {
- if (typeof controlDeclaration !== 'undefined') {
- _easyFormListControls.controls.push(controlDeclaration);
- }
- }
-
- function getHeaderTemplates() {
- return _headerTemplates;
- }
-
- function addHeaderTemplateCssClass(cssClassToAdd) {
- if (typeof cssClassToAdd !== 'undefined') {
- _headerTemplates.cssClass.push(cssClassToAdd);
- }
- }
-
- function getFormlyControlTemplate() {
- return _formlyControlTemplates;
- }
-
- function addformlyControlTemplatesCssClass(cssClassToAdd) {
- if (typeof cssClassToAdd !== 'undefined') {
- _formlyControlTemplates.className.push(cssClassToAdd);
- }
- }
-
- function setFormlyControlTemplate(newFormlyControlTemplate) {
- if ('className' in newFormlyControlTemplate && 'type' in newFormlyControlTemplate && 'key' in newFormlyControlTemplate && 'templateOptions' in newFormlyControlTemplate) {
- _formlyControlTemplates = angular.copy(newFormlyControlTemplate);
- }
- return true;
- }
-
- getFct.$inject = [];
- function getFct() {
- var service = {
- getEasyFormListControls: getEasyFormListControlsFct,
- getEasyFormInitialStateConfigurationModel: getEasyFormInitialStateConfigurationModel,
- getEasyFormReloadConfigurationModel: getEasyFormReloadConfigurationModel,
- getEasyFormEmptyConfigurationLineModel: getEasyFormEmptyConfigurationLineModel,
- getEasyFormConfigurationEmptyControlModel: getEasyFormConfigurationEmptyControlModel,
- getRawHeaderTemplates: getRawHeaderTemplates,
- getHeaderTemplateForNcolumnLine: getHeaderTemplateForNcolumnLine,
- getRawFormlyControlTemplates: getRawFormlyControlTemplates,
- getFormlyControlTemplateForNcolumnLine: getFormlyControlTemplateForNcolumnLine
- };
- return service;
-
- function getEasyFormListControlsFct() {
- return _easyFormListControls;
- }
-
- function getEasyFormInitialStateConfigurationModel(addStepWayProperties) {
- var initialConfigurationModel = angular.copy(_easyFormInitialStateConfigurationModel);
- if (typeof addStepWayProperties !== 'undefined') {
- if (addStepWayProperties) {
- // add properties specific to step way
- angular.extend(initialConfigurationModel, _easyFormInitialStateConfigurationModelAddOnForStepWay);
- }
- }
- return initialConfigurationModel;
- }
-
- function getEasyFormReloadConfigurationModel(addStepWayProperties) {
- var initialConfigurationModel = angular.copy(_easyFormReloadConfigurationModel);
- if (typeof addStepWayProperties !== 'undefined') {
- if (addStepWayProperties) {
- // add properties specific to step way
- angular.extend(initialConfigurationModel, _easyFormInitialStateConfigurationModelAddOnForStepWay);
- }
- }
- return initialConfigurationModel;
- }
-
- function getEasyFormEmptyConfigurationLineModel() {
- return _easyFormEmptyConfigurationLineModel;
- }
-
- function getEasyFormConfigurationEmptyControlModel() {
- return _emptyControlFieldModel;
- }
-
- function getRawHeaderTemplates() {
- return _headerTemplates;
- }
-
- function getHeaderTemplateForNcolumnLine(nbColInLines, textContent) {
- if (typeof nbColInLines !== 'undefined' && typeof textContent !== 'undefined') {
- if (nbColInLines === parseInt(nbColInLines, 10)) {
- if (nbColInLines <= _headerTemplates.cssClass.length) {
- var headerToReturn = {};
- headerToReturn.className = _headerTemplates.cssClass[nbColInLines - 1];
- // header html property depends this property dont forget to set it before reading html property
- _headerTemplates.textContent = textContent;
- _headerTemplates.selectedClass = headerToReturn.className;
- headerToReturn.template = [_headerTemplates.simpleHtml1, textContent, _headerTemplates.simpleHtml2].join('');
- return headerToReturn;
- }
- }
- }
- }
-
- function getRawFormlyControlTemplates() {
- return _formlyControlTemplates;
- }
-
- function getFormlyControlTemplateForNcolumnLine(nbColInLines, controlType) {
- if (typeof nbColInLines !== 'undefined') {
- if (nbColInLines === parseInt(nbColInLines, 10)) {
- if (nbColInLines <= _formlyControlTemplates.className.length) {
- var _ret = (function () {
- var controlToReturn = angular.copy(_formlyControlTemplates);
- controlToReturn.className = _formlyControlTemplates.className[nbColInLines - 1];
- // throw `it should have a bug upper line`;
- /* eslint no-console:0 */
- console.warn('it should have a bug upper line');
- /**
- * check controlType: it may require another particular property
- */
- if (typeof controlType !== 'undefined') {
- _particularControlProperties.forEach(function (controlProp) {
- if (controlProp.controlType === controlType) {
- /**
- * add all properties this controlType has
- *
- * NOTE : dot expression and bracket expression to access object property
- * http://www.ecma-international.org/ecma-262/5.1/#sec-11.2.1
- */
- controlProp.properties.forEach(function (aPropToAdd) {
- if (aPropToAdd.isRoot) controlToReturn[aPropToAdd.value] = '';
- if (aPropToAdd.isTemplateOptions) controlToReturn.templateOptions[aPropToAdd.value] = '';
- });
- }
- });
- }
- return {
- v: controlToReturn
- };
- })();
-
- if (typeof _ret === 'object') return _ret.v;
- }
- }
- }
- }
- }
- }
-
- return {
- setters: [function (_c) {
- helpers = _c;
- }],
- execute: function () {
- EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER = 'EasyFormGenFormlyBindingModels';
- EasyFormGenFormlyBindingModels.$inject = [];
-
- _export('default', EasyFormGenFormlyBindingModels);
-
- _export('EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER', EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER);
- }
- };
-});
-$__System.register('2e', ['2b', '2d'], function (_export) {
- 'use strict';
-
- var formFieldManage, FORM_FIELD_MANAGE_SERVICE, EasyFormGenFormlyBindingModels, EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER, FORMLY_PROXY_MODULE;
- return {
- setters: [function (_b) {
- formFieldManage = _b['default'];
- FORM_FIELD_MANAGE_SERVICE = _b.FORM_FIELD_MANAGE_SERVICE;
- }, function (_d) {
- EasyFormGenFormlyBindingModels = _d['default'];
- EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER = _d.EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER;
- }],
- execute: function () {
- FORMLY_PROXY_MODULE = '';
-
- _export('default', angular.module(FORMLY_PROXY_MODULE, []).service(FORM_FIELD_MANAGE_SERVICE, formFieldManage).provider(EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER, EasyFormGenFormlyBindingModels));
- }
- };
-});
-$__System.register('2f', [], function (_export) {
- 'use strict';
-
- var DD_CONTENT_COUNTER_DIRECTIVE;
-
- function ddContentCounter(dragDropItemCounterService, $timeout) {
- var directive = {
- restrict: 'A',
- scope: {
- valueWhenPlaceholder: '@ddValueWhenPlaceholder',
- valueWhendragging: '@ddValueWhenDragging',
- fullModel: '=ddFullModel',
- currentIndex: '@ddContentCounterCurrentIndex',
- parentIndex: '@ddContentCounterParentIndex',
- forceRefresh: '=ddContentCounterForceCssRefresh'
- },
- link: linkfct
- };
- return directive;
-
- function linkfct($scope, element) {
- var timer = undefined;
- // watch children length change : to update css item class
- $scope.$watch(function () {
- return element[0].children.length;
- }, function (newValue, oldValue) {
- if (newValue !== oldValue) {
- (function () {
- var newRealCount = 0;
- var listClassForThisRow = [];
- for (var i = element[0].children.length - 1; i >= 0; i--) {
- if (dragDropItemCounterService.isHtmlElementToCount(element[0].children[i].classList)) {
- newRealCount++;
- listClassForThisRow.push({ item: i, isReal: true });
- } else {
- listClassForThisRow.push({ item: i, isReal: false });
- }
- }
- $scope.contentRealCount = newRealCount;
- // a timer otherwise won't refresh everytime
- timer = $timeout(function () {
- dragDropItemCounterService.updateLineItemCss($scope.fullModel, listClassForThisRow, $scope.parentIndex, $scope.currentIndex, newRealCount);
- }, 20);
- })();
- }
- });
-
- $scope.$on('$destroy', function () {
- $timeout.cancel(timer);
- });
- }
- }
-
- return {
- setters: [],
- execute: function () {
- DD_CONTENT_COUNTER_DIRECTIVE = 'ddContentCounter';
- ddContentCounter.$inject = ['dragDropItemCounterService', '$timeout'];
-
- _export('default', ddContentCounter);
-
- _export('DD_CONTENT_COUNTER_DIRECTIVE', DD_CONTENT_COUNTER_DIRECTIVE);
- }
- };
-});
-$__System.register('30', ['9', 'a'], function (_export) {
- var _createClass, _classCallCheck, DRAG_DROP_ITEM_COUNTER_SERVICE, dragDropItemCounterService;
-
- return {
- setters: [function (_) {
- _createClass = _['default'];
- }, function (_a) {
- _classCallCheck = _a['default'];
- }],
- execute: function () {
- 'use strict';
-
- DRAG_DROP_ITEM_COUNTER_SERVICE = 'dragDropItemCounterService';
-
- dragDropItemCounterService = (function () {
- function dragDropItemCounterService(easyFormDragWayConfig) {
- _classCallCheck(this, dragDropItemCounterService);
-
- this.easyFormDragWayConfig = easyFormDragWayConfig;
- this.init();
- }
-
- _createClass(dragDropItemCounterService, [{
- key: 'init',
- value: function init() {
- this._modelItemRealCounter = [];
- this._itemsNotToCount = angular.copy(this.easyFormDragWayConfig.getItemsNotToCount());
- }
- }, {
- key: 'getItemsNotToCount',
- value: function getItemsNotToCount() {
- return this._itemsNotToCount;
- }
- }, {
- key: 'getModelItemsRealCounter',
- value: function getModelItemsRealCounter() {
- return this._modelItemRealCounter;
- }
- }, {
- key: 'isHtmlElementToCount',
- value: function isHtmlElementToCount(htmlvalue) {
- var isToCount = true;
- if (htmlvalue.length > 0) {
- angular.forEach(this._itemsNotToCount, function (value) {
- for (var classes = htmlvalue.length - 1; classes >= 0; classes--) {
- if (htmlvalue[classes] === value) isToCount = isToCount && false;
- }
- });
- }
- return isToCount;
- }
- }, {
- key: 'updateLineItemCss',
- value: function updateLineItemCss(fullModel, listCssToApply, columIndex, lineIndex, realCount) {
- if (typeof fullModel !== 'undefined' && typeof listCssToApply !== 'undefined' && typeof columIndex !== 'undefined' && typeof lineIndex !== 'undefined' && typeof realCount !== 'undefined') {
- for (var i = fullModel[columIndex][lineIndex].length - 1; i >= 0; i--) {
- for (var j = 0; j < listCssToApply.length; j++) {
- if (listCssToApply[j].item === i && listCssToApply[j].isReal === true) {
- fullModel[columIndex][lineIndex][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(realCount);
- }
- }
- }
- return true;
- }
- }
- }]);
-
- return dragDropItemCounterService;
- })();
-
- dragDropItemCounterService.$inject = ['easyFormDragWayConfig'];
-
- _export('default', dragDropItemCounterService);
-
- _export('DRAG_DROP_ITEM_COUNTER_SERVICE', DRAG_DROP_ITEM_COUNTER_SERVICE);
- }
- };
-});
-$__System.registerDynamic("31", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = " \n
\n \n \n \n \n {{ddDecorContainerCtrl.currentTitle}}\n \n\n\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('32', ['31', '33'], function (_export) {
- /* global angular */
- 'use strict';
-
- var ddDecorContainerTemplate, DD_DECOR_CONTAINER_CONTROLLER_NAME, DD_DECOR_CONTAINER_CONTROLLERAS_NAME, DD_DECOR_CONTAINER_DIRECTIVE;
-
- function ddDecorContainer() {
- var directive = {
- restrict: 'A',
- template: ddDecorContainerTemplate,
- scope: {},
- controller: DD_DECOR_CONTAINER_CONTROLLER_NAME,
- controllerAs: DD_DECOR_CONTAINER_CONTROLLERAS_NAME,
- bindToController: {
- 'styleParam': '=ddContainerProperties',
- 'isStillCollapsed': '=ddContainerIsCollpased',
- 'verboseMode': '@ddContainerVerboseMode',
- 'currentIndex': '@ddContainerCurrentIndex',
- 'collpaseAll': '&ddCollapseAll'
- },
- transclude: true,
- link: linkFct
- };
- return directive;
-
- function linkFct($scope, element, attrs, ctrl, transclude) {
- var verboseModeActive = $scope.ddDecorContainerCtrl.verboseMode;
- var currentIndex = $scope.ddDecorContainerCtrl.currentIndex;
- $scope.ddDecorContainerCtrl.isCollapsed = false;
- $scope.ddDecorContainerCtrl.config.isEnabled = false;
- /**
- * forceCollapse when :
- * dragDropConfigModel.containerConfig.decoration.isCollapsed changed (here bound to $scope.isStillCollapsed)
- */
- $scope.$watch(function () {
- return $scope.ddDecorContainerCtrl.isStillCollapsed;
- }, function (newVal, oldVal) {
- if (newVal !== oldVal) {
- if ($scope.$parent.$parent.$index === 0) $scope.ddDecorContainerCtrl.isCollapsed = newVal;
- }
- });
-
- /**
- * verbose mode for developments only
- */
- if (verboseModeActive !== '') {
- var verbose = angular.lowercase(verboseModeActive);
- if (verbose === 'true' || verbose === '1') {
- /* eslint no-console:0 */
- console.dir({
- whoAmI: 'I am verbose from ddDecorContainer link',
- verbodeMode: verbose,
- ParentParentIndex: $scope.$parent.$parent.$index,
- ParentIndex: $scope.$parent.$index,
- currentIndex: currentIndex,
- styleParam: $scope.ddDecorContainerCtrl.styleParam,
- columnindex: $scope.$parent.$parent.$parent.$parent.$index
- });
- }
- }
-
- /**
- * no header (no title, no collapse....)
- */
- //$scope.ddDecorContainerCtrl.config.isEnabled
- if (typeof currentIndex !== 'undefined') {
- if (currentIndex !== '') {
- /**
- * specific 1st column
- */
- if (currentIndex === '0') {
- /**
- * apply title
- */
- if (typeof $scope.ddDecorContainerCtrl.styleParam.title !== 'undefined') {
- $scope.ddDecorContainerCtrl.currentTitle = $scope.ddDecorContainerCtrl.styleParam.title;
- $scope.ddDecorContainerCtrl.config.isEnabled = true;
- $scope.ddDecorContainerCtrl.isCollapsed = true;
- }
- }
- }
- }
-
- /**
- * prevent transclusion creating child scope
- * want to know more about what I'm talking about : check this nice tip on the subject :
- * http://angular-tips.com/blog/2014/03/transclusion-and-scopes/
- */
- transclude($scope.$parent, function (contentClone) {
- /**
- * transclusion will append content to '
'
- */
- var childDiv = angular.element(element.children()[1]);
- childDiv.append(contentClone);
- });
- }
- }
-
- return {
- setters: [function (_) {
- ddDecorContainerTemplate = _['default'];
- }, function (_2) {
- DD_DECOR_CONTAINER_CONTROLLER_NAME = _2.DD_DECOR_CONTAINER_CONTROLLER_NAME;
- DD_DECOR_CONTAINER_CONTROLLERAS_NAME = _2.DD_DECOR_CONTAINER_CONTROLLERAS_NAME;
- }],
- execute: function () {
- DD_DECOR_CONTAINER_DIRECTIVE = 'ddDecorContainer';
-
- _export('default', ddDecorContainer);
-
- _export('DD_DECOR_CONTAINER_DIRECTIVE', DD_DECOR_CONTAINER_DIRECTIVE);
- }
- };
-});
-$__System.register('33', ['9', 'a'], function (_export) {
- var _createClass, _classCallCheck, DD_DECOR_CONTAINER_CONTROLLER_NAME, DD_DECOR_CONTAINER_CONTROLLERAS_NAME, ddDecorContainerController;
-
- return {
- setters: [function (_) {
- _createClass = _['default'];
- }, function (_a) {
- _classCallCheck = _a['default'];
- }],
- execute: function () {
- /* global angular */
- 'use strict';
-
- DD_DECOR_CONTAINER_CONTROLLER_NAME = 'ddDecorContainerController';
- DD_DECOR_CONTAINER_CONTROLLERAS_NAME = 'ddDecorContainerCtrl';
-
- ddDecorContainerController = (function () {
- function ddDecorContainerController() {
- _classCallCheck(this, ddDecorContainerController);
-
- this.init();
- }
-
- _createClass(ddDecorContainerController, [{
- key: 'init',
- value: function init() {
- this.config = angular.extend({}, { isEnabled: false });
- /**
- * TODO (low priority) : make icon css configurable (provider)
- */
- this.icons = angular.extend({}, {
- closedClass: 'glyphicon glyphicon-eye-open',
- opened: 'glyphicon glyphicon-eye-close'
- });
- }
- }, {
- key: 'collapseFct',
- value: function collapseFct() {
- this.collpaseAll({ exceptThisOne: this.styleParam.WhenIndex }); //note : collpaseAll function is boundToController from directive attribute : 'collpaseAll' : '&ddCollapseAll'
- this.isCollapsed = !this.isCollapsed;
- this.isStillCollapsed = this.isCollapsed; //note : isStillCollapsed is boundToController from directive attribute : 'isStillCollapsed' : '=ddContainerIsCollpased',
- }
- }, {
- key: 'currentIconClass',
- value: function currentIconClass() {
- if (this.isCollapsed) {
- return this.icons.closedClass;
- } else {
- return this.icons.opened;
- }
- }
- }]);
-
- return ddDecorContainerController;
- })();
-
- _export('default', ddDecorContainerController);
-
- _export('DD_DECOR_CONTAINER_CONTROLLER_NAME', DD_DECOR_CONTAINER_CONTROLLER_NAME);
-
- _export('DD_DECOR_CONTAINER_CONTROLLERAS_NAME', DD_DECOR_CONTAINER_CONTROLLERAS_NAME);
- }
- };
-});
-$__System.registerDynamic("34", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "\n
\n
\n
\n
\n \n {{currentTitle}}\n \n \n \n \n add new line\n \n
\n \n
\n
\n
\n
\n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('35', ['34'], function (_export) {
- /* global angular */
- 'use strict';
-
- var ddDecorDropZoneTemplate, DD_DECOR_DROPZONE_DIRECTIVE;
-
- function ddDecorDropZone() {
- var directive = {
- restrict: 'A',
- template: ddDecorDropZoneTemplate,
- scope: {
- 'styleParam': '=ddDropZoneProperties',
- 'verboseMode': '@ddDropZoneVerboseMode',
- 'currentIndex': '@ddDropZoneCurrentIndex',
- 'addNewLineFct': '&ddDropZoneAddNewLine'
- },
- transclude: true,
- link: linkfct
- };
- return directive;
-
- function linkfct($scope) {
-
- var verboseModeActive = $scope.verboseMode;
- var currentIndex = $scope.currentIndex;
-
- $scope.headerConfig = {
- HeaderButtonVisible: false,
- affixAttr: 'bs-affix',
- affixEnabled: false
- };
- /**
- * verbose mode : just for dev
- */
- if (verboseModeActive !== '') {
- var verbose = angular.lowercase(verboseModeActive);
- if (verbose === 'true' || verbose === '1') {
- /* eslint no-console:0 */
- console.dir({
- whoAmI: 'I am verbose from ddDecorDropZone link',
- verbodeMode: verbose,
- ParentParentIndex: $scope.$parent.$parent.$index,
- ParentIndex: $scope.$parent.$index,
- currentIndex: currentIndex,
- styleParam: $scope.styleParam
- });
- }
- }
-
- if (typeof currentIndex !== 'undefined') {
- if (currentIndex !== '') {
- // apply title
- if (typeof $scope.styleParam.title !== 'undefined') $scope.currentTitle = $scope.styleParam.title;
- //apply font-awesome
- if (typeof $scope.styleParam.fontAwesomeIcon !== 'undefined') $scope.currentFontAwesome = $scope.styleParam.fontAwesomeIcon;
- //show add new line button
- if (currentIndex === '1') $scope.headerConfig.HeaderButtonVisible = true;
- }
- }
- }
- }
-
- return {
- setters: [function (_) {
- ddDecorDropZoneTemplate = _['default'];
- }],
- execute: function () {
- DD_DECOR_DROPZONE_DIRECTIVE = 'ddDecorDropZone';
- ddDecorDropZone.$inject = [];
-
- _export('default', ddDecorDropZone);
-
- _export('DD_DECOR_DROPZONE_DIRECTIVE', DD_DECOR_DROPZONE_DIRECTIVE);
- }
- };
-});
-$__System.registerDynamic("36", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('37', ['36'], function (_export) {
- 'use strict';
-
- var dragdropItemTemplate, DRAG_DROP_DECOR_ITEM;
-
- function ddDecorItem(easyFormDragWayConfig) {
- var directive = {
- restrict: 'A',
- scope: {
- 'verboseMode': '@ddItemVerboseMode',
- 'currentIndex': '@ddItemCurrentIndex',
- 'parentIndex': '@ddItemParentIndex',
- 'parentParentIndex': '@ddItemParentParentIndex',
- 'lineItemsCount': '@ddItemsCount',
- 'cssClass': '@ddItemCssClass'
- },
- template: dragdropItemTemplate,
- transclude: true,
- link: linkfct
- };
- return directive;
-
- function linkfct($scope, element, attrs, ctrl, transclude) {
- var verboseModeActive = $scope.verboseMode;
- var currentIndex = $scope.currentIndex;
- var parentIndex = $scope.parentIndex;
- var listClass = easyFormDragWayConfig.getDistinctItemCssClass();
-
- /**
- * init css class
- */
- angular.forEach(listClass, function (css) {
- return element.removeClass(css);
- });
- element.addClass($scope.cssClass);
- /**
- * update css class
- */
- $scope.$watch('cssClass', function (newValue, oldValue) {
- if (newValue !== oldValue) {
- /**
- * update css class
- */
- angular.forEach(listClass, function (css) {
- return element.removeClass(css);
- });
- element.addClass(newValue);
- }
- });
-
- /**
- * verbose mode : just for dev
- */
- if (verboseModeActive !== '') {
- var verbose = angular.lowercase(verboseModeActive);
- if (verbose === 'true' || verbose === '1') {
- /* eslint no-console:0 */
- console.dir({
- whoAmI: 'I am verbose from ddDecorItem directive link',
- verbodeMode: verbose,
- ParentParentIndex: $scope.$parent.$parent.$index,
- ParentIndex: parentIndex,
- parentParentIndex: $scope.parentParentIndex,
- currentIndex: currentIndex,
- lineItemsCount: $scope.lineItemsCount
- });
- }
- }
- /**
- * control column : apply css class to item
- */
- if ($scope.parentParentIndex === '0') element.addClass(listClass[0]);
- /**
- * prevent transclusion creating child scope
- *
- *
- * NOTE :if you want to know more about what I'm saying : check this nice tip on the subject :
- * http://angular-tips.com/blog/2014/03/transclusion-and-scopes/
- */
- transclude($scope.$parent, function (contentClone) {
- /**
- * transclusion will append content to '
'
- */
- var childDiv = angular.element(element.children()[0]);
- childDiv.append(contentClone);
- });
- }
- }
-
- return {
- setters: [function (_) {
- dragdropItemTemplate = _['default'];
- }],
- execute: function () {
- DRAG_DROP_DECOR_ITEM = 'ddDecorItem';
- ddDecorItem.$inject = ['easyFormDragWayConfig'];
-
- _export('default', ddDecorItem);
-
- _export('DRAG_DROP_DECOR_ITEM', DRAG_DROP_DECOR_ITEM);
- }
- };
-});
-$__System.register('38', ['9', 'a'], function (_export) {
- var _createClass, _classCallCheck, DRAG_DROP_ITEM_DECOR_SERVICE, dragDropItemDecorationService;
-
- return {
- setters: [function (_) {
- _createClass = _['default'];
- }, function (_a) {
- _classCallCheck = _a['default'];
- }],
- execute: function () {
- 'use strict';
-
- DRAG_DROP_ITEM_DECOR_SERVICE = 'dragDropItemDecorationService';
-
- dragDropItemDecorationService = (function () {
- function dragDropItemDecorationService(easyFormDragWayConfig) {
- _classCallCheck(this, dragDropItemDecorationService);
-
- this.easyFormDragWayConfig = easyFormDragWayConfig;
- this.init();
- }
-
- _createClass(dragDropItemDecorationService, [{
- key: 'init',
- value: function init() {
- this._listItemClass = [].concat(this.easyFormDragWayConfig.getListItemCssClass());
- }
- }, {
- key: 'getListClass',
- value: function getListClass() {
- return this._listItemClass;
- }
- }, {
- key: 'getCssClassWhenNumberItemsInRowIs',
- value: function getCssClassWhenNumberItemsInRowIs(thisNumber) {
- return this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(thisNumber);
- }
- }, {
- key: 'applyCssClassWholeLine',
- value: function applyCssClassWholeLine(model, indexColumn, indexLine, numberItems, restrictToThisIndexColumn) {
- if (typeof numberItems !== 'undefined' && typeof indexLine !== 'undefined' && typeof indexColumn !== 'undefined' && typeof model !== 'undefined' && typeof restrictToThisIndexColumn !== 'undefined') {
- if (indexColumn === restrictToThisIndexColumn) {
- for (var i = model[indexColumn][indexLine].length - 1; i >= 0; i--) {
- model[indexColumn][indexLine][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(numberItems);
- }
- }
- return true;
- } else {
- return false;
- }
- }
- }, {
- key: 'updateCssClassWholeColumn',
- value: function updateCssClassWholeColumn(model, indexColumn) {
- if (typeof indexColumn !== 'undefined' && typeof model !== 'undefined') {
- for (var cpt = model[indexColumn].length - 1; cpt >= 0; cpt--) {
- for (var i = model[indexColumn][cpt].length - 1; i >= 0; i--) {
- model[indexColumn][cpt][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(model[indexColumn][cpt].length);
- }
- }
- return true;
- } else {
- return false;
- }
- }
- }]);
-
- return dragDropItemDecorationService;
- })();
-
- dragDropItemDecorationService.$inject = ['easyFormDragWayConfig'];
-
- _export('default', dragDropItemDecorationService);
-
- _export('DRAG_DROP_ITEM_DECOR_SERVICE', DRAG_DROP_ITEM_DECOR_SERVICE);
- }
- };
-});
-$__System.registerDynamic("39", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "\n \n \n \n \n
\n
\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('3a', ['39'], function (_export) {
- /* global angular */
- 'use strict';
-
- var ddDecorLineTemplate, DRAG_DROP_DECOR_LINE;
-
- function ddDecorLine($timeout) {
- var directive = {
- restrict: 'A',
- scope: {
- 'verboseMode': '@ddLineVerboseMode',
- 'currentIndex': '@ddLineCurrentIndex',
- 'parentIndex': '@ddLineParentIndex',
- 'removeLine': '&ddRemoveLine'
- },
- template: ddDecorLineTemplate,
- transclude: true,
- link: linkfct
- };
- return directive;
-
- function linkfct($scope, element, attrs, ctrl, transclude) {
- var verboseModeActive = $scope.verboseMode;
- var currentIndex = $scope.currentIndex;
- var parentIndex = $scope.parentIndex;
- $scope.deleteLine = {};
- $scope.deleteLine.readyToDelete = false;
- $scope.deleteLine.dblClickCount = 0;
- $scope.isCollapsed = false;
- var timer = undefined;
-
- // verbose mode : just for dev
- if (verboseModeActive !== '') {
- var verbose = angular.lowercase(verboseModeActive);
- if (verbose === 'true' || verbose === '1') {
- /* eslint no-console:0 */
- console.dir({
- whoAmI: 'I am verbose from ddDecorLine directive link',
- verbodeMode: verbose,
- ParentParentIndex: $scope.$parent.$parent.$index,
- ParentIndex: parentIndex,
- currentIndex: currentIndex
- });
- }
- }
-
- /**
- * removeMe is function related to twice double click sequence to delete a line
- *
- * - addClass / remove/class ; will make line in a shake movement
- * - call "removeLine function to delete the line (if it was rwice double clicked)
- */
- $scope.removeMe = function (event) {
- event.preventDefault();
- event.stopPropagation();
-
- if ($scope.parentIndex === '1') {
- //2nd dbl click : if is shaking so it is confirmation to delete
- if ($scope.deleteLine.dblClickCount === 1) {
- $scope.deleteLine.dblClickCount = 0;
- $scope.deleteLine.readyToDelete = false;
- /**
- * NOTE : trick in calling parent controller function with input param when directive with isolate scope
- * see : https://thinkster.io/egghead/isolate-scope-am
- *
- * Here should be:
- *
- *-> in html : dd-remove-line="removeThisLine(indexToDelete)
- *-> in controller : $scope.removeThisLine = function(lineIndex){
- *-> so in directive call it : $scope.removeLine({indexToDelete: currentIndex});
- *
- *
- * BUT in this case (repeats, ul> li.... complicated)
- * => works better (if shaking a lot of line in a row it won't mess up)
- *
- *-> in html : dd-remove-line="removeThisLine($index)
- *-> in controller : $scope.removeThisLine = function(lineIndex){
- *-> so in directive call it : $scope.removeLine();
- */
- //$scope.removeLine({indexToDelete: currentIndex});
- $scope.removeLine();
- //console.warn('force timer destruction after delete!');
- $timeout.cancel(timer);
- }
-
- //1st dbl click : make it shake so ready to delete
- if ($scope.deleteLine.dblClickCount === 0) {
- $scope.deleteLine.dblClickCount = $scope.deleteLine.dblClickCount + 1;
- $scope.deleteLine.readyToDelete = true;
- }
- }
- };
-
- /**
- * signle event will ever occur
- *
- * to prevent it to interfere with double click sequence
- * -> set a time out (shaking line to delete will automaticallly end shaking after timeout : 2 seconds)
- */
- $scope.cancelDelete = function () {
- //event.preventDefault();
- //event.stopPropagation();
- timer = $timeout(function () {
- $scope.deleteLine.dblClickCount = 0;
- $scope.deleteLine.readyToDelete = false;
- }, 500);
-
- /**
- * debug
- */
- // timer.then(
- // () =>{
- // console.log( 'Timer resolved!', Date.now() );
- // },
- // () =>{
- // console.log( 'Timer rejected!', Date.now() );
- // }
- // );
- };
-
- /**
- * timer destruction to prevent from bad UI experience
- */
- $scope.$on('$destroy', function () {
- return $timeout.cancel(timer);
- });
-
- /**
- * prevent transclusion creating child scope
- *
- *
- * NOTE :if you want to know more about what I'm saying : check this nice tip on the subject :
- * http://angular-tips.com/blog/2014/03/transclusion-and-scopes/
- */
- transclude($scope.$parent, function (contentClone) {
- //transclusion will append content to '
'
- var childDiv = angular.element(element.children()[0]);
- childDiv.append(contentClone);
- });
- }
- }
-
- return {
- setters: [function (_) {
- ddDecorLineTemplate = _['default'];
- }],
- execute: function () {
- DRAG_DROP_DECOR_LINE = 'ddDecorLine';
- ddDecorLine.$inject = ['$timeout'];
-
- _export('default', ddDecorLine);
-
- _export('DRAG_DROP_DECOR_LINE', DRAG_DROP_DECOR_LINE);
- }
- };
-});
-$__System.register('3b', [], function (_export) {
- 'use strict';
-
- var DRAG_DROP_NO_EDITABLE_CONTROL;
-
- function ddNoEditableControl() {
- var directive = {
- restrict: 'A',
- link: linkfct
- };
- return directive;
-
- function linkfct($scope, element) {
- element.on('click', function (event) {
- return event.preventDefault();
- });
- }
- }
-
- return {
- setters: [],
- execute: function () {
- DRAG_DROP_NO_EDITABLE_CONTROL = 'ddNoEditableControl';
- ddNoEditableControl.$inject = [];
-
- _export('default', ddNoEditableControl);
-
- _export('DRAG_DROP_NO_EDITABLE_CONTROL', DRAG_DROP_NO_EDITABLE_CONTROL);
- }
- };
-});
-$__System.register('3c', ['30', '32', '33', '35', '37', '38', '2f', '3a', '3b'], function (_export) {
- /* global angular */
- 'use strict';
-
- var dragDropItemCounterService, DRAG_DROP_ITEM_COUNTER_SERVICE, ddDecorContainerDirective, DD_DECOR_CONTAINER_DIRECTIVE, ddDecorContainerController, DD_DECOR_CONTAINER_CONTROLLER_NAME, ddDecorDropZone, DD_DECOR_DROPZONE_DIRECTIVE, ddDecorItem, DRAG_DROP_DECOR_ITEM, dragDropItemDecorationService, DRAG_DROP_ITEM_DECOR_SERVICE, ddContentCounter, DD_CONTENT_COUNTER_DIRECTIVE, ddDecorLine, DRAG_DROP_DECOR_LINE, ddNoEditableControl, DRAG_DROP_NO_EDITABLE_CONTROL, DRAGDROP_MODULE;
- return {
- setters: [function (_) {
- dragDropItemCounterService = _['default'];
- DRAG_DROP_ITEM_COUNTER_SERVICE = _.DRAG_DROP_ITEM_COUNTER_SERVICE;
- }, function (_2) {
- ddDecorContainerDirective = _2['default'];
- DD_DECOR_CONTAINER_DIRECTIVE = _2.DD_DECOR_CONTAINER_DIRECTIVE;
- }, function (_3) {
- ddDecorContainerController = _3['default'];
- DD_DECOR_CONTAINER_CONTROLLER_NAME = _3.DD_DECOR_CONTAINER_CONTROLLER_NAME;
- }, function (_4) {
- ddDecorDropZone = _4['default'];
- DD_DECOR_DROPZONE_DIRECTIVE = _4.DD_DECOR_DROPZONE_DIRECTIVE;
- }, function (_5) {
- ddDecorItem = _5['default'];
- DRAG_DROP_DECOR_ITEM = _5.DRAG_DROP_DECOR_ITEM;
- }, function (_6) {
- dragDropItemDecorationService = _6['default'];
- DRAG_DROP_ITEM_DECOR_SERVICE = _6.DRAG_DROP_ITEM_DECOR_SERVICE;
- }, function (_f) {
- ddContentCounter = _f['default'];
- DD_CONTENT_COUNTER_DIRECTIVE = _f.DD_CONTENT_COUNTER_DIRECTIVE;
- }, function (_a) {
- ddDecorLine = _a['default'];
- DRAG_DROP_DECOR_LINE = _a.DRAG_DROP_DECOR_LINE;
- }, function (_b) {
- ddNoEditableControl = _b['default'];
- DRAG_DROP_NO_EDITABLE_CONTROL = _b.DRAG_DROP_NO_EDITABLE_CONTROL;
- }],
- execute: function () {
- DRAGDROP_MODULE = 'edaDragDropWay.dragdrop.module';
-
- _export('default', angular.module(DRAGDROP_MODULE, []).directive(DD_CONTENT_COUNTER_DIRECTIVE, ddContentCounter).controller(DD_DECOR_CONTAINER_CONTROLLER_NAME, ddDecorContainerController).directive(DD_DECOR_CONTAINER_DIRECTIVE, ddDecorContainerDirective).directive(DD_DECOR_DROPZONE_DIRECTIVE, ddDecorDropZone).directive(DRAG_DROP_DECOR_ITEM, ddDecorItem).service(DRAG_DROP_ITEM_DECOR_SERVICE, dragDropItemDecorationService).directive(DRAG_DROP_NO_EDITABLE_CONTROL, ddNoEditableControl).service(DRAG_DROP_ITEM_COUNTER_SERVICE, dragDropItemCounterService).directive(DRAG_DROP_DECOR_LINE, ddDecorLine));
- }
- };
-});
-$__System.register('3d', [], function (_export) {
- 'use strict';
-
- var EDA_RIGHT_CLICK_DIRECTIVE;
-
- function edaRightClick($parse) {
-
- var directive = {
- restrict: 'A',
- link: linkFct
- };
- return directive;
-
- function linkFct(scope, element, attrs) {
- var fn = $parse(attrs.edaRightClick);
- var columnIndex = $parse(attrs.edaRightClickColIndex);
- var fctSetRightclicked = $parse(attrs.edaSetRightClicked);
- /**
- * on right click event manage
- * - open edit panel through attrs.edaRightClick function
- * - set rightCliked attribute (to true) to control (in dragDropModel)
- */
- element.on('contextmenu', function (event) {
- scope.$apply(function () {
- event.preventDefault();
- if (columnIndex(scope) === 1) fctSetRightclicked(scope, {}); //right click limited to template column (index = 1)
- if (columnIndex(scope) === 1) fn(scope, { $event: event }); //right click limited to template column (index = 1)
- });
- });
- }
- }
-
- return {
- setters: [],
- execute: function () {
- EDA_RIGHT_CLICK_DIRECTIVE = 'edaRightClick';
- edaRightClick.$inject = ['$parse'];
-
- _export('default', edaRightClick);
-
- _export('EDA_RIGHT_CLICK_DIRECTIVE', EDA_RIGHT_CLICK_DIRECTIVE);
- }
- };
-});
-$__System.register('3e', ['9', 'a'], function (_export) {
- var _createClass, _classCallCheck, EDA_RIGHT_CLICKED_MANAGER_SERVICE, ddItemRightClickedManager;
-
- return {
- setters: [function (_) {
- _createClass = _['default'];
- }, function (_a) {
- _classCallCheck = _a['default'];
- }],
- execute: function () {
- 'use strict';
-
- EDA_RIGHT_CLICKED_MANAGER_SERVICE = 'ddItemRightClickedManager';
-
- ddItemRightClickedManager = (function () {
- function ddItemRightClickedManager() {
- _classCallCheck(this, ddItemRightClickedManager);
-
- this.init();
- }
-
- _createClass(ddItemRightClickedManager, [{
- key: 'init',
- value: function init() {}
-
- /**
- * setUnRightClicked
- * set unSelected (see edaRightClick directive)
- *
- * used in edaEditcontroller when droping control
- */
- }, {
- key: 'setUnRightClicked',
- value: function setUnRightClicked(dragDropModelItem) {
- dragDropModelItem.rightCliked = false;
- }
-
- /**
- * resetAllDragDropItemSelectedState
- *
- * simply reset (=set to false) all item.rightCliked
- * in edit column (dragable column)
- *
- * used in edaEditPanel when closeEditPanel() called
- */
- }, {
- key: 'resetAllDragDropItemSelectedState',
- value: function resetAllDragDropItemSelectedState(dragDropModel) {
- angular.forEach(dragDropModel[1], function (line) {
- angular.forEach(line, function (item) {
- return item.rightCliked = false;
- });
- });
- }
- }]);
-
- return ddItemRightClickedManager;
- })();
-
- ddItemRightClickedManager.$inject = [];
-
- _export('default', ddItemRightClickedManager);
-
- _export('EDA_RIGHT_CLICKED_MANAGER_SERVICE', EDA_RIGHT_CLICKED_MANAGER_SERVICE);
- }
- };
-});
-$__System.register('3f', ['3d', '3e'], function (_export) {
- 'use strict';
-
- var edaRightClick, EDA_RIGHT_CLICK_DIRECTIVE, ddItemRightClickedManager, EDA_RIGHT_CLICKED_MANAGER_SERVICE, EDA_RIGHT_CLICK_MODULE;
- return {
- setters: [function (_d) {
- edaRightClick = _d['default'];
- EDA_RIGHT_CLICK_DIRECTIVE = _d.EDA_RIGHT_CLICK_DIRECTIVE;
- }, function (_e) {
- ddItemRightClickedManager = _e['default'];
- EDA_RIGHT_CLICKED_MANAGER_SERVICE = _e.EDA_RIGHT_CLICKED_MANAGER_SERVICE;
- }],
- execute: function () {
- EDA_RIGHT_CLICK_MODULE = 'eda.right.click.module';
-
- _export('default', angular.module(EDA_RIGHT_CLICK_MODULE, []).directive(EDA_RIGHT_CLICK_DIRECTIVE, edaRightClick).service(EDA_RIGHT_CLICKED_MANAGER_SERVICE, ddItemRightClickedManager));
- }
- };
-});
-$__System.register('40', ['9', 'a'], function (_export) {
- var _createClass, _classCallCheck, DRAG_DROP_CONFIG_PROXY_SERVICE, ddModelConfModelProxyService;
-
- return {
- setters: [function (_) {
- _createClass = _['default'];
- }, function (_a) {
- _classCallCheck = _a['default'];
- }],
- execute: function () {
- 'use strict';
-
- DRAG_DROP_CONFIG_PROXY_SERVICE = 'ddModelConfModelProxyService';
-
- ddModelConfModelProxyService = (function () {
- function ddModelConfModelProxyService(EasyFormGenFormlyBindingModels,
- // controllerModalProxy,
- easyFormDragWayConfig, $parse) {
- _classCallCheck(this, ddModelConfModelProxyService);
-
- this.EasyFormGenFormlyBindingModels = EasyFormGenFormlyBindingModels;
- // this.controllerModalProxy = controllerModalProxy;
- // this.dragDropConfig = dragDropConfig;
- this.easyFormDragWayConfig = easyFormDragWayConfig;
- this.$parse = $parse;
- this.init();
- }
-
- _createClass(ddModelConfModelProxyService, [{
- key: 'init',
- value: function init() {}
- }, {
- key: 'refreshAllConfigurationFromDragAndDropModel',
- value: function refreshAllConfigurationFromDragAndDropModel(configModel, ddModel) {
- var _this = this;
-
- /**
- * TODO : prevent reset already set props
- *
- * previousConfigurationModel = a backup of configuration model 'configModel 'before resetting it
- * -> dragDrop model contains unique keys of already existing controls : these controls must not be reset / overwritten
- */
- // let previousConfigurationModel = angular.copy(configModel);
- configModel.lines = [];
- // iterates line config model
- angular.forEach(ddModel[1], function (lineValue, keyValue) {
- // add empty line 1st - if line is empty -> it will be enough
- configModel.lines.push(angular.copy(_this.EasyFormGenFormlyBindingModels.getEasyFormEmptyConfigurationLineModel()));
- // update line value field
- _this.applyThisLine(keyValue + 1, keyValue, configModel);
- // iterate through columns and add them if control exists
- angular.forEach(lineValue, function (colValue, colIndex) {
- // push an empty control model but relative to dradrop : model control type - (if datepicker so additionnal properties are added)
- var controlToBind = {
- control: angular.copy(_this.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(lineValue.length, _this.getFormlyDetailedControlModelFromDragDropObject(lineValue[colIndex]).formlyType))
- };
- var formlyDetailedControlModel = _this.getFormlyDetailedControlModelFromDragDropObject(lineValue[colIndex]);
- // controls alreadys existed so do not reset it - control to bind is the previous one
- if (typeof colValue.key !== 'undefined') {
- //console.warn('debug dragdropModel show this control key : ' + colValue.key);
- controlToBind.control = angular.copy(colValue.configModelControl);
- //update cssClass depending new position:
- var newClassName = _this.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(lineValue.length, _this.getFormlyDetailedControlModelFromDragDropObject(lineValue[colIndex]).formlyType);
- controlToBind.control.className = newClassName.className;
- //test if header nee this one
- controlToBind.control.cssClass = newClassName.className;
- // get control details for this key in backup : previousConfigurationModel
- } else {
- // controls did not exists before : control to bind is a new one
- // bind dragdrop control properties to configuration model through controlToBind var
- _this.bindConfigCtrlModelFromFormlyDetailedCtrlModel(formlyDetailedControlModel, controlToBind, configModel);
- }
- // apply controlToBind var to configuration model control
- if (typeof configModel.lines[keyValue].columns[colIndex] === 'undefined') configModel.lines[keyValue].columns.push(angular.copy(_this.EasyFormGenFormlyBindingModels.getEasyFormConfigurationEmptyControlModel()));
- configModel.lines[keyValue].columns[colIndex].control = angular.copy(controlToBind.control);
- configModel.lines[keyValue].columns[colIndex].numColumn = colIndex + 1;
- configModel.lines[keyValue].columns[colIndex].exist = true;
- });
- });
- return configModel;
- }
- }, {
- key: 'refreshControlsKeys',
- value: function refreshControlsKeys(configModel, dragDropModel) {
- angular.forEach(configModel.lines, function (aConfigLine, aConfigLineIndex) {
- angular.forEach(aConfigLine.columns, function (aConfigControl, aConfigControlIndex) {
- //if last control removed from line - and dragDrop model did not already removed this line
- if (typeof dragDropModel[1][aConfigLineIndex] !== 'undefined') {
- if (dragDropModel[1][aConfigLineIndex].length > 0) {
- dragDropModel[1][aConfigLineIndex][aConfigControlIndex].key = aConfigControl.control.key;
- //need to save all in dragdropModel as it is a reference
- //configModel still needed
- // -> to keep coherence (same back model) between all version of easyForm Generator
- // -> is the back model (can be saved to dataBase)
- dragDropModel[1][aConfigLineIndex][aConfigControlIndex].configModelControl = angular.copy(aConfigControl.control);
- }
- }
- });
- });
- }
-
- /**
- * drag drop model
- * -> will be used to bind configuration model
- * of no key saved, configuration model controls would be reset each drop events
- *
- * -> matching key : will prevent to reset existing control
- */
- }, {
- key: 'loadDragDropModelFromConfigurationModel',
- value: function loadDragDropModelFromConfigurationModel(configModel, dragDropModel) {
- var _this2 = this;
-
- //reset dragdrop fields model NOT all dragDropModel!
- dragDropModel[1] = [];
- angular.forEach(configModel.lines, function (aConfigLine, aConfigLineIndex) {
- //add new line
- dragDropModel[1].push([]);
- angular.forEach(aConfigLine.columns, function (aConfigControl) {
- // get control type from configuration.control.selectedControl
- var dragdropControlRef = {
- control: 'empty',
- cssClass: 'col-xs-12',
- label: ''
- };
- angular.forEach(dragDropModel[0], function (groupOfCtrlRef) {
- angular.forEach(groupOfCtrlRef, function (aCtrlref) {
- if (aCtrlref.control === aConfigControl.control.selectedControl) dragdropControlRef = angular.copy(aCtrlref);
- });
- });
- dragDropModel[1][aConfigLineIndex].push(dragdropControlRef);
- //update class depending number of control per line
- var cssClassToApply = _this2.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(dragDropModel[1][aConfigLineIndex].length);
- angular.forEach(dragDropModel[1][aConfigLineIndex], function (ddControlToUpdate) {
- return ddControlToUpdate.cssClass = cssClassToApply;
- });
- });
- });
- // console.info('bindDragDropModelFromConfigurationModel');
- // console.dir(
- // {
- // 'when' : 'starting',
- // 'configModel is ' : angular.copy(configModel),
- // 'dragDropModel is ' : angular.copy(dragDropModel)
- // }
- // );
- }
-
- /**
- * returns a control model that is more formly detailed
- * (more formly detailed : see controls property in EasyFormGenFormlyBindingModels._easyFormListControls)
- */
- }, {
- key: 'getFormlyDetailedControlModelFromDragDropObject',
- value: function getFormlyDetailedControlModelFromDragDropObject(dragDrapCtrlModel) {
- var controlModel = {};
- var listControl = this.EasyFormGenFormlyBindingModels.getEasyFormListControls();
- var controlsListGetter = this.$parse('controls');
-
- angular.forEach(controlsListGetter(listControl), function (ctrlListValue) {
- if (ctrlListValue.id === dragDrapCtrlModel.control) controlModel = ctrlListValue;
- });
- return controlModel;
- }
-
- /**
- * valid a control key is unique
- *
- * yes... function name already told us that,
- * -> it's just confirmation and to see if
- * you keep focus while reading it ^^
- */
- }, {
- key: 'validKeyUniqueness',
- value: function validKeyUniqueness(thisKey, configurationObj) {
- var isUnique = true;
- for (var i = configurationObj.lines.length - 1; i >= 0; i--) {
- for (var j = configurationObj.lines[i].columns.length - 1; j >= 0; j--) {
- if (typeof configurationObj.lines[i].columns[j].control !== 'undefined') {
- if (configurationObj.lines[i].columns[j].control.key === thisKey) {
- isUnique = false;
- }
- }
- }
- }
- return isUnique;
- }
- }, {
- key: 'createUniqueKey',
- value: function createUniqueKey(baseKeyValue, configurationObj) {
- // unique key (set only first time) in this model is formly control type + Date.now();
- var newKey = baseKeyValue + '-' + Date.now();
- if (this.validKeyUniqueness(newKey, configurationObj) === true) {
- return newKey;
- } else {
- newKey = baseKeyValue + '-' + Date.now();
- if (this.validKeyUniqueness(newKey, configurationObj) === true) {
- return newKey;
- } else {
- newKey = baseKeyValue + '-' + Date.now();
- return newKey;
- }
- }
- }
- }, {
- key: 'applyThisLine',
- value: function applyThisLine(linevalue, lineIndex, configModel) {
- angular.forEach(configModel.lines, function (aLineValue, aLineKey) {
- if (aLineKey === lineIndex) aLineValue.line = linevalue;
- });
- }
-
- /**
- * bind formly detailed model to configuration control model
- */
- }, {
- key: 'bindConfigCtrlModelFromFormlyDetailedCtrlModel',
- value: function bindConfigCtrlModelFromFormlyDetailedCtrlModel(formlyDetailCtrlModel, configurationCtrlModel, configModel) {
- /**
- * TODO :properties should be served by provider
- * more configurable without pain
- */
- //set selected control :
- this.$parse('control.selectedControl').assign(configurationCtrlModel, this.$parse('selectedControl')(formlyDetailCtrlModel));
- //set type :
- this.$parse('control.type').assign(configurationCtrlModel, this.$parse('formlyType')(formlyDetailCtrlModel));
- //set key :
- this.$parse('control.key').assign(configurationCtrlModel, this.createUniqueKey(this.$parse('control.type')(configurationCtrlModel), configModel));
- //set subtype :
- this.$parse('control.subtype').assign(configurationCtrlModel, this.$parse('formlySubtype')(formlyDetailCtrlModel));
- //set templateOptions.label :
- this.$parse('control.templateOptions.label').assign(configurationCtrlModel, this.$parse('formlyLabel')(formlyDetailCtrlModel));
- //set templateOptions.required :
- this.$parse('control.templateOptions.required').assign(configurationCtrlModel, this.$parse('formlyRequired')(formlyDetailCtrlModel));
- //set templateOptions.required :
- this.$parse('control.templateOptions.description').assign(configurationCtrlModel, this.$parse('formlyDesciption')(formlyDetailCtrlModel));
- //set templateOptions.required :
- this.$parse('control.templateOptions.placeholder').assign(configurationCtrlModel, this.$parse('formlyPlaceholder')(formlyDetailCtrlModel));
- //set templateOptions.required :
- this.$parse('control.templateOptions.options').assign(configurationCtrlModel, this.$parse('formlyOptions')(formlyDetailCtrlModel));
-
- if (this.$parse('control.type')(configurationCtrlModel) === 'datepicker') {
- this.$parse('control.templateOptions.datepickerPopup').assign(configurationCtrlModel, this.$parse('datepickerPopup')(formlyDetailCtrlModel));
- }
- }
- }]);
-
- return ddModelConfModelProxyService;
- })();
-
- ddModelConfModelProxyService.$inject = ['EasyFormGenFormlyBindingModels',
- // 'controllerModalProxy',
- // 'dragDropConfig',
- 'easyFormDragWayConfig', '$parse'];
-
- _export('default', ddModelConfModelProxyService);
-
- _export('DRAG_DROP_CONFIG_PROXY_SERVICE', DRAG_DROP_CONFIG_PROXY_SERVICE);
- }
- };
-});
-// dragDropConfig,
-$__System.register('41', ['40'], function (_export) {
- 'use strict';
-
- var ddModelConfModelProxyService, DRAG_DROP_CONFIG_PROXY_SERVICE, EDA_CONFIG_PROXY_MODULE;
- return {
- setters: [function (_) {
- ddModelConfModelProxyService = _['default'];
- DRAG_DROP_CONFIG_PROXY_SERVICE = _.DRAG_DROP_CONFIG_PROXY_SERVICE;
- }],
- execute: function () {
- EDA_CONFIG_PROXY_MODULE = 'eda.config.proxy.module';
-
- _export('default', angular.module(EDA_CONFIG_PROXY_MODULE, []).service(DRAG_DROP_CONFIG_PROXY_SERVICE, ddModelConfModelProxyService));
- }
- };
-});
-$__System.register('42', [], function (_export) {
- 'use strict';
-
- var DNDLIST_DIRECTIVE, TO_INJECT;
-
- function dndList($parse, $timeout, dndDropEffectWorkaround, dndDragTypeWorkaround) {
- var directive = {
- link: linkFct
- };
- return directive;
-
- function linkFct(scope, element, attr) {
- // While an element is dragged over the list, this placeholder element is inserted
- // at the location where the element would be inserted after dropping
- var placeholder = angular.element('');
- var placeholderNode = placeholder[0];
- var listNode = element[0];
- var horizontal = attr.dndHorizontalList && scope.$eval(attr.dndHorizontalList);
- var externalSources = attr.dndExternalSources && scope.$eval(attr.dndExternalSources);
-
- /**
- * The dragover event is triggered "every few hundred milliseconds" while an element
- * is being dragged over our list, or over an child element.
- */
- element.on('dragover', function (event) {
- event = event.originalEvent || event;
- if (!isDropAllowed(event)) return true;
- // First of all, make sure that the placeholder is shown
- // This is especially important if the list is empty
- if (placeholderNode.parentNode != listNode) {
- element.append(placeholder);
- }
- if (event.target !== listNode) {
- // Try to find the node direct directly below the list node.
- var listItemNode = event.target;
- while (listItemNode.parentNode !== listNode && listItemNode.parentNode) {
- listItemNode = listItemNode.parentNode;
- }
- if (listItemNode.parentNode === listNode && listItemNode !== placeholderNode) {
- // If the mouse pointer is in the upper half of the child element,
- // we place it before the child element, otherwise below it.
- if (isMouseInFirstHalf(event, listItemNode)) {
- listNode.insertBefore(placeholderNode, listItemNode);
- } else {
- listNode.insertBefore(placeholderNode, listItemNode.nextSibling);
- }
- }
- } else {
- // This branch is reached when we are dragging directly over the list element.
- // Usually we wouldn't need to do anything here, but the IE does not fire it's
- // events for the child element, only for the list directly. Therefore we repeat
- // the positioning algorithm for IE here.
- if (isMouseInFirstHalf(event, placeholderNode, true)) {
- // Check if we should move the placeholder element one spot towards the top.
- // Note that display none elements will have offsetTop and offsetHeight set to
- // zero, therefore we need a special check for them.
- while (placeholderNode.previousElementSibling && (isMouseInFirstHalf(event, placeholderNode.previousElementSibling, true) || placeholderNode.previousElementSibling.offsetHeight === 0)) {
- listNode.insertBefore(placeholderNode, placeholderNode.previousElementSibling);
- }
- } else {
- // Check if we should move the placeholder element one spot towards the bottom
- while (placeholderNode.nextElementSibling && !isMouseInFirstHalf(event, placeholderNode.nextElementSibling, true)) {
- listNode.insertBefore(placeholderNode, placeholderNode.nextElementSibling.nextElementSibling);
- }
- }
- }
-
- // At this point we invoke the callback, which still can disallow the drop.
- // We can't do this earlier because we want to pass the index of the placeholder.
- if (attr.dndDragover && !invokeCallback(attr.dndDragover, event)) {
- return stopDragover();
- }
- element.addClass('dndDragover');
- event.preventDefault();
- event.stopPropagation();
- return false;
- });
-
- /**
- * When the element is dropped, we use the position of the placeholder element as the
- * position where we insert the transferred data. This assumes that the list has exactly
- * one child element per array element.
- */
- element.on('drop', function (event) {
- event = event.originalEvent || event;
- if (!isDropAllowed(event)) return true;
- // The default behavior in Firefox is to interpret the dropped element as URL and
- // forward to it. We want to prevent that even if our drop is aborted.
- event.preventDefault();
- // Unserialize the data that was serialized in dragstart. According to the HTML5 specs,
- // the "Text" drag type will be converted to text/plain, but IE does not do that.
- var data = event.dataTransfer.getData('Text') || event.dataTransfer.getData('text/plain');
- var transferredObject;
- try {
- transferredObject = JSON.parse(data);
- } catch (e) {
- return stopDragover();
- }
- // Invoke the callback, which can transform the transferredObject and even abort the drop.
- if (attr.dndDrop) {
- transferredObject = invokeCallback(attr.dndDrop, event, transferredObject);
- if (!transferredObject) {
- return stopDragover();
- }
- }
- // Retrieve the JSON array and insert the transferred object into it.
- var targetArray = scope.$eval(attr.dndList);
- scope.$apply(function () {
- targetArray.splice(getPlaceholderIndex(), 0, transferredObject);
- });
- // In Chrome on Windows the dropEffect will always be none...
- // We have to determine the actual effect manually from the allowed effects
- if (event.dataTransfer.dropEffect === 'none') {
- if (event.dataTransfer.effectAllowed === 'copy' || event.dataTransfer.effectAllowed === 'move') {
- dndDropEffectWorkaround.dropEffect = event.dataTransfer.effectAllowed;
- } else {
- dndDropEffectWorkaround.dropEffect = event.ctrlKey ? 'copy' : 'move';
- }
- } else {
- dndDropEffectWorkaround.dropEffect = event.dataTransfer.dropEffect;
- }
- // Clean up
- stopDragover();
- event.stopPropagation();
- return false;
- });
-
- /**
- * We have to remove the placeholder when the element is no longer dragged over our list. The
- * problem is that the dragleave event is not only fired when the element leaves our list,
- * but also when it leaves a child element -- so practically it's fired all the time. As a
- * workaround we wait a few milliseconds and then check if the dndDragover class was added
- * again. If it is there, dragover must have been called in the meantime, i.e. the element
- * is still dragging over the list. If you know a better way of doing this, please tell me!
- */
- element.on('dragleave', function (event) {
- event = event.originalEvent || event;
-
- element.removeClass('dndDragover');
- $timeout(function () {
- if (!element.hasClass('dndDragover')) {
- placeholder.remove();
- }
- }, 100);
- });
-
- /**
- * Checks whether the mouse pointer is in the first half of the given target element.
- *
- * In Chrome we can just use offsetY, but in Firefox we have to use layerY, which only
- * works if the child element has position relative. In IE the events are only triggered
- * on the listNode instead of the listNodeItem, therefore the mouse positions are
- * relative to the parent element of targetNode.
- */
- function isMouseInFirstHalf(event, targetNode, relativeToParent) {
- var mousePointer = horizontal ? event.offsetX || event.layerX : event.offsetY || event.layerY;
- var targetSize = horizontal ? targetNode.offsetWidth : targetNode.offsetHeight;
- var targetPosition = horizontal ? targetNode.offsetLeft : targetNode.offsetTop;
- targetPosition = relativeToParent ? targetPosition : 0;
- return mousePointer < targetPosition + targetSize / 2;
- }
-
- /**
- * We use the position of the placeholder node to determine at which position of the array the
- * object needs to be inserted
- */
- function getPlaceholderIndex() {
- return Array.prototype.indexOf.call(listNode.children, placeholderNode);
- }
-
- /**
- * Checks various conditions that must be fulfilled for a drop to be allowed
- */
- function isDropAllowed(event) {
- // Disallow drop from external source unless it's allowed explicitly.
- if (!dndDragTypeWorkaround.isDragging && !externalSources) return false;
- // Check mimetype. Usually we would use a custom drag type instead of Text, but IE doesn't
- // support that.
- if (!hasTextMimetype(event.dataTransfer.types)) return false;
- // Now check the dnd-allowed-types against the type of the incoming element. For drops from
- // external sources we don't know the type, so it will need to be checked via dnd-drop.
- if (attr.dndAllowedTypes && dndDragTypeWorkaround.isDragging) {
- var allowed = scope.$eval(attr.dndAllowedTypes);
- if (angular.isArray(allowed) && allowed.indexOf(dndDragTypeWorkaround.dragType) === -1) {
- return false;
- }
- }
- // Check whether droping is disabled completely
- if (attr.dndDisableIf && scope.$eval(attr.dndDisableIf)) return false;
- return true;
- }
-
- /**
- * Small helper function that cleans up if we aborted a drop.
- */
- function stopDragover() {
- placeholder.remove();
- element.removeClass('dndDragover');
- return true;
- }
-
- /**
- * Invokes a callback with some interesting parameters and returns the callbacks return value.
- */
- function invokeCallback(expression, event, item) {
- return $parse(expression)(scope, {
- event: event,
- index: getPlaceholderIndex(),
- item: item || undefined,
- external: !dndDragTypeWorkaround.isDragging,
- type: dndDragTypeWorkaround.isDragging ? dndDragTypeWorkaround.dragType : undefined
- });
- }
-
- /**
- * Check if the dataTransfer object contains a drag type that we can handle. In old versions
- * of IE the types collection will not even be there, so we just assume a drop is possible.
- */
- function hasTextMimetype(types) {
- if (!types) return true;
- for (var i = 0; i < types.length; i++) {
- if (types[i] === 'Text' || types[i] === 'text/plain') return true;
- }
- return false;
- }
- }
- }
-
- return {
- setters: [],
- execute: function () {
- DNDLIST_DIRECTIVE = 'dndList';
- TO_INJECT = ['$parse', '$timeout', 'dndDropEffectWorkaround', 'dndDragTypeWorkaround'];
-
- dndList.$inject = TO_INJECT;
-
- _export('default', dndList);
-
- _export('DNDLIST_DIRECTIVE', DNDLIST_DIRECTIVE);
- }
- };
-});
-$__System.register('43', [], function (_export) {
- 'use strict';
-
- var DNDDRAGGABLE_DIRECTIVE, TO_INJECT;
-
- function dndDraggable($parse, $timeout, dndDropEffectWorkaround, dndDragTypeWorkaround) {
- var directive = {
- link: linkFct
- };
- return directive;
-
- function linkFct(scope, element, attr) {
- var _this = this;
-
- // Set the HTML5 draggable attribute on the element
- element.attr('draggable', 'true');
-
- // If the dnd-disable-if attribute is set, we have to watch that
- if (attr.dndDisableIf) {
- scope.$watch(attr.dndDisableIf, function (disabled) {
- return element.attr('draggable', !disabled);
- });
- }
-
- /**
- * When the drag operation is started we have to prepare the dataTransfer object,
- * which is the primary way we communicate with the target element
- */
- element.on('dragstart', function (event) {
- event = event.originalEvent || event;
- // Serialize the data associated with this element. IE only supports the Text drag type
- event.dataTransfer.setData('Text', angular.toJson(scope.$eval(attr.dndDraggable)));
- // Only allow actions specified in dnd-effect-allowed attribute
- event.dataTransfer.effectAllowed = attr.dndEffectAllowed || 'move';
- // Add CSS classes. See documentation above
- element.addClass('dndDragging');
- $timeout(function () {
- element.addClass('dndDraggingSource');
- }, 0);
- // Workarounds for stupid browsers, see description below
- dndDropEffectWorkaround.dropEffect = 'none';
- dndDragTypeWorkaround.isDragging = true;
- // Save type of item in global state. Usually, this would go into the dataTransfer
- // typename, but we have to use "Text" there to support IE
- dndDragTypeWorkaround.dragType = attr.dndType ? scope.$eval(attr.dndType) : undefined;
- // Invoke callback
- $parse(attr.dndDragstart)(scope, { event: event });
- event.stopPropagation();
- });
-
- /**
- * The dragend event is triggered when the element was dropped or when the drag
- * operation was aborted (e.g. hit escape button). Depending on the executed action
- * we will invoke the callbacks specified with the dnd-moved or dnd-copied attribute.
- */
- element.on('dragend', function (event) {
- event = event.originalEvent || event;
-
- // Invoke callbacks. Usually we would use event.dataTransfer.dropEffect to determine
- // the used effect, but Chrome has not implemented that field correctly. On Windows
- // it always sets it to 'none', while Chrome on Linux sometimes sets it to something
- // else when it's supposed to send 'none' (drag operation aborted).
- var dropEffect = dndDropEffectWorkaround.dropEffect;
- scope.$apply(function () {
- switch (dropEffect) {
- case 'move':
- $parse(attr.dndMoved)(scope, { event: event });
- break;
-
- case 'copy':
- $parse(attr.dndCopied)(scope, { event: event });
- break;
- }
- });
-
- // Clean up
- element.removeClass('dndDragging');
- element.removeClass('dndDraggingSource');
- dndDragTypeWorkaround.isDragging = false;
- event.stopPropagation();
- });
-
- /**
- * When the element is clicked we invoke the callback function
- * specified with the dnd-selected attribute.
- */
- element.on('click', function (event) {
- event = event.originalEvent || event;
- scope.$apply(function () {
- return $parse(attr.dndSelected)(scope, { event: event });
- });
- event.stopPropagation();
- });
-
- /**
- * Workaround to make element draggable in IE9
- */
- element.on('selectstart', function () {
- if (_this.dragDrop) _this.dragDrop();
- return false;
- });
- }
- }
-
- return {
- setters: [],
- execute: function () {
- DNDDRAGGABLE_DIRECTIVE = 'dndDraggable';
- TO_INJECT = ['$parse', '$timeout', 'dndDropEffectWorkaround', 'dndDragTypeWorkaround'];
-
- dndDraggable.$inject = TO_INJECT;
-
- _export('default', dndDraggable);
-
- _export('DNDDRAGGABLE_DIRECTIVE', DNDDRAGGABLE_DIRECTIVE);
- }
- };
-});
-$__System.register('44', ['42', '43'], function (_export) {
- 'use strict';
-
- var dndList, DNDLIST_DIRECTIVE, dndDraggable, DNDDRAGGABLE_DIRECTIVE, DRAG_DROP_LIST_MODULE;
- return {
- setters: [function (_) {
- dndList = _['default'];
- DNDLIST_DIRECTIVE = _.DNDLIST_DIRECTIVE;
- }, function (_2) {
- dndDraggable = _2['default'];
- DNDDRAGGABLE_DIRECTIVE = _2.DNDDRAGGABLE_DIRECTIVE;
- }],
- execute: function () {
- DRAG_DROP_LIST_MODULE = 'dndLists.module';
-
- _export('default', angular.module(DRAG_DROP_LIST_MODULE, []).directive(DNDLIST_DIRECTIVE, dndList).directive(DNDDRAGGABLE_DIRECTIVE, dndDraggable).factory('dndDragTypeWorkaround', function () {
- return {};
- }).factory('dndDropEffectWorkaround', function () {
- return {};
- }));
- }
- };
-});
-$__System.register('45', [], function (_export) {
- 'use strict';
-
- var PAGE_SLIDE_DIRECTIVE;
-
- function pageslide() {
- var directive = {
- restrict: 'EAC',
- transclude: false,
- scope: {
- psOpen: '=?',
- psAutoClose: '=?',
- psSide: '@',
- psSpeed: '@',
- psClass: '@',
- psSize: '@',
- psSqueeze: '@',
- psCloak: '@',
- psPush: '@',
- psContainer: '@'
- },
- link: linkFct
- };
- return directive;
-
- function linkFct($scope, el, attrs) {
- /* Inspect */
- //console.log($scope);
- //console.log(el);
- //console.log(attrs);
-
- /* Parameters */
- var param = {};
-
- param.side = $scope.psSide || 'right';
- param.speed = $scope.psSpeed || '0.5';
- param.size = $scope.psSize || '300px';
- param.zindex = 1000; // Override with custom CSS
- param.className = $scope.psClass || 'ng-pageslide';
- param.cloak = $scope.psCloak && $scope.psCloak.toLowerCase() == 'false' ? false : true;
- param.squeeze = Boolean($scope.psSqueeze) || false;
- param.push = Boolean($scope.psPush) || false;
- param.container = $scope.psContainer || false;
-
- // Apply Class
- el.addClass(param.className);
-
- /* DOM manipulation */
- var content = null;
- var slider = null;
- var body = param.container ? document.getElementById(param.container) : document.body;
-
- slider = el[0];
-
- // Check for div tag
- if (slider.tagName.toLowerCase() !== 'div' && slider.tagName.toLowerCase() !== 'pageslide') throw new Error('Pageslide can only be applied to
or
elements');
-
- // Check for content
- if (slider.children.length === 0) throw new Error('You have to content inside the ');
-
- content = angular.element(slider.children);
-
- /* Append */
- body.appendChild(slider);
-
- /* Style setup */
- slider.style.zIndex = param.zindex;
- slider.style.position = param.container !== false ? 'absolute' : 'fixed';
- slider.style.width = 0;
- slider.style.height = 0;
- slider.style.overflow = 'hidden';
- slider.style.transitionDuration = param.speed + 's';
- slider.style.webkitTransitionDuration = param.speed + 's';
- slider.style.transitionProperty = 'width, height';
- if (param.squeeze) {
- body.style.position = 'absolute';
- body.style.transitionDuration = param.speed + 's';
- body.style.webkitTransitionDuration = param.speed + 's';
- body.style.transitionProperty = 'top, bottom, left, right';
- }
-
- switch (param.side) {
- case 'right':
- slider.style.height = attrs.psCustomHeight || '100%';
- slider.style.top = attrs.psCustomTop || '0px';
- slider.style.bottom = attrs.psCustomBottom || '0px';
- slider.style.right = attrs.psCustomRight || '0px';
- break;
- case 'left':
- slider.style.height = attrs.psCustomHeight || '100%';
- slider.style.top = attrs.psCustomTop || '0px';
- slider.style.bottom = attrs.psCustomBottom || '0px';
- slider.style.left = attrs.psCustomLeft || '0px';
- break;
- case 'top':
- slider.style.width = attrs.psCustomWidth || '100%';
- slider.style.left = attrs.psCustomLeft || '0px';
- slider.style.top = attrs.psCustomTop || '0px';
- slider.style.right = attrs.psCustomRight || '0px';
- break;
- case 'bottom':
- slider.style.width = attrs.psCustomWidth || '100%';
- slider.style.bottom = attrs.psCustomBottom || '0px';
- slider.style.left = attrs.psCustomLeft || '0px';
- slider.style.right = attrs.psCustomRight || '0px';
- break;
- }
-
- /* Closed */
- function psClose(slider, param) {
- if (slider && slider.style.width !== 0 && slider.style.width !== 0) {
- if (param.cloak) content.css('display', 'none');
- switch (param.side) {
- case 'right':
- slider.style.width = '0px';
- if (param.squeeze) body.style.right = '0px';
- if (param.push) {
- body.style.right = '0px';
- body.style.left = '0px';
- }
- break;
- case 'left':
- slider.style.width = '0px';
- if (param.squeeze) body.style.left = '0px';
- if (param.push) {
- body.style.left = '0px';
- body.style.right = '0px';
- }
- break;
- case 'top':
- slider.style.height = '0px';
- if (param.squeeze) body.style.top = '0px';
- if (param.push) {
- body.style.top = '0px';
- body.style.bottom = '0px';
- }
- break;
- case 'bottom':
- slider.style.height = '0px';
- if (param.squeeze) body.style.bottom = '0px';
- if (param.push) {
- body.style.bottom = '0px';
- body.style.top = '0px';
- }
- break;
- }
- }
- $scope.psOpen = false;
- }
-
- /* Open */
- function psOpen(slider, param) {
- if (slider.style.width !== 0 && slider.style.width !== 0) {
- switch (param.side) {
- case 'right':
- slider.style.width = param.size;
- if (param.squeeze) body.style.right = param.size;
- if (param.push) {
- body.style.right = param.size;
- body.style.left = '-' + param.size;
- }
- break;
- case 'left':
- slider.style.width = param.size;
- if (param.squeeze) body.style.left = param.size;
- if (param.push) {
- body.style.left = param.size;
- body.style.right = '-' + param.size;
- }
- break;
- case 'top':
- slider.style.height = param.size;
- if (param.squeeze) body.style.top = param.size;
- if (param.push) {
- body.style.top = param.size;
- body.style.bottom = '-' + param.size;
- }
- break;
- case 'bottom':
- slider.style.height = param.size;
- if (param.squeeze) body.style.bottom = param.size;
- if (param.push) {
- body.style.bottom = param.size;
- body.style.top = '-' + param.size;
- }
- break;
- }
- setTimeout(function () {
- if (param.cloak) content.css('display', 'block');
- }, param.speed * 1000);
- }
- }
-
- // function isFunction(functionToCheck) {
- // var getType = {};
- // return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
- // }
-
- /*
- * Watchers
- * */
-
- $scope.$watch('psOpen', function (value) {
- /* eslint no-extra-boolean-cast:0 */
- if (!!value) {
- // Open
- psOpen(slider, param);
- } else {
- // Close
- psClose(slider, param);
- }
- });
-
- /*
- * Events
- * */
-
- $scope.$on('$destroy', function () {
- return body.removeChild(slider);
- });
-
- if ($scope.psAutoClose) {
- $scope.$on('$locationChangeStart', function () {
- return psClose(slider, param);
- });
- $scope.$on('$stateChangeStart', function () {
- return psClose(slider, param);
- });
- }
- }
- }
-
- return {
- setters: [],
- execute: function () {
- PAGE_SLIDE_DIRECTIVE = 'pageslide';
- pageslide.$inject = [];
-
- _export('default', pageslide);
-
- _export('PAGE_SLIDE_DIRECTIVE', PAGE_SLIDE_DIRECTIVE);
- }
- };
-});
-$__System.register('46', ['45'], function (_export) {
- 'use strict';
-
- var pageslide, PAGE_SLIDE_DIRECTIVE, PAGE_SLIDE_MODULE;
- return {
- setters: [function (_) {
- pageslide = _['default'];
- PAGE_SLIDE_DIRECTIVE = _.PAGE_SLIDE_DIRECTIVE;
- }],
- execute: function () {
- PAGE_SLIDE_MODULE = 'pageslide.module';
-
- _export('default', angular.module(PAGE_SLIDE_MODULE, []).directive(PAGE_SLIDE_DIRECTIVE, pageslide));
- }
- };
-});
-$__System.register('47', [], function (_export) {
- 'use strict';
-
- var LIST_DRAG_DROP_ITEM_CSS_CLASSES, DRAG_DROP_CONFIG_MODEL, DRAG_DROP_PRESENTATION_MODEL, ITEMS_NOT_TO_COUNT_FOR_REAL;
- return {
- setters: [],
- execute: function () {
- LIST_DRAG_DROP_ITEM_CSS_CLASSES = [{
- cssClass: 'col-md-12',
- numberItemPerRow: 0
- }, {
- cssClass: 'col-md-12',
- numberItemPerRow: 1
- }, {
- cssClass: 'col-md-6',
- numberItemPerRow: 2
- }, {
- cssClass: 'col-md-4',
- numberItemPerRow: 3
- }];
- DRAG_DROP_CONFIG_MODEL = {
- dropZoneConfig: {
- decoration: [{
- WhenIndex: 0,
- ApplycssClass: 'col-md-4',
- fontAwesomeIcon: 'fa fa-level-up',
- title: 'Drag control from here : '
- }, {
- WhenIndex: 1,
- ApplycssClass: 'col-md-8',
- fontAwesomeIcon: 'fa fa-level-down',
- title: 'Drop control into here : '
- }],
- verboseMode: false
- },
- containerConfig: {
- decoration: [{
- WhenIndex: 0,
- ApplycssClass: 'col-md-12',
- title: 'Blank : ',
- groupId: 'blank',
- isCollapsed: true
- }, {
- WhenIndex: 1,
- ApplycssClass: 'col-md-12',
- title: 'Headers : ',
- groupId: 'headers',
- isCollapsed: true
- }, {
- WhenIndex: 2,
- ApplycssClass: 'col-md-12',
- title: 'Text inputs : ',
- groupId: 'inputs',
- isCollapsed: true
- }, {
- WhenIndex: 3,
- ApplycssClass: 'col-md-12',
- title: 'Textareas : ',
- groupId: 'textareas',
- isCollapsed: true
- }, {
- WhenIndex: 4,
- ApplycssClass: 'col-md-12',
- title: 'Radios : ',
- groupId: 'radios',
- isCollapsed: true
- }, {
- WhenIndex: 5,
- ApplycssClass: 'col-md-12',
- title: 'Checkboxes : ',
- groupId: 'checkboxes',
- isCollapsed: true
- }, {
- WhenIndex: 6,
- ApplycssClass: 'col-md-12',
- title: 'Selects : ',
- groupId: 'selects',
- isCollapsed: true
- }],
- verboseMode: false,
- collapseEnabled: true,
- collapseCtrl: [{
- atIndex: 0,
- collapse: true
- }, {
- atIndex: 1,
- collapse: true
- }]
- },
- itemConfig: {
- verboseMode: false
- }
- };
- DRAG_DROP_PRESENTATION_MODEL = [
- //1 column here is control selection column
- [], [
- //empty 1st line at initialisation
- []]];
- ITEMS_NOT_TO_COUNT_FOR_REAL = {
- //placeholder : '',
- itemBeingDragged: ''
- };
-
- _export('LIST_DRAG_DROP_ITEM_CSS_CLASSES', LIST_DRAG_DROP_ITEM_CSS_CLASSES);
-
- _export('DRAG_DROP_CONFIG_MODEL', DRAG_DROP_CONFIG_MODEL);
-
- _export('DRAG_DROP_PRESENTATION_MODEL', DRAG_DROP_PRESENTATION_MODEL);
-
- _export('ITEMS_NOT_TO_COUNT_FOR_REAL', ITEMS_NOT_TO_COUNT_FOR_REAL);
- }
- };
-});
-$__System.register('48', ['47'], function (_export) {
- // TODO : Add here configs from ES5 dragDropConfigProvider
-
- 'use strict';
-
- var LIST_DRAG_DROP_ITEM_CSS_CLASSES, DRAG_DROP_CONFIG_MODEL, DRAG_DROP_PRESENTATION_MODEL, ITEMS_NOT_TO_COUNT_FOR_REAL, EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME;
-
- function easyFormDragWayConfig() {
-
- var _listDragDropItemCssClasses = [].concat(LIST_DRAG_DROP_ITEM_CSS_CLASSES);
- var _dragDropConfigModel = angular.copy(DRAG_DROP_CONFIG_MODEL);
- var _dragDropPresentationModel = [].concat(DRAG_DROP_PRESENTATION_MODEL);
- var _itemsNotToCountFoReal = angular.copy(ITEMS_NOT_TO_COUNT_FOR_REAL);
-
- var _configuration = defaultConfig();
- var _controlsList = controlsList();
- // let _defaultLanguage = getDefaultLanguage();
- // let _currentLanguage = initDefaultLanguage();
- var _showPreviewPanel = getDefaultshowPreviewPanel();
- var _showPreviewModels = getDefaultShowPreviewModel();
- /* jshint validthis:true */
- this.$get = easyFormDragDropWayConfigGET;
- this.setModalAnimation = setModalAnimation;
- this.getModalAnimation = getModalAnimation;
- this.configuration = _configuration;
- this.getEnabledControls = getEnabledControls;
- this.disableControl = disableControl;
- this.enableControl = enableControl;
- // this.setLanguage = setLanguage;
- // this.getCurrentLanguage = getCurrentLanguage;
- this.showPreviewPanel = showPreviewPanel;
- this.showPreviewModels = showPreviewModels;
-
- this.setListItemCssClass = setListItemCssClass;
- this.getItemsNotTocount = getItemsNotTocount;
- this.setItemsNotTocount = setItemsNotTocount;
- this.addControlToDragDropPresentationModel = addControlToDragDropPresentationModel;
- this.getDragDropPresentationModel = getDragDropPresentationModel;
-
- function setListItemCssClass(fromConfig) {
- _listDragDropItemCssClasses = [].concat(fromConfig);
- }
-
- function getItemsNotTocount() {
- return _itemsNotToCountFoReal;
- }
-
- function setItemsNotTocount(fromConfig) {
- _itemsNotToCountFoReal = angular.copy(fromConfig);
- }
-
- //set default config
- function defaultConfig() {
- var _defaultConfiguration = {
- modalAnimated: false
- };
- return _defaultConfiguration;
- }
-
- function addControlToDragDropPresentationModel(controlToAdd, groupToAdd) {
- if (typeof controlToAdd !== 'undefined' && typeof groupToAdd !== 'undefined') {
- addToGroupControl(controlToAdd, groupToAdd);
- }
- }
-
- function getDragDropPresentationModel() {
- return _dragDropPresentationModel;
- }
-
- //show preview panel by default
- function getDefaultshowPreviewPanel() {
- return true;
- }
-
- //show preview data, fields models in preview panel
- function getDefaultShowPreviewModel() {
- return true;
- }
-
- // function getCurrentLanguage(){
- // return _currentLanguage;
- // }
-
- //list of controls
- function controlsList() {
- var controls = [{ name: 'empty', enabled: true }, { name: 'Header', enabled: true }, { name: 'Subtitle', enabled: true }, { name: 'TextInput', enabled: true }, { name: 'Password', enabled: true }, { name: 'Email', enabled: true }, { name: 'Date', enabled: true }, { name: 'Texarea', enabled: true }, { name: 'RichTextEditor', enabled: true }, { name: 'Radio', enabled: true }, { name: 'Checkbox', enabled: true }, { name: 'BasicSelect', enabled: true }, { name: 'GroupedSelect', enabled: true }];
- return controls;
- }
-
- function showPreviewPanel(wantToShow) {
- if (angular.isDefined(wantToShow)) {
- if (wantToShow === true) _showPreviewPanel = true;
- if (wantToShow === false) _showPreviewPanel = false;
- }
- }
-
- function showPreviewModels(wantToShow) {
- if (angular.isDefined(wantToShow)) {
- if (wantToShow === true) _showPreviewModels = true;
- if (wantToShow === false) _showPreviewModels = false;
- }
- }
-
- // //language : set default to english
- // function getDefaultLanguage(){
- // let lang = 'en';
- // return lang;
- // }
-
- // function setDefaultLanguage(){
- // _currentLanguage = _defaultLanguage;
- // $translateProvider.preferredLanguage(_currentLanguage);
- // return _currentLanguage;
- // }
-
- // function setLanguage(language){
- // if (angular.isString(language)) {
- // _currentLanguage = language;
- // $translateProvider.preferredLanguage(language);
- // }else{
- // setDefaultLanguage();
- // }
- // }
-
- // function initDefaultLanguage(){
- // $translateProvider.useSanitizeValueStrategy('escape'); //security : Enable escaping of HTML
- // $translateProvider.fallbackLanguage(_defaultLanguage); //fallback language to default language
- // $translateProvider.preferredLanguage(_defaultLanguage);
- // return _defaultLanguage;
- // }
-
- function getEnabledControls() {
- return _controlsList;
- }
-
- function disableControl(controlName) {
- if (angular.isString(controlName)) {
- angular.forEach(_controlsList, function (aControl) {
- if (aControl.name === controlName) aControl.enabled = false;
- });
- }
- }
-
- function enableControl(controlName) {
- if (angular.isString(controlName)) {
- angular.forEach(_controlsList, function (aControl) {
- if (aControl.name === controlName) aControl.enabled = true;
- });
- }
- }
-
- function setModalAnimation(flagConfig) {
- var valueToApply = flagConfig === true ? flagConfig : flagConfig === false ? flagConfig : _configuration.modalAnimated;
-
- _configuration.modalAnimated = valueToApply;
- }
-
- function getModalAnimation() {
- return _configuration.modalAnimated;
- }
-
- //$get implementation :
- // easyFormDragDropWayConfigGET.$inject = ['$translate'];
- // function easyFormDragDropWayConfigGET($translate){
- easyFormDragDropWayConfigGET.$inject = [];
- function easyFormDragDropWayConfigGET() {
-
- var service = {
- setModalAnimation: setModalAnimationFct,
- getModalAnimationValue: getModalAnimationValue,
- getListEnabledControl: getListEnabledControl,
- // setLanguage : switchLanguage,
- // getCurrentLanguage : getCurrentLanguage,
- isPreviewPanelVisible: isPreviewPanelVisible,
- arePreviewModelsVisible: arePreviewModelsVisible,
-
- getListItemCssClass: getListItemCssClass,
- getItemsNotToCount: getItemsNotToCount,
- getItemCssDependingNumberItemsInRow: getItemCssDependingNumberItemsInRow,
- getDistinctItemCssClass: getDistinctItemCssClass,
- getDragDropConfigModel: getDragDropConfigModel,
- getDragDropPresentationModel: getDragDropPresentationModel,
- setDragDropConfigContainerDecorationCollapse: setDragDropConfigContainerDecorationCollapse
- };
- return service;
-
- function getDragDropPresentationModel() {
- return _dragDropPresentationModel;
- }
-
- function setDragDropConfigContainerDecorationCollapse(dragDropConfigModel, indexValue, isCollapsedBool) {
- if (typeof indexValue !== 'undefined' && typeof isCollapsedBool !== 'undefined') {
- if (indexValue === parseInt(indexValue, 10)) {
- dragDropConfigModel.containerConfig.decoration[indexValue].isCollapsed = isCollapsedBool;
- }
- }
- return true;
- }
-
- function getDragDropConfigModel() {
- return _dragDropConfigModel;
- }
-
- function getDistinctItemCssClass() {
- var distinctCssClass = [];
- angular.forEach(_listDragDropItemCssClasses, function (valueRef) {
-
- var cssClassRef = valueRef.cssClass;
-
- if (distinctCssClass.length === 0) {
- distinctCssClass.push(cssClassRef);
- } else {
- var canAdd = true;
- angular.forEach(distinctCssClass, function (valueProc) {
- var cssClassProc = valueProc;
- if (cssClassRef === cssClassProc) {
- canAdd = false;
- }
- });
- if (canAdd) distinctCssClass.push(cssClassRef);
- }
- });
- return distinctCssClass;
- }
-
- function getItemCssDependingNumberItemsInRow(numberOfItems) {
- if (typeof numberOfItems !== 'undefined') {
- var classToReturn = '';
- for (var i = _listDragDropItemCssClasses.length - 1; i >= 0; i--) {
- if (_listDragDropItemCssClasses[i].numberItemPerRow === numberOfItems) {
- classToReturn = _listDragDropItemCssClasses[i].cssClass;
- }
- }
- return classToReturn;
- } else {
- return '';
- }
- }
-
- function getListItemCssClass() {
- return _listDragDropItemCssClasses;
- }
-
- function getItemsNotToCount() {
- return _itemsNotToCountFoReal;
- }
-
- function getModalAnimationValue() {
- return _configuration.modalAnimated;
- }
-
- function setModalAnimationFct(value) {
- setModalAnimation(value);
- }
-
- function getListEnabledControl() {
- return angular.copy(_controlsList);
- }
-
- // function switchLanguage(language){
- // if (angular.isString(language)) {
- // _currentLanguage = language;
- // $translate.use(language);
- // }else{
- // setDefaultLanguage();
- // }
- // }
-
- function isPreviewPanelVisible() {
- return _showPreviewPanel;
- }
-
- function arePreviewModelsVisible() {
- return _showPreviewModels;
- }
- }
-
- /**
- * addToGroupControl : add control to _dragDropPresentationModel
- * @param {[type]} thisControl : control to add
- * @param {[type]} thisGroup : groupId wher this control should be added
- *
- * NOTE : if _dragDropPresentationModel wrong initialized it will create list of group conforming to
- * configModel
- */
- function addToGroupControl(thisControl, thisGroup) {
- /**
- * search group if already exists
- */
- if (_dragDropPresentationModel[0].length > 0) {
- /**
- * case when _dragDropConfigModel.containerConfig.decoration.length is > to _dragDropPresentationModel[0].length
- *
- * for instance : initialization _dragDropPresentationModel[0] in between
- */
- if (_dragDropPresentationModel[0].length < _dragDropConfigModel.containerConfig.decoration.length) {
- var missingGroupNumber = _dragDropConfigModel.containerConfig.decoration.length - _dragDropPresentationModel[0].length;
-
- for (var i = 0; i < missingGroupNumber; i++) {
- _dragDropPresentationModel[0].push([]);
- }
- }
- /**
- * push control to right index
- * (deduced by _dragDropConfigModel.containerConfig.decoration.WhenIndex value for groupId === thisGroup)
- */
- _dragDropConfigModel.containerConfig.decoration.forEach(function (groupConfig) {
- if (thisGroup.addToGroupCtrl === groupConfig.groupId) {
- _dragDropPresentationModel[0][groupConfig.WhenIndex].push(thisControl);
- }
- });
- } else {
- /**
- * no group no control
- *
- * initialize _dragDropConfigModel.containerConfig.decoration list
- */
- _dragDropConfigModel.containerConfig.decoration.forEach(function () {
- return _dragDropPresentationModel[0].push([]);
- });
- /**
- * push control to right index
- * (deduced by _dragDropConfigModel.containerConfig.decoration.WhenIndex value for groupId === thisGroup)
- */
- _dragDropConfigModel.containerConfig.decoration.forEach(function (groupConfig) {
- if (thisGroup.addToGroupCtrl === groupConfig.groupId) {
- _dragDropPresentationModel[0][groupConfig.WhenIndex].push(thisControl);
- }
- });
- }
- }
- }
-
- // easyFormDragWayConfig.$inject = ['$translateProvider'];
-
- return {
- setters: [function (_) {
- LIST_DRAG_DROP_ITEM_CSS_CLASSES = _.LIST_DRAG_DROP_ITEM_CSS_CLASSES;
- DRAG_DROP_CONFIG_MODEL = _.DRAG_DROP_CONFIG_MODEL;
- DRAG_DROP_PRESENTATION_MODEL = _.DRAG_DROP_PRESENTATION_MODEL;
- ITEMS_NOT_TO_COUNT_FOR_REAL = _.ITEMS_NOT_TO_COUNT_FOR_REAL;
- }],
- execute: function () {
- EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME = 'easyFormDragWayConfig';
- easyFormDragWayConfig.$inject = [];
-
- _export('default', easyFormDragWayConfig);
-
- _export('EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME', EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME);
- }
- };
-});
-$__System.registerDynamic("49", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "\n \n
\n
\n \n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
2\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdnd-dragover=\"vm.dragoverCallbackItems($parent.$parent.$index, $parent.$index, $index, external);\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdnd-drop=\"vm.dropCallbackItems(event, index, $index,$parent.$index, $parent.$parent.$index, $parent.$parent.$parent.$index, item, external, type, 'itemType');\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"itemlist\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdd-content-counter\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdd-value-when-placeholder=\"dndPlaceholder\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdd-value-when-dragging=\"dndDraggingSource\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdd-full-model = \"vm.dragDropModel\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdd-content-counter-current-index=\"{{$index}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdd-content-counter-parent-index=\"{{$parent.$index}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdd-content-counter-force-css-refresh = \"command.forceRefresh\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\tCustomize form buttons\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\tDATA MODEL\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t{{vm.model | json}}\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\tFIELDS MODEL (ready to save to database one)\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t{{vm.wfFormFieldsOnlyNeededProperties | json}}\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\tSave this form\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\tsave this form\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t\t
\n\t\t\t
\n \n Easy form generator : {{vm.easyFormGeneratorVERSION}} — Erwan DATIN (MacKentoch)\n \n\t\t\t \n
\n
\n \n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("4a", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- var $Object = Object;
- module.exports = {
- create: $Object.create,
- getProto: $Object.getPrototypeOf,
- isEnum: {}.propertyIsEnumerable,
- getDesc: $Object.getOwnPropertyDescriptor,
- setDesc: $Object.defineProperty,
- setDescs: $Object.defineProperties,
- getKeys: $Object.keys,
- getNames: $Object.getOwnPropertyNames,
- getSymbols: $Object.getOwnPropertySymbols,
- each: [].forEach
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("4b", ["4a"], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- var $ = $__require('4a');
- module.exports = function defineProperty(it, key, desc) {
- return $.setDesc(it, key, desc);
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("4c", ["4b"], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = {
- "default": $__require('4b'),
- __esModule: true
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("9", ["4c"], true, function($__require, exports, module) {
- "use strict";
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- var _Object$defineProperty = $__require('4c')["default"];
- exports["default"] = (function() {
- function defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor)
- descriptor.writable = true;
- _Object$defineProperty(target, descriptor.key, descriptor);
- }
- }
- return function(Constructor, protoProps, staticProps) {
- if (protoProps)
- defineProperties(Constructor.prototype, protoProps);
- if (staticProps)
- defineProperties(Constructor, staticProps);
- return Constructor;
- };
- })();
- exports.__esModule = true;
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("a", [], true, function($__require, exports, module) {
- "use strict";
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- exports["default"] = function(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
- };
- exports.__esModule = true;
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('4d', [], function (_export) {
- /* global angular */
- 'use strict';
-
- var DEBUG_MODEL, initDebugModel, DEFAULT_TAB_MODEL, initTabModel, COLUMN_TEMPLATE, initColumnTemplate, LINE_TEMPLATE, initLineTemplate, DEFAULT_IHM_MODEL, initIhmModel;
- return {
- setters: [],
- execute: function () {
- DEBUG_MODEL = {
- showDebug: false,
- configurationModelNumberofLines: 1
- };
-
- initDebugModel = function initDebugModel() {
- return angular.copy(DEBUG_MODEL);
- };
-
- DEFAULT_TAB_MODEL = {
- editTab: {
- active: true
- },
- previewTab: {
- active: false,
- tabVisible: true,
- modelsVisible: true
- }
- };
-
- initTabModel = function initTabModel(isPreviewPanelVisible, arePreviewModelsVisible) {
- var _tabModel = angular.copy(DEFAULT_TAB_MODEL);
- angular.extend(_tabModel.previewTab, {
- tabVisible: isPreviewPanelVisible,
- modelsVisible: arePreviewModelsVisible
- });
- return _tabModel;
- };
-
- COLUMN_TEMPLATE = {
- numColumn: -1,
- exist: true,
- control: {
- type: 'none',
- key: 'none',
- subtype: 'none'
- // templateOptions: {
- // label: 'none',
- // placeholder: 'none',
- // required: false,
- // description: 'Descriptive text'
- // }
- }
- };
-
- initColumnTemplate = function initColumnTemplate() {
- return angular.copy(COLUMN_TEMPLATE);
- };
-
- LINE_TEMPLATE = {
- line: -1,
- activeColumn: 1,
- columns: [{
- numColumn: 1,
- exist: true,
- control: {
- type: 'none',
- key: 'none'
- // templateOptions: {
- // label: 'none',
- // placeholder: 'none',
- // required: false,
- // description: 'Descriptive text'
- // }
- }
- }]
- };
-
- initLineTemplate = function initLineTemplate() {
- return angular.copy(LINE_TEMPLATE);
- };
-
- DEFAULT_IHM_MODEL = {
- preview: {
- formlyModelViewExpanded: true,
- formlyFieldsViewExpanded: true,
- customizeFormButtonsExpanded: true,
- saveThisFormExpanded: true
- }
- };
-
- initIhmModel = function initIhmModel() {
- return angular.copy(DEFAULT_IHM_MODEL);
- };
-
- _export('initDebugModel', initDebugModel);
-
- _export('initTabModel', initTabModel);
-
- _export('initColumnTemplate', initColumnTemplate);
-
- _export('initLineTemplate', initLineTemplate);
-
- _export('initIhmModel', initIhmModel);
- }
- };
-});
-$__System.register('4e', ['9', 'a', '4d'], function (_export) {
- var _createClass, _classCallCheck, initTabModel, initIhmModel, DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER, DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS, edaDragDropWayEasyFormGenCtrl;
-
- return {
- setters: [function (_) {
- _createClass = _['default'];
- }, function (_a) {
- _classCallCheck = _a['default'];
- }, function (_d) {
- initTabModel = _d.initTabModel;
- initIhmModel = _d.initIhmModel;
- }],
- execute: function () {
- /* global angular */
-
- ///////////////////////////////////////////////////////////////////////
- // TODO :
- // - check no use methods that come from step way and delete if not needed
- // - check other TODO (a lot of fixes are needed)
- ///////////////////////////////////////////////////////////////////////
-
- 'use strict';
-
- DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER = 'edaDragDropWayEasyFormGenCtrl';
- DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS = 'vm';
-
- edaDragDropWayEasyFormGenCtrl = (function () {
- function edaDragDropWayEasyFormGenCtrl($scope, easyFormGenVersion, $filter, $anchorScroll, toaster, $timeout, $modal, $log, formFieldManage, controllerModalProxy, dragDropItemDecorationService,
- // dragDropConfig,
- ddModelConfModelProxyService, ddItemRightClickedManager, easyFormDragWayConfig) {
- _classCallCheck(this, edaDragDropWayEasyFormGenCtrl);
-
- this.$scope = $scope;
- this.easyFormGenVersion = easyFormGenVersion;
- this.$filter = $filter;
- this.$anchorScroll = $anchorScroll;
- this.toaster = toaster;
- this.$timeout = $timeout;
- this.$modal = $modal;
- this.$log = $log;
- this.formFieldManage = formFieldManage;
- this.controllerModalProxy = controllerModalProxy;
- this.dragDropItemDecorationService = dragDropItemDecorationService;
- // this.dragDropConfig = dragDropConfig;
- this.ddModelConfModelProxyService = ddModelConfModelProxyService;
- this.ddItemRightClickedManager = ddItemRightClickedManager;
- this.easyFormDragWayConfig = easyFormDragWayConfig;
-
- this.init();
- }
-
- _createClass(edaDragDropWayEasyFormGenCtrl, [{
- key: 'init',
- value: function init() {
- this.easyFormGeneratorVERSION = this.easyFormGenVersion;
- this.tab = initTabModel(this.easyFormDragWayConfig.isPreviewPanelVisible(), this.easyFormDragWayConfig.arePreviewModelsVisible());
- this.returnSaveEvent = false;
- this.dataModel = {}; //was vm.model in ES5 version
- this.wfFormFields = [];
- this.wfFormFieldsOnlyNeededProperties = [];
- this.ihm = initIhmModel();
- this.easyFormDragDropProperties = this.easyFormDragWayConfig.getDragDropConfigModel();
- this.dragDropModel = [].concat(this.easyFormDragWayConfig.getDragDropPresentationModel());
- this.numberOfColumns = 1;
- this.MaxNumberOfColumns = 3;
- this.MinNumberOfColumns = 1;
- this.configuration = {};
- this.animationsEnabled = this.easyFormDragWayConfig.getModalAnimationValue();
- this.editPanelModel = { toggle: false };
- this.debugProxyModel = this.controllerModalProxy.ProxyModel;
- this.model = [];
-
- this.formFieldManage.initConfigurationEditFromScratch(this.configuration, false);
- this.controllerModalProxy.initProxyModel();
- }
- }, {
- key: 'collapseAllGroupControl',
- value: function collapseAllGroupControl(allExceptThisGroupIndex) {
- var _this = this;
-
- angular.forEach(this.easyFormDragDropProperties.containerConfig.decoration, function (value) {
- if (value.WhenIndex !== allExceptThisGroupIndex) _this.easyFormDragWayConfig.setDragDropConfigContainerDecorationCollapse(_this.easyFormDragDropProperties, value.WhenIndex, true);
- });
- }
- }, {
- key: 'onSubmit',
- value: function onSubmit() {
- this.toaster.pop({
- type: 'info',
- timeout: 2000,
- title: 'should save data model if it were not a static example',
- body: 'data :' + this.$filter('json')(this.dataModel, 4),
- showCloseButton: true
- });
- }
- }, {
- key: 'resetToZeroModel',
- value: function resetToZeroModel() {
- this.configuration.activeLine = 1;
- if (this.configuration.lines.length > 1) this.configuration.lines.splice(1, this.configuration.lines.length - 2);
- return this.countConfigurationModelLines();
- }
-
- //TO CHECK if does not come from step way :
- }, {
- key: 'countConfigurationModelLines',
- value: function countConfigurationModelLines() {
- return this.configuration.lines.length;
- }
-
- // //TO CHECK THEN TO DELETE : should come from step way...
- // setActiveLineNumber(lineNumber){
- // if (lineNumber <= this.countConfigurationModelLines()) this.configuration.activeLine = lineNumber;
- // }
-
- // //TO CHECK THEN TO DELETE : should come from step way...
- // upThisLine(indexLine){
- // if (indexLine > -1) {
- // if (this.configuration.lines[indexLine - 1]) {
- // let currentLineObj = this.configuration.lines[indexLine];
- // this.configuration.lines.splice(indexLine , 1);
- // this.configuration.lines.splice((indexLine - 1), 0, currentLineObj);
- // this.configuration.activeLine = 1;
- // }
- // }
- //
- // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- // }
-
- // //TO CHECK THEN TO DELETE : should come from step way...
- // downThisLine(indexLine){
- // if (indexLine > -1) {
- // if (this.configuration.lines[indexLine + 1]) {
- // let currentLineObj = this.configuration.lines[indexLine];
- // this.configuration.lines.splice(indexLine , 1);
- // this.configuration.lines.splice((indexLine + 1), 0, currentLineObj);
- // this.configuration.activeLine = 1;
- // }
- // }
- // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- // }
-
- // //TO CHECK THEN TO DELETE : should come from step way...
- // removeThisLine(index){
- // if (index > -1) {
- // if (this.configuration.lines.length > 1) {
- // if (this.configuration.activeLine === index + 1) this.configuration.activeLine = 1;
- // this.configuration.lines.splice(index, 1);
- // }else{
- // this.$timeout(()=>{
- // this.toaster.pop({
- // type : 'warning',
- // title : 'Last line' ,
- // body : 'Can\'t delete the last line',
- // showCloseButton : true
- // });
- // }, 100);
- // }
- // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- // }
- // }
-
- // //TO CHECK THEN TO DELETE : should come from step way...
- // increaseNumberOfColumns(){
- // if (this.configuration.lines[this.configuration.activeLine -1].columns.length < this.MaxNumberOfColumns) {
- // let newNumberOfColumns = this.configuration.lines[this.configuration.activeLine -1].columns.push(initColumnTemplate());
- // this.configuration.lines[this.configuration.activeLine -1].columns[newNumberOfColumns - 1].numColumn = newNumberOfColumns;
- // }
- // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- // }
-
- // //TO CHECK THEN TO DELETE : should come from step way...
- // decreaseNumberOfColumns(indexLine, indexColumn){
- // if (this.configuration.lines[this.configuration.activeLine -1].columns.length > 1) {
- // this.configuration.lines[this.configuration.activeLine -1].columns.splice(this.configuration.lines[this.configuration.activeLine -1].columns.length -1, 1);
- // }
- // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- // }
-
- }, {
- key: 'saveThisForm',
- value: function saveThisForm() {
- if (typeof this.configuration.formName === 'undefined') {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: 'Form name is undefined',
- body: 'Form has not been saved.',
- showCloseButton: true
- });
- return false;
- }
- if (this.configuration.formName === '') {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: 'Form name is required',
- body: 'Form has not been saved.',
- showCloseButton: true
- });
- return false;
- }
- this.toaster.pop({
- type: 'wait',
- timeout: 10000,
- title: 'Form is being saved',
- body: 'Wait.',
- showCloseButton: true
- });
- this.toaster.clear();
- this.returnSaveEvent = true;
- return true;
- }
- }, {
- key: 'dragoverCallbackContainer',
- value: function dragoverCallbackContainer(parentparentIndex, parentIndex, index) {
- //prevent container in layout column to be drag to control select contianer
- if (index === 0) return false;
- return true;
- }
- }, {
- key: 'dropCallback',
- value: function dropCallback(event, index, item, external, type, allowedType) {
- var _this2 = this;
-
- if (external) {
- if (allowedType === 'itemType' && !item.label) return false;
- if (allowedType === 'containerType' && !angular.isArray(item)) return false;
- }
- //set a timeout befire binding since ddModel may not be called when already full updated
- var timerRefreshDDToConfig = this.$timeout(function () {
- _this2.configuration = angular.copy(_this2.ddModelConfModelProxyService.refreshAllConfigurationFromDragAndDropModel(_this2.configuration, _this2.dragDropModel));
- _this2.formFieldManage.applyConfigurationToformlyModel(_this2.configuration, _this2.wfFormFields, _this2.dataModel);
- _this2.wfFormFieldsOnlyNeededProperties = angular.copy(_this2.wfFormFields);
- _this2.ddModelConfModelProxyService.refreshControlsKeys(_this2.configuration, _this2.dragDropModel);
- }, 200);
- this.$scope.$on('$destroy', function () {
- return _this2.$timeout.cancel(timerRefreshDDToConfig);
- });
- return item;
- }
- }, {
- key: 'dndItemMoved',
- value: function dndItemMoved(parentParentIndex, parentIndex, itemIndex) {
- //prevent item from first container to disapear when dropped on other container
- if (parentParentIndex > 0) this.dragDropModel[parentParentIndex][parentIndex].splice(itemIndex, 1);
- }
- }, {
- key: 'dragoverCallbackItems',
- value: function dragoverCallbackItems(ParentParentIndex, parentIndex) {
- //prevent items in layout column to be drag to control select
- if (parentIndex === 0) return false;
- return true;
- }
-
- //TODO : will replace in html : dnd-disable-if="items.length > 2"
- }, {
- key: 'disableItemDropIf',
- value: function disableItemDropIf() {}
- }, {
- key: 'dropCallbackItems',
- value: function dropCallbackItems(event, index, realIndex, parentIndex, parentParentIndex, parentParentParentIndex, item, external, type, allowedType) {
- var _this3 = this;
-
- if (external) {
- if (allowedType === 'itemType' && !item.label) return false;
- if (allowedType === 'containerType' && !angular.isArray(item)) return false;
- }
- //set a timeout before binding since ddModel may not be called when already full updated
- var timerRefreshDDToConfig = this.$timeout(function () {
- _this3.configuration = angular.copy(_this3.ddModelConfModelProxyService.refreshAllConfigurationFromDragAndDropModel(_this3.configuration, _this3.dragDropModel));
- _this3.formFieldManage.applyConfigurationToformlyModel(_this3.configuration, _this3.wfFormFields, _this3.dataModel);
- _this3.wfFormFieldsOnlyNeededProperties = angular.copy(_this3.wfFormFields);
- // refresh controls key in dragDrop Model to persist already exists controls between refreshes when item drop events
- _this3.ddModelConfModelProxyService.refreshControlsKeys(_this3.configuration, _this3.dragDropModel);
- }, 200);
- // add/set rightCliked property to false (will help edaRightClick directive)
- this.ddItemRightClickedManager.setUnRightClicked(item);
- // timerRefreshDDToConfig timer destruction
- this.$scope.$on('$destroy', function () {
- return _this3.$timeout.cancel(timerRefreshDDToConfig);
- });
- return item;
- }
- }, {
- key: 'saveFromEditPanel',
- value: function saveFromEditPanel() {
- /**
- * TODO :
- * should be called from edit panel
- *
- * AND
- *
- * should call all these methods
- *
- * need to get :
- *
- * - line index
- * - column index
- * - basicSelectRowCollection (from edpitpanelcontroller) --> maybe in controllerModalProxy service
- * - groupedSelectRowCollection (from edpitpanelcontroller) --> maybe in controllerModalProxy service
- * - radioRowCollection (from edpitpanelcontroller) --> maybe in controllerModalProxy service
- */
- this.controllerModalProxy.bindSpecialCtrlTemporyModelsToProxyModel();
- //save config to control
- //controllerModalProxy.applyConfigToSelectedControl(self.proxyModel);
- //return current model to parent controller :
-
- //update configuration model and formly model
- this.controllerModalProxy.bindConfigurationModelFromProxyModel(this.controllerModalProxy.getEditPanelModelLineIndex(), this.controllerModalProxy.getEditPanelModelColumnIndex(), this.configuration);
- this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- this.ddModelConfModelProxyService.refreshControlsKeys(this.configuration, this.dragDropModel);
- this.controllerModalProxy.setEditPanelModelToggle(false);
- this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();
- this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel);
- }
- }, {
- key: 'closeEditPanel',
- value: function closeEditPanel() {
- // reset all rightClicked control properties to false
- this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel);
-
- /**
- * TODO : refresh configuration model
- * uncomment after update these next 3 lines
- *
- * NOTE : indexLine AND numcolumn should be stored in service and
- * updated when togle sidepanel
- */
- //this.controllerModalProxy.bindConfigurationModelFromProxyModel(indexLine, numcolumn, modalAddCtrlModel, this.configuration);
- //this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- //this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
-
- this.controllerModalProxy.setEditPanelModelToggle(false);
- this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();
- }
- }, {
- key: 'setRightClicked',
- value: function setRightClicked(previousState, item) {
- item.rightCliked = true;
- }
- }, {
- key: 'toggleEditPanel',
- value: function toggleEditPanel(event, lineIndex, colIndex, item) {
- var _this4 = this;
-
- this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel);
- // already opened (could be another control edit)
- if (this.controllerModalProxy.getEditPanelModelToggle()) {
- // -> immediate close and refresh configuration model + formly model
- this.controllerModalProxy.setEditPanelModelToggle(false);
- this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();
-
- //TODO : for refreshing
- //this.controllerModalProxy.bindConfigurationModelFromProxyModel(indexLine, numcolumn, modalAddCtrlModel, this.configuration);
- //this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- //this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
-
- // check if new control right clicked otherwise just toggle side panel
- if (typeof this.controllerModalProxy.getEditPanelModelLineIndex() !== 'undefined' && typeof this.controllerModalProxy.getEditPanelModelColumnIndex() !== 'undefined' && typeof this.controllerModalProxy.getEditPanelModelControl() !== 'undefined') {
- if (this.controllerModalProxy.getEditPanelModelLineIndex() === lineIndex && this.controllerModalProxy.getEditPanelModelColumnIndex() === colIndex && angular.equals(this.controllerModalProxy.getEditPanelModelControl(), item)) {
- //console.info('already opened for SAME ctrl : so close - no re-open');
- } else {
- (function () {
- //console.info('already opened for DIFFERENT ctrl : so re-open');
- item.rightCliked = true;
- // set a timeout before re-opening, 500ms is ok for a ps-size="400px"
- var timerCloseOpenedEditPanel = _this4.$timeout(function () {
- _this4.controllerModalProxy.setEditPanelModelLineIndex(lineIndex);
- _this4.controllerModalProxy.setEditPanelModelColumnIndex(colIndex);
- _this4.controllerModalProxy.setEditPanelModelControl(item);
- // control model passed to Service : controllerModalProxy
- _this4.controllerModalProxy.setProxyModelFromConfigurationSelection(_this4.configuration, lineIndex, colIndex);
- _this4.controllerModalProxy.setEditPanelModelToggle(true);
- _this4.$scope.editPanelModel.toggle = _this4.controllerModalProxy.getEditPanelModelToggle();
- }, 200);
- _this4.$scope.$on('$destroy', function () {
- return _this4.$timeout.cancel(timerCloseOpenedEditPanel);
- });
- })();
- }
- }
- } else {
- // previous state = closed = immediate open
- // console.info('NOT already opened : so open');
- item.rightCliked = true;
-
- this.controllerModalProxy.setEditPanelModelLineIndex(lineIndex);
- this.controllerModalProxy.setEditPanelModelColumnIndex(colIndex);
- this.controllerModalProxy.setEditPanelModelControl(item);
- // control model passed to Service : controllerModalProxy
- this.controllerModalProxy.setProxyModelFromConfigurationSelection(this.configuration, lineIndex, colIndex);
- this.controllerModalProxy.setEditPanelModelToggle(true);
- this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();
- }
-
- // console.info('after toggleLeftPanel check :');
- // console.dir({
- // 'this.editPanelModel' : angular.copy(this.editPanelModel),
- // 'controllerModalProxy.editPanelModel' : angular.copy(this.controllerModalProxy.editPanelModel)
- // });
- }
-
- // // refreshModels : to call after drag and drop events
- // refreshModels(){
- // this.$timeout(()=>{
- // console.info('refreshing models');
- // formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- // }, 10);
- // }
-
- }, {
- key: 'removeThisLine',
- value: function removeThisLine(lineIndex) {
- this.dragDropModel[1].splice(lineIndex, 1);
- }
-
- //TODO : to fix
- }, {
- key: 'addNewline',
- value: function addNewline() {
- // re-render formfield
- // TODO : to fix
- this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- }
- }, {
- key: 'insertNewLine',
- value: function insertNewLine() {
- this.addNewline();
- this.dragDropModel[1].push([]);
- }
- }]);
-
- return edaDragDropWayEasyFormGenCtrl;
- })();
-
- edaDragDropWayEasyFormGenCtrl.$inject = ['$scope', 'easyFormGenVersion', '$filter', '$anchorScroll', 'toaster', '$timeout', '$modal', '$log', 'formFieldManage', 'controllerModalProxy', 'dragDropItemDecorationService',
- // 'dragDropConfig',
- 'ddModelConfModelProxyService', 'ddItemRightClickedManager', 'easyFormDragWayConfig'];
-
- _export('default', edaDragDropWayEasyFormGenCtrl);
-
- _export('DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER', DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER);
-
- _export('DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS', DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS);
- }
- };
-});
-$__System.register('4f', ['49', '4e'], function (_export) {
- /* global angular */
-
- //TODO : to bindToController
- //-> then angular 1.4+ will be required...
- //-> check methot to refactor inside rag drop way then common step way and drag drop way
-
- 'use strict';
-
- var edaDragDropWayEasyFormGenDirectiveTemplate, DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER, DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS, EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE;
-
- function edaDragdropWayEasyFormGen($timeout, formFieldManage, ddModelConfModelProxyService,
- // dragDropConfig,
- easyFormDragWayConfig) {
-
- var directive = {
- restrict: 'E',
- template: edaDragDropWayEasyFormGenDirectiveTemplate,
- scope: {
- edaEasyFormGeneratorModel: '=',
- edaSaveFormEvent: '&edaSaveFormEvent'
- },
- controller: DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER,
- controllerAs: DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS,
- replace: false,
- link: linkFct
- };
- return directive;
-
- function linkFct(scope) {
- // watch "scope.easyFormGeneratorModel"
- scope.$watch(function () {
- return scope.edaEasyFormGeneratorModel;
- }, function () {
- return loadExistingConfigurationModel();
- }, true);
-
- // watch "scope.returnSaveEvent"" = catch saving form event
- scope.$watch(function () {
- return scope.returnSaveEvent;
- }, function (newValue) {
- if (newValue === true) {
- var _easyFormGeneratorModel = {
- formName: scope.vm.configuration.formName,
- btnSubmitText: scope.vm.configuration.submitButtonText,
- btnCancelText: scope.vm.configuration.cancelButtonText,
- edaFieldsModel: scope.vm.configuration.lines,
- //just as test
- edaFieldsModelStringified: angular.toJson(scope.vm.configuration.lines),
- formlyFieldsModel: scope.vm.wfFormFieldsOnlyNeededProperties,
- dataModel: scope.vm.dataModel
- };
- scope.edaSaveFormEvent({
- edaEasyFormGeneratorModel: _easyFormGeneratorModel
- });
- //back to false, waiting next save event
- scope.returnSaveEvent = false;
- }
- });
-
- function returnAttributeConfigurationLinesIfNotEmpty() {
- var edaEasyFormGeneratorModelToReturn = angular.isArray(scope.edaEasyFormGeneratorModel.edaFieldsModel) ? scope.edaEasyFormGeneratorModel.edaFieldsModel.length > 0 ? scope.edaEasyFormGeneratorModel.edaFieldsModel : emptyEdaFieldsModel() : emptyEdaFieldsModel();
- return edaEasyFormGeneratorModelToReturn;
- }
-
- /**
- * empty fields model : to display at least an empty line
- * otherwise would look like ugly empty line like it were a bug
- */
- function emptyEdaFieldsModel() {
- var emptyModel = [{
- 'line': 1,
- 'activeColumn': 1,
- 'columns': [{
- 'numColumn': 1,
- 'exist': true,
- 'control': {
- 'type': 'none',
- 'key': 'none'
- }
- }]
- }];
- return emptyModel;
- }
-
- function returnAttributeDataModelIfNotEmpty() {
- var dataModelToReturn = angular.isArray(scope.edaEasyFormGeneratorModel.dataModel) ? scope.edaEasyFormGeneratorModel.dataModel.length > 0 ? scope.edaEasyFormGeneratorModel.dataModel : [] : [];
- return dataModelToReturn;
- }
-
- function loadExistingConfigurationModel() {
- if (angular.isDefined(scope.edaEasyFormGeneratorModel)) {
- var configlines = returnAttributeConfigurationLinesIfNotEmpty();
- scope.vm.configurationLoaded = {};
- formFieldManage.bindConfigurationLines(scope.vm.configurationLoaded, configlines, false);
- //apply configuration model
- scope.vm.configuration = angular.copy(scope.vm.configurationLoaded);
- //apply ddModel
- ddModelConfModelProxyService.loadDragDropModelFromConfigurationModel(scope.vm.configuration, scope.vm.dragDropModel);
- updateConfigurationClassName(scope.vm.configuration);
- ddModelConfModelProxyService.refreshControlsKeys(scope.vm.configuration, scope.vm.dragDropModel);
- //apply formly model
- formFieldManage.applyConfigurationToformlyModel(scope.vm.configuration, scope.vm.wfFormFields, scope.vm.dataModel);
- scope.vm.wfFormFieldsOnlyNeededProperties = angular.copy(scope.vm.wfFormFields);
- scope.vm.dataModel = returnAttributeDataModelIfNotEmpty();
- scope.vm.configuration.formName = angular.isString(scope.edaEasyFormGeneratorModel.formName) ? scope.edaEasyFormGeneratorModel.formName : '';
- scope.vm.configuration.submitButtonText = angular.isString(scope.edaEasyFormGeneratorModel.btnSubmitText) ? scope.edaEasyFormGeneratorModel.btnSubmitText : 'Submit';
- scope.vm.configuration.cancelButtonText = angular.isString(scope.edaEasyFormGeneratorModel.btnCancelText) ? scope.edaEasyFormGeneratorModel.btnCancelText : 'Cancel';
- }
- }
-
- function updateConfigurationClassName(configModel) {
- angular.forEach(configModel.lines, function (aline) {
- var cssClassToApply = easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(aline.columns.length);
- angular.forEach(aline.columns, function (aControl) {
- return aControl.control.className = cssClassToApply;
- });
- });
- }
- }
- }
-
- return {
- setters: [function (_) {
- edaDragDropWayEasyFormGenDirectiveTemplate = _['default'];
- }, function (_e) {
- DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER = _e.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER;
- DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS = _e.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS;
- }],
- execute: function () {
- EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE = 'edaDragdropWayEasyFormGen';
- edaDragdropWayEasyFormGen.$inject = ['$timeout', 'formFieldManage', 'ddModelConfModelProxyService',
- // 'dragDropConfig',
- 'easyFormDragWayConfig'];
-
- _export('default', edaDragdropWayEasyFormGen);
-
- _export('EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE', EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE);
- }
- };
-});
-$__System.register('50', ['48', '4e', '4f'], function (_export) {
- /* global angular */
-
- 'use strict';
-
- var easyFormDragWayConfig, EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME, edaDragDropWayEasyFormGenCtrl, DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER, edaDragdropWayEasyFormGen, EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE, DRAGDROP_MODULE;
- return {
- setters: [function (_) {
- easyFormDragWayConfig = _['default'];
- EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME = _.EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME;
- }, function (_e) {
- edaDragDropWayEasyFormGenCtrl = _e['default'];
- DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER = _e.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER;
- }, function (_f) {
- edaDragdropWayEasyFormGen = _f['default'];
- EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE = _f.EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE;
- }],
- execute: function () {
- DRAGDROP_MODULE = 'edaDragDropWay.main.module';
-
- _export('default', angular.module(DRAGDROP_MODULE, []).provider(EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME, easyFormDragWayConfig).controller(DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER, edaDragDropWayEasyFormGenCtrl).directive(EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE, edaDragdropWayEasyFormGen));
- }
- };
-});
-$__System.register('51', [], function (_export) {
- 'use strict';
-
- var TRUST_THIS_FILTER_NAME;
-
- function trustThis($sce) {
- return function (value, type) {
- return $sce.trustAs(type || 'html', value);
- };
- }
-
- return {
- setters: [],
- execute: function () {
- TRUST_THIS_FILTER_NAME = 'trustThis';
- trustThis.$inject = ['$sce'];
-
- _export('default', trustThis);
-
- _export('TRUST_THIS_FILTER_NAME', TRUST_THIS_FILTER_NAME);
- }
- };
-});
-$__System.register('52', ['51'], function (_export) {
- 'use strict';
-
- var trustThis, TRUST_THIS_FILTER_NAME, TRUST_THIS_FILTER_MODULE;
- return {
- setters: [function (_) {
- trustThis = _['default'];
- TRUST_THIS_FILTER_NAME = _.TRUST_THIS_FILTER_NAME;
- }],
- execute: function () {
- TRUST_THIS_FILTER_MODULE = 'edaDragDropWay.trustThis.filter';
-
- _export('default', angular.module(TRUST_THIS_FILTER_MODULE, []).filter(TRUST_THIS_FILTER_NAME, trustThis));
- }
- };
-});
-$__System.register('1', ['2', '3', '5', '6', '41', '44', '46', '50', '52', '2a', '2e', '3c', '3f'], function (_export) {
- 'use strict';
-
- var formlyConfigFunct, dragDropConfigFunt, EASY_FORM_DD_VERSION_NAME, EASY_FORM_DD_VERSION_VALUE, coreModule, configProxyModule, dragAndDropListModule, pageSlideModule, easyFormDragDropModule, trustThisFilterModule, leftPanelModule, formlyProxyModule, dragdropModule, rightClickModule, DRAG_DROP_WAY_MODULE_NAME, DRAG_DROP_MODULES_INJECT, mainModule;
- return {
- setters: [function (_) {}, function (_2) {
- formlyConfigFunct = _2['default'];
- }, function (_3) {
- dragDropConfigFunt = _3['default'];
- EASY_FORM_DD_VERSION_NAME = _3.EASY_FORM_DD_VERSION_NAME;
- EASY_FORM_DD_VERSION_VALUE = _3.EASY_FORM_DD_VERSION_VALUE;
- }, function (_4) {
- coreModule = _4['default'];
- }, function (_5) {
- configProxyModule = _5['default'];
- }, function (_6) {
- dragAndDropListModule = _6['default'];
- }, function (_7) {
- pageSlideModule = _7['default'];
- }, function (_8) {
- easyFormDragDropModule = _8['default'];
- }, function (_9) {
- trustThisFilterModule = _9['default'];
- }, function (_a) {
- leftPanelModule = _a['default'];
- }, function (_e) {
- formlyProxyModule = _e['default'];
- }, function (_c) {
- dragdropModule = _c['default'];
- }, function (_f) {
- rightClickModule = _f['default'];
- }],
- execute: function () {
- DRAG_DROP_WAY_MODULE_NAME = 'eda.easyformGen.dragDropWay';
- DRAG_DROP_MODULES_INJECT = [coreModule.name, configProxyModule.name, trustThisFilterModule.name, leftPanelModule.name, formlyProxyModule.name, dragdropModule.name, easyFormDragDropModule.name, rightClickModule.name, dragAndDropListModule.name, pageSlideModule.name];
- mainModule = angular.module(DRAG_DROP_WAY_MODULE_NAME, DRAG_DROP_MODULES_INJECT).config(dragDropConfigFunt).config(formlyConfigFunct).value(EASY_FORM_DD_VERSION_NAME, EASY_FORM_DD_VERSION_VALUE);
-
- _export('default', mainModule);
- }
- };
-});
-})
-(function(factory) {
- factory();
-});
-//# sourceMappingURL=eda.dragdropway.js.map
\ No newline at end of file
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+
+
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "http://localhost:8080/";
+
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\n__webpack_require__(1);\n\n__webpack_require__(6);\n\n__webpack_require__(10);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2luZGV4LmpzPzQ1NmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFDQTs7QUFDQSIsImZpbGUiOiIwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL3ZlbmRvcnMnO1xuaW1wb3J0ICcuL3N0eWxlL2RyYWdfYW5kX2Ryb3Auc2Nzcyc7XG5pbXBvcnQgJy4vbWFpbic7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2luZGV4LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\n__webpack_require__(2);\n\n__webpack_require__(3);\n\n__webpack_require__(5);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L3ZlbmRvcnMuanM/YjcxMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOztBQUNBIiwiZmlsZSI6IjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ2FwaS1jaGVjayc7IC8vIE5PVEU6IGFsd2F5cyBpbXBvcnRlZCBiZWZvcmUgYW5ndWxhci1mb3JtbHkhXG5pbXBvcnQgJ2FuZ3VsYXItZm9ybWx5JztcbmltcG9ydCAnYW5ndWxhci1mb3JtbHktdGVtcGxhdGVzLWJvb3RzdHJhcCc7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L3ZlbmRvcnMuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 2 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("//! api-check version 7.5.5 built with ♥ by Kent C. Dodds (http://kent.doddsfamily.us) (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apiCheck\"] = factory();\n\telse\n\t\troot[\"apiCheck\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n\tvar _apiCheck = __webpack_require__(1);\n\n\tvar _apiCheck2 = _interopRequireDefault(_apiCheck);\n\n\texports['default'] = _apiCheck2['default'];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar stringify = __webpack_require__(2);\n\tvar apiCheckUtil = __webpack_require__(3);\n\tvar each = apiCheckUtil.each;\n\tvar isError = apiCheckUtil.isError;\n\tvar t = apiCheckUtil.t;\n\tvar arrayify = apiCheckUtil.arrayify;\n\tvar getCheckerDisplay = apiCheckUtil.getCheckerDisplay;\n\tvar typeOf = apiCheckUtil.typeOf;\n\tvar getError = apiCheckUtil.getError;\n\n\tvar checkers = __webpack_require__(4);\n\tvar apiCheckApis = getApiCheckApis();\n\n\tmodule.exports = getApiCheckInstance;\n\tmodule.exports.VERSION = (\"7.5.5\");\n\tmodule.exports.utils = apiCheckUtil;\n\tmodule.exports.globalConfig = {\n\t verbose: false,\n\t disabled: false\n\t};\n\n\tvar apiCheckApiCheck = getApiCheckInstance({\n\t output: { prefix: 'apiCheck' }\n\t});\n\tmodule.exports.internalChecker = apiCheckApiCheck;\n\n\teach(checkers, function (checker, name) {\n\t return module.exports[name] = checker;\n\t});\n\n\tfunction getApiCheckInstance() {\n\t var config = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t var extraCheckers = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n\t /* eslint complexity:[2, 6] */\n\t if (apiCheckApiCheck && arguments.length) {\n\t apiCheckApiCheck['throw'](apiCheckApis.getApiCheckInstanceCheckers, arguments, {\n\t prefix: 'creating an apiCheck instance'\n\t });\n\t }\n\n\t var additionalProperties = {\n\t 'throw': getApiCheck(true),\n\t warn: getApiCheck(false),\n\t getErrorMessage: getErrorMessage,\n\t handleErrorMessage: handleErrorMessage,\n\t config: {\n\t output: config.output || {\n\t prefix: '',\n\t suffix: '',\n\t docsBaseUrl: ''\n\t },\n\t verbose: config.verbose || false,\n\t disabled: config.disabled || false\n\t },\n\t utils: apiCheckUtil\n\t };\n\n\t each(additionalProperties, function (wrapper, name) {\n\t return apiCheck[name] = wrapper;\n\t });\n\n\t var disabled = apiCheck.disabled || module.exports.globalConfig.disabled;\n\t each(checkers.getCheckers(disabled), function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\t each(extraCheckers, function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\n\t return apiCheck;\n\n\t /**\n\t * This is the instance function. Other things are attached to this see additional properties above.\n\t * @param {Array} api - the checkers to check with\n\t * @param {Array} args - the args to check\n\t * @param {Object} output - output options\n\t * @returns {Object} - if this has a failed = true property, then it failed\n\t */\n\t function apiCheck(api, args, output) {\n\t /* eslint complexity:[2, 8] */\n\t if (apiCheck.config.disabled || module.exports.globalConfig.disabled) {\n\t return {\n\t apiTypes: {}, argTypes: {},\n\t passed: true, message: '',\n\t failed: false\n\t }; // empty version of what is normally returned\n\t }\n\t checkApiCheckApi(arguments);\n\t if (!Array.isArray(api)) {\n\t api = [api];\n\t args = [args];\n\t } else {\n\t // turn arguments into an array\n\t args = Array.prototype.slice.call(args);\n\t }\n\t var messages = checkEnoughArgs(api, args);\n\t if (!messages.length) {\n\t // this is where we actually go perform the checks.\n\t messages = checkApiWithArgs(api, args);\n\t }\n\n\t var returnObject = getTypes(api, args);\n\t returnObject.args = args;\n\t if (messages.length) {\n\t returnObject.message = apiCheck.getErrorMessage(api, args, messages, output);\n\t returnObject.failed = true;\n\t returnObject.passed = false;\n\t } else {\n\t returnObject.message = '';\n\t returnObject.failed = false;\n\t returnObject.passed = true;\n\t }\n\t return returnObject;\n\t }\n\n\t /**\n\t * checkApiCheckApi, should be read like: check apiCheck api. As in, check the api for apiCheck :-)\n\t * @param {Array} checkApiArgs - args provided to apiCheck function\n\t */\n\t function checkApiCheckApi(checkApiArgs) {\n\t var api = checkApiArgs[0];\n\t var args = checkApiArgs[1];\n\t var isArrayOrArgs = Array.isArray(args) || args && typeof args === 'object' && typeof args.length === 'number';\n\n\t if (Array.isArray(api) && !isArrayOrArgs) {\n\t throw new Error(getErrorMessage(api, [args], ['If an array is provided for the api, an array must be provided for the args as well.'], { prefix: 'apiCheck' }));\n\t }\n\t // dog fooding here\n\t var errors = checkApiWithArgs(apiCheckApis.checkApiCheckApi, checkApiArgs);\n\t if (errors.length) {\n\t var message = apiCheck.getErrorMessage(apiCheckApis.checkApiCheckApi, checkApiArgs, errors, {\n\t prefix: 'apiCheck'\n\t });\n\t apiCheck.handleErrorMessage(message, true);\n\t }\n\t }\n\n\t function getApiCheck(shouldThrow) {\n\t return function apiCheckWrapper(api, args, output) {\n\t var result = apiCheck(api, args, output);\n\t apiCheck.handleErrorMessage(result.message, shouldThrow);\n\t return result; // wont get here if an error is thrown\n\t };\n\t }\n\n\t function handleErrorMessage(message, shouldThrow) {\n\t if (shouldThrow && message) {\n\t throw new Error(message);\n\t } else if (message) {\n\t /* eslint no-console:0 */\n\t console.warn(message);\n\t }\n\t }\n\n\t function getErrorMessage(api, args) {\n\t var messages = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];\n\t var output = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];\n\n\t var gOut = apiCheck.config.output || {};\n\t var prefix = getPrefix();\n\t var suffix = getSuffix();\n\t var url = getUrl();\n\t var message = 'apiCheck failed! ' + messages.join(', ');\n\t var passedAndShouldHavePassed = '\\n\\n' + buildMessageFromApiAndArgs(api, args);\n\t return (prefix + ' ' + message + ' ' + suffix + ' ' + (url || '') + passedAndShouldHavePassed).trim();\n\n\t function getPrefix() {\n\t var p = output.onlyPrefix;\n\t if (!p) {\n\t p = ((gOut.prefix || '') + ' ' + (output.prefix || '')).trim();\n\t }\n\t return p;\n\t }\n\n\t function getSuffix() {\n\t var s = output.onlySuffix;\n\t if (!s) {\n\t s = ((output.suffix || '') + ' ' + (gOut.suffix || '')).trim();\n\t }\n\t return s;\n\t }\n\n\t function getUrl() {\n\t var u = output.url;\n\t if (!u) {\n\t u = gOut.docsBaseUrl && output.urlSuffix && ('' + gOut.docsBaseUrl + output.urlSuffix).trim();\n\t }\n\t return u;\n\t }\n\t }\n\n\t function buildMessageFromApiAndArgs(api, args) {\n\t var _getTypes = getTypes(api, args);\n\n\t var apiTypes = _getTypes.apiTypes;\n\t var argTypes = _getTypes.argTypes;\n\n\t var copy = Array.prototype.slice.call(args || []);\n\t var replacedItems = [];\n\t replaceFunctionWithName(copy);\n\t var passedArgs = getObjectString(copy);\n\t argTypes = getObjectString(argTypes);\n\t apiTypes = getObjectString(apiTypes);\n\n\t return generateMessage();\n\n\t // functions\n\n\t function replaceFunctionWithName(obj) {\n\t each(obj, function (val, name) {\n\t /* eslint complexity:[2, 6] */\n\t if (replacedItems.indexOf(val) === -1) {\n\t // avoid recursive problems\n\t replacedItems.push(val);\n\t if (typeof val === 'object') {\n\t replaceFunctionWithName(obj);\n\t } else if (typeof val === 'function') {\n\t obj[name] = val.displayName || val.name || 'anonymous function';\n\t }\n\t }\n\t });\n\t }\n\n\t function getObjectString(types) {\n\t if (!types || !types.length) {\n\t return 'nothing';\n\t } else if (types && types.length === 1) {\n\t types = types[0];\n\t }\n\t return stringify(types, null, 2);\n\t }\n\n\t function generateMessage() {\n\t var n = '\\n';\n\t var useS = true;\n\t if (args && args.length === 1) {\n\t if (typeof args[0] === 'object' && args[0] !== null) {\n\t useS = !!Object.keys(args[0]).length;\n\t } else {\n\t useS = false;\n\t }\n\t }\n\t var types = 'type' + (useS ? 's' : '');\n\t var newLine = n + n;\n\t return 'You passed:' + n + passedArgs + newLine + ('With the ' + types + ':' + n + argTypes + newLine) + ('The API calls for:' + n + apiTypes);\n\t }\n\t }\n\n\t function getTypes(api, args) {\n\t api = arrayify(api);\n\t args = arrayify(args);\n\t var apiTypes = api.map(function (checker, index) {\n\t var specified = module.exports.globalConfig.hasOwnProperty('verbose');\n\t return getCheckerDisplay(checker, {\n\t terse: specified ? !module.exports.globalConfig.verbose : !apiCheck.config.verbose,\n\t obj: args[index],\n\t addHelpers: true\n\t });\n\t });\n\t var argTypes = args.map(function (arg) {\n\t return getArgDisplay(arg, []);\n\t });\n\t return { argTypes: argTypes, apiTypes: apiTypes };\n\t }\n\t}\n\n\t// STATELESS FUNCTIONS\n\n\t/**\n\t * This is where the magic happens for actually checking the arguments with the api.\n\t * @param {Array} api - checkers\n\t * @param {Array} args - and arguments object\n\t * @returns {Array} - the error messages\n\t */\n\tfunction checkApiWithArgs(api, args) {\n\t /* eslint complexity:[2, 7] */\n\t var messages = [];\n\t var failed = false;\n\t var checkerIndex = 0;\n\t var argIndex = 0;\n\t var arg = undefined,\n\t checker = undefined,\n\t res = undefined,\n\t lastChecker = undefined,\n\t argName = undefined,\n\t argFailed = undefined,\n\t skipPreviousChecker = undefined;\n\t /* jshint -W084 */\n\t while ((checker = api[checkerIndex++]) && argIndex < args.length) {\n\t arg = args[argIndex++];\n\t argName = 'Argument ' + argIndex + (checker.isOptional ? ' (optional)' : '');\n\t res = checker(arg, 'value', argName);\n\t argFailed = isError(res);\n\t lastChecker = checkerIndex >= api.length;\n\t skipPreviousChecker = checkerIndex > 1 && api[checkerIndex - 1].isOptional;\n\t if (argFailed && lastChecker || argFailed && !lastChecker && !checker.isOptional && !skipPreviousChecker) {\n\t failed = true;\n\t messages.push(getCheckerErrorMessage(res, checker, arg));\n\t } else if (argFailed && checker.isOptional) {\n\t argIndex--;\n\t } else {\n\t messages.push(t(argName) + ' passed');\n\t }\n\t }\n\t return failed ? messages : [];\n\t}\n\n\tcheckerTypeType.type = 'function with __apiCheckData property and `${function.type}` property';\n\tfunction checkerTypeType(checkerType, name, location) {\n\t var apiCheckDataChecker = checkers.shape({\n\t type: checkers.string,\n\t optional: checkers.bool\n\t });\n\t var asFunc = checkers.func.withProperties({ __apiCheckData: apiCheckDataChecker });\n\t var asShape = checkers.shape({ __apiCheckData: apiCheckDataChecker });\n\t var wrongShape = checkers.oneOfType([asFunc, asShape])(checkerType, name, location);\n\t if (isError(wrongShape)) {\n\t return wrongShape;\n\t }\n\t if (typeof checkerType !== 'function' && !checkerType.hasOwnProperty(checkerType.__apiCheckData.type)) {\n\t return getError(name, location, checkerTypeType.type);\n\t }\n\t}\n\n\tfunction getCheckerErrorMessage(res, checker, val) {\n\t var checkerHelp = getCheckerHelp(checker, val);\n\t checkerHelp = checkerHelp ? ' - ' + checkerHelp : '';\n\t return res.message + checkerHelp;\n\t}\n\n\tfunction getCheckerHelp(_ref, val) {\n\t var help = _ref.help;\n\n\t if (!help) {\n\t return '';\n\t }\n\t if (typeof help === 'function') {\n\t help = help(val);\n\t }\n\t return help;\n\t}\n\n\tfunction checkEnoughArgs(api, args) {\n\t var requiredArgs = api.filter(function (a) {\n\t return !a.isOptional;\n\t });\n\t if (args.length < requiredArgs.length) {\n\t return ['Not enough arguments specified. Requires `' + requiredArgs.length + '`, you passed `' + args.length + '`'];\n\t } else {\n\t return [];\n\t }\n\t}\n\n\tfunction getArgDisplay(arg, gottenArgs) {\n\t /* eslint complexity:[2, 7] */\n\t var cName = arg && arg.constructor && arg.constructor.name;\n\t var type = typeOf(arg);\n\t if (type === 'function') {\n\t if (hasKeys()) {\n\t var properties = stringify(getDisplayIfNotGotten());\n\t return cName + ' (with properties: ' + properties + ')';\n\t }\n\t return cName;\n\t }\n\n\t if (arg === null) {\n\t return 'null';\n\t }\n\n\t if (type !== 'array' && type !== 'object') {\n\t return type;\n\t }\n\n\t if (hasKeys()) {\n\t return getDisplayIfNotGotten();\n\t }\n\n\t return cName;\n\n\t // utility functions\n\t function hasKeys() {\n\t return arg && Object.keys(arg).length;\n\t }\n\n\t function getDisplayIfNotGotten() {\n\t if (gottenArgs.indexOf(arg) !== -1) {\n\t return '[Circular]';\n\t }\n\t gottenArgs.push(arg);\n\t return getDisplay(arg, gottenArgs);\n\t }\n\t}\n\n\tfunction getDisplay(obj, gottenArgs) {\n\t var argDisplay = {};\n\t each(obj, function (v, k) {\n\t return argDisplay[k] = getArgDisplay(v, gottenArgs);\n\t });\n\t return argDisplay;\n\t}\n\n\tfunction getApiCheckApis() {\n\t var os = checkers.string.optional;\n\n\t var checkerFnChecker = checkers.func.withProperties({\n\t type: checkers.oneOfType([checkers.string, checkerTypeType]).optional,\n\t displayName: checkers.string.optional,\n\t shortType: checkers.string.optional,\n\t notOptional: checkers.bool.optional,\n\t notRequired: checkers.bool.optional\n\t });\n\n\t var getApiCheckInstanceCheckers = [checkers.shape({\n\t output: checkers.shape({\n\t prefix: checkers.string.optional,\n\t suffix: checkers.string.optional,\n\t docsBaseUrl: checkers.string.optional\n\t }).strict.optional,\n\t verbose: checkers.bool.optional,\n\t disabled: checkers.bool.optional\n\t }).strict.optional, checkers.objectOf(checkerFnChecker).optional];\n\n\t var checkApiCheckApi = [checkers.typeOrArrayOf(checkerFnChecker), checkers.any.optional, checkers.shape({\n\t prefix: os, suffix: os, urlSuffix: os, // appended case\n\t onlyPrefix: os, onlySuffix: os, url: os // override case\n\t }).strict.optional];\n\n\t return {\n\t checkerFnChecker: checkerFnChecker,\n\t getApiCheckInstanceCheckers: getApiCheckInstanceCheckers,\n\t checkApiCheckApi: checkApiCheckApi\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = stringify;\n\n\tfunction getSerialize (fn, decycle) {\n\t var seen = [], keys = [];\n\t decycle = decycle || function(key, value) {\n\t return '[Circular ' + getPath(value, seen, keys) + ']'\n\t };\n\t return function(key, value) {\n\t var ret = value;\n\t if (typeof value === 'object' && value) {\n\t if (seen.indexOf(value) !== -1)\n\t ret = decycle(key, value);\n\t else {\n\t seen.push(value);\n\t keys.push(key);\n\t }\n\t }\n\t if (fn) ret = fn(key, ret);\n\t return ret;\n\t }\n\t}\n\n\tfunction getPath (value, seen, keys) {\n\t var index = seen.indexOf(value);\n\t var path = [ keys[index] ];\n\t for (index--; index >= 0; index--) {\n\t if (seen[index][ path[0] ] === value) {\n\t value = seen[index];\n\t path.unshift(keys[index]);\n\t }\n\t }\n\t return '~' + path.join('.');\n\t}\n\n\tfunction stringify(obj, fn, spaces, decycle) {\n\t return JSON.stringify(obj, getSerialize(fn, decycle), spaces);\n\t}\n\n\tstringify.getSerialize = getSerialize;\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\tvar stringify = __webpack_require__(2);\n\tvar checkerHelpers = {\n\t addOptional: addOptional, getRequiredVersion: getRequiredVersion, setupChecker: setupChecker, addNullable: addNullable\n\t};\n\n\tmodule.exports = {\n\t each: each, copy: copy, typeOf: typeOf, arrayify: arrayify, getCheckerDisplay: getCheckerDisplay,\n\t isError: isError, list: list, getError: getError, nAtL: nAtL, t: t, undef: undef, checkerHelpers: checkerHelpers,\n\t noop: noop\n\t};\n\n\tfunction copy(obj) {\n\t var type = typeOf(obj);\n\t var daCopy = undefined;\n\t if (type === 'array') {\n\t daCopy = [];\n\t } else if (type === 'object') {\n\t daCopy = {};\n\t } else {\n\t return obj;\n\t }\n\t each(obj, function (val, key) {\n\t daCopy[key] = val; // cannot single-line this because we don't want to abort the each\n\t });\n\t return daCopy;\n\t}\n\n\tfunction typeOf(obj) {\n\t if (Array.isArray(obj)) {\n\t return 'array';\n\t } else if (obj instanceof RegExp) {\n\t return 'object';\n\t } else {\n\t return typeof obj;\n\t }\n\t}\n\n\tfunction getCheckerDisplay(checker, options) {\n\t /* eslint complexity:[2, 7] */\n\t var display = undefined;\n\t var short = options && options.short;\n\t if (short && checker.shortType) {\n\t display = checker.shortType;\n\t } else if (!short && typeof checker.type === 'object' || checker.type === 'function') {\n\t display = getCheckerType(checker, options);\n\t } else {\n\t display = getCheckerType(checker, options) || checker.displayName || checker.name;\n\t }\n\t return display;\n\t}\n\n\tfunction getCheckerType(_ref, options) {\n\t var type = _ref.type;\n\n\t if (typeof type === 'function') {\n\t var __apiCheckData = type.__apiCheckData;\n\t var typeTypes = type(options);\n\t type = _defineProperty({\n\t __apiCheckData: __apiCheckData\n\t }, __apiCheckData.type, typeTypes);\n\t }\n\t return type;\n\t}\n\n\tfunction arrayify(obj) {\n\t if (!obj) {\n\t return [];\n\t } else if (Array.isArray(obj)) {\n\t return obj;\n\t } else {\n\t return [obj];\n\t }\n\t}\n\n\tfunction each(obj, iterator, context) {\n\t if (Array.isArray(obj)) {\n\t return eachArry(obj, iterator, context);\n\t } else {\n\t return eachObj(obj, iterator, context);\n\t }\n\t}\n\n\tfunction eachObj(obj, iterator, context) {\n\t var ret = undefined;\n\t var hasOwn = Object.prototype.hasOwnProperty;\n\t /* eslint prefer-const:0 */ // some weird eslint bug?\n\t for (var key in obj) {\n\t if (hasOwn.call(obj, key)) {\n\t ret = iterator.call(context, obj[key], key, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t }\n\t return true;\n\t}\n\n\tfunction eachArry(obj, iterator, context) {\n\t var ret = undefined;\n\t var length = obj.length;\n\t for (var i = 0; i < length; i++) {\n\t ret = iterator.call(context, obj[i], i, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t return true;\n\t}\n\n\tfunction isError(obj) {\n\t return obj instanceof Error;\n\t}\n\n\tfunction list(arry, join, finalJoin) {\n\t arry = arrayify(arry);\n\t var copy = arry.slice();\n\t var last = copy.pop();\n\t if (copy.length === 1) {\n\t join = ' ';\n\t }\n\t return copy.join(join) + ('' + (copy.length ? join + finalJoin : '') + last);\n\t}\n\n\tfunction getError(name, location, checkerType) {\n\t if (typeof checkerType === 'function') {\n\t checkerType = checkerType({ short: true });\n\t }\n\t var stringType = typeof checkerType !== 'object' ? checkerType : stringify(checkerType);\n\t return new Error(nAtL(name, location) + ' must be ' + t(stringType));\n\t}\n\n\tfunction nAtL(name, location) {\n\t var tName = t(name || 'value');\n\t var tLocation = !location ? '' : ' at ' + t(location);\n\t return '' + tName + tLocation;\n\t}\n\n\tfunction t(thing) {\n\t return '`' + thing + '`';\n\t}\n\n\tfunction undef(thing) {\n\t return typeof thing === 'undefined';\n\t}\n\n\t/**\n\t * This will set up the checker with all of the defaults that most checkers want like required by default and an\n\t * optional version\n\t *\n\t * @param {Function} checker - the checker to setup with properties\n\t * @param {Object} properties - properties to add to the checker\n\t * @param {boolean} disabled - when set to true, this will set the checker to a no-op function\n\t * @returns {Function} checker - the setup checker\n\t */\n\tfunction setupChecker(checker, properties, disabled) {\n\t /* eslint complexity:[2, 9] */\n\t if (disabled) {\n\t // swap out the checker for its own copy of noop\n\t checker = getNoop();\n\t checker.isNoop = true;\n\t }\n\n\t if (typeof checker.type === 'string') {\n\t checker.shortType = checker.type;\n\t }\n\n\t // assign all properties given\n\t each(properties, function (prop, name) {\n\t return checker[name] = prop;\n\t });\n\n\t if (!checker.displayName) {\n\t checker.displayName = 'apiCheck ' + t(checker.shortType || checker.type || checker.name) + ' type checker';\n\t }\n\n\t if (!checker.notRequired) {\n\t checker = getRequiredVersion(checker, disabled);\n\t }\n\n\t if (!checker.notNullable) {\n\t addNullable(checker, disabled);\n\t }\n\n\t if (!checker.notOptional) {\n\t addOptional(checker, disabled);\n\t }\n\n\t return checker;\n\t}\n\n\tfunction getRequiredVersion(checker, disabled) {\n\t var requiredChecker = disabled ? getNoop() : function requiredChecker(val, name, location, obj) {\n\t if (undef(val) && !checker.isOptional) {\n\t var tLocation = location ? ' in ' + t(location) : '';\n\t var type = getCheckerDisplay(checker, { short: true });\n\t var stringType = typeof type !== 'object' ? type : stringify(type);\n\t return new Error('Required ' + t(name) + ' not specified' + tLocation + '. Must be ' + t(stringType));\n\t } else {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t copyProps(checker, requiredChecker);\n\t requiredChecker.originalChecker = checker;\n\t return requiredChecker;\n\t}\n\n\tfunction addOptional(checker, disabled) {\n\t var optionalCheck = disabled ? getNoop() : function optionalCheck(val, name, location, obj) {\n\t if (!undef(val)) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, optionalCheck);\n\n\t optionalCheck.isOptional = true;\n\t optionalCheck.displayName = checker.displayName + ' (optional)';\n\t optionalCheck.originalChecker = checker;\n\n\t // the magic line that allows you to add .optional to the end of the checkers\n\t checker.optional = optionalCheck;\n\n\t fixType(checker, checker.optional);\n\t}\n\n\tfunction addNullable(checker, disabled) {\n\t var nullableCheck = disabled ? getNoop() : function nullableCheck(val, name, location, obj) {\n\t if (val !== null) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, nullableCheck);\n\n\t nullableCheck.isNullable = true;\n\t nullableCheck.displayName = checker.displayName + ' (nullable)';\n\t nullableCheck.originalChecker = checker;\n\n\t // the magic line that allows you to add .nullable to the end of the checkers\n\t checker.nullable = nullableCheck;\n\n\t fixType(checker, checker.nullable);\n\t if (!checker.notOptional) {\n\t addOptional(checker.nullable, disabled);\n\t }\n\t}\n\n\tfunction fixType(checker, checkerCopy) {\n\t // fix type, because it's not a straight copy...\n\t // the reason is we need to specify type.__apiCheckData.optional as true for the terse/verbose option.\n\t // we also want to add \"(optional)\" to the types with a string\n\t if (typeof checkerCopy.type === 'object') {\n\t checkerCopy.type = copy(checkerCopy.type); // make our own copy of this\n\t } else if (typeof checkerCopy.type === 'function') {\n\t checkerCopy.type = function () {\n\t return checker.type.apply(checker, arguments);\n\t };\n\t } else {\n\t checkerCopy.type += ' (optional)';\n\t return;\n\t }\n\t checkerCopy.type.__apiCheckData = copy(checker.type.__apiCheckData) || {}; // and this\n\t checkerCopy.type.__apiCheckData.optional = true;\n\t}\n\n\t// UTILS\n\n\tfunction copyProps(src, dest) {\n\t each(Object.keys(src), function (key) {\n\t return dest[key] = src[key];\n\t });\n\t}\n\n\tfunction noop() {}\n\n\tfunction getNoop() {\n\t /* eslint no-shadow:0 */\n\t /* istanbul ignore next */\n\t return function noop() {};\n\t}\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar stringify = __webpack_require__(2);\n\n\tvar _require = __webpack_require__(3);\n\n\tvar typeOf = _require.typeOf;\n\tvar each = _require.each;\n\tvar copy = _require.copy;\n\tvar getCheckerDisplay = _require.getCheckerDisplay;\n\tvar isError = _require.isError;\n\tvar arrayify = _require.arrayify;\n\tvar list = _require.list;\n\tvar getError = _require.getError;\n\tvar nAtL = _require.nAtL;\n\tvar t = _require.t;\n\tvar checkerHelpers = _require.checkerHelpers;\n\tvar undef = _require.undef;\n\tvar setupChecker = checkerHelpers.setupChecker;\n\n\tvar checkers = module.exports = getCheckers();\n\tmodule.exports.getCheckers = getCheckers;\n\n\tfunction getCheckers(disabled) {\n\t return {\n\t array: typeOfCheckGetter('Array'),\n\t bool: typeOfCheckGetter('Boolean'),\n\t number: typeOfCheckGetter('Number'),\n\t string: typeOfCheckGetter('String'),\n\t func: funcCheckGetter(),\n\t object: objectCheckGetter(),\n\n\t emptyObject: emptyObjectCheckGetter(),\n\n\t instanceOf: instanceCheckGetter,\n\t oneOf: oneOfCheckGetter,\n\t oneOfType: oneOfTypeCheckGetter,\n\n\t arrayOf: arrayOfCheckGetter,\n\t objectOf: objectOfCheckGetter,\n\t typeOrArrayOf: typeOrArrayOfCheckGetter,\n\n\t range: rangeCheckGetter,\n\t lessThan: lessThanCheckGetter,\n\t greaterThan: greaterThanCheckGetter,\n\n\t shape: getShapeCheckGetter(),\n\t args: argumentsCheckerGetter(),\n\n\t any: anyCheckGetter(),\n\t 'null': nullCheckGetter()\n\n\t };\n\n\t function typeOfCheckGetter(type) {\n\t var lType = type.toLowerCase();\n\t return setupChecker(function typeOfCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== lType) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function funcCheckGetter() {\n\t var type = 'Function';\n\t var functionChecker = setupChecker(function functionCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== 'function') {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\n\t functionChecker.withProperties = function getWithPropertiesChecker(properties) {\n\t var apiError = checkers.objectOf(checkers.func)(properties, 'properties', 'apiCheck.func.withProperties');\n\t if (isError(apiError)) {\n\t throw apiError;\n\t }\n\t var shapeChecker = checkers.shape(properties, true);\n\t shapeChecker.type.__apiCheckData.type = 'func.withProperties';\n\n\t return setupChecker(function functionWithPropertiesChecker(val, name, location) {\n\t var notFunction = checkers.func(val, name, location);\n\t if (isError(notFunction)) {\n\t return notFunction;\n\t }\n\t return shapeChecker(val, name, location);\n\t }, { type: shapeChecker.type, shortType: 'func.withProperties' }, disabled);\n\t };\n\t return functionChecker;\n\t }\n\n\t function objectCheckGetter() {\n\t var type = 'Object';\n\t var nullType = 'Object (null ok)';\n\t var objectNullOkChecker = setupChecker(function objectNullOkCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== 'object') {\n\t return getError(name, location, nullType);\n\t }\n\t }, { type: nullType }, disabled);\n\n\t var objectChecker = setupChecker(function objectCheckerDefinition(val, name, location) {\n\t if (val === null || isError(objectNullOkChecker(val, name, location))) {\n\t return getError(name, location, objectChecker.type);\n\t }\n\t }, { type: type, nullOk: objectNullOkChecker }, disabled);\n\n\t return objectChecker;\n\t }\n\n\t function instanceCheckGetter(classToCheck) {\n\t return setupChecker(function instanceCheckerDefinition(val, name, location) {\n\t if (!(val instanceof classToCheck)) {\n\t return getError(name, location, classToCheck.name);\n\t }\n\t }, { type: classToCheck.name }, disabled);\n\t }\n\n\t function oneOfCheckGetter(enums) {\n\t var type = {\n\t __apiCheckData: { optional: false, type: 'enum' },\n\t 'enum': enums\n\t };\n\t var shortType = 'oneOf[' + enums.map(function (enm) {\n\t return stringify(enm);\n\t }).join(', ') + ']';\n\t return setupChecker(function oneOfCheckerDefinition(val, name, location) {\n\t if (!enums.some(function (enm) {\n\t return enm === val;\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function oneOfTypeCheckGetter(typeCheckers) {\n\t var checkersDisplay = typeCheckers.map(function (checker) {\n\t return getCheckerDisplay(checker, { short: true });\n\t });\n\t var shortType = 'oneOfType[' + checkersDisplay.join(', ') + ']';\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return typeCheckers.map(function (checker) {\n\t return getCheckerDisplay(checker, options);\n\t });\n\t }\n\t type.__apiCheckData = { optional: false, type: 'oneOfType' };\n\t return setupChecker(function oneOfTypeCheckerDefinition(val, name, location) {\n\t if (!typeCheckers.some(function (checker) {\n\t return !isError(checker(val, name, location));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function arrayOfCheckGetter(checker) {\n\t var shortCheckerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'arrayOf[' + shortCheckerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'arrayOf' };\n\n\t return setupChecker(function arrayOfCheckerDefinition(val, name, location) {\n\t if (isError(checkers.array(val)) || !val.every(function (item) {\n\t return !isError(checker(item));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function objectOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'objectOf[' + checkerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'objectOf' };\n\n\t return setupChecker(function objectOfCheckerDefinition(val, name, location) {\n\t var notObject = checkers.object(val, name, location);\n\t if (isError(notObject)) {\n\t return notObject;\n\t }\n\t var allTypesSuccess = each(val, function (item, key) {\n\t if (isError(checker(item, key, name))) {\n\t return false;\n\t }\n\t });\n\t if (!allTypesSuccess) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function typeOrArrayOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'typeOrArrayOf[' + checkerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\n\t type.__apiCheckData = { optional: false, type: 'typeOrArrayOf' };\n\t return setupChecker(function typeOrArrayOfDefinition(val, name, location, obj) {\n\t if (isError(checkers.oneOfType([checker, checkers.arrayOf(checker)])(val, name, location, obj))) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function getShapeCheckGetter() {\n\t function shapeCheckGetter(shape, nonObject) {\n\t var shapeTypes = {};\n\t each(shape, function (checker, prop) {\n\t shapeTypes[prop] = getCheckerDisplay(checker);\n\t });\n\t function type() {\n\t var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n\t var ret = {};\n\t var terse = options.terse;\n\t var obj = options.obj;\n\t var addHelpers = options.addHelpers;\n\n\t var parentRequired = options.required;\n\t each(shape, function (checker, prop) {\n\t /* eslint complexity:[2, 6] */\n\t var specified = obj && obj.hasOwnProperty(prop);\n\t var required = undef(parentRequired) ? !checker.isOptional : parentRequired;\n\t if (!terse || (specified || !checker.isOptional)) {\n\t ret[prop] = getCheckerDisplay(checker, { terse: terse, obj: obj && obj[prop], required: required, addHelpers: addHelpers });\n\t }\n\t if (addHelpers) {\n\t modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required);\n\t }\n\t });\n\t return ret;\n\n\t function modifyTypeDisplayToHelpOut(theRet, prop, specified, checker, required) {\n\t if (!specified && required && !checker.isOptional) {\n\t var item = 'ITEM';\n\t if (checker.type && checker.type.__apiCheckData) {\n\t item = checker.type.__apiCheckData.type.toUpperCase();\n\t }\n\t addHelper('missing', 'MISSING THIS ' + item, ' <-- YOU ARE MISSING THIS');\n\t } else if (specified) {\n\t var error = checker(obj[prop], prop, null, obj);\n\t if (isError(error)) {\n\t addHelper('error', 'THIS IS THE PROBLEM: ' + error.message, ' <-- THIS IS THE PROBLEM: ' + error.message);\n\t }\n\t }\n\n\t function addHelper(property, objectMessage, stringMessage) {\n\t if (typeof theRet[prop] === 'string') {\n\t theRet[prop] += stringMessage;\n\t } else {\n\t theRet[prop].__apiCheckData[property] = objectMessage;\n\t }\n\t }\n\t }\n\t }\n\n\t type.__apiCheckData = { strict: false, optional: false, type: 'shape' };\n\t var shapeChecker = setupChecker(function shapeCheckerDefinition(val, name, location) {\n\t /* eslint complexity:[2, 6] */\n\t var isObject = !nonObject && checkers.object(val, name, location);\n\t if (isError(isObject)) {\n\t return isObject;\n\t }\n\t var shapePropError = undefined;\n\t location = location ? location + (name ? '/' : '') : '';\n\t name = name || '';\n\t each(shape, function (checker, prop) {\n\t if (val.hasOwnProperty(prop) || !checker.isOptional) {\n\t shapePropError = checker(val[prop], prop, '' + location + name, val);\n\t return !isError(shapePropError);\n\t }\n\t });\n\t if (isError(shapePropError)) {\n\t return shapePropError;\n\t }\n\t }, { type: type, shortType: 'shape' }, disabled);\n\n\t function strictType() {\n\t return type.apply(undefined, arguments);\n\t }\n\n\t strictType.__apiCheckData = copy(shapeChecker.type.__apiCheckData);\n\t strictType.__apiCheckData.strict = true;\n\t shapeChecker.strict = setupChecker(function strictShapeCheckerDefinition(val, name, location) {\n\t var shapeError = shapeChecker(val, name, location);\n\t if (isError(shapeError)) {\n\t return shapeError;\n\t }\n\t var allowedProperties = Object.keys(shape);\n\t var extraProps = Object.keys(val).filter(function (prop) {\n\t return allowedProperties.indexOf(prop) === -1;\n\t });\n\t if (extraProps.length) {\n\t return new Error(nAtL(name, location) + ' cannot have extra properties: ' + t(extraProps.join('`, `')) + '.' + ('It is limited to ' + t(allowedProperties.join('`, `'))));\n\t }\n\t }, { type: strictType, shortType: 'strict shape' }, disabled);\n\n\t return shapeChecker;\n\t }\n\n\t shapeCheckGetter.ifNot = function ifNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = 'specified only if ' + otherProps[0] + ' is not specified';\n\t } else {\n\t description = 'specified only if none of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t }\n\t var shortType = 'ifNot[' + otherProps.join(', ') + ']';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function ifNotChecker(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (propExists === otherPropsExist) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { notRequired: true, type: type, shortType: shortType }, disabled);\n\t };\n\n\t shapeCheckGetter.onlyIf = function onlyIf(otherProps, propChecker) {\n\t otherProps = arrayify(otherProps);\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = 'specified only if ' + otherProps[0] + ' is also specified';\n\t } else {\n\t description = 'specified only if all of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t }\n\t var shortType = 'onlyIf[' + otherProps.join(', ') + ']';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function onlyIfCheckerDefinition(prop, propName, location, obj) {\n\t var othersPresent = otherProps.every(function (property) {\n\t return obj.hasOwnProperty(property);\n\t });\n\t if (!othersPresent) {\n\t return getError(propName, location, type);\n\t } else {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t };\n\n\t shapeCheckGetter.requiredIfNot = function shapeRequiredIfNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t return getRequiredIfNotChecker(false, otherProps, propChecker);\n\t };\n\n\t shapeCheckGetter.requiredIfNot.all = function shapeRequiredIfNotAll(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t throw new Error('requiredIfNot.all must be passed an array');\n\t }\n\t return getRequiredIfNotChecker(true, otherProps, propChecker);\n\t };\n\n\t function getRequiredIfNotChecker(all, otherProps, propChecker) {\n\t var props = t(otherProps.join(', '));\n\t var ifProps = 'if ' + (all ? 'all of' : 'at least one of');\n\t var description = 'specified ' + ifProps + ' these are not specified: ' + props + ' (otherwise it\\'s optional)';\n\t var shortType = 'requiredIfNot' + (all ? '.all' : '') + '[' + otherProps.join(', ') + '}]';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var iteration = all ? 'every' : 'some';\n\t var otherPropsExist = otherProps[iteration](function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (!otherPropsExist && !propExists) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, notRequired: true }, disabled);\n\t }\n\n\t return shapeCheckGetter;\n\n\t function getTypeForShapeChild(propChecker, description, shortType) {\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(propChecker);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'ifNot', description: description };\n\t return type;\n\t }\n\t }\n\n\t function argumentsCheckerGetter() {\n\t var type = 'function arguments';\n\t return setupChecker(function argsCheckerDefinition(val, name, location) {\n\t if (Array.isArray(val) || isError(checkers.object(val)) || isError(checkers.number(val.length))) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function anyCheckGetter() {\n\t return setupChecker(function anyCheckerDefinition() {\n\t // don't do anything\n\t }, { type: 'any' }, disabled);\n\t }\n\n\t function nullCheckGetter() {\n\t var type = 'null';\n\t return setupChecker(function nullChecker(val, name, location) {\n\t if (val !== null) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function rangeCheckGetter(min, max) {\n\t var type = 'Range (' + min + ' - ' + max + ')';\n\t return setupChecker(function rangeChecker(val, name, location) {\n\t if (typeof val !== 'number' || val < min || val > max) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function lessThanCheckGetter(min) {\n\t var type = 'lessThan[' + min + ']';\n\t return setupChecker(function lessThanChecker(val, name, location) {\n\t if (typeof val !== 'number' || val > min) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function greaterThanCheckGetter(max) {\n\t var type = 'greaterThan[' + max + ']';\n\t return setupChecker(function greaterThanChecker(val, name, location) {\n\t if (typeof val !== 'number' || val < max) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function emptyObjectCheckGetter() {\n\t var type = 'empty object';\n\t return setupChecker(function emptyObjectChecker(val, name, location) {\n\t if (typeOf(val) !== 'object' || val === null || Object.keys(val).length) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t}\n\n/***/ }\n/******/ ])\n});\n;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2FwaS1jaGVjay9kaXN0L2FwaS1jaGVjay5qcz83ZWE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxvQ0FBb0M7QUFDcEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGLHVDQUF1Qyx1Q0FBdUMsa0JBQWtCOztBQUVoRzs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWTtBQUNaLEVBQUU7QUFDRjs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBLHdFQUF3RTtBQUN4RSwrRUFBK0U7O0FBRS9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7O0FBRUo7O0FBRUE7QUFDQTtBQUNBLGNBQWMsTUFBTTtBQUNwQixjQUFjLE1BQU07QUFDcEIsY0FBYyxPQUFP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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEdBQUcsYUFBYTtBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEdBQUcsYUFBYTtBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEdBQUcsYUFBYTtBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiMi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vISBhcGktY2hlY2sgdmVyc2lvbiA3LjUuNSBidWlsdCB3aXRoIOKZpSBieSBLZW50IEMuIERvZGRzIDxrZW50QGRvZGRzZmFtaWx5LnVzPiAoaHR0cDovL2tlbnQuZG9kZHNmYW1pbHkudXMpICjDsyDDrF/DrSk9w7PDsj0ow6xfw60gw7IpXG5cbihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiYXBpQ2hlY2tcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiYXBpQ2hlY2tcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fSxcbi8qKioqKiovIFx0XHRcdGlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGxvYWRlZDogZmFsc2Vcbi8qKioqKiovIFx0XHR9O1xuXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuXG5cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cblx0dmFyIF9hcGlDaGVjayA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cblx0dmFyIF9hcGlDaGVjazIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hcGlDaGVjayk7XG5cblx0ZXhwb3J0c1snZGVmYXVsdCddID0gX2FwaUNoZWNrMlsnZGVmYXVsdCddO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgc3RyaW5naWZ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0dmFyIGFwaUNoZWNrVXRpbCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdHZhciBlYWNoID0gYXBpQ2hlY2tVdGlsLmVhY2g7XG5cdHZhciBpc0Vycm9yID0gYXBpQ2hlY2tVdGlsLmlzRXJyb3I7XG5cdHZhciB0ID0gYXBpQ2hlY2tVdGlsLnQ7XG5cdHZhciBhcnJheWlmeSA9IGFwaUNoZWNrVXRpbC5hcnJheWlmeTtcblx0dmFyIGdldENoZWNrZXJEaXNwbGF5ID0gYXBpQ2hlY2tVdGlsLmdldENoZWNrZXJEaXNwbGF5O1xuXHR2YXIgdHlwZU9mID0gYXBpQ2hlY2tVdGlsLnR5cGVPZjtcblx0dmFyIGdldEVycm9yID0gYXBpQ2hlY2tVdGlsLmdldEVycm9yO1xuXG5cdHZhciBjaGVja2VycyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdHZhciBhcGlDaGVja0FwaXMgPSBnZXRBcGlDaGVja0FwaXMoKTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldEFwaUNoZWNrSW5zdGFuY2U7XG5cdG1vZHVsZS5leHBvcnRzLlZFUlNJT04gPSAoXCI3LjUuNVwiKTtcblx0bW9kdWxlLmV4cG9ydHMudXRpbHMgPSBhcGlDaGVja1V0aWw7XG5cdG1vZHVsZS5leHBvcnRzLmdsb2JhbENvbmZpZyA9IHtcblx0ICB2ZXJib3NlOiBmYWxzZSxcblx0ICBkaXNhYmxlZDogZmFsc2Vcblx0fTtcblxuXHR2YXIgYXBpQ2hlY2tBcGlDaGVjayA9IGdldEFwaUNoZWNrSW5zdGFuY2Uoe1xuXHQgIG91dHB1dDogeyBwcmVmaXg6ICdhcGlDaGVjaycgfVxuXHR9KTtcblx0bW9kdWxlLmV4cG9ydHMuaW50ZXJuYWxDaGVja2VyID0gYXBpQ2hlY2tBcGlDaGVjaztcblxuXHRlYWNoKGNoZWNrZXJzLCBmdW5jdGlvbiAoY2hlY2tlciwgbmFtZSkge1xuXHQgIHJldHVybiBtb2R1bGUuZXhwb3J0c1tuYW1lXSA9IGNoZWNrZXI7XG5cdH0pO1xuXG5cdGZ1bmN0aW9uIGdldEFwaUNoZWNrSW5zdGFuY2UoKSB7XG5cdCAgdmFyIGNvbmZpZyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXHQgIHZhciBleHRyYUNoZWNrZXJzID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMV07XG5cblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgNl0gKi9cblx0ICBpZiAoYXBpQ2hlY2tBcGlDaGVjayAmJiBhcmd1bWVudHMubGVuZ3RoKSB7XG5cdCAgICBhcGlDaGVja0FwaUNoZWNrWyd0aHJvdyddKGFwaUNoZWNrQXBpcy5nZXRBcGlDaGVja0luc3RhbmNlQ2hlY2tlcnMsIGFyZ3VtZW50cywge1xuXHQgICAgICBwcmVmaXg6ICdjcmVhdGluZyBhbiBhcGlDaGVjayBpbnN0YW5jZSdcblx0ICAgIH0pO1xuXHQgIH1cblxuXHQgIHZhciBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHtcblx0ICAgICd0aHJvdyc6IGdldEFwaUNoZWNrKHRydWUpLFxuXHQgICAgd2FybjogZ2V0QXBpQ2hlY2soZmFsc2UpLFxuXHQgICAgZ2V0RXJyb3JNZXNzYWdlOiBnZXRFcnJvck1lc3NhZ2UsXG5cdCAgICBoYW5kbGVFcnJvck1lc3NhZ2U6IGhhbmRsZUVycm9yTWVzc2FnZSxcblx0ICAgIGNvbmZpZzoge1xuXHQgICAgICBvdXRwdXQ6IGNvbmZpZy5vdXRwdXQgfHwge1xuXHQgICAgICAgIHByZWZpeDogJycsXG5cdCAgICAgICAgc3VmZml4OiAnJyxcblx0ICAgICAgICBkb2NzQmFzZVVybDogJydcblx0ICAgICAgfSxcblx0ICAgICAgdmVyYm9zZTogY29uZmlnLnZlcmJvc2UgfHwgZmFsc2UsXG5cdCAgICAgIGRpc2FibGVkOiBjb25maWcuZGlzYWJsZWQgfHwgZmFsc2Vcblx0ICAgIH0sXG5cdCAgICB1dGlsczogYXBpQ2hlY2tVdGlsXG5cdCAgfTtcblxuXHQgIGVhY2goYWRkaXRpb25hbFByb3BlcnRpZXMsIGZ1bmN0aW9uICh3cmFwcGVyLCBuYW1lKSB7XG5cdCAgICByZXR1cm4gYXBpQ2hlY2tbbmFtZV0gPSB3cmFwcGVyO1xuXHQgIH0pO1xuXG5cdCAgdmFyIGRpc2FibGVkID0gYXBpQ2hlY2suZGlzYWJsZWQgfHwgbW9kdWxlLmV4cG9ydHMuZ2xvYmFsQ29uZmlnLmRpc2FibGVkO1xuXHQgIGVhY2goY2hlY2tlcnMuZ2V0Q2hlY2tlcnMoZGlzYWJsZWQpLCBmdW5jdGlvbiAoY2hlY2tlciwgbmFtZSkge1xuXHQgICAgcmV0dXJuIGFwaUNoZWNrW25hbWVdID0gY2hlY2tlcjtcblx0ICB9KTtcblx0ICBlYWNoKGV4dHJhQ2hlY2tlcnMsIGZ1bmN0aW9uIChjaGVja2VyLCBuYW1lKSB7XG5cdCAgICByZXR1cm4gYXBpQ2hlY2tbbmFtZV0gPSBjaGVja2VyO1xuXHQgIH0pO1xuXG5cdCAgcmV0dXJuIGFwaUNoZWNrO1xuXG5cdCAgLyoqXG5cdCAgICogVGhpcyBpcyB0aGUgaW5zdGFuY2UgZnVuY3Rpb24uIE90aGVyIHRoaW5ncyBhcmUgYXR0YWNoZWQgdG8gdGhpcyBzZWUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGFib3ZlLlxuXHQgICAqIEBwYXJhbSB7QXJyYXl9IGFwaSAtIHRoZSBjaGVja2VycyB0byBjaGVjayB3aXRoXG5cdCAgICogQHBhcmFtIHtBcnJheX0gYXJncyAtIHRoZSBhcmdzIHRvIGNoZWNrXG5cdCAgICogQHBhcmFtIHtPYmplY3R9IG91dHB1dCAtIG91dHB1dCBvcHRpb25zXG5cdCAgICogQHJldHVybnMge09iamVjdH0gLSBpZiB0aGlzIGhhcyBhIGZhaWxlZCA9IHRydWUgcHJvcGVydHksIHRoZW4gaXQgZmFpbGVkXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gYXBpQ2hlY2soYXBpLCBhcmdzLCBvdXRwdXQpIHtcblx0ICAgIC8qIGVzbGludCBjb21wbGV4aXR5OlsyLCA4XSAqL1xuXHQgICAgaWYgKGFwaUNoZWNrLmNvbmZpZy5kaXNhYmxlZCB8fCBtb2R1bGUuZXhwb3J0cy5nbG9iYWxDb25maWcuZGlzYWJsZWQpIHtcblx0ICAgICAgcmV0dXJuIHtcblx0ICAgICAgICBhcGlUeXBlczoge30sIGFyZ1R5cGVzOiB7fSxcblx0ICAgICAgICBwYXNzZWQ6IHRydWUsIG1lc3NhZ2U6ICcnLFxuXHQgICAgICAgIGZhaWxlZDogZmFsc2Vcblx0ICAgICAgfTsgLy8gZW1wdHkgdmVyc2lvbiBvZiB3aGF0IGlzIG5vcm1hbGx5IHJldHVybmVkXG5cdCAgICB9XG5cdCAgICBjaGVja0FwaUNoZWNrQXBpKGFyZ3VtZW50cyk7XG5cdCAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXBpKSkge1xuXHQgICAgICBhcGkgPSBbYXBpXTtcblx0ICAgICAgYXJncyA9IFthcmdzXTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIC8vIHR1cm4gYXJndW1lbnRzIGludG8gYW4gYXJyYXlcblx0ICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpO1xuXHQgICAgfVxuXHQgICAgdmFyIG1lc3NhZ2VzID0gY2hlY2tFbm91Z2hBcmdzKGFwaSwgYXJncyk7XG5cdCAgICBpZiAoIW1lc3NhZ2VzLmxlbmd0aCkge1xuXHQgICAgICAvLyB0aGlzIGlzIHdoZXJlIHdlIGFjdHVhbGx5IGdvIHBlcmZvcm0gdGhlIGNoZWNrcy5cblx0ICAgICAgbWVzc2FnZXMgPSBjaGVja0FwaVdpdGhBcmdzKGFwaSwgYXJncyk7XG5cdCAgICB9XG5cblx0ICAgIHZhciByZXR1cm5PYmplY3QgPSBnZXRUeXBlcyhhcGksIGFyZ3MpO1xuXHQgICAgcmV0dXJuT2JqZWN0LmFyZ3MgPSBhcmdzO1xuXHQgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCkge1xuXHQgICAgICByZXR1cm5PYmplY3QubWVzc2FnZSA9IGFwaUNoZWNrLmdldEVycm9yTWVzc2FnZShhcGksIGFyZ3MsIG1lc3NhZ2VzLCBvdXRwdXQpO1xuXHQgICAgICByZXR1cm5PYmplY3QuZmFpbGVkID0gdHJ1ZTtcblx0ICAgICAgcmV0dXJuT2JqZWN0LnBhc3NlZCA9IGZhbHNlO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuT2JqZWN0Lm1lc3NhZ2UgPSAnJztcblx0ICAgICAgcmV0dXJuT2JqZWN0LmZhaWxlZCA9IGZhbHNlO1xuXHQgICAgICByZXR1cm5PYmplY3QucGFzc2VkID0gdHJ1ZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiByZXR1cm5PYmplY3Q7XG5cdCAgfVxuXG5cdCAgLyoqXG5cdCAgICogY2hlY2tBcGlDaGVja0FwaSwgc2hvdWxkIGJlIHJlYWQgbGlrZTogY2hlY2sgYXBpQ2hlY2sgYXBpLiBBcyBpbiwgY2hlY2sgdGhlIGFwaSBmb3IgYXBpQ2hlY2sgOi0pXG5cdCAgICogQHBhcmFtIHtBcnJheX0gY2hlY2tBcGlBcmdzIC0gYXJncyBwcm92aWRlZCB0byBhcGlDaGVjayBmdW5jdGlvblxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIGNoZWNrQXBpQ2hlY2tBcGkoY2hlY2tBcGlBcmdzKSB7XG5cdCAgICB2YXIgYXBpID0gY2hlY2tBcGlBcmdzWzBdO1xuXHQgICAgdmFyIGFyZ3MgPSBjaGVja0FwaUFyZ3NbMV07XG5cdCAgICB2YXIgaXNBcnJheU9yQXJncyA9IEFycmF5LmlzQXJyYXkoYXJncykgfHwgYXJncyAmJiB0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGFyZ3MubGVuZ3RoID09PSAnbnVtYmVyJztcblxuXHQgICAgaWYgKEFycmF5LmlzQXJyYXkoYXBpKSAmJiAhaXNBcnJheU9yQXJncykge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoZ2V0RXJyb3JNZXNzYWdlKGFwaSwgW2FyZ3NdLCBbJ0lmIGFuIGFycmF5IGlzIHByb3ZpZGVkIGZvciB0aGUgYXBpLCBhbiBhcnJheSBtdXN0IGJlIHByb3ZpZGVkIGZvciB0aGUgYXJncyBhcyB3ZWxsLiddLCB7IHByZWZpeDogJ2FwaUNoZWNrJyB9KSk7XG5cdCAgICB9XG5cdCAgICAvLyBkb2cgZm9vZGluZyBoZXJlXG5cdCAgICB2YXIgZXJyb3JzID0gY2hlY2tBcGlXaXRoQXJncyhhcGlDaGVja0FwaXMuY2hlY2tBcGlDaGVja0FwaSwgY2hlY2tBcGlBcmdzKTtcblx0ICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG5cdCAgICAgIHZhciBtZXNzYWdlID0gYXBpQ2hlY2suZ2V0RXJyb3JNZXNzYWdlKGFwaUNoZWNrQXBpcy5jaGVja0FwaUNoZWNrQXBpLCBjaGVja0FwaUFyZ3MsIGVycm9ycywge1xuXHQgICAgICAgIHByZWZpeDogJ2FwaUNoZWNrJ1xuXHQgICAgICB9KTtcblx0ICAgICAgYXBpQ2hlY2suaGFuZGxlRXJyb3JNZXNzYWdlKG1lc3NhZ2UsIHRydWUpO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldEFwaUNoZWNrKHNob3VsZFRocm93KSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gYXBpQ2hlY2tXcmFwcGVyKGFwaSwgYXJncywgb3V0cHV0KSB7XG5cdCAgICAgIHZhciByZXN1bHQgPSBhcGlDaGVjayhhcGksIGFyZ3MsIG91dHB1dCk7XG5cdCAgICAgIGFwaUNoZWNrLmhhbmRsZUVycm9yTWVzc2FnZShyZXN1bHQubWVzc2FnZSwgc2hvdWxkVGhyb3cpO1xuXHQgICAgICByZXR1cm4gcmVzdWx0OyAvLyB3b250IGdldCBoZXJlIGlmIGFuIGVycm9yIGlzIHRocm93blxuXHQgICAgfTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBoYW5kbGVFcnJvck1lc3NhZ2UobWVzc2FnZSwgc2hvdWxkVGhyb3cpIHtcblx0ICAgIGlmIChzaG91bGRUaHJvdyAmJiBtZXNzYWdlKSB7XG5cdCAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcblx0ICAgIH0gZWxzZSBpZiAobWVzc2FnZSkge1xuXHQgICAgICAvKiBlc2xpbnQgbm8tY29uc29sZTowICovXG5cdCAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICBmdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UoYXBpLCBhcmdzKSB7XG5cdCAgICB2YXIgbWVzc2FnZXMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyBbXSA6IGFyZ3VtZW50c1syXTtcblx0ICAgIHZhciBvdXRwdXQgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDMgfHwgYXJndW1lbnRzWzNdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1szXTtcblxuXHQgICAgdmFyIGdPdXQgPSBhcGlDaGVjay5jb25maWcub3V0cHV0IHx8IHt9O1xuXHQgICAgdmFyIHByZWZpeCA9IGdldFByZWZpeCgpO1xuXHQgICAgdmFyIHN1ZmZpeCA9IGdldFN1ZmZpeCgpO1xuXHQgICAgdmFyIHVybCA9IGdldFVybCgpO1xuXHQgICAgdmFyIG1lc3NhZ2UgPSAnYXBpQ2hlY2sgZmFpbGVkISAnICsgbWVzc2FnZXMuam9pbignLCAnKTtcblx0ICAgIHZhciBwYXNzZWRBbmRTaG91bGRIYXZlUGFzc2VkID0gJ1xcblxcbicgKyBidWlsZE1lc3NhZ2VGcm9tQXBpQW5kQXJncyhhcGksIGFyZ3MpO1xuXHQgICAgcmV0dXJuIChwcmVmaXggKyAnICcgKyBtZXNzYWdlICsgJyAnICsgc3VmZml4ICsgJyAnICsgKHVybCB8fCAnJykgKyBwYXNzZWRBbmRTaG91bGRIYXZlUGFzc2VkKS50cmltKCk7XG5cblx0ICAgIGZ1bmN0aW9uIGdldFByZWZpeCgpIHtcblx0ICAgICAgdmFyIHAgPSBvdXRwdXQub25seVByZWZpeDtcblx0ICAgICAgaWYgKCFwKSB7XG5cdCAgICAgICAgcCA9ICgoZ091dC5wcmVmaXggfHwgJycpICsgJyAnICsgKG91dHB1dC5wcmVmaXggfHwgJycpKS50cmltKCk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHA7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGdldFN1ZmZpeCgpIHtcblx0ICAgICAgdmFyIHMgPSBvdXRwdXQub25seVN1ZmZpeDtcblx0ICAgICAgaWYgKCFzKSB7XG5cdCAgICAgICAgcyA9ICgob3V0cHV0LnN1ZmZpeCB8fCAnJykgKyAnICcgKyAoZ091dC5zdWZmaXggfHwgJycpKS50cmltKCk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHM7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGdldFVybCgpIHtcblx0ICAgICAgdmFyIHUgPSBvdXRwdXQudXJsO1xuXHQgICAgICBpZiAoIXUpIHtcblx0ICAgICAgICB1ID0gZ091dC5kb2NzQmFzZVVybCAmJiBvdXRwdXQudXJsU3VmZml4ICYmICgnJyArIGdPdXQuZG9jc0Jhc2VVcmwgKyBvdXRwdXQudXJsU3VmZml4KS50cmltKCk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHU7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gYnVpbGRNZXNzYWdlRnJvbUFwaUFuZEFyZ3MoYXBpLCBhcmdzKSB7XG5cdCAgICB2YXIgX2dldFR5cGVzID0gZ2V0VHlwZXMoYXBpLCBhcmdzKTtcblxuXHQgICAgdmFyIGFwaVR5cGVzID0gX2dldFR5cGVzLmFwaVR5cGVzO1xuXHQgICAgdmFyIGFyZ1R5cGVzID0gX2dldFR5cGVzLmFyZ1R5cGVzO1xuXG5cdCAgICB2YXIgY29weSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MgfHwgW10pO1xuXHQgICAgdmFyIHJlcGxhY2VkSXRlbXMgPSBbXTtcblx0ICAgIHJlcGxhY2VGdW5jdGlvbldpdGhOYW1lKGNvcHkpO1xuXHQgICAgdmFyIHBhc3NlZEFyZ3MgPSBnZXRPYmplY3RTdHJpbmcoY29weSk7XG5cdCAgICBhcmdUeXBlcyA9IGdldE9iamVjdFN0cmluZyhhcmdUeXBlcyk7XG5cdCAgICBhcGlUeXBlcyA9IGdldE9iamVjdFN0cmluZyhhcGlUeXBlcyk7XG5cblx0ICAgIHJldHVybiBnZW5lcmF0ZU1lc3NhZ2UoKTtcblxuXHQgICAgLy8gZnVuY3Rpb25zXG5cblx0ICAgIGZ1bmN0aW9uIHJlcGxhY2VGdW5jdGlvbldpdGhOYW1lKG9iaikge1xuXHQgICAgICBlYWNoKG9iaiwgZnVuY3Rpb24gKHZhbCwgbmFtZSkge1xuXHQgICAgICAgIC8qIGVzbGludCBjb21wbGV4aXR5OlsyLCA2XSAqL1xuXHQgICAgICAgIGlmIChyZXBsYWNlZEl0ZW1zLmluZGV4T2YodmFsKSA9PT0gLTEpIHtcblx0ICAgICAgICAgIC8vIGF2b2lkIHJlY3Vyc2l2ZSBwcm9ibGVtc1xuXHQgICAgICAgICAgcmVwbGFjZWRJdGVtcy5wdXNoKHZhbCk7XG5cdCAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcblx0ICAgICAgICAgICAgcmVwbGFjZUZ1bmN0aW9uV2l0aE5hbWUob2JqKTtcblx0ICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgICAgICBvYmpbbmFtZV0gPSB2YWwuZGlzcGxheU5hbWUgfHwgdmFsLm5hbWUgfHwgJ2Fub255bW91cyBmdW5jdGlvbic7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9KTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gZ2V0T2JqZWN0U3RyaW5nKHR5cGVzKSB7XG5cdCAgICAgIGlmICghdHlwZXMgfHwgIXR5cGVzLmxlbmd0aCkge1xuXHQgICAgICAgIHJldHVybiAnbm90aGluZyc7XG5cdCAgICAgIH0gZWxzZSBpZiAodHlwZXMgJiYgdHlwZXMubGVuZ3RoID09PSAxKSB7XG5cdCAgICAgICAgdHlwZXMgPSB0eXBlc1swXTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gc3RyaW5naWZ5KHR5cGVzLCBudWxsLCAyKTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gZ2VuZXJhdGVNZXNzYWdlKCkge1xuXHQgICAgICB2YXIgbiA9ICdcXG4nO1xuXHQgICAgICB2YXIgdXNlUyA9IHRydWU7XG5cdCAgICAgIGlmIChhcmdzICYmIGFyZ3MubGVuZ3RoID09PSAxKSB7XG5cdCAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnb2JqZWN0JyAmJiBhcmdzWzBdICE9PSBudWxsKSB7XG5cdCAgICAgICAgICB1c2VTID0gISFPYmplY3Qua2V5cyhhcmdzWzBdKS5sZW5ndGg7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHVzZVMgPSBmYWxzZTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHR5cGVzID0gJ3R5cGUnICsgKHVzZVMgPyAncycgOiAnJyk7XG5cdCAgICAgIHZhciBuZXdMaW5lID0gbiArIG47XG5cdCAgICAgIHJldHVybiAnWW91IHBhc3NlZDonICsgbiArIHBhc3NlZEFyZ3MgKyBuZXdMaW5lICsgKCdXaXRoIHRoZSAnICsgdHlwZXMgKyAnOicgKyBuICsgYXJnVHlwZXMgKyBuZXdMaW5lKSArICgnVGhlIEFQSSBjYWxscyBmb3I6JyArIG4gKyBhcGlUeXBlcyk7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0VHlwZXMoYXBpLCBhcmdzKSB7XG5cdCAgICBhcGkgPSBhcnJheWlmeShhcGkpO1xuXHQgICAgYXJncyA9IGFycmF5aWZ5KGFyZ3MpO1xuXHQgICAgdmFyIGFwaVR5cGVzID0gYXBpLm1hcChmdW5jdGlvbiAoY2hlY2tlciwgaW5kZXgpIHtcblx0ICAgICAgdmFyIHNwZWNpZmllZCA9IG1vZHVsZS5leHBvcnRzLmdsb2JhbENvbmZpZy5oYXNPd25Qcm9wZXJ0eSgndmVyYm9zZScpO1xuXHQgICAgICByZXR1cm4gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwge1xuXHQgICAgICAgIHRlcnNlOiBzcGVjaWZpZWQgPyAhbW9kdWxlLmV4cG9ydHMuZ2xvYmFsQ29uZmlnLnZlcmJvc2UgOiAhYXBpQ2hlY2suY29uZmlnLnZlcmJvc2UsXG5cdCAgICAgICAgb2JqOiBhcmdzW2luZGV4XSxcblx0ICAgICAgICBhZGRIZWxwZXJzOiB0cnVlXG5cdCAgICAgIH0pO1xuXHQgICAgfSk7XG5cdCAgICB2YXIgYXJnVHlwZXMgPSBhcmdzLm1hcChmdW5jdGlvbiAoYXJnKSB7XG5cdCAgICAgIHJldHVybiBnZXRBcmdEaXNwbGF5KGFyZywgW10pO1xuXHQgICAgfSk7XG5cdCAgICByZXR1cm4geyBhcmdUeXBlczogYXJnVHlwZXMsIGFwaVR5cGVzOiBhcGlUeXBlcyB9O1xuXHQgIH1cblx0fVxuXG5cdC8vIFNUQVRFTEVTUyBGVU5DVElPTlNcblxuXHQvKipcblx0ICogVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyBmb3IgYWN0dWFsbHkgY2hlY2tpbmcgdGhlIGFyZ3VtZW50cyB3aXRoIHRoZSBhcGkuXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFwaSAtIGNoZWNrZXJzXG5cdCAqIEBwYXJhbSAge0FycmF5fSBhcmdzIC0gYW5kIGFyZ3VtZW50cyBvYmplY3Rcblx0ICogQHJldHVybnMge0FycmF5fSAtIHRoZSBlcnJvciBtZXNzYWdlc1xuXHQgKi9cblx0ZnVuY3Rpb24gY2hlY2tBcGlXaXRoQXJncyhhcGksIGFyZ3MpIHtcblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgN10gKi9cblx0ICB2YXIgbWVzc2FnZXMgPSBbXTtcblx0ICB2YXIgZmFpbGVkID0gZmFsc2U7XG5cdCAgdmFyIGNoZWNrZXJJbmRleCA9IDA7XG5cdCAgdmFyIGFyZ0luZGV4ID0gMDtcblx0ICB2YXIgYXJnID0gdW5kZWZpbmVkLFxuXHQgICAgICBjaGVja2VyID0gdW5kZWZpbmVkLFxuXHQgICAgICByZXMgPSB1bmRlZmluZWQsXG5cdCAgICAgIGxhc3RDaGVja2VyID0gdW5kZWZpbmVkLFxuXHQgICAgICBhcmdOYW1lID0gdW5kZWZpbmVkLFxuXHQgICAgICBhcmdGYWlsZWQgPSB1bmRlZmluZWQsXG5cdCAgICAgIHNraXBQcmV2aW91c0NoZWNrZXIgPSB1bmRlZmluZWQ7XG5cdCAgLyoganNoaW50IC1XMDg0ICovXG5cdCAgd2hpbGUgKChjaGVja2VyID0gYXBpW2NoZWNrZXJJbmRleCsrXSkgJiYgYXJnSW5kZXggPCBhcmdzLmxlbmd0aCkge1xuXHQgICAgYXJnID0gYXJnc1thcmdJbmRleCsrXTtcblx0ICAgIGFyZ05hbWUgPSAnQXJndW1lbnQgJyArIGFyZ0luZGV4ICsgKGNoZWNrZXIuaXNPcHRpb25hbCA/ICcgKG9wdGlvbmFsKScgOiAnJyk7XG5cdCAgICByZXMgPSBjaGVja2VyKGFyZywgJ3ZhbHVlJywgYXJnTmFtZSk7XG5cdCAgICBhcmdGYWlsZWQgPSBpc0Vycm9yKHJlcyk7XG5cdCAgICBsYXN0Q2hlY2tlciA9IGNoZWNrZXJJbmRleCA+PSBhcGkubGVuZ3RoO1xuXHQgICAgc2tpcFByZXZpb3VzQ2hlY2tlciA9IGNoZWNrZXJJbmRleCA+IDEgJiYgYXBpW2NoZWNrZXJJbmRleCAtIDFdLmlzT3B0aW9uYWw7XG5cdCAgICBpZiAoYXJnRmFpbGVkICYmIGxhc3RDaGVja2VyIHx8IGFyZ0ZhaWxlZCAmJiAhbGFzdENoZWNrZXIgJiYgIWNoZWNrZXIuaXNPcHRpb25hbCAmJiAhc2tpcFByZXZpb3VzQ2hlY2tlcikge1xuXHQgICAgICBmYWlsZWQgPSB0cnVlO1xuXHQgICAgICBtZXNzYWdlcy5wdXNoKGdldENoZWNrZXJFcnJvck1lc3NhZ2UocmVzLCBjaGVja2VyLCBhcmcpKTtcblx0ICAgIH0gZWxzZSBpZiAoYXJnRmFpbGVkICYmIGNoZWNrZXIuaXNPcHRpb25hbCkge1xuXHQgICAgICBhcmdJbmRleC0tO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgbWVzc2FnZXMucHVzaCh0KGFyZ05hbWUpICsgJyBwYXNzZWQnKTtcblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuIGZhaWxlZCA/IG1lc3NhZ2VzIDogW107XG5cdH1cblxuXHRjaGVja2VyVHlwZVR5cGUudHlwZSA9ICdmdW5jdGlvbiB3aXRoIF9fYXBpQ2hlY2tEYXRhIHByb3BlcnR5IGFuZCBgJHtmdW5jdGlvbi50eXBlfWAgcHJvcGVydHknO1xuXHRmdW5jdGlvbiBjaGVja2VyVHlwZVR5cGUoY2hlY2tlclR5cGUsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgdmFyIGFwaUNoZWNrRGF0YUNoZWNrZXIgPSBjaGVja2Vycy5zaGFwZSh7XG5cdCAgICB0eXBlOiBjaGVja2Vycy5zdHJpbmcsXG5cdCAgICBvcHRpb25hbDogY2hlY2tlcnMuYm9vbFxuXHQgIH0pO1xuXHQgIHZhciBhc0Z1bmMgPSBjaGVja2Vycy5mdW5jLndpdGhQcm9wZXJ0aWVzKHsgX19hcGlDaGVja0RhdGE6IGFwaUNoZWNrRGF0YUNoZWNrZXIgfSk7XG5cdCAgdmFyIGFzU2hhcGUgPSBjaGVja2Vycy5zaGFwZSh7IF9fYXBpQ2hlY2tEYXRhOiBhcGlDaGVja0RhdGFDaGVja2VyIH0pO1xuXHQgIHZhciB3cm9uZ1NoYXBlID0gY2hlY2tlcnMub25lT2ZUeXBlKFthc0Z1bmMsIGFzU2hhcGVdKShjaGVja2VyVHlwZSwgbmFtZSwgbG9jYXRpb24pO1xuXHQgIGlmIChpc0Vycm9yKHdyb25nU2hhcGUpKSB7XG5cdCAgICByZXR1cm4gd3JvbmdTaGFwZTtcblx0ICB9XG5cdCAgaWYgKHR5cGVvZiBjaGVja2VyVHlwZSAhPT0gJ2Z1bmN0aW9uJyAmJiAhY2hlY2tlclR5cGUuaGFzT3duUHJvcGVydHkoY2hlY2tlclR5cGUuX19hcGlDaGVja0RhdGEudHlwZSkpIHtcblx0ICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgY2hlY2tlclR5cGVUeXBlLnR5cGUpO1xuXHQgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIGdldENoZWNrZXJFcnJvck1lc3NhZ2UocmVzLCBjaGVja2VyLCB2YWwpIHtcblx0ICB2YXIgY2hlY2tlckhlbHAgPSBnZXRDaGVja2VySGVscChjaGVja2VyLCB2YWwpO1xuXHQgIGNoZWNrZXJIZWxwID0gY2hlY2tlckhlbHAgPyAnIC0gJyArIGNoZWNrZXJIZWxwIDogJyc7XG5cdCAgcmV0dXJuIHJlcy5tZXNzYWdlICsgY2hlY2tlckhlbHA7XG5cdH1cblxuXHRmdW5jdGlvbiBnZXRDaGVja2VySGVscChfcmVmLCB2YWwpIHtcblx0ICB2YXIgaGVscCA9IF9yZWYuaGVscDtcblxuXHQgIGlmICghaGVscCkge1xuXHQgICAgcmV0dXJuICcnO1xuXHQgIH1cblx0ICBpZiAodHlwZW9mIGhlbHAgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIGhlbHAgPSBoZWxwKHZhbCk7XG5cdCAgfVxuXHQgIHJldHVybiBoZWxwO1xuXHR9XG5cblx0ZnVuY3Rpb24gY2hlY2tFbm91Z2hBcmdzKGFwaSwgYXJncykge1xuXHQgIHZhciByZXF1aXJlZEFyZ3MgPSBhcGkuZmlsdGVyKGZ1bmN0aW9uIChhKSB7XG5cdCAgICByZXR1cm4gIWEuaXNPcHRpb25hbDtcblx0ICB9KTtcblx0ICBpZiAoYXJncy5sZW5ndGggPCByZXF1aXJlZEFyZ3MubGVuZ3RoKSB7XG5cdCAgICByZXR1cm4gWydOb3QgZW5vdWdoIGFyZ3VtZW50cyBzcGVjaWZpZWQuIFJlcXVpcmVzIGAnICsgcmVxdWlyZWRBcmdzLmxlbmd0aCArICdgLCB5b3UgcGFzc2VkIGAnICsgYXJncy5sZW5ndGggKyAnYCddO1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gW107XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0QXJnRGlzcGxheShhcmcsIGdvdHRlbkFyZ3MpIHtcblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgN10gKi9cblx0ICB2YXIgY05hbWUgPSBhcmcgJiYgYXJnLmNvbnN0cnVjdG9yICYmIGFyZy5jb25zdHJ1Y3Rvci5uYW1lO1xuXHQgIHZhciB0eXBlID0gdHlwZU9mKGFyZyk7XG5cdCAgaWYgKHR5cGUgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIGlmIChoYXNLZXlzKCkpIHtcblx0ICAgICAgdmFyIHByb3BlcnRpZXMgPSBzdHJpbmdpZnkoZ2V0RGlzcGxheUlmTm90R290dGVuKCkpO1xuXHQgICAgICByZXR1cm4gY05hbWUgKyAnICh3aXRoIHByb3BlcnRpZXM6ICcgKyBwcm9wZXJ0aWVzICsgJyknO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNOYW1lO1xuXHQgIH1cblxuXHQgIGlmIChhcmcgPT09IG51bGwpIHtcblx0ICAgIHJldHVybiAnbnVsbCc7XG5cdCAgfVxuXG5cdCAgaWYgKHR5cGUgIT09ICdhcnJheScgJiYgdHlwZSAhPT0gJ29iamVjdCcpIHtcblx0ICAgIHJldHVybiB0eXBlO1xuXHQgIH1cblxuXHQgIGlmIChoYXNLZXlzKCkpIHtcblx0ICAgIHJldHVybiBnZXREaXNwbGF5SWZOb3RHb3R0ZW4oKTtcblx0ICB9XG5cblx0ICByZXR1cm4gY05hbWU7XG5cblx0ICAvLyB1dGlsaXR5IGZ1bmN0aW9uc1xuXHQgIGZ1bmN0aW9uIGhhc0tleXMoKSB7XG5cdCAgICByZXR1cm4gYXJnICYmIE9iamVjdC5rZXlzKGFyZykubGVuZ3RoO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldERpc3BsYXlJZk5vdEdvdHRlbigpIHtcblx0ICAgIGlmIChnb3R0ZW5BcmdzLmluZGV4T2YoYXJnKSAhPT0gLTEpIHtcblx0ICAgICAgcmV0dXJuICdbQ2lyY3VsYXJdJztcblx0ICAgIH1cblx0ICAgIGdvdHRlbkFyZ3MucHVzaChhcmcpO1xuXHQgICAgcmV0dXJuIGdldERpc3BsYXkoYXJnLCBnb3R0ZW5BcmdzKTtcblx0ICB9XG5cdH1cblxuXHRmdW5jdGlvbiBnZXREaXNwbGF5KG9iaiwgZ290dGVuQXJncykge1xuXHQgIHZhciBhcmdEaXNwbGF5ID0ge307XG5cdCAgZWFjaChvYmosIGZ1bmN0aW9uICh2LCBrKSB7XG5cdCAgICByZXR1cm4gYXJnRGlzcGxheVtrXSA9IGdldEFyZ0Rpc3BsYXkodiwgZ290dGVuQXJncyk7XG5cdCAgfSk7XG5cdCAgcmV0dXJuIGFyZ0Rpc3BsYXk7XG5cdH1cblxuXHRmdW5jdGlvbiBnZXRBcGlDaGVja0FwaXMoKSB7XG5cdCAgdmFyIG9zID0gY2hlY2tlcnMuc3RyaW5nLm9wdGlvbmFsO1xuXG5cdCAgdmFyIGNoZWNrZXJGbkNoZWNrZXIgPSBjaGVja2Vycy5mdW5jLndpdGhQcm9wZXJ0aWVzKHtcblx0ICAgIHR5cGU6IGNoZWNrZXJzLm9uZU9mVHlwZShbY2hlY2tlcnMuc3RyaW5nLCBjaGVja2VyVHlwZVR5cGVdKS5vcHRpb25hbCxcblx0ICAgIGRpc3BsYXlOYW1lOiBjaGVja2Vycy5zdHJpbmcub3B0aW9uYWwsXG5cdCAgICBzaG9ydFR5cGU6IGNoZWNrZXJzLnN0cmluZy5vcHRpb25hbCxcblx0ICAgIG5vdE9wdGlvbmFsOiBjaGVja2Vycy5ib29sLm9wdGlvbmFsLFxuXHQgICAgbm90UmVxdWlyZWQ6IGNoZWNrZXJzLmJvb2wub3B0aW9uYWxcblx0ICB9KTtcblxuXHQgIHZhciBnZXRBcGlDaGVja0luc3RhbmNlQ2hlY2tlcnMgPSBbY2hlY2tlcnMuc2hhcGUoe1xuXHQgICAgb3V0cHV0OiBjaGVja2Vycy5zaGFwZSh7XG5cdCAgICAgIHByZWZpeDogY2hlY2tlcnMuc3RyaW5nLm9wdGlvbmFsLFxuXHQgICAgICBzdWZmaXg6IGNoZWNrZXJzLnN0cmluZy5vcHRpb25hbCxcblx0ICAgICAgZG9jc0Jhc2VVcmw6IGNoZWNrZXJzLnN0cmluZy5vcHRpb25hbFxuXHQgICAgfSkuc3RyaWN0Lm9wdGlvbmFsLFxuXHQgICAgdmVyYm9zZTogY2hlY2tlcnMuYm9vbC5vcHRpb25hbCxcblx0ICAgIGRpc2FibGVkOiBjaGVja2Vycy5ib29sLm9wdGlvbmFsXG5cdCAgfSkuc3RyaWN0Lm9wdGlvbmFsLCBjaGVja2Vycy5vYmplY3RPZihjaGVja2VyRm5DaGVja2VyKS5vcHRpb25hbF07XG5cblx0ICB2YXIgY2hlY2tBcGlDaGVja0FwaSA9IFtjaGVja2Vycy50eXBlT3JBcnJheU9mKGNoZWNrZXJGbkNoZWNrZXIpLCBjaGVja2Vycy5hbnkub3B0aW9uYWwsIGNoZWNrZXJzLnNoYXBlKHtcblx0ICAgIHByZWZpeDogb3MsIHN1ZmZpeDogb3MsIHVybFN1ZmZpeDogb3MsIC8vIGFwcGVuZGVkIGNhc2Vcblx0ICAgIG9ubHlQcmVmaXg6IG9zLCBvbmx5U3VmZml4OiBvcywgdXJsOiBvcyAvLyBvdmVycmlkZSBjYXNlXG5cdCAgfSkuc3RyaWN0Lm9wdGlvbmFsXTtcblxuXHQgIHJldHVybiB7XG5cdCAgICBjaGVja2VyRm5DaGVja2VyOiBjaGVja2VyRm5DaGVja2VyLFxuXHQgICAgZ2V0QXBpQ2hlY2tJbnN0YW5jZUNoZWNrZXJzOiBnZXRBcGlDaGVja0luc3RhbmNlQ2hlY2tlcnMsXG5cdCAgICBjaGVja0FwaUNoZWNrQXBpOiBjaGVja0FwaUNoZWNrQXBpXG5cdCAgfTtcblx0fVxuXG4vKioqLyB9LFxuLyogMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdpZnk7XG5cblx0ZnVuY3Rpb24gZ2V0U2VyaWFsaXplIChmbiwgZGVjeWNsZSkge1xuXHQgIHZhciBzZWVuID0gW10sIGtleXMgPSBbXTtcblx0ICBkZWN5Y2xlID0gZGVjeWNsZSB8fCBmdW5jdGlvbihrZXksIHZhbHVlKSB7XG5cdCAgICByZXR1cm4gJ1tDaXJjdWxhciAnICsgZ2V0UGF0aCh2YWx1ZSwgc2Vlbiwga2V5cykgKyAnXSdcblx0ICB9O1xuXHQgIHJldHVybiBmdW5jdGlvbihrZXksIHZhbHVlKSB7XG5cdCAgICB2YXIgcmV0ID0gdmFsdWU7XG5cdCAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSkge1xuXHQgICAgICBpZiAoc2Vlbi5pbmRleE9mKHZhbHVlKSAhPT0gLTEpXG5cdCAgICAgICAgcmV0ID0gZGVjeWNsZShrZXksIHZhbHVlKTtcblx0ICAgICAgZWxzZSB7XG5cdCAgICAgICAgc2Vlbi5wdXNoKHZhbHVlKTtcblx0ICAgICAgICBrZXlzLnB1c2goa2V5KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaWYgKGZuKSByZXQgPSBmbihrZXksIHJldCk7XG5cdCAgICByZXR1cm4gcmV0O1xuXHQgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIGdldFBhdGggKHZhbHVlLCBzZWVuLCBrZXlzKSB7XG5cdCAgdmFyIGluZGV4ID0gc2Vlbi5pbmRleE9mKHZhbHVlKTtcblx0ICB2YXIgcGF0aCA9IFsga2V5c1tpbmRleF0gXTtcblx0ICBmb3IgKGluZGV4LS07IGluZGV4ID49IDA7IGluZGV4LS0pIHtcblx0ICAgIGlmIChzZWVuW2luZGV4XVsgcGF0aFswXSBdID09PSB2YWx1ZSkge1xuXHQgICAgICB2YWx1ZSA9IHNlZW5baW5kZXhdO1xuXHQgICAgICBwYXRoLnVuc2hpZnQoa2V5c1tpbmRleF0pO1xuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gJ34nICsgcGF0aC5qb2luKCcuJyk7XG5cdH1cblxuXHRmdW5jdGlvbiBzdHJpbmdpZnkob2JqLCBmbiwgc3BhY2VzLCBkZWN5Y2xlKSB7XG5cdCAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiwgZ2V0U2VyaWFsaXplKGZuLCBkZWN5Y2xlKSwgc3BhY2VzKTtcblx0fVxuXG5cdHN0cmluZ2lmeS5nZXRTZXJpYWxpemUgPSBnZXRTZXJpYWxpemU7XG5cblxuLyoqKi8gfSxcbi8qIDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0JztcblxuXHRmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5cdHZhciBzdHJpbmdpZnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHR2YXIgY2hlY2tlckhlbHBlcnMgPSB7XG5cdCAgYWRkT3B0aW9uYWw6IGFkZE9wdGlvbmFsLCBnZXRSZXF1aXJlZFZlcnNpb246IGdldFJlcXVpcmVkVmVyc2lvbiwgc2V0dXBDaGVja2VyOiBzZXR1cENoZWNrZXIsIGFkZE51bGxhYmxlOiBhZGROdWxsYWJsZVxuXHR9O1xuXG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHQgIGVhY2g6IGVhY2gsIGNvcHk6IGNvcHksIHR5cGVPZjogdHlwZU9mLCBhcnJheWlmeTogYXJyYXlpZnksIGdldENoZWNrZXJEaXNwbGF5OiBnZXRDaGVja2VyRGlzcGxheSxcblx0ICBpc0Vycm9yOiBpc0Vycm9yLCBsaXN0OiBsaXN0LCBnZXRFcnJvcjogZ2V0RXJyb3IsIG5BdEw6IG5BdEwsIHQ6IHQsIHVuZGVmOiB1bmRlZiwgY2hlY2tlckhlbHBlcnM6IGNoZWNrZXJIZWxwZXJzLFxuXHQgIG5vb3A6IG5vb3Bcblx0fTtcblxuXHRmdW5jdGlvbiBjb3B5KG9iaikge1xuXHQgIHZhciB0eXBlID0gdHlwZU9mKG9iaik7XG5cdCAgdmFyIGRhQ29weSA9IHVuZGVmaW5lZDtcblx0ICBpZiAodHlwZSA9PT0gJ2FycmF5Jykge1xuXHQgICAgZGFDb3B5ID0gW107XG5cdCAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuXHQgICAgZGFDb3B5ID0ge307XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBvYmo7XG5cdCAgfVxuXHQgIGVhY2gob2JqLCBmdW5jdGlvbiAodmFsLCBrZXkpIHtcblx0ICAgIGRhQ29weVtrZXldID0gdmFsOyAvLyBjYW5ub3Qgc2luZ2xlLWxpbmUgdGhpcyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gYWJvcnQgdGhlIGVhY2hcblx0ICB9KTtcblx0ICByZXR1cm4gZGFDb3B5O1xuXHR9XG5cblx0ZnVuY3Rpb24gdHlwZU9mKG9iaikge1xuXHQgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcblx0ICAgIHJldHVybiAnYXJyYXknO1xuXHQgIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgUmVnRXhwKSB7XG5cdCAgICByZXR1cm4gJ29iamVjdCc7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiB0eXBlb2Ygb2JqO1xuXHQgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIGdldENoZWNrZXJEaXNwbGF5KGNoZWNrZXIsIG9wdGlvbnMpIHtcblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgN10gKi9cblx0ICB2YXIgZGlzcGxheSA9IHVuZGVmaW5lZDtcblx0ICB2YXIgc2hvcnQgPSBvcHRpb25zICYmIG9wdGlvbnMuc2hvcnQ7XG5cdCAgaWYgKHNob3J0ICYmIGNoZWNrZXIuc2hvcnRUeXBlKSB7XG5cdCAgICBkaXNwbGF5ID0gY2hlY2tlci5zaG9ydFR5cGU7XG5cdCAgfSBlbHNlIGlmICghc2hvcnQgJiYgdHlwZW9mIGNoZWNrZXIudHlwZSA9PT0gJ29iamVjdCcgfHwgY2hlY2tlci50eXBlID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICBkaXNwbGF5ID0gZ2V0Q2hlY2tlclR5cGUoY2hlY2tlciwgb3B0aW9ucyk7XG5cdCAgfSBlbHNlIHtcblx0ICAgIGRpc3BsYXkgPSBnZXRDaGVja2VyVHlwZShjaGVja2VyLCBvcHRpb25zKSB8fCBjaGVja2VyLmRpc3BsYXlOYW1lIHx8IGNoZWNrZXIubmFtZTtcblx0ICB9XG5cdCAgcmV0dXJuIGRpc3BsYXk7XG5cdH1cblxuXHRmdW5jdGlvbiBnZXRDaGVja2VyVHlwZShfcmVmLCBvcHRpb25zKSB7XG5cdCAgdmFyIHR5cGUgPSBfcmVmLnR5cGU7XG5cblx0ICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIHZhciBfX2FwaUNoZWNrRGF0YSA9IHR5cGUuX19hcGlDaGVja0RhdGE7XG5cdCAgICB2YXIgdHlwZVR5cGVzID0gdHlwZShvcHRpb25zKTtcblx0ICAgIHR5cGUgPSBfZGVmaW5lUHJvcGVydHkoe1xuXHQgICAgICBfX2FwaUNoZWNrRGF0YTogX19hcGlDaGVja0RhdGFcblx0ICAgIH0sIF9fYXBpQ2hlY2tEYXRhLnR5cGUsIHR5cGVUeXBlcyk7XG5cdCAgfVxuXHQgIHJldHVybiB0eXBlO1xuXHR9XG5cblx0ZnVuY3Rpb24gYXJyYXlpZnkob2JqKSB7XG5cdCAgaWYgKCFvYmopIHtcblx0ICAgIHJldHVybiBbXTtcblx0ICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuXHQgICAgcmV0dXJuIG9iajtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIFtvYmpdO1xuXHQgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIGVhY2gob2JqLCBpdGVyYXRvciwgY29udGV4dCkge1xuXHQgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcblx0ICAgIHJldHVybiBlYWNoQXJyeShvYmosIGl0ZXJhdG9yLCBjb250ZXh0KTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIGVhY2hPYmoob2JqLCBpdGVyYXRvciwgY29udGV4dCk7XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZWFjaE9iaihvYmosIGl0ZXJhdG9yLCBjb250ZXh0KSB7XG5cdCAgdmFyIHJldCA9IHVuZGVmaW5lZDtcblx0ICB2YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0ICAvKiBlc2xpbnQgcHJlZmVyLWNvbnN0OjAgKi8gLy8gc29tZSB3ZWlyZCBlc2xpbnQgYnVnP1xuXHQgIGZvciAodmFyIGtleSBpbiBvYmopIHtcblx0ICAgIGlmIChoYXNPd24uY2FsbChvYmosIGtleSkpIHtcblx0ICAgICAgcmV0ID0gaXRlcmF0b3IuY2FsbChjb250ZXh0LCBvYmpba2V5XSwga2V5LCBvYmopO1xuXHQgICAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuXHQgICAgICAgIHJldHVybiByZXQ7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuIHRydWU7XG5cdH1cblxuXHRmdW5jdGlvbiBlYWNoQXJyeShvYmosIGl0ZXJhdG9yLCBjb250ZXh0KSB7XG5cdCAgdmFyIHJldCA9IHVuZGVmaW5lZDtcblx0ICB2YXIgbGVuZ3RoID0gb2JqLmxlbmd0aDtcblx0ICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cdCAgICByZXQgPSBpdGVyYXRvci5jYWxsKGNvbnRleHQsIG9ialtpXSwgaSwgb2JqKTtcblx0ICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG5cdCAgICAgIHJldHVybiByZXQ7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiB0cnVlO1xuXHR9XG5cblx0ZnVuY3Rpb24gaXNFcnJvcihvYmopIHtcblx0ICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRXJyb3I7XG5cdH1cblxuXHRmdW5jdGlvbiBsaXN0KGFycnksIGpvaW4sIGZpbmFsSm9pbikge1xuXHQgIGFycnkgPSBhcnJheWlmeShhcnJ5KTtcblx0ICB2YXIgY29weSA9IGFycnkuc2xpY2UoKTtcblx0ICB2YXIgbGFzdCA9IGNvcHkucG9wKCk7XG5cdCAgaWYgKGNvcHkubGVuZ3RoID09PSAxKSB7XG5cdCAgICBqb2luID0gJyAnO1xuXHQgIH1cblx0ICByZXR1cm4gY29weS5qb2luKGpvaW4pICsgKCcnICsgKGNvcHkubGVuZ3RoID8gam9pbiArIGZpbmFsSm9pbiA6ICcnKSArIGxhc3QpO1xuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIGNoZWNrZXJUeXBlKSB7XG5cdCAgaWYgKHR5cGVvZiBjaGVja2VyVHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgY2hlY2tlclR5cGUgPSBjaGVja2VyVHlwZSh7IHNob3J0OiB0cnVlIH0pO1xuXHQgIH1cblx0ICB2YXIgc3RyaW5nVHlwZSA9IHR5cGVvZiBjaGVja2VyVHlwZSAhPT0gJ29iamVjdCcgPyBjaGVja2VyVHlwZSA6IHN0cmluZ2lmeShjaGVja2VyVHlwZSk7XG5cdCAgcmV0dXJuIG5ldyBFcnJvcihuQXRMKG5hbWUsIGxvY2F0aW9uKSArICcgbXVzdCBiZSAnICsgdChzdHJpbmdUeXBlKSk7XG5cdH1cblxuXHRmdW5jdGlvbiBuQXRMKG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgdmFyIHROYW1lID0gdChuYW1lIHx8ICd2YWx1ZScpO1xuXHQgIHZhciB0TG9jYXRpb24gPSAhbG9jYXRpb24gPyAnJyA6ICcgYXQgJyArIHQobG9jYXRpb24pO1xuXHQgIHJldHVybiAnJyArIHROYW1lICsgdExvY2F0aW9uO1xuXHR9XG5cblx0ZnVuY3Rpb24gdCh0aGluZykge1xuXHQgIHJldHVybiAnYCcgKyB0aGluZyArICdgJztcblx0fVxuXG5cdGZ1bmN0aW9uIHVuZGVmKHRoaW5nKSB7XG5cdCAgcmV0dXJuIHR5cGVvZiB0aGluZyA9PT0gJ3VuZGVmaW5lZCc7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyB3aWxsIHNldCB1cCB0aGUgY2hlY2tlciB3aXRoIGFsbCBvZiB0aGUgZGVmYXVsdHMgdGhhdCBtb3N0IGNoZWNrZXJzIHdhbnQgbGlrZSByZXF1aXJlZCBieSBkZWZhdWx0IGFuZCBhblxuXHQgKiBvcHRpb25hbCB2ZXJzaW9uXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGNoZWNrZXIgLSB0aGUgY2hlY2tlciB0byBzZXR1cCB3aXRoIHByb3BlcnRpZXNcblx0ICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSBwcm9wZXJ0aWVzIHRvIGFkZCB0byB0aGUgY2hlY2tlclxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc2FibGVkIC0gd2hlbiBzZXQgdG8gdHJ1ZSwgdGhpcyB3aWxsIHNldCB0aGUgY2hlY2tlciB0byBhIG5vLW9wIGZ1bmN0aW9uXG5cdCAqIEByZXR1cm5zIHtGdW5jdGlvbn0gY2hlY2tlciAtIHRoZSBzZXR1cCBjaGVja2VyXG5cdCAqL1xuXHRmdW5jdGlvbiBzZXR1cENoZWNrZXIoY2hlY2tlciwgcHJvcGVydGllcywgZGlzYWJsZWQpIHtcblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgOV0gKi9cblx0ICBpZiAoZGlzYWJsZWQpIHtcblx0ICAgIC8vIHN3YXAgb3V0IHRoZSBjaGVja2VyIGZvciBpdHMgb3duIGNvcHkgb2Ygbm9vcFxuXHQgICAgY2hlY2tlciA9IGdldE5vb3AoKTtcblx0ICAgIGNoZWNrZXIuaXNOb29wID0gdHJ1ZTtcblx0ICB9XG5cblx0ICBpZiAodHlwZW9mIGNoZWNrZXIudHlwZSA9PT0gJ3N0cmluZycpIHtcblx0ICAgIGNoZWNrZXIuc2hvcnRUeXBlID0gY2hlY2tlci50eXBlO1xuXHQgIH1cblxuXHQgIC8vIGFzc2lnbiBhbGwgcHJvcGVydGllcyBnaXZlblxuXHQgIGVhY2gocHJvcGVydGllcywgZnVuY3Rpb24gKHByb3AsIG5hbWUpIHtcblx0ICAgIHJldHVybiBjaGVja2VyW25hbWVdID0gcHJvcDtcblx0ICB9KTtcblxuXHQgIGlmICghY2hlY2tlci5kaXNwbGF5TmFtZSkge1xuXHQgICAgY2hlY2tlci5kaXNwbGF5TmFtZSA9ICdhcGlDaGVjayAnICsgdChjaGVja2VyLnNob3J0VHlwZSB8fCBjaGVja2VyLnR5cGUgfHwgY2hlY2tlci5uYW1lKSArICcgdHlwZSBjaGVja2VyJztcblx0ICB9XG5cblx0ICBpZiAoIWNoZWNrZXIubm90UmVxdWlyZWQpIHtcblx0ICAgIGNoZWNrZXIgPSBnZXRSZXF1aXJlZFZlcnNpb24oY2hlY2tlciwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGlmICghY2hlY2tlci5ub3ROdWxsYWJsZSkge1xuXHQgICAgYWRkTnVsbGFibGUoY2hlY2tlciwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGlmICghY2hlY2tlci5ub3RPcHRpb25hbCkge1xuXHQgICAgYWRkT3B0aW9uYWwoY2hlY2tlciwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIHJldHVybiBjaGVja2VyO1xuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0UmVxdWlyZWRWZXJzaW9uKGNoZWNrZXIsIGRpc2FibGVkKSB7XG5cdCAgdmFyIHJlcXVpcmVkQ2hlY2tlciA9IGRpc2FibGVkID8gZ2V0Tm9vcCgpIDogZnVuY3Rpb24gcmVxdWlyZWRDaGVja2VyKHZhbCwgbmFtZSwgbG9jYXRpb24sIG9iaikge1xuXHQgICAgaWYgKHVuZGVmKHZhbCkgJiYgIWNoZWNrZXIuaXNPcHRpb25hbCkge1xuXHQgICAgICB2YXIgdExvY2F0aW9uID0gbG9jYXRpb24gPyAnIGluICcgKyB0KGxvY2F0aW9uKSA6ICcnO1xuXHQgICAgICB2YXIgdHlwZSA9IGdldENoZWNrZXJEaXNwbGF5KGNoZWNrZXIsIHsgc2hvcnQ6IHRydWUgfSk7XG5cdCAgICAgIHZhciBzdHJpbmdUeXBlID0gdHlwZW9mIHR5cGUgIT09ICdvYmplY3QnID8gdHlwZSA6IHN0cmluZ2lmeSh0eXBlKTtcblx0ICAgICAgcmV0dXJuIG5ldyBFcnJvcignUmVxdWlyZWQgJyArIHQobmFtZSkgKyAnIG5vdCBzcGVjaWZpZWQnICsgdExvY2F0aW9uICsgJy4gTXVzdCBiZSAnICsgdChzdHJpbmdUeXBlKSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZXR1cm4gY2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uLCBvYmopO1xuXHQgICAgfVxuXHQgIH07XG5cdCAgY29weVByb3BzKGNoZWNrZXIsIHJlcXVpcmVkQ2hlY2tlcik7XG5cdCAgcmVxdWlyZWRDaGVja2VyLm9yaWdpbmFsQ2hlY2tlciA9IGNoZWNrZXI7XG5cdCAgcmV0dXJuIHJlcXVpcmVkQ2hlY2tlcjtcblx0fVxuXG5cdGZ1bmN0aW9uIGFkZE9wdGlvbmFsKGNoZWNrZXIsIGRpc2FibGVkKSB7XG5cdCAgdmFyIG9wdGlvbmFsQ2hlY2sgPSBkaXNhYmxlZCA/IGdldE5vb3AoKSA6IGZ1bmN0aW9uIG9wdGlvbmFsQ2hlY2sodmFsLCBuYW1lLCBsb2NhdGlvbiwgb2JqKSB7XG5cdCAgICBpZiAoIXVuZGVmKHZhbCkpIHtcblx0ICAgICAgcmV0dXJuIGNoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbiwgb2JqKTtcblx0ICAgIH1cblx0ICB9O1xuXHQgIC8vIGluaGVyaXQgYWxsIHByb3BlcnRpZXMgb24gdGhlIG9yaWdpbmFsIGNoZWNrZXJcblx0ICBjb3B5UHJvcHMoY2hlY2tlciwgb3B0aW9uYWxDaGVjayk7XG5cblx0ICBvcHRpb25hbENoZWNrLmlzT3B0aW9uYWwgPSB0cnVlO1xuXHQgIG9wdGlvbmFsQ2hlY2suZGlzcGxheU5hbWUgPSBjaGVja2VyLmRpc3BsYXlOYW1lICsgJyAob3B0aW9uYWwpJztcblx0ICBvcHRpb25hbENoZWNrLm9yaWdpbmFsQ2hlY2tlciA9IGNoZWNrZXI7XG5cblx0ICAvLyB0aGUgbWFnaWMgbGluZSB0aGF0IGFsbG93cyB5b3UgdG8gYWRkIC5vcHRpb25hbCB0byB0aGUgZW5kIG9mIHRoZSBjaGVja2Vyc1xuXHQgIGNoZWNrZXIub3B0aW9uYWwgPSBvcHRpb25hbENoZWNrO1xuXG5cdCAgZml4VHlwZShjaGVja2VyLCBjaGVja2VyLm9wdGlvbmFsKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGFkZE51bGxhYmxlKGNoZWNrZXIsIGRpc2FibGVkKSB7XG5cdCAgdmFyIG51bGxhYmxlQ2hlY2sgPSBkaXNhYmxlZCA/IGdldE5vb3AoKSA6IGZ1bmN0aW9uIG51bGxhYmxlQ2hlY2sodmFsLCBuYW1lLCBsb2NhdGlvbiwgb2JqKSB7XG5cdCAgICBpZiAodmFsICE9PSBudWxsKSB7XG5cdCAgICAgIHJldHVybiBjaGVja2VyKHZhbCwgbmFtZSwgbG9jYXRpb24sIG9iaik7XG5cdCAgICB9XG5cdCAgfTtcblx0ICAvLyBpbmhlcml0IGFsbCBwcm9wZXJ0aWVzIG9uIHRoZSBvcmlnaW5hbCBjaGVja2VyXG5cdCAgY29weVByb3BzKGNoZWNrZXIsIG51bGxhYmxlQ2hlY2spO1xuXG5cdCAgbnVsbGFibGVDaGVjay5pc051bGxhYmxlID0gdHJ1ZTtcblx0ICBudWxsYWJsZUNoZWNrLmRpc3BsYXlOYW1lID0gY2hlY2tlci5kaXNwbGF5TmFtZSArICcgKG51bGxhYmxlKSc7XG5cdCAgbnVsbGFibGVDaGVjay5vcmlnaW5hbENoZWNrZXIgPSBjaGVja2VyO1xuXG5cdCAgLy8gdGhlIG1hZ2ljIGxpbmUgdGhhdCBhbGxvd3MgeW91IHRvIGFkZCAubnVsbGFibGUgdG8gdGhlIGVuZCBvZiB0aGUgY2hlY2tlcnNcblx0ICBjaGVja2VyLm51bGxhYmxlID0gbnVsbGFibGVDaGVjaztcblxuXHQgIGZpeFR5cGUoY2hlY2tlciwgY2hlY2tlci5udWxsYWJsZSk7XG5cdCAgaWYgKCFjaGVja2VyLm5vdE9wdGlvbmFsKSB7XG5cdCAgICBhZGRPcHRpb25hbChjaGVja2VyLm51bGxhYmxlLCBkaXNhYmxlZCk7XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZml4VHlwZShjaGVja2VyLCBjaGVja2VyQ29weSkge1xuXHQgIC8vIGZpeCB0eXBlLCBiZWNhdXNlIGl0J3Mgbm90IGEgc3RyYWlnaHQgY29weS4uLlxuXHQgIC8vIHRoZSByZWFzb24gaXMgd2UgbmVlZCB0byBzcGVjaWZ5IHR5cGUuX19hcGlDaGVja0RhdGEub3B0aW9uYWwgYXMgdHJ1ZSBmb3IgdGhlIHRlcnNlL3ZlcmJvc2Ugb3B0aW9uLlxuXHQgIC8vIHdlIGFsc28gd2FudCB0byBhZGQgXCIob3B0aW9uYWwpXCIgdG8gdGhlIHR5cGVzIHdpdGggYSBzdHJpbmdcblx0ICBpZiAodHlwZW9mIGNoZWNrZXJDb3B5LnR5cGUgPT09ICdvYmplY3QnKSB7XG5cdCAgICBjaGVja2VyQ29weS50eXBlID0gY29weShjaGVja2VyQ29weS50eXBlKTsgLy8gbWFrZSBvdXIgb3duIGNvcHkgb2YgdGhpc1xuXHQgIH0gZWxzZSBpZiAodHlwZW9mIGNoZWNrZXJDb3B5LnR5cGUgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgY2hlY2tlckNvcHkudHlwZSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4gY2hlY2tlci50eXBlLmFwcGx5KGNoZWNrZXIsIGFyZ3VtZW50cyk7XG5cdCAgICAgIH07XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBjaGVja2VyQ29weS50eXBlICs9ICcgKG9wdGlvbmFsKSc7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICBjaGVja2VyQ29weS50eXBlLl9fYXBpQ2hlY2tEYXRhID0gY29weShjaGVja2VyLnR5cGUuX19hcGlDaGVja0RhdGEpIHx8IHt9OyAvLyBhbmQgdGhpc1xuXHQgIGNoZWNrZXJDb3B5LnR5cGUuX19hcGlDaGVja0RhdGEub3B0aW9uYWwgPSB0cnVlO1xuXHR9XG5cblx0Ly8gVVRJTFNcblxuXHRmdW5jdGlvbiBjb3B5UHJvcHMoc3JjLCBkZXN0KSB7XG5cdCAgZWFjaChPYmplY3Qua2V5cyhzcmMpLCBmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICByZXR1cm4gZGVzdFtrZXldID0gc3JjW2tleV07XG5cdCAgfSk7XG5cdH1cblxuXHRmdW5jdGlvbiBub29wKCkge31cblxuXHRmdW5jdGlvbiBnZXROb29wKCkge1xuXHQgIC8qIGVzbGludCBuby1zaGFkb3c6MCAqL1xuXHQgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cdCAgcmV0dXJuIGZ1bmN0aW9uIG5vb3AoKSB7fTtcblx0fVxuXG4vKioqLyB9LFxuLyogNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBzdHJpbmdpZnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG5cdHZhciBfcmVxdWlyZSA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cblx0dmFyIHR5cGVPZiA9IF9yZXF1aXJlLnR5cGVPZjtcblx0dmFyIGVhY2ggPSBfcmVxdWlyZS5lYWNoO1xuXHR2YXIgY29weSA9IF9yZXF1aXJlLmNvcHk7XG5cdHZhciBnZXRDaGVja2VyRGlzcGxheSA9IF9yZXF1aXJlLmdldENoZWNrZXJEaXNwbGF5O1xuXHR2YXIgaXNFcnJvciA9IF9yZXF1aXJlLmlzRXJyb3I7XG5cdHZhciBhcnJheWlmeSA9IF9yZXF1aXJlLmFycmF5aWZ5O1xuXHR2YXIgbGlzdCA9IF9yZXF1aXJlLmxpc3Q7XG5cdHZhciBnZXRFcnJvciA9IF9yZXF1aXJlLmdldEVycm9yO1xuXHR2YXIgbkF0TCA9IF9yZXF1aXJlLm5BdEw7XG5cdHZhciB0ID0gX3JlcXVpcmUudDtcblx0dmFyIGNoZWNrZXJIZWxwZXJzID0gX3JlcXVpcmUuY2hlY2tlckhlbHBlcnM7XG5cdHZhciB1bmRlZiA9IF9yZXF1aXJlLnVuZGVmO1xuXHR2YXIgc2V0dXBDaGVja2VyID0gY2hlY2tlckhlbHBlcnMuc2V0dXBDaGVja2VyO1xuXG5cdHZhciBjaGVja2VycyA9IG1vZHVsZS5leHBvcnRzID0gZ2V0Q2hlY2tlcnMoKTtcblx0bW9kdWxlLmV4cG9ydHMuZ2V0Q2hlY2tlcnMgPSBnZXRDaGVja2VycztcblxuXHRmdW5jdGlvbiBnZXRDaGVja2VycyhkaXNhYmxlZCkge1xuXHQgIHJldHVybiB7XG5cdCAgICBhcnJheTogdHlwZU9mQ2hlY2tHZXR0ZXIoJ0FycmF5JyksXG5cdCAgICBib29sOiB0eXBlT2ZDaGVja0dldHRlcignQm9vbGVhbicpLFxuXHQgICAgbnVtYmVyOiB0eXBlT2ZDaGVja0dldHRlcignTnVtYmVyJyksXG5cdCAgICBzdHJpbmc6IHR5cGVPZkNoZWNrR2V0dGVyKCdTdHJpbmcnKSxcblx0ICAgIGZ1bmM6IGZ1bmNDaGVja0dldHRlcigpLFxuXHQgICAgb2JqZWN0OiBvYmplY3RDaGVja0dldHRlcigpLFxuXG5cdCAgICBlbXB0eU9iamVjdDogZW1wdHlPYmplY3RDaGVja0dldHRlcigpLFxuXG5cdCAgICBpbnN0YW5jZU9mOiBpbnN0YW5jZUNoZWNrR2V0dGVyLFxuXHQgICAgb25lT2Y6IG9uZU9mQ2hlY2tHZXR0ZXIsXG5cdCAgICBvbmVPZlR5cGU6IG9uZU9mVHlwZUNoZWNrR2V0dGVyLFxuXG5cdCAgICBhcnJheU9mOiBhcnJheU9mQ2hlY2tHZXR0ZXIsXG5cdCAgICBvYmplY3RPZjogb2JqZWN0T2ZDaGVja0dldHRlcixcblx0ICAgIHR5cGVPckFycmF5T2Y6IHR5cGVPckFycmF5T2ZDaGVja0dldHRlcixcblxuXHQgICAgcmFuZ2U6IHJhbmdlQ2hlY2tHZXR0ZXIsXG5cdCAgICBsZXNzVGhhbjogbGVzc1RoYW5DaGVja0dldHRlcixcblx0ICAgIGdyZWF0ZXJUaGFuOiBncmVhdGVyVGhhbkNoZWNrR2V0dGVyLFxuXG5cdCAgICBzaGFwZTogZ2V0U2hhcGVDaGVja0dldHRlcigpLFxuXHQgICAgYXJnczogYXJndW1lbnRzQ2hlY2tlckdldHRlcigpLFxuXG5cdCAgICBhbnk6IGFueUNoZWNrR2V0dGVyKCksXG5cdCAgICAnbnVsbCc6IG51bGxDaGVja0dldHRlcigpXG5cblx0ICB9O1xuXG5cdCAgZnVuY3Rpb24gdHlwZU9mQ2hlY2tHZXR0ZXIodHlwZSkge1xuXHQgICAgdmFyIGxUeXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiB0eXBlT2ZDaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh0eXBlT2YodmFsKSAhPT0gbFR5cGUpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGZ1bmNDaGVja0dldHRlcigpIHtcblx0ICAgIHZhciB0eXBlID0gJ0Z1bmN0aW9uJztcblx0ICAgIHZhciBmdW5jdGlvbkNoZWNrZXIgPSBzZXR1cENoZWNrZXIoZnVuY3Rpb24gZnVuY3Rpb25DaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh0eXBlT2YodmFsKSAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgdHlwZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sIHsgdHlwZTogdHlwZSB9LCBkaXNhYmxlZCk7XG5cblx0ICAgIGZ1bmN0aW9uQ2hlY2tlci53aXRoUHJvcGVydGllcyA9IGZ1bmN0aW9uIGdldFdpdGhQcm9wZXJ0aWVzQ2hlY2tlcihwcm9wZXJ0aWVzKSB7XG5cdCAgICAgIHZhciBhcGlFcnJvciA9IGNoZWNrZXJzLm9iamVjdE9mKGNoZWNrZXJzLmZ1bmMpKHByb3BlcnRpZXMsICdwcm9wZXJ0aWVzJywgJ2FwaUNoZWNrLmZ1bmMud2l0aFByb3BlcnRpZXMnKTtcblx0ICAgICAgaWYgKGlzRXJyb3IoYXBpRXJyb3IpKSB7XG5cdCAgICAgICAgdGhyb3cgYXBpRXJyb3I7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHNoYXBlQ2hlY2tlciA9IGNoZWNrZXJzLnNoYXBlKHByb3BlcnRpZXMsIHRydWUpO1xuXHQgICAgICBzaGFwZUNoZWNrZXIudHlwZS5fX2FwaUNoZWNrRGF0YS50eXBlID0gJ2Z1bmMud2l0aFByb3BlcnRpZXMnO1xuXG5cdCAgICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gZnVuY3Rpb25XaXRoUHJvcGVydGllc0NoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICAgIHZhciBub3RGdW5jdGlvbiA9IGNoZWNrZXJzLmZ1bmModmFsLCBuYW1lLCBsb2NhdGlvbik7XG5cdCAgICAgICAgaWYgKGlzRXJyb3Iobm90RnVuY3Rpb24pKSB7XG5cdCAgICAgICAgICByZXR1cm4gbm90RnVuY3Rpb247XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBzaGFwZUNoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbik7XG5cdCAgICAgIH0sIHsgdHlwZTogc2hhcGVDaGVja2VyLnR5cGUsIHNob3J0VHlwZTogJ2Z1bmMud2l0aFByb3BlcnRpZXMnIH0sIGRpc2FibGVkKTtcblx0ICAgIH07XG5cdCAgICByZXR1cm4gZnVuY3Rpb25DaGVja2VyO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIG9iamVjdENoZWNrR2V0dGVyKCkge1xuXHQgICAgdmFyIHR5cGUgPSAnT2JqZWN0Jztcblx0ICAgIHZhciBudWxsVHlwZSA9ICdPYmplY3QgKG51bGwgb2spJztcblx0ICAgIHZhciBvYmplY3ROdWxsT2tDaGVja2VyID0gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIG9iamVjdE51bGxPa0NoZWNrZXJEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgaWYgKHR5cGVPZih2YWwpICE9PSAnb2JqZWN0Jykge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgbnVsbFR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IG51bGxUeXBlIH0sIGRpc2FibGVkKTtcblxuXHQgICAgdmFyIG9iamVjdENoZWNrZXIgPSBzZXR1cENoZWNrZXIoZnVuY3Rpb24gb2JqZWN0Q2hlY2tlckRlZmluaXRpb24odmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICBpZiAodmFsID09PSBudWxsIHx8IGlzRXJyb3Iob2JqZWN0TnVsbE9rQ2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSkpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIG9iamVjdENoZWNrZXIudHlwZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sIHsgdHlwZTogdHlwZSwgbnVsbE9rOiBvYmplY3ROdWxsT2tDaGVja2VyIH0sIGRpc2FibGVkKTtcblxuXHQgICAgcmV0dXJuIG9iamVjdENoZWNrZXI7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gaW5zdGFuY2VDaGVja0dldHRlcihjbGFzc1RvQ2hlY2spIHtcblx0ICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gaW5zdGFuY2VDaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICghKHZhbCBpbnN0YW5jZW9mIGNsYXNzVG9DaGVjaykpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIGNsYXNzVG9DaGVjay5uYW1lKTtcblx0ICAgICAgfVxuXHQgICAgfSwgeyB0eXBlOiBjbGFzc1RvQ2hlY2submFtZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gb25lT2ZDaGVja0dldHRlcihlbnVtcykge1xuXHQgICAgdmFyIHR5cGUgPSB7XG5cdCAgICAgIF9fYXBpQ2hlY2tEYXRhOiB7IG9wdGlvbmFsOiBmYWxzZSwgdHlwZTogJ2VudW0nIH0sXG5cdCAgICAgICdlbnVtJzogZW51bXNcblx0ICAgIH07XG5cdCAgICB2YXIgc2hvcnRUeXBlID0gJ29uZU9mWycgKyBlbnVtcy5tYXAoZnVuY3Rpb24gKGVubSkge1xuXHQgICAgICByZXR1cm4gc3RyaW5naWZ5KGVubSk7XG5cdCAgICB9KS5qb2luKCcsICcpICsgJ10nO1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBvbmVPZkNoZWNrZXJEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgaWYgKCFlbnVtcy5zb21lKGZ1bmN0aW9uIChlbm0pIHtcblx0ICAgICAgICByZXR1cm4gZW5tID09PSB2YWw7XG5cdCAgICAgIH0pKSB7XG5cdCAgICAgICAgcmV0dXJuIGdldEVycm9yKG5hbWUsIGxvY2F0aW9uLCBzaG9ydFR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUsIHNob3J0VHlwZTogc2hvcnRUeXBlIH0sIGRpc2FibGVkKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBvbmVPZlR5cGVDaGVja0dldHRlcih0eXBlQ2hlY2tlcnMpIHtcblx0ICAgIHZhciBjaGVja2Vyc0Rpc3BsYXkgPSB0eXBlQ2hlY2tlcnMubWFwKGZ1bmN0aW9uIChjaGVja2VyKSB7XG5cdCAgICAgIHJldHVybiBnZXRDaGVja2VyRGlzcGxheShjaGVja2VyLCB7IHNob3J0OiB0cnVlIH0pO1xuXHQgICAgfSk7XG5cdCAgICB2YXIgc2hvcnRUeXBlID0gJ29uZU9mVHlwZVsnICsgY2hlY2tlcnNEaXNwbGF5LmpvaW4oJywgJykgKyAnXSc7XG5cdCAgICBmdW5jdGlvbiB0eXBlKG9wdGlvbnMpIHtcblx0ICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zaG9ydCkge1xuXHQgICAgICAgIHJldHVybiBzaG9ydFR5cGU7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHR5cGVDaGVja2Vycy5tYXAoZnVuY3Rpb24gKGNoZWNrZXIpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgb3B0aW9ucyk7XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgICAgdHlwZS5fX2FwaUNoZWNrRGF0YSA9IHsgb3B0aW9uYWw6IGZhbHNlLCB0eXBlOiAnb25lT2ZUeXBlJyB9O1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBvbmVPZlR5cGVDaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICghdHlwZUNoZWNrZXJzLnNvbWUoZnVuY3Rpb24gKGNoZWNrZXIpIHtcblx0ICAgICAgICByZXR1cm4gIWlzRXJyb3IoY2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSk7XG5cdCAgICAgIH0pKSB7XG5cdCAgICAgICAgcmV0dXJuIGdldEVycm9yKG5hbWUsIGxvY2F0aW9uLCBzaG9ydFR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUsIHNob3J0VHlwZTogc2hvcnRUeXBlIH0sIGRpc2FibGVkKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBhcnJheU9mQ2hlY2tHZXR0ZXIoY2hlY2tlcikge1xuXHQgICAgdmFyIHNob3J0Q2hlY2tlckRpc3BsYXkgPSBnZXRDaGVja2VyRGlzcGxheShjaGVja2VyLCB7IHNob3J0OiB0cnVlIH0pO1xuXHQgICAgdmFyIHNob3J0VHlwZSA9ICdhcnJheU9mWycgKyBzaG9ydENoZWNrZXJEaXNwbGF5ICsgJ10nO1xuXG5cdCAgICBmdW5jdGlvbiB0eXBlKG9wdGlvbnMpIHtcblx0ICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zaG9ydCkge1xuXHQgICAgICAgIHJldHVybiBzaG9ydFR5cGU7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIGdldENoZWNrZXJEaXNwbGF5KGNoZWNrZXIsIG9wdGlvbnMpO1xuXHQgICAgfVxuXHQgICAgdHlwZS5fX2FwaUNoZWNrRGF0YSA9IHsgb3B0aW9uYWw6IGZhbHNlLCB0eXBlOiAnYXJyYXlPZicgfTtcblxuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBhcnJheU9mQ2hlY2tlckRlZmluaXRpb24odmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICBpZiAoaXNFcnJvcihjaGVja2Vycy5hcnJheSh2YWwpKSB8fCAhdmFsLmV2ZXJ5KGZ1bmN0aW9uIChpdGVtKSB7XG5cdCAgICAgICAgcmV0dXJuICFpc0Vycm9yKGNoZWNrZXIoaXRlbSkpO1xuXHQgICAgICB9KSkge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgc2hvcnRUeXBlKTtcblx0ICAgICAgfVxuXHQgICAgfSwgeyB0eXBlOiB0eXBlLCBzaG9ydFR5cGU6IHNob3J0VHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gb2JqZWN0T2ZDaGVja0dldHRlcihjaGVja2VyKSB7XG5cdCAgICB2YXIgY2hlY2tlckRpc3BsYXkgPSBnZXRDaGVja2VyRGlzcGxheShjaGVja2VyLCB7IHNob3J0OiB0cnVlIH0pO1xuXHQgICAgdmFyIHNob3J0VHlwZSA9ICdvYmplY3RPZlsnICsgY2hlY2tlckRpc3BsYXkgKyAnXSc7XG5cblx0ICAgIGZ1bmN0aW9uIHR5cGUob3B0aW9ucykge1xuXHQgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNob3J0KSB7XG5cdCAgICAgICAgcmV0dXJuIHNob3J0VHlwZTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgb3B0aW9ucyk7XG5cdCAgICB9XG5cdCAgICB0eXBlLl9fYXBpQ2hlY2tEYXRhID0geyBvcHRpb25hbDogZmFsc2UsIHR5cGU6ICdvYmplY3RPZicgfTtcblxuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBvYmplY3RPZkNoZWNrZXJEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgdmFyIG5vdE9iamVjdCA9IGNoZWNrZXJzLm9iamVjdCh2YWwsIG5hbWUsIGxvY2F0aW9uKTtcblx0ICAgICAgaWYgKGlzRXJyb3Iobm90T2JqZWN0KSkge1xuXHQgICAgICAgIHJldHVybiBub3RPYmplY3Q7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGFsbFR5cGVzU3VjY2VzcyA9IGVhY2godmFsLCBmdW5jdGlvbiAoaXRlbSwga2V5KSB7XG5cdCAgICAgICAgaWYgKGlzRXJyb3IoY2hlY2tlcihpdGVtLCBrZXksIG5hbWUpKSkge1xuXHQgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSk7XG5cdCAgICAgIGlmICghYWxsVHlwZXNTdWNjZXNzKSB7XG5cdCAgICAgICAgcmV0dXJuIGdldEVycm9yKG5hbWUsIGxvY2F0aW9uLCBzaG9ydFR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUsIHNob3J0VHlwZTogc2hvcnRUeXBlIH0sIGRpc2FibGVkKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiB0eXBlT3JBcnJheU9mQ2hlY2tHZXR0ZXIoY2hlY2tlcikge1xuXHQgICAgdmFyIGNoZWNrZXJEaXNwbGF5ID0gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgeyBzaG9ydDogdHJ1ZSB9KTtcblx0ICAgIHZhciBzaG9ydFR5cGUgPSAndHlwZU9yQXJyYXlPZlsnICsgY2hlY2tlckRpc3BsYXkgKyAnXSc7XG5cblx0ICAgIGZ1bmN0aW9uIHR5cGUob3B0aW9ucykge1xuXHQgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNob3J0KSB7XG5cdCAgICAgICAgcmV0dXJuIHNob3J0VHlwZTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgb3B0aW9ucyk7XG5cdCAgICB9XG5cblx0ICAgIHR5cGUuX19hcGlDaGVja0RhdGEgPSB7IG9wdGlvbmFsOiBmYWxzZSwgdHlwZTogJ3R5cGVPckFycmF5T2YnIH07XG5cdCAgICByZXR1cm4gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIHR5cGVPckFycmF5T2ZEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24sIG9iaikge1xuXHQgICAgICBpZiAoaXNFcnJvcihjaGVja2Vycy5vbmVPZlR5cGUoW2NoZWNrZXIsIGNoZWNrZXJzLmFycmF5T2YoY2hlY2tlcildKSh2YWwsIG5hbWUsIGxvY2F0aW9uLCBvYmopKSkge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgc2hvcnRUeXBlKTtcblx0ICAgICAgfVxuXHQgICAgfSwgeyB0eXBlOiB0eXBlLCBzaG9ydFR5cGU6IHNob3J0VHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0U2hhcGVDaGVja0dldHRlcigpIHtcblx0ICAgIGZ1bmN0aW9uIHNoYXBlQ2hlY2tHZXR0ZXIoc2hhcGUsIG5vbk9iamVjdCkge1xuXHQgICAgICB2YXIgc2hhcGVUeXBlcyA9IHt9O1xuXHQgICAgICBlYWNoKHNoYXBlLCBmdW5jdGlvbiAoY2hlY2tlciwgcHJvcCkge1xuXHQgICAgICAgIHNoYXBlVHlwZXNbcHJvcF0gPSBnZXRDaGVja2VyRGlzcGxheShjaGVja2VyKTtcblx0ICAgICAgfSk7XG5cdCAgICAgIGZ1bmN0aW9uIHR5cGUoKSB7XG5cdCAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuXHQgICAgICAgIHZhciByZXQgPSB7fTtcblx0ICAgICAgICB2YXIgdGVyc2UgPSBvcHRpb25zLnRlcnNlO1xuXHQgICAgICAgIHZhciBvYmogPSBvcHRpb25zLm9iajtcblx0ICAgICAgICB2YXIgYWRkSGVscGVycyA9IG9wdGlvbnMuYWRkSGVscGVycztcblxuXHQgICAgICAgIHZhciBwYXJlbnRSZXF1aXJlZCA9IG9wdGlvbnMucmVxdWlyZWQ7XG5cdCAgICAgICAgZWFjaChzaGFwZSwgZnVuY3Rpb24gKGNoZWNrZXIsIHByb3ApIHtcblx0ICAgICAgICAgIC8qIGVzbGludCBjb21wbGV4aXR5OlsyLCA2XSAqL1xuXHQgICAgICAgICAgdmFyIHNwZWNpZmllZCA9IG9iaiAmJiBvYmouaGFzT3duUHJvcGVydHkocHJvcCk7XG5cdCAgICAgICAgICB2YXIgcmVxdWlyZWQgPSB1bmRlZihwYXJlbnRSZXF1aXJlZCkgPyAhY2hlY2tlci5pc09wdGlvbmFsIDogcGFyZW50UmVxdWlyZWQ7XG5cdCAgICAgICAgICBpZiAoIXRlcnNlIHx8IChzcGVjaWZpZWQgfHwgIWNoZWNrZXIuaXNPcHRpb25hbCkpIHtcblx0ICAgICAgICAgICAgcmV0W3Byb3BdID0gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgeyB0ZXJzZTogdGVyc2UsIG9iajogb2JqICYmIG9ialtwcm9wXSwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBhZGRIZWxwZXJzOiBhZGRIZWxwZXJzIH0pO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgaWYgKGFkZEhlbHBlcnMpIHtcblx0ICAgICAgICAgICAgbW9kaWZ5VHlwZURpc3BsYXlUb0hlbHBPdXQocmV0LCBwcm9wLCBzcGVjaWZpZWQsIGNoZWNrZXIsIHJlcXVpcmVkKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgICByZXR1cm4gcmV0O1xuXG5cdCAgICAgICAgZnVuY3Rpb24gbW9kaWZ5VHlwZURpc3BsYXlUb0hlbHBPdXQodGhlUmV0LCBwcm9wLCBzcGVjaWZpZWQsIGNoZWNrZXIsIHJlcXVpcmVkKSB7XG5cdCAgICAgICAgICBpZiAoIXNwZWNpZmllZCAmJiByZXF1aXJlZCAmJiAhY2hlY2tlci5pc09wdGlvbmFsKSB7XG5cdCAgICAgICAgICAgIHZhciBpdGVtID0gJ0lURU0nO1xuXHQgICAgICAgICAgICBpZiAoY2hlY2tlci50eXBlICYmIGNoZWNrZXIudHlwZS5fX2FwaUNoZWNrRGF0YSkge1xuXHQgICAgICAgICAgICAgIGl0ZW0gPSBjaGVja2VyLnR5cGUuX19hcGlDaGVja0RhdGEudHlwZS50b1VwcGVyQ2FzZSgpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGFkZEhlbHBlcignbWlzc2luZycsICdNSVNTSU5HIFRISVMgJyArIGl0ZW0sICcgPC0tIFlPVSBBUkUgTUlTU0lORyBUSElTJyk7XG5cdCAgICAgICAgICB9IGVsc2UgaWYgKHNwZWNpZmllZCkge1xuXHQgICAgICAgICAgICB2YXIgZXJyb3IgPSBjaGVja2VyKG9ialtwcm9wXSwgcHJvcCwgbnVsbCwgb2JqKTtcblx0ICAgICAgICAgICAgaWYgKGlzRXJyb3IoZXJyb3IpKSB7XG5cdCAgICAgICAgICAgICAgYWRkSGVscGVyKCdlcnJvcicsICdUSElTIElTIFRIRSBQUk9CTEVNOiAnICsgZXJyb3IubWVzc2FnZSwgJyA8LS0gVEhJUyBJUyBUSEUgUFJPQkxFTTogJyArIGVycm9yLm1lc3NhZ2UpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9XG5cblx0ICAgICAgICAgIGZ1bmN0aW9uIGFkZEhlbHBlcihwcm9wZXJ0eSwgb2JqZWN0TWVzc2FnZSwgc3RyaW5nTWVzc2FnZSkge1xuXHQgICAgICAgICAgICBpZiAodHlwZW9mIHRoZVJldFtwcm9wXSA9PT0gJ3N0cmluZycpIHtcblx0ICAgICAgICAgICAgICB0aGVSZXRbcHJvcF0gKz0gc3RyaW5nTWVzc2FnZTtcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICB0aGVSZXRbcHJvcF0uX19hcGlDaGVja0RhdGFbcHJvcGVydHldID0gb2JqZWN0TWVzc2FnZTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIHR5cGUuX19hcGlDaGVja0RhdGEgPSB7IHN0cmljdDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgdHlwZTogJ3NoYXBlJyB9O1xuXHQgICAgICB2YXIgc2hhcGVDaGVja2VyID0gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIHNoYXBlQ2hlY2tlckRlZmluaXRpb24odmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICAgIC8qIGVzbGludCBjb21wbGV4aXR5OlsyLCA2XSAqL1xuXHQgICAgICAgIHZhciBpc09iamVjdCA9ICFub25PYmplY3QgJiYgY2hlY2tlcnMub2JqZWN0KHZhbCwgbmFtZSwgbG9jYXRpb24pO1xuXHQgICAgICAgIGlmIChpc0Vycm9yKGlzT2JqZWN0KSkge1xuXHQgICAgICAgICAgcmV0dXJuIGlzT2JqZWN0O1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgc2hhcGVQcm9wRXJyb3IgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbiA/IGxvY2F0aW9uICsgKG5hbWUgPyAnLycgOiAnJykgOiAnJztcblx0ICAgICAgICBuYW1lID0gbmFtZSB8fCAnJztcblx0ICAgICAgICBlYWNoKHNoYXBlLCBmdW5jdGlvbiAoY2hlY2tlciwgcHJvcCkge1xuXHQgICAgICAgICAgaWYgKHZhbC5oYXNPd25Qcm9wZXJ0eShwcm9wKSB8fCAhY2hlY2tlci5pc09wdGlvbmFsKSB7XG5cdCAgICAgICAgICAgIHNoYXBlUHJvcEVycm9yID0gY2hlY2tlcih2YWxbcHJvcF0sIHByb3AsICcnICsgbG9jYXRpb24gKyBuYW1lLCB2YWwpO1xuXHQgICAgICAgICAgICByZXR1cm4gIWlzRXJyb3Ioc2hhcGVQcm9wRXJyb3IpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXHQgICAgICAgIGlmIChpc0Vycm9yKHNoYXBlUHJvcEVycm9yKSkge1xuXHQgICAgICAgICAgcmV0dXJuIHNoYXBlUHJvcEVycm9yO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSwgeyB0eXBlOiB0eXBlLCBzaG9ydFR5cGU6ICdzaGFwZScgfSwgZGlzYWJsZWQpO1xuXG5cdCAgICAgIGZ1bmN0aW9uIHN0cmljdFR5cGUoKSB7XG5cdCAgICAgICAgcmV0dXJuIHR5cGUuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuXHQgICAgICB9XG5cblx0ICAgICAgc3RyaWN0VHlwZS5fX2FwaUNoZWNrRGF0YSA9IGNvcHkoc2hhcGVDaGVja2VyLnR5cGUuX19hcGlDaGVja0RhdGEpO1xuXHQgICAgICBzdHJpY3RUeXBlLl9fYXBpQ2hlY2tEYXRhLnN0cmljdCA9IHRydWU7XG5cdCAgICAgIHNoYXBlQ2hlY2tlci5zdHJpY3QgPSBzZXR1cENoZWNrZXIoZnVuY3Rpb24gc3RyaWN0U2hhcGVDaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgICAgdmFyIHNoYXBlRXJyb3IgPSBzaGFwZUNoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbik7XG5cdCAgICAgICAgaWYgKGlzRXJyb3Ioc2hhcGVFcnJvcikpIHtcblx0ICAgICAgICAgIHJldHVybiBzaGFwZUVycm9yO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgYWxsb3dlZFByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzaGFwZSk7XG5cdCAgICAgICAgdmFyIGV4dHJhUHJvcHMgPSBPYmplY3Qua2V5cyh2YWwpLmZpbHRlcihmdW5jdGlvbiAocHJvcCkge1xuXHQgICAgICAgICAgcmV0dXJuIGFsbG93ZWRQcm9wZXJ0aWVzLmluZGV4T2YocHJvcCkgPT09IC0xO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICAgIGlmIChleHRyYVByb3BzLmxlbmd0aCkge1xuXHQgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihuQXRMKG5hbWUsIGxvY2F0aW9uKSArICcgY2Fubm90IGhhdmUgZXh0cmEgcHJvcGVydGllczogJyArIHQoZXh0cmFQcm9wcy5qb2luKCdgLCBgJykpICsgJy4nICsgKCdJdCBpcyBsaW1pdGVkIHRvICcgKyB0KGFsbG93ZWRQcm9wZXJ0aWVzLmpvaW4oJ2AsIGAnKSkpKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0sIHsgdHlwZTogc3RyaWN0VHlwZSwgc2hvcnRUeXBlOiAnc3RyaWN0IHNoYXBlJyB9LCBkaXNhYmxlZCk7XG5cblx0ICAgICAgcmV0dXJuIHNoYXBlQ2hlY2tlcjtcblx0ICAgIH1cblxuXHQgICAgc2hhcGVDaGVja0dldHRlci5pZk5vdCA9IGZ1bmN0aW9uIGlmTm90KG90aGVyUHJvcHMsIHByb3BDaGVja2VyKSB7XG5cdCAgICAgIGlmICghQXJyYXkuaXNBcnJheShvdGhlclByb3BzKSkge1xuXHQgICAgICAgIG90aGVyUHJvcHMgPSBbb3RoZXJQcm9wc107XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGRlc2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuXHQgICAgICBpZiAob3RoZXJQcm9wcy5sZW5ndGggPT09IDEpIHtcblx0ICAgICAgICBkZXNjcmlwdGlvbiA9ICdzcGVjaWZpZWQgb25seSBpZiAnICsgb3RoZXJQcm9wc1swXSArICcgaXMgbm90IHNwZWNpZmllZCc7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgZGVzY3JpcHRpb24gPSAnc3BlY2lmaWVkIG9ubHkgaWYgbm9uZSBvZiB0aGUgZm9sbG93aW5nIGFyZSBzcGVjaWZpZWQ6IFsnICsgbGlzdChvdGhlclByb3BzLCAnLCAnLCAnYW5kICcpICsgJ10nO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciBzaG9ydFR5cGUgPSAnaWZOb3RbJyArIG90aGVyUHJvcHMuam9pbignLCAnKSArICddJztcblx0ICAgICAgdmFyIHR5cGUgPSBnZXRUeXBlRm9yU2hhcGVDaGlsZChwcm9wQ2hlY2tlciwgZGVzY3JpcHRpb24sIHNob3J0VHlwZSk7XG5cdCAgICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gaWZOb3RDaGVja2VyKHByb3AsIHByb3BOYW1lLCBsb2NhdGlvbiwgb2JqKSB7XG5cdCAgICAgICAgdmFyIHByb3BFeGlzdHMgPSBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KHByb3BOYW1lKTtcblx0ICAgICAgICB2YXIgb3RoZXJQcm9wc0V4aXN0ID0gb3RoZXJQcm9wcy5zb21lKGZ1bmN0aW9uIChvdGhlclByb3ApIHtcblx0ICAgICAgICAgIHJldHVybiBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KG90aGVyUHJvcCk7XG5cdCAgICAgICAgfSk7XG5cdCAgICAgICAgaWYgKHByb3BFeGlzdHMgPT09IG90aGVyUHJvcHNFeGlzdCkge1xuXHQgICAgICAgICAgcmV0dXJuIGdldEVycm9yKHByb3BOYW1lLCBsb2NhdGlvbiwgdHlwZSk7XG5cdCAgICAgICAgfSBlbHNlIGlmIChwcm9wRXhpc3RzKSB7XG5cdCAgICAgICAgICByZXR1cm4gcHJvcENoZWNrZXIocHJvcCwgcHJvcE5hbWUsIGxvY2F0aW9uLCBvYmopO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSwgeyBub3RSZXF1aXJlZDogdHJ1ZSwgdHlwZTogdHlwZSwgc2hvcnRUeXBlOiBzaG9ydFR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgICAgfTtcblxuXHQgICAgc2hhcGVDaGVja0dldHRlci5vbmx5SWYgPSBmdW5jdGlvbiBvbmx5SWYob3RoZXJQcm9wcywgcHJvcENoZWNrZXIpIHtcblx0ICAgICAgb3RoZXJQcm9wcyA9IGFycmF5aWZ5KG90aGVyUHJvcHMpO1xuXHQgICAgICB2YXIgZGVzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG5cdCAgICAgIGlmIChvdGhlclByb3BzLmxlbmd0aCA9PT0gMSkge1xuXHQgICAgICAgIGRlc2NyaXB0aW9uID0gJ3NwZWNpZmllZCBvbmx5IGlmICcgKyBvdGhlclByb3BzWzBdICsgJyBpcyBhbHNvIHNwZWNpZmllZCc7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgZGVzY3JpcHRpb24gPSAnc3BlY2lmaWVkIG9ubHkgaWYgYWxsIG9mIHRoZSBmb2xsb3dpbmcgYXJlIHNwZWNpZmllZDogWycgKyBsaXN0KG90aGVyUHJvcHMsICcsICcsICdhbmQgJykgKyAnXSc7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHNob3J0VHlwZSA9ICdvbmx5SWZbJyArIG90aGVyUHJvcHMuam9pbignLCAnKSArICddJztcblx0ICAgICAgdmFyIHR5cGUgPSBnZXRUeXBlRm9yU2hhcGVDaGlsZChwcm9wQ2hlY2tlciwgZGVzY3JpcHRpb24sIHNob3J0VHlwZSk7XG5cdCAgICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gb25seUlmQ2hlY2tlckRlZmluaXRpb24ocHJvcCwgcHJvcE5hbWUsIGxvY2F0aW9uLCBvYmopIHtcblx0ICAgICAgICB2YXIgb3RoZXJzUHJlc2VudCA9IG90aGVyUHJvcHMuZXZlcnkoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdCAgICAgICAgICByZXR1cm4gb2JqLmhhc093blByb3BlcnR5KHByb3BlcnR5KTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgICBpZiAoIW90aGVyc1ByZXNlbnQpIHtcblx0ICAgICAgICAgIHJldHVybiBnZXRFcnJvcihwcm9wTmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICByZXR1cm4gcHJvcENoZWNrZXIocHJvcCwgcHJvcE5hbWUsIGxvY2F0aW9uLCBvYmopO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSwgeyB0eXBlOiB0eXBlLCBzaG9ydFR5cGU6IHNob3J0VHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgICB9O1xuXG5cdCAgICBzaGFwZUNoZWNrR2V0dGVyLnJlcXVpcmVkSWZOb3QgPSBmdW5jdGlvbiBzaGFwZVJlcXVpcmVkSWZOb3Qob3RoZXJQcm9wcywgcHJvcENoZWNrZXIpIHtcblx0ICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG90aGVyUHJvcHMpKSB7XG5cdCAgICAgICAgb3RoZXJQcm9wcyA9IFtvdGhlclByb3BzXTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gZ2V0UmVxdWlyZWRJZk5vdENoZWNrZXIoZmFsc2UsIG90aGVyUHJvcHMsIHByb3BDaGVja2VyKTtcblx0ICAgIH07XG5cblx0ICAgIHNoYXBlQ2hlY2tHZXR0ZXIucmVxdWlyZWRJZk5vdC5hbGwgPSBmdW5jdGlvbiBzaGFwZVJlcXVpcmVkSWZOb3RBbGwob3RoZXJQcm9wcywgcHJvcENoZWNrZXIpIHtcblx0ICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG90aGVyUHJvcHMpKSB7XG5cdCAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXF1aXJlZElmTm90LmFsbCBtdXN0IGJlIHBhc3NlZCBhbiBhcnJheScpO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBnZXRSZXF1aXJlZElmTm90Q2hlY2tlcih0cnVlLCBvdGhlclByb3BzLCBwcm9wQ2hlY2tlcik7XG5cdCAgICB9O1xuXG5cdCAgICBmdW5jdGlvbiBnZXRSZXF1aXJlZElmTm90Q2hlY2tlcihhbGwsIG90aGVyUHJvcHMsIHByb3BDaGVja2VyKSB7XG5cdCAgICAgIHZhciBwcm9wcyA9IHQob3RoZXJQcm9wcy5qb2luKCcsICcpKTtcblx0ICAgICAgdmFyIGlmUHJvcHMgPSAnaWYgJyArIChhbGwgPyAnYWxsIG9mJyA6ICdhdCBsZWFzdCBvbmUgb2YnKTtcblx0ICAgICAgdmFyIGRlc2NyaXB0aW9uID0gJ3NwZWNpZmllZCAnICsgaWZQcm9wcyArICcgdGhlc2UgYXJlIG5vdCBzcGVjaWZpZWQ6ICcgKyBwcm9wcyArICcgKG90aGVyd2lzZSBpdFxcJ3Mgb3B0aW9uYWwpJztcblx0ICAgICAgdmFyIHNob3J0VHlwZSA9ICdyZXF1aXJlZElmTm90JyArIChhbGwgPyAnLmFsbCcgOiAnJykgKyAnWycgKyBvdGhlclByb3BzLmpvaW4oJywgJykgKyAnfV0nO1xuXHQgICAgICB2YXIgdHlwZSA9IGdldFR5cGVGb3JTaGFwZUNoaWxkKHByb3BDaGVja2VyLCBkZXNjcmlwdGlvbiwgc2hvcnRUeXBlKTtcblx0ICAgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBzaGFwZVJlcXVpcmVkSWZOb3REZWZpbml0aW9uKHByb3AsIHByb3BOYW1lLCBsb2NhdGlvbiwgb2JqKSB7XG5cdCAgICAgICAgdmFyIHByb3BFeGlzdHMgPSBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KHByb3BOYW1lKTtcblx0ICAgICAgICB2YXIgaXRlcmF0aW9uID0gYWxsID8gJ2V2ZXJ5JyA6ICdzb21lJztcblx0ICAgICAgICB2YXIgb3RoZXJQcm9wc0V4aXN0ID0gb3RoZXJQcm9wc1tpdGVyYXRpb25dKGZ1bmN0aW9uIChvdGhlclByb3ApIHtcblx0ICAgICAgICAgIHJldHVybiBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KG90aGVyUHJvcCk7XG5cdCAgICAgICAgfSk7XG5cdCAgICAgICAgaWYgKCFvdGhlclByb3BzRXhpc3QgJiYgIXByb3BFeGlzdHMpIHtcblx0ICAgICAgICAgIHJldHVybiBnZXRFcnJvcihwcm9wTmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICAgIH0gZWxzZSBpZiAocHJvcEV4aXN0cykge1xuXHQgICAgICAgICAgcmV0dXJuIHByb3BDaGVja2VyKHByb3AsIHByb3BOYW1lLCBsb2NhdGlvbiwgb2JqKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0sIHsgdHlwZTogdHlwZSwgbm90UmVxdWlyZWQ6IHRydWUgfSwgZGlzYWJsZWQpO1xuXHQgICAgfVxuXG5cdCAgICByZXR1cm4gc2hhcGVDaGVja0dldHRlcjtcblxuXHQgICAgZnVuY3Rpb24gZ2V0VHlwZUZvclNoYXBlQ2hpbGQocHJvcENoZWNrZXIsIGRlc2NyaXB0aW9uLCBzaG9ydFR5cGUpIHtcblx0ICAgICAgZnVuY3Rpb24gdHlwZShvcHRpb25zKSB7XG5cdCAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zaG9ydCkge1xuXHQgICAgICAgICAgcmV0dXJuIHNob3J0VHlwZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGdldENoZWNrZXJEaXNwbGF5KHByb3BDaGVja2VyKTtcblx0ICAgICAgfVxuXHQgICAgICB0eXBlLl9fYXBpQ2hlY2tEYXRhID0geyBvcHRpb25hbDogZmFsc2UsIHR5cGU6ICdpZk5vdCcsIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiB9O1xuXHQgICAgICByZXR1cm4gdHlwZTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICBmdW5jdGlvbiBhcmd1bWVudHNDaGVja2VyR2V0dGVyKCkge1xuXHQgICAgdmFyIHR5cGUgPSAnZnVuY3Rpb24gYXJndW1lbnRzJztcblx0ICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gYXJnc0NoZWNrZXJEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSB8fCBpc0Vycm9yKGNoZWNrZXJzLm9iamVjdCh2YWwpKSB8fCBpc0Vycm9yKGNoZWNrZXJzLm51bWJlcih2YWwubGVuZ3RoKSkpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGFueUNoZWNrR2V0dGVyKCkge1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBhbnlDaGVja2VyRGVmaW5pdGlvbigpIHtcblx0ICAgICAgLy8gZG9uJ3QgZG8gYW55dGhpbmdcblx0ICAgIH0sIHsgdHlwZTogJ2FueScgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIG51bGxDaGVja0dldHRlcigpIHtcblx0ICAgIHZhciB0eXBlID0gJ251bGwnO1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBudWxsQ2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh2YWwgIT09IG51bGwpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIHJhbmdlQ2hlY2tHZXR0ZXIobWluLCBtYXgpIHtcblx0ICAgIHZhciB0eXBlID0gJ1JhbmdlICgnICsgbWluICsgJyAtICcgKyBtYXggKyAnKSc7XG5cdCAgICByZXR1cm4gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIHJhbmdlQ2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh0eXBlb2YgdmFsICE9PSAnbnVtYmVyJyB8fCB2YWwgPCBtaW4gfHwgdmFsID4gbWF4KSB7XG5cdCAgICAgICAgcmV0dXJuIGdldEVycm9yKG5hbWUsIGxvY2F0aW9uLCB0eXBlKTtcblx0ICAgICAgfVxuXHQgICAgfSwgeyB0eXBlOiB0eXBlIH0sIGRpc2FibGVkKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBsZXNzVGhhbkNoZWNrR2V0dGVyKG1pbikge1xuXHQgICAgdmFyIHR5cGUgPSAnbGVzc1RoYW5bJyArIG1pbiArICddJztcblx0ICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gbGVzc1RoYW5DaGVja2VyKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgaWYgKHR5cGVvZiB2YWwgIT09ICdudW1iZXInIHx8IHZhbCA+IG1pbikge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgdHlwZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sIHsgdHlwZTogdHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ3JlYXRlclRoYW5DaGVja0dldHRlcihtYXgpIHtcblx0ICAgIHZhciB0eXBlID0gJ2dyZWF0ZXJUaGFuWycgKyBtYXggKyAnXSc7XG5cdCAgICByZXR1cm4gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIGdyZWF0ZXJUaGFuQ2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh0eXBlb2YgdmFsICE9PSAnbnVtYmVyJyB8fCB2YWwgPCBtYXgpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGVtcHR5T2JqZWN0Q2hlY2tHZXR0ZXIoKSB7XG5cdCAgICB2YXIgdHlwZSA9ICdlbXB0eSBvYmplY3QnO1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBlbXB0eU9iamVjdENoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICBpZiAodHlwZU9mKHZhbCkgIT09ICdvYmplY3QnIHx8IHZhbCA9PT0gbnVsbCB8fCBPYmplY3Qua2V5cyh2YWwpLmxlbmd0aCkge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgdHlwZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sIHsgdHlwZTogdHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXHR9XG5cbi8qKiovIH1cbi8qKioqKiovIF0pXG59KTtcbjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vYXBpLWNoZWNrL2Rpc3QvYXBpLWNoZWNrLmpzXG4vLyBtb2R1bGUgaWQgPSAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 3 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("// angular-formly version 6.8.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory(__webpack_require__(2), __webpack_require__(4));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"api-check\", \"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ngFormly\"] = factory(require(\"api-check\"), require(\"angular\"));\n\telse\n\t\troot[\"ngFormly\"] = factory(root[\"apiCheck\"], root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_16__, __WEBPACK_EXTERNAL_MODULE_17__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar index = _interopRequire(__webpack_require__(1));\n\n\tmodule.exports = index;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tvar formlyApiCheck = _interopRequire(__webpack_require__(2));\n\n\tvar formlyErrorAndWarningsUrlPrefix = _interopRequire(__webpack_require__(3));\n\n\tvar formlyUsability = _interopRequire(__webpack_require__(4));\n\n\tvar formlyConfig = _interopRequire(__webpack_require__(5));\n\n\tvar formlyValidationMessages = _interopRequire(__webpack_require__(6));\n\n\tvar formlyUtil = _interopRequire(__webpack_require__(7));\n\n\tvar formlyWarn = _interopRequire(__webpack_require__(8));\n\n\tvar formlyCustomValidation = _interopRequire(__webpack_require__(9));\n\n\tvar formlyField = _interopRequire(__webpack_require__(10));\n\n\tvar formlyFocus = _interopRequire(__webpack_require__(11));\n\n\tvar formlyForm = _interopRequire(__webpack_require__(12));\n\n\tvar formlyNgModelAttrsManipulator = _interopRequire(__webpack_require__(13));\n\n\tvar formlyCustomTags = _interopRequire(__webpack_require__(14));\n\n\tvar ngModuleName = \"formly\";\n\n\tmodule.exports = ngModuleName;\n\n\tvar ngModule = angular.module(ngModuleName, []);\n\n\tngModule.constant(\"formlyApiCheck\", formlyApiCheck);\n\tngModule.constant(\"formlyErrorAndWarningsUrlPrefix\", formlyErrorAndWarningsUrlPrefix);\n\tngModule.constant(\"formlyVersion\", (\"6.8.2\")); // <-- webpack variable\n\n\tngModule.provider(\"formlyUsability\", formlyUsability);\n\tngModule.provider(\"formlyConfig\", formlyConfig);\n\n\tngModule.factory(\"formlyValidationMessages\", formlyValidationMessages);\n\tngModule.factory(\"formlyUtil\", formlyUtil);\n\tngModule.factory(\"formlyWarn\", formlyWarn);\n\n\tngModule.directive(\"formlyCustomValidation\", formlyCustomValidation);\n\tngModule.directive(\"formlyField\", formlyField);\n\tngModule.directive(\"formlyFocus\", formlyFocus);\n\tngModule.directive(\"formlyForm\", formlyForm);\n\n\tngModule.run(formlyNgModelAttrsManipulator);\n\tngModule.run(formlyCustomTags);\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar apiCheckFactory = _interopRequire(__webpack_require__(16));\n\n\tvar apiCheck = apiCheckFactory({\n\t output: {\n\t prefix: \"angular-formly:\",\n\t docsBaseUrl: __webpack_require__(3)\n\t }\n\t});\n\n\tfunction shapeRequiredIfNot(otherProps, propChecker) {\n\t if (!angular.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t var type = \"specified if these are not specified: `\" + otherProps.join(\", \") + \"` (otherwise it's optional)\";\n\t function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (!otherPropsExist && !propExists) {\n\t return apiCheck.utils.getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }\n\t shapeRequiredIfNotDefinition.type = type;\n\t return apiCheck.utils.checkerHelpers.setupChecker(shapeRequiredIfNotDefinition);\n\t}\n\n\tvar formlyExpression = apiCheck.oneOfType([apiCheck.string, apiCheck.func]);\n\tvar specifyWrapperType = apiCheck.oneOfType([apiCheck.oneOf([null]), apiCheck.typeOrArrayOf(apiCheck.string)]);\n\n\tvar apiCheckProperty = apiCheck.objectOf(apiCheck.func);\n\n\tvar apiCheckInstanceProperty = apiCheck.shape.onlyIf(\"apiCheck\", apiCheck.func.withProperties({\n\t warn: apiCheck.func,\n\t \"throw\": apiCheck.func,\n\t shape: apiCheck.func\n\t}));\n\n\tvar apiCheckFunctionProperty = apiCheck.shape.onlyIf(\"apiCheck\", apiCheck.oneOf([\"throw\", \"warn\"]));\n\n\tvar formlyWrapperType = apiCheck.shape({\n\t name: shapeRequiredIfNot(\"types\", apiCheck.string).optional,\n\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.string).optional,\n\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.string).optional,\n\t types: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t overwriteOk: apiCheck.bool.optional,\n\t validateOptions: apiCheck.func.optional,\n\t apiCheck: apiCheckProperty.optional,\n\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t apiCheckOptions: apiCheck.object.optional\n\t}).strict;\n\n\tvar expressionProperties = apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t expression: formlyExpression,\n\t message: formlyExpression.optional\n\t}).strict]));\n\n\tvar modelChecker = apiCheck.oneOfType([apiCheck.oneOf([\"formState\"]), apiCheck.object]);\n\n\tvar fieldOptionsApiShape = {\n\t $$hashKey: apiCheck.any.optional,\n\t type: apiCheck.shape.ifNot([\"template\", \"templateUrl\"], apiCheck.string).optional,\n\t template: apiCheck.shape.ifNot([\"type\", \"templateUrl\"], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t templateUrl: apiCheck.shape.ifNot([\"type\", \"template\"], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t key: apiCheck.oneOfType([apiCheck.string, apiCheck.number]).optional,\n\t model: modelChecker.optional,\n\t className: apiCheck.string.optional,\n\t id: apiCheck.string.optional,\n\t expressionProperties: expressionProperties.optional,\n\t data: apiCheck.object.optional,\n\t templateOptions: apiCheck.object.optional,\n\t wrapper: specifyWrapperType.optional,\n\t modelOptions: apiCheck.shape({\n\t updateOn: apiCheck.string.optional,\n\t debounce: apiCheck.oneOfType([apiCheck.objectOf(apiCheck.number), apiCheck.number]).optional,\n\t allowInvalid: apiCheck.bool.optional,\n\t getterSetter: apiCheck.bool.optional,\n\t timezone: apiCheck.string.optional\n\t }).optional,\n\t watcher: apiCheck.typeOrArrayOf(apiCheck.shape({\n\t expression: formlyExpression.optional,\n\t listener: formlyExpression\n\t })).optional,\n\t validators: apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t expression: formlyExpression,\n\t message: formlyExpression.optional\n\t }).strict])).optional,\n\t noFormControl: apiCheck.bool.optional,\n\t hide: apiCheck.bool.optional,\n\t hideExpression: formlyExpression.optional,\n\t ngModelAttrs: apiCheck.objectOf(apiCheck.shape({\n\t expression: apiCheck.shape.ifNot([\"value\", \"attribute\", \"bound\"], apiCheck.any).optional,\n\t value: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional,\n\t attribute: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional,\n\t bound: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional\n\t }).strict).optional,\n\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional,\n\t optionsTypes: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t link: apiCheck.func.optional,\n\t controller: apiCheck.oneOfType([apiCheck.string, apiCheck.func, apiCheck.array]).optional,\n\t validation: apiCheck.shape({\n\t show: apiCheck.oneOfType([apiCheck.bool, apiCheck.oneOf([null])]).optional,\n\t messages: apiCheck.objectOf(formlyExpression).optional,\n\t errorExistsAndShouldBeVisible: apiCheck.bool.optional\n\t }).optional,\n\t formControl: apiCheck.object.optional,\n\t value: apiCheck.func.optional,\n\t runExpressions: apiCheck.func.optional,\n\t resetModel: apiCheck.func.optional,\n\t updateInitialValue: apiCheck.func.optional,\n\t initialValue: apiCheck.any.optional,\n\t defaultValue: apiCheck.any.optional\n\t};\n\n\tvar formlyFieldOptions = apiCheck.shape(fieldOptionsApiShape).strict;\n\n\tvar formOptionsApi = apiCheck.shape({\n\t formState: apiCheck.object.optional,\n\t resetModel: apiCheck.func.optional,\n\t updateInitialValue: apiCheck.func.optional,\n\t removeChromeAutoComplete: apiCheck.bool.optional\n\t}).strict;\n\n\tvar fieldGroup = apiCheck.shape({\n\t $$hashKey: apiCheck.any.optional,\n\t // danger. Nested field groups wont get api-checked...\n\t fieldGroup: apiCheck.arrayOf(apiCheck.oneOfType([formlyFieldOptions, apiCheck.object])),\n\t className: apiCheck.string.optional,\n\t options: formOptionsApi.optional,\n\t hide: apiCheck.bool.optional,\n\t hideExpression: formlyExpression.optional,\n\t model: modelChecker.optional,\n\t form: apiCheck.object.optional,\n\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional\n\t}).strict;\n\n\tvar typeOptionsDefaultOptions = angular.copy(fieldOptionsApiShape);\n\ttypeOptionsDefaultOptions.key = apiCheck.string.optional;\n\n\tvar formlyTypeOptions = apiCheck.shape({\n\t name: apiCheck.string,\n\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t controller: apiCheck.oneOfType([apiCheck.func, apiCheck.string, apiCheck.array]).optional,\n\t link: apiCheck.func.optional,\n\t defaultOptions: apiCheck.oneOfType([apiCheck.func, apiCheck.shape(typeOptionsDefaultOptions)]).optional,\n\t \"extends\": apiCheck.string.optional,\n\t wrapper: specifyWrapperType.optional,\n\t data: apiCheck.object.optional,\n\t validateOptions: apiCheck.func.optional,\n\t apiCheck: apiCheckProperty.optional,\n\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t apiCheckOptions: apiCheck.object.optional,\n\t overwriteOk: apiCheck.bool.optional\n\t}).strict;\n\tangular.extend(apiCheck, {\n\t formlyTypeOptions: formlyTypeOptions, formlyFieldOptions: formlyFieldOptions, formlyExpression: formlyExpression, formlyWrapperType: formlyWrapperType, fieldGroup: fieldGroup, formOptionsApi: formOptionsApi\n\t});\n\n\tmodule.exports = apiCheck;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = \"https://github.com/formly-js/angular-formly/blob/\" + (\"6.8.2\") + \"/other/ERRORS_AND_WARNINGS.md#\";\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyUsability;\n\n\t// @ngInject\n\tfunction formlyUsability(formlyApiCheck, formlyErrorAndWarningsUrlPrefix) {\n\t var _this = this;\n\n\t angular.extend(this, {\n\t getFormlyError: getFormlyError,\n\t getFieldError: getFieldError,\n\t checkWrapper: checkWrapper,\n\t checkWrapperTemplate: checkWrapperTemplate,\n\t $get: function () {\n\t return _this;\n\t }\n\t });\n\n\t function getFieldError(errorInfoSlug, message, field) {\n\t if (arguments.length < 3) {\n\t field = message;\n\t message = errorInfoSlug;\n\t errorInfoSlug = null;\n\t }\n\t return new Error(getErrorMessage(errorInfoSlug, message) + (\" Field definition: \" + angular.toJson(field)));\n\t }\n\n\t function getFormlyError(errorInfoSlug, message) {\n\t if (!message) {\n\t message = errorInfoSlug;\n\t errorInfoSlug = null;\n\t }\n\t return new Error(getErrorMessage(errorInfoSlug, message));\n\t }\n\n\t function getErrorMessage(errorInfoSlug, message) {\n\t var url = \"\";\n\t if (errorInfoSlug !== null) {\n\t url = \"\" + formlyErrorAndWarningsUrlPrefix + \"\" + errorInfoSlug;\n\t }\n\t return \"Formly Error: \" + message + \". \" + url;\n\t }\n\n\t function checkWrapper(wrapper) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyWrapperType, wrapper, {\n\t prefix: \"formlyConfig.setWrapper\",\n\t urlSuffix: \"setwrapper-validation-failed\"\n\t });\n\t }\n\n\t function checkWrapperTemplate(template, additionalInfo) {\n\t var formlyTransclude = \" \";\n\t if (template.indexOf(formlyTransclude) === -1) {\n\t throw getFormlyError(\"Template wrapper templates must use \\\"\" + formlyTransclude + \"\\\" somewhere in them. \" + (\"This one does not have \\\" \\\" in it: \" + template) + \"\\n\" + (\"Additional information: \" + JSON.stringify(additionalInfo)));\n\t }\n\t }\n\t}\n\tformlyUsability.$inject = [\"formlyApiCheck\", \"formlyErrorAndWarningsUrlPrefix\"];\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tvar utils = _interopRequire(__webpack_require__(18));\n\n\tmodule.exports = formlyConfig;\n\n\t// @ngInject\n\tfunction formlyConfig(formlyUsabilityProvider, formlyApiCheck) {\n\t var _this2 = this;\n\n\t var typeMap = {};\n\t var templateWrappersMap = {};\n\t var defaultWrapperName = \"default\";\n\t var _this = this;\n\t var getError = formlyUsabilityProvider.getFormlyError;\n\n\t angular.extend(this, {\n\t setType: setType,\n\t getType: getType,\n\t setWrapper: setWrapper,\n\t getWrapper: getWrapper,\n\t getWrapperByType: getWrapperByType,\n\t removeWrapperByName: removeWrapperByName,\n\t removeWrappersForType: removeWrappersForType,\n\t disableWarnings: false,\n\t extras: {\n\t disableNgModelAttrsManipulator: false,\n\t ngModelAttrsManipulatorPreferUnbound: false,\n\t removeChromeAutoComplete: false,\n\t defaultHideDirective: \"ng-if\",\n\t getFieldId: null\n\t },\n\t templateManipulators: {\n\t preWrapper: [],\n\t postWrapper: []\n\t },\n\t $get: function () {\n\t return _this2;\n\t }\n\t });\n\n\t function setType(options) {\n\t if (angular.isArray(options)) {\n\t angular.forEach(options, setType);\n\t } else if (angular.isObject(options)) {\n\t checkType(options);\n\t if (options[\"extends\"]) {\n\t extendTypeOptions(options);\n\t }\n\t typeMap[options.name] = options;\n\t } else {\n\t throw getError(\"You must provide an object or array for setType. You provided: \" + JSON.stringify(arguments));\n\t }\n\t }\n\n\t function checkType(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyTypeOptions, options, {\n\t prefix: \"formlyConfig.setType\",\n\t url: \"settype-validation-failed\"\n\t });\n\t if (!options.overwriteOk) {\n\t checkOverwrite(options.name, typeMap, options, \"types\");\n\t } else {\n\t options.overwriteOk = undefined;\n\t }\n\t }\n\n\t function extendTypeOptions(options) {\n\t var extendsType = getType(options[\"extends\"], true, options);\n\t extendTypeControllerFunction(options, extendsType);\n\t extendTypeLinkFunction(options, extendsType);\n\t extendTypeValidateOptionsFunction(options, extendsType);\n\t extendTypeDefaultOptions(options, extendsType);\n\t utils.reverseDeepMerge(options, extendsType);\n\t extendTemplate(options, extendsType);\n\t }\n\n\t function extendTemplate(options, extendsType) {\n\t if (options.template && extendsType.templateUrl) {\n\t delete options.templateUrl;\n\t } else if (options.templateUrl && extendsType.template) {\n\t delete options.template;\n\t }\n\t }\n\n\t function extendTypeControllerFunction(options, extendsType) {\n\t var extendsCtrl = extendsType.controller;\n\t if (!angular.isDefined(extendsCtrl)) {\n\t return;\n\t }\n\t var optionsCtrl = options.controller;\n\t if (angular.isDefined(optionsCtrl)) {\n\t options.controller = function ($scope, $controller) {\n\t $controller(extendsCtrl, { $scope: $scope });\n\t $controller(optionsCtrl, { $scope: $scope });\n\t };\n\t options.controller.$inject = [\"$scope\", \"$controller\"];\n\t } else {\n\t options.controller = extendsCtrl;\n\t }\n\t }\n\n\t function extendTypeLinkFunction(options, extendsType) {\n\t var extendsFn = extendsType.link;\n\t if (!angular.isDefined(extendsFn)) {\n\t return;\n\t }\n\t var optionsFn = options.link;\n\t if (angular.isDefined(optionsFn)) {\n\t options.link = function () {\n\t extendsFn.apply(undefined, arguments);\n\t optionsFn.apply(undefined, arguments);\n\t };\n\t } else {\n\t options.link = extendsFn;\n\t }\n\t }\n\n\t function extendTypeValidateOptionsFunction(options, extendsType) {\n\t var extendsFn = extendsType.validateOptions;\n\t if (!angular.isDefined(extendsFn)) {\n\t return;\n\t }\n\t var optionsFn = options.validateOptions;\n\t var originalDefaultOptions = options.defaultOptions;\n\t if (angular.isDefined(optionsFn)) {\n\t options.validateOptions = function (options) {\n\t optionsFn(options);\n\t var mergedOptions = angular.copy(options);\n\t var defaultOptions = originalDefaultOptions;\n\t if (defaultOptions) {\n\t if (angular.isFunction(defaultOptions)) {\n\t defaultOptions = defaultOptions(mergedOptions);\n\t }\n\t utils.reverseDeepMerge(mergedOptions, defaultOptions);\n\t }\n\t extendsFn(mergedOptions);\n\t };\n\t } else {\n\t options.validateOptions = extendsFn;\n\t }\n\t }\n\n\t function extendTypeDefaultOptions(options, extendsType) {\n\t var extendsDO = extendsType.defaultOptions;\n\t if (!angular.isDefined(extendsDO)) {\n\t return;\n\t }\n\t var optionsDO = options.defaultOptions;\n\t var optionsDOIsFn = angular.isFunction(optionsDO);\n\t var extendsDOIsFn = angular.isFunction(extendsDO);\n\t if (extendsDOIsFn) {\n\t options.defaultOptions = function defaultOptions(options) {\n\t var extendsDefaultOptions = extendsDO(options);\n\t var mergedDefaultOptions = {};\n\t utils.reverseDeepMerge(mergedDefaultOptions, options, extendsDefaultOptions);\n\t var extenderOptionsDefaultOptions = optionsDO;\n\t if (optionsDOIsFn) {\n\t extenderOptionsDefaultOptions = extenderOptionsDefaultOptions(mergedDefaultOptions);\n\t }\n\t utils.reverseDeepMerge(extendsDefaultOptions, extenderOptionsDefaultOptions);\n\t return extendsDefaultOptions;\n\t };\n\t } else if (optionsDOIsFn) {\n\t options.defaultOptions = function defaultOptions(options) {\n\t var newDefaultOptions = {};\n\t utils.reverseDeepMerge(newDefaultOptions, options, extendsDO);\n\t return optionsDO(newDefaultOptions);\n\t };\n\t }\n\t }\n\n\t function getType(name, throwError, errorContext) {\n\t if (!name) {\n\t return undefined;\n\t }\n\t var type = typeMap[name];\n\t if (!type && throwError === true) {\n\t throw getError(\"There is no type by the name of \\\"\" + name + \"\\\": \" + JSON.stringify(errorContext));\n\t } else {\n\t return type;\n\t }\n\t }\n\n\t function setWrapper(_x, _x2) {\n\t var _again = true;\n\n\t _function: while (_again) {\n\t _again = false;\n\t var options = _x,\n\t name = _x2;\n\n\t if (angular.isArray(options)) {\n\t return options.map(function (wrapperOptions) {\n\t return setWrapper(wrapperOptions);\n\t });\n\t } else if (angular.isObject(options)) {\n\t options.types = getOptionsTypes(options);\n\t options.name = getOptionsName(options, name);\n\t checkWrapperAPI(options);\n\t templateWrappersMap[options.name] = options;\n\t return options;\n\t } else if (angular.isString(options)) {\n\t _x = {\n\t template: options,\n\t name: name\n\t };\n\t _again = true;\n\t continue _function;\n\t }\n\t }\n\t }\n\n\t function getOptionsTypes(options) {\n\t if (angular.isString(options.types)) {\n\t return [options.types];\n\t }\n\t if (!angular.isDefined(options.types)) {\n\t return [];\n\t } else {\n\t return options.types;\n\t }\n\t }\n\n\t function getOptionsName(options, name) {\n\t return options.name || name || options.types.join(\" \") || defaultWrapperName;\n\t }\n\n\t function checkWrapperAPI(options) {\n\t formlyUsabilityProvider.checkWrapper(options);\n\t if (options.template) {\n\t formlyUsabilityProvider.checkWrapperTemplate(options.template, options);\n\t }\n\t if (!options.overwriteOk) {\n\t checkOverwrite(options.name, templateWrappersMap, options, \"templateWrappers\");\n\t } else {\n\t delete options.overwriteOk;\n\t }\n\t checkWrapperTypes(options);\n\t }\n\n\t function checkWrapperTypes(options) {\n\t var shouldThrow = !angular.isArray(options.types) || !options.types.every(angular.isString);\n\t if (shouldThrow) {\n\t throw getError(\"Attempted to create a template wrapper with types that is not a string or an array of strings\");\n\t }\n\t }\n\n\t function checkOverwrite(property, object, newValue, objectName) {\n\t if (object.hasOwnProperty(property)) {\n\t warn([\"Attempting to overwrite \" + property + \" on \" + objectName + \" which is currently\", \"\" + JSON.stringify(object[property]) + \" with \" + JSON.stringify(newValue), \"To supress this warning, specify the property \\\"overwriteOk: true\\\"\"].join(\" \"));\n\t }\n\t }\n\n\t function getWrapper(name) {\n\t return templateWrappersMap[name || defaultWrapperName];\n\t }\n\n\t function getWrapperByType(type) {\n\t /* jshint maxcomplexity:6 */\n\t var wrappers = [];\n\t for (var name in templateWrappersMap) {\n\t if (templateWrappersMap.hasOwnProperty(name)) {\n\t if (templateWrappersMap[name].types && templateWrappersMap[name].types.indexOf(type) !== -1) {\n\t wrappers.push(templateWrappersMap[name]);\n\t }\n\t }\n\t }\n\t return wrappers;\n\t }\n\n\t function removeWrapperByName(name) {\n\t var wrapper = templateWrappersMap[name];\n\t delete templateWrappersMap[name];\n\t return wrapper;\n\t }\n\n\t function removeWrappersForType(type) {\n\t var wrappers = getWrapperByType(type);\n\t if (!wrappers) {\n\t return;\n\t }\n\t if (!angular.isArray(wrappers)) {\n\t return removeWrapperByName(wrappers.name);\n\t } else {\n\t wrappers.forEach(function (wrapper) {\n\t return removeWrapperByName(wrapper.name);\n\t });\n\t return wrappers;\n\t }\n\t }\n\n\t function warn() {\n\t if (!_this.disableWarnings) {\n\t console.warn.apply(console, arguments);\n\t }\n\t }\n\t}\n\tformlyConfig.$inject = [\"formlyUsabilityProvider\", \"formlyApiCheck\"];\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyValidationMessages;\n\n\t// @ngInject\n\tfunction formlyValidationMessages() {\n\n\t var validationMessages = {\n\t addTemplateOptionValueMessage: addTemplateOptionValueMessage,\n\t addStringMessage: addStringMessage,\n\t messages: {}\n\t };\n\n\t return validationMessages;\n\n\t function addTemplateOptionValueMessage(name, prop, prefix, suffix, alternate) {\n\t validationMessages.messages[name] = templateOptionValue(prop, prefix, suffix, alternate);\n\t }\n\n\t function addStringMessage(name, string) {\n\t validationMessages.messages[name] = function () {\n\t return string;\n\t };\n\t }\n\n\t function templateOptionValue(prop, prefix, suffix, alternate) {\n\t return function getValidationMessage(viewValue, modelValue, scope) {\n\t if (scope.options.templateOptions[prop]) {\n\t return \"\" + prefix + \" \" + scope.options.templateOptions[prop] + \" \" + suffix;\n\t } else {\n\t return alternate;\n\t }\n\t };\n\t }\n\t}\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar utils = _interopRequire(__webpack_require__(18));\n\n\tmodule.exports = formlyUtil;\n\n\t// @ngInject\n\tfunction formlyUtil() {\n\t return utils;\n\t}\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\n\tmodule.exports = formlyWarn;\n\n\t// @ngInject\n\tfunction formlyWarn(formlyConfig, formlyErrorAndWarningsUrlPrefix, $log) {\n\t return function warn() {\n\t if (!formlyConfig.disableWarnings) {\n\t var args = Array.prototype.slice.call(arguments);\n\t var warnInfoSlug = args.shift();\n\t args.unshift(\"Formly Warning:\");\n\t args.push(\"\" + formlyErrorAndWarningsUrlPrefix + \"\" + warnInfoSlug);\n\t $log.warn.apply($log, _toConsumableArray(args));\n\t }\n\t };\n\t}\n\tformlyWarn.$inject = [\"formlyConfig\", \"formlyErrorAndWarningsUrlPrefix\", \"$log\"];\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyCustomValidation;\n\n\t// @ngInject\n\tfunction formlyCustomValidation(formlyUtil, $q) {\n\t return {\n\t restrict: \"A\",\n\t require: \"ngModel\",\n\t link: function formlyCustomValidationLink(scope, el, attrs, ctrl) {\n\t var opts = scope.options;\n\t if (opts.validators) {\n\t checkValidators(opts.validators);\n\t }\n\t opts.validation.messages = opts.validation.messages || {};\n\t angular.forEach(opts.validation.messages, function (message, key) {\n\t opts.validation.messages[key] = function () {\n\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t };\n\t });\n\n\t var useNewValidatorsApi = ctrl.hasOwnProperty(\"$validators\") && !attrs.hasOwnProperty(\"useParsers\");\n\t angular.forEach(opts.validators, function addValidatorToPipeline(validator, name) {\n\t var message = validator.message;\n\t if (message) {\n\t opts.validation.messages[name] = function () {\n\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t };\n\t }\n\t validator = angular.isObject(validator) ? validator.expression : validator;\n\t var isPossiblyAsync = !angular.isString(validator);\n\t if (useNewValidatorsApi) {\n\t setupWithValidators();\n\t } else {\n\t setupWithParsers();\n\t }\n\n\t function setupWithValidators() {\n\t var validatorCollection = isPossiblyAsync ? \"$asyncValidators\" : \"$validators\";\n\t ctrl[validatorCollection][name] = function evalValidity(modelValue, viewValue) {\n\t var value = formlyUtil.formlyEval(scope, validator, modelValue, viewValue);\n\t if (isPossiblyAsync) {\n\t return isPromiseLike(value) ? value : value ? $q.when(value) : $q.reject(value);\n\t } else {\n\t return value;\n\t }\n\t };\n\t }\n\n\t function setupWithParsers() {\n\t var inFlightValidator = undefined;\n\t ctrl.$parsers.unshift(function evalValidityOfParser(viewValue) {\n\t var isValid = formlyUtil.formlyEval(scope, validator, ctrl.$modelValue, viewValue);\n\t if (isPromiseLike(isValid)) {\n\t ctrl.$pending = ctrl.$pending || {};\n\t ctrl.$pending[name] = true;\n\t inFlightValidator = isValid;\n\t isValid.then(function () {\n\t if (inFlightValidator === isValid) {\n\t ctrl.$setValidity(name, true);\n\t }\n\t })[\"catch\"](function () {\n\t if (inFlightValidator === isValid) {\n\t ctrl.$setValidity(name, false);\n\t }\n\t })[\"finally\"](function () {\n\t if (Object.keys(ctrl.$pending).length === 1) {\n\t delete ctrl.$pending;\n\t } else {\n\t delete ctrl.$pending[name];\n\t }\n\t });\n\t } else {\n\t ctrl.$setValidity(name, isValid);\n\t }\n\t return viewValue;\n\t });\n\t }\n\t });\n\t }\n\t };\n\n\t function isPromiseLike(obj) {\n\t return obj && angular.isFunction(obj.then);\n\t }\n\n\t function checkValidators(validators) {\n\t var allowedProperties = [\"expression\", \"message\"];\n\t var validatorsWithExtraProps = {};\n\t angular.forEach(validators, function (validator, name) {\n\t if (angular.isString(validator)) {\n\t return;\n\t }\n\t var extraProps = [];\n\t angular.forEach(validator, function (v, key) {\n\t if (allowedProperties.indexOf(key) === -1) {\n\t extraProps.push(key);\n\t }\n\t });\n\t if (extraProps.length) {\n\t validatorsWithExtraProps[name] = extraProps;\n\t }\n\t });\n\t if (Object.keys(validatorsWithExtraProps).length) {\n\t throw new Error([\"Validators are only allowed to be functions or objects that have \" + allowedProperties.join(\", \") + \".\", \"You provided some extra properties: \" + JSON.stringify(validatorsWithExtraProps)].join(\" \"));\n\t }\n\t }\n\t}\n\tformlyCustomValidation.$inject = [\"formlyUtil\", \"$q\"];\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyField;\n\n\t/**\n\t * @ngdoc directive\n\t * @name formlyField\n\t * @restrict AE\n\t */\n\t// @ngInject\n\tfunction formlyField($http, $q, $compile, $templateCache, formlyConfig, formlyValidationMessages, formlyApiCheck, formlyUtil, formlyUsability, formlyWarn) {\n\t var arrayify = formlyUtil.arrayify;\n\n\t FormlyFieldController.$inject = [\"$scope\", \"$timeout\", \"$parse\", \"$controller\"];\n\t return {\n\t restrict: \"AE\",\n\t transclude: true,\n\t scope: {\n\t options: \"=\",\n\t model: \"=\",\n\t formId: \"@\", // TODO remove formId in a breaking release\n\t index: \"=?\",\n\t fields: \"=?\",\n\t formState: \"=?\",\n\t form: \"=?\" // TODO require form in a breaking release\n\t },\n\t controller: FormlyFieldController,\n\t link: fieldLink\n\t };\n\n\t // @ngInject\n\t function FormlyFieldController($scope, $timeout, $parse, $controller) {\n\t /* jshint maxstatements:31 */\n\t if ($scope.options.fieldGroup) {\n\t setupFieldGroup();\n\t return;\n\t }\n\n\t var fieldType = getFieldType($scope.options);\n\t simplifyLife($scope.options);\n\t mergeFieldOptionsWithTypeDefaults($scope.options, fieldType);\n\t extendOptionsWithDefaults($scope.options, $scope.index);\n\t checkApi($scope.options);\n\t // set field id to link labels and fields\n\n\t // initalization\n\t setFieldId();\n\t setDefaultValue();\n\t setInitialValue();\n\t runExpressions();\n\t addModelWatcher($scope, $scope.options);\n\t addValidationMessages($scope.options);\n\t invokeControllers($scope, $scope.options, fieldType);\n\n\t // function definitions\n\t function runExpressions() {\n\t // must run on next tick to make sure that the current value is correct.\n\t $timeout(function runExpressionsOnNextTick() {\n\t var field = $scope.options;\n\t var currentValue = valueGetterSetter();\n\t angular.forEach(field.expressionProperties, function runExpression(expression, prop) {\n\t var setter = $parse(prop).assign;\n\t var promise = $q.when(formlyUtil.formlyEval($scope, expression, currentValue));\n\t promise.then(function setFieldValue(value) {\n\t setter(field, value);\n\t });\n\t });\n\t });\n\t }\n\n\t function valueGetterSetter(newVal) {\n\t if (!$scope.model || !$scope.options.key) {\n\t return;\n\t }\n\t if (angular.isDefined(newVal)) {\n\t $scope.model[$scope.options.key] = newVal;\n\t }\n\t return $scope.model[$scope.options.key];\n\t }\n\n\t function simplifyLife(options) {\n\t // add a few empty objects (if they don't already exist) so you don't have to undefined check everywhere\n\t formlyUtil.reverseDeepMerge(options, {\n\t data: {},\n\t templateOptions: {},\n\t validation: {}\n\t });\n\t // create $scope.to so template authors can reference to instead of $scope.options.templateOptions\n\t $scope.to = $scope.options.templateOptions;\n\t }\n\n\t function setFieldId() {\n\t if (angular.isFunction(formlyConfig.extras.getFieldId)) {\n\t $scope.id = formlyConfig.extras.getFieldId($scope.options, $scope.model, $scope);\n\t } else {\n\t var formName = $scope.form && $scope.form.$name || $scope.formId;\n\t $scope.id = formlyUtil.getFieldId(formName, $scope.options, $scope.index);\n\t }\n\t $scope.options.id = $scope.id;\n\t }\n\n\t function setDefaultValue() {\n\t if (angular.isDefined($scope.options.defaultValue) && !angular.isDefined($scope.model[$scope.options.key])) {\n\t $scope.model[$scope.options.key] = $scope.options.defaultValue;\n\t }\n\t }\n\n\t function setInitialValue() {\n\t $scope.options.initialValue = $scope.model && $scope.model[$scope.options.key];\n\t }\n\n\t function mergeFieldOptionsWithTypeDefaults(options, type) {\n\t if (type) {\n\t mergeOptions(options, type.defaultOptions);\n\t }\n\t var properOrder = arrayify(options.optionsTypes).reverse(); // so the right things are overridden\n\t angular.forEach(properOrder, function (typeName) {\n\t mergeOptions(options, formlyConfig.getType(typeName, true, options).defaultOptions);\n\t });\n\t }\n\n\t function mergeOptions(options, extraOptions) {\n\t if (extraOptions) {\n\t if (angular.isFunction(extraOptions)) {\n\t extraOptions = extraOptions(options);\n\t }\n\t formlyUtil.reverseDeepMerge(options, extraOptions);\n\t }\n\t }\n\n\t function extendOptionsWithDefaults(options, index) {\n\t var key = options.key || index || 0;\n\t angular.extend(options, {\n\t // attach the key in case the formly-field directive is used directly\n\t key: key,\n\t value: valueGetterSetter,\n\t runExpressions: runExpressions,\n\t resetModel: resetModel,\n\t updateInitialValue: updateInitialValue\n\t });\n\t }\n\n\t // initialization functions\n\t function addModelWatcher(scope, options) {\n\t if (options.model) {\n\t scope.$watch(\"options.model\", runExpressions, true);\n\t }\n\t }\n\n\t function resetModel() {\n\t $scope.model[$scope.options.key] = $scope.options.initialValue;\n\t if ($scope.options.formControl) {\n\t $scope.options.formControl.$setViewValue($scope.model[$scope.options.key]);\n\t $scope.options.formControl.$render();\n\t $scope.options.formControl.$setUntouched();\n\t $scope.options.formControl.$setPristine();\n\t }\n\t }\n\n\t function updateInitialValue() {\n\t $scope.options.initialValue = $scope.model[$scope.options.key];\n\t }\n\n\t function addValidationMessages(options) {\n\t options.validation.messages = options.validation.messages || {};\n\t angular.forEach(formlyValidationMessages.messages, function createFunctionForMessage(expression, name) {\n\t if (!options.validation.messages[name]) {\n\t options.validation.messages[name] = function evaluateMessage(viewValue, modelValue, scope) {\n\t return formlyUtil.formlyEval(scope, expression, modelValue, viewValue);\n\t };\n\t }\n\t });\n\t }\n\n\t function invokeControllers(scope) {\n\t var options = arguments[1] === undefined ? {} : arguments[1];\n\t var type = arguments[2] === undefined ? {} : arguments[2];\n\n\t angular.forEach([type.controller, options.controller], function (controller) {\n\t if (controller) {\n\t $controller(controller, { $scope: scope });\n\t }\n\t });\n\t }\n\n\t function setupFieldGroup() {\n\t $scope.options.options = $scope.options.options || {};\n\t $scope.options.options.formState = $scope.formState;\n\t }\n\t }\n\n\t // link function\n\t function fieldLink(scope, el) {\n\t if (scope.options.fieldGroup) {\n\t setFieldGroupTemplate();\n\t return;\n\t }\n\n\t addAttributes();\n\t addClasses();\n\n\t var type = getFieldType(scope.options);\n\t var args = arguments;\n\t var thusly = this;\n\t getFieldTemplate(scope.options).then(runManipulators(formlyConfig.templateManipulators.preWrapper)).then(transcludeInWrappers(scope.options)).then(runManipulators(formlyConfig.templateManipulators.postWrapper)).then(setElementTemplate).then(watchFormControl).then(callLinkFunctions)[\"catch\"](function (error) {\n\t formlyWarn(\"there-was-a-problem-setting-the-template-for-this-field\", \"There was a problem setting the template for this field \", scope.options, error);\n\t });\n\n\t function setFieldGroupTemplate() {\n\t checkFieldGroupApi(scope.options);\n\t el.addClass(\"formly-field-group\");\n\t var extraAttributes = \"\";\n\t if (scope.options.elementAttributes) {\n\t extraAttributes = Object.keys(scope.options.elementAttributes).map(function (key) {\n\t return \"\" + key + \"=\\\"\" + scope.options.elementAttributes[key] + \"\\\"\";\n\t }).join(\" \");\n\t }\n\t setElementTemplate(\"\\n \\n \\n \");\n\t }\n\n\t function addAttributes() {\n\t if (scope.options.elementAttributes) {\n\t el.attr(scope.options.elementAttributes);\n\t }\n\t }\n\n\t function addClasses() {\n\t if (scope.options.className) {\n\t el.addClass(scope.options.className);\n\t }\n\t if (scope.options.type) {\n\t el.addClass(\"formly-field-\" + scope.options.type);\n\t }\n\t }\n\n\t function setElementTemplate(templateString) {\n\t el.html(asHtml(templateString));\n\t $compile(el.contents())(scope);\n\t return templateString;\n\t }\n\n\t function watchFormControl(templateString) {\n\t var stopWatchingField = angular.noop;\n\t var stopWatchingShowError = angular.noop;\n\t if (scope.options.noFormControl) {\n\t return;\n\t }\n\t var templateEl = angular.element(\"\" + templateString + \"
\");\n\t var ngModelNode = templateEl[0].querySelector(\"[ng-model],[data-ng-model]\");\n\t if (ngModelNode && ngModelNode.getAttribute(\"name\")) {\n\t watchFieldNameOrExistence(ngModelNode.getAttribute(\"name\"));\n\t }\n\n\t function watchFieldNameOrExistence(name) {\n\t var nameExpressionRegex = /\\{\\{(.*?)}}/;\n\t var nameExpression = nameExpressionRegex.exec(name);\n\t if (nameExpression) {\n\t watchFieldName(nameExpression[1]);\n\t } else {\n\t watchFieldExistence(name);\n\t }\n\t }\n\n\t function watchFieldName(expression) {\n\t scope.$watch(expression, function oneFieldNameChange(name) {\n\t if (name) {\n\t stopWatchingField();\n\t watchFieldExistence(name);\n\t }\n\t });\n\t }\n\n\t function watchFieldExistence(name) {\n\t stopWatchingField = scope.$watch(\"form[\\\"\" + name + \"\\\"]\", function formControlChange(formControl) {\n\t if (formControl) {\n\t scope.fc = formControl; // shortcut for template authors\n\t scope.options.formControl = formControl;\n\t stopWatchingShowError();\n\t addShowMessagesWatcher();\n\t }\n\t });\n\t }\n\n\t function addShowMessagesWatcher() {\n\t stopWatchingShowError = scope.$watch(function watchShowValidationChange() {\n\t var customExpression = formlyConfig.extras.errorExistsAndShouldBeVisibleExpression;\n\t var options = scope.options;\n\t var fc = scope.fc;\n\n\t if (!fc.$invalid) {\n\t return false;\n\t } else if (typeof options.validation.show === \"boolean\") {\n\t return options.validation.show;\n\t } else if (customExpression) {\n\t return formlyUtil.formlyEval(scope, customExpression, fc.$modelValue, fc.$viewValue);\n\t } else {\n\t var noTouchedButDirty = angular.isUndefined(fc.$touched) && fc.$dirty;\n\t return scope.fc.$touched || noTouchedButDirty;\n\t }\n\t }, function onShowValidationChange(show) {\n\t scope.options.validation.errorExistsAndShouldBeVisible = show;\n\t scope.showError = show; // shortcut for template authors\n\t });\n\t }\n\t }\n\n\t function callLinkFunctions() {\n\t if (type && type.link) {\n\t type.link.apply(thusly, args);\n\t }\n\t if (scope.options.link) {\n\t scope.options.link.apply(thusly, args);\n\t }\n\t }\n\n\t function runManipulators(manipulators) {\n\t return function runManipulatorsOnTemplate(template) {\n\t var chain = $q.when(template);\n\t angular.forEach(manipulators, function (manipulator) {\n\t chain = chain.then(function (template) {\n\t return $q.when(manipulator(template, scope.options, scope)).then(function (newTemplate) {\n\t return angular.isString(newTemplate) ? newTemplate : asHtml(newTemplate);\n\t });\n\t });\n\t });\n\t return chain;\n\t };\n\t }\n\t }\n\n\t // stateless util functions\n\t function asHtml(el) {\n\t var wrapper = angular.element(\" \");\n\t return wrapper.append(el).html();\n\t }\n\n\t function getFieldType(options) {\n\t return options.type && formlyConfig.getType(options.type);\n\t }\n\n\t function getFieldTemplate(options) {\n\t function fromOptionsOrType(key, type) {\n\t if (angular.isDefined(options[key])) {\n\t return options[key];\n\t } else if (type && angular.isDefined(type[key])) {\n\t return type[key];\n\t }\n\t }\n\n\t var type = formlyConfig.getType(options.type, true, options);\n\t var template = fromOptionsOrType(\"template\", type);\n\t var templateUrl = fromOptionsOrType(\"templateUrl\", type);\n\t if (angular.isUndefined(template) && !templateUrl) {\n\t throw formlyUsability.getFieldError(\"type-type-has-no-template\", \"Type '\" + options.type + \"' has not template. On element:\", options);\n\t }\n\n\t return getTemplate(templateUrl || template, angular.isUndefined(template), options);\n\t }\n\n\t function getTemplate(template, isUrl, options) {\n\t var templatePromise = undefined;\n\t if (angular.isFunction(template)) {\n\t templatePromise = $q.when(template(options));\n\t } else {\n\t templatePromise = $q.when(template);\n\t }\n\n\t if (!isUrl) {\n\t return templatePromise;\n\t } else {\n\t var _ret = (function () {\n\t var httpOptions = { cache: $templateCache };\n\t return {\n\t v: templatePromise.then(function (url) {\n\t return $http.get(url, httpOptions);\n\t }).then(function (response) {\n\t return response.data;\n\t })[\"catch\"](function handleErrorGettingATemplate(error) {\n\t formlyWarn(\"problem-loading-template-for-templateurl\", \"Problem loading template for \" + template, error);\n\t })\n\t };\n\t })();\n\n\t if (typeof _ret === \"object\") {\n\t return _ret.v;\n\t }\n\t }\n\t }\n\n\t function transcludeInWrappers(options) {\n\t var wrapper = getWrapperOption(options);\n\n\t return function transcludeTemplate(template) {\n\t if (!wrapper.length) {\n\t return $q.when(template);\n\t }\n\n\t wrapper.forEach(function (wrapper) {\n\t formlyUsability.checkWrapper(wrapper, options);\n\t wrapper.validateOptions && wrapper.validateOptions(options);\n\t runApiCheck(wrapper, options);\n\t });\n\t var promises = wrapper.map(function (w) {\n\t return getTemplate(w.template || w.templateUrl, !w.template);\n\t });\n\t return $q.all(promises).then(function (wrappersTemplates) {\n\t wrappersTemplates.forEach(function (wrapperTemplate, index) {\n\t formlyUsability.checkWrapperTemplate(wrapperTemplate, wrapper[index]);\n\t });\n\t wrappersTemplates.reverse(); // wrapper 0 is wrapped in wrapper 1 and so on...\n\t var totalWrapper = wrappersTemplates.shift();\n\t wrappersTemplates.forEach(function (wrapperTemplate) {\n\t totalWrapper = doTransclusion(totalWrapper, wrapperTemplate);\n\t });\n\t return doTransclusion(totalWrapper, template);\n\t });\n\t };\n\t }\n\n\t function doTransclusion(wrapper, template) {\n\t var superWrapper = angular.element(\" \"); // this allows people not have to have a single root in wrappers\n\t superWrapper.append(wrapper);\n\t var transcludeEl = superWrapper.find(\"formly-transclude\");\n\t if (!transcludeEl.length) {\n\t //try it using our custom find function\n\t transcludeEl = formlyUtil.findByNodeName(superWrapper, \"formly-transclude\");\n\t }\n\t transcludeEl.replaceWith(template);\n\t return superWrapper.html();\n\t }\n\n\t function getWrapperOption(options) {\n\t var wrapper = options.wrapper;\n\t // explicit null means no wrapper\n\t if (wrapper === null) {\n\t return [];\n\t }\n\n\t // nothing specified means use the default wrapper for the type\n\t if (!wrapper) {\n\t // get all wrappers that specify they apply to this type\n\t wrapper = arrayify(formlyConfig.getWrapperByType(options.type));\n\t } else {\n\t wrapper = arrayify(wrapper).map(formlyConfig.getWrapper);\n\t }\n\n\t // get all wrappers for that this type specified that it uses.\n\t var type = formlyConfig.getType(options.type, true, options);\n\t if (type && type.wrapper) {\n\t var typeWrappers = arrayify(type.wrapper).map(formlyConfig.getWrapper);\n\t wrapper = wrapper.concat(typeWrappers);\n\t }\n\n\t // add the default wrapper last\n\t var defaultWrapper = formlyConfig.getWrapper();\n\t if (defaultWrapper) {\n\t wrapper.push(defaultWrapper);\n\t }\n\t return wrapper;\n\t }\n\n\t function checkApi(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyFieldOptions, options, {\n\t prefix: \"formly-field directive\",\n\t url: \"formly-field-directive-validation-failed\"\n\t });\n\t // validate with the type\n\t var type = options.type && formlyConfig.getType(options.type);\n\t if (type) {\n\t if (type.validateOptions) {\n\t type.validateOptions(options);\n\t }\n\t runApiCheck(type, options);\n\t }\n\t }\n\n\t function checkFieldGroupApi(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.fieldGroup, options, {\n\t prefix: \"formly-field directive\",\n\t url: \"formly-field-directive-validation-failed\"\n\t });\n\t }\n\n\t function runApiCheck(_ref, options) {\n\t var apiCheck = _ref.apiCheck;\n\t var apiCheckInstance = _ref.apiCheckInstance;\n\t var apiCheckFunction = _ref.apiCheckFunction;\n\t var apiCheckOptions = _ref.apiCheckOptions;\n\n\t if (!apiCheck) {\n\t return;\n\t }\n\t var instance = apiCheckInstance || formlyApiCheck;\n\t var fn = apiCheckFunction || \"warn\";\n\t var shape = instance.shape(apiCheck);\n\t instance[fn](shape, options, apiCheckOptions || {\n\t prefix: \"formly-field \" + name,\n\t url: formlyApiCheck.config.output.docsBaseUrl + \"formly-field-type-apicheck-failed\"\n\t });\n\t }\n\t}\n\tformlyField.$inject = [\"$http\", \"$q\", \"$compile\", \"$templateCache\", \"formlyConfig\", \"formlyValidationMessages\", \"formlyApiCheck\", \"formlyUtil\", \"formlyUsability\", \"formlyWarn\"];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyFocus;\n\n\t// @ngInject\n\tfunction formlyFocus($timeout, $document) {\n\t /* jshint -W052 */\n\t return {\n\t restrict: \"A\",\n\t link: function formlyFocusLink(scope, element, attrs) {\n\t var previousEl = null;\n\t var el = element[0];\n\t var doc = $document[0];\n\t attrs.$observe(\"formlyFocus\", function respondToFocusExpressionChange(value) {\n\t if (value === \"true\") {\n\t $timeout(function setElementFocus() {\n\t previousEl = doc.activeElement;\n\t el.focus();\n\t }, ~ ~attrs.focusWait);\n\t } else if (value === \"false\") {\n\t if (doc.activeElement === el) {\n\t el.blur();\n\t if (attrs.hasOwnProperty(\"refocus\") && previousEl) {\n\t previousEl.focus();\n\t }\n\t }\n\t }\n\t });\n\t }\n\t };\n\t}\n\tformlyFocus.$inject = [\"$timeout\", \"$document\"];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\n\tvar _slice = Array.prototype.slice;\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyForm;\n\n\t/**\n\t * @ngdoc directive\n\t * @name formlyForm\n\t * @restrict E\n\t */\n\t// @ngInject\n\tfunction formlyForm(formlyUsability, $parse, formlyApiCheck, formlyConfig) {\n\t var currentFormId = 1;\n\t return {\n\t restrict: \"E\",\n\t template: function formlyFormGetTemplate(el, attrs) {\n\t /* jshint -W033 */ // this because jshint is broken I guess...\n\t var rootEl = getRootEl();\n\t var fieldRootEl = getFieldRootEl();\n\t var formId = \"formly_\" + currentFormId++;\n\t var parentFormAttributes = \"\";\n\t if (attrs.hasOwnProperty(\"isFieldGroup\") && el.parent().parent().hasClass(\"formly\")) {\n\t parentFormAttributes = copyAttributes(el.parent().parent()[0].attributes);\n\t }\n\t return \"\\n <\" + rootEl + \" class=\\\"formly\\\"\\n name=\\\"\" + getFormName() + \"\\\"\\n role=\\\"form\\\" \" + parentFormAttributes + \">\\n <\" + fieldRootEl + \" formly-field\\n ng-repeat=\\\"field in fields \" + getTrackBy() + \"\\\"\\n \" + getHideDirective() + \"=\\\"!field.hide\\\"\\n class=\\\"formly-field\\\"\\n options=\\\"field\\\"\\n model=\\\"field.model || model\\\"\\n fields=\\\"fields\\\"\\n form=\\\"theFormlyForm\\\"\\n form-id=\\\"\" + getFormName() + \"\\\"\\n form-state=\\\"options.formState\\\"\\n index=\\\"$index\\\">\\n \" + fieldRootEl + \">\\n
\\n \" + rootEl + \">\\n \";\n\n\t function getRootEl() {\n\t return attrs.rootEl || \"ng-form\";\n\t }\n\n\t function getFieldRootEl() {\n\t return attrs.fieldRootEl || \"div\";\n\t }\n\n\t function getHideDirective() {\n\t return attrs.hideDirective || formlyConfig.extras.defaultHideDirective || \"ng-if\";\n\t }\n\n\t function getTrackBy() {\n\t if (!attrs.trackBy) {\n\t return \"\";\n\t } else {\n\t return \"track by \" + attrs.trackBy;\n\t }\n\t }\n\n\t function getFormName() {\n\t var formName = formId;\n\t var bindName = attrs.bindName;\n\t if (bindName) {\n\t if (angular.version.minor < 3) {\n\t throw formlyUsability.getFormlyError(\"bind-name attribute on formly-form not allowed in > angular 1.3\");\n\t }\n\t // we can do a one-time binding here because we know we're in 1.3.x territory\n\t formName = \"{{::'formly_' + \" + bindName + \"}}\";\n\t }\n\t return formName;\n\t }\n\n\t function copyAttributes(attributes) {\n\t var excluded = [\"model\", \"form\", \"fields\", \"options\", \"name\", \"role\", \"class\"];\n\t var arrayAttrs = [];\n\t angular.forEach(attributes, function (_ref) {\n\t var nodeName = _ref.nodeName;\n\t var nodeValue = _ref.nodeValue;\n\n\t if (nodeName !== \"undefined\" && excluded.indexOf(nodeName) === -1) {\n\t arrayAttrs.push(\"\" + toKebabCase(nodeName) + \"=\\\"\" + nodeValue + \"\\\"\");\n\t }\n\t });\n\t return arrayAttrs.join(\" \");\n\t }\n\n\t function toKebabCase(string) {\n\t if (string) {\n\t return string.replace(/([A-Z])/g, function ($1) {\n\t return \"-\" + $1.toLowerCase();\n\t });\n\t } else {\n\t return \"\";\n\t }\n\t }\n\t },\n\t replace: true,\n\t transclude: true,\n\t scope: {\n\t fields: \"=\",\n\t model: \"=\",\n\t form: \"=?\",\n\t options: \"=?\"\n\t },\n\t controller: /* @ngInject */[\"$scope\", \"formlyUtil\", function FormlyFormController($scope, formlyUtil) {\n\t setupOptions();\n\t $scope.model = $scope.model || {};\n\t $scope.fields = $scope.fields || [];\n\n\t angular.forEach($scope.fields, initModel); // initializes the model property if set to 'formState'\n\t angular.forEach($scope.fields, attachKey); // attaches a key based on the index if a key isn't specified\n\t angular.forEach($scope.fields, setupWatchers); // setup watchers for all fields\n\n\t // watch the model and evaluate watch expressions that depend on it.\n\t $scope.$watch(\"model\", onModelOrFormStateChange, true);\n\t if ($scope.options.formState) {\n\t $scope.$watch(\"options.formState\", onModelOrFormStateChange, true);\n\t }\n\n\t function onModelOrFormStateChange() {\n\t angular.forEach($scope.fields, function runFieldExpressionProperties(field, index) {\n\t /*jshint -W030 */\n\t var model = field.model || $scope.model;\n\t field.runExpressions && field.runExpressions(model);\n\t if (field.hideExpression) {\n\t // can't use hide with expressionProperties reliably\n\t var val = model[field.key];\n\t // this makes it closer to what a regular expressionProperty would be\n\t var extraLocals = {\n\t options: field,\n\t index: index,\n\t formState: $scope.options.formState,\n\t formId: $scope.formId\n\t };\n\t field.hide = formlyUtil.formlyEval($scope, field.hideExpression, val, val, extraLocals);\n\t }\n\t });\n\t }\n\n\t function setupOptions() {\n\t formlyApiCheck[\"throw\"]([formlyApiCheck.formOptionsApi.optional], [$scope.options], { prefix: \"formly-form options check\" });\n\t $scope.options = $scope.options || {};\n\t $scope.options.formState = $scope.options.formState || {};\n\n\t angular.extend($scope.options, {\n\t updateInitialValue: updateInitialValue,\n\t resetModel: resetModel\n\t });\n\t }\n\n\t function updateInitialValue() {\n\t angular.forEach($scope.fields, function (field) {\n\t if (isFieldGroup(field)) {\n\t field.options.updateInitialValue();\n\t } else {\n\t field.updateInitialValue();\n\t }\n\t });\n\t }\n\n\t function resetModel() {\n\t angular.forEach($scope.fields, function (field) {\n\t if (isFieldGroup(field)) {\n\t field.options.resetModel();\n\t } else {\n\t field.resetModel();\n\t }\n\t });\n\t }\n\n\t function initModel(field) {\n\t if (field.model && field.model === \"formState\") {\n\t field.model = $scope.options.formState;\n\t }\n\t }\n\n\t function attachKey(field, index) {\n\t if (!isFieldGroup(field)) {\n\t field.key = field.key || index || 0;\n\t }\n\t }\n\n\t function setupWatchers(field, index) {\n\t if (isFieldGroup(field) || !angular.isDefined(field.watcher)) {\n\t return;\n\t }\n\t var watchers = field.watcher;\n\t if (!angular.isArray(watchers)) {\n\t watchers = [watchers];\n\t }\n\t angular.forEach(watchers, function setupWatcher(watcher) {\n\t if (!angular.isDefined(watcher.listener)) {\n\t throw formlyUsability.getFieldError(\"all-field-watchers-must-have-a-listener\", \"All field watchers must have a listener\", field);\n\t }\n\t var watchExpression = getWatchExpression(watcher, field, index);\n\t var watchListener = getWatchListener(watcher, field, index);\n\n\t var type = watcher.type || \"$watch\";\n\t watcher.stopWatching = $scope[type](watchExpression, watchListener, watcher.watchDeep);\n\t });\n\t }\n\n\t function getWatchExpression(watcher, field, index) {\n\t var watchExpression = watcher.expression || \"model['\" + field.key + \"']\";\n\t if (angular.isFunction(watchExpression)) {\n\t // wrap the field's watch expression so we can call it with the field as the first arg\n\t // and the stop function as the last arg as a helper\n\t var originalExpression = watchExpression;\n\t watchExpression = function formlyWatchExpression() {\n\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t return originalExpression.apply(undefined, _toConsumableArray(args));\n\t };\n\t watchExpression.displayName = \"Formly Watch Expression for field for \" + field.key;\n\t }\n\t return watchExpression;\n\t }\n\n\t function getWatchListener(watcher, field, index) {\n\t var watchListener = watcher.listener;\n\t if (angular.isFunction(watchListener)) {\n\t // wrap the field's watch listener so we can call it with the field as the first arg\n\t // and the stop function as the last arg as a helper\n\t var originalListener = watchListener;\n\t watchListener = function formlyWatchListener() {\n\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t return originalListener.apply(undefined, _toConsumableArray(args));\n\t };\n\t watchListener.displayName = \"Formly Watch Listener for field for \" + field.key;\n\t }\n\t return watchListener;\n\t }\n\n\t function modifyArgs(watcher, index) {\n\t for (var _len = arguments.length, originalArgs = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n\t originalArgs[_key - 2] = arguments[_key];\n\t }\n\n\t return [$scope.fields[index]].concat(originalArgs, [watcher.stopWatching]);\n\t }\n\n\t function isFieldGroup(field) {\n\t return field && !!field.fieldGroup;\n\t }\n\t }],\n\t link: function link(scope, el, attrs) {\n\t var formId = attrs.name;\n\t scope.formId = formId;\n\t scope.theFormlyForm = scope[formId];\n\t if (attrs.form) {\n\t $parse(attrs.form).assign(scope.$parent, scope[formId]);\n\t }\n\n\t // chrome autocomplete lameness\n\t // see https://code.google.com/p/chromium/issues/detail?id=468153#c14\n\t // ლ(ಠ益ಠლ) (╯°□°)╯︵ ┻━┻ (◞‸◟;)\n\t var global = formlyConfig.extras.removeChromeAutoComplete === true;\n\t var offInstance = scope.options && scope.options.removeChromeAutoComplete === false;\n\t var onInstance = scope.options && scope.options.removeChromeAutoComplete === true;\n\t if (global && !offInstance || onInstance) {\n\t var input = document.createElement(\"input\");\n\t input.setAttribute(\"autocomplete\", \"address-level4\");\n\t input.setAttribute(\"hidden\", true);\n\t el[0].appendChild(input);\n\t }\n\t }\n\t };\n\t}\n\tformlyForm.$inject = [\"formlyUsability\", \"$parse\", \"formlyApiCheck\", \"formlyConfig\"];\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = addFormlyNgModelAttrsManipulator;\n\n\t// @ngInject\n\tfunction addFormlyNgModelAttrsManipulator(formlyConfig) {\n\t if (formlyConfig.extras.disableNgModelAttrsManipulator) {\n\t return;\n\t }\n\t formlyConfig.templateManipulators.preWrapper.push(ngModelAttrsManipulator);\n\n\t function ngModelAttrsManipulator(template, options, scope) {\n\t /* jshint maxcomplexity:6 */\n\t var el = document.createElement(\"div\");\n\t var data = options.data;\n\t if (data.skipNgModelAttrsManipulator === true) {\n\t return template;\n\t }\n\t el.innerHTML = template;\n\t var modelNodes = el.querySelectorAll(\"[ng-model], [data-ng-model]\");\n\t if (!modelNodes || !modelNodes.length) {\n\t return template;\n\t }\n\n\t addIfNotPresent(modelNodes, \"id\", scope.id);\n\t addIfNotPresent(modelNodes, \"name\", scope.id);\n\n\t addValidation();\n\t addModelOptions();\n\t addTemplateOptionsAttrs();\n\n\t return el.innerHTML;\n\n\t function addValidation() {\n\t if (angular.isDefined(options.validators) || angular.isDefined(options.validation.messages)) {\n\t addIfNotPresent(modelNodes, \"formly-custom-validation\", \"\");\n\t }\n\t }\n\n\t function addModelOptions() {\n\t if (angular.isDefined(options.modelOptions)) {\n\t addIfNotPresent(modelNodes, \"ng-model-options\", \"options.modelOptions\");\n\t if (options.modelOptions.getterSetter) {\n\t angular.forEach(modelNodes, function (node) {\n\t node.setAttribute(\"ng-model\", \"options.value\");\n\t });\n\t }\n\t }\n\t }\n\n\t function addTemplateOptionsAttrs() {\n\t if (!options.templateOptions && !options.expressionProperties) {\n\t // no need to run these if there are no templateOptions or expressionProperties\n\t return;\n\t }\n\t var to = options.templateOptions || {};\n\t var ep = options.expressionProperties || {};\n\n\t var ngModelAttributes = getBuiltInAttributes();\n\n\t // extend with the user's specifications winning\n\t angular.extend(ngModelAttributes, options.ngModelAttrs);\n\n\t // Feel free to make this more simple :-)\n\t angular.forEach(ngModelAttributes, function (val, name) {\n\t /* jshint maxcomplexity:14 */\n\t var attrVal = undefined;\n\t var attrName = undefined;\n\t var ref = \"options.templateOptions['\" + name + \"']\";\n\t var toVal = to[name];\n\t var epVal = getEpValue(ep, name);\n\n\t var inTo = angular.isDefined(toVal);\n\t var inEp = angular.isDefined(epVal);\n\t if (val.value) {\n\t // I realize this looks backwards, but it's right, trust me...\n\t attrName = val.value;\n\t attrVal = name;\n\t } else if (val.expression && inTo) {\n\t attrName = val.expression;\n\t if (angular.isString(to[name])) {\n\t attrVal = \"$eval(\" + ref + \")\";\n\t } else if (angular.isFunction(to[name])) {\n\t attrVal = \"\" + ref + \"(model[options.key], options, this, $event)\";\n\t } else {\n\t throw new Error(\"options.templateOptions.\" + name + \" must be a string or function: \" + JSON.stringify(options));\n\t }\n\t } else if (val.bound && inEp) {\n\t attrName = val.bound;\n\t attrVal = ref;\n\t } else if ((val.attribute || val.boolean) && inEp) {\n\t attrName = val.attribute || val.boolean;\n\t attrVal = \"{{\" + ref + \"}}\";\n\t } else if (val.attribute && inTo) {\n\t attrName = val.attribute;\n\t attrVal = toVal;\n\t } else if (val.boolean) {\n\t if (inTo && !inEp && toVal) {\n\t attrName = val.boolean;\n\t attrVal = true;\n\t } else {}\n\t } else if (val.bound && inTo) {\n\t attrName = val.bound;\n\t attrVal = ref;\n\t }\n\n\t if (angular.isDefined(attrName) && angular.isDefined(attrVal)) {\n\t addIfNotPresent(modelNodes, attrName, attrVal);\n\t }\n\t });\n\t }\n\t }\n\n\t // Utility functions\n\t function getBuiltInAttributes() {\n\t var ngModelAttributes = {\n\t focus: {\n\t attribute: \"formly-focus\"\n\t }\n\t };\n\t var boundOnly = [];\n\t var bothBooleanAndBound = [\"required\", \"disabled\"];\n\t var bothAttributeAndBound = [\"pattern\", \"minlength\"];\n\t var expressionOnly = [\"change\", \"keydown\", \"keyup\", \"keypress\", \"click\", \"focus\", \"blur\"];\n\t var attributeOnly = [\"placeholder\", \"min\", \"max\", \"tabindex\", \"type\"];\n\t if (formlyConfig.extras.ngModelAttrsManipulatorPreferUnbound) {\n\t bothAttributeAndBound.push(\"maxlength\");\n\t } else {\n\t boundOnly.push(\"maxlength\");\n\t }\n\n\t angular.forEach(boundOnly, function (item) {\n\t ngModelAttributes[item] = { bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(bothBooleanAndBound, function (item) {\n\t ngModelAttributes[item] = { boolean: item, bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(bothAttributeAndBound, function (item) {\n\t ngModelAttributes[item] = { attribute: item, bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(expressionOnly, function (item) {\n\t var propName = \"on\" + item.substr(0, 1).toUpperCase() + item.substr(1);\n\t ngModelAttributes[propName] = { expression: \"ng-\" + item };\n\t });\n\n\t angular.forEach(attributeOnly, function (item) {\n\t ngModelAttributes[item] = { attribute: item };\n\t });\n\t return ngModelAttributes;\n\t }\n\n\t function getEpValue(ep, name) {\n\t return ep[\"templateOptions.\" + name] || ep[\"templateOptions['\" + name + \"']\"] || ep[\"templateOptions[\\\"\" + name + \"\\\"]\"];\n\t }\n\n\t function addIfNotPresent(nodes, attr, val) {\n\t angular.forEach(nodes, function (node) {\n\t if (!node.getAttribute(attr)) {\n\t node.setAttribute(attr, val);\n\t }\n\t });\n\t }\n\t}\n\taddFormlyNgModelAttrsManipulator.$inject = [\"formlyConfig\"];\n\n\t// jshint -W035\n\t// empty to illustrate that a boolean will not be added via val.bound\n\t// if you want it added via val.bound, then put it in expressionProperties\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = addCustomTags;\n\n\t// @ngInject\n\tfunction addCustomTags($document) {\n\t if ($document && $document.get) {\n\t (function () {\n\t //IE8 check ->\n\t // http://stackoverflow.com/questions/10964966/detect-ie-version-prior-to-v9-in-javascript/10965203#10965203\n\t var document = $document.get(0);\n\t var div = document.createElement(\"div\");\n\t div.innerHTML = \"\";\n\t var isIeLessThan9 = div.getElementsByTagName(\"i\").length === 1;\n\n\t if (isIeLessThan9) {\n\t //add the custom elements that we need for formly\n\t var customElements = [\"formly-field\", \"formly-form\", \"formly-custom-validation\", \"formly-focus\", \"formly-transpose\"];\n\t angular.forEach(customElements, function (el) {\n\t document.createElement(el);\n\t });\n\t }\n\t })();\n\t }\n\t}\n\taddCustomTags.$inject = [\"$document\"];\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\t// some versions of angular don't export the angular module properly,\n\t// so we get it from window in this case.\n\n\tvar angular = _interopRequire(__webpack_require__(17));\n\n\tif (!angular.version) {\n\t angular = window.angular;\n\t}\n\tmodule.exports = angular;\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_16__;\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_17__;\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = { formlyEval: formlyEval, getFieldId: getFieldId, reverseDeepMerge: reverseDeepMerge, findByNodeName: findByNodeName, arrayify: arrayify, extendFunction: extendFunction };\n\n\tfunction formlyEval(scope, expression, $modelValue, $viewValue, extraLocals) {\n\t if (angular.isFunction(expression)) {\n\t return expression($viewValue, $modelValue, scope, extraLocals);\n\t } else {\n\t return scope.$eval(expression, angular.extend({ $viewValue: $viewValue, $modelValue: $modelValue }, extraLocals));\n\t }\n\t}\n\n\tfunction getFieldId(formId, options, index) {\n\t if (options.id) {\n\t return options.id;\n\t }\n\t var type = options.type;\n\t if (!type && options.template) {\n\t type = \"template\";\n\t } else if (!type && options.templateUrl) {\n\t type = \"templateUrl\";\n\t }\n\n\t return [formId, type, options.key, index].join(\"_\");\n\t}\n\n\tfunction reverseDeepMerge(dest) {\n\t angular.forEach(arguments, function (src, index) {\n\t if (!index) {\n\t return;\n\t }\n\t angular.forEach(src, function (val, prop) {\n\t if (!angular.isDefined(dest[prop])) {\n\t dest[prop] = angular.copy(val);\n\t } else if (objAndSameType(dest[prop], val)) {\n\t reverseDeepMerge(dest[prop], val);\n\t }\n\t });\n\t });\n\t}\n\n\tfunction objAndSameType(obj1, obj2) {\n\t return angular.isObject(obj1) && angular.isObject(obj2) && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2);\n\t}\n\n\t//recurse down a node tree to find a node with matching nodeName, for custom tags jQuery.find doesn't work in IE8\n\tfunction findByNodeName(el, nodeName) {\n\t if (!el.prop) {\n\t // not a jQuery or jqLite object -> wrap it\n\t el = angular.element(el);\n\t }\n\n\t if (el.prop(\"nodeName\") === nodeName.toUpperCase()) {\n\t return el;\n\t }\n\n\t var c = el.children();\n\t for (var i = 0; c && i < c.length; i++) {\n\t var node = findByNodeName(c[i], nodeName);\n\t if (node) {\n\t return node;\n\t }\n\t }\n\t}\n\n\tfunction arrayify(obj) {\n\t if (obj && !angular.isArray(obj)) {\n\t obj = [obj];\n\t } else if (!obj) {\n\t obj = [];\n\t }\n\t return obj;\n\t}\n\n\tfunction extendFunction() {\n\t for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n\t fns[_key] = arguments[_key];\n\t }\n\n\t return function extendedFunction() {\n\t var args = arguments;\n\t fns.forEach(function (fn) {\n\t return fn.apply(null, args);\n\t });\n\t };\n\t}\n\n/***/ }\n/******/ ])\n});\n;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2FuZ3VsYXItZm9ybWx5L2Rpc3QvZm9ybWx5LmpzPzUxZmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELG9DQUFvQztBQUNwQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsdUNBQXVDLHFEQUFxRDs7QUFFNUY7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsdUNBQXVDLHFEQUFxRDs7QUFFNUY7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLCtDQUErQzs7QUFFL0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSx1Q0FBdUMscURBQXFEOztBQUU1Rjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7O0FBRUY7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsdUNBQXVDLHFEQUFxRDs7QUFFNUY7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSx1Q0FBdUMscURBQXFEOztBQUU1Rjs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsaUJBQWlCO0FBQ3BELG1DQUFtQyxpQkFBaUI7QUFDcEQ7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSx1Q0FBdUMscURBQXFEOztBQUU1Rjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSwwQ0FBMEMsMEJBQTBCLDBDQUEwQyxnQkFBZ0IsdUJBQXVCLGFBQWEsRUFBRSxPQUFPLHdCQUF3QixFQUFFOztBQUVyTTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFROztBQUVSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQixjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLHVDQUF1QyxxREFBcUQ7O0FBRTVGOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLFVBQVU7QUFDVixRQUFRO0FBQ1I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQiw0QkFBNEI7QUFDNUI7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0VBQWtFO0FBQ2xFO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjs7QUFFQTtBQUNBLG9EQUFvRDtBQUNwRCxpREFBaUQ7O0FBRWpEO0FBQ0E7QUFDQSxvQ0FBb0MsZ0JBQWdCO0FBQ3BEO0FBQ0EsUUFBUTtBQUNSOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQ0FBc0MsRUFBRSxPQUFPO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxZQUFZO0FBQ1o7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0Esa0NBQWtDO0FBQ2xDLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsWUFBWTtBQUNaLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBLFlBQVk7QUFDWjtBQUNBLFlBQVk7QUFDWjtBQUNBLFFBQVE7O0FBRVI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBLG1EQUFtRDtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsdUNBQXVDLHFEQUFxRDs7QUFFNUYsMENBQTBDLDBCQUEwQiwwQ0FBMEMsZ0JBQWdCLHVCQUF1QixhQUFhLEVBQUUsT0FBTyx3QkFBd0IsRUFBRTs7QUFFck07O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsZ0NBQWdDO0FBQ3pEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1osVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpREFBaUQ7QUFDakQsaURBQWlEO0FBQ2pELHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0EsOEZBQThGLHNDQUFzQztBQUNwSTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtR0FBbUcsYUFBYTtBQUNoSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLHVDQUF1QyxxREFBcUQ7O0FBRTVGOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLHdCQUF3QixhQUFhO0FBQ3JDLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWixVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBLGtDQUFrQztBQUNsQyxNQUFNOztBQUVOO0FBQ0Esa0NBQWtDO0FBQ2xDLE1BQU07O0FBRU47QUFDQSxrQ0FBa0M7QUFDbEMsTUFBTTs7QUFFTjtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDLE1BQU07O0FBRU47QUFDQSxrQ0FBa0M7QUFDbEMsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSx1Q0FBdUMscURBQXFEOztBQUU1RjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLHVDQUF1QyxxREFBcUQ7O0FBRTVGOztBQUVBLG1CQUFtQjs7QUFFbkI7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLG9EQUFvRCxtREFBbUQ7QUFDdkc7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixtQkFBbUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlFQUFpRSxhQUFhO0FBQzlFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6IjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhbmd1bGFyLWZvcm1seSB2ZXJzaW9uIDYuOC4yIGJ1aWx0IHdpdGgg4pmlIGJ5IEFzdHJpc20gPGFzdHJpc21zQGdtYWlsLmNvbT4sIEtlbnQgQy4gRG9kZHMgPGtlbnRAZG9kZHNmYW1pbHkudXM+ICjDsyDDrF/DrSk9w7PDsj0ow6xfw60gw7IpXG5cbihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcImFwaS1jaGVja1wiKSwgcmVxdWlyZShcImFuZ3VsYXJcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiYXBpLWNoZWNrXCIsIFwiYW5ndWxhclwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJuZ0Zvcm1seVwiXSA9IGZhY3RvcnkocmVxdWlyZShcImFwaS1jaGVja1wiKSwgcmVxdWlyZShcImFuZ3VsYXJcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm5nRm9ybWx5XCJdID0gZmFjdG9yeShyb290W1wiYXBpQ2hlY2tcIl0sIHJvb3RbXCJhbmd1bGFyXCJdKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMTZfXywgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV8xN19fKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge30sXG4vKioqKioqLyBcdFx0XHRpZDogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4vKioqKioqLyBcdFx0fTtcblxuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cblxuXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdHZhciBfaW50ZXJvcFJlcXVpcmUgPSBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmpbXCJkZWZhdWx0XCJdIDogb2JqOyB9O1xuXG5cdHZhciBpbmRleCA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDEpKTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGluZGV4O1xuXG4vKioqLyB9LFxuLyogMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdHZhciBmb3JtbHlBcGlDaGVjayA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDIpKTtcblxuXHR2YXIgZm9ybWx5RXJyb3JBbmRXYXJuaW5nc1VybFByZWZpeCA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDMpKTtcblxuXHR2YXIgZm9ybWx5VXNhYmlsaXR5ID0gX2ludGVyb3BSZXF1aXJlKF9fd2VicGFja19yZXF1aXJlX18oNCkpO1xuXG5cdHZhciBmb3JtbHlDb25maWcgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXyg1KSk7XG5cblx0dmFyIGZvcm1seVZhbGlkYXRpb25NZXNzYWdlcyA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDYpKTtcblxuXHR2YXIgZm9ybWx5VXRpbCA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDcpKTtcblxuXHR2YXIgZm9ybWx5V2FybiA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDgpKTtcblxuXHR2YXIgZm9ybWx5Q3VzdG9tVmFsaWRhdGlvbiA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDkpKTtcblxuXHR2YXIgZm9ybWx5RmllbGQgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxMCkpO1xuXG5cdHZhciBmb3JtbHlGb2N1cyA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDExKSk7XG5cblx0dmFyIGZvcm1seUZvcm0gPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxMikpO1xuXG5cdHZhciBmb3JtbHlOZ01vZGVsQXR0cnNNYW5pcHVsYXRvciA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKSk7XG5cblx0dmFyIGZvcm1seUN1c3RvbVRhZ3MgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNCkpO1xuXG5cdHZhciBuZ01vZHVsZU5hbWUgPSBcImZvcm1seVwiO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gbmdNb2R1bGVOYW1lO1xuXG5cdHZhciBuZ01vZHVsZSA9IGFuZ3VsYXIubW9kdWxlKG5nTW9kdWxlTmFtZSwgW10pO1xuXG5cdG5nTW9kdWxlLmNvbnN0YW50KFwiZm9ybWx5QXBpQ2hlY2tcIiwgZm9ybWx5QXBpQ2hlY2spO1xuXHRuZ01vZHVsZS5jb25zdGFudChcImZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXhcIiwgZm9ybWx5RXJyb3JBbmRXYXJuaW5nc1VybFByZWZpeCk7XG5cdG5nTW9kdWxlLmNvbnN0YW50KFwiZm9ybWx5VmVyc2lvblwiLCAoXCI2LjguMlwiKSk7IC8vIDwtLSB3ZWJwYWNrIHZhcmlhYmxlXG5cblx0bmdNb2R1bGUucHJvdmlkZXIoXCJmb3JtbHlVc2FiaWxpdHlcIiwgZm9ybWx5VXNhYmlsaXR5KTtcblx0bmdNb2R1bGUucHJvdmlkZXIoXCJmb3JtbHlDb25maWdcIiwgZm9ybWx5Q29uZmlnKTtcblxuXHRuZ01vZHVsZS5mYWN0b3J5KFwiZm9ybWx5VmFsaWRhdGlvbk1lc3NhZ2VzXCIsIGZvcm1seVZhbGlkYXRpb25NZXNzYWdlcyk7XG5cdG5nTW9kdWxlLmZhY3RvcnkoXCJmb3JtbHlVdGlsXCIsIGZvcm1seVV0aWwpO1xuXHRuZ01vZHVsZS5mYWN0b3J5KFwiZm9ybWx5V2FyblwiLCBmb3JtbHlXYXJuKTtcblxuXHRuZ01vZHVsZS5kaXJlY3RpdmUoXCJmb3JtbHlDdXN0b21WYWxpZGF0aW9uXCIsIGZvcm1seUN1c3RvbVZhbGlkYXRpb24pO1xuXHRuZ01vZHVsZS5kaXJlY3RpdmUoXCJmb3JtbHlGaWVsZFwiLCBmb3JtbHlGaWVsZCk7XG5cdG5nTW9kdWxlLmRpcmVjdGl2ZShcImZvcm1seUZvY3VzXCIsIGZvcm1seUZvY3VzKTtcblx0bmdNb2R1bGUuZGlyZWN0aXZlKFwiZm9ybWx5Rm9ybVwiLCBmb3JtbHlGb3JtKTtcblxuXHRuZ01vZHVsZS5ydW4oZm9ybWx5TmdNb2RlbEF0dHJzTWFuaXB1bGF0b3IpO1xuXHRuZ01vZHVsZS5ydW4oZm9ybWx5Q3VzdG9tVGFncyk7XG5cbi8qKiovIH0sXG4vKiAyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX2ludGVyb3BSZXF1aXJlID0gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqW1wiZGVmYXVsdFwiXSA6IG9iajsgfTtcblxuXHR2YXIgYXBpQ2hlY2tGYWN0b3J5ID0gX2ludGVyb3BSZXF1aXJlKF9fd2VicGFja19yZXF1aXJlX18oMTYpKTtcblxuXHR2YXIgYXBpQ2hlY2sgPSBhcGlDaGVja0ZhY3Rvcnkoe1xuXHQgIG91dHB1dDoge1xuXHQgICAgcHJlZml4OiBcImFuZ3VsYXItZm9ybWx5OlwiLFxuXHQgICAgZG9jc0Jhc2VVcmw6IF9fd2VicGFja19yZXF1aXJlX18oMylcblx0ICB9XG5cdH0pO1xuXG5cdGZ1bmN0aW9uIHNoYXBlUmVxdWlyZWRJZk5vdChvdGhlclByb3BzLCBwcm9wQ2hlY2tlcikge1xuXHQgIGlmICghYW5ndWxhci5pc0FycmF5KG90aGVyUHJvcHMpKSB7XG5cdCAgICBvdGhlclByb3BzID0gW290aGVyUHJvcHNdO1xuXHQgIH1cblx0ICB2YXIgdHlwZSA9IFwic3BlY2lmaWVkIGlmIHRoZXNlIGFyZSBub3Qgc3BlY2lmaWVkOiBgXCIgKyBvdGhlclByb3BzLmpvaW4oXCIsIFwiKSArIFwiYCAob3RoZXJ3aXNlIGl0J3Mgb3B0aW9uYWwpXCI7XG5cdCAgZnVuY3Rpb24gc2hhcGVSZXF1aXJlZElmTm90RGVmaW5pdGlvbihwcm9wLCBwcm9wTmFtZSwgbG9jYXRpb24sIG9iaikge1xuXHQgICAgdmFyIHByb3BFeGlzdHMgPSBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KHByb3BOYW1lKTtcblx0ICAgIHZhciBvdGhlclByb3BzRXhpc3QgPSBvdGhlclByb3BzLnNvbWUoZnVuY3Rpb24gKG90aGVyUHJvcCkge1xuXHQgICAgICByZXR1cm4gb2JqICYmIG9iai5oYXNPd25Qcm9wZXJ0eShvdGhlclByb3ApO1xuXHQgICAgfSk7XG5cdCAgICBpZiAoIW90aGVyUHJvcHNFeGlzdCAmJiAhcHJvcEV4aXN0cykge1xuXHQgICAgICByZXR1cm4gYXBpQ2hlY2sudXRpbHMuZ2V0RXJyb3IocHJvcE5hbWUsIGxvY2F0aW9uLCB0eXBlKTtcblx0ICAgIH0gZWxzZSBpZiAocHJvcEV4aXN0cykge1xuXHQgICAgICByZXR1cm4gcHJvcENoZWNrZXIocHJvcCwgcHJvcE5hbWUsIGxvY2F0aW9uLCBvYmopO1xuXHQgICAgfVxuXHQgIH1cblx0ICBzaGFwZVJlcXVpcmVkSWZOb3REZWZpbml0aW9uLnR5cGUgPSB0eXBlO1xuXHQgIHJldHVybiBhcGlDaGVjay51dGlscy5jaGVja2VySGVscGVycy5zZXR1cENoZWNrZXIoc2hhcGVSZXF1aXJlZElmTm90RGVmaW5pdGlvbik7XG5cdH1cblxuXHR2YXIgZm9ybWx5RXhwcmVzc2lvbiA9IGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suc3RyaW5nLCBhcGlDaGVjay5mdW5jXSk7XG5cdHZhciBzcGVjaWZ5V3JhcHBlclR5cGUgPSBhcGlDaGVjay5vbmVPZlR5cGUoW2FwaUNoZWNrLm9uZU9mKFtudWxsXSksIGFwaUNoZWNrLnR5cGVPckFycmF5T2YoYXBpQ2hlY2suc3RyaW5nKV0pO1xuXG5cdHZhciBhcGlDaGVja1Byb3BlcnR5ID0gYXBpQ2hlY2sub2JqZWN0T2YoYXBpQ2hlY2suZnVuYyk7XG5cblx0dmFyIGFwaUNoZWNrSW5zdGFuY2VQcm9wZXJ0eSA9IGFwaUNoZWNrLnNoYXBlLm9ubHlJZihcImFwaUNoZWNrXCIsIGFwaUNoZWNrLmZ1bmMud2l0aFByb3BlcnRpZXMoe1xuXHQgIHdhcm46IGFwaUNoZWNrLmZ1bmMsXG5cdCAgXCJ0aHJvd1wiOiBhcGlDaGVjay5mdW5jLFxuXHQgIHNoYXBlOiBhcGlDaGVjay5mdW5jXG5cdH0pKTtcblxuXHR2YXIgYXBpQ2hlY2tGdW5jdGlvblByb3BlcnR5ID0gYXBpQ2hlY2suc2hhcGUub25seUlmKFwiYXBpQ2hlY2tcIiwgYXBpQ2hlY2sub25lT2YoW1widGhyb3dcIiwgXCJ3YXJuXCJdKSk7XG5cblx0dmFyIGZvcm1seVdyYXBwZXJUeXBlID0gYXBpQ2hlY2suc2hhcGUoe1xuXHQgIG5hbWU6IHNoYXBlUmVxdWlyZWRJZk5vdChcInR5cGVzXCIsIGFwaUNoZWNrLnN0cmluZykub3B0aW9uYWwsXG5cdCAgdGVtcGxhdGU6IGFwaUNoZWNrLnNoYXBlLmlmTm90KFwidGVtcGxhdGVVcmxcIiwgYXBpQ2hlY2suc3RyaW5nKS5vcHRpb25hbCxcblx0ICB0ZW1wbGF0ZVVybDogYXBpQ2hlY2suc2hhcGUuaWZOb3QoXCJ0ZW1wbGF0ZVwiLCBhcGlDaGVjay5zdHJpbmcpLm9wdGlvbmFsLFxuXHQgIHR5cGVzOiBhcGlDaGVjay50eXBlT3JBcnJheU9mKGFwaUNoZWNrLnN0cmluZykub3B0aW9uYWwsXG5cdCAgb3ZlcndyaXRlT2s6IGFwaUNoZWNrLmJvb2wub3B0aW9uYWwsXG5cdCAgdmFsaWRhdGVPcHRpb25zOiBhcGlDaGVjay5mdW5jLm9wdGlvbmFsLFxuXHQgIGFwaUNoZWNrOiBhcGlDaGVja1Byb3BlcnR5Lm9wdGlvbmFsLFxuXHQgIGFwaUNoZWNrSW5zdGFuY2U6IGFwaUNoZWNrSW5zdGFuY2VQcm9wZXJ0eS5vcHRpb25hbCxcblx0ICBhcGlDaGVja0Z1bmN0aW9uOiBhcGlDaGVja0Z1bmN0aW9uUHJvcGVydHkub3B0aW9uYWwsXG5cdCAgYXBpQ2hlY2tPcHRpb25zOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWxcblx0fSkuc3RyaWN0O1xuXG5cdHZhciBleHByZXNzaW9uUHJvcGVydGllcyA9IGFwaUNoZWNrLm9iamVjdE9mKGFwaUNoZWNrLm9uZU9mVHlwZShbZm9ybWx5RXhwcmVzc2lvbiwgYXBpQ2hlY2suc2hhcGUoe1xuXHQgIGV4cHJlc3Npb246IGZvcm1seUV4cHJlc3Npb24sXG5cdCAgbWVzc2FnZTogZm9ybWx5RXhwcmVzc2lvbi5vcHRpb25hbFxuXHR9KS5zdHJpY3RdKSk7XG5cblx0dmFyIG1vZGVsQ2hlY2tlciA9IGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2sub25lT2YoW1wiZm9ybVN0YXRlXCJdKSwgYXBpQ2hlY2sub2JqZWN0XSk7XG5cblx0dmFyIGZpZWxkT3B0aW9uc0FwaVNoYXBlID0ge1xuXHQgICQkaGFzaEtleTogYXBpQ2hlY2suYW55Lm9wdGlvbmFsLFxuXHQgIHR5cGU6IGFwaUNoZWNrLnNoYXBlLmlmTm90KFtcInRlbXBsYXRlXCIsIFwidGVtcGxhdGVVcmxcIl0sIGFwaUNoZWNrLnN0cmluZykub3B0aW9uYWwsXG5cdCAgdGVtcGxhdGU6IGFwaUNoZWNrLnNoYXBlLmlmTm90KFtcInR5cGVcIiwgXCJ0ZW1wbGF0ZVVybFwiXSwgYXBpQ2hlY2sub25lT2ZUeXBlKFthcGlDaGVjay5zdHJpbmcsIGFwaUNoZWNrLmZ1bmNdKSkub3B0aW9uYWwsXG5cdCAgdGVtcGxhdGVVcmw6IGFwaUNoZWNrLnNoYXBlLmlmTm90KFtcInR5cGVcIiwgXCJ0ZW1wbGF0ZVwiXSwgYXBpQ2hlY2sub25lT2ZUeXBlKFthcGlDaGVjay5zdHJpbmcsIGFwaUNoZWNrLmZ1bmNdKSkub3B0aW9uYWwsXG5cdCAga2V5OiBhcGlDaGVjay5vbmVPZlR5cGUoW2FwaUNoZWNrLnN0cmluZywgYXBpQ2hlY2subnVtYmVyXSkub3B0aW9uYWwsXG5cdCAgbW9kZWw6IG1vZGVsQ2hlY2tlci5vcHRpb25hbCxcblx0ICBjbGFzc05hbWU6IGFwaUNoZWNrLnN0cmluZy5vcHRpb25hbCxcblx0ICBpZDogYXBpQ2hlY2suc3RyaW5nLm9wdGlvbmFsLFxuXHQgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiBleHByZXNzaW9uUHJvcGVydGllcy5vcHRpb25hbCxcblx0ICBkYXRhOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgdGVtcGxhdGVPcHRpb25zOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgd3JhcHBlcjogc3BlY2lmeVdyYXBwZXJUeXBlLm9wdGlvbmFsLFxuXHQgIG1vZGVsT3B0aW9uczogYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgdXBkYXRlT246IGFwaUNoZWNrLnN0cmluZy5vcHRpb25hbCxcblx0ICAgIGRlYm91bmNlOiBhcGlDaGVjay5vbmVPZlR5cGUoW2FwaUNoZWNrLm9iamVjdE9mKGFwaUNoZWNrLm51bWJlciksIGFwaUNoZWNrLm51bWJlcl0pLm9wdGlvbmFsLFxuXHQgICAgYWxsb3dJbnZhbGlkOiBhcGlDaGVjay5ib29sLm9wdGlvbmFsLFxuXHQgICAgZ2V0dGVyU2V0dGVyOiBhcGlDaGVjay5ib29sLm9wdGlvbmFsLFxuXHQgICAgdGltZXpvbmU6IGFwaUNoZWNrLnN0cmluZy5vcHRpb25hbFxuXHQgIH0pLm9wdGlvbmFsLFxuXHQgIHdhdGNoZXI6IGFwaUNoZWNrLnR5cGVPckFycmF5T2YoYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgZXhwcmVzc2lvbjogZm9ybWx5RXhwcmVzc2lvbi5vcHRpb25hbCxcblx0ICAgIGxpc3RlbmVyOiBmb3JtbHlFeHByZXNzaW9uXG5cdCAgfSkpLm9wdGlvbmFsLFxuXHQgIHZhbGlkYXRvcnM6IGFwaUNoZWNrLm9iamVjdE9mKGFwaUNoZWNrLm9uZU9mVHlwZShbZm9ybWx5RXhwcmVzc2lvbiwgYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgZXhwcmVzc2lvbjogZm9ybWx5RXhwcmVzc2lvbixcblx0ICAgIG1lc3NhZ2U6IGZvcm1seUV4cHJlc3Npb24ub3B0aW9uYWxcblx0ICB9KS5zdHJpY3RdKSkub3B0aW9uYWwsXG5cdCAgbm9Gb3JtQ29udHJvbDogYXBpQ2hlY2suYm9vbC5vcHRpb25hbCxcblx0ICBoaWRlOiBhcGlDaGVjay5ib29sLm9wdGlvbmFsLFxuXHQgIGhpZGVFeHByZXNzaW9uOiBmb3JtbHlFeHByZXNzaW9uLm9wdGlvbmFsLFxuXHQgIG5nTW9kZWxBdHRyczogYXBpQ2hlY2sub2JqZWN0T2YoYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgZXhwcmVzc2lvbjogYXBpQ2hlY2suc2hhcGUuaWZOb3QoW1widmFsdWVcIiwgXCJhdHRyaWJ1dGVcIiwgXCJib3VuZFwiXSwgYXBpQ2hlY2suYW55KS5vcHRpb25hbCxcblx0ICAgIHZhbHVlOiBhcGlDaGVjay5zaGFwZS5pZk5vdChcImV4cHJlc3Npb25cIiwgYXBpQ2hlY2suYW55KS5vcHRpb25hbCxcblx0ICAgIGF0dHJpYnV0ZTogYXBpQ2hlY2suc2hhcGUuaWZOb3QoXCJleHByZXNzaW9uXCIsIGFwaUNoZWNrLmFueSkub3B0aW9uYWwsXG5cdCAgICBib3VuZDogYXBpQ2hlY2suc2hhcGUuaWZOb3QoXCJleHByZXNzaW9uXCIsIGFwaUNoZWNrLmFueSkub3B0aW9uYWxcblx0ICB9KS5zdHJpY3QpLm9wdGlvbmFsLFxuXHQgIGVsZW1lbnRBdHRyaWJ1dGVzOiBhcGlDaGVjay5vYmplY3RPZihhcGlDaGVjay5zdHJpbmcpLm9wdGlvbmFsLFxuXHQgIG9wdGlvbnNUeXBlczogYXBpQ2hlY2sudHlwZU9yQXJyYXlPZihhcGlDaGVjay5zdHJpbmcpLm9wdGlvbmFsLFxuXHQgIGxpbms6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgY29udHJvbGxlcjogYXBpQ2hlY2sub25lT2ZUeXBlKFthcGlDaGVjay5zdHJpbmcsIGFwaUNoZWNrLmZ1bmMsIGFwaUNoZWNrLmFycmF5XSkub3B0aW9uYWwsXG5cdCAgdmFsaWRhdGlvbjogYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgc2hvdzogYXBpQ2hlY2sub25lT2ZUeXBlKFthcGlDaGVjay5ib29sLCBhcGlDaGVjay5vbmVPZihbbnVsbF0pXSkub3B0aW9uYWwsXG5cdCAgICBtZXNzYWdlczogYXBpQ2hlY2sub2JqZWN0T2YoZm9ybWx5RXhwcmVzc2lvbikub3B0aW9uYWwsXG5cdCAgICBlcnJvckV4aXN0c0FuZFNob3VsZEJlVmlzaWJsZTogYXBpQ2hlY2suYm9vbC5vcHRpb25hbFxuXHQgIH0pLm9wdGlvbmFsLFxuXHQgIGZvcm1Db250cm9sOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgdmFsdWU6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgcnVuRXhwcmVzc2lvbnM6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgcmVzZXRNb2RlbDogYXBpQ2hlY2suZnVuYy5vcHRpb25hbCxcblx0ICB1cGRhdGVJbml0aWFsVmFsdWU6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgaW5pdGlhbFZhbHVlOiBhcGlDaGVjay5hbnkub3B0aW9uYWwsXG5cdCAgZGVmYXVsdFZhbHVlOiBhcGlDaGVjay5hbnkub3B0aW9uYWxcblx0fTtcblxuXHR2YXIgZm9ybWx5RmllbGRPcHRpb25zID0gYXBpQ2hlY2suc2hhcGUoZmllbGRPcHRpb25zQXBpU2hhcGUpLnN0cmljdDtcblxuXHR2YXIgZm9ybU9wdGlvbnNBcGkgPSBhcGlDaGVjay5zaGFwZSh7XG5cdCAgZm9ybVN0YXRlOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgcmVzZXRNb2RlbDogYXBpQ2hlY2suZnVuYy5vcHRpb25hbCxcblx0ICB1cGRhdGVJbml0aWFsVmFsdWU6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgcmVtb3ZlQ2hyb21lQXV0b0NvbXBsZXRlOiBhcGlDaGVjay5ib29sLm9wdGlvbmFsXG5cdH0pLnN0cmljdDtcblxuXHR2YXIgZmllbGRHcm91cCA9IGFwaUNoZWNrLnNoYXBlKHtcblx0ICAkJGhhc2hLZXk6IGFwaUNoZWNrLmFueS5vcHRpb25hbCxcblx0ICAvLyBkYW5nZXIuIE5lc3RlZCBmaWVsZCBncm91cHMgd29udCBnZXQgYXBpLWNoZWNrZWQuLi5cblx0ICBmaWVsZEdyb3VwOiBhcGlDaGVjay5hcnJheU9mKGFwaUNoZWNrLm9uZU9mVHlwZShbZm9ybWx5RmllbGRPcHRpb25zLCBhcGlDaGVjay5vYmplY3RdKSksXG5cdCAgY2xhc3NOYW1lOiBhcGlDaGVjay5zdHJpbmcub3B0aW9uYWwsXG5cdCAgb3B0aW9uczogZm9ybU9wdGlvbnNBcGkub3B0aW9uYWwsXG5cdCAgaGlkZTogYXBpQ2hlY2suYm9vbC5vcHRpb25hbCxcblx0ICBoaWRlRXhwcmVzc2lvbjogZm9ybWx5RXhwcmVzc2lvbi5vcHRpb25hbCxcblx0ICBtb2RlbDogbW9kZWxDaGVja2VyLm9wdGlvbmFsLFxuXHQgIGZvcm06IGFwaUNoZWNrLm9iamVjdC5vcHRpb25hbCxcblx0ICBlbGVtZW50QXR0cmlidXRlczogYXBpQ2hlY2sub2JqZWN0T2YoYXBpQ2hlY2suc3RyaW5nKS5vcHRpb25hbFxuXHR9KS5zdHJpY3Q7XG5cblx0dmFyIHR5cGVPcHRpb25zRGVmYXVsdE9wdGlvbnMgPSBhbmd1bGFyLmNvcHkoZmllbGRPcHRpb25zQXBpU2hhcGUpO1xuXHR0eXBlT3B0aW9uc0RlZmF1bHRPcHRpb25zLmtleSA9IGFwaUNoZWNrLnN0cmluZy5vcHRpb25hbDtcblxuXHR2YXIgZm9ybWx5VHlwZU9wdGlvbnMgPSBhcGlDaGVjay5zaGFwZSh7XG5cdCAgbmFtZTogYXBpQ2hlY2suc3RyaW5nLFxuXHQgIHRlbXBsYXRlOiBhcGlDaGVjay5zaGFwZS5pZk5vdChcInRlbXBsYXRlVXJsXCIsIGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suc3RyaW5nLCBhcGlDaGVjay5mdW5jXSkpLm9wdGlvbmFsLFxuXHQgIHRlbXBsYXRlVXJsOiBhcGlDaGVjay5zaGFwZS5pZk5vdChcInRlbXBsYXRlXCIsIGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suc3RyaW5nLCBhcGlDaGVjay5mdW5jXSkpLm9wdGlvbmFsLFxuXHQgIGNvbnRyb2xsZXI6IGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suZnVuYywgYXBpQ2hlY2suc3RyaW5nLCBhcGlDaGVjay5hcnJheV0pLm9wdGlvbmFsLFxuXHQgIGxpbms6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgZGVmYXVsdE9wdGlvbnM6IGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suZnVuYywgYXBpQ2hlY2suc2hhcGUodHlwZU9wdGlvbnNEZWZhdWx0T3B0aW9ucyldKS5vcHRpb25hbCxcblx0ICBcImV4dGVuZHNcIjogYXBpQ2hlY2suc3RyaW5nLm9wdGlvbmFsLFxuXHQgIHdyYXBwZXI6IHNwZWNpZnlXcmFwcGVyVHlwZS5vcHRpb25hbCxcblx0ICBkYXRhOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgdmFsaWRhdGVPcHRpb25zOiBhcGlDaGVjay5mdW5jLm9wdGlvbmFsLFxuXHQgIGFwaUNoZWNrOiBhcGlDaGVja1Byb3BlcnR5Lm9wdGlvbmFsLFxuXHQgIGFwaUNoZWNrSW5zdGFuY2U6IGFwaUNoZWNrSW5zdGFuY2VQcm9wZXJ0eS5vcHRpb25hbCxcblx0ICBhcGlDaGVja0Z1bmN0aW9uOiBhcGlDaGVja0Z1bmN0aW9uUHJvcGVydHkub3B0aW9uYWwsXG5cdCAgYXBpQ2hlY2tPcHRpb25zOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgb3ZlcndyaXRlT2s6IGFwaUNoZWNrLmJvb2wub3B0aW9uYWxcblx0fSkuc3RyaWN0O1xuXHRhbmd1bGFyLmV4dGVuZChhcGlDaGVjaywge1xuXHQgIGZvcm1seVR5cGVPcHRpb25zOiBmb3JtbHlUeXBlT3B0aW9ucywgZm9ybWx5RmllbGRPcHRpb25zOiBmb3JtbHlGaWVsZE9wdGlvbnMsIGZvcm1seUV4cHJlc3Npb246IGZvcm1seUV4cHJlc3Npb24sIGZvcm1seVdyYXBwZXJUeXBlOiBmb3JtbHlXcmFwcGVyVHlwZSwgZmllbGRHcm91cDogZmllbGRHcm91cCwgZm9ybU9wdGlvbnNBcGk6IGZvcm1PcHRpb25zQXBpXG5cdH0pO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gYXBpQ2hlY2s7XG5cbi8qKiovIH0sXG4vKiAzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiaHR0cHM6Ly9naXRodWIuY29tL2Zvcm1seS1qcy9hbmd1bGFyLWZvcm1seS9ibG9iL1wiICsgKFwiNi44LjJcIikgKyBcIi9vdGhlci9FUlJPUlNfQU5EX1dBUk5JTkdTLm1kI1wiO1xuXG4vKioqLyB9LFxuLyogNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5VXNhYmlsaXR5O1xuXG5cdC8vIEBuZ0luamVjdFxuXHRmdW5jdGlvbiBmb3JtbHlVc2FiaWxpdHkoZm9ybWx5QXBpQ2hlY2ssIGZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXgpIHtcblx0ICB2YXIgX3RoaXMgPSB0aGlzO1xuXG5cdCAgYW5ndWxhci5leHRlbmQodGhpcywge1xuXHQgICAgZ2V0Rm9ybWx5RXJyb3I6IGdldEZvcm1seUVycm9yLFxuXHQgICAgZ2V0RmllbGRFcnJvcjogZ2V0RmllbGRFcnJvcixcblx0ICAgIGNoZWNrV3JhcHBlcjogY2hlY2tXcmFwcGVyLFxuXHQgICAgY2hlY2tXcmFwcGVyVGVtcGxhdGU6IGNoZWNrV3JhcHBlclRlbXBsYXRlLFxuXHQgICAgJGdldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICByZXR1cm4gX3RoaXM7XG5cdCAgICB9XG5cdCAgfSk7XG5cblx0ICBmdW5jdGlvbiBnZXRGaWVsZEVycm9yKGVycm9ySW5mb1NsdWcsIG1lc3NhZ2UsIGZpZWxkKSB7XG5cdCAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDMpIHtcblx0ICAgICAgZmllbGQgPSBtZXNzYWdlO1xuXHQgICAgICBtZXNzYWdlID0gZXJyb3JJbmZvU2x1Zztcblx0ICAgICAgZXJyb3JJbmZvU2x1ZyA9IG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbmV3IEVycm9yKGdldEVycm9yTWVzc2FnZShlcnJvckluZm9TbHVnLCBtZXNzYWdlKSArIChcIiBGaWVsZCBkZWZpbml0aW9uOiBcIiArIGFuZ3VsYXIudG9Kc29uKGZpZWxkKSkpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldEZvcm1seUVycm9yKGVycm9ySW5mb1NsdWcsIG1lc3NhZ2UpIHtcblx0ICAgIGlmICghbWVzc2FnZSkge1xuXHQgICAgICBtZXNzYWdlID0gZXJyb3JJbmZvU2x1Zztcblx0ICAgICAgZXJyb3JJbmZvU2x1ZyA9IG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbmV3IEVycm9yKGdldEVycm9yTWVzc2FnZShlcnJvckluZm9TbHVnLCBtZXNzYWdlKSk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlKGVycm9ySW5mb1NsdWcsIG1lc3NhZ2UpIHtcblx0ICAgIHZhciB1cmwgPSBcIlwiO1xuXHQgICAgaWYgKGVycm9ySW5mb1NsdWcgIT09IG51bGwpIHtcblx0ICAgICAgdXJsID0gXCJcIiArIGZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXggKyBcIlwiICsgZXJyb3JJbmZvU2x1Zztcblx0ICAgIH1cblx0ICAgIHJldHVybiBcIkZvcm1seSBFcnJvcjogXCIgKyBtZXNzYWdlICsgXCIuIFwiICsgdXJsO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGNoZWNrV3JhcHBlcih3cmFwcGVyKSB7XG5cdCAgICBmb3JtbHlBcGlDaGVja1tcInRocm93XCJdKGZvcm1seUFwaUNoZWNrLmZvcm1seVdyYXBwZXJUeXBlLCB3cmFwcGVyLCB7XG5cdCAgICAgIHByZWZpeDogXCJmb3JtbHlDb25maWcuc2V0V3JhcHBlclwiLFxuXHQgICAgICB1cmxTdWZmaXg6IFwic2V0d3JhcHBlci12YWxpZGF0aW9uLWZhaWxlZFwiXG5cdCAgICB9KTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBjaGVja1dyYXBwZXJUZW1wbGF0ZSh0ZW1wbGF0ZSwgYWRkaXRpb25hbEluZm8pIHtcblx0ICAgIHZhciBmb3JtbHlUcmFuc2NsdWRlID0gXCI8Zm9ybWx5LXRyYW5zY2x1ZGU+PC9mb3JtbHktdHJhbnNjbHVkZT5cIjtcblx0ICAgIGlmICh0ZW1wbGF0ZS5pbmRleE9mKGZvcm1seVRyYW5zY2x1ZGUpID09PSAtMSkge1xuXHQgICAgICB0aHJvdyBnZXRGb3JtbHlFcnJvcihcIlRlbXBsYXRlIHdyYXBwZXIgdGVtcGxhdGVzIG11c3QgdXNlIFxcXCJcIiArIGZvcm1seVRyYW5zY2x1ZGUgKyBcIlxcXCIgc29tZXdoZXJlIGluIHRoZW0uIFwiICsgKFwiVGhpcyBvbmUgZG9lcyBub3QgaGF2ZSBcXFwiPGZvcm1seS10cmFuc2NsdWRlPjwvZm9ybWx5LXRyYW5zY2x1ZGU+XFxcIiBpbiBpdDogXCIgKyB0ZW1wbGF0ZSkgKyBcIlxcblwiICsgKFwiQWRkaXRpb25hbCBpbmZvcm1hdGlvbjogXCIgKyBKU09OLnN0cmluZ2lmeShhZGRpdGlvbmFsSW5mbykpKTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0Zm9ybWx5VXNhYmlsaXR5LiRpbmplY3QgPSBbXCJmb3JtbHlBcGlDaGVja1wiLCBcImZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXhcIl07XG5cbi8qKiovIH0sXG4vKiA1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX2ludGVyb3BSZXF1aXJlID0gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqW1wiZGVmYXVsdFwiXSA6IG9iajsgfTtcblxuXHR2YXIgYW5ndWxhciA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KSk7XG5cblx0dmFyIHV0aWxzID0gX2ludGVyb3BSZXF1aXJlKF9fd2VicGFja19yZXF1aXJlX18oMTgpKTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZvcm1seUNvbmZpZztcblxuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5Q29uZmlnKGZvcm1seVVzYWJpbGl0eVByb3ZpZGVyLCBmb3JtbHlBcGlDaGVjaykge1xuXHQgIHZhciBfdGhpczIgPSB0aGlzO1xuXG5cdCAgdmFyIHR5cGVNYXAgPSB7fTtcblx0ICB2YXIgdGVtcGxhdGVXcmFwcGVyc01hcCA9IHt9O1xuXHQgIHZhciBkZWZhdWx0V3JhcHBlck5hbWUgPSBcImRlZmF1bHRcIjtcblx0ICB2YXIgX3RoaXMgPSB0aGlzO1xuXHQgIHZhciBnZXRFcnJvciA9IGZvcm1seVVzYWJpbGl0eVByb3ZpZGVyLmdldEZvcm1seUVycm9yO1xuXG5cdCAgYW5ndWxhci5leHRlbmQodGhpcywge1xuXHQgICAgc2V0VHlwZTogc2V0VHlwZSxcblx0ICAgIGdldFR5cGU6IGdldFR5cGUsXG5cdCAgICBzZXRXcmFwcGVyOiBzZXRXcmFwcGVyLFxuXHQgICAgZ2V0V3JhcHBlcjogZ2V0V3JhcHBlcixcblx0ICAgIGdldFdyYXBwZXJCeVR5cGU6IGdldFdyYXBwZXJCeVR5cGUsXG5cdCAgICByZW1vdmVXcmFwcGVyQnlOYW1lOiByZW1vdmVXcmFwcGVyQnlOYW1lLFxuXHQgICAgcmVtb3ZlV3JhcHBlcnNGb3JUeXBlOiByZW1vdmVXcmFwcGVyc0ZvclR5cGUsXG5cdCAgICBkaXNhYmxlV2FybmluZ3M6IGZhbHNlLFxuXHQgICAgZXh0cmFzOiB7XG5cdCAgICAgIGRpc2FibGVOZ01vZGVsQXR0cnNNYW5pcHVsYXRvcjogZmFsc2UsXG5cdCAgICAgIG5nTW9kZWxBdHRyc01hbmlwdWxhdG9yUHJlZmVyVW5ib3VuZDogZmFsc2UsXG5cdCAgICAgIHJlbW92ZUNocm9tZUF1dG9Db21wbGV0ZTogZmFsc2UsXG5cdCAgICAgIGRlZmF1bHRIaWRlRGlyZWN0aXZlOiBcIm5nLWlmXCIsXG5cdCAgICAgIGdldEZpZWxkSWQ6IG51bGxcblx0ICAgIH0sXG5cdCAgICB0ZW1wbGF0ZU1hbmlwdWxhdG9yczoge1xuXHQgICAgICBwcmVXcmFwcGVyOiBbXSxcblx0ICAgICAgcG9zdFdyYXBwZXI6IFtdXG5cdCAgICB9LFxuXHQgICAgJGdldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICByZXR1cm4gX3RoaXMyO1xuXHQgICAgfVxuXHQgIH0pO1xuXG5cdCAgZnVuY3Rpb24gc2V0VHlwZShvcHRpb25zKSB7XG5cdCAgICBpZiAoYW5ndWxhci5pc0FycmF5KG9wdGlvbnMpKSB7XG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaChvcHRpb25zLCBzZXRUeXBlKTtcblx0ICAgIH0gZWxzZSBpZiAoYW5ndWxhci5pc09iamVjdChvcHRpb25zKSkge1xuXHQgICAgICBjaGVja1R5cGUob3B0aW9ucyk7XG5cdCAgICAgIGlmIChvcHRpb25zW1wiZXh0ZW5kc1wiXSkge1xuXHQgICAgICAgIGV4dGVuZFR5cGVPcHRpb25zKG9wdGlvbnMpO1xuXHQgICAgICB9XG5cdCAgICAgIHR5cGVNYXBbb3B0aW9ucy5uYW1lXSA9IG9wdGlvbnM7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0aHJvdyBnZXRFcnJvcihcIllvdSBtdXN0IHByb3ZpZGUgYW4gb2JqZWN0IG9yIGFycmF5IGZvciBzZXRUeXBlLiBZb3UgcHJvdmlkZWQ6IFwiICsgSlNPTi5zdHJpbmdpZnkoYXJndW1lbnRzKSk7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gY2hlY2tUeXBlKG9wdGlvbnMpIHtcblx0ICAgIGZvcm1seUFwaUNoZWNrW1widGhyb3dcIl0oZm9ybWx5QXBpQ2hlY2suZm9ybWx5VHlwZU9wdGlvbnMsIG9wdGlvbnMsIHtcblx0ICAgICAgcHJlZml4OiBcImZvcm1seUNvbmZpZy5zZXRUeXBlXCIsXG5cdCAgICAgIHVybDogXCJzZXR0eXBlLXZhbGlkYXRpb24tZmFpbGVkXCJcblx0ICAgIH0pO1xuXHQgICAgaWYgKCFvcHRpb25zLm92ZXJ3cml0ZU9rKSB7XG5cdCAgICAgIGNoZWNrT3ZlcndyaXRlKG9wdGlvbnMubmFtZSwgdHlwZU1hcCwgb3B0aW9ucywgXCJ0eXBlc1wiKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG9wdGlvbnMub3ZlcndyaXRlT2sgPSB1bmRlZmluZWQ7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZXh0ZW5kVHlwZU9wdGlvbnMob3B0aW9ucykge1xuXHQgICAgdmFyIGV4dGVuZHNUeXBlID0gZ2V0VHlwZShvcHRpb25zW1wiZXh0ZW5kc1wiXSwgdHJ1ZSwgb3B0aW9ucyk7XG5cdCAgICBleHRlbmRUeXBlQ29udHJvbGxlckZ1bmN0aW9uKG9wdGlvbnMsIGV4dGVuZHNUeXBlKTtcblx0ICAgIGV4dGVuZFR5cGVMaW5rRnVuY3Rpb24ob3B0aW9ucywgZXh0ZW5kc1R5cGUpO1xuXHQgICAgZXh0ZW5kVHlwZVZhbGlkYXRlT3B0aW9uc0Z1bmN0aW9uKG9wdGlvbnMsIGV4dGVuZHNUeXBlKTtcblx0ICAgIGV4dGVuZFR5cGVEZWZhdWx0T3B0aW9ucyhvcHRpb25zLCBleHRlbmRzVHlwZSk7XG5cdCAgICB1dGlscy5yZXZlcnNlRGVlcE1lcmdlKG9wdGlvbnMsIGV4dGVuZHNUeXBlKTtcblx0ICAgIGV4dGVuZFRlbXBsYXRlKG9wdGlvbnMsIGV4dGVuZHNUeXBlKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBleHRlbmRUZW1wbGF0ZShvcHRpb25zLCBleHRlbmRzVHlwZSkge1xuXHQgICAgaWYgKG9wdGlvbnMudGVtcGxhdGUgJiYgZXh0ZW5kc1R5cGUudGVtcGxhdGVVcmwpIHtcblx0ICAgICAgZGVsZXRlIG9wdGlvbnMudGVtcGxhdGVVcmw7XG5cdCAgICB9IGVsc2UgaWYgKG9wdGlvbnMudGVtcGxhdGVVcmwgJiYgZXh0ZW5kc1R5cGUudGVtcGxhdGUpIHtcblx0ICAgICAgZGVsZXRlIG9wdGlvbnMudGVtcGxhdGU7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZXh0ZW5kVHlwZUNvbnRyb2xsZXJGdW5jdGlvbihvcHRpb25zLCBleHRlbmRzVHlwZSkge1xuXHQgICAgdmFyIGV4dGVuZHNDdHJsID0gZXh0ZW5kc1R5cGUuY29udHJvbGxlcjtcblx0ICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQoZXh0ZW5kc0N0cmwpKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciBvcHRpb25zQ3RybCA9IG9wdGlvbnMuY29udHJvbGxlcjtcblx0ICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChvcHRpb25zQ3RybCkpIHtcblx0ICAgICAgb3B0aW9ucy5jb250cm9sbGVyID0gZnVuY3Rpb24gKCRzY29wZSwgJGNvbnRyb2xsZXIpIHtcblx0ICAgICAgICAkY29udHJvbGxlcihleHRlbmRzQ3RybCwgeyAkc2NvcGU6ICRzY29wZSB9KTtcblx0ICAgICAgICAkY29udHJvbGxlcihvcHRpb25zQ3RybCwgeyAkc2NvcGU6ICRzY29wZSB9KTtcblx0ICAgICAgfTtcblx0ICAgICAgb3B0aW9ucy5jb250cm9sbGVyLiRpbmplY3QgPSBbXCIkc2NvcGVcIiwgXCIkY29udHJvbGxlclwiXTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG9wdGlvbnMuY29udHJvbGxlciA9IGV4dGVuZHNDdHJsO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGV4dGVuZFR5cGVMaW5rRnVuY3Rpb24ob3B0aW9ucywgZXh0ZW5kc1R5cGUpIHtcblx0ICAgIHZhciBleHRlbmRzRm4gPSBleHRlbmRzVHlwZS5saW5rO1xuXHQgICAgaWYgKCFhbmd1bGFyLmlzRGVmaW5lZChleHRlbmRzRm4pKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciBvcHRpb25zRm4gPSBvcHRpb25zLmxpbms7XG5cdCAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQob3B0aW9uc0ZuKSkge1xuXHQgICAgICBvcHRpb25zLmxpbmsgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgZXh0ZW5kc0ZuLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcblx0ICAgICAgICBvcHRpb25zRm4uYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuXHQgICAgICB9O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgb3B0aW9ucy5saW5rID0gZXh0ZW5kc0ZuO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGV4dGVuZFR5cGVWYWxpZGF0ZU9wdGlvbnNGdW5jdGlvbihvcHRpb25zLCBleHRlbmRzVHlwZSkge1xuXHQgICAgdmFyIGV4dGVuZHNGbiA9IGV4dGVuZHNUeXBlLnZhbGlkYXRlT3B0aW9ucztcblx0ICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQoZXh0ZW5kc0ZuKSkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICB2YXIgb3B0aW9uc0ZuID0gb3B0aW9ucy52YWxpZGF0ZU9wdGlvbnM7XG5cdCAgICB2YXIgb3JpZ2luYWxEZWZhdWx0T3B0aW9ucyA9IG9wdGlvbnMuZGVmYXVsdE9wdGlvbnM7XG5cdCAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQob3B0aW9uc0ZuKSkge1xuXHQgICAgICBvcHRpb25zLnZhbGlkYXRlT3B0aW9ucyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG5cdCAgICAgICAgb3B0aW9uc0ZuKG9wdGlvbnMpO1xuXHQgICAgICAgIHZhciBtZXJnZWRPcHRpb25zID0gYW5ndWxhci5jb3B5KG9wdGlvbnMpO1xuXHQgICAgICAgIHZhciBkZWZhdWx0T3B0aW9ucyA9IG9yaWdpbmFsRGVmYXVsdE9wdGlvbnM7XG5cdCAgICAgICAgaWYgKGRlZmF1bHRPcHRpb25zKSB7XG5cdCAgICAgICAgICBpZiAoYW5ndWxhci5pc0Z1bmN0aW9uKGRlZmF1bHRPcHRpb25zKSkge1xuXHQgICAgICAgICAgICBkZWZhdWx0T3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zKG1lcmdlZE9wdGlvbnMpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgdXRpbHMucmV2ZXJzZURlZXBNZXJnZShtZXJnZWRPcHRpb25zLCBkZWZhdWx0T3B0aW9ucyk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGV4dGVuZHNGbihtZXJnZWRPcHRpb25zKTtcblx0ICAgICAgfTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG9wdGlvbnMudmFsaWRhdGVPcHRpb25zID0gZXh0ZW5kc0ZuO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGV4dGVuZFR5cGVEZWZhdWx0T3B0aW9ucyhvcHRpb25zLCBleHRlbmRzVHlwZSkge1xuXHQgICAgdmFyIGV4dGVuZHNETyA9IGV4dGVuZHNUeXBlLmRlZmF1bHRPcHRpb25zO1xuXHQgICAgaWYgKCFhbmd1bGFyLmlzRGVmaW5lZChleHRlbmRzRE8pKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciBvcHRpb25zRE8gPSBvcHRpb25zLmRlZmF1bHRPcHRpb25zO1xuXHQgICAgdmFyIG9wdGlvbnNET0lzRm4gPSBhbmd1bGFyLmlzRnVuY3Rpb24ob3B0aW9uc0RPKTtcblx0ICAgIHZhciBleHRlbmRzRE9Jc0ZuID0gYW5ndWxhci5pc0Z1bmN0aW9uKGV4dGVuZHNETyk7XG5cdCAgICBpZiAoZXh0ZW5kc0RPSXNGbikge1xuXHQgICAgICBvcHRpb25zLmRlZmF1bHRPcHRpb25zID0gZnVuY3Rpb24gZGVmYXVsdE9wdGlvbnMob3B0aW9ucykge1xuXHQgICAgICAgIHZhciBleHRlbmRzRGVmYXVsdE9wdGlvbnMgPSBleHRlbmRzRE8ob3B0aW9ucyk7XG5cdCAgICAgICAgdmFyIG1lcmdlZERlZmF1bHRPcHRpb25zID0ge307XG5cdCAgICAgICAgdXRpbHMucmV2ZXJzZURlZXBNZXJnZShtZXJnZWREZWZhdWx0T3B0aW9ucywgb3B0aW9ucywgZXh0ZW5kc0RlZmF1bHRPcHRpb25zKTtcblx0ICAgICAgICB2YXIgZXh0ZW5kZXJPcHRpb25zRGVmYXVsdE9wdGlvbnMgPSBvcHRpb25zRE87XG5cdCAgICAgICAgaWYgKG9wdGlvbnNET0lzRm4pIHtcblx0ICAgICAgICAgIGV4dGVuZGVyT3B0aW9uc0RlZmF1bHRPcHRpb25zID0gZXh0ZW5kZXJPcHRpb25zRGVmYXVsdE9wdGlvbnMobWVyZ2VkRGVmYXVsdE9wdGlvbnMpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB1dGlscy5yZXZlcnNlRGVlcE1lcmdlKGV4dGVuZHNEZWZhdWx0T3B0aW9ucywgZXh0ZW5kZXJPcHRpb25zRGVmYXVsdE9wdGlvbnMpO1xuXHQgICAgICAgIHJldHVybiBleHRlbmRzRGVmYXVsdE9wdGlvbnM7XG5cdCAgICAgIH07XG5cdCAgICB9IGVsc2UgaWYgKG9wdGlvbnNET0lzRm4pIHtcblx0ICAgICAgb3B0aW9ucy5kZWZhdWx0T3B0aW9ucyA9IGZ1bmN0aW9uIGRlZmF1bHRPcHRpb25zKG9wdGlvbnMpIHtcblx0ICAgICAgICB2YXIgbmV3RGVmYXVsdE9wdGlvbnMgPSB7fTtcblx0ICAgICAgICB1dGlscy5yZXZlcnNlRGVlcE1lcmdlKG5ld0RlZmF1bHRPcHRpb25zLCBvcHRpb25zLCBleHRlbmRzRE8pO1xuXHQgICAgICAgIHJldHVybiBvcHRpb25zRE8obmV3RGVmYXVsdE9wdGlvbnMpO1xuXHQgICAgICB9O1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldFR5cGUobmFtZSwgdGhyb3dFcnJvciwgZXJyb3JDb250ZXh0KSB7XG5cdCAgICBpZiAoIW5hbWUpIHtcblx0ICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcblx0ICAgIH1cblx0ICAgIHZhciB0eXBlID0gdHlwZU1hcFtuYW1lXTtcblx0ICAgIGlmICghdHlwZSAmJiB0aHJvd0Vycm9yID09PSB0cnVlKSB7XG5cdCAgICAgIHRocm93IGdldEVycm9yKFwiVGhlcmUgaXMgbm8gdHlwZSBieSB0aGUgbmFtZSBvZiBcXFwiXCIgKyBuYW1lICsgXCJcXFwiOiBcIiArIEpTT04uc3RyaW5naWZ5KGVycm9yQ29udGV4dCkpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIHR5cGU7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gc2V0V3JhcHBlcihfeCwgX3gyKSB7XG5cdCAgICB2YXIgX2FnYWluID0gdHJ1ZTtcblxuXHQgICAgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7XG5cdCAgICAgIF9hZ2FpbiA9IGZhbHNlO1xuXHQgICAgICB2YXIgb3B0aW9ucyA9IF94LFxuXHQgICAgICAgICAgbmFtZSA9IF94MjtcblxuXHQgICAgICBpZiAoYW5ndWxhci5pc0FycmF5KG9wdGlvbnMpKSB7XG5cdCAgICAgICAgcmV0dXJuIG9wdGlvbnMubWFwKGZ1bmN0aW9uICh3cmFwcGVyT3B0aW9ucykge1xuXHQgICAgICAgICAgcmV0dXJuIHNldFdyYXBwZXIod3JhcHBlck9wdGlvbnMpO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICB9IGVsc2UgaWYgKGFuZ3VsYXIuaXNPYmplY3Qob3B0aW9ucykpIHtcblx0ICAgICAgICBvcHRpb25zLnR5cGVzID0gZ2V0T3B0aW9uc1R5cGVzKG9wdGlvbnMpO1xuXHQgICAgICAgIG9wdGlvbnMubmFtZSA9IGdldE9wdGlvbnNOYW1lKG9wdGlvbnMsIG5hbWUpO1xuXHQgICAgICAgIGNoZWNrV3JhcHBlckFQSShvcHRpb25zKTtcblx0ICAgICAgICB0ZW1wbGF0ZVdyYXBwZXJzTWFwW29wdGlvbnMubmFtZV0gPSBvcHRpb25zO1xuXHQgICAgICAgIHJldHVybiBvcHRpb25zO1xuXHQgICAgICB9IGVsc2UgaWYgKGFuZ3VsYXIuaXNTdHJpbmcob3B0aW9ucykpIHtcblx0ICAgICAgICBfeCA9IHtcblx0ICAgICAgICAgIHRlbXBsYXRlOiBvcHRpb25zLFxuXHQgICAgICAgICAgbmFtZTogbmFtZVxuXHQgICAgICAgIH07XG5cdCAgICAgICAgX2FnYWluID0gdHJ1ZTtcblx0ICAgICAgICBjb250aW51ZSBfZnVuY3Rpb247XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cblx0ICBmdW5jdGlvbiBnZXRPcHRpb25zVHlwZXMob3B0aW9ucykge1xuXHQgICAgaWYgKGFuZ3VsYXIuaXNTdHJpbmcob3B0aW9ucy50eXBlcykpIHtcblx0ICAgICAgcmV0dXJuIFtvcHRpb25zLnR5cGVzXTtcblx0ICAgIH1cblx0ICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQob3B0aW9ucy50eXBlcykpIHtcblx0ICAgICAgcmV0dXJuIFtdO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIG9wdGlvbnMudHlwZXM7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0T3B0aW9uc05hbWUob3B0aW9ucywgbmFtZSkge1xuXHQgICAgcmV0dXJuIG9wdGlvbnMubmFtZSB8fCBuYW1lIHx8IG9wdGlvbnMudHlwZXMuam9pbihcIiBcIikgfHwgZGVmYXVsdFdyYXBwZXJOYW1lO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGNoZWNrV3JhcHBlckFQSShvcHRpb25zKSB7XG5cdCAgICBmb3JtbHlVc2FiaWxpdHlQcm92aWRlci5jaGVja1dyYXBwZXIob3B0aW9ucyk7XG5cdCAgICBpZiAob3B0aW9ucy50ZW1wbGF0ZSkge1xuXHQgICAgICBmb3JtbHlVc2FiaWxpdHlQcm92aWRlci5jaGVja1dyYXBwZXJUZW1wbGF0ZShvcHRpb25zLnRlbXBsYXRlLCBvcHRpb25zKTtcblx0ICAgIH1cblx0ICAgIGlmICghb3B0aW9ucy5vdmVyd3JpdGVPaykge1xuXHQgICAgICBjaGVja092ZXJ3cml0ZShvcHRpb25zLm5hbWUsIHRlbXBsYXRlV3JhcHBlcnNNYXAsIG9wdGlvbnMsIFwidGVtcGxhdGVXcmFwcGVyc1wiKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGRlbGV0ZSBvcHRpb25zLm92ZXJ3cml0ZU9rO1xuXHQgICAgfVxuXHQgICAgY2hlY2tXcmFwcGVyVHlwZXMob3B0aW9ucyk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gY2hlY2tXcmFwcGVyVHlwZXMob3B0aW9ucykge1xuXHQgICAgdmFyIHNob3VsZFRocm93ID0gIWFuZ3VsYXIuaXNBcnJheShvcHRpb25zLnR5cGVzKSB8fCAhb3B0aW9ucy50eXBlcy5ldmVyeShhbmd1bGFyLmlzU3RyaW5nKTtcblx0ICAgIGlmIChzaG91bGRUaHJvdykge1xuXHQgICAgICB0aHJvdyBnZXRFcnJvcihcIkF0dGVtcHRlZCB0byBjcmVhdGUgYSB0ZW1wbGF0ZSB3cmFwcGVyIHdpdGggdHlwZXMgdGhhdCBpcyBub3QgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5nc1wiKTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICBmdW5jdGlvbiBjaGVja092ZXJ3cml0ZShwcm9wZXJ0eSwgb2JqZWN0LCBuZXdWYWx1ZSwgb2JqZWN0TmFtZSkge1xuXHQgICAgaWYgKG9iamVjdC5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcblx0ICAgICAgd2FybihbXCJBdHRlbXB0aW5nIHRvIG92ZXJ3cml0ZSBcIiArIHByb3BlcnR5ICsgXCIgb24gXCIgKyBvYmplY3ROYW1lICsgXCIgd2hpY2ggaXMgY3VycmVudGx5XCIsIFwiXCIgKyBKU09OLnN0cmluZ2lmeShvYmplY3RbcHJvcGVydHldKSArIFwiIHdpdGggXCIgKyBKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSksIFwiVG8gc3VwcmVzcyB0aGlzIHdhcm5pbmcsIHNwZWNpZnkgdGhlIHByb3BlcnR5IFxcXCJvdmVyd3JpdGVPazogdHJ1ZVxcXCJcIl0uam9pbihcIiBcIikpO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldFdyYXBwZXIobmFtZSkge1xuXHQgICAgcmV0dXJuIHRlbXBsYXRlV3JhcHBlcnNNYXBbbmFtZSB8fCBkZWZhdWx0V3JhcHBlck5hbWVdO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldFdyYXBwZXJCeVR5cGUodHlwZSkge1xuXHQgICAgLyoganNoaW50IG1heGNvbXBsZXhpdHk6NiAqL1xuXHQgICAgdmFyIHdyYXBwZXJzID0gW107XG5cdCAgICBmb3IgKHZhciBuYW1lIGluIHRlbXBsYXRlV3JhcHBlcnNNYXApIHtcblx0ICAgICAgaWYgKHRlbXBsYXRlV3JhcHBlcnNNYXAuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAgICAgICBpZiAodGVtcGxhdGVXcmFwcGVyc01hcFtuYW1lXS50eXBlcyAmJiB0ZW1wbGF0ZVdyYXBwZXJzTWFwW25hbWVdLnR5cGVzLmluZGV4T2YodHlwZSkgIT09IC0xKSB7XG5cdCAgICAgICAgICB3cmFwcGVycy5wdXNoKHRlbXBsYXRlV3JhcHBlcnNNYXBbbmFtZV0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIHdyYXBwZXJzO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIHJlbW92ZVdyYXBwZXJCeU5hbWUobmFtZSkge1xuXHQgICAgdmFyIHdyYXBwZXIgPSB0ZW1wbGF0ZVdyYXBwZXJzTWFwW25hbWVdO1xuXHQgICAgZGVsZXRlIHRlbXBsYXRlV3JhcHBlcnNNYXBbbmFtZV07XG5cdCAgICByZXR1cm4gd3JhcHBlcjtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiByZW1vdmVXcmFwcGVyc0ZvclR5cGUodHlwZSkge1xuXHQgICAgdmFyIHdyYXBwZXJzID0gZ2V0V3JhcHBlckJ5VHlwZSh0eXBlKTtcblx0ICAgIGlmICghd3JhcHBlcnMpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgaWYgKCFhbmd1bGFyLmlzQXJyYXkod3JhcHBlcnMpKSB7XG5cdCAgICAgIHJldHVybiByZW1vdmVXcmFwcGVyQnlOYW1lKHdyYXBwZXJzLm5hbWUpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgd3JhcHBlcnMuZm9yRWFjaChmdW5jdGlvbiAod3JhcHBlcikge1xuXHQgICAgICAgIHJldHVybiByZW1vdmVXcmFwcGVyQnlOYW1lKHdyYXBwZXIubmFtZSk7XG5cdCAgICAgIH0pO1xuXHQgICAgICByZXR1cm4gd3JhcHBlcnM7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gd2FybigpIHtcblx0ICAgIGlmICghX3RoaXMuZGlzYWJsZVdhcm5pbmdzKSB7XG5cdCAgICAgIGNvbnNvbGUud2Fybi5hcHBseShjb25zb2xlLCBhcmd1bWVudHMpO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRmb3JtbHlDb25maWcuJGluamVjdCA9IFtcImZvcm1seVVzYWJpbGl0eVByb3ZpZGVyXCIsIFwiZm9ybWx5QXBpQ2hlY2tcIl07XG5cbi8qKiovIH0sXG4vKiA2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZvcm1seVZhbGlkYXRpb25NZXNzYWdlcztcblxuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5VmFsaWRhdGlvbk1lc3NhZ2VzKCkge1xuXG5cdCAgdmFyIHZhbGlkYXRpb25NZXNzYWdlcyA9IHtcblx0ICAgIGFkZFRlbXBsYXRlT3B0aW9uVmFsdWVNZXNzYWdlOiBhZGRUZW1wbGF0ZU9wdGlvblZhbHVlTWVzc2FnZSxcblx0ICAgIGFkZFN0cmluZ01lc3NhZ2U6IGFkZFN0cmluZ01lc3NhZ2UsXG5cdCAgICBtZXNzYWdlczoge31cblx0ICB9O1xuXG5cdCAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlcztcblxuXHQgIGZ1bmN0aW9uIGFkZFRlbXBsYXRlT3B0aW9uVmFsdWVNZXNzYWdlKG5hbWUsIHByb3AsIHByZWZpeCwgc3VmZml4LCBhbHRlcm5hdGUpIHtcblx0ICAgIHZhbGlkYXRpb25NZXNzYWdlcy5tZXNzYWdlc1tuYW1lXSA9IHRlbXBsYXRlT3B0aW9uVmFsdWUocHJvcCwgcHJlZml4LCBzdWZmaXgsIGFsdGVybmF0ZSk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gYWRkU3RyaW5nTWVzc2FnZShuYW1lLCBzdHJpbmcpIHtcblx0ICAgIHZhbGlkYXRpb25NZXNzYWdlcy5tZXNzYWdlc1tuYW1lXSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgcmV0dXJuIHN0cmluZztcblx0ICAgIH07XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gdGVtcGxhdGVPcHRpb25WYWx1ZShwcm9wLCBwcmVmaXgsIHN1ZmZpeCwgYWx0ZXJuYXRlKSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gZ2V0VmFsaWRhdGlvbk1lc3NhZ2Uodmlld1ZhbHVlLCBtb2RlbFZhbHVlLCBzY29wZSkge1xuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnNbcHJvcF0pIHtcblx0ICAgICAgICByZXR1cm4gXCJcIiArIHByZWZpeCArIFwiIFwiICsgc2NvcGUub3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnNbcHJvcF0gKyBcIiBcIiArIHN1ZmZpeDtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICByZXR1cm4gYWx0ZXJuYXRlO1xuXHQgICAgICB9XG5cdCAgICB9O1xuXHQgIH1cblx0fVxuXG4vKioqLyB9LFxuLyogNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIHV0aWxzID0gX2ludGVyb3BSZXF1aXJlKF9fd2VicGFja19yZXF1aXJlX18oMTgpKTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZvcm1seVV0aWw7XG5cblx0Ly8gQG5nSW5qZWN0XG5cdGZ1bmN0aW9uIGZvcm1seVV0aWwoKSB7XG5cdCAgcmV0dXJuIHV0aWxzO1xuXHR9XG5cbi8qKiovIH0sXG4vKiA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX3RvQ29uc3VtYWJsZUFycmF5ID0gZnVuY3Rpb24gKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9IGVsc2UgeyByZXR1cm4gQXJyYXkuZnJvbShhcnIpOyB9IH07XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmb3JtbHlXYXJuO1xuXG5cdC8vIEBuZ0luamVjdFxuXHRmdW5jdGlvbiBmb3JtbHlXYXJuKGZvcm1seUNvbmZpZywgZm9ybWx5RXJyb3JBbmRXYXJuaW5nc1VybFByZWZpeCwgJGxvZykge1xuXHQgIHJldHVybiBmdW5jdGlvbiB3YXJuKCkge1xuXHQgICAgaWYgKCFmb3JtbHlDb25maWcuZGlzYWJsZVdhcm5pbmdzKSB7XG5cdCAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblx0ICAgICAgdmFyIHdhcm5JbmZvU2x1ZyA9IGFyZ3Muc2hpZnQoKTtcblx0ICAgICAgYXJncy51bnNoaWZ0KFwiRm9ybWx5IFdhcm5pbmc6XCIpO1xuXHQgICAgICBhcmdzLnB1c2goXCJcIiArIGZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXggKyBcIlwiICsgd2FybkluZm9TbHVnKTtcblx0ICAgICAgJGxvZy53YXJuLmFwcGx5KCRsb2csIF90b0NvbnN1bWFibGVBcnJheShhcmdzKSk7XG5cdCAgICB9XG5cdCAgfTtcblx0fVxuXHRmb3JtbHlXYXJuLiRpbmplY3QgPSBbXCJmb3JtbHlDb25maWdcIiwgXCJmb3JtbHlFcnJvckFuZFdhcm5pbmdzVXJsUHJlZml4XCIsIFwiJGxvZ1wiXTtcblxuLyoqKi8gfSxcbi8qIDkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5Q3VzdG9tVmFsaWRhdGlvbjtcblxuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5Q3VzdG9tVmFsaWRhdGlvbihmb3JtbHlVdGlsLCAkcSkge1xuXHQgIHJldHVybiB7XG5cdCAgICByZXN0cmljdDogXCJBXCIsXG5cdCAgICByZXF1aXJlOiBcIm5nTW9kZWxcIixcblx0ICAgIGxpbms6IGZ1bmN0aW9uIGZvcm1seUN1c3RvbVZhbGlkYXRpb25MaW5rKHNjb3BlLCBlbCwgYXR0cnMsIGN0cmwpIHtcblx0ICAgICAgdmFyIG9wdHMgPSBzY29wZS5vcHRpb25zO1xuXHQgICAgICBpZiAob3B0cy52YWxpZGF0b3JzKSB7XG5cdCAgICAgICAgY2hlY2tWYWxpZGF0b3JzKG9wdHMudmFsaWRhdG9ycyk7XG5cdCAgICAgIH1cblx0ICAgICAgb3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzID0gb3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzIHx8IHt9O1xuXHQgICAgICBhbmd1bGFyLmZvckVhY2gob3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzLCBmdW5jdGlvbiAobWVzc2FnZSwga2V5KSB7XG5cdCAgICAgICAgb3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzW2tleV0gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICByZXR1cm4gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCBtZXNzYWdlLCBjdHJsLiRtb2RlbFZhbHVlLCBjdHJsLiR2aWV3VmFsdWUpO1xuXHQgICAgICAgIH07XG5cdCAgICAgIH0pO1xuXG5cdCAgICAgIHZhciB1c2VOZXdWYWxpZGF0b3JzQXBpID0gY3RybC5oYXNPd25Qcm9wZXJ0eShcIiR2YWxpZGF0b3JzXCIpICYmICFhdHRycy5oYXNPd25Qcm9wZXJ0eShcInVzZVBhcnNlcnNcIik7XG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaChvcHRzLnZhbGlkYXRvcnMsIGZ1bmN0aW9uIGFkZFZhbGlkYXRvclRvUGlwZWxpbmUodmFsaWRhdG9yLCBuYW1lKSB7XG5cdCAgICAgICAgdmFyIG1lc3NhZ2UgPSB2YWxpZGF0b3IubWVzc2FnZTtcblx0ICAgICAgICBpZiAobWVzc2FnZSkge1xuXHQgICAgICAgICAgb3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzW25hbWVdID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICByZXR1cm4gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCBtZXNzYWdlLCBjdHJsLiRtb2RlbFZhbHVlLCBjdHJsLiR2aWV3VmFsdWUpO1xuXHQgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFsaWRhdG9yID0gYW5ndWxhci5pc09iamVjdCh2YWxpZGF0b3IpID8gdmFsaWRhdG9yLmV4cHJlc3Npb24gOiB2YWxpZGF0b3I7XG5cdCAgICAgICAgdmFyIGlzUG9zc2libHlBc3luYyA9ICFhbmd1bGFyLmlzU3RyaW5nKHZhbGlkYXRvcik7XG5cdCAgICAgICAgaWYgKHVzZU5ld1ZhbGlkYXRvcnNBcGkpIHtcblx0ICAgICAgICAgIHNldHVwV2l0aFZhbGlkYXRvcnMoKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgc2V0dXBXaXRoUGFyc2VycygpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGZ1bmN0aW9uIHNldHVwV2l0aFZhbGlkYXRvcnMoKSB7XG5cdCAgICAgICAgICB2YXIgdmFsaWRhdG9yQ29sbGVjdGlvbiA9IGlzUG9zc2libHlBc3luYyA/IFwiJGFzeW5jVmFsaWRhdG9yc1wiIDogXCIkdmFsaWRhdG9yc1wiO1xuXHQgICAgICAgICAgY3RybFt2YWxpZGF0b3JDb2xsZWN0aW9uXVtuYW1lXSA9IGZ1bmN0aW9uIGV2YWxWYWxpZGl0eShtb2RlbFZhbHVlLCB2aWV3VmFsdWUpIHtcblx0ICAgICAgICAgICAgdmFyIHZhbHVlID0gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCB2YWxpZGF0b3IsIG1vZGVsVmFsdWUsIHZpZXdWYWx1ZSk7XG5cdCAgICAgICAgICAgIGlmIChpc1Bvc3NpYmx5QXN5bmMpIHtcblx0ICAgICAgICAgICAgICByZXR1cm4gaXNQcm9taXNlTGlrZSh2YWx1ZSkgPyB2YWx1ZSA6IHZhbHVlID8gJHEud2hlbih2YWx1ZSkgOiAkcS5yZWplY3QodmFsdWUpO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBmdW5jdGlvbiBzZXR1cFdpdGhQYXJzZXJzKCkge1xuXHQgICAgICAgICAgdmFyIGluRmxpZ2h0VmFsaWRhdG9yID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgY3RybC4kcGFyc2Vycy51bnNoaWZ0KGZ1bmN0aW9uIGV2YWxWYWxpZGl0eU9mUGFyc2VyKHZpZXdWYWx1ZSkge1xuXHQgICAgICAgICAgICB2YXIgaXNWYWxpZCA9IGZvcm1seVV0aWwuZm9ybWx5RXZhbChzY29wZSwgdmFsaWRhdG9yLCBjdHJsLiRtb2RlbFZhbHVlLCB2aWV3VmFsdWUpO1xuXHQgICAgICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShpc1ZhbGlkKSkge1xuXHQgICAgICAgICAgICAgIGN0cmwuJHBlbmRpbmcgPSBjdHJsLiRwZW5kaW5nIHx8IHt9O1xuXHQgICAgICAgICAgICAgIGN0cmwuJHBlbmRpbmdbbmFtZV0gPSB0cnVlO1xuXHQgICAgICAgICAgICAgIGluRmxpZ2h0VmFsaWRhdG9yID0gaXNWYWxpZDtcblx0ICAgICAgICAgICAgICBpc1ZhbGlkLnRoZW4oZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgaWYgKGluRmxpZ2h0VmFsaWRhdG9yID09PSBpc1ZhbGlkKSB7XG5cdCAgICAgICAgICAgICAgICAgIGN0cmwuJHNldFZhbGlkaXR5KG5hbWUsIHRydWUpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgIH0pW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgaWYgKGluRmxpZ2h0VmFsaWRhdG9yID09PSBpc1ZhbGlkKSB7XG5cdCAgICAgICAgICAgICAgICAgIGN0cmwuJHNldFZhbGlkaXR5KG5hbWUsIGZhbHNlKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICB9KVtcImZpbmFsbHlcIl0oZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGN0cmwuJHBlbmRpbmcpLmxlbmd0aCA9PT0gMSkge1xuXHQgICAgICAgICAgICAgICAgICBkZWxldGUgY3RybC4kcGVuZGluZztcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgIGRlbGV0ZSBjdHJsLiRwZW5kaW5nW25hbWVdO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgIGN0cmwuJHNldFZhbGlkaXR5KG5hbWUsIGlzVmFsaWQpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIHJldHVybiB2aWV3VmFsdWU7XG5cdCAgICAgICAgICB9KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgIH07XG5cblx0ICBmdW5jdGlvbiBpc1Byb21pc2VMaWtlKG9iaikge1xuXHQgICAgcmV0dXJuIG9iaiAmJiBhbmd1bGFyLmlzRnVuY3Rpb24ob2JqLnRoZW4pO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGNoZWNrVmFsaWRhdG9ycyh2YWxpZGF0b3JzKSB7XG5cdCAgICB2YXIgYWxsb3dlZFByb3BlcnRpZXMgPSBbXCJleHByZXNzaW9uXCIsIFwibWVzc2FnZVwiXTtcblx0ICAgIHZhciB2YWxpZGF0b3JzV2l0aEV4dHJhUHJvcHMgPSB7fTtcblx0ICAgIGFuZ3VsYXIuZm9yRWFjaCh2YWxpZGF0b3JzLCBmdW5jdGlvbiAodmFsaWRhdG9yLCBuYW1lKSB7XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzU3RyaW5nKHZhbGlkYXRvcikpIHtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGV4dHJhUHJvcHMgPSBbXTtcblx0ICAgICAgYW5ndWxhci5mb3JFYWNoKHZhbGlkYXRvciwgZnVuY3Rpb24gKHYsIGtleSkge1xuXHQgICAgICAgIGlmIChhbGxvd2VkUHJvcGVydGllcy5pbmRleE9mKGtleSkgPT09IC0xKSB7XG5cdCAgICAgICAgICBleHRyYVByb3BzLnB1c2goa2V5KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgICBpZiAoZXh0cmFQcm9wcy5sZW5ndGgpIHtcblx0ICAgICAgICB2YWxpZGF0b3JzV2l0aEV4dHJhUHJvcHNbbmFtZV0gPSBleHRyYVByb3BzO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICAgIGlmIChPYmplY3Qua2V5cyh2YWxpZGF0b3JzV2l0aEV4dHJhUHJvcHMpLmxlbmd0aCkge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoW1wiVmFsaWRhdG9ycyBhcmUgb25seSBhbGxvd2VkIHRvIGJlIGZ1bmN0aW9ucyBvciBvYmplY3RzIHRoYXQgaGF2ZSBcIiArIGFsbG93ZWRQcm9wZXJ0aWVzLmpvaW4oXCIsIFwiKSArIFwiLlwiLCBcIllvdSBwcm92aWRlZCBzb21lIGV4dHJhIHByb3BlcnRpZXM6IFwiICsgSlNPTi5zdHJpbmdpZnkodmFsaWRhdG9yc1dpdGhFeHRyYVByb3BzKV0uam9pbihcIiBcIikpO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRmb3JtbHlDdXN0b21WYWxpZGF0aW9uLiRpbmplY3QgPSBbXCJmb3JtbHlVdGlsXCIsIFwiJHFcIl07XG5cbi8qKiovIH0sXG4vKiAxMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5RmllbGQ7XG5cblx0LyoqXG5cdCAqIEBuZ2RvYyBkaXJlY3RpdmVcblx0ICogQG5hbWUgZm9ybWx5RmllbGRcblx0ICogQHJlc3RyaWN0IEFFXG5cdCAqL1xuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5RmllbGQoJGh0dHAsICRxLCAkY29tcGlsZSwgJHRlbXBsYXRlQ2FjaGUsIGZvcm1seUNvbmZpZywgZm9ybWx5VmFsaWRhdGlvbk1lc3NhZ2VzLCBmb3JtbHlBcGlDaGVjaywgZm9ybWx5VXRpbCwgZm9ybWx5VXNhYmlsaXR5LCBmb3JtbHlXYXJuKSB7XG5cdCAgdmFyIGFycmF5aWZ5ID0gZm9ybWx5VXRpbC5hcnJheWlmeTtcblxuXHQgIEZvcm1seUZpZWxkQ29udHJvbGxlci4kaW5qZWN0ID0gW1wiJHNjb3BlXCIsIFwiJHRpbWVvdXRcIiwgXCIkcGFyc2VcIiwgXCIkY29udHJvbGxlclwiXTtcblx0ICByZXR1cm4ge1xuXHQgICAgcmVzdHJpY3Q6IFwiQUVcIixcblx0ICAgIHRyYW5zY2x1ZGU6IHRydWUsXG5cdCAgICBzY29wZToge1xuXHQgICAgICBvcHRpb25zOiBcIj1cIixcblx0ICAgICAgbW9kZWw6IFwiPVwiLFxuXHQgICAgICBmb3JtSWQ6IFwiQFwiLCAvLyBUT0RPIHJlbW92ZSBmb3JtSWQgaW4gYSBicmVha2luZyByZWxlYXNlXG5cdCAgICAgIGluZGV4OiBcIj0/XCIsXG5cdCAgICAgIGZpZWxkczogXCI9P1wiLFxuXHQgICAgICBmb3JtU3RhdGU6IFwiPT9cIixcblx0ICAgICAgZm9ybTogXCI9P1wiIC8vIFRPRE8gcmVxdWlyZSBmb3JtIGluIGEgYnJlYWtpbmcgcmVsZWFzZVxuXHQgICAgfSxcblx0ICAgIGNvbnRyb2xsZXI6IEZvcm1seUZpZWxkQ29udHJvbGxlcixcblx0ICAgIGxpbms6IGZpZWxkTGlua1xuXHQgIH07XG5cblx0ICAvLyBAbmdJbmplY3Rcblx0ICBmdW5jdGlvbiBGb3JtbHlGaWVsZENvbnRyb2xsZXIoJHNjb3BlLCAkdGltZW91dCwgJHBhcnNlLCAkY29udHJvbGxlcikge1xuXHQgICAgLyoganNoaW50IG1heHN0YXRlbWVudHM6MzEgKi9cblx0ICAgIGlmICgkc2NvcGUub3B0aW9ucy5maWVsZEdyb3VwKSB7XG5cdCAgICAgIHNldHVwRmllbGRHcm91cCgpO1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cblx0ICAgIHZhciBmaWVsZFR5cGUgPSBnZXRGaWVsZFR5cGUoJHNjb3BlLm9wdGlvbnMpO1xuXHQgICAgc2ltcGxpZnlMaWZlKCRzY29wZS5vcHRpb25zKTtcblx0ICAgIG1lcmdlRmllbGRPcHRpb25zV2l0aFR5cGVEZWZhdWx0cygkc2NvcGUub3B0aW9ucywgZmllbGRUeXBlKTtcblx0ICAgIGV4dGVuZE9wdGlvbnNXaXRoRGVmYXVsdHMoJHNjb3BlLm9wdGlvbnMsICRzY29wZS5pbmRleCk7XG5cdCAgICBjaGVja0FwaSgkc2NvcGUub3B0aW9ucyk7XG5cdCAgICAvLyBzZXQgZmllbGQgaWQgdG8gbGluayBsYWJlbHMgYW5kIGZpZWxkc1xuXG5cdCAgICAvLyBpbml0YWxpemF0aW9uXG5cdCAgICBzZXRGaWVsZElkKCk7XG5cdCAgICBzZXREZWZhdWx0VmFsdWUoKTtcblx0ICAgIHNldEluaXRpYWxWYWx1ZSgpO1xuXHQgICAgcnVuRXhwcmVzc2lvbnMoKTtcblx0ICAgIGFkZE1vZGVsV2F0Y2hlcigkc2NvcGUsICRzY29wZS5vcHRpb25zKTtcblx0ICAgIGFkZFZhbGlkYXRpb25NZXNzYWdlcygkc2NvcGUub3B0aW9ucyk7XG5cdCAgICBpbnZva2VDb250cm9sbGVycygkc2NvcGUsICRzY29wZS5vcHRpb25zLCBmaWVsZFR5cGUpO1xuXG5cdCAgICAvLyBmdW5jdGlvbiBkZWZpbml0aW9uc1xuXHQgICAgZnVuY3Rpb24gcnVuRXhwcmVzc2lvbnMoKSB7XG5cdCAgICAgIC8vIG11c3QgcnVuIG9uIG5leHQgdGljayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZSBpcyBjb3JyZWN0LlxuXHQgICAgICAkdGltZW91dChmdW5jdGlvbiBydW5FeHByZXNzaW9uc09uTmV4dFRpY2soKSB7XG5cdCAgICAgICAgdmFyIGZpZWxkID0gJHNjb3BlLm9wdGlvbnM7XG5cdCAgICAgICAgdmFyIGN1cnJlbnRWYWx1ZSA9IHZhbHVlR2V0dGVyU2V0dGVyKCk7XG5cdCAgICAgICAgYW5ndWxhci5mb3JFYWNoKGZpZWxkLmV4cHJlc3Npb25Qcm9wZXJ0aWVzLCBmdW5jdGlvbiBydW5FeHByZXNzaW9uKGV4cHJlc3Npb24sIHByb3ApIHtcblx0ICAgICAgICAgIHZhciBzZXR0ZXIgPSAkcGFyc2UocHJvcCkuYXNzaWduO1xuXHQgICAgICAgICAgdmFyIHByb21pc2UgPSAkcS53aGVuKGZvcm1seVV0aWwuZm9ybWx5RXZhbCgkc2NvcGUsIGV4cHJlc3Npb24sIGN1cnJlbnRWYWx1ZSkpO1xuXHQgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIHNldEZpZWxkVmFsdWUodmFsdWUpIHtcblx0ICAgICAgICAgICAgc2V0dGVyKGZpZWxkLCB2YWx1ZSk7XG5cdCAgICAgICAgICB9KTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgfSk7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIHZhbHVlR2V0dGVyU2V0dGVyKG5ld1ZhbCkge1xuXHQgICAgICBpZiAoISRzY29wZS5tb2RlbCB8fCAhJHNjb3BlLm9wdGlvbnMua2V5KSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChuZXdWYWwpKSB7XG5cdCAgICAgICAgJHNjb3BlLm1vZGVsWyRzY29wZS5vcHRpb25zLmtleV0gPSBuZXdWYWw7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuICRzY29wZS5tb2RlbFskc2NvcGUub3B0aW9ucy5rZXldO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBzaW1wbGlmeUxpZmUob3B0aW9ucykge1xuXHQgICAgICAvLyBhZGQgYSBmZXcgZW1wdHkgb2JqZWN0cyAoaWYgdGhleSBkb24ndCBhbHJlYWR5IGV4aXN0KSBzbyB5b3UgZG9uJ3QgaGF2ZSB0byB1bmRlZmluZWQgY2hlY2sgZXZlcnl3aGVyZVxuXHQgICAgICBmb3JtbHlVdGlsLnJldmVyc2VEZWVwTWVyZ2Uob3B0aW9ucywge1xuXHQgICAgICAgIGRhdGE6IHt9LFxuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge30sXG5cdCAgICAgICAgdmFsaWRhdGlvbjoge31cblx0ICAgICAgfSk7XG5cdCAgICAgIC8vIGNyZWF0ZSAkc2NvcGUudG8gc28gdGVtcGxhdGUgYXV0aG9ycyBjYW4gcmVmZXJlbmNlIHRvIGluc3RlYWQgb2YgJHNjb3BlLm9wdGlvbnMudGVtcGxhdGVPcHRpb25zXG5cdCAgICAgICRzY29wZS50byA9ICRzY29wZS5vcHRpb25zLnRlbXBsYXRlT3B0aW9ucztcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gc2V0RmllbGRJZCgpIHtcblx0ICAgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbihmb3JtbHlDb25maWcuZXh0cmFzLmdldEZpZWxkSWQpKSB7XG5cdCAgICAgICAgJHNjb3BlLmlkID0gZm9ybWx5Q29uZmlnLmV4dHJhcy5nZXRGaWVsZElkKCRzY29wZS5vcHRpb25zLCAkc2NvcGUubW9kZWwsICRzY29wZSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdmFyIGZvcm1OYW1lID0gJHNjb3BlLmZvcm0gJiYgJHNjb3BlLmZvcm0uJG5hbWUgfHwgJHNjb3BlLmZvcm1JZDtcblx0ICAgICAgICAkc2NvcGUuaWQgPSBmb3JtbHlVdGlsLmdldEZpZWxkSWQoZm9ybU5hbWUsICRzY29wZS5vcHRpb25zLCAkc2NvcGUuaW5kZXgpO1xuXHQgICAgICB9XG5cdCAgICAgICRzY29wZS5vcHRpb25zLmlkID0gJHNjb3BlLmlkO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBzZXREZWZhdWx0VmFsdWUoKSB7XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZCgkc2NvcGUub3B0aW9ucy5kZWZhdWx0VmFsdWUpICYmICFhbmd1bGFyLmlzRGVmaW5lZCgkc2NvcGUubW9kZWxbJHNjb3BlLm9wdGlvbnMua2V5XSkpIHtcblx0ICAgICAgICAkc2NvcGUubW9kZWxbJHNjb3BlLm9wdGlvbnMua2V5XSA9ICRzY29wZS5vcHRpb25zLmRlZmF1bHRWYWx1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBzZXRJbml0aWFsVmFsdWUoKSB7XG5cdCAgICAgICRzY29wZS5vcHRpb25zLmluaXRpYWxWYWx1ZSA9ICRzY29wZS5tb2RlbCAmJiAkc2NvcGUubW9kZWxbJHNjb3BlLm9wdGlvbnMua2V5XTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gbWVyZ2VGaWVsZE9wdGlvbnNXaXRoVHlwZURlZmF1bHRzKG9wdGlvbnMsIHR5cGUpIHtcblx0ICAgICAgaWYgKHR5cGUpIHtcblx0ICAgICAgICBtZXJnZU9wdGlvbnMob3B0aW9ucywgdHlwZS5kZWZhdWx0T3B0aW9ucyk7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHByb3Blck9yZGVyID0gYXJyYXlpZnkob3B0aW9ucy5vcHRpb25zVHlwZXMpLnJldmVyc2UoKTsgLy8gc28gdGhlIHJpZ2h0IHRoaW5ncyBhcmUgb3ZlcnJpZGRlblxuXHQgICAgICBhbmd1bGFyLmZvckVhY2gocHJvcGVyT3JkZXIsIGZ1bmN0aW9uICh0eXBlTmFtZSkge1xuXHQgICAgICAgIG1lcmdlT3B0aW9ucyhvcHRpb25zLCBmb3JtbHlDb25maWcuZ2V0VHlwZSh0eXBlTmFtZSwgdHJ1ZSwgb3B0aW9ucykuZGVmYXVsdE9wdGlvbnMpO1xuXHQgICAgICB9KTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gbWVyZ2VPcHRpb25zKG9wdGlvbnMsIGV4dHJhT3B0aW9ucykge1xuXHQgICAgICBpZiAoZXh0cmFPcHRpb25zKSB7XG5cdCAgICAgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbihleHRyYU9wdGlvbnMpKSB7XG5cdCAgICAgICAgICBleHRyYU9wdGlvbnMgPSBleHRyYU9wdGlvbnMob3B0aW9ucyk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGZvcm1seVV0aWwucmV2ZXJzZURlZXBNZXJnZShvcHRpb25zLCBleHRyYU9wdGlvbnMpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGV4dGVuZE9wdGlvbnNXaXRoRGVmYXVsdHMob3B0aW9ucywgaW5kZXgpIHtcblx0ICAgICAgdmFyIGtleSA9IG9wdGlvbnMua2V5IHx8IGluZGV4IHx8IDA7XG5cdCAgICAgIGFuZ3VsYXIuZXh0ZW5kKG9wdGlvbnMsIHtcblx0ICAgICAgICAvLyBhdHRhY2ggdGhlIGtleSBpbiBjYXNlIHRoZSBmb3JtbHktZmllbGQgZGlyZWN0aXZlIGlzIHVzZWQgZGlyZWN0bHlcblx0ICAgICAgICBrZXk6IGtleSxcblx0ICAgICAgICB2YWx1ZTogdmFsdWVHZXR0ZXJTZXR0ZXIsXG5cdCAgICAgICAgcnVuRXhwcmVzc2lvbnM6IHJ1bkV4cHJlc3Npb25zLFxuXHQgICAgICAgIHJlc2V0TW9kZWw6IHJlc2V0TW9kZWwsXG5cdCAgICAgICAgdXBkYXRlSW5pdGlhbFZhbHVlOiB1cGRhdGVJbml0aWFsVmFsdWVcblx0ICAgICAgfSk7XG5cdCAgICB9XG5cblx0ICAgIC8vIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uc1xuXHQgICAgZnVuY3Rpb24gYWRkTW9kZWxXYXRjaGVyKHNjb3BlLCBvcHRpb25zKSB7XG5cdCAgICAgIGlmIChvcHRpb25zLm1vZGVsKSB7XG5cdCAgICAgICAgc2NvcGUuJHdhdGNoKFwib3B0aW9ucy5tb2RlbFwiLCBydW5FeHByZXNzaW9ucywgdHJ1ZSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gcmVzZXRNb2RlbCgpIHtcblx0ICAgICAgJHNjb3BlLm1vZGVsWyRzY29wZS5vcHRpb25zLmtleV0gPSAkc2NvcGUub3B0aW9ucy5pbml0aWFsVmFsdWU7XG5cdCAgICAgIGlmICgkc2NvcGUub3B0aW9ucy5mb3JtQ29udHJvbCkge1xuXHQgICAgICAgICRzY29wZS5vcHRpb25zLmZvcm1Db250cm9sLiRzZXRWaWV3VmFsdWUoJHNjb3BlLm1vZGVsWyRzY29wZS5vcHRpb25zLmtleV0pO1xuXHQgICAgICAgICRzY29wZS5vcHRpb25zLmZvcm1Db250cm9sLiRyZW5kZXIoKTtcblx0ICAgICAgICAkc2NvcGUub3B0aW9ucy5mb3JtQ29udHJvbC4kc2V0VW50b3VjaGVkKCk7XG5cdCAgICAgICAgJHNjb3BlLm9wdGlvbnMuZm9ybUNvbnRyb2wuJHNldFByaXN0aW5lKCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gdXBkYXRlSW5pdGlhbFZhbHVlKCkge1xuXHQgICAgICAkc2NvcGUub3B0aW9ucy5pbml0aWFsVmFsdWUgPSAkc2NvcGUubW9kZWxbJHNjb3BlLm9wdGlvbnMua2V5XTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gYWRkVmFsaWRhdGlvbk1lc3NhZ2VzKG9wdGlvbnMpIHtcblx0ICAgICAgb3B0aW9ucy52YWxpZGF0aW9uLm1lc3NhZ2VzID0gb3B0aW9ucy52YWxpZGF0aW9uLm1lc3NhZ2VzIHx8IHt9O1xuXHQgICAgICBhbmd1bGFyLmZvckVhY2goZm9ybWx5VmFsaWRhdGlvbk1lc3NhZ2VzLm1lc3NhZ2VzLCBmdW5jdGlvbiBjcmVhdGVGdW5jdGlvbkZvck1lc3NhZ2UoZXhwcmVzc2lvbiwgbmFtZSkge1xuXHQgICAgICAgIGlmICghb3B0aW9ucy52YWxpZGF0aW9uLm1lc3NhZ2VzW25hbWVdKSB7XG5cdCAgICAgICAgICBvcHRpb25zLnZhbGlkYXRpb24ubWVzc2FnZXNbbmFtZV0gPSBmdW5jdGlvbiBldmFsdWF0ZU1lc3NhZ2Uodmlld1ZhbHVlLCBtb2RlbFZhbHVlLCBzY29wZSkge1xuXHQgICAgICAgICAgICByZXR1cm4gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCBleHByZXNzaW9uLCBtb2RlbFZhbHVlLCB2aWV3VmFsdWUpO1xuXHQgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBpbnZva2VDb250cm9sbGVycyhzY29wZSkge1xuXHQgICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMV07XG5cdCAgICAgIHZhciB0eXBlID0gYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1syXTtcblxuXHQgICAgICBhbmd1bGFyLmZvckVhY2goW3R5cGUuY29udHJvbGxlciwgb3B0aW9ucy5jb250cm9sbGVyXSwgZnVuY3Rpb24gKGNvbnRyb2xsZXIpIHtcblx0ICAgICAgICBpZiAoY29udHJvbGxlcikge1xuXHQgICAgICAgICAgJGNvbnRyb2xsZXIoY29udHJvbGxlciwgeyAkc2NvcGU6IHNjb3BlIH0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSk7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIHNldHVwRmllbGRHcm91cCgpIHtcblx0ICAgICAgJHNjb3BlLm9wdGlvbnMub3B0aW9ucyA9ICRzY29wZS5vcHRpb25zLm9wdGlvbnMgfHwge307XG5cdCAgICAgICRzY29wZS5vcHRpb25zLm9wdGlvbnMuZm9ybVN0YXRlID0gJHNjb3BlLmZvcm1TdGF0ZTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICAvLyBsaW5rIGZ1bmN0aW9uXG5cdCAgZnVuY3Rpb24gZmllbGRMaW5rKHNjb3BlLCBlbCkge1xuXHQgICAgaWYgKHNjb3BlLm9wdGlvbnMuZmllbGRHcm91cCkge1xuXHQgICAgICBzZXRGaWVsZEdyb3VwVGVtcGxhdGUoKTtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXG5cdCAgICBhZGRBdHRyaWJ1dGVzKCk7XG5cdCAgICBhZGRDbGFzc2VzKCk7XG5cblx0ICAgIHZhciB0eXBlID0gZ2V0RmllbGRUeXBlKHNjb3BlLm9wdGlvbnMpO1xuXHQgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG5cdCAgICB2YXIgdGh1c2x5ID0gdGhpcztcblx0ICAgIGdldEZpZWxkVGVtcGxhdGUoc2NvcGUub3B0aW9ucykudGhlbihydW5NYW5pcHVsYXRvcnMoZm9ybWx5Q29uZmlnLnRlbXBsYXRlTWFuaXB1bGF0b3JzLnByZVdyYXBwZXIpKS50aGVuKHRyYW5zY2x1ZGVJbldyYXBwZXJzKHNjb3BlLm9wdGlvbnMpKS50aGVuKHJ1bk1hbmlwdWxhdG9ycyhmb3JtbHlDb25maWcudGVtcGxhdGVNYW5pcHVsYXRvcnMucG9zdFdyYXBwZXIpKS50aGVuKHNldEVsZW1lbnRUZW1wbGF0ZSkudGhlbih3YXRjaEZvcm1Db250cm9sKS50aGVuKGNhbGxMaW5rRnVuY3Rpb25zKVtcImNhdGNoXCJdKGZ1bmN0aW9uIChlcnJvcikge1xuXHQgICAgICBmb3JtbHlXYXJuKFwidGhlcmUtd2FzLWEtcHJvYmxlbS1zZXR0aW5nLXRoZS10ZW1wbGF0ZS1mb3ItdGhpcy1maWVsZFwiLCBcIlRoZXJlIHdhcyBhIHByb2JsZW0gc2V0dGluZyB0aGUgdGVtcGxhdGUgZm9yIHRoaXMgZmllbGQgXCIsIHNjb3BlLm9wdGlvbnMsIGVycm9yKTtcblx0ICAgIH0pO1xuXG5cdCAgICBmdW5jdGlvbiBzZXRGaWVsZEdyb3VwVGVtcGxhdGUoKSB7XG5cdCAgICAgIGNoZWNrRmllbGRHcm91cEFwaShzY29wZS5vcHRpb25zKTtcblx0ICAgICAgZWwuYWRkQ2xhc3MoXCJmb3JtbHktZmllbGQtZ3JvdXBcIik7XG5cdCAgICAgIHZhciBleHRyYUF0dHJpYnV0ZXMgPSBcIlwiO1xuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy5lbGVtZW50QXR0cmlidXRlcykge1xuXHQgICAgICAgIGV4dHJhQXR0cmlidXRlcyA9IE9iamVjdC5rZXlzKHNjb3BlLm9wdGlvbnMuZWxlbWVudEF0dHJpYnV0ZXMpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICAgICAgICByZXR1cm4gXCJcIiArIGtleSArIFwiPVxcXCJcIiArIHNjb3BlLm9wdGlvbnMuZWxlbWVudEF0dHJpYnV0ZXNba2V5XSArIFwiXFxcIlwiO1xuXHQgICAgICAgIH0pLmpvaW4oXCIgXCIpO1xuXHQgICAgICB9XG5cdCAgICAgIHNldEVsZW1lbnRUZW1wbGF0ZShcIlxcbiAgICAgICAgICA8Zm9ybWx5LWZvcm0gbW9kZWw9XFxcIm1vZGVsXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzPVxcXCJvcHRpb25zLmZpZWxkR3JvdXBcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPVxcXCJvcHRpb25zLm9wdGlvbnNcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3JtPVxcXCJvcHRpb25zLmZvcm1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiXCIgKyBzY29wZS5vcHRpb25zLmNsYXNzTmFtZSArIFwiXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgXCIgKyBleHRyYUF0dHJpYnV0ZXMgKyBcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgaXMtZmllbGQtZ3JvdXA+XFxuICAgICAgICAgIDwvZm9ybWx5LWZvcm0+XFxuICAgICAgICBcIik7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGFkZEF0dHJpYnV0ZXMoKSB7XG5cdCAgICAgIGlmIChzY29wZS5vcHRpb25zLmVsZW1lbnRBdHRyaWJ1dGVzKSB7XG5cdCAgICAgICAgZWwuYXR0cihzY29wZS5vcHRpb25zLmVsZW1lbnRBdHRyaWJ1dGVzKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBhZGRDbGFzc2VzKCkge1xuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy5jbGFzc05hbWUpIHtcblx0ICAgICAgICBlbC5hZGRDbGFzcyhzY29wZS5vcHRpb25zLmNsYXNzTmFtZSk7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHNjb3BlLm9wdGlvbnMudHlwZSkge1xuXHQgICAgICAgIGVsLmFkZENsYXNzKFwiZm9ybWx5LWZpZWxkLVwiICsgc2NvcGUub3B0aW9ucy50eXBlKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBzZXRFbGVtZW50VGVtcGxhdGUodGVtcGxhdGVTdHJpbmcpIHtcblx0ICAgICAgZWwuaHRtbChhc0h0bWwodGVtcGxhdGVTdHJpbmcpKTtcblx0ICAgICAgJGNvbXBpbGUoZWwuY29udGVudHMoKSkoc2NvcGUpO1xuXHQgICAgICByZXR1cm4gdGVtcGxhdGVTdHJpbmc7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIHdhdGNoRm9ybUNvbnRyb2wodGVtcGxhdGVTdHJpbmcpIHtcblx0ICAgICAgdmFyIHN0b3BXYXRjaGluZ0ZpZWxkID0gYW5ndWxhci5ub29wO1xuXHQgICAgICB2YXIgc3RvcFdhdGNoaW5nU2hvd0Vycm9yID0gYW5ndWxhci5ub29wO1xuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy5ub0Zvcm1Db250cm9sKSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciB0ZW1wbGF0ZUVsID0gYW5ndWxhci5lbGVtZW50KFwiPGRpdj5cIiArIHRlbXBsYXRlU3RyaW5nICsgXCI8L2Rpdj5cIik7XG5cdCAgICAgIHZhciBuZ01vZGVsTm9kZSA9IHRlbXBsYXRlRWxbMF0ucXVlcnlTZWxlY3RvcihcIltuZy1tb2RlbF0sW2RhdGEtbmctbW9kZWxdXCIpO1xuXHQgICAgICBpZiAobmdNb2RlbE5vZGUgJiYgbmdNb2RlbE5vZGUuZ2V0QXR0cmlidXRlKFwibmFtZVwiKSkge1xuXHQgICAgICAgIHdhdGNoRmllbGROYW1lT3JFeGlzdGVuY2UobmdNb2RlbE5vZGUuZ2V0QXR0cmlidXRlKFwibmFtZVwiKSk7XG5cdCAgICAgIH1cblxuXHQgICAgICBmdW5jdGlvbiB3YXRjaEZpZWxkTmFtZU9yRXhpc3RlbmNlKG5hbWUpIHtcblx0ICAgICAgICB2YXIgbmFtZUV4cHJlc3Npb25SZWdleCA9IC9cXHtcXHsoLio/KX19Lztcblx0ICAgICAgICB2YXIgbmFtZUV4cHJlc3Npb24gPSBuYW1lRXhwcmVzc2lvblJlZ2V4LmV4ZWMobmFtZSk7XG5cdCAgICAgICAgaWYgKG5hbWVFeHByZXNzaW9uKSB7XG5cdCAgICAgICAgICB3YXRjaEZpZWxkTmFtZShuYW1lRXhwcmVzc2lvblsxXSk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHdhdGNoRmllbGRFeGlzdGVuY2UobmFtZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gd2F0Y2hGaWVsZE5hbWUoZXhwcmVzc2lvbikge1xuXHQgICAgICAgIHNjb3BlLiR3YXRjaChleHByZXNzaW9uLCBmdW5jdGlvbiBvbmVGaWVsZE5hbWVDaGFuZ2UobmFtZSkge1xuXHQgICAgICAgICAgaWYgKG5hbWUpIHtcblx0ICAgICAgICAgICAgc3RvcFdhdGNoaW5nRmllbGQoKTtcblx0ICAgICAgICAgICAgd2F0Y2hGaWVsZEV4aXN0ZW5jZShuYW1lKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIHdhdGNoRmllbGRFeGlzdGVuY2UobmFtZSkge1xuXHQgICAgICAgIHN0b3BXYXRjaGluZ0ZpZWxkID0gc2NvcGUuJHdhdGNoKFwiZm9ybVtcXFwiXCIgKyBuYW1lICsgXCJcXFwiXVwiLCBmdW5jdGlvbiBmb3JtQ29udHJvbENoYW5nZShmb3JtQ29udHJvbCkge1xuXHQgICAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XG5cdCAgICAgICAgICAgIHNjb3BlLmZjID0gZm9ybUNvbnRyb2w7IC8vIHNob3J0Y3V0IGZvciB0ZW1wbGF0ZSBhdXRob3JzXG5cdCAgICAgICAgICAgIHNjb3BlLm9wdGlvbnMuZm9ybUNvbnRyb2wgPSBmb3JtQ29udHJvbDtcblx0ICAgICAgICAgICAgc3RvcFdhdGNoaW5nU2hvd0Vycm9yKCk7XG5cdCAgICAgICAgICAgIGFkZFNob3dNZXNzYWdlc1dhdGNoZXIoKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIGFkZFNob3dNZXNzYWdlc1dhdGNoZXIoKSB7XG5cdCAgICAgICAgc3RvcFdhdGNoaW5nU2hvd0Vycm9yID0gc2NvcGUuJHdhdGNoKGZ1bmN0aW9uIHdhdGNoU2hvd1ZhbGlkYXRpb25DaGFuZ2UoKSB7XG5cdCAgICAgICAgICB2YXIgY3VzdG9tRXhwcmVzc2lvbiA9IGZvcm1seUNvbmZpZy5leHRyYXMuZXJyb3JFeGlzdHNBbmRTaG91bGRCZVZpc2libGVFeHByZXNzaW9uO1xuXHQgICAgICAgICAgdmFyIG9wdGlvbnMgPSBzY29wZS5vcHRpb25zO1xuXHQgICAgICAgICAgdmFyIGZjID0gc2NvcGUuZmM7XG5cblx0ICAgICAgICAgIGlmICghZmMuJGludmFsaWQpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucy52YWxpZGF0aW9uLnNob3cgPT09IFwiYm9vbGVhblwiKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnZhbGlkYXRpb24uc2hvdztcblx0ICAgICAgICAgIH0gZWxzZSBpZiAoY3VzdG9tRXhwcmVzc2lvbikge1xuXHQgICAgICAgICAgICByZXR1cm4gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCBjdXN0b21FeHByZXNzaW9uLCBmYy4kbW9kZWxWYWx1ZSwgZmMuJHZpZXdWYWx1ZSk7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICB2YXIgbm9Ub3VjaGVkQnV0RGlydHkgPSBhbmd1bGFyLmlzVW5kZWZpbmVkKGZjLiR0b3VjaGVkKSAmJiBmYy4kZGlydHk7XG5cdCAgICAgICAgICAgIHJldHVybiBzY29wZS5mYy4kdG91Y2hlZCB8fCBub1RvdWNoZWRCdXREaXJ0eTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9LCBmdW5jdGlvbiBvblNob3dWYWxpZGF0aW9uQ2hhbmdlKHNob3cpIHtcblx0ICAgICAgICAgIHNjb3BlLm9wdGlvbnMudmFsaWRhdGlvbi5lcnJvckV4aXN0c0FuZFNob3VsZEJlVmlzaWJsZSA9IHNob3c7XG5cdCAgICAgICAgICBzY29wZS5zaG93RXJyb3IgPSBzaG93OyAvLyBzaG9ydGN1dCBmb3IgdGVtcGxhdGUgYXV0aG9yc1xuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGNhbGxMaW5rRnVuY3Rpb25zKCkge1xuXHQgICAgICBpZiAodHlwZSAmJiB0eXBlLmxpbmspIHtcblx0ICAgICAgICB0eXBlLmxpbmsuYXBwbHkodGh1c2x5LCBhcmdzKTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy5saW5rKSB7XG5cdCAgICAgICAgc2NvcGUub3B0aW9ucy5saW5rLmFwcGx5KHRodXNseSwgYXJncyk7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gcnVuTWFuaXB1bGF0b3JzKG1hbmlwdWxhdG9ycykge1xuXHQgICAgICByZXR1cm4gZnVuY3Rpb24gcnVuTWFuaXB1bGF0b3JzT25UZW1wbGF0ZSh0ZW1wbGF0ZSkge1xuXHQgICAgICAgIHZhciBjaGFpbiA9ICRxLndoZW4odGVtcGxhdGUpO1xuXHQgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChtYW5pcHVsYXRvcnMsIGZ1bmN0aW9uIChtYW5pcHVsYXRvcikge1xuXHQgICAgICAgICAgY2hhaW4gPSBjaGFpbi50aGVuKGZ1bmN0aW9uICh0ZW1wbGF0ZSkge1xuXHQgICAgICAgICAgICByZXR1cm4gJHEud2hlbihtYW5pcHVsYXRvcih0ZW1wbGF0ZSwgc2NvcGUub3B0aW9ucywgc2NvcGUpKS50aGVuKGZ1bmN0aW9uIChuZXdUZW1wbGF0ZSkge1xuXHQgICAgICAgICAgICAgIHJldHVybiBhbmd1bGFyLmlzU3RyaW5nKG5ld1RlbXBsYXRlKSA/IG5ld1RlbXBsYXRlIDogYXNIdG1sKG5ld1RlbXBsYXRlKTtcblx0ICAgICAgICAgICAgfSk7XG5cdCAgICAgICAgICB9KTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgICByZXR1cm4gY2hhaW47XG5cdCAgICAgIH07XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgLy8gc3RhdGVsZXNzIHV0aWwgZnVuY3Rpb25zXG5cdCAgZnVuY3Rpb24gYXNIdG1sKGVsKSB7XG5cdCAgICB2YXIgd3JhcHBlciA9IGFuZ3VsYXIuZWxlbWVudChcIjxhPjwvYT5cIik7XG5cdCAgICByZXR1cm4gd3JhcHBlci5hcHBlbmQoZWwpLmh0bWwoKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBnZXRGaWVsZFR5cGUob3B0aW9ucykge1xuXHQgICAgcmV0dXJuIG9wdGlvbnMudHlwZSAmJiBmb3JtbHlDb25maWcuZ2V0VHlwZShvcHRpb25zLnR5cGUpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldEZpZWxkVGVtcGxhdGUob3B0aW9ucykge1xuXHQgICAgZnVuY3Rpb24gZnJvbU9wdGlvbnNPclR5cGUoa2V5LCB0eXBlKSB7XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChvcHRpb25zW2tleV0pKSB7XG5cdCAgICAgICAgcmV0dXJuIG9wdGlvbnNba2V5XTtcblx0ICAgICAgfSBlbHNlIGlmICh0eXBlICYmIGFuZ3VsYXIuaXNEZWZpbmVkKHR5cGVba2V5XSkpIHtcblx0ICAgICAgICByZXR1cm4gdHlwZVtrZXldO1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIHZhciB0eXBlID0gZm9ybWx5Q29uZmlnLmdldFR5cGUob3B0aW9ucy50eXBlLCB0cnVlLCBvcHRpb25zKTtcblx0ICAgIHZhciB0ZW1wbGF0ZSA9IGZyb21PcHRpb25zT3JUeXBlKFwidGVtcGxhdGVcIiwgdHlwZSk7XG5cdCAgICB2YXIgdGVtcGxhdGVVcmwgPSBmcm9tT3B0aW9uc09yVHlwZShcInRlbXBsYXRlVXJsXCIsIHR5cGUpO1xuXHQgICAgaWYgKGFuZ3VsYXIuaXNVbmRlZmluZWQodGVtcGxhdGUpICYmICF0ZW1wbGF0ZVVybCkge1xuXHQgICAgICB0aHJvdyBmb3JtbHlVc2FiaWxpdHkuZ2V0RmllbGRFcnJvcihcInR5cGUtdHlwZS1oYXMtbm8tdGVtcGxhdGVcIiwgXCJUeXBlICdcIiArIG9wdGlvbnMudHlwZSArIFwiJyBoYXMgbm90IHRlbXBsYXRlLiBPbiBlbGVtZW50OlwiLCBvcHRpb25zKTtcblx0ICAgIH1cblxuXHQgICAgcmV0dXJuIGdldFRlbXBsYXRlKHRlbXBsYXRlVXJsIHx8IHRlbXBsYXRlLCBhbmd1bGFyLmlzVW5kZWZpbmVkKHRlbXBsYXRlKSwgb3B0aW9ucyk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0VGVtcGxhdGUodGVtcGxhdGUsIGlzVXJsLCBvcHRpb25zKSB7XG5cdCAgICB2YXIgdGVtcGxhdGVQcm9taXNlID0gdW5kZWZpbmVkO1xuXHQgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbih0ZW1wbGF0ZSkpIHtcblx0ICAgICAgdGVtcGxhdGVQcm9taXNlID0gJHEud2hlbih0ZW1wbGF0ZShvcHRpb25zKSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0ZW1wbGF0ZVByb21pc2UgPSAkcS53aGVuKHRlbXBsYXRlKTtcblx0ICAgIH1cblxuXHQgICAgaWYgKCFpc1VybCkge1xuXHQgICAgICByZXR1cm4gdGVtcGxhdGVQcm9taXNlO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdmFyIF9yZXQgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBodHRwT3B0aW9ucyA9IHsgY2FjaGU6ICR0ZW1wbGF0ZUNhY2hlIH07XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIHY6IHRlbXBsYXRlUHJvbWlzZS50aGVuKGZ1bmN0aW9uICh1cmwpIHtcblx0ICAgICAgICAgICAgcmV0dXJuICRodHRwLmdldCh1cmwsIGh0dHBPcHRpb25zKTtcblx0ICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG5cdCAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuXHQgICAgICAgICAgfSlbXCJjYXRjaFwiXShmdW5jdGlvbiBoYW5kbGVFcnJvckdldHRpbmdBVGVtcGxhdGUoZXJyb3IpIHtcblx0ICAgICAgICAgICAgZm9ybWx5V2FybihcInByb2JsZW0tbG9hZGluZy10ZW1wbGF0ZS1mb3ItdGVtcGxhdGV1cmxcIiwgXCJQcm9ibGVtIGxvYWRpbmcgdGVtcGxhdGUgZm9yIFwiICsgdGVtcGxhdGUsIGVycm9yKTtcblx0ICAgICAgICAgIH0pXG5cdCAgICAgICAgfTtcblx0ICAgICAgfSkoKTtcblxuXHQgICAgICBpZiAodHlwZW9mIF9yZXQgPT09IFwib2JqZWN0XCIpIHtcblx0ICAgICAgICByZXR1cm4gX3JldC52O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gdHJhbnNjbHVkZUluV3JhcHBlcnMob3B0aW9ucykge1xuXHQgICAgdmFyIHdyYXBwZXIgPSBnZXRXcmFwcGVyT3B0aW9uKG9wdGlvbnMpO1xuXG5cdCAgICByZXR1cm4gZnVuY3Rpb24gdHJhbnNjbHVkZVRlbXBsYXRlKHRlbXBsYXRlKSB7XG5cdCAgICAgIGlmICghd3JhcHBlci5sZW5ndGgpIHtcblx0ICAgICAgICByZXR1cm4gJHEud2hlbih0ZW1wbGF0ZSk7XG5cdCAgICAgIH1cblxuXHQgICAgICB3cmFwcGVyLmZvckVhY2goZnVuY3Rpb24gKHdyYXBwZXIpIHtcblx0ICAgICAgICBmb3JtbHlVc2FiaWxpdHkuY2hlY2tXcmFwcGVyKHdyYXBwZXIsIG9wdGlvbnMpO1xuXHQgICAgICAgIHdyYXBwZXIudmFsaWRhdGVPcHRpb25zICYmIHdyYXBwZXIudmFsaWRhdGVPcHRpb25zKG9wdGlvbnMpO1xuXHQgICAgICAgIHJ1bkFwaUNoZWNrKHdyYXBwZXIsIG9wdGlvbnMpO1xuXHQgICAgICB9KTtcblx0ICAgICAgdmFyIHByb21pc2VzID0gd3JhcHBlci5tYXAoZnVuY3Rpb24gKHcpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0VGVtcGxhdGUody50ZW1wbGF0ZSB8fCB3LnRlbXBsYXRlVXJsLCAhdy50ZW1wbGF0ZSk7XG5cdCAgICAgIH0pO1xuXHQgICAgICByZXR1cm4gJHEuYWxsKHByb21pc2VzKS50aGVuKGZ1bmN0aW9uICh3cmFwcGVyc1RlbXBsYXRlcykge1xuXHQgICAgICAgIHdyYXBwZXJzVGVtcGxhdGVzLmZvckVhY2goZnVuY3Rpb24gKHdyYXBwZXJUZW1wbGF0ZSwgaW5kZXgpIHtcblx0ICAgICAgICAgIGZvcm1seVVzYWJpbGl0eS5jaGVja1dyYXBwZXJUZW1wbGF0ZSh3cmFwcGVyVGVtcGxhdGUsIHdyYXBwZXJbaW5kZXhdKTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgICB3cmFwcGVyc1RlbXBsYXRlcy5yZXZlcnNlKCk7IC8vIHdyYXBwZXIgMCBpcyB3cmFwcGVkIGluIHdyYXBwZXIgMSBhbmQgc28gb24uLi5cblx0ICAgICAgICB2YXIgdG90YWxXcmFwcGVyID0gd3JhcHBlcnNUZW1wbGF0ZXMuc2hpZnQoKTtcblx0ICAgICAgICB3cmFwcGVyc1RlbXBsYXRlcy5mb3JFYWNoKGZ1bmN0aW9uICh3cmFwcGVyVGVtcGxhdGUpIHtcblx0ICAgICAgICAgIHRvdGFsV3JhcHBlciA9IGRvVHJhbnNjbHVzaW9uKHRvdGFsV3JhcHBlciwgd3JhcHBlclRlbXBsYXRlKTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgICByZXR1cm4gZG9UcmFuc2NsdXNpb24odG90YWxXcmFwcGVyLCB0ZW1wbGF0ZSk7XG5cdCAgICAgIH0pO1xuXHQgICAgfTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBkb1RyYW5zY2x1c2lvbih3cmFwcGVyLCB0ZW1wbGF0ZSkge1xuXHQgICAgdmFyIHN1cGVyV3JhcHBlciA9IGFuZ3VsYXIuZWxlbWVudChcIjxhPjwvYT5cIik7IC8vIHRoaXMgYWxsb3dzIHBlb3BsZSBub3QgaGF2ZSB0byBoYXZlIGEgc2luZ2xlIHJvb3QgaW4gd3JhcHBlcnNcblx0ICAgIHN1cGVyV3JhcHBlci5hcHBlbmQod3JhcHBlcik7XG5cdCAgICB2YXIgdHJhbnNjbHVkZUVsID0gc3VwZXJXcmFwcGVyLmZpbmQoXCJmb3JtbHktdHJhbnNjbHVkZVwiKTtcblx0ICAgIGlmICghdHJhbnNjbHVkZUVsLmxlbmd0aCkge1xuXHQgICAgICAvL3RyeSBpdCB1c2luZyBvdXIgY3VzdG9tIGZpbmQgZnVuY3Rpb25cblx0ICAgICAgdHJhbnNjbHVkZUVsID0gZm9ybWx5VXRpbC5maW5kQnlOb2RlTmFtZShzdXBlcldyYXBwZXIsIFwiZm9ybWx5LXRyYW5zY2x1ZGVcIik7XG5cdCAgICB9XG5cdCAgICB0cmFuc2NsdWRlRWwucmVwbGFjZVdpdGgodGVtcGxhdGUpO1xuXHQgICAgcmV0dXJuIHN1cGVyV3JhcHBlci5odG1sKCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0V3JhcHBlck9wdGlvbihvcHRpb25zKSB7XG5cdCAgICB2YXIgd3JhcHBlciA9IG9wdGlvbnMud3JhcHBlcjtcblx0ICAgIC8vIGV4cGxpY2l0IG51bGwgbWVhbnMgbm8gd3JhcHBlclxuXHQgICAgaWYgKHdyYXBwZXIgPT09IG51bGwpIHtcblx0ICAgICAgcmV0dXJuIFtdO1xuXHQgICAgfVxuXG5cdCAgICAvLyBub3RoaW5nIHNwZWNpZmllZCBtZWFucyB1c2UgdGhlIGRlZmF1bHQgd3JhcHBlciBmb3IgdGhlIHR5cGVcblx0ICAgIGlmICghd3JhcHBlcikge1xuXHQgICAgICAvLyBnZXQgYWxsIHdyYXBwZXJzIHRoYXQgc3BlY2lmeSB0aGV5IGFwcGx5IHRvIHRoaXMgdHlwZVxuXHQgICAgICB3cmFwcGVyID0gYXJyYXlpZnkoZm9ybWx5Q29uZmlnLmdldFdyYXBwZXJCeVR5cGUob3B0aW9ucy50eXBlKSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB3cmFwcGVyID0gYXJyYXlpZnkod3JhcHBlcikubWFwKGZvcm1seUNvbmZpZy5nZXRXcmFwcGVyKTtcblx0ICAgIH1cblxuXHQgICAgLy8gZ2V0IGFsbCB3cmFwcGVycyBmb3IgdGhhdCB0aGlzIHR5cGUgc3BlY2lmaWVkIHRoYXQgaXQgdXNlcy5cblx0ICAgIHZhciB0eXBlID0gZm9ybWx5Q29uZmlnLmdldFR5cGUob3B0aW9ucy50eXBlLCB0cnVlLCBvcHRpb25zKTtcblx0ICAgIGlmICh0eXBlICYmIHR5cGUud3JhcHBlcikge1xuXHQgICAgICB2YXIgdHlwZVdyYXBwZXJzID0gYXJyYXlpZnkodHlwZS53cmFwcGVyKS5tYXAoZm9ybWx5Q29uZmlnLmdldFdyYXBwZXIpO1xuXHQgICAgICB3cmFwcGVyID0gd3JhcHBlci5jb25jYXQodHlwZVdyYXBwZXJzKTtcblx0ICAgIH1cblxuXHQgICAgLy8gYWRkIHRoZSBkZWZhdWx0IHdyYXBwZXIgbGFzdFxuXHQgICAgdmFyIGRlZmF1bHRXcmFwcGVyID0gZm9ybWx5Q29uZmlnLmdldFdyYXBwZXIoKTtcblx0ICAgIGlmIChkZWZhdWx0V3JhcHBlcikge1xuXHQgICAgICB3cmFwcGVyLnB1c2goZGVmYXVsdFdyYXBwZXIpO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIHdyYXBwZXI7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gY2hlY2tBcGkob3B0aW9ucykge1xuXHQgICAgZm9ybWx5QXBpQ2hlY2tbXCJ0aHJvd1wiXShmb3JtbHlBcGlDaGVjay5mb3JtbHlGaWVsZE9wdGlvbnMsIG9wdGlvbnMsIHtcblx0ICAgICAgcHJlZml4OiBcImZvcm1seS1maWVsZCBkaXJlY3RpdmVcIixcblx0ICAgICAgdXJsOiBcImZvcm1seS1maWVsZC1kaXJlY3RpdmUtdmFsaWRhdGlvbi1mYWlsZWRcIlxuXHQgICAgfSk7XG5cdCAgICAvLyB2YWxpZGF0ZSB3aXRoIHRoZSB0eXBlXG5cdCAgICB2YXIgdHlwZSA9IG9wdGlvbnMudHlwZSAmJiBmb3JtbHlDb25maWcuZ2V0VHlwZShvcHRpb25zLnR5cGUpO1xuXHQgICAgaWYgKHR5cGUpIHtcblx0ICAgICAgaWYgKHR5cGUudmFsaWRhdGVPcHRpb25zKSB7XG5cdCAgICAgICAgdHlwZS52YWxpZGF0ZU9wdGlvbnMob3B0aW9ucyk7XG5cdCAgICAgIH1cblx0ICAgICAgcnVuQXBpQ2hlY2sodHlwZSwgb3B0aW9ucyk7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gY2hlY2tGaWVsZEdyb3VwQXBpKG9wdGlvbnMpIHtcblx0ICAgIGZvcm1seUFwaUNoZWNrW1widGhyb3dcIl0oZm9ybWx5QXBpQ2hlY2suZmllbGRHcm91cCwgb3B0aW9ucywge1xuXHQgICAgICBwcmVmaXg6IFwiZm9ybWx5LWZpZWxkIGRpcmVjdGl2ZVwiLFxuXHQgICAgICB1cmw6IFwiZm9ybWx5LWZpZWxkLWRpcmVjdGl2ZS12YWxpZGF0aW9uLWZhaWxlZFwiXG5cdCAgICB9KTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBydW5BcGlDaGVjayhfcmVmLCBvcHRpb25zKSB7XG5cdCAgICB2YXIgYXBpQ2hlY2sgPSBfcmVmLmFwaUNoZWNrO1xuXHQgICAgdmFyIGFwaUNoZWNrSW5zdGFuY2UgPSBfcmVmLmFwaUNoZWNrSW5zdGFuY2U7XG5cdCAgICB2YXIgYXBpQ2hlY2tGdW5jdGlvbiA9IF9yZWYuYXBpQ2hlY2tGdW5jdGlvbjtcblx0ICAgIHZhciBhcGlDaGVja09wdGlvbnMgPSBfcmVmLmFwaUNoZWNrT3B0aW9ucztcblxuXHQgICAgaWYgKCFhcGlDaGVjaykge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICB2YXIgaW5zdGFuY2UgPSBhcGlDaGVja0luc3RhbmNlIHx8IGZvcm1seUFwaUNoZWNrO1xuXHQgICAgdmFyIGZuID0gYXBpQ2hlY2tGdW5jdGlvbiB8fCBcIndhcm5cIjtcblx0ICAgIHZhciBzaGFwZSA9IGluc3RhbmNlLnNoYXBlKGFwaUNoZWNrKTtcblx0ICAgIGluc3RhbmNlW2ZuXShzaGFwZSwgb3B0aW9ucywgYXBpQ2hlY2tPcHRpb25zIHx8IHtcblx0ICAgICAgcHJlZml4OiBcImZvcm1seS1maWVsZCBcIiArIG5hbWUsXG5cdCAgICAgIHVybDogZm9ybWx5QXBpQ2hlY2suY29uZmlnLm91dHB1dC5kb2NzQmFzZVVybCArIFwiZm9ybWx5LWZpZWxkLXR5cGUtYXBpY2hlY2stZmFpbGVkXCJcblx0ICAgIH0pO1xuXHQgIH1cblx0fVxuXHRmb3JtbHlGaWVsZC4kaW5qZWN0ID0gW1wiJGh0dHBcIiwgXCIkcVwiLCBcIiRjb21waWxlXCIsIFwiJHRlbXBsYXRlQ2FjaGVcIiwgXCJmb3JtbHlDb25maWdcIiwgXCJmb3JtbHlWYWxpZGF0aW9uTWVzc2FnZXNcIiwgXCJmb3JtbHlBcGlDaGVja1wiLCBcImZvcm1seVV0aWxcIiwgXCJmb3JtbHlVc2FiaWxpdHlcIiwgXCJmb3JtbHlXYXJuXCJdO1xuXG4vKioqLyB9LFxuLyogMTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5Rm9jdXM7XG5cblx0Ly8gQG5nSW5qZWN0XG5cdGZ1bmN0aW9uIGZvcm1seUZvY3VzKCR0aW1lb3V0LCAkZG9jdW1lbnQpIHtcblx0ICAvKiBqc2hpbnQgLVcwNTIgKi9cblx0ICByZXR1cm4ge1xuXHQgICAgcmVzdHJpY3Q6IFwiQVwiLFxuXHQgICAgbGluazogZnVuY3Rpb24gZm9ybWx5Rm9jdXNMaW5rKHNjb3BlLCBlbGVtZW50LCBhdHRycykge1xuXHQgICAgICB2YXIgcHJldmlvdXNFbCA9IG51bGw7XG5cdCAgICAgIHZhciBlbCA9IGVsZW1lbnRbMF07XG5cdCAgICAgIHZhciBkb2MgPSAkZG9jdW1lbnRbMF07XG5cdCAgICAgIGF0dHJzLiRvYnNlcnZlKFwiZm9ybWx5Rm9jdXNcIiwgZnVuY3Rpb24gcmVzcG9uZFRvRm9jdXNFeHByZXNzaW9uQ2hhbmdlKHZhbHVlKSB7XG5cdCAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuXHQgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24gc2V0RWxlbWVudEZvY3VzKCkge1xuXHQgICAgICAgICAgICBwcmV2aW91c0VsID0gZG9jLmFjdGl2ZUVsZW1lbnQ7XG5cdCAgICAgICAgICAgIGVsLmZvY3VzKCk7XG5cdCAgICAgICAgICB9LCB+IH5hdHRycy5mb2N1c1dhaXQpO1xuXHQgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IFwiZmFsc2VcIikge1xuXHQgICAgICAgICAgaWYgKGRvYy5hY3RpdmVFbGVtZW50ID09PSBlbCkge1xuXHQgICAgICAgICAgICBlbC5ibHVyKCk7XG5cdCAgICAgICAgICAgIGlmIChhdHRycy5oYXNPd25Qcm9wZXJ0eShcInJlZm9jdXNcIikgJiYgcHJldmlvdXNFbCkge1xuXHQgICAgICAgICAgICAgIHByZXZpb3VzRWwuZm9jdXMoKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfSk7XG5cdCAgICB9XG5cdCAgfTtcblx0fVxuXHRmb3JtbHlGb2N1cy4kaW5qZWN0ID0gW1wiJHRpbWVvdXRcIiwgXCIkZG9jdW1lbnRcIl07XG5cbi8qKiovIH0sXG4vKiAxMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIF90b0NvbnN1bWFibGVBcnJheSA9IGZ1bmN0aW9uIChhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgeyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfSBlbHNlIHsgcmV0dXJuIEFycmF5LmZyb20oYXJyKTsgfSB9O1xuXG5cdHZhciBfc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5Rm9ybTtcblxuXHQvKipcblx0ICogQG5nZG9jIGRpcmVjdGl2ZVxuXHQgKiBAbmFtZSBmb3JtbHlGb3JtXG5cdCAqIEByZXN0cmljdCBFXG5cdCAqL1xuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5Rm9ybShmb3JtbHlVc2FiaWxpdHksICRwYXJzZSwgZm9ybWx5QXBpQ2hlY2ssIGZvcm1seUNvbmZpZykge1xuXHQgIHZhciBjdXJyZW50Rm9ybUlkID0gMTtcblx0ICByZXR1cm4ge1xuXHQgICAgcmVzdHJpY3Q6IFwiRVwiLFxuXHQgICAgdGVtcGxhdGU6IGZ1bmN0aW9uIGZvcm1seUZvcm1HZXRUZW1wbGF0ZShlbCwgYXR0cnMpIHtcblx0ICAgICAgLyoganNoaW50IC1XMDMzICovIC8vIHRoaXMgYmVjYXVzZSBqc2hpbnQgaXMgYnJva2VuIEkgZ3Vlc3MuLi5cblx0ICAgICAgdmFyIHJvb3RFbCA9IGdldFJvb3RFbCgpO1xuXHQgICAgICB2YXIgZmllbGRSb290RWwgPSBnZXRGaWVsZFJvb3RFbCgpO1xuXHQgICAgICB2YXIgZm9ybUlkID0gXCJmb3JtbHlfXCIgKyBjdXJyZW50Rm9ybUlkKys7XG5cdCAgICAgIHZhciBwYXJlbnRGb3JtQXR0cmlidXRlcyA9IFwiXCI7XG5cdCAgICAgIGlmIChhdHRycy5oYXNPd25Qcm9wZXJ0eShcImlzRmllbGRHcm91cFwiKSAmJiBlbC5wYXJlbnQoKS5wYXJlbnQoKS5oYXNDbGFzcyhcImZvcm1seVwiKSkge1xuXHQgICAgICAgIHBhcmVudEZvcm1BdHRyaWJ1dGVzID0gY29weUF0dHJpYnV0ZXMoZWwucGFyZW50KCkucGFyZW50KClbMF0uYXR0cmlidXRlcyk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIFwiXFxuICAgICAgICA8XCIgKyByb290RWwgKyBcIiBjbGFzcz1cXFwiZm9ybWx5XFxcIlxcbiAgICAgICAgICAgICAgICAgbmFtZT1cXFwiXCIgKyBnZXRGb3JtTmFtZSgpICsgXCJcXFwiXFxuICAgICAgICAgICAgICAgICByb2xlPVxcXCJmb3JtXFxcIiBcIiArIHBhcmVudEZvcm1BdHRyaWJ1dGVzICsgXCI+XFxuICAgICAgICAgIDxcIiArIGZpZWxkUm9vdEVsICsgXCIgZm9ybWx5LWZpZWxkXFxuICAgICAgICAgICAgICAgbmctcmVwZWF0PVxcXCJmaWVsZCBpbiBmaWVsZHMgXCIgKyBnZXRUcmFja0J5KCkgKyBcIlxcXCJcXG4gICAgICAgICAgICAgICBcIiArIGdldEhpZGVEaXJlY3RpdmUoKSArIFwiPVxcXCIhZmllbGQuaGlkZVxcXCJcXG4gICAgICAgICAgICAgICBjbGFzcz1cXFwiZm9ybWx5LWZpZWxkXFxcIlxcbiAgICAgICAgICAgICAgIG9wdGlvbnM9XFxcImZpZWxkXFxcIlxcbiAgICAgICAgICAgICAgIG1vZGVsPVxcXCJmaWVsZC5tb2RlbCB8fCBtb2RlbFxcXCJcXG4gICAgICAgICAgICAgICBmaWVsZHM9XFxcImZpZWxkc1xcXCJcXG4gICAgICAgICAgICAgICBmb3JtPVxcXCJ0aGVGb3JtbHlGb3JtXFxcIlxcbiAgICAgICAgICAgICAgIGZvcm0taWQ9XFxcIlwiICsgZ2V0Rm9ybU5hbWUoKSArIFwiXFxcIlxcbiAgICAgICAgICAgICAgIGZvcm0tc3RhdGU9XFxcIm9wdGlvbnMuZm9ybVN0YXRlXFxcIlxcbiAgICAgICAgICAgICAgIGluZGV4PVxcXCIkaW5kZXhcXFwiPlxcbiAgICAgICAgICA8L1wiICsgZmllbGRSb290RWwgKyBcIj5cXG4gICAgICAgICAgPGRpdiBuZy10cmFuc2NsdWRlPjwvZGl2PlxcbiAgICAgICAgPC9cIiArIHJvb3RFbCArIFwiPlxcbiAgICAgIFwiO1xuXG5cdCAgICAgIGZ1bmN0aW9uIGdldFJvb3RFbCgpIHtcblx0ICAgICAgICByZXR1cm4gYXR0cnMucm9vdEVsIHx8IFwibmctZm9ybVwiO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gZ2V0RmllbGRSb290RWwoKSB7XG5cdCAgICAgICAgcmV0dXJuIGF0dHJzLmZpZWxkUm9vdEVsIHx8IFwiZGl2XCI7XG5cdCAgICAgIH1cblxuXHQgICAgICBmdW5jdGlvbiBnZXRIaWRlRGlyZWN0aXZlKCkge1xuXHQgICAgICAgIHJldHVybiBhdHRycy5oaWRlRGlyZWN0aXZlIHx8IGZvcm1seUNvbmZpZy5leHRyYXMuZGVmYXVsdEhpZGVEaXJlY3RpdmUgfHwgXCJuZy1pZlwiO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gZ2V0VHJhY2tCeSgpIHtcblx0ICAgICAgICBpZiAoIWF0dHJzLnRyYWNrQnkpIHtcblx0ICAgICAgICAgIHJldHVybiBcIlwiO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICByZXR1cm4gXCJ0cmFjayBieSBcIiArIGF0dHJzLnRyYWNrQnk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gZ2V0Rm9ybU5hbWUoKSB7XG5cdCAgICAgICAgdmFyIGZvcm1OYW1lID0gZm9ybUlkO1xuXHQgICAgICAgIHZhciBiaW5kTmFtZSA9IGF0dHJzLmJpbmROYW1lO1xuXHQgICAgICAgIGlmIChiaW5kTmFtZSkge1xuXHQgICAgICAgICAgaWYgKGFuZ3VsYXIudmVyc2lvbi5taW5vciA8IDMpIHtcblx0ICAgICAgICAgICAgdGhyb3cgZm9ybWx5VXNhYmlsaXR5LmdldEZvcm1seUVycm9yKFwiYmluZC1uYW1lIGF0dHJpYnV0ZSBvbiBmb3JtbHktZm9ybSBub3QgYWxsb3dlZCBpbiA+IGFuZ3VsYXIgMS4zXCIpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgLy8gd2UgY2FuIGRvIGEgb25lLXRpbWUgYmluZGluZyBoZXJlIGJlY2F1c2Ugd2Uga25vdyB3ZSdyZSBpbiAxLjMueCB0ZXJyaXRvcnlcblx0ICAgICAgICAgIGZvcm1OYW1lID0gXCJ7ezo6J2Zvcm1seV8nICsgXCIgKyBiaW5kTmFtZSArIFwifX1cIjtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGZvcm1OYW1lO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gY29weUF0dHJpYnV0ZXMoYXR0cmlidXRlcykge1xuXHQgICAgICAgIHZhciBleGNsdWRlZCA9IFtcIm1vZGVsXCIsIFwiZm9ybVwiLCBcImZpZWxkc1wiLCBcIm9wdGlvbnNcIiwgXCJuYW1lXCIsIFwicm9sZVwiLCBcImNsYXNzXCJdO1xuXHQgICAgICAgIHZhciBhcnJheUF0dHJzID0gW107XG5cdCAgICAgICAgYW5ndWxhci5mb3JFYWNoKGF0dHJpYnV0ZXMsIGZ1bmN0aW9uIChfcmVmKSB7XG5cdCAgICAgICAgICB2YXIgbm9kZU5hbWUgPSBfcmVmLm5vZGVOYW1lO1xuXHQgICAgICAgICAgdmFyIG5vZGVWYWx1ZSA9IF9yZWYubm9kZVZhbHVlO1xuXG5cdCAgICAgICAgICBpZiAobm9kZU5hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgZXhjbHVkZWQuaW5kZXhPZihub2RlTmFtZSkgPT09IC0xKSB7XG5cdCAgICAgICAgICAgIGFycmF5QXR0cnMucHVzaChcIlwiICsgdG9LZWJhYkNhc2Uobm9kZU5hbWUpICsgXCI9XFxcIlwiICsgbm9kZVZhbHVlICsgXCJcXFwiXCIpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXHQgICAgICAgIHJldHVybiBhcnJheUF0dHJzLmpvaW4oXCIgXCIpO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gdG9LZWJhYkNhc2Uoc3RyaW5nKSB7XG5cdCAgICAgICAgaWYgKHN0cmluZykge1xuXHQgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8oW0EtWl0pL2csIGZ1bmN0aW9uICgkMSkge1xuXHQgICAgICAgICAgICByZXR1cm4gXCItXCIgKyAkMS50b0xvd2VyQ2FzZSgpO1xuXHQgICAgICAgICAgfSk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHJldHVybiBcIlwiO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSxcblx0ICAgIHJlcGxhY2U6IHRydWUsXG5cdCAgICB0cmFuc2NsdWRlOiB0cnVlLFxuXHQgICAgc2NvcGU6IHtcblx0ICAgICAgZmllbGRzOiBcIj1cIixcblx0ICAgICAgbW9kZWw6IFwiPVwiLFxuXHQgICAgICBmb3JtOiBcIj0/XCIsXG5cdCAgICAgIG9wdGlvbnM6IFwiPT9cIlxuXHQgICAgfSxcblx0ICAgIGNvbnRyb2xsZXI6IC8qIEBuZ0luamVjdCAqL1tcIiRzY29wZVwiLCBcImZvcm1seVV0aWxcIiwgZnVuY3Rpb24gRm9ybWx5Rm9ybUNvbnRyb2xsZXIoJHNjb3BlLCBmb3JtbHlVdGlsKSB7XG5cdCAgICAgIHNldHVwT3B0aW9ucygpO1xuXHQgICAgICAkc2NvcGUubW9kZWwgPSAkc2NvcGUubW9kZWwgfHwge307XG5cdCAgICAgICRzY29wZS5maWVsZHMgPSAkc2NvcGUuZmllbGRzIHx8IFtdO1xuXG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBpbml0TW9kZWwpOyAvLyBpbml0aWFsaXplcyB0aGUgbW9kZWwgcHJvcGVydHkgaWYgc2V0IHRvICdmb3JtU3RhdGUnXG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBhdHRhY2hLZXkpOyAvLyBhdHRhY2hlcyBhIGtleSBiYXNlZCBvbiB0aGUgaW5kZXggaWYgYSBrZXkgaXNuJ3Qgc3BlY2lmaWVkXG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBzZXR1cFdhdGNoZXJzKTsgLy8gc2V0dXAgd2F0Y2hlcnMgZm9yIGFsbCBmaWVsZHNcblxuXHQgICAgICAvLyB3YXRjaCB0aGUgbW9kZWwgYW5kIGV2YWx1YXRlIHdhdGNoIGV4cHJlc3Npb25zIHRoYXQgZGVwZW5kIG9uIGl0LlxuXHQgICAgICAkc2NvcGUuJHdhdGNoKFwibW9kZWxcIiwgb25Nb2RlbE9yRm9ybVN0YXRlQ2hhbmdlLCB0cnVlKTtcblx0ICAgICAgaWYgKCRzY29wZS5vcHRpb25zLmZvcm1TdGF0ZSkge1xuXHQgICAgICAgICRzY29wZS4kd2F0Y2goXCJvcHRpb25zLmZvcm1TdGF0ZVwiLCBvbk1vZGVsT3JGb3JtU3RhdGVDaGFuZ2UsIHRydWUpO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gb25Nb2RlbE9yRm9ybVN0YXRlQ2hhbmdlKCkge1xuXHQgICAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBmdW5jdGlvbiBydW5GaWVsZEV4cHJlc3Npb25Qcm9wZXJ0aWVzKGZpZWxkLCBpbmRleCkge1xuXHQgICAgICAgICAgLypqc2hpbnQgLVcwMzAgKi9cblx0ICAgICAgICAgIHZhciBtb2RlbCA9IGZpZWxkLm1vZGVsIHx8ICRzY29wZS5tb2RlbDtcblx0ICAgICAgICAgIGZpZWxkLnJ1bkV4cHJlc3Npb25zICYmIGZpZWxkLnJ1bkV4cHJlc3Npb25zKG1vZGVsKTtcblx0ICAgICAgICAgIGlmIChmaWVsZC5oaWRlRXhwcmVzc2lvbikge1xuXHQgICAgICAgICAgICAvLyBjYW4ndCB1c2UgaGlkZSB3aXRoIGV4cHJlc3Npb25Qcm9wZXJ0aWVzIHJlbGlhYmx5XG5cdCAgICAgICAgICAgIHZhciB2YWwgPSBtb2RlbFtmaWVsZC5rZXldO1xuXHQgICAgICAgICAgICAvLyB0aGlzIG1ha2VzIGl0IGNsb3NlciB0byB3aGF0IGEgcmVndWxhciBleHByZXNzaW9uUHJvcGVydHkgd291bGQgYmVcblx0ICAgICAgICAgICAgdmFyIGV4dHJhTG9jYWxzID0ge1xuXHQgICAgICAgICAgICAgIG9wdGlvbnM6IGZpZWxkLFxuXHQgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcblx0ICAgICAgICAgICAgICBmb3JtU3RhdGU6ICRzY29wZS5vcHRpb25zLmZvcm1TdGF0ZSxcblx0ICAgICAgICAgICAgICBmb3JtSWQ6ICRzY29wZS5mb3JtSWRcblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgZmllbGQuaGlkZSA9IGZvcm1seVV0aWwuZm9ybWx5RXZhbCgkc2NvcGUsIGZpZWxkLmhpZGVFeHByZXNzaW9uLCB2YWwsIHZhbCwgZXh0cmFMb2NhbHMpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gc2V0dXBPcHRpb25zKCkge1xuXHQgICAgICAgIGZvcm1seUFwaUNoZWNrW1widGhyb3dcIl0oW2Zvcm1seUFwaUNoZWNrLmZvcm1PcHRpb25zQXBpLm9wdGlvbmFsXSwgWyRzY29wZS5vcHRpb25zXSwgeyBwcmVmaXg6IFwiZm9ybWx5LWZvcm0gb3B0aW9ucyBjaGVja1wiIH0pO1xuXHQgICAgICAgICRzY29wZS5vcHRpb25zID0gJHNjb3BlLm9wdGlvbnMgfHwge307XG5cdCAgICAgICAgJHNjb3BlLm9wdGlvbnMuZm9ybVN0YXRlID0gJHNjb3BlLm9wdGlvbnMuZm9ybVN0YXRlIHx8IHt9O1xuXG5cdCAgICAgICAgYW5ndWxhci5leHRlbmQoJHNjb3BlLm9wdGlvbnMsIHtcblx0ICAgICAgICAgIHVwZGF0ZUluaXRpYWxWYWx1ZTogdXBkYXRlSW5pdGlhbFZhbHVlLFxuXHQgICAgICAgICAgcmVzZXRNb2RlbDogcmVzZXRNb2RlbFxuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gdXBkYXRlSW5pdGlhbFZhbHVlKCkge1xuXHQgICAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBmdW5jdGlvbiAoZmllbGQpIHtcblx0ICAgICAgICAgIGlmIChpc0ZpZWxkR3JvdXAoZmllbGQpKSB7XG5cdCAgICAgICAgICAgIGZpZWxkLm9wdGlvbnMudXBkYXRlSW5pdGlhbFZhbHVlKCk7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBmaWVsZC51cGRhdGVJbml0aWFsVmFsdWUoKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIHJlc2V0TW9kZWwoKSB7XG5cdCAgICAgICAgYW5ndWxhci5mb3JFYWNoKCRzY29wZS5maWVsZHMsIGZ1bmN0aW9uIChmaWVsZCkge1xuXHQgICAgICAgICAgaWYgKGlzRmllbGRHcm91cChmaWVsZCkpIHtcblx0ICAgICAgICAgICAgZmllbGQub3B0aW9ucy5yZXNldE1vZGVsKCk7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBmaWVsZC5yZXNldE1vZGVsKCk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSk7XG5cdCAgICAgIH1cblxuXHQgICAgICBmdW5jdGlvbiBpbml0TW9kZWwoZmllbGQpIHtcblx0ICAgICAgICBpZiAoZmllbGQubW9kZWwgJiYgZmllbGQubW9kZWwgPT09IFwiZm9ybVN0YXRlXCIpIHtcblx0ICAgICAgICAgIGZpZWxkLm1vZGVsID0gJHNjb3BlLm9wdGlvbnMuZm9ybVN0YXRlO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIGF0dGFjaEtleShmaWVsZCwgaW5kZXgpIHtcblx0ICAgICAgICBpZiAoIWlzRmllbGRHcm91cChmaWVsZCkpIHtcblx0ICAgICAgICAgIGZpZWxkLmtleSA9IGZpZWxkLmtleSB8fCBpbmRleCB8fCAwO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIHNldHVwV2F0Y2hlcnMoZmllbGQsIGluZGV4KSB7XG5cdCAgICAgICAgaWYgKGlzRmllbGRHcm91cChmaWVsZCkgfHwgIWFuZ3VsYXIuaXNEZWZpbmVkKGZpZWxkLndhdGNoZXIpKSB7XG5cdCAgICAgICAgICByZXR1cm47XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciB3YXRjaGVycyA9IGZpZWxkLndhdGNoZXI7XG5cdCAgICAgICAgaWYgKCFhbmd1bGFyLmlzQXJyYXkod2F0Y2hlcnMpKSB7XG5cdCAgICAgICAgICB3YXRjaGVycyA9IFt3YXRjaGVyc107XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGFuZ3VsYXIuZm9yRWFjaCh3YXRjaGVycywgZnVuY3Rpb24gc2V0dXBXYXRjaGVyKHdhdGNoZXIpIHtcblx0ICAgICAgICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQod2F0Y2hlci5saXN0ZW5lcikpIHtcblx0ICAgICAgICAgICAgdGhyb3cgZm9ybWx5VXNhYmlsaXR5LmdldEZpZWxkRXJyb3IoXCJhbGwtZmllbGQtd2F0Y2hlcnMtbXVzdC1oYXZlLWEtbGlzdGVuZXJcIiwgXCJBbGwgZmllbGQgd2F0Y2hlcnMgbXVzdCBoYXZlIGEgbGlzdGVuZXJcIiwgZmllbGQpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgdmFyIHdhdGNoRXhwcmVzc2lvbiA9IGdldFdhdGNoRXhwcmVzc2lvbih3YXRjaGVyLCBmaWVsZCwgaW5kZXgpO1xuXHQgICAgICAgICAgdmFyIHdhdGNoTGlzdGVuZXIgPSBnZXRXYXRjaExpc3RlbmVyKHdhdGNoZXIsIGZpZWxkLCBpbmRleCk7XG5cblx0ICAgICAgICAgIHZhciB0eXBlID0gd2F0Y2hlci50eXBlIHx8IFwiJHdhdGNoXCI7XG5cdCAgICAgICAgICB3YXRjaGVyLnN0b3BXYXRjaGluZyA9ICRzY29wZVt0eXBlXSh3YXRjaEV4cHJlc3Npb24sIHdhdGNoTGlzdGVuZXIsIHdhdGNoZXIud2F0Y2hEZWVwKTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIGdldFdhdGNoRXhwcmVzc2lvbih3YXRjaGVyLCBmaWVsZCwgaW5kZXgpIHtcblx0ICAgICAgICB2YXIgd2F0Y2hFeHByZXNzaW9uID0gd2F0Y2hlci5leHByZXNzaW9uIHx8IFwibW9kZWxbJ1wiICsgZmllbGQua2V5ICsgXCInXVwiO1xuXHQgICAgICAgIGlmIChhbmd1bGFyLmlzRnVuY3Rpb24od2F0Y2hFeHByZXNzaW9uKSkge1xuXHQgICAgICAgICAgLy8gd3JhcCB0aGUgZmllbGQncyB3YXRjaCBleHByZXNzaW9uIHNvIHdlIGNhbiBjYWxsIGl0IHdpdGggdGhlIGZpZWxkIGFzIHRoZSBmaXJzdCBhcmdcblx0ICAgICAgICAgIC8vIGFuZCB0aGUgc3RvcCBmdW5jdGlvbiBhcyB0aGUgbGFzdCBhcmcgYXMgYSBoZWxwZXJcblx0ICAgICAgICAgIHZhciBvcmlnaW5hbEV4cHJlc3Npb24gPSB3YXRjaEV4cHJlc3Npb247XG5cdCAgICAgICAgICB3YXRjaEV4cHJlc3Npb24gPSBmdW5jdGlvbiBmb3JtbHlXYXRjaEV4cHJlc3Npb24oKSB7XG5cdCAgICAgICAgICAgIHZhciBhcmdzID0gbW9kaWZ5QXJncy5hcHBseSh1bmRlZmluZWQsIFt3YXRjaGVyLCBpbmRleF0uY29uY2F0KF9zbGljZS5jYWxsKGFyZ3VtZW50cykpKTtcblx0ICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsRXhwcmVzc2lvbi5hcHBseSh1bmRlZmluZWQsIF90b0NvbnN1bWFibGVBcnJheShhcmdzKSk7XG5cdCAgICAgICAgICB9O1xuXHQgICAgICAgICAgd2F0Y2hFeHByZXNzaW9uLmRpc3BsYXlOYW1lID0gXCJGb3JtbHkgV2F0Y2ggRXhwcmVzc2lvbiBmb3IgZmllbGQgZm9yIFwiICsgZmllbGQua2V5O1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gd2F0Y2hFeHByZXNzaW9uO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gZ2V0V2F0Y2hMaXN0ZW5lcih3YXRjaGVyLCBmaWVsZCwgaW5kZXgpIHtcblx0ICAgICAgICB2YXIgd2F0Y2hMaXN0ZW5lciA9IHdhdGNoZXIubGlzdGVuZXI7XG5cdCAgICAgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbih3YXRjaExpc3RlbmVyKSkge1xuXHQgICAgICAgICAgLy8gd3JhcCB0aGUgZmllbGQncyB3YXRjaCBsaXN0ZW5lciBzbyB3ZSBjYW4gY2FsbCBpdCB3aXRoIHRoZSBmaWVsZCBhcyB0aGUgZmlyc3QgYXJnXG5cdCAgICAgICAgICAvLyBhbmQgdGhlIHN0b3AgZnVuY3Rpb24gYXMgdGhlIGxhc3QgYXJnIGFzIGEgaGVscGVyXG5cdCAgICAgICAgICB2YXIgb3JpZ2luYWxMaXN0ZW5lciA9IHdhdGNoTGlzdGVuZXI7XG5cdCAgICAgICAgICB3YXRjaExpc3RlbmVyID0gZnVuY3Rpb24gZm9ybWx5V2F0Y2hMaXN0ZW5lcigpIHtcblx0ICAgICAgICAgICAgdmFyIGFyZ3MgPSBtb2RpZnlBcmdzLmFwcGx5KHVuZGVmaW5lZCwgW3dhdGNoZXIsIGluZGV4XS5jb25jYXQoX3NsaWNlLmNhbGwoYXJndW1lbnRzKSkpO1xuXHQgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxMaXN0ZW5lci5hcHBseSh1bmRlZmluZWQsIF90b0NvbnN1bWFibGVBcnJheShhcmdzKSk7XG5cdCAgICAgICAgICB9O1xuXHQgICAgICAgICAgd2F0Y2hMaXN0ZW5lci5kaXNwbGF5TmFtZSA9IFwiRm9ybWx5IFdhdGNoIExpc3RlbmVyIGZvciBmaWVsZCBmb3IgXCIgKyBmaWVsZC5rZXk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB3YXRjaExpc3RlbmVyO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gbW9kaWZ5QXJncyh3YXRjaGVyLCBpbmRleCkge1xuXHQgICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBvcmlnaW5hbEFyZ3MgPSBBcnJheShfbGVuID4gMiA/IF9sZW4gLSAyIDogMCksIF9rZXkgPSAyOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICAgICAgICBvcmlnaW5hbEFyZ3NbX2tleSAtIDJdID0gYXJndW1lbnRzW19rZXldO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBbJHNjb3BlLmZpZWxkc1tpbmRleF1dLmNvbmNhdChvcmlnaW5hbEFyZ3MsIFt3YXRjaGVyLnN0b3BXYXRjaGluZ10pO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gaXNGaWVsZEdyb3VwKGZpZWxkKSB7XG5cdCAgICAgICAgcmV0dXJuIGZpZWxkICYmICEhZmllbGQuZmllbGRHcm91cDtcblx0ICAgICAgfVxuXHQgICAgfV0sXG5cdCAgICBsaW5rOiBmdW5jdGlvbiBsaW5rKHNjb3BlLCBlbCwgYXR0cnMpIHtcblx0ICAgICAgdmFyIGZvcm1JZCA9IGF0dHJzLm5hbWU7XG5cdCAgICAgIHNjb3BlLmZvcm1JZCA9IGZvcm1JZDtcblx0ICAgICAgc2NvcGUudGhlRm9ybWx5Rm9ybSA9IHNjb3BlW2Zvcm1JZF07XG5cdCAgICAgIGlmIChhdHRycy5mb3JtKSB7XG5cdCAgICAgICAgJHBhcnNlKGF0dHJzLmZvcm0pLmFzc2lnbihzY29wZS4kcGFyZW50LCBzY29wZVtmb3JtSWRdKTtcblx0ICAgICAgfVxuXG5cdCAgICAgIC8vIGNocm9tZSBhdXRvY29tcGxldGUgbGFtZW5lc3Ncblx0ICAgICAgLy8gc2VlIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NjgxNTMjYzE0XG5cdCAgICAgIC8vIOGDmijgsqDnm4rgsqDhg5opICAgKOKVr8Kw4pahwrAp4pWv77i1IOKUu+KUgeKUuyAgICAo4pee4oC44pef77ybKVxuXHQgICAgICB2YXIgZ2xvYmFsID0gZm9ybWx5Q29uZmlnLmV4dHJhcy5yZW1vdmVDaHJvbWVBdXRvQ29tcGxldGUgPT09IHRydWU7XG5cdCAgICAgIHZhciBvZmZJbnN0YW5jZSA9IHNjb3BlLm9wdGlvbnMgJiYgc2NvcGUub3B0aW9ucy5yZW1vdmVDaHJvbWVBdXRvQ29tcGxldGUgPT09IGZhbHNlO1xuXHQgICAgICB2YXIgb25JbnN0YW5jZSA9IHNjb3BlLm9wdGlvbnMgJiYgc2NvcGUub3B0aW9ucy5yZW1vdmVDaHJvbWVBdXRvQ29tcGxldGUgPT09IHRydWU7XG5cdCAgICAgIGlmIChnbG9iYWwgJiYgIW9mZkluc3RhbmNlIHx8IG9uSW5zdGFuY2UpIHtcblx0ICAgICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG5cdCAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKFwiYXV0b2NvbXBsZXRlXCIsIFwiYWRkcmVzcy1sZXZlbDRcIik7XG5cdCAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKFwiaGlkZGVuXCIsIHRydWUpO1xuXHQgICAgICAgIGVsWzBdLmFwcGVuZENoaWxkKGlucHV0KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH07XG5cdH1cblx0Zm9ybWx5Rm9ybS4kaW5qZWN0ID0gW1wiZm9ybWx5VXNhYmlsaXR5XCIsIFwiJHBhcnNlXCIsIFwiZm9ybWx5QXBpQ2hlY2tcIiwgXCJmb3JtbHlDb25maWdcIl07XG5cbi8qKiovIH0sXG4vKiAxMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gYWRkRm9ybWx5TmdNb2RlbEF0dHJzTWFuaXB1bGF0b3I7XG5cblx0Ly8gQG5nSW5qZWN0XG5cdGZ1bmN0aW9uIGFkZEZvcm1seU5nTW9kZWxBdHRyc01hbmlwdWxhdG9yKGZvcm1seUNvbmZpZykge1xuXHQgIGlmIChmb3JtbHlDb25maWcuZXh0cmFzLmRpc2FibGVOZ01vZGVsQXR0cnNNYW5pcHVsYXRvcikge1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBmb3JtbHlDb25maWcudGVtcGxhdGVNYW5pcHVsYXRvcnMucHJlV3JhcHBlci5wdXNoKG5nTW9kZWxBdHRyc01hbmlwdWxhdG9yKTtcblxuXHQgIGZ1bmN0aW9uIG5nTW9kZWxBdHRyc01hbmlwdWxhdG9yKHRlbXBsYXRlLCBvcHRpb25zLCBzY29wZSkge1xuXHQgICAgLyoganNoaW50IG1heGNvbXBsZXhpdHk6NiAqL1xuXHQgICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0ICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXHQgICAgaWYgKGRhdGEuc2tpcE5nTW9kZWxBdHRyc01hbmlwdWxhdG9yID09PSB0cnVlKSB7XG5cdCAgICAgIHJldHVybiB0ZW1wbGF0ZTtcblx0ICAgIH1cblx0ICAgIGVsLmlubmVySFRNTCA9IHRlbXBsYXRlO1xuXHQgICAgdmFyIG1vZGVsTm9kZXMgPSBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiW25nLW1vZGVsXSwgW2RhdGEtbmctbW9kZWxdXCIpO1xuXHQgICAgaWYgKCFtb2RlbE5vZGVzIHx8ICFtb2RlbE5vZGVzLmxlbmd0aCkge1xuXHQgICAgICByZXR1cm4gdGVtcGxhdGU7XG5cdCAgICB9XG5cblx0ICAgIGFkZElmTm90UHJlc2VudChtb2RlbE5vZGVzLCBcImlkXCIsIHNjb3BlLmlkKTtcblx0ICAgIGFkZElmTm90UHJlc2VudChtb2RlbE5vZGVzLCBcIm5hbWVcIiwgc2NvcGUuaWQpO1xuXG5cdCAgICBhZGRWYWxpZGF0aW9uKCk7XG5cdCAgICBhZGRNb2RlbE9wdGlvbnMoKTtcblx0ICAgIGFkZFRlbXBsYXRlT3B0aW9uc0F0dHJzKCk7XG5cblx0ICAgIHJldHVybiBlbC5pbm5lckhUTUw7XG5cblx0ICAgIGZ1bmN0aW9uIGFkZFZhbGlkYXRpb24oKSB7XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChvcHRpb25zLnZhbGlkYXRvcnMpIHx8IGFuZ3VsYXIuaXNEZWZpbmVkKG9wdGlvbnMudmFsaWRhdGlvbi5tZXNzYWdlcykpIHtcblx0ICAgICAgICBhZGRJZk5vdFByZXNlbnQobW9kZWxOb2RlcywgXCJmb3JtbHktY3VzdG9tLXZhbGlkYXRpb25cIiwgXCJcIik7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gYWRkTW9kZWxPcHRpb25zKCkge1xuXHQgICAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQob3B0aW9ucy5tb2RlbE9wdGlvbnMpKSB7XG5cdCAgICAgICAgYWRkSWZOb3RQcmVzZW50KG1vZGVsTm9kZXMsIFwibmctbW9kZWwtb3B0aW9uc1wiLCBcIm9wdGlvbnMubW9kZWxPcHRpb25zXCIpO1xuXHQgICAgICAgIGlmIChvcHRpb25zLm1vZGVsT3B0aW9ucy5nZXR0ZXJTZXR0ZXIpIHtcblx0ICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChtb2RlbE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuXHQgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm5nLW1vZGVsXCIsIFwib3B0aW9ucy52YWx1ZVwiKTtcblx0ICAgICAgICAgIH0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBhZGRUZW1wbGF0ZU9wdGlvbnNBdHRycygpIHtcblx0ICAgICAgaWYgKCFvcHRpb25zLnRlbXBsYXRlT3B0aW9ucyAmJiAhb3B0aW9ucy5leHByZXNzaW9uUHJvcGVydGllcykge1xuXHQgICAgICAgIC8vIG5vIG5lZWQgdG8gcnVuIHRoZXNlIGlmIHRoZXJlIGFyZSBubyB0ZW1wbGF0ZU9wdGlvbnMgb3IgZXhwcmVzc2lvblByb3BlcnRpZXNcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHRvID0gb3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnMgfHwge307XG5cdCAgICAgIHZhciBlcCA9IG9wdGlvbnMuZXhwcmVzc2lvblByb3BlcnRpZXMgfHwge307XG5cblx0ICAgICAgdmFyIG5nTW9kZWxBdHRyaWJ1dGVzID0gZ2V0QnVpbHRJbkF0dHJpYnV0ZXMoKTtcblxuXHQgICAgICAvLyBleHRlbmQgd2l0aCB0aGUgdXNlcidzIHNwZWNpZmljYXRpb25zIHdpbm5pbmdcblx0ICAgICAgYW5ndWxhci5leHRlbmQobmdNb2RlbEF0dHJpYnV0ZXMsIG9wdGlvbnMubmdNb2RlbEF0dHJzKTtcblxuXHQgICAgICAvLyBGZWVsIGZyZWUgdG8gbWFrZSB0aGlzIG1vcmUgc2ltcGxlIDotKVxuXHQgICAgICBhbmd1bGFyLmZvckVhY2gobmdNb2RlbEF0dHJpYnV0ZXMsIGZ1bmN0aW9uICh2YWwsIG5hbWUpIHtcblx0ICAgICAgICAvKiBqc2hpbnQgbWF4Y29tcGxleGl0eToxNCAqL1xuXHQgICAgICAgIHZhciBhdHRyVmFsID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIHZhciBhdHRyTmFtZSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICB2YXIgcmVmID0gXCJvcHRpb25zLnRlbXBsYXRlT3B0aW9uc1snXCIgKyBuYW1lICsgXCInXVwiO1xuXHQgICAgICAgIHZhciB0b1ZhbCA9IHRvW25hbWVdO1xuXHQgICAgICAgIHZhciBlcFZhbCA9IGdldEVwVmFsdWUoZXAsIG5hbWUpO1xuXG5cdCAgICAgICAgdmFyIGluVG8gPSBhbmd1bGFyLmlzRGVmaW5lZCh0b1ZhbCk7XG5cdCAgICAgICAgdmFyIGluRXAgPSBhbmd1bGFyLmlzRGVmaW5lZChlcFZhbCk7XG5cdCAgICAgICAgaWYgKHZhbC52YWx1ZSkge1xuXHQgICAgICAgICAgLy8gSSByZWFsaXplIHRoaXMgbG9va3MgYmFja3dhcmRzLCBidXQgaXQncyByaWdodCwgdHJ1c3QgbWUuLi5cblx0ICAgICAgICAgIGF0dHJOYW1lID0gdmFsLnZhbHVlO1xuXHQgICAgICAgICAgYXR0clZhbCA9IG5hbWU7XG5cdCAgICAgICAgfSBlbHNlIGlmICh2YWwuZXhwcmVzc2lvbiAmJiBpblRvKSB7XG5cdCAgICAgICAgICBhdHRyTmFtZSA9IHZhbC5leHByZXNzaW9uO1xuXHQgICAgICAgICAgaWYgKGFuZ3VsYXIuaXNTdHJpbmcodG9bbmFtZV0pKSB7XG5cdCAgICAgICAgICAgIGF0dHJWYWwgPSBcIiRldmFsKFwiICsgcmVmICsgXCIpXCI7XG5cdCAgICAgICAgICB9IGVsc2UgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbih0b1tuYW1lXSkpIHtcblx0ICAgICAgICAgICAgYXR0clZhbCA9IFwiXCIgKyByZWYgKyBcIihtb2RlbFtvcHRpb25zLmtleV0sIG9wdGlvbnMsIHRoaXMsICRldmVudClcIjtcblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm9wdGlvbnMudGVtcGxhdGVPcHRpb25zLlwiICsgbmFtZSArIFwiIG11c3QgYmUgYSBzdHJpbmcgb3IgZnVuY3Rpb246IFwiICsgSlNPTi5zdHJpbmdpZnkob3B0aW9ucykpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSBpZiAodmFsLmJvdW5kICYmIGluRXApIHtcblx0ICAgICAgICAgIGF0dHJOYW1lID0gdmFsLmJvdW5kO1xuXHQgICAgICAgICAgYXR0clZhbCA9IHJlZjtcblx0ICAgICAgICB9IGVsc2UgaWYgKCh2YWwuYXR0cmlidXRlIHx8IHZhbC5ib29sZWFuKSAmJiBpbkVwKSB7XG5cdCAgICAgICAgICBhdHRyTmFtZSA9IHZhbC5hdHRyaWJ1dGUgfHwgdmFsLmJvb2xlYW47XG5cdCAgICAgICAgICBhdHRyVmFsID0gXCJ7e1wiICsgcmVmICsgXCJ9fVwiO1xuXHQgICAgICAgIH0gZWxzZSBpZiAodmFsLmF0dHJpYnV0ZSAmJiBpblRvKSB7XG5cdCAgICAgICAgICBhdHRyTmFtZSA9IHZhbC5hdHRyaWJ1dGU7XG5cdCAgICAgICAgICBhdHRyVmFsID0gdG9WYWw7XG5cdCAgICAgICAgfSBlbHNlIGlmICh2YWwuYm9vbGVhbikge1xuXHQgICAgICAgICAgaWYgKGluVG8gJiYgIWluRXAgJiYgdG9WYWwpIHtcblx0ICAgICAgICAgICAgYXR0ck5hbWUgPSB2YWwuYm9vbGVhbjtcblx0ICAgICAgICAgICAgYXR0clZhbCA9IHRydWU7XG5cdCAgICAgICAgICB9IGVsc2Uge31cblx0ICAgICAgICB9IGVsc2UgaWYgKHZhbC5ib3VuZCAmJiBpblRvKSB7XG5cdCAgICAgICAgICBhdHRyTmFtZSA9IHZhbC5ib3VuZDtcblx0ICAgICAgICAgIGF0dHJWYWwgPSByZWY7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaWYgKGFuZ3VsYXIuaXNEZWZpbmVkKGF0dHJOYW1lKSAmJiBhbmd1bGFyLmlzRGVmaW5lZChhdHRyVmFsKSkge1xuXHQgICAgICAgICAgYWRkSWZOb3RQcmVzZW50KG1vZGVsTm9kZXMsIGF0dHJOYW1lLCBhdHRyVmFsKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIC8vIFV0aWxpdHkgZnVuY3Rpb25zXG5cdCAgZnVuY3Rpb24gZ2V0QnVpbHRJbkF0dHJpYnV0ZXMoKSB7XG5cdCAgICB2YXIgbmdNb2RlbEF0dHJpYnV0ZXMgPSB7XG5cdCAgICAgIGZvY3VzOiB7XG5cdCAgICAgICAgYXR0cmlidXRlOiBcImZvcm1seS1mb2N1c1wiXG5cdCAgICAgIH1cblx0ICAgIH07XG5cdCAgICB2YXIgYm91bmRPbmx5ID0gW107XG5cdCAgICB2YXIgYm90aEJvb2xlYW5BbmRCb3VuZCA9IFtcInJlcXVpcmVkXCIsIFwiZGlzYWJsZWRcIl07XG5cdCAgICB2YXIgYm90aEF0dHJpYnV0ZUFuZEJvdW5kID0gW1wicGF0dGVyblwiLCBcIm1pbmxlbmd0aFwiXTtcblx0ICAgIHZhciBleHByZXNzaW9uT25seSA9IFtcImNoYW5nZVwiLCBcImtleWRvd25cIiwgXCJrZXl1cFwiLCBcImtleXByZXNzXCIsIFwiY2xpY2tcIiwgXCJmb2N1c1wiLCBcImJsdXJcIl07XG5cdCAgICB2YXIgYXR0cmlidXRlT25seSA9IFtcInBsYWNlaG9sZGVyXCIsIFwibWluXCIsIFwibWF4XCIsIFwidGFiaW5kZXhcIiwgXCJ0eXBlXCJdO1xuXHQgICAgaWYgKGZvcm1seUNvbmZpZy5leHRyYXMubmdNb2RlbEF0dHJzTWFuaXB1bGF0b3JQcmVmZXJVbmJvdW5kKSB7XG5cdCAgICAgIGJvdGhBdHRyaWJ1dGVBbmRCb3VuZC5wdXNoKFwibWF4bGVuZ3RoXCIpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgYm91bmRPbmx5LnB1c2goXCJtYXhsZW5ndGhcIik7XG5cdCAgICB9XG5cblx0ICAgIGFuZ3VsYXIuZm9yRWFjaChib3VuZE9ubHksIGZ1bmN0aW9uIChpdGVtKSB7XG5cdCAgICAgIG5nTW9kZWxBdHRyaWJ1dGVzW2l0ZW1dID0geyBib3VuZDogXCJuZy1cIiArIGl0ZW0gfTtcblx0ICAgIH0pO1xuXG5cdCAgICBhbmd1bGFyLmZvckVhY2goYm90aEJvb2xlYW5BbmRCb3VuZCwgZnVuY3Rpb24gKGl0ZW0pIHtcblx0ICAgICAgbmdNb2RlbEF0dHJpYnV0ZXNbaXRlbV0gPSB7IGJvb2xlYW46IGl0ZW0sIGJvdW5kOiBcIm5nLVwiICsgaXRlbSB9O1xuXHQgICAgfSk7XG5cblx0ICAgIGFuZ3VsYXIuZm9yRWFjaChib3RoQXR0cmlidXRlQW5kQm91bmQsIGZ1bmN0aW9uIChpdGVtKSB7XG5cdCAgICAgIG5nTW9kZWxBdHRyaWJ1dGVzW2l0ZW1dID0geyBhdHRyaWJ1dGU6IGl0ZW0sIGJvdW5kOiBcIm5nLVwiICsgaXRlbSB9O1xuXHQgICAgfSk7XG5cblx0ICAgIGFuZ3VsYXIuZm9yRWFjaChleHByZXNzaW9uT25seSwgZnVuY3Rpb24gKGl0ZW0pIHtcblx0ICAgICAgdmFyIHByb3BOYW1lID0gXCJvblwiICsgaXRlbS5zdWJzdHIoMCwgMSkudG9VcHBlckNhc2UoKSArIGl0ZW0uc3Vic3RyKDEpO1xuXHQgICAgICBuZ01vZGVsQXR0cmlidXRlc1twcm9wTmFtZV0gPSB7IGV4cHJlc3Npb246IFwibmctXCIgKyBpdGVtIH07XG5cdCAgICB9KTtcblxuXHQgICAgYW5ndWxhci5mb3JFYWNoKGF0dHJpYnV0ZU9ubHksIGZ1bmN0aW9uIChpdGVtKSB7XG5cdCAgICAgIG5nTW9kZWxBdHRyaWJ1dGVzW2l0ZW1dID0geyBhdHRyaWJ1dGU6IGl0ZW0gfTtcblx0ICAgIH0pO1xuXHQgICAgcmV0dXJuIG5nTW9kZWxBdHRyaWJ1dGVzO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldEVwVmFsdWUoZXAsIG5hbWUpIHtcblx0ICAgIHJldHVybiBlcFtcInRlbXBsYXRlT3B0aW9ucy5cIiArIG5hbWVdIHx8IGVwW1widGVtcGxhdGVPcHRpb25zWydcIiArIG5hbWUgKyBcIiddXCJdIHx8IGVwW1widGVtcGxhdGVPcHRpb25zW1xcXCJcIiArIG5hbWUgKyBcIlxcXCJdXCJdO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGFkZElmTm90UHJlc2VudChub2RlcywgYXR0ciwgdmFsKSB7XG5cdCAgICBhbmd1bGFyLmZvckVhY2gobm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG5cdCAgICAgIGlmICghbm9kZS5nZXRBdHRyaWJ1dGUoYXR0cikpIHtcblx0ICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyLCB2YWwpO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICB9XG5cdH1cblx0YWRkRm9ybWx5TmdNb2RlbEF0dHJzTWFuaXB1bGF0b3IuJGluamVjdCA9IFtcImZvcm1seUNvbmZpZ1wiXTtcblxuXHQvLyBqc2hpbnQgLVcwMzVcblx0Ly8gZW1wdHkgdG8gaWxsdXN0cmF0ZSB0aGF0IGEgYm9vbGVhbiB3aWxsIG5vdCBiZSBhZGRlZCB2aWEgdmFsLmJvdW5kXG5cdC8vIGlmIHlvdSB3YW50IGl0IGFkZGVkIHZpYSB2YWwuYm91bmQsIHRoZW4gcHV0IGl0IGluIGV4cHJlc3Npb25Qcm9wZXJ0aWVzXG5cbi8qKiovIH0sXG4vKiAxNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBhZGRDdXN0b21UYWdzO1xuXG5cdC8vIEBuZ0luamVjdFxuXHRmdW5jdGlvbiBhZGRDdXN0b21UYWdzKCRkb2N1bWVudCkge1xuXHQgIGlmICgkZG9jdW1lbnQgJiYgJGRvY3VtZW50LmdldCkge1xuXHQgICAgKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgLy9JRTggY2hlY2sgLT5cblx0ICAgICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDk2NDk2Ni9kZXRlY3QtaWUtdmVyc2lvbi1wcmlvci10by12OS1pbi1qYXZhc2NyaXB0LzEwOTY1MjAzIzEwOTY1MjAzXG5cdCAgICAgIHZhciBkb2N1bWVudCA9ICRkb2N1bWVudC5nZXQoMCk7XG5cdCAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHQgICAgICBkaXYuaW5uZXJIVE1MID0gXCI8IS0tW2lmIGx0IElFIDldPjxpPjwvaT48IVtlbmRpZl0tLT5cIjtcblx0ICAgICAgdmFyIGlzSWVMZXNzVGhhbjkgPSBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpXCIpLmxlbmd0aCA9PT0gMTtcblxuXHQgICAgICBpZiAoaXNJZUxlc3NUaGFuOSkge1xuXHQgICAgICAgIC8vYWRkIHRoZSBjdXN0b20gZWxlbWVudHMgdGhhdCB3ZSBuZWVkIGZvciBmb3JtbHlcblx0ICAgICAgICB2YXIgY3VzdG9tRWxlbWVudHMgPSBbXCJmb3JtbHktZmllbGRcIiwgXCJmb3JtbHktZm9ybVwiLCBcImZvcm1seS1jdXN0b20tdmFsaWRhdGlvblwiLCBcImZvcm1seS1mb2N1c1wiLCBcImZvcm1seS10cmFuc3Bvc2VcIl07XG5cdCAgICAgICAgYW5ndWxhci5mb3JFYWNoKGN1c3RvbUVsZW1lbnRzLCBmdW5jdGlvbiAoZWwpIHtcblx0ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWwpO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAgICB9KSgpO1xuXHQgIH1cblx0fVxuXHRhZGRDdXN0b21UYWdzLiRpbmplY3QgPSBbXCIkZG9jdW1lbnRcIl07XG5cbi8qKiovIH0sXG4vKiAxNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0Ly8gc29tZSB2ZXJzaW9ucyBvZiBhbmd1bGFyIGRvbid0IGV4cG9ydCB0aGUgYW5ndWxhciBtb2R1bGUgcHJvcGVybHksXG5cdC8vIHNvIHdlIGdldCBpdCBmcm9tIHdpbmRvdyBpbiB0aGlzIGNhc2UuXG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNykpO1xuXG5cdGlmICghYW5ndWxhci52ZXJzaW9uKSB7XG5cdCAgYW5ndWxhciA9IHdpbmRvdy5hbmd1bGFyO1xuXHR9XG5cdG1vZHVsZS5leHBvcnRzID0gYW5ndWxhcjtcblxuLyoqKi8gfSxcbi8qIDE2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMTZfXztcblxuLyoqKi8gfSxcbi8qIDE3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMTdfXztcblxuLyoqKi8gfSxcbi8qIDE4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX2ludGVyb3BSZXF1aXJlID0gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqW1wiZGVmYXVsdFwiXSA6IG9iajsgfTtcblxuXHR2YXIgYW5ndWxhciA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KSk7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IGZvcm1seUV2YWw6IGZvcm1seUV2YWwsIGdldEZpZWxkSWQ6IGdldEZpZWxkSWQsIHJldmVyc2VEZWVwTWVyZ2U6IHJldmVyc2VEZWVwTWVyZ2UsIGZpbmRCeU5vZGVOYW1lOiBmaW5kQnlOb2RlTmFtZSwgYXJyYXlpZnk6IGFycmF5aWZ5LCBleHRlbmRGdW5jdGlvbjogZXh0ZW5kRnVuY3Rpb24gfTtcblxuXHRmdW5jdGlvbiBmb3JtbHlFdmFsKHNjb3BlLCBleHByZXNzaW9uLCAkbW9kZWxWYWx1ZSwgJHZpZXdWYWx1ZSwgZXh0cmFMb2NhbHMpIHtcblx0ICBpZiAoYW5ndWxhci5pc0Z1bmN0aW9uKGV4cHJlc3Npb24pKSB7XG5cdCAgICByZXR1cm4gZXhwcmVzc2lvbigkdmlld1ZhbHVlLCAkbW9kZWxWYWx1ZSwgc2NvcGUsIGV4dHJhTG9jYWxzKTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIHNjb3BlLiRldmFsKGV4cHJlc3Npb24sIGFuZ3VsYXIuZXh0ZW5kKHsgJHZpZXdWYWx1ZTogJHZpZXdWYWx1ZSwgJG1vZGVsVmFsdWU6ICRtb2RlbFZhbHVlIH0sIGV4dHJhTG9jYWxzKSk7XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0RmllbGRJZChmb3JtSWQsIG9wdGlvbnMsIGluZGV4KSB7XG5cdCAgaWYgKG9wdGlvbnMuaWQpIHtcblx0ICAgIHJldHVybiBvcHRpb25zLmlkO1xuXHQgIH1cblx0ICB2YXIgdHlwZSA9IG9wdGlvbnMudHlwZTtcblx0ICBpZiAoIXR5cGUgJiYgb3B0aW9ucy50ZW1wbGF0ZSkge1xuXHQgICAgdHlwZSA9IFwidGVtcGxhdGVcIjtcblx0ICB9IGVsc2UgaWYgKCF0eXBlICYmIG9wdGlvbnMudGVtcGxhdGVVcmwpIHtcblx0ICAgIHR5cGUgPSBcInRlbXBsYXRlVXJsXCI7XG5cdCAgfVxuXG5cdCAgcmV0dXJuIFtmb3JtSWQsIHR5cGUsIG9wdGlvbnMua2V5LCBpbmRleF0uam9pbihcIl9cIik7XG5cdH1cblxuXHRmdW5jdGlvbiByZXZlcnNlRGVlcE1lcmdlKGRlc3QpIHtcblx0ICBhbmd1bGFyLmZvckVhY2goYXJndW1lbnRzLCBmdW5jdGlvbiAoc3JjLCBpbmRleCkge1xuXHQgICAgaWYgKCFpbmRleCkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBhbmd1bGFyLmZvckVhY2goc3JjLCBmdW5jdGlvbiAodmFsLCBwcm9wKSB7XG5cdCAgICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQoZGVzdFtwcm9wXSkpIHtcblx0ICAgICAgICBkZXN0W3Byb3BdID0gYW5ndWxhci5jb3B5KHZhbCk7XG5cdCAgICAgIH0gZWxzZSBpZiAob2JqQW5kU2FtZVR5cGUoZGVzdFtwcm9wXSwgdmFsKSkge1xuXHQgICAgICAgIHJldmVyc2VEZWVwTWVyZ2UoZGVzdFtwcm9wXSwgdmFsKTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgfSk7XG5cdH1cblxuXHRmdW5jdGlvbiBvYmpBbmRTYW1lVHlwZShvYmoxLCBvYmoyKSB7XG5cdCAgcmV0dXJuIGFuZ3VsYXIuaXNPYmplY3Qob2JqMSkgJiYgYW5ndWxhci5pc09iamVjdChvYmoyKSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqMSkgPT09IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmoyKTtcblx0fVxuXG5cdC8vcmVjdXJzZSBkb3duIGEgbm9kZSB0cmVlIHRvIGZpbmQgYSBub2RlIHdpdGggbWF0Y2hpbmcgbm9kZU5hbWUsIGZvciBjdXN0b20gdGFncyBqUXVlcnkuZmluZCBkb2Vzbid0IHdvcmsgaW4gSUU4XG5cdGZ1bmN0aW9uIGZpbmRCeU5vZGVOYW1lKGVsLCBub2RlTmFtZSkge1xuXHQgIGlmICghZWwucHJvcCkge1xuXHQgICAgLy8gbm90IGEgalF1ZXJ5IG9yIGpxTGl0ZSBvYmplY3QgLT4gd3JhcCBpdFxuXHQgICAgZWwgPSBhbmd1bGFyLmVsZW1lbnQoZWwpO1xuXHQgIH1cblxuXHQgIGlmIChlbC5wcm9wKFwibm9kZU5hbWVcIikgPT09IG5vZGVOYW1lLnRvVXBwZXJDYXNlKCkpIHtcblx0ICAgIHJldHVybiBlbDtcblx0ICB9XG5cblx0ICB2YXIgYyA9IGVsLmNoaWxkcmVuKCk7XG5cdCAgZm9yICh2YXIgaSA9IDA7IGMgJiYgaSA8IGMubGVuZ3RoOyBpKyspIHtcblx0ICAgIHZhciBub2RlID0gZmluZEJ5Tm9kZU5hbWUoY1tpXSwgbm9kZU5hbWUpO1xuXHQgICAgaWYgKG5vZGUpIHtcblx0ICAgICAgcmV0dXJuIG5vZGU7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gYXJyYXlpZnkob2JqKSB7XG5cdCAgaWYgKG9iaiAmJiAhYW5ndWxhci5pc0FycmF5KG9iaikpIHtcblx0ICAgIG9iaiA9IFtvYmpdO1xuXHQgIH0gZWxzZSBpZiAoIW9iaikge1xuXHQgICAgb2JqID0gW107XG5cdCAgfVxuXHQgIHJldHVybiBvYmo7XG5cdH1cblxuXHRmdW5jdGlvbiBleHRlbmRGdW5jdGlvbigpIHtcblx0ICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgZm5zID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICBmbnNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG5cdCAgfVxuXG5cdCAgcmV0dXJuIGZ1bmN0aW9uIGV4dGVuZGVkRnVuY3Rpb24oKSB7XG5cdCAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcblx0ICAgIGZucy5mb3JFYWNoKGZ1bmN0aW9uIChmbikge1xuXHQgICAgICByZXR1cm4gZm4uYXBwbHkobnVsbCwgYXJncyk7XG5cdCAgICB9KTtcblx0ICB9O1xuXHR9XG5cbi8qKiovIH1cbi8qKioqKiovIF0pXG59KTtcbjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vYW5ndWxhci1mb3JtbHkvZGlzdC9mb3JtbHkuanNcbi8vIG1vZHVsZSBpZCA9IDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 4 */
+/***/ function(module, exports) {
+
+ eval("module.exports = angular;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJhbmd1bGFyXCI/MTFkMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiI0LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBhbmd1bGFyO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwiYW5ndWxhclwiXG4vLyBtb2R1bGUgaWQgPSA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 5 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("// angular-formly-templates-bootstrap version 4.3.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory(__webpack_require__(3), __webpack_require__(2), __webpack_require__(4));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular-formly\", \"api-check\", \"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ngFormlyTemplatesBootstrap\"] = factory(require(\"angular-formly\"), require(\"api-check\"), require(\"angular\"));\n\telse\n\t\troot[\"ngFormlyTemplatesBootstrap\"] = factory(root[\"ngFormly\"], root[\"apiCheck\"], root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_8__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(11);\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addCheckboxType);\n\t\n\t function addCheckboxType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'multiCheckbox',\n\t template: __webpack_require__(21),\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional\n\t })\n\t },\n\t defaultOptions: {\n\t noFormControl: false,\n\t ngModelAttrs: {\n\t required: {\n\t attribute: '',\n\t bound: ''\n\t }\n\t }\n\t },\n\t apiCheckInstance: c,\n\t controller: /* @ngInject */[\"$scope\", function controller($scope) {\n\t var to = $scope.to;\n\t var opts = $scope.options;\n\t $scope.multiCheckbox = {\n\t checked: [],\n\t change: setModel\n\t };\n\t\n\t // initialize the checkboxes check property\n\t var modelValue = $scope.model[opts.key];\n\t if (angular.isArray(modelValue)) {\n\t (function () {\n\t var valueProp = to.valueProp || 'value';\n\t angular.forEach(to.options, function (v, index) {\n\t $scope.multiCheckbox.checked[index] = modelValue.indexOf(v[valueProp]) !== -1;\n\t });\n\t })();\n\t }\n\t\n\t function checkValidity(expressionValue) {\n\t var valid = angular.isArray($scope.model[opts.key]) && $scope.model[opts.key].length > 0 && expressionValue;\n\t\n\t $scope.fc.$setValidity('required', valid);\n\t }\n\t\n\t function setModel() {\n\t $scope.model[opts.key] = [];\n\t angular.forEach($scope.multiCheckbox.checked, function (checkbox, index) {\n\t if (checkbox) {\n\t $scope.model[opts.key].push(to.options[index][to.valueProp || 'value']);\n\t }\n\t });\n\t\n\t // Must make sure we mark as touched because only the last checkbox due to a bug in angular.\n\t $scope.fc.$setTouched();\n\t checkValidity(true);\n\t }\n\t\n\t if (opts.expressionProperties && opts.expressionProperties.required) {\n\t $scope.$watch($scope.options.expressionProperties.required, function (newValue) {\n\t checkValidity(newValue);\n\t });\n\t }\n\t\n\t if ($scope.to.required) {\n\t var unwatchFormControl = $scope.$watch('fc', function (newValue) {\n\t if (!newValue) {\n\t return;\n\t }\n\t checkValidity(true);\n\t unwatchFormControl;\n\t });\n\t }\n\t }]\n\t });\n\t }\n\t addCheckboxType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// some versions of angular don't export the angular module properly,\n\t// so we get it from window in this case.\n\t'use strict';\n\t\n\tvar angular = __webpack_require__(8);\n\tif (!angular.version) {\n\t angular = window.angular;\n\t}\n\tmodule.exports = angular;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addWrappers);\n\t\n\t function addWrappers(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setWrapper([{\n\t name: 'bootstrapLabel',\n\t template: __webpack_require__(17),\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t label: c.string,\n\t required: c.bool.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t }, { name: 'bootstrapHasError', template: __webpack_require__(18) }]);\n\t }\n\t addWrappers.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t __webpack_require__(10)(ngModule);\n\t __webpack_require__(1)(ngModule);\n\t __webpack_require__(12)(ngModule);\n\t __webpack_require__(9)(ngModule);\n\t __webpack_require__(13)(ngModule);\n\t __webpack_require__(14)(ngModule);\n\t};\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _addons = __webpack_require__(15);\n\t\n\tvar _addons2 = _interopRequireDefault(_addons);\n\t\n\tvar _description = __webpack_require__(16);\n\t\n\tvar _description2 = _interopRequireDefault(_description);\n\t\n\texports['default'] = function (ngModule) {\n\t (0, _addons2['default'])(ngModule);\n\t (0, _description2['default'])(ngModule);\n\t};\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_8__;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addRadioType);\n\t\n\t function addRadioType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'radio',\n\t template: __webpack_require__(19),\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: {\n\t noFormControl: false\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addRadioType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addCheckboxType);\n\t\n\t function addCheckboxType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'checkbox',\n\t template: __webpack_require__(20),\n\t wrapper: ['bootstrapHasError'],\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t label: c.string\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addCheckboxType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\tvar ngModuleName = 'formlyBootstrap';\n\tvar angular = __webpack_require__(4);\n\tvar ngModule = angular.module(ngModuleName, [__webpack_require__(2)]);\n\tngModule.constant('formlyBootstrapApiCheck', __webpack_require__(3)({\n\t output: {\n\t prefix: 'angular-formly-bootstrap'\n\t }\n\t}));\n\tngModule.constant('formlyBootstrapVersion', (\"4.3.2\"));\n\t\n\t__webpack_require__(5)(ngModule);\n\t__webpack_require__(6)(ngModule);\n\t__webpack_require__(7)(ngModule);\n\t\n\texports['default'] = ngModuleName;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addInputType);\n\t\n\t function addInputType(formlyConfigProvider) {\n\t formlyConfigProvider.setType({\n\t name: 'input',\n\t template: ' ',\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError']\n\t });\n\t }\n\t addInputType.$inject = [\"formlyConfigProvider\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _defineProperty(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); }\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addSelectType);\n\t\n\t var template = ' ';\n\t\n\t function addSelectType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'select',\n\t template: template,\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: function defaultOptions(options) {\n\t /* jshint maxlen:195 */\n\t var ngOptions = options.templateOptions.ngOptions || 'option[to.valueProp || \\'value\\'] as option[to.labelProp || \\'name\\'] group by option[to.groupProp || \\'group\\'] for option in to.options';\n\t return {\n\t ngModelAttrs: _defineProperty({}, ngOptions, {\n\t value: 'ng-options'\n\t })\n\t };\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional,\n\t groupProp: c.string.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addSelectType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addTextareaType);\n\t\n\t function addTextareaType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'textarea',\n\t template: '',\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: {\n\t ngModelAttrs: {\n\t rows: { attribute: 'rows' },\n\t cols: { attribute: 'cols' }\n\t }\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t rows: c.number.optional,\n\t cols: c.number.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addTextareaType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.run(addAddonsManipulator);\n\t\n\t function addAddonsManipulator(formlyConfig, formlyBootstrapApiCheck) {\n\t var addonTemplate = __webpack_require__(22);\n\t var addonChecker = formlyBootstrapApiCheck.shape({\n\t 'class': formlyBootstrapApiCheck.string.optional,\n\t text: formlyBootstrapApiCheck.string.optional,\n\t onClick: formlyBootstrapApiCheck.func.optional\n\t }).strict.optional;\n\t var api = formlyBootstrapApiCheck.shape({\n\t templateOptions: formlyBootstrapApiCheck.shape({\n\t addonLeft: addonChecker,\n\t addonRight: addonChecker\n\t })\n\t });\n\t formlyConfig.templateManipulators.preWrapper.push(function (template, options) {\n\t if (!options.templateOptions.addonLeft && !options.templateOptions.addonRight) {\n\t return template;\n\t }\n\t formlyBootstrapApiCheck.warn([api], [options]);\n\t return addonTemplate.replace(' ', template);\n\t });\n\t }\n\t addAddonsManipulator.$inject = [\"formlyConfig\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.run(addDescriptionManipulator);\n\t\n\t function addDescriptionManipulator(formlyConfig) {\n\t formlyConfig.templateManipulators.preWrapper.push(function ariaDescribedBy(template, options, scope) {\n\t if (angular.isDefined(options.templateOptions.description)) {\n\t var el = document.createElement('div');\n\t el.appendChild(angular.element(template)[0]);\n\t el.appendChild(angular.element('' + '{{to.description}}' + '
')[0]);\n\t var modelEls = angular.element(el.querySelectorAll('[ng-model]'));\n\t if (modelEls) {\n\t modelEls.attr('aria-describedby', scope.id + '_description');\n\t }\n\t return el.innerHTML;\n\t } else {\n\t return template;\n\t }\n\t });\n\t }\n\t addDescriptionManipulator.$inject = [\"formlyConfig\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n \\n {{to.label}}\\n {{to.required ? '*' : ''}}\\n \\n \\n
\\n\"\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n \\n
\\n\"\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n \\n {{option[to.labelProp || 'name']}}\\n \\n
\\n
\\n\"\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n\\t\\n\\t\\t \\n\\t\\t{{to.label}}\\n\\t\\t{{to.required ? '*' : ''}}\\n\\t \\n
\\n\"\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n \\n {{option[to.labelProp || 'name']}}\\n \\n
\\n
\\n\"\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n {{to.addonLeft.text}} \\n
\\n
\\n
\\n \\n {{to.addonRight.text}} \\n
\\n
\\n\"\n\n/***/ }\n/******/ ])\n});\n;\n//# sourceMappingURL=angular-formly-templates-bootstrap.js.map//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2FuZ3VsYXItZm9ybWx5LXRlbXBsYXRlcy1ib290c3RyYXAvZGlzdC9hbmd1bGFyLWZvcm1seS10ZW1wbGF0ZXMtYm9vdHN0cmFwLmpzP2Y1YjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZCxZQUFZO0FBQ1o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7O0FBRVo7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsUUFBUTtBQUNSLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsUUFBUTtBQUNSO0FBQ0EsTUFBTSxHQUFHLCtEQUErRDtBQUN4RTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRix1Q0FBdUMsdUNBQXVDLGtCQUFrQjs7QUFFaEc7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsUUFBUTtBQUNSO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixRQUFRO0FBQ1I7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRiw0Q0FBNEMseUNBQXlDLHFFQUFxRSxFQUFFOztBQUU1SjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixRQUFRO0FBQ1I7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixvQkFBb0I7QUFDdEMsa0JBQWtCO0FBQ2xCO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLFFBQVE7QUFDUjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUlBQXVJLGdCQUFnQjtBQUN2SjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBLDJDQUEyQyxJQUFJLG1DQUFtQyxVQUFVLFFBQVEsd0JBQXdCOztBQUU1SCxPQUFPO0FBQ1A7QUFDQTs7QUFFQSx5REFBeUQsdUJBQXVCOztBQUVoRixPQUFPO0FBQ1A7QUFDQTs7QUFFQSxpTEFBaUwsa0JBQWtCLG1KQUFtSixnQ0FBZ0M7O0FBRXRYLE9BQU87QUFDUDtBQUNBOztBQUVBLHFMQUFxTCxVQUFVLFFBQVEsd0JBQXdCOztBQUUvTixPQUFPO0FBQ1A7QUFDQTs7QUFFQSx1TEFBdUwsa0JBQWtCLHlIQUF5SCxnQ0FBZ0M7O0FBRWxXLE9BQU87QUFDUDtBQUNBOztBQUVBLG9DQUFvQyw2Q0FBNkMsaUdBQWlHLHFEQUFxRCxxRkFBcUYsb0JBQW9CLGtGQUFrRixtQkFBbUIsK0pBQStKLHNEQUFzRCxzRkFBc0YscUJBQXFCLG9GQUFvRixvQkFBb0I7O0FBRTcxQjtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGFuZ3VsYXItZm9ybWx5LXRlbXBsYXRlcy1ib290c3RyYXAgdmVyc2lvbiA0LjMuMiBidWlsdCB3aXRoIOKZpSBieSBBc3RyaXNtIDxhc3RyaXNtc0BnbWFpbC5jb20+LCBLZW50IEMuIERvZGRzIDxrZW50QGRvZGRzZmFtaWx5LnVzPiAow7Mgw6xfw60pPcOzw7I9KMOsX8OtIMOyKVxuXG4oZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJhbmd1bGFyLWZvcm1seVwiKSwgcmVxdWlyZShcImFwaS1jaGVja1wiKSwgcmVxdWlyZShcImFuZ3VsYXJcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiYW5ndWxhci1mb3JtbHlcIiwgXCJhcGktY2hlY2tcIiwgXCJhbmd1bGFyXCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm5nRm9ybWx5VGVtcGxhdGVzQm9vdHN0cmFwXCJdID0gZmFjdG9yeShyZXF1aXJlKFwiYW5ndWxhci1mb3JtbHlcIiksIHJlcXVpcmUoXCJhcGktY2hlY2tcIiksIHJlcXVpcmUoXCJhbmd1bGFyXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJuZ0Zvcm1seVRlbXBsYXRlc0Jvb3RzdHJhcFwiXSA9IGZhY3Rvcnkocm9vdFtcIm5nRm9ybWx5XCJdLCByb290W1wiYXBpQ2hlY2tcIl0sIHJvb3RbXCJhbmd1bGFyXCJdKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMl9fLCBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzNfXywgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV84X18pIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fSxcbi8qKioqKiovIFx0XHRcdGlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGxvYWRlZDogZmFsc2Vcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cbi8qKiovIH0sXG4vKiAxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAobmdNb2R1bGUpIHtcblx0ICBuZ01vZHVsZS5jb25maWcoYWRkQ2hlY2tib3hUeXBlKTtcblx0XG5cdCAgZnVuY3Rpb24gYWRkQ2hlY2tib3hUeXBlKGZvcm1seUNvbmZpZ1Byb3ZpZGVyLCBmb3JtbHlCb290c3RyYXBBcGlDaGVjaykge1xuXHQgICAgdmFyIGMgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjaztcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuXHQgICAgICBuYW1lOiAnbXVsdGlDaGVja2JveCcsXG5cdCAgICAgIHRlbXBsYXRlOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKSxcblx0ICAgICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddLFxuXHQgICAgICBhcGlDaGVjazoge1xuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczogYy5zaGFwZSh7XG5cdCAgICAgICAgICBvcHRpb25zOiBjLmFycmF5T2YoYy5vYmplY3QpLFxuXHQgICAgICAgICAgbGFiZWxQcm9wOiBjLnN0cmluZy5vcHRpb25hbCxcblx0ICAgICAgICAgIHZhbHVlUHJvcDogYy5zdHJpbmcub3B0aW9uYWxcblx0ICAgICAgICB9KVxuXHQgICAgICB9LFxuXHQgICAgICBkZWZhdWx0T3B0aW9uczoge1xuXHQgICAgICAgIG5vRm9ybUNvbnRyb2w6IGZhbHNlLFxuXHQgICAgICAgIG5nTW9kZWxBdHRyczoge1xuXHQgICAgICAgICAgcmVxdWlyZWQ6IHtcblx0ICAgICAgICAgICAgYXR0cmlidXRlOiAnJyxcblx0ICAgICAgICAgICAgYm91bmQ6ICcnXG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9LFxuXHQgICAgICBhcGlDaGVja0luc3RhbmNlOiBjLFxuXHQgICAgICBjb250cm9sbGVyOiAvKiBAbmdJbmplY3QgKi9bXCIkc2NvcGVcIiwgZnVuY3Rpb24gY29udHJvbGxlcigkc2NvcGUpIHtcblx0ICAgICAgICB2YXIgdG8gPSAkc2NvcGUudG87XG5cdCAgICAgICAgdmFyIG9wdHMgPSAkc2NvcGUub3B0aW9ucztcblx0ICAgICAgICAkc2NvcGUubXVsdGlDaGVja2JveCA9IHtcblx0ICAgICAgICAgIGNoZWNrZWQ6IFtdLFxuXHQgICAgICAgICAgY2hhbmdlOiBzZXRNb2RlbFxuXHQgICAgICAgIH07XG5cdFxuXHQgICAgICAgIC8vIGluaXRpYWxpemUgdGhlIGNoZWNrYm94ZXMgY2hlY2sgcHJvcGVydHlcblx0ICAgICAgICB2YXIgbW9kZWxWYWx1ZSA9ICRzY29wZS5tb2RlbFtvcHRzLmtleV07XG5cdCAgICAgICAgaWYgKGFuZ3VsYXIuaXNBcnJheShtb2RlbFZhbHVlKSkge1xuXHQgICAgICAgICAgKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIHZhbHVlUHJvcCA9IHRvLnZhbHVlUHJvcCB8fCAndmFsdWUnO1xuXHQgICAgICAgICAgICBhbmd1bGFyLmZvckVhY2godG8ub3B0aW9ucywgZnVuY3Rpb24gKHYsIGluZGV4KSB7XG5cdCAgICAgICAgICAgICAgJHNjb3BlLm11bHRpQ2hlY2tib3guY2hlY2tlZFtpbmRleF0gPSBtb2RlbFZhbHVlLmluZGV4T2Yodlt2YWx1ZVByb3BdKSAhPT0gLTE7XG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfSkoKTtcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGZ1bmN0aW9uIGNoZWNrVmFsaWRpdHkoZXhwcmVzc2lvblZhbHVlKSB7XG5cdCAgICAgICAgICB2YXIgdmFsaWQgPSBhbmd1bGFyLmlzQXJyYXkoJHNjb3BlLm1vZGVsW29wdHMua2V5XSkgJiYgJHNjb3BlLm1vZGVsW29wdHMua2V5XS5sZW5ndGggPiAwICYmIGV4cHJlc3Npb25WYWx1ZTtcblx0XG5cdCAgICAgICAgICAkc2NvcGUuZmMuJHNldFZhbGlkaXR5KCdyZXF1aXJlZCcsIHZhbGlkKTtcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGZ1bmN0aW9uIHNldE1vZGVsKCkge1xuXHQgICAgICAgICAgJHNjb3BlLm1vZGVsW29wdHMua2V5XSA9IFtdO1xuXHQgICAgICAgICAgYW5ndWxhci5mb3JFYWNoKCRzY29wZS5tdWx0aUNoZWNrYm94LmNoZWNrZWQsIGZ1bmN0aW9uIChjaGVja2JveCwgaW5kZXgpIHtcblx0ICAgICAgICAgICAgaWYgKGNoZWNrYm94KSB7XG5cdCAgICAgICAgICAgICAgJHNjb3BlLm1vZGVsW29wdHMua2V5XS5wdXNoKHRvLm9wdGlvbnNbaW5kZXhdW3RvLnZhbHVlUHJvcCB8fCAndmFsdWUnXSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0pO1xuXHRcblx0ICAgICAgICAgIC8vIE11c3QgbWFrZSBzdXJlIHdlIG1hcmsgYXMgdG91Y2hlZCBiZWNhdXNlIG9ubHkgdGhlIGxhc3QgY2hlY2tib3ggZHVlIHRvIGEgYnVnIGluIGFuZ3VsYXIuXG5cdCAgICAgICAgICAkc2NvcGUuZmMuJHNldFRvdWNoZWQoKTtcblx0ICAgICAgICAgIGNoZWNrVmFsaWRpdHkodHJ1ZSk7XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICBpZiAob3B0cy5leHByZXNzaW9uUHJvcGVydGllcyAmJiBvcHRzLmV4cHJlc3Npb25Qcm9wZXJ0aWVzLnJlcXVpcmVkKSB7XG5cdCAgICAgICAgICAkc2NvcGUuJHdhdGNoKCRzY29wZS5vcHRpb25zLmV4cHJlc3Npb25Qcm9wZXJ0aWVzLnJlcXVpcmVkLCBmdW5jdGlvbiAobmV3VmFsdWUpIHtcblx0ICAgICAgICAgICAgY2hlY2tWYWxpZGl0eShuZXdWYWx1ZSk7XG5cdCAgICAgICAgICB9KTtcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGlmICgkc2NvcGUudG8ucmVxdWlyZWQpIHtcblx0ICAgICAgICAgIHZhciB1bndhdGNoRm9ybUNvbnRyb2wgPSAkc2NvcGUuJHdhdGNoKCdmYycsIGZ1bmN0aW9uIChuZXdWYWx1ZSkge1xuXHQgICAgICAgICAgICBpZiAoIW5ld1ZhbHVlKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGNoZWNrVmFsaWRpdHkodHJ1ZSk7XG5cdCAgICAgICAgICAgIHVud2F0Y2hGb3JtQ29udHJvbDtcblx0ICAgICAgICAgIH0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfV1cblx0ICAgIH0pO1xuXHQgIH1cblx0ICBhZGRDaGVja2JveFR5cGUuJGluamVjdCA9IFtcImZvcm1seUNvbmZpZ1Byb3ZpZGVyXCIsIFwiZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2tcIl07XG5cdH07XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cbi8qKiovIH0sXG4vKiAyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMl9fO1xuXG4vKioqLyB9LFxuLyogMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzNfXztcblxuLyoqKi8gfSxcbi8qIDQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIHNvbWUgdmVyc2lvbnMgb2YgYW5ndWxhciBkb24ndCBleHBvcnQgdGhlIGFuZ3VsYXIgbW9kdWxlIHByb3Blcmx5LFxuXHQvLyBzbyB3ZSBnZXQgaXQgZnJvbSB3aW5kb3cgaW4gdGhpcyBjYXNlLlxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgYW5ndWxhciA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdGlmICghYW5ndWxhci52ZXJzaW9uKSB7XG5cdCAgYW5ndWxhciA9IHdpbmRvdy5hbmd1bGFyO1xuXHR9XG5cdG1vZHVsZS5leHBvcnRzID0gYW5ndWxhcjtcblxuLyoqKi8gfSxcbi8qIDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgIG5nTW9kdWxlLmNvbmZpZyhhZGRXcmFwcGVycyk7XG5cdFxuXHQgIGZ1bmN0aW9uIGFkZFdyYXBwZXJzKGZvcm1seUNvbmZpZ1Byb3ZpZGVyLCBmb3JtbHlCb290c3RyYXBBcGlDaGVjaykge1xuXHQgICAgdmFyIGMgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjaztcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFdyYXBwZXIoW3tcblx0ICAgICAgbmFtZTogJ2Jvb3RzdHJhcExhYmVsJyxcblx0ICAgICAgdGVtcGxhdGU6IF9fd2VicGFja19yZXF1aXJlX18oMTcpLFxuXHQgICAgICBhcGlDaGVjazoge1xuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczogYy5zaGFwZSh7XG5cdCAgICAgICAgICBsYWJlbDogYy5zdHJpbmcsXG5cdCAgICAgICAgICByZXF1aXJlZDogYy5ib29sLm9wdGlvbmFsXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSwgeyBuYW1lOiAnYm9vdHN0cmFwSGFzRXJyb3InLCB0ZW1wbGF0ZTogX193ZWJwYWNrX3JlcXVpcmVfXygxOCkgfV0pO1xuXHQgIH1cblx0ICBhZGRXcmFwcGVycy4kaW5qZWN0ID0gW1wiZm9ybWx5Q29uZmlnUHJvdmlkZXJcIiwgXCJmb3JtbHlCb290c3RyYXBBcGlDaGVja1wiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgIF9fd2VicGFja19yZXF1aXJlX18oMTApKG5nTW9kdWxlKTtcblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpKG5nTW9kdWxlKTtcblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKShuZ01vZHVsZSk7XG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXyg5KShuZ01vZHVsZSk7XG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXygxMykobmdNb2R1bGUpO1xuXHQgIF9fd2VicGFja19yZXF1aXJlX18oMTQpKG5nTW9kdWxlKTtcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG4vKioqLyB9LFxuLyogNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXHRcblx0dmFyIF9hZGRvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcblx0XG5cdHZhciBfYWRkb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FkZG9ucyk7XG5cdFxuXHR2YXIgX2Rlc2NyaXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNik7XG5cdFxuXHR2YXIgX2Rlc2NyaXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Rlc2NyaXB0aW9uKTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgICgwLCBfYWRkb25zMlsnZGVmYXVsdCddKShuZ01vZHVsZSk7XG5cdCAgKDAsIF9kZXNjcmlwdGlvbjJbJ2RlZmF1bHQnXSkobmdNb2R1bGUpO1xuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cbi8qKiovIH0sXG4vKiA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfOF9fO1xuXG4vKioqLyB9LFxuLyogOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0ZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKG5nTW9kdWxlKSB7XG5cdCAgbmdNb2R1bGUuY29uZmlnKGFkZFJhZGlvVHlwZSk7XG5cdFxuXHQgIGZ1bmN0aW9uIGFkZFJhZGlvVHlwZShmb3JtbHlDb25maWdQcm92aWRlciwgZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2spIHtcblx0ICAgIHZhciBjID0gZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2s7XG5cdCAgICBmb3JtbHlDb25maWdQcm92aWRlci5zZXRUeXBlKHtcblx0ICAgICAgbmFtZTogJ3JhZGlvJyxcblx0ICAgICAgdGVtcGxhdGU6IF9fd2VicGFja19yZXF1aXJlX18oMTkpLFxuXHQgICAgICB3cmFwcGVyOiBbJ2Jvb3RzdHJhcExhYmVsJywgJ2Jvb3RzdHJhcEhhc0Vycm9yJ10sXG5cdCAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG5cdCAgICAgICAgbm9Gb3JtQ29udHJvbDogZmFsc2Vcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2s6IHtcblx0ICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IGMuc2hhcGUoe1xuXHQgICAgICAgICAgb3B0aW9uczogYy5hcnJheU9mKGMub2JqZWN0KSxcblx0ICAgICAgICAgIGxhYmVsUHJvcDogYy5zdHJpbmcub3B0aW9uYWwsXG5cdCAgICAgICAgICB2YWx1ZVByb3A6IGMuc3RyaW5nLm9wdGlvbmFsXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSk7XG5cdCAgfVxuXHQgIGFkZFJhZGlvVHlwZS4kaW5qZWN0ID0gW1wiZm9ybWx5Q29uZmlnUHJvdmlkZXJcIiwgXCJmb3JtbHlCb290c3RyYXBBcGlDaGVja1wiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDEwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAobmdNb2R1bGUpIHtcblx0ICBuZ01vZHVsZS5jb25maWcoYWRkQ2hlY2tib3hUeXBlKTtcblx0XG5cdCAgZnVuY3Rpb24gYWRkQ2hlY2tib3hUeXBlKGZvcm1seUNvbmZpZ1Byb3ZpZGVyLCBmb3JtbHlCb290c3RyYXBBcGlDaGVjaykge1xuXHQgICAgdmFyIGMgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjaztcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuXHQgICAgICBuYW1lOiAnY2hlY2tib3gnLFxuXHQgICAgICB0ZW1wbGF0ZTogX193ZWJwYWNrX3JlcXVpcmVfXygyMCksXG5cdCAgICAgIHdyYXBwZXI6IFsnYm9vdHN0cmFwSGFzRXJyb3InXSxcblx0ICAgICAgYXBpQ2hlY2s6IHtcblx0ICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IGMuc2hhcGUoe1xuXHQgICAgICAgICAgbGFiZWw6IGMuc3RyaW5nXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSk7XG5cdCAgfVxuXHQgIGFkZENoZWNrYm94VHlwZS4kaW5qZWN0ID0gW1wiZm9ybWx5Q29uZmlnUHJvdmlkZXJcIiwgXCJmb3JtbHlCb290c3RyYXBBcGlDaGVja1wiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDExICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdHZhciBuZ01vZHVsZU5hbWUgPSAnZm9ybWx5Qm9vdHN0cmFwJztcblx0dmFyIGFuZ3VsYXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHR2YXIgbmdNb2R1bGUgPSBhbmd1bGFyLm1vZHVsZShuZ01vZHVsZU5hbWUsIFtfX3dlYnBhY2tfcmVxdWlyZV9fKDIpXSk7XG5cdG5nTW9kdWxlLmNvbnN0YW50KCdmb3JtbHlCb290c3RyYXBBcGlDaGVjaycsIF9fd2VicGFja19yZXF1aXJlX18oMykoe1xuXHQgIG91dHB1dDoge1xuXHQgICAgcHJlZml4OiAnYW5ndWxhci1mb3JtbHktYm9vdHN0cmFwJ1xuXHQgIH1cblx0fSkpO1xuXHRuZ01vZHVsZS5jb25zdGFudCgnZm9ybWx5Qm9vdHN0cmFwVmVyc2lvbicsIChcIjQuMy4yXCIpKTtcblx0XG5cdF9fd2VicGFja19yZXF1aXJlX18oNSkobmdNb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDYpKG5nTW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg3KShuZ01vZHVsZSk7XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBuZ01vZHVsZU5hbWU7XG5cdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG4vKioqLyB9LFxuLyogMTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgIG5nTW9kdWxlLmNvbmZpZyhhZGRJbnB1dFR5cGUpO1xuXHRcblx0ICBmdW5jdGlvbiBhZGRJbnB1dFR5cGUoZm9ybWx5Q29uZmlnUHJvdmlkZXIpIHtcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuXHQgICAgICBuYW1lOiAnaW5wdXQnLFxuXHQgICAgICB0ZW1wbGF0ZTogJzxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nLW1vZGVsPVwibW9kZWxbb3B0aW9ucy5rZXldXCI+Jyxcblx0ICAgICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddXG5cdCAgICB9KTtcblx0ICB9XG5cdCAgYWRkSW5wdXRUeXBlLiRpbmplY3QgPSBbXCJmb3JtbHlDb25maWdQcm92aWRlclwiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDEzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHRmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAobmdNb2R1bGUpIHtcblx0ICBuZ01vZHVsZS5jb25maWcoYWRkU2VsZWN0VHlwZSk7XG5cdFxuXHQgIHZhciB0ZW1wbGF0ZSA9ICc8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmctbW9kZWw9XCJtb2RlbFtvcHRpb25zLmtleV1cIj48L3NlbGVjdD4nO1xuXHRcblx0ICBmdW5jdGlvbiBhZGRTZWxlY3RUeXBlKGZvcm1seUNvbmZpZ1Byb3ZpZGVyLCBmb3JtbHlCb290c3RyYXBBcGlDaGVjaykge1xuXHQgICAgdmFyIGMgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjaztcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuXHQgICAgICBuYW1lOiAnc2VsZWN0Jyxcblx0ICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuXHQgICAgICB3cmFwcGVyOiBbJ2Jvb3RzdHJhcExhYmVsJywgJ2Jvb3RzdHJhcEhhc0Vycm9yJ10sXG5cdCAgICAgIGRlZmF1bHRPcHRpb25zOiBmdW5jdGlvbiBkZWZhdWx0T3B0aW9ucyhvcHRpb25zKSB7XG5cdCAgICAgICAgLyoganNoaW50IG1heGxlbjoxOTUgKi9cblx0ICAgICAgICB2YXIgbmdPcHRpb25zID0gb3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnMubmdPcHRpb25zIHx8ICdvcHRpb25bdG8udmFsdWVQcm9wIHx8IFxcJ3ZhbHVlXFwnXSBhcyBvcHRpb25bdG8ubGFiZWxQcm9wIHx8IFxcJ25hbWVcXCddIGdyb3VwIGJ5IG9wdGlvblt0by5ncm91cFByb3AgfHwgXFwnZ3JvdXBcXCddIGZvciBvcHRpb24gaW4gdG8ub3B0aW9ucyc7XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIG5nTW9kZWxBdHRyczogX2RlZmluZVByb3BlcnR5KHt9LCBuZ09wdGlvbnMsIHtcblx0ICAgICAgICAgICAgdmFsdWU6ICduZy1vcHRpb25zJ1xuXHQgICAgICAgICAgfSlcblx0ICAgICAgICB9O1xuXHQgICAgICB9LFxuXHQgICAgICBhcGlDaGVjazoge1xuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczogYy5zaGFwZSh7XG5cdCAgICAgICAgICBvcHRpb25zOiBjLmFycmF5T2YoYy5vYmplY3QpLFxuXHQgICAgICAgICAgbGFiZWxQcm9wOiBjLnN0cmluZy5vcHRpb25hbCxcblx0ICAgICAgICAgIHZhbHVlUHJvcDogYy5zdHJpbmcub3B0aW9uYWwsXG5cdCAgICAgICAgICBncm91cFByb3A6IGMuc3RyaW5nLm9wdGlvbmFsXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSk7XG5cdCAgfVxuXHQgIGFkZFNlbGVjdFR5cGUuJGluamVjdCA9IFtcImZvcm1seUNvbmZpZ1Byb3ZpZGVyXCIsIFwiZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2tcIl07XG5cdH07XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cbi8qKiovIH0sXG4vKiAxNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0ZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKG5nTW9kdWxlKSB7XG5cdCAgbmdNb2R1bGUuY29uZmlnKGFkZFRleHRhcmVhVHlwZSk7XG5cdFxuXHQgIGZ1bmN0aW9uIGFkZFRleHRhcmVhVHlwZShmb3JtbHlDb25maWdQcm92aWRlciwgZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2spIHtcblx0ICAgIHZhciBjID0gZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2s7XG5cdCAgICBmb3JtbHlDb25maWdQcm92aWRlci5zZXRUeXBlKHtcblx0ICAgICAgbmFtZTogJ3RleHRhcmVhJyxcblx0ICAgICAgdGVtcGxhdGU6ICc8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuZy1tb2RlbD1cIm1vZGVsW29wdGlvbnMua2V5XVwiPjwvdGV4dGFyZWE+Jyxcblx0ICAgICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddLFxuXHQgICAgICBkZWZhdWx0T3B0aW9uczoge1xuXHQgICAgICAgIG5nTW9kZWxBdHRyczoge1xuXHQgICAgICAgICAgcm93czogeyBhdHRyaWJ1dGU6ICdyb3dzJyB9LFxuXHQgICAgICAgICAgY29sczogeyBhdHRyaWJ1dGU6ICdjb2xzJyB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9LFxuXHQgICAgICBhcGlDaGVjazoge1xuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczogYy5zaGFwZSh7XG5cdCAgICAgICAgICByb3dzOiBjLm51bWJlci5vcHRpb25hbCxcblx0ICAgICAgICAgIGNvbHM6IGMubnVtYmVyLm9wdGlvbmFsXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSk7XG5cdCAgfVxuXHQgIGFkZFRleHRhcmVhVHlwZS4kaW5qZWN0ID0gW1wiZm9ybWx5Q29uZmlnUHJvdmlkZXJcIiwgXCJmb3JtbHlCb290c3RyYXBBcGlDaGVja1wiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDE1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAobmdNb2R1bGUpIHtcblx0ICBuZ01vZHVsZS5ydW4oYWRkQWRkb25zTWFuaXB1bGF0b3IpO1xuXHRcblx0ICBmdW5jdGlvbiBhZGRBZGRvbnNNYW5pcHVsYXRvcihmb3JtbHlDb25maWcsIGZvcm1seUJvb3RzdHJhcEFwaUNoZWNrKSB7XG5cdCAgICB2YXIgYWRkb25UZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpO1xuXHQgICAgdmFyIGFkZG9uQ2hlY2tlciA9IGZvcm1seUJvb3RzdHJhcEFwaUNoZWNrLnNoYXBlKHtcblx0ICAgICAgJ2NsYXNzJzogZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2suc3RyaW5nLm9wdGlvbmFsLFxuXHQgICAgICB0ZXh0OiBmb3JtbHlCb290c3RyYXBBcGlDaGVjay5zdHJpbmcub3B0aW9uYWwsXG5cdCAgICAgIG9uQ2xpY2s6IGZvcm1seUJvb3RzdHJhcEFwaUNoZWNrLmZ1bmMub3B0aW9uYWxcblx0ICAgIH0pLnN0cmljdC5vcHRpb25hbDtcblx0ICAgIHZhciBhcGkgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjay5zaGFwZSh7XG5cdCAgICAgIHRlbXBsYXRlT3B0aW9uczogZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgICAgIGFkZG9uTGVmdDogYWRkb25DaGVja2VyLFxuXHQgICAgICAgIGFkZG9uUmlnaHQ6IGFkZG9uQ2hlY2tlclxuXHQgICAgICB9KVxuXHQgICAgfSk7XG5cdCAgICBmb3JtbHlDb25maWcudGVtcGxhdGVNYW5pcHVsYXRvcnMucHJlV3JhcHBlci5wdXNoKGZ1bmN0aW9uICh0ZW1wbGF0ZSwgb3B0aW9ucykge1xuXHQgICAgICBpZiAoIW9wdGlvbnMudGVtcGxhdGVPcHRpb25zLmFkZG9uTGVmdCAmJiAhb3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnMuYWRkb25SaWdodCkge1xuXHQgICAgICAgIHJldHVybiB0ZW1wbGF0ZTtcblx0ICAgICAgfVxuXHQgICAgICBmb3JtbHlCb290c3RyYXBBcGlDaGVjay53YXJuKFthcGldLCBbb3B0aW9uc10pO1xuXHQgICAgICByZXR1cm4gYWRkb25UZW1wbGF0ZS5yZXBsYWNlKCc8Zm9ybWx5LXRyYW5zY2x1ZGU+PC9mb3JtbHktdHJhbnNjbHVkZT4nLCB0ZW1wbGF0ZSk7XG5cdCAgICB9KTtcblx0ICB9XG5cdCAgYWRkQWRkb25zTWFuaXB1bGF0b3IuJGluamVjdCA9IFtcImZvcm1seUNvbmZpZ1wiLCBcImZvcm1seUJvb3RzdHJhcEFwaUNoZWNrXCJdO1xuXHR9O1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG4vKioqLyB9LFxuLyogMTYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgIG5nTW9kdWxlLnJ1bihhZGREZXNjcmlwdGlvbk1hbmlwdWxhdG9yKTtcblx0XG5cdCAgZnVuY3Rpb24gYWRkRGVzY3JpcHRpb25NYW5pcHVsYXRvcihmb3JtbHlDb25maWcpIHtcblx0ICAgIGZvcm1seUNvbmZpZy50ZW1wbGF0ZU1hbmlwdWxhdG9ycy5wcmVXcmFwcGVyLnB1c2goZnVuY3Rpb24gYXJpYURlc2NyaWJlZEJ5KHRlbXBsYXRlLCBvcHRpb25zLCBzY29wZSkge1xuXHQgICAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQob3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24pKSB7XG5cdCAgICAgICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdCAgICAgICAgZWwuYXBwZW5kQ2hpbGQoYW5ndWxhci5lbGVtZW50KHRlbXBsYXRlKVswXSk7XG5cdCAgICAgICAgZWwuYXBwZW5kQ2hpbGQoYW5ndWxhci5lbGVtZW50KCc8cCBpZD1cIicgKyBzY29wZS5pZCArICdfZGVzY3JpcHRpb25cIicgKyAnY2xhc3M9XCJoZWxwLWJsb2NrXCInICsgJ25nLWlmPVwidG8uZGVzY3JpcHRpb25cIj4nICsgJ3t7dG8uZGVzY3JpcHRpb259fScgKyAnPC9wPicpWzBdKTtcblx0ICAgICAgICB2YXIgbW9kZWxFbHMgPSBhbmd1bGFyLmVsZW1lbnQoZWwucXVlcnlTZWxlY3RvckFsbCgnW25nLW1vZGVsXScpKTtcblx0ICAgICAgICBpZiAobW9kZWxFbHMpIHtcblx0ICAgICAgICAgIG1vZGVsRWxzLmF0dHIoJ2FyaWEtZGVzY3JpYmVkYnknLCBzY29wZS5pZCArICdfZGVzY3JpcHRpb24nKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGVsLmlubmVySFRNTDtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICByZXR1cm4gdGVtcGxhdGU7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgIH1cblx0ICBhZGREZXNjcmlwdGlvbk1hbmlwdWxhdG9yLiRpbmplY3QgPSBbXCJmb3JtbHlDb25maWdcIl07XG5cdH07XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cbi8qKiovIH0sXG4vKiAxNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBcIjxkaXY+XFxuICA8bGFiZWwgZm9yPVxcXCJ7e2lkfX1cXFwiIGNsYXNzPVxcXCJjb250cm9sLWxhYmVsXFxcIj5cXG4gICAge3t0by5sYWJlbH19XFxuICAgIHt7dG8ucmVxdWlyZWQgPyAnKicgOiAnJ319XFxuICA8L2xhYmVsPlxcbiAgPGZvcm1seS10cmFuc2NsdWRlPjwvZm9ybWx5LXRyYW5zY2x1ZGU+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfSxcbi8qIDE4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCIgbmctY2xhc3M9XFxcInsnaGFzLWVycm9yJzogc2hvd0Vycm9yfVxcXCI+XFxuICA8Zm9ybWx5LXRyYW5zY2x1ZGU+PC9mb3JtbHktdHJhbnNjbHVkZT5cXG48L2Rpdj5cXG5cIlxuXG4vKioqLyB9LFxuLyogMTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IGNsYXNzPVxcXCJyYWRpby1ncm91cFxcXCI+XFxuICA8ZGl2IG5nLXJlcGVhdD1cXFwiKGtleSwgb3B0aW9uKSBpbiB0by5vcHRpb25zXFxcIiBjbGFzcz1cXFwicmFkaW9cXFwiPlxcbiAgICA8bGFiZWw+XFxuICAgICAgPGlucHV0IHR5cGU9XFxcInJhZGlvXFxcIlxcbiAgICAgICAgICAgICBpZD1cXFwie3tpZCArICdfJysgJGluZGV4fX1cXFwiXFxuICAgICAgICAgICAgIHRhYmluZGV4PVxcXCIwXFxcIlxcbiAgICAgICAgICAgICBuZy12YWx1ZT1cXFwib3B0aW9uW3RvLnZhbHVlUHJvcCB8fCAndmFsdWUnXVxcXCJcXG4gICAgICAgICAgICAgbmctbW9kZWw9XFxcIm1vZGVsW29wdGlvbnMua2V5XVxcXCI+XFxuICAgICAge3tvcHRpb25bdG8ubGFiZWxQcm9wIHx8ICduYW1lJ119fVxcbiAgICA8L2xhYmVsPlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfSxcbi8qIDIwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwiY2hlY2tib3hcXFwiPlxcblxcdDxsYWJlbD5cXG5cXHRcXHQ8aW5wdXQgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICBjbGFzcz1cXFwiZm9ybWx5LWZpZWxkLWNoZWNrYm94XFxcIlxcblxcdFxcdCAgICAgICBuZy1tb2RlbD1cXFwibW9kZWxbb3B0aW9ucy5rZXldXFxcIj5cXG5cXHRcXHR7e3RvLmxhYmVsfX1cXG5cXHRcXHR7e3RvLnJlcXVpcmVkID8gJyonIDogJyd9fVxcblxcdDwvbGFiZWw+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfSxcbi8qIDIxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicmFkaW8tZ3JvdXBcXFwiPlxcbiAgPGRpdiBuZy1yZXBlYXQ9XFxcIihrZXksIG9wdGlvbikgaW4gdG8ub3B0aW9uc1xcXCIgY2xhc3M9XFxcImNoZWNrYm94XFxcIj5cXG4gICAgPGxhYmVsPlxcbiAgICAgIDxpbnB1dCB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICAgaWQ9XFxcInt7aWQgKyAnXycrICRpbmRleH19XFxcIlxcbiAgICAgICAgICAgICBuZy1tb2RlbD1cXFwibXVsdGlDaGVja2JveC5jaGVja2VkWyRpbmRleF1cXFwiXFxuICAgICAgICAgICAgIG5nLWNoYW5nZT1cXFwibXVsdGlDaGVja2JveC5jaGFuZ2UoKVxcXCI+XFxuICAgICAge3tvcHRpb25bdG8ubGFiZWxQcm9wIHx8ICduYW1lJ119fVxcbiAgICA8L2xhYmVsPlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfSxcbi8qIDIyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBuZy1jbGFzcz1cXFwieydpbnB1dC1ncm91cCc6IHRvLmFkZG9uTGVmdCB8fCB0by5hZGRvblJpZ2h0fVxcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcImlucHV0LWdyb3VwLWFkZG9uXFxcIlxcbiAgICAgICAgIG5nLWlmPVxcXCJ0by5hZGRvbkxlZnRcXFwiXFxuICAgICAgICAgbmctc3R5bGU9XFxcIntjdXJzb3I6IHRvLmFkZG9uTGVmdC5vbkNsaWNrID8gJ3BvaW50ZXInIDogJ2luaGVyaXQnfVxcXCJcXG4gICAgICAgICBuZy1jbGljaz1cXFwidG8uYWRkb25MZWZ0Lm9uQ2xpY2sob3B0aW9ucywgdGhpcylcXFwiPlxcbiAgICAgICAgPGkgY2xhc3M9XFxcInt7dG8uYWRkb25MZWZ0LmNsYXNzfX1cXFwiIG5nLWlmPVxcXCJ0by5hZGRvbkxlZnQuY2xhc3NcXFwiPjwvaT5cXG4gICAgICAgIDxzcGFuIG5nLWlmPVxcXCJ0by5hZGRvbkxlZnQudGV4dFxcXCI+e3t0by5hZGRvbkxlZnQudGV4dH19PC9zcGFuPlxcbiAgICA8L2Rpdj5cXG4gICAgPGZvcm1seS10cmFuc2NsdWRlPjwvZm9ybWx5LXRyYW5zY2x1ZGU+XFxuICAgIDxkaXYgY2xhc3M9XFxcImlucHV0LWdyb3VwLWFkZG9uXFxcIlxcbiAgICAgICAgIG5nLWlmPVxcXCJ0by5hZGRvblJpZ2h0XFxcIlxcbiAgICAgICAgIG5nLXN0eWxlPVxcXCJ7Y3Vyc29yOiB0by5hZGRvblJpZ2h0Lm9uQ2xpY2sgPyAncG9pbnRlcicgOiAnaW5oZXJpdCd9XFxcIlxcbiAgICAgICAgIG5nLWNsaWNrPVxcXCJ0by5hZGRvblJpZ2h0Lm9uQ2xpY2sob3B0aW9ucywgdGhpcylcXFwiPlxcbiAgICAgICAgPGkgY2xhc3M9XFxcInt7dG8uYWRkb25SaWdodC5jbGFzc319XFxcIiBuZy1pZj1cXFwidG8uYWRkb25SaWdodC5jbGFzc1xcXCI+PC9pPlxcbiAgICAgICAgPHNwYW4gbmctaWY9XFxcInRvLmFkZG9uUmlnaHQudGV4dFxcXCI+e3t0by5hZGRvblJpZ2h0LnRleHR9fTwvc3Bhbj5cXG4gICAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfVxuLyoqKioqKi8gXSlcbn0pO1xuO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YW5ndWxhci1mb3JtbHktdGVtcGxhdGVzLWJvb3RzdHJhcC5qcy5tYXBcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vYW5ndWxhci1mb3JtbHktdGVtcGxhdGVzLWJvb3RzdHJhcC9kaXN0L2FuZ3VsYXItZm9ybWx5LXRlbXBsYXRlcy1ib290c3RyYXAuanNcbi8vIG1vZHVsZSBpZCA9IDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 6 */
+/***/ function(module, exports) {
+
+ eval("// removed by extract-text-webpack-plugin//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L3N0eWxlL2RyYWdfYW5kX2Ryb3Auc2Nzcz9lZjNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9zdHlsZS9kcmFnX2FuZF9kcm9wLnNjc3Ncbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 7 */,
+/* 8 */,
+/* 9 */,
+/* 10 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _edaDragDropWayFormlyConfig = __webpack_require__(11);\n\nvar _edaDragDropWayFormlyConfig2 = _interopRequireDefault(_edaDragDropWayFormlyConfig);\n\nvar _edaDragDropWayDragDropConfig = __webpack_require__(12);\n\nvar _edaDragDropWayDragDropConfig2 = _interopRequireDefault(_edaDragDropWayDragDropConfig);\n\nvar _edaDragDropWayCore = __webpack_require__(14);\n\nvar _edaDragDropWayCore2 = _interopRequireDefault(_edaDragDropWayCore);\n\nvar _edaDragDropWayLeftPanel = __webpack_require__(15);\n\nvar _edaDragDropWayLeftPanel2 = _interopRequireDefault(_edaDragDropWayLeftPanel);\n\nvar _edaDragDropWayFormlyProxyFormFieldManage = __webpack_require__(49);\n\nvar _edaDragDropWayFormlyProxyFormFieldManage2 = _interopRequireDefault(_edaDragDropWayFormlyProxyFormFieldManage);\n\nvar _edaDragDropWayDragdrop = __webpack_require__(53);\n\nvar _edaDragDropWayDragdrop2 = _interopRequireDefault(_edaDragDropWayDragdrop);\n\nvar _edaDragDropWayRightClick = __webpack_require__(67);\n\nvar _edaDragDropWayRightClick2 = _interopRequireDefault(_edaDragDropWayRightClick);\n\nvar _edaDragDropWayConfigurationModelProxy = __webpack_require__(70);\n\nvar _edaDragDropWayConfigurationModelProxy2 = _interopRequireDefault(_edaDragDropWayConfigurationModelProxy);\n\nvar _dragAndDropList = __webpack_require__(72);\n\nvar _dragAndDropList2 = _interopRequireDefault(_dragAndDropList);\n\nvar _pageslide = __webpack_require__(75);\n\nvar _pageslide2 = _interopRequireDefault(_pageslide);\n\nvar _edaDragDropWayEdaDragdropWayEasyFormGen = __webpack_require__(77);\n\nvar _edaDragDropWayEdaDragdropWayEasyFormGen2 = _interopRequireDefault(_edaDragDropWayEdaDragdropWayEasyFormGen);\n\nvar _edaDragDropWayTrustThis = __webpack_require__(84);\n\nvar _edaDragDropWayTrustThis2 = _interopRequireDefault(_edaDragDropWayTrustThis);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DRAG_DROP_WAY_MODULE_NAME = 'eda.easyformGen.dragDropWay';\n\nvar DRAG_DROP_MODULES_INJECT = [_edaDragDropWayCore2.default.name, _edaDragDropWayConfigurationModelProxy2.default.name, _edaDragDropWayTrustThis2.default.name, _edaDragDropWayLeftPanel2.default.name, _edaDragDropWayFormlyProxyFormFieldManage2.default.name, _edaDragDropWayDragdrop2.default.name, _edaDragDropWayEdaDragdropWayEasyFormGen2.default.name, _edaDragDropWayRightClick2.default.name, _dragAndDropList2.default.name, _pageslide2.default.name];\n\nvar mainModule = angular.module(DRAG_DROP_WAY_MODULE_NAME, DRAG_DROP_MODULES_INJECT).config(_edaDragDropWayDragDropConfig2.default).config(_edaDragDropWayFormlyConfig2.default).value(_edaDragDropWayDragDropConfig.EASY_FORM_DD_VERSION_NAME, _edaDragDropWayDragDropConfig.EASY_FORM_DD_VERSION_VALUE);\n\nexports.default = mainModule;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L21haW4uanM/M2E3OCJdLCJuYW1lcyI6WyJEUkFHX0RST1BfV0FZX01PRFVMRV9OQU1FIiwiRFJBR19EUk9QX01PRFVMRVNfSU5KRUNUIiwibmFtZSIsIm1haW5Nb2R1bGUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29uZmlnIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFJQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFFQTs7OztBQUNBOzs7O0FBRUE7Ozs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsNEJBQTRCLDZCQUFsQzs7QUFFQSxJQUFNQywyQkFBMkIsQ0FDL0IsNkJBQVdDLElBRG9CLEVBRS9CLGdEQUFrQkEsSUFGYSxFQUcvQixrQ0FBc0JBLElBSFMsRUFJL0Isa0NBQWdCQSxJQUplLEVBSy9CLG1EQUFrQkEsSUFMYSxFQU0vQixpQ0FBZUEsSUFOZ0IsRUFPL0Isa0RBQXVCQSxJQVBRLEVBUS9CLG1DQUFpQkEsSUFSYyxFQVMvQiwwQkFBc0JBLElBVFMsRUFVL0Isb0JBQWdCQSxJQVZlLENBQWpDOztBQWFBLElBQU1DLGFBQWFDLFFBQ0FDLE1BREEsQ0FDT0wseUJBRFAsRUFDa0NDLHdCQURsQyxFQUVBSyxNQUZBLHlDQUdBQSxNQUhBLHVDQUlBQyxLQUpBLG1IQUFuQjs7a0JBTWVKLFUiLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZm9ybWx5Q29uZmlnRnVuY3QgICAgICAgIGZyb20gJy4vY29uZmlnL2VkYURyYWdEcm9wV2F5LmZvcm1seUNvbmZpZy5jb25maWcnO1xuaW1wb3J0IGRyYWdEcm9wQ29uZmlnRnVudCwge1xuICBFQVNZX0ZPUk1fRERfVkVSU0lPTl9OQU1FLFxuICBFQVNZX0ZPUk1fRERfVkVSU0lPTl9WQUxVRVxufSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL2NvbmZpZy9lZGFEcmFnRHJvcFdheS5kcmFnRHJvcENvbmZpZy5jb25maWcnO1xuaW1wb3J0IGNvcmVNb2R1bGUgICAgICAgICAgICAgICBmcm9tICcuL2NvcmUvZWRhRHJhZ0Ryb3BXYXkuY29yZS5tb2R1bGUnO1xuaW1wb3J0IGxlZnRQYW5lbE1vZHVsZSAgICAgICAgICBmcm9tICcuL2NvbXBvbmVudHMvbGVmdFBhbmVsL2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC5tb2R1bGUnO1xuaW1wb3J0IGZvcm1seVByb3h5TW9kdWxlICAgICAgICBmcm9tICcuL2NvbXBvbmVudHMvZm9ybWx5UHJveHkvZWRhRHJhZ0Ryb3BXYXkuZm9ybWx5UHJveHkuZm9ybUZpZWxkTWFuYWdlLm1vZHVsZSc7XG5pbXBvcnQgZHJhZ2Ryb3BNb2R1bGUgICAgICAgICAgIGZyb20gJy4vY29tcG9uZW50cy9kcmFnZHJvcC9lZGFEcmFnRHJvcFdheS5kcmFnZHJvcC5tb2R1bGUnO1xuaW1wb3J0IHJpZ2h0Q2xpY2tNb2R1bGUgICAgICAgICBmcm9tICcuL2NvbXBvbmVudHMvY29tbW9uL3JpZ2h0Y2xpY2svZWRhRHJhZ0Ryb3BXYXkucmlnaHRDbGljay5tb2R1bGUnO1xuaW1wb3J0IGNvbmZpZ1Byb3h5TW9kdWxlICAgICAgICBmcm9tICcuL2NvbXBvbmVudHMvY29uZmlndXJhdGlvbk1vZGVsUHJveHkvZWRhRHJhZ0Ryb3BXYXkuY29uZmlndXJhdGlvbk1vZGVsUHJveHkubW9kdWxlJztcblxuaW1wb3J0IGRyYWdBbmREcm9wTGlzdE1vZHVsZSAgICBmcm9tICcuL2NvbXBvbmVudHMvY29tbW9uL2RyYWdBbmREcm9wTGlzdC9kcmFnQW5kRHJvcExpc3QubW9kdWxlJztcbmltcG9ydCBwYWdlU2xpZGVNb2R1bGUgICAgICAgICAgZnJvbSAnLi9jb21wb25lbnRzL2NvbW1vbi9wYWdlc2xpZGUvcGFnZXNsaWRlLm1vZHVsZSc7XG5cbmltcG9ydCBlYXN5Rm9ybURyYWdEcm9wTW9kdWxlICAgZnJvbSAnLi9jb21wb25lbnRzL2VkYURyYWdEcm9wV2F5RWFzeUZvcm1HZW4vZWRhRHJhZ0Ryb3BXYXkuZWRhRHJhZ2Ryb3BXYXlFYXN5Rm9ybUdlbi5tb2R1bGUnO1xuaW1wb3J0IHRydXN0VGhpc0ZpbHRlck1vZHVsZSAgICBmcm9tICcuL2NvbXBvbmVudHMvY29tbW9uL2VkYVRydXN0VGhpc0ZpbHRlci9lZGFEcmFnRHJvcFdheS50cnVzdFRoaXMubW9kdWxlJztcblxuY29uc3QgRFJBR19EUk9QX1dBWV9NT0RVTEVfTkFNRSA9ICdlZGEuZWFzeWZvcm1HZW4uZHJhZ0Ryb3BXYXknO1xuXG5jb25zdCBEUkFHX0RST1BfTU9EVUxFU19JTkpFQ1QgPSBbXG4gIGNvcmVNb2R1bGUubmFtZSxcbiAgY29uZmlnUHJveHlNb2R1bGUubmFtZSxcbiAgdHJ1c3RUaGlzRmlsdGVyTW9kdWxlLm5hbWUsXG4gIGxlZnRQYW5lbE1vZHVsZS5uYW1lLFxuICBmb3JtbHlQcm94eU1vZHVsZS5uYW1lLFxuICBkcmFnZHJvcE1vZHVsZS5uYW1lLFxuICBlYXN5Rm9ybURyYWdEcm9wTW9kdWxlLm5hbWUsXG4gIHJpZ2h0Q2xpY2tNb2R1bGUubmFtZSxcbiAgZHJhZ0FuZERyb3BMaXN0TW9kdWxlLm5hbWUsXG4gIHBhZ2VTbGlkZU1vZHVsZS5uYW1lXG5dO1xuXG5jb25zdCBtYWluTW9kdWxlID0gYW5ndWxhclxuICAgICAgICAgICAgICAgICAgLm1vZHVsZShEUkFHX0RST1BfV0FZX01PRFVMRV9OQU1FLCBEUkFHX0RST1BfTU9EVUxFU19JTkpFQ1QpXG4gICAgICAgICAgICAgICAgICAuY29uZmlnKGRyYWdEcm9wQ29uZmlnRnVudClcbiAgICAgICAgICAgICAgICAgIC5jb25maWcoZm9ybWx5Q29uZmlnRnVuY3QpXG4gICAgICAgICAgICAgICAgICAudmFsdWUoRUFTWV9GT1JNX0REX1ZFUlNJT05fTkFNRSwgRUFTWV9GT1JNX0REX1ZFUlNJT05fVkFMVUUpO1xuXG5leHBvcnQgZGVmYXVsdCBtYWluTW9kdWxlO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9tYWluLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 11 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction formlyConfig(formlyConfigProvider, EasyFormGenFormlyBindingModelsProvider, easyFormDragWayConfigProvider) {\n\n formlyConfigProvider.setType({\n name: 'blank',\n template: '
'\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id: 'empty',\n name: 'no control',\n subtitle: 'no control',\n group: 'Blank',\n formlyType: 'blank',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: []\n });\n\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n label: '',\n control: 'empty',\n cssClass: 'col-xs-12'\n }, {\n addToGroupCtrl: 'blank'\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id: 'Header',\n name: 'Header',\n subtitle: 'no control',\n group: 'Decoration',\n formlyType: 'header',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: []\n });\n\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n label: [''].join(''),\n control: 'Header',\n cssClass: 'col-xs-12'\n }, {\n addToGroupCtrl: 'headers'\n });\n\n var subTitleTemplate = '\\n \\n
\\n
{{options.templateOptions.placeholder}}\\n \\n \\n
';\n\n formlyConfigProvider.setType({\n name: 'subTitle',\n template: subTitleTemplate\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id: 'Subtitle',\n name: 'Subtitle',\n subtitle: 'no control',\n group: 'Decoration',\n formlyType: 'subTitle',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: []\n });\n\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n 'label': '',\n 'control': 'Subtitle',\n 'cssClass': 'col-xs-12'\n }, {\n addToGroupCtrl: 'headers'\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id: 'TextInput',\n name: 'Text input',\n subtitle: 'Text input',\n group: 'input',\n formlyType: 'input',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: []\n });\n\n /**\n * drag and drop text input (basic) control template\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n 'label': '',\n 'control': 'TextInput',\n 'cssClass': 'col-xs-12'\n }, {\n addToGroupCtrl: 'inputs'\n });\n\n /**\n * Add text input (Password)\n *\n * note : formly template already exists\n * no need to create a custom one\n *\n * just declare in EasyFormGenFormlyBindingModelsProvider\n */\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id: 'Password',\n name: 'Password',\n subtitle: 'Password',\n group: 'input',\n formlyType: 'input',\n formlySubtype: 'password',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: []\n });\n /**\n * drag and drop text input — password —control template\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n 'label': '',\n 'control': 'Password',\n 'cssClass': 'col-xs-12'\n }, {\n addToGroupCtrl: 'inputs'\n });\n\n /**\n * Add angular UI date picker\n *\n * thx Kent C. Dodds for formly config template (since it was a huge config)\n */\n var attributes = ['date-disabled', 'custom-class', 'show-weeks', 'starting-day', 'init-date', 'min-mode', 'max-mode', 'format-day', 'format-month', 'format-year', 'format-day-header', 'format-day-title', 'format-month-title', 'year-range', 'shortcut-propagation', 'uib-datepicker-popup', 'show-button-bar', 'current-text', 'clear-text', 'close-text', 'close-on-date-selection', 'datepicker-append-to-body'];\n\n var bindings = ['datepicker-mode', 'min-date', 'max-date'];\n\n var ngModelAttrs = {};\n\n angular.forEach(attributes, function (attr) {\n return ngModelAttrs[camelize(attr)] = { attribute: attr };\n });\n angular.forEach(bindings, function (binding) {\n return ngModelAttrs[camelize(binding)] = { bound: binding };\n });\n\n function camelize(string) {\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n });\n // Ensure 1st char is always lowercase\n return string.replace(/^([A-Z])/, function (match, chr) {\n return chr ? chr.toLowerCase() : '';\n });\n }\n\n var angularUIDatePickerTemplate = '\\n ';\n\n formlyConfigProvider.setType({\n name: 'datepicker',\n template: angularUIDatePickerTemplate,\n wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n controller: ['$scope', function ($scope) {\n $scope.open = function ($event) {\n $event.preventDefault();\n $event.stopPropagation();\n $scope.opened = true;\n };\n }],\n defaultOptions: {\n ngModelAttrs: ngModelAttrs,\n templateOptions: {\n addonLeft: {\n class: 'glyphicon glyphicon-calendar',\n onClick: function onClick(options) {\n return options.templateOptions.isOpen = !options.templateOptions.isOpen;\n }\n },\n onFocus: function onFocus($viewValue, $modelValue, scope) {\n return scope.to.isOpen = !scope.to.isOpen;\n },\n datepickerOptions: {}\n }\n }\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id: 'Date',\n name: 'Date',\n subtitle: 'Date',\n group: 'input',\n formlyType: 'datepicker',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n datepickerPopup: 'dd-MMMM-yyyy'\n });\n /**\n * drag and drop text input — date — control template (using angular UI datepicker)\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n label: '\\n ',\n control: 'Date',\n cssClass: 'col-xs-12'\n }, {\n addToGroupCtrl: 'inputs'\n });\n\n /**\n * Add textarea\n *\n * note : formly template already exists\n * no need to create a custom one\n *\n * just declare in EasyFormGenFormlyBindingModelsProvider\n */\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id: 'Texarea',\n name: 'Textarea',\n subtitle: 'Textarea',\n group: 'Textarea',\n formlyType: 'textarea',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: []\n });\n /**\n * drag and drop textarea control template\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n 'label': '\\n ',\n 'control': 'Texarea',\n 'cssClass': 'col-xs-12'\n }, {\n addToGroupCtrl: 'textareas'\n });\n\n /**\n * Add rich text editor control (using textAngular)\n *\n */\n var richTexEditorTemplate = '\\n \\n ';\n\n formlyConfigProvider.setType({\n name: 'richEditor',\n template: richTexEditorTemplate\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id: 'RichTextEditor',\n name: 'RichTextEditor',\n subtitle: 'RichTextEditor',\n group: 'Textarea',\n formlyType: 'richEditor',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: []\n });\n /**\n * drag and drop rich text editor control template (using textAngular)\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n label: '\\n ',\n control: 'RichTextEditor',\n cssClass: 'col-xs-12'\n }, {\n addToGroupCtrl: 'textareas'\n });\n\n /**\n * Add radio\n *\n * note : formly template already exists\n * no need to create a custom one\n *\n * just declare in EasyFormGenFormlyBindingModelsProvider\n */\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id: 'Radio',\n name: 'Radio',\n subtitle: 'Radio',\n options: [],\n group: 'Radio',\n formlyType: 'radio',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: []\n });\n /**\n * drag and drop radio control template (using textAngular)\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n 'label': '\\n ',\n 'control': 'Radio',\n 'cssClass': 'col-xs-12'\n }, {\n addToGroupCtrl: 'radios'\n });\n\n /**\n * Add checkbox\n *\n * note : formly template already exists\n * no need to create a custom one\n *\n * just declare in EasyFormGenFormlyBindingModelsProvider\n */\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id: 'Checkbox',\n name: 'Checkbox',\n subtitle: 'Checkbox',\n group: 'Checkbox',\n formlyType: 'checkbox',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: []\n });\n /**\n * drag and drop checkbox control template (using textAngular)\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n label: '\\n \\n
\\n \\n \\n \\t\\tlabel for checkbox \\n \\t\\t* \\n \\n
\\n
description
\\n
',\n control: 'Checkbox',\n cssClass: 'col-xs-12'\n }, {\n addToGroupCtrl: 'checkboxes'\n });\n\n /**\n * Add basic Select control\n *\n * using nya-bs-select\n */\n var basicSelectTemplate = '\\n \\n \\n {{option.name}} \\n \\n ';\n\n formlyConfigProvider.setType({\n name: 'basicSelect',\n template: basicSelectTemplate\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id: 'BasicSelect',\n name: 'Basic select',\n subtitle: 'Basic select',\n options: [],\n group: 'Select',\n formlyType: 'basicSelect',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: []\n });\n\n /**\n * drag and drop basic select control template (using textAngular)\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n label: '\\n \\n
',\n control: 'BasicSelect',\n cssClass: 'col-xs-12'\n }, {\n addToGroupCtrl: 'selects'\n });\n\n /**\n * Add Grouped Select control\n *\n * using nya-bs-select\n */\n var groupedSelectTemplate = '\\n
\\n \\n \\n \\n {{option.name}} \\n \\n \\n \\n ';\n\n formlyConfigProvider.setType({\n name: 'groupedSelect',\n template: groupedSelectTemplate\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id: 'GroupedSelect',\n name: 'Grouped Select',\n subtitle: 'Grouped Select',\n options: [],\n group: 'Select',\n formlyType: 'groupedSelect',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: []\n });\n /**\n * drag and drop grouped select control template (using textAngular)\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n label: '\\n
\\n
',\n control: 'GroupedSelect',\n cssClass: 'col-xs-12'\n }, {\n addToGroupCtrl: 'selects'\n });\n}\n\nformlyConfig.$inject = ['formlyConfigProvider', 'EasyFormGenFormlyBindingModelsProvider', 'easyFormDragWayConfigProvider'];\n\nexports.default = formlyConfig;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbmZpZy9lZGFEcmFnRHJvcFdheS5mb3JtbHlDb25maWcuY29uZmlnLmpzPzVmODIiXSwibmFtZXMiOlsiZm9ybWx5Q29uZmlnIiwiZm9ybWx5Q29uZmlnUHJvdmlkZXIiLCJFYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHNQcm92aWRlciIsImVhc3lGb3JtRHJhZ1dheUNvbmZpZ1Byb3ZpZGVyIiwic2V0VHlwZSIsIm5hbWUiLCJ0ZW1wbGF0ZSIsImFkZEVhc3lGb3JtQ29udHJvbFRvTGlzdCIsImlkIiwic3VidGl0bGUiLCJncm91cCIsImZvcm1seVR5cGUiLCJmb3JtbHlTdWJ0eXBlIiwiZm9ybWx5TGFiZWwiLCJmb3JtbHlSZXF1aXJlZCIsImZvcm1seURlc2NyaXB0aW9uIiwiZm9ybWx5T3B0aW9ucyIsImFkZENvbnRyb2xUb0RyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWwiLCJsYWJlbCIsImNvbnRyb2wiLCJjc3NDbGFzcyIsImFkZFRvR3JvdXBDdHJsIiwiam9pbiIsInN1YlRpdGxlVGVtcGxhdGUiLCJhdHRyaWJ1dGVzIiwiYmluZGluZ3MiLCJuZ01vZGVsQXR0cnMiLCJhbmd1bGFyIiwiZm9yRWFjaCIsImF0dHIiLCJjYW1lbGl6ZSIsImF0dHJpYnV0ZSIsImJpbmRpbmciLCJib3VuZCIsInN0cmluZyIsInJlcGxhY2UiLCJtYXRjaCIsImNociIsInRvVXBwZXJDYXNlIiwidG9Mb3dlckNhc2UiLCJhbmd1bGFyVUlEYXRlUGlja2VyVGVtcGxhdGUiLCJ3cmFwcGVyIiwiY29udHJvbGxlciIsIiRzY29wZSIsIm9wZW4iLCIkZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsIm9wZW5lZCIsImRlZmF1bHRPcHRpb25zIiwidGVtcGxhdGVPcHRpb25zIiwiYWRkb25MZWZ0IiwiY2xhc3MiLCJvbkNsaWNrIiwib3B0aW9ucyIsImlzT3BlbiIsIm9uRm9jdXMiLCIkdmlld1ZhbHVlIiwiJG1vZGVsVmFsdWUiLCJzY29wZSIsInRvIiwiZGF0ZXBpY2tlck9wdGlvbnMiLCJkYXRlcGlja2VyUG9wdXAiLCJyaWNoVGV4RWRpdG9yVGVtcGxhdGUiLCJiYXNpY1NlbGVjdFRlbXBsYXRlIiwiZ3JvdXBlZFNlbGVjdFRlbXBsYXRlIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxTQUFTQSxZQUFULENBQXNCQyxvQkFBdEIsRUFBNENDLHNDQUE1QyxFQUFvRkMsNkJBQXBGLEVBQW1IOztBQUVqSEYsdUJBQXFCRyxPQUFyQixDQUE2QjtBQUMzQkMsVUFBVSxPQURpQjtBQUUzQkMsY0FBWTtBQUZlLEdBQTdCOztBQUtBSix5Q0FBdUNLLHdCQUF2QyxDQUFnRTtBQUM5REMsUUFBYSxPQURpRDtBQUU5REgsVUFBYyxZQUZnRDtBQUc5REksY0FBZ0IsWUFIOEM7QUFJOURDLFdBQWMsT0FKZ0Q7QUFLOURDLGdCQUFpQixPQUw2QztBQU05REMsbUJBQWtCLEVBTjRDO0FBTzlEQyxpQkFBaUIsRUFQNkM7QUFROURDLG9CQUFtQixLQVIyQztBQVM5REMsdUJBQXFCLEVBVHlDO0FBVTlEQyxtQkFBa0I7QUFWNEMsR0FBaEU7O0FBYUFiLGdDQUE4QmMscUNBQTlCLENBQW9FO0FBQ2xFQyx3SkFEa0U7QUFRbEVDLGFBQVUsT0FSd0Q7QUFTbEVDLGNBQVU7QUFUd0QsR0FBcEUsRUFXRTtBQUNFQyxvQkFBaUI7QUFEbkIsR0FYRjs7QUFpQkFuQix5Q0FBdUNLLHdCQUF2QyxDQUFnRTtBQUM5REMsUUFBYSxRQURpRDtBQUU5REgsVUFBYyxRQUZnRDtBQUc5REksY0FBZ0IsWUFIOEM7QUFJOURDLFdBQWMsWUFKZ0Q7QUFLOURDLGdCQUFpQixRQUw2QztBQU05REMsbUJBQWtCLEVBTjRDO0FBTzlEQyxpQkFBaUIsRUFQNkM7QUFROURDLG9CQUFtQixLQVIyQztBQVM5REMsdUJBQXFCLEVBVHlDO0FBVTlEQyxtQkFBa0I7QUFWNEMsR0FBaEU7O0FBY0FiLGdDQUE4QmMscUNBQTlC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OURDLFFBQWEsZUFEaUQ7QUFFOURILFVBQWMsZ0JBRmdEO0FBRzlESSxjQUFnQixnQkFIOEM7QUFJOUQ2QyxhQUFlLEVBSitDO0FBSzlENUMsV0FBYyxRQUxnRDtBQU05REMsZ0JBQWlCLGVBTjZDO0FBTzlEQyxtQkFBa0IsRUFQNEM7QUFROURDLGlCQUFpQixFQVI2QztBQVM5REMsb0JBQW1CLEtBVDJDO0FBVTlEQyx1QkFBcUIsRUFWeUM7QUFXOURDLG1CQUFrQjtBQVg0QyxHQUFoRTtBQWFBOzs7Ozs7OztBQVFBYixnQ0FBOEJjLHFDQUE5QixDQUFvRTtBQUNsRUMsd3BCQURrRTtBQWdCbEVDLGFBQVUsZUFoQndEO0FBaUJsRUMsY0FBVTtBQWpCd0QsR0FBcEUsRUFtQkE7QUFDRUMsb0JBQWlCO0FBRG5CLEdBbkJBO0FBd0JEOztBQUVEckIsYUFBYWtFLE9BQWIsR0FBdUIsQ0FDckIsc0JBRHFCLEVBRXJCLHdDQUZxQixFQUdyQiwrQkFIcUIsQ0FBdkI7O2tCQU1lbEUsWSIsImZpbGUiOiIxMS5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGZvcm1seUNvbmZpZyhmb3JtbHlDb25maWdQcm92aWRlciwgRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzUHJvdmlkZXIsIGVhc3lGb3JtRHJhZ1dheUNvbmZpZ1Byb3ZpZGVyKSB7XG5cbiAgZm9ybWx5Q29uZmlnUHJvdmlkZXIuc2V0VHlwZSh7XG4gICAgbmFtZSAgXHRcdDogJ2JsYW5rJyxcbiAgICB0ZW1wbGF0ZSBcdDogJzxkaXY+PC9kaXY+J1xuICB9KTtcblxuICBFYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHNQcm92aWRlci5hZGRFYXN5Rm9ybUNvbnRyb2xUb0xpc3Qoe1xuICAgIGlkIFx0XHRcdFx0XHRcdFx0XHQ6ICdlbXB0eScsXG4gICAgbmFtZSBcdFx0XHRcdFx0XHRcdDogJ25vIGNvbnRyb2wnLFxuICAgIHN1YnRpdGxlIFx0XHRcdFx0XHQ6ICdubyBjb250cm9sJyxcbiAgICBncm91cCBcdFx0XHRcdFx0XHQ6ICdCbGFuaycsXG4gICAgZm9ybWx5VHlwZSBcdFx0XHRcdDogJ2JsYW5rJyxcbiAgICBmb3JtbHlTdWJ0eXBlIFx0XHQ6ICcnLFxuICAgIGZvcm1seUxhYmVsIFx0XHRcdDogJycsXG4gICAgZm9ybWx5UmVxdWlyZWQgXHRcdDogZmFsc2UsXG4gICAgZm9ybWx5RGVzY3JpcHRpb24gXHQ6ICcnLFxuICAgIGZvcm1seU9wdGlvbnMgXHRcdDogW11cbiAgfSk7XG5cbiAgZWFzeUZvcm1EcmFnV2F5Q29uZmlnUHJvdmlkZXIuYWRkQ29udHJvbFRvRHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbCh7XG4gICAgbGFiZWwgXHQ6XG4gICAgICBgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PmAsXG4gICAgY29udHJvbCA6ICdlbXB0eScsXG4gICAgY3NzQ2xhc3M6ICdjb2wteHMtMTInXG4gICAgfSxcbiAgICB7XG4gICAgICBhZGRUb0dyb3VwQ3RybCA6ICdibGFuaydcbiAgICB9KTtcblxuXG5cbiAgRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzUHJvdmlkZXIuYWRkRWFzeUZvcm1Db250cm9sVG9MaXN0KHtcbiAgICBpZCBcdFx0XHRcdFx0XHRcdFx0OiAnSGVhZGVyJyxcbiAgICBuYW1lIFx0XHRcdFx0XHRcdFx0OiAnSGVhZGVyJyxcbiAgICBzdWJ0aXRsZSBcdFx0XHRcdFx0OiAnbm8gY29udHJvbCcsXG4gICAgZ3JvdXAgXHRcdFx0XHRcdFx0OiAnRGVjb3JhdGlvbicsXG4gICAgZm9ybWx5VHlwZSBcdFx0XHRcdDogJ2hlYWRlcicsXG4gICAgZm9ybWx5U3VidHlwZSBcdFx0OiAnJyxcbiAgICBmb3JtbHlMYWJlbCBcdFx0XHQ6ICcnLFxuICAgIGZvcm1seVJlcXVpcmVkIFx0XHQ6IGZhbHNlLFxuICAgIGZvcm1seURlc2NyaXB0aW9uIFx0OiAnJyxcbiAgICBmb3JtbHlPcHRpb25zIFx0XHQ6IFtdXG4gIH0pO1xuXG5cbiAgZWFzeUZvcm1EcmFnV2F5Q29uZmlnUHJvdmlkZXIuYWRkQ29udHJvbFRvRHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbCh7XG4gICAgbGFiZWwgXHQ6IFtcbiAgICAgIGA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5IZWFkZXI8L2gyPlxuICAgICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5gXG4gICAgICBdLmpvaW4oJycpLFxuICAgIGNvbnRyb2wgOiAnSGVhZGVyJyxcbiAgICBjc3NDbGFzczogJ2NvbC14cy0xMidcbiAgICB9LFxuICAgIHtcbiAgICAgIGFkZFRvR3JvdXBDdHJsIDogJ2hlYWRlcnMnXG4gICAgfSk7XG5cblxuICBjb25zdCBzdWJUaXRsZVRlbXBsYXRlID0gYFxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgPGg0IGNsYXNzPVwidGV4dC1jZW50ZXJcIj57e29wdGlvbnMudGVtcGxhdGVPcHRpb25zLnBsYWNlaG9sZGVyfX08aDQ+XG4gICAgICAgIDxoci8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5gO1xuXG4gIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuICAgIG5hbWUgXHRcdFx0OiAnc3ViVGl0bGUnLFxuICAgIHRlbXBsYXRlIFx0OiBzdWJUaXRsZVRlbXBsYXRlXG4gIH0pO1xuXG4gIEVhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVsc1Byb3ZpZGVyLmFkZEVhc3lGb3JtQ29udHJvbFRvTGlzdCh7XG4gICAgaWQgXHRcdFx0XHRcdFx0XHRcdDogJ1N1YnRpdGxlJyxcbiAgICBuYW1lIFx0XHRcdFx0XHRcdFx0OiAnU3VidGl0bGUnLFxuICAgIHN1YnRpdGxlIFx0XHRcdFx0XHQ6ICdubyBjb250cm9sJyxcbiAgICBncm91cCBcdFx0XHRcdFx0XHQ6ICdEZWNvcmF0aW9uJyxcbiAgICBmb3JtbHlUeXBlIFx0XHRcdFx0OiAnc3ViVGl0bGUnLFxuICAgIGZvcm1seVN1YnR5cGUgXHRcdDogJycsXG4gICAgZm9ybWx5TGFiZWwgXHRcdFx0OiAnJyxcbiAgICBmb3JtbHlSZXF1aXJlZCBcdFx0OiBmYWxzZSxcbiAgICBmb3JtbHlEZXNjcmlwdGlvbiBcdDogJycsXG4gICAgZm9ybWx5T3B0aW9ucyBcdFx0OiBbXVxuICB9KTtcblxuICBlYXN5Rm9ybURyYWdXYXlDb25maWdQcm92aWRlci5hZGRDb250cm9sVG9EcmFnRHJvcFByZXNlbnRhdGlvbk1vZGVsKHtcbiAgICAnbGFiZWwnIFx0OlxuICAgICAgYDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlN1YlRpdGxlPC9oND5cbiAgICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+YCxcbiAgICAnY29udHJvbCdcdDogJ1N1YnRpdGxlJyxcbiAgICAnY3NzQ2xhc3MnOiAnY29sLXhzLTEyJ1xuICAgIH0sXG4gICAge1xuICAgICAgYWRkVG9Hcm91cEN0cmwgOiAnaGVhZGVycydcbiAgICB9KTtcblxuICBFYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHNQcm92aWRlci5hZGRFYXN5Rm9ybUNvbnRyb2xUb0xpc3Qoe1xuICAgIGlkIFx0XHRcdFx0XHRcdFx0XHQ6ICdUZXh0SW5wdXQnLFxuICAgIG5hbWUgXHRcdFx0XHRcdFx0XHQ6ICdUZXh0IGlucHV0JyxcbiAgICBzdWJ0aXRsZSBcdFx0XHRcdFx0OiAnVGV4dCBpbnB1dCcsXG4gICAgZ3JvdXAgXHRcdFx0XHRcdFx0OiAnaW5wdXQnLFxuICAgIGZvcm1seVR5cGUgXHRcdFx0XHQ6ICdpbnB1dCcsXG4gICAgZm9ybWx5U3VidHlwZSBcdFx0OiAnJyxcbiAgICBmb3JtbHlMYWJlbCBcdFx0XHQ6ICcnLFxuICAgIGZvcm1seVJlcXVpcmVkIFx0XHQ6IGZhbHNlLFxuICAgIGZvcm1seURlc2NyaXB0aW9uIFx0OiAnJyxcbiAgICBmb3JtbHlPcHRpb25zIFx0XHQ6IFtdXG4gIH0pO1xuXG5cbiAgLyoqXG4gICAqIGRyYWcgYW5kIGRyb3AgdGV4dCBpbnB1dCAoYmFzaWMpIGNvbnRyb2wgdGVtcGxhdGVcbiAgICpcbiAgICAqXG4gICAgKiBAUEFSQU0gMSA6IGNvbnRyb2wgdGVtcGxhdGUgb2JqZWN0IChkcmFnIGFuIGRyb3ApXG4gICAgKiBAUEFSQU0gMiA6IG9iamVjdCB0byBpbmRpY2F0ZXMgaW4gd2hpY2ggZ3JvdXAgb2YgY29udHJvbCBpdCB3aWxsIGJlIGluc2VydGVkXG4gICAgKiAgXHRcdFx0XHRcdChyZWxhdGVkIHRvIF9kcmFnRHJvcENvbmZpZ01vZGVsLmNvbnRhaW5lckNvbmZpZy5kZWNvcmF0aW9uIGluIGRyYWdEcm9wQ29uZmlnIHByb3ZpZGVyKVxuICAgICovXG4gIGVhc3lGb3JtRHJhZ1dheUNvbmZpZ1Byb3ZpZGVyLmFkZENvbnRyb2xUb0RyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWwoe1xuICAgICAgJ2xhYmVsJyBcdDpcbiAgICAgICAgYDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImlucHV0VGV4dFwiIGNsYXNzPVwiY29udHJvbC1sYWJlbCB0ZXh0Q29udHJvbExhYmVsIHB1bGwtbGVmdFwiPlxuICAgICAgICAgICAgICB0aXRsZSBmb3IgdGV4dCBpbnB1dDxzcGFuIGNsYXNzPVwidGV4dENvbnRyb2xMYWJlbCBuZy1zY29wZVwiPio8L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBkaXNhYmxlZCBjbGFzcz1cImZvcm0tY29udHJvbCBmYWtlQ29udHJvbFwiIGlkPVwiaW5wdXRUZXh0XCIgcGxhY2Vob2xkZXI9XCJiYXNpYyBpbnB1dFwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlbHAtYmxvY2sgcHVsbC1sZWZ0XCI+RGVzY3JpcHRpb248L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+YCxcbiAgICAgICdjb250cm9sJ1x0OiAnVGV4dElucHV0JyxcbiAgICAgICdjc3NDbGFzcyc6ICdjb2wteHMtMTInXG4gICAgfSxcbiAgICB7XG4gICAgICBhZGRUb0dyb3VwQ3RybCA6ICdpbnB1dHMnXG4gICAgfVxuICApO1xuXG4gIC8qKlxuICAgKiBBZGQgdGV4dCBpbnB1dCAoUGFzc3dvcmQpXG4gICAqXG4gICAgKiBub3RlIDogZm9ybWx5IHRlbXBsYXRlIGFscmVhZHkgZXhpc3RzXG4gICAgKiBubyBuZWVkIHRvIGNyZWF0ZSBhIGN1c3RvbSBvbmVcbiAgICAqXG4gICAgKiBqdXN0IGRlY2xhcmUgaW4gRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzUHJvdmlkZXJcbiAgICAqL1xuICBFYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHNQcm92aWRlci5hZGRFYXN5Rm9ybUNvbnRyb2xUb0xpc3Qoe1xuICAgICAgaWQgXHRcdFx0XHRcdFx0XHRcdDogJ1Bhc3N3b3JkJyxcbiAgICAgIG5hbWUgXHRcdFx0XHRcdFx0XHQ6ICdQYXNzd29yZCcsXG4gICAgICBzdWJ0aXRsZSBcdFx0XHRcdFx0OiAnUGFzc3dvcmQnLFxuICAgICAgZ3JvdXAgXHRcdFx0XHRcdFx0OiAnaW5wdXQnLFxuICAgICAgZm9ybWx5VHlwZSBcdFx0XHRcdDogJ2lucHV0JyxcbiAgICAgIGZvcm1seVN1YnR5cGUgXHRcdDogJ3Bhc3N3b3JkJyxcbiAgICAgIGZvcm1seUxhYmVsIFx0XHRcdDogJycsXG4gICAgICBmb3JtbHlSZXF1aXJlZCBcdFx0OiBmYWxzZSxcbiAgICAgIGZvcm1seURlc2NyaXB0aW9uIFx0OiAnJyxcbiAgICAgIGZvcm1seU9wdGlvbnMgXHRcdDogW11cbiAgICB9XG4gICk7XG4gIC8qKlxuICAgKiBkcmFnIGFuZCBkcm9wIHRleHQgaW5wdXQg4oCUIHBhc3N3b3JkIOKAlGNvbnRyb2wgdGVtcGxhdGVcbiAgICpcbiAgICAqXG4gICAgKiBAUEFSQU0gMSA6IGNvbnRyb2wgdGVtcGxhdGUgb2JqZWN0IChkcmFnIGFuIGRyb3ApXG4gICAgKiBAUEFSQU0gMiA6IG9iamVjdCB0byBpbmRpY2F0ZXMgaW4gd2hpY2ggZ3JvdXAgb2YgY29udHJvbCBpdCB3aWxsIGJlIGluc2VydGVkXG4gICAgKiAgXHRcdFx0XHRcdChyZWxhdGVkIHRvIF9kcmFnRHJvcENvbmZpZ01vZGVsLmNvbnRhaW5lckNvbmZpZy5kZWNvcmF0aW9uIGluIGRyYWdEcm9wQ29uZmlnIHByb3ZpZGVyKVxuICAgICovXG4gIGVhc3lGb3JtRHJhZ1dheUNvbmZpZ1Byb3ZpZGVyLmFkZENvbnRyb2xUb0RyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWwoe1xuICAgICAgJ2xhYmVsJyBcdDpcbiAgICAgICAgYDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImlucHV0UGFzc1wiIGNsYXNzPVwiY29udHJvbC1sYWJlbCB0ZXh0Q29udHJvbExhYmVsIG5nLWJpbmRpbmcgcHVsbC1sZWZ0XCI+XG4gICAgICAgICAgICB0aXRsZSBmb3IgcGFzc3dvcmQgaW5wdXQ8c3BhbiBjbGFzcz1cInRleHRDb250cm9sTGFiZWwgbmctc2NvcGVcIj4qPC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGRpc2FibGVkIGNsYXNzPVwiZm9ybS1jb250cm9sIGZha2VDb250cm9sXCIgaWQ9XCJpbnB1dFBhc3NcIiBwbGFjZWhvbGRlcj1cInBhc3N3b3JkIGlucHV0XCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVscC1ibG9jayBuZy1iaW5kaW5nIHB1bGwtbGVmdFwiPkRlc2NyaXB0aW9uPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PmAsXG4gICAgICAnY29udHJvbCdcdDogJ1Bhc3N3b3JkJyxcbiAgICAgICdjc3NDbGFzcyc6ICdjb2wteHMtMTInXG4gICAgfSxcbiAgICB7XG4gICAgICBhZGRUb0dyb3VwQ3RybCA6ICdpbnB1dHMnXG4gICAgfVxuICApO1xuXG4gIC8qKlxuICAgKiBBZGQgYW5ndWxhciBVSSBkYXRlIHBpY2tlclxuICAgKlxuICAgICogdGh4IEtlbnQgQy4gRG9kZHMgZm9yIGZvcm1seSBjb25maWcgdGVtcGxhdGUgKHNpbmNlIGl0IHdhcyBhIGh1Z2UgY29uZmlnKVxuICAgICovXG4gIGNvbnN0IGF0dHJpYnV0ZXMgPVx0W1xuICAgICdkYXRlLWRpc2FibGVkJyxcbiAgICAnY3VzdG9tLWNsYXNzJyxcbiAgICAnc2hvdy13ZWVrcycsXG4gICAgJ3N0YXJ0aW5nLWRheScsXG4gICAgJ2luaXQtZGF0ZScsXG4gICAgJ21pbi1tb2RlJyxcbiAgICAnbWF4LW1vZGUnLFxuICAgICdmb3JtYXQtZGF5JyxcbiAgICAnZm9ybWF0LW1vbnRoJyxcbiAgICAnZm9ybWF0LXllYXInLFxuICAgICdmb3JtYXQtZGF5LWhlYWRlcicsXG4gICAgJ2Zvcm1hdC1kYXktdGl0bGUnLFxuICAgICdmb3JtYXQtbW9udGgtdGl0bGUnLFxuICAgICd5ZWFyLXJhbmdlJyxcbiAgICAnc2hvcnRjdXQtcHJvcGFnYXRpb24nLFxuICAgICd1aWItZGF0ZXBpY2tlci1wb3B1cCcsXG4gICAgJ3Nob3ctYnV0dG9uLWJhcicsXG4gICAgJ2N1cnJlbnQtdGV4dCcsXG4gICAgJ2NsZWFyLXRleHQnLFxuICAgICdjbG9zZS10ZXh0JyxcbiAgICAnY2xvc2Utb24tZGF0ZS1zZWxlY3Rpb24nLFxuICAgICdkYXRlcGlja2VyLWFwcGVuZC10by1ib2R5J1xuICBdO1xuXG4gIGNvbnN0IGJpbmRpbmdzID1cdFtcbiAgICAnZGF0ZXBpY2tlci1tb2RlJyxcbiAgICAnbWluLWRhdGUnLFxuICAgICdtYXgtZGF0ZSdcbiAgXTtcblxuICBsZXQgbmdNb2RlbEF0dHJzID0ge307XG5cbiAgYW5ndWxhci5mb3JFYWNoKGF0dHJpYnV0ZXMsIChhdHRyKSA9PiBuZ01vZGVsQXR0cnNbY2FtZWxpemUoYXR0cildID0ge2F0dHJpYnV0ZTogYXR0cn0pO1xuICBhbmd1bGFyLmZvckVhY2goYmluZGluZ3MsIChiaW5kaW5nKSA9PiBuZ01vZGVsQXR0cnNbY2FtZWxpemUoYmluZGluZyldID0ge2JvdW5kOiBiaW5kaW5nfSk7XG5cbiAgZnVuY3Rpb24gY2FtZWxpemUoc3RyaW5nKSB7XG4gICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoL1tcXC1fXFxzXSsoLik/L2csIChtYXRjaCwgY2hyKSA9PiBjaHIgPyBjaHIudG9VcHBlckNhc2UoKSA6ICcnKTtcbiAgICAvLyBFbnN1cmUgMXN0IGNoYXIgaXMgYWx3YXlzIGxvd2VyY2FzZVxuICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXihbQS1aXSkvLCAobWF0Y2gsIGNocikgPT4gY2hyID8gY2hyLnRvTG93ZXJDYXNlKCkgOiAnJyk7XG4gIH1cblxuICBjb25zdCBhbmd1bGFyVUlEYXRlUGlja2VyVGVtcGxhdGUgPVx0YFxuICAgIDxpbnB1dFxuICAgICAgaWQ9XCJ7e2lkfX1cIlxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgbmctY2xpY2s9XCJvcGVuKCRldmVudClcIlxuICAgICAgdWliLWRhdGVwaWNrZXItcG9wdXBcbiAgICAgIG5nLW1vZGVsPVwibW9kZWxbb3B0aW9ucy5rZXkgfHwgaW5kZXhdXCIgaXMtb3Blbj1cInRvLmlzT3BlblwiXG4gICAgICBuZy1jbGljaz1cInRvLmlzT3BlbiA9IHRydWVcIlxuICAgICAgZGF0ZXBpY2tlci1vcHRpb25zPVwidG8uZGF0ZXBpY2tlck9wdGlvbnNcIi8+YDtcblxuICBmb3JtbHlDb25maWdQcm92aWRlci5zZXRUeXBlKHtcbiAgICBuYW1lIFx0XHRcdFx0OiAnZGF0ZXBpY2tlcicsXG4gICAgdGVtcGxhdGUgXHRcdDogYW5ndWxhclVJRGF0ZVBpY2tlclRlbXBsYXRlLFxuICAgIHdyYXBwZXIgXHRcdDogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddLFxuICAgIGNvbnRyb2xsZXIgXHQ6IFtcdCckc2NvcGUnLCAoJHNjb3BlKSA9PiB7XG4gICAgICAgICAgJHNjb3BlLm9wZW4gPSAkZXZlbnQgPT4ge1xuICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAkc2NvcGUub3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICBdLFxuICAgIGRlZmF1bHRPcHRpb25zIDoge1xuICAgICAgbmdNb2RlbEF0dHJzIFx0XHQ6IG5nTW9kZWxBdHRycyxcbiAgICAgIHRlbXBsYXRlT3B0aW9ucyA6IHtcbiAgICAgICAgYWRkb25MZWZ0OiB7XG4gICAgICAgICAgY2xhc3MgICA6ICdnbHlwaGljb24gZ2x5cGhpY29uLWNhbGVuZGFyJyxcbiAgICAgICAgICBvbkNsaWNrIDogKG9wdGlvbnMpID0+IG9wdGlvbnMudGVtcGxhdGVPcHRpb25zLmlzT3BlbiA9ICFvcHRpb25zLnRlbXBsYXRlT3B0aW9ucy5pc09wZW5cbiAgICAgICAgfSxcbiAgICAgICAgb25Gb2N1cyAgIDogKCR2aWV3VmFsdWUsICRtb2RlbFZhbHVlLCBzY29wZSkgPT4gc2NvcGUudG8uaXNPcGVuID0gIXNjb3BlLnRvLmlzT3BlbixcbiAgICAgICAgZGF0ZXBpY2tlck9wdGlvbnM6IHt9XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBFYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHNQcm92aWRlci5hZGRFYXN5Rm9ybUNvbnRyb2xUb0xpc3Qoe1xuICAgICAgaWQgXHRcdFx0XHRcdFx0XHRcdDogJ0RhdGUnLFxuICAgICAgbmFtZSBcdFx0XHRcdFx0XHRcdDogJ0RhdGUnLFxuICAgICAgc3VidGl0bGUgXHRcdFx0XHRcdDogJ0RhdGUnLFxuICAgICAgZ3JvdXAgXHRcdFx0XHRcdFx0OiAnaW5wdXQnLFxuICAgICAgZm9ybWx5VHlwZSBcdFx0XHRcdDogJ2RhdGVwaWNrZXInLFxuICAgICAgZm9ybWx5U3VidHlwZSBcdFx0OiAnJyxcbiAgICAgIGZvcm1seUxhYmVsIFx0XHRcdDogJycsXG4gICAgICBmb3JtbHlSZXF1aXJlZCBcdFx0OiBmYWxzZSxcbiAgICAgIGZvcm1seURlc2NyaXB0aW9uIFx0OiAnJyxcbiAgICAgIGZvcm1seU9wdGlvbnMgXHRcdDogW10sXG4gICAgICBkYXRlcGlja2VyUG9wdXAgXHQ6ICdkZC1NTU1NLXl5eXknXG4gICAgfVxuICApO1xuICAvKipcbiAgICogZHJhZyBhbmQgZHJvcCB0ZXh0IGlucHV0IOKAlCBkYXRlIOKAlCBjb250cm9sIHRlbXBsYXRlICh1c2luZyBhbmd1bGFyIFVJIGRhdGVwaWNrZXIpXG4gICAqXG4gICAgKlxuICAgICogQFBBUkFNIDEgOiBjb250cm9sIHRlbXBsYXRlIG9iamVjdCAoZHJhZyBhbiBkcm9wKVxuICAgICogQFBBUkFNIDIgOiBvYmplY3QgdG8gaW5kaWNhdGVzIGluIHdoaWNoIGdyb3VwIG9mIGNvbnRyb2wgaXQgd2lsbCBiZSBpbnNlcnRlZFxuICAgICogIFx0XHRcdFx0XHQocmVsYXRlZCB0byBfZHJhZ0Ryb3BDb25maWdNb2RlbC5jb250YWluZXJDb25maWcuZGVjb3JhdGlvbiBpbiBkcmFnRHJvcENvbmZpZyBwcm92aWRlcilcbiAgICAqL1xuICBlYXN5Rm9ybURyYWdXYXlDb25maWdQcm92aWRlci5hZGRDb250cm9sVG9EcmFnRHJvcFByZXNlbnRhdGlvbk1vZGVsKHtcbiAgICBsYWJlbCBcdDpgXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGZvcj1cImlucHV0RGF0ZVwiIGNsYXNzPVwiY29udHJvbC1sYWJlbCB0ZXh0Q29udHJvbExhYmVsIG5nLWJpbmRpbmcgcHVsbC1sZWZ0XCI+XG4gICAgICAgICB0aXRsZSBmb3IgZGF0ZSBpbnB1dDxzcGFuIGNsYXNzPVwidGV4dENvbnRyb2xMYWJlbCBuZy1zY29wZVwiPio8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTEyIGNvbC1tZC0xMiBkZW1vZGREYXRlcGlja2VyXCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gIFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+PHNwYW4gY2xhc3M9XCJnbHlwaGljb24gZ2x5cGhpY29uLWNhbGVuZGFyXCI+PC9zcGFuPjwvc3Bhbj5cbiAgXHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGRpc2FibGVkIGNsYXNzPVwiZm9ybS1jb250cm9sIGZha2VDb250cm9sXCI+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvZGl2PlxuICAgICAgICA8cCBjbGFzcz1cImhlbHAtYmxvY2sgcHVsbC1sZWZ0XCI+ZGVzY3JpcHRpb248L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgPC9kaXY+YCxcbiAgICBjb250cm9sXHQ6ICdEYXRlJyxcbiAgICBjc3NDbGFzczogJ2NvbC14cy0xMidcbiAgfSxcbiAge1xuICAgIGFkZFRvR3JvdXBDdHJsIDogJ2lucHV0cydcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEFkZCB0ZXh0YXJlYVxuICAgKlxuICAgICogbm90ZSA6IGZvcm1seSB0ZW1wbGF0ZSBhbHJlYWR5IGV4aXN0c1xuICAgICogbm8gbmVlZCB0byBjcmVhdGUgYSBjdXN0b20gb25lXG4gICAgKlxuICAgICoganVzdCBkZWNsYXJlIGluIEVhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVsc1Byb3ZpZGVyXG4gICAgKi9cbiAgRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzUHJvdmlkZXIuYWRkRWFzeUZvcm1Db250cm9sVG9MaXN0KHtcbiAgICBpZCBcdFx0XHRcdFx0XHRcdFx0OiAnVGV4YXJlYScsXG4gICAgbmFtZSBcdFx0XHRcdFx0XHRcdDogJ1RleHRhcmVhJyxcbiAgICBzdWJ0aXRsZSBcdFx0XHRcdFx0OiAnVGV4dGFyZWEnLFxuICAgIGdyb3VwIFx0XHRcdFx0XHRcdDogJ1RleHRhcmVhJyxcbiAgICBmb3JtbHlUeXBlIFx0XHRcdFx0OiAndGV4dGFyZWEnLFxuICAgIGZvcm1seVN1YnR5cGUgXHRcdDogJycsXG4gICAgZm9ybWx5TGFiZWwgXHRcdFx0OiAnJyxcbiAgICBmb3JtbHlSZXF1aXJlZCBcdFx0OiBmYWxzZSxcbiAgICBmb3JtbHlEZXNjcmlwdGlvbiBcdDogJycsXG4gICAgZm9ybWx5T3B0aW9ucyBcdFx0OiBbXVxuICB9KTtcbiAgLyoqXG4gICAqIGRyYWcgYW5kIGRyb3AgdGV4dGFyZWEgY29udHJvbCB0ZW1wbGF0ZVxuICAgKlxuICAgICpcbiAgICAqIEBQQVJBTSAxIDogY29udHJvbCB0ZW1wbGF0ZSBvYmplY3QgKGRyYWcgYW4gZHJvcClcbiAgICAqIEBQQVJBTSAyIDogb2JqZWN0IHRvIGluZGljYXRlcyBpbiB3aGljaCBncm91cCBvZiBjb250cm9sIGl0IHdpbGwgYmUgaW5zZXJ0ZWRcbiAgICAqICBcdFx0XHRcdFx0KHJlbGF0ZWQgdG8gX2RyYWdEcm9wQ29uZmlnTW9kZWwuY29udGFpbmVyQ29uZmlnLmRlY29yYXRpb24gaW4gZHJhZ0Ryb3BDb25maWcgcHJvdmlkZXIpXG4gICAgKi9cbiAgZWFzeUZvcm1EcmFnV2F5Q29uZmlnUHJvdmlkZXIuYWRkQ29udHJvbFRvRHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbCh7XG4gICAgJ2xhYmVsJyBcdDogYFxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwidGV4dEFyZWFcIiBjbGFzcz1cImNvbnRyb2wtbGFiZWxcbiAgICAgIFx0XHRcdFx0XHRcdFx0dGV4dENvbnRyb2xMYWJlbCBwdWxsLWxlZnRcIj50aXRsZSBmb3IgdGV4dGFyZWEgPHNwYW4gY2xhc3M9XCJ0ZXh0Q29udHJvbExhYmVsXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICA8dGV4dGFyZWEgZGlzYWJsZWQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZHJhZ0l0ZW10ZXh0YXJlYSBmYWtlQ29udHJvbFwiIG5nLW1vZGVsPVwibW9kZWxbb3B0aW9ucy5rZXldXCIgcm93cz1cIjFcIiBpZD1cInRleHRBcmVhXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWxwLWJsb2NrIHB1bGwtbGVmdFwiPmRlc2NyaXB0aW9uPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5gLFxuICAgICdjb250cm9sJ1x0OiAnVGV4YXJlYScsXG4gICAgJ2Nzc0NsYXNzJzogJ2NvbC14cy0xMidcbiAgfSxcbiAge1xuICAgIGFkZFRvR3JvdXBDdHJsIDogJ3RleHRhcmVhcydcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEFkZCByaWNoIHRleHQgZWRpdG9yIGNvbnRyb2wgKHVzaW5nIHRleHRBbmd1bGFyKVxuICAgKlxuICAgKi9cbiAgbGV0IHJpY2hUZXhFZGl0b3JUZW1wbGF0ZSA9YFxuICAgIDx0ZXh0LWFuZ3VsYXIgbmFtZT1cInt7aWR9fVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJpY2hUZXh0QW5ndWxhclwiXG4gICAgICAgICAgICAgICAgICBuZy1tb2RlbD1cIm1vZGVsW29wdGlvbnMua2V5IHx8IGluZGV4XVwiPlxuICAgIDwvdGV4dC1hbmd1bGFyPmA7XG5cbiAgZm9ybWx5Q29uZmlnUHJvdmlkZXIuc2V0VHlwZSh7XG4gICAgbmFtZSAgICAgXHQ6ICdyaWNoRWRpdG9yJyxcbiAgICB0ZW1wbGF0ZSBcdDogcmljaFRleEVkaXRvclRlbXBsYXRlXG4gIH0pO1xuXG4gIEVhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVsc1Byb3ZpZGVyLmFkZEVhc3lGb3JtQ29udHJvbFRvTGlzdCh7XG4gICAgaWQgXHRcdFx0XHRcdFx0XHRcdDogJ1JpY2hUZXh0RWRpdG9yJyxcbiAgICBuYW1lIFx0XHRcdFx0XHRcdFx0OiAnUmljaFRleHRFZGl0b3InLFxuICAgIHN1YnRpdGxlIFx0XHRcdFx0XHQ6ICdSaWNoVGV4dEVkaXRvcicsXG4gICAgZ3JvdXAgXHRcdFx0XHRcdFx0OiAnVGV4dGFyZWEnLFxuICAgIGZvcm1seVR5cGUgXHRcdFx0XHQ6ICdyaWNoRWRpdG9yJyxcbiAgICBmb3JtbHlTdWJ0eXBlIFx0XHQ6ICcnLFxuICAgIGZvcm1seUxhYmVsIFx0XHRcdDogJycsXG4gICAgZm9ybWx5UmVxdWlyZWQgXHRcdDogZmFsc2UsXG4gICAgZm9ybWx5RGVzY3JpcHRpb24gXHQ6ICcnLFxuICAgIGZvcm1seU9wdGlvbnMgXHRcdDogW11cbiAgfSk7XG4gIC8qKlxuICAgKiBkcmFnIGFuZCBkcm9wIHJpY2ggdGV4dCBlZGl0b3IgY29udHJvbCB0ZW1wbGF0ZSAodXNpbmcgdGV4dEFuZ3VsYXIpXG4gICAqXG4gICAgKlxuICAgICogQFBBUkFNIDEgOiBjb250cm9sIHRlbXBsYXRlIG9iamVjdCAoZHJhZyBhbiBkcm9wKVxuICAgICogQFBBUkFNIDIgOiBvYmplY3QgdG8gaW5kaWNhdGVzIGluIHdoaWNoIGdyb3VwIG9mIGNvbnRyb2wgaXQgd2lsbCBiZSBpbnNlcnRlZFxuICAgICogIFx0XHRcdFx0XHQocmVsYXRlZCB0byBfZHJhZ0Ryb3BDb25maWdNb2RlbC5jb250YWluZXJDb25maWcuZGVjb3JhdGlvbiBpbiBkcmFnRHJvcENvbmZpZyBwcm92aWRlcilcbiAgICAqL1xuICBlYXN5Rm9ybURyYWdXYXlDb25maWdQcm92aWRlci5hZGRDb250cm9sVG9EcmFnRHJvcFByZXNlbnRhdGlvbk1vZGVsKHtcbiAgICBsYWJlbCBcdDogYFxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwidGV4dEFyZWFcIiBjbGFzcz1cImNvbnRyb2wtbGFiZWxcbiAgICAgIFx0XHRcdFx0XHRcdFx0dGV4dENvbnRyb2xMYWJlbCBwdWxsLWxlZnRcIj50aXRsZSBmb3IgcmljaCB0ZXh0IGVkaXRvciA8c3BhbiBjbGFzcz1cInRleHRDb250cm9sTGFiZWxcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgIDx0ZXh0YXJlYSBkaXNhYmxlZCBjbGFzcz1cImZvcm0tY29udHJvbCBkcmFnSXRlbXRleHRhcmVhIGZha2VDb250cm9sXCIgbmctbW9kZWw9XCJtb2RlbFtvcHRpb25zLmtleV1cIiByb3dzPVwiMVwiIGlkPVwidGV4dEFyZWFcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlbHAtYmxvY2tcIj5kZXNjcmlwdGlvbjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+YCxcbiAgICBjb250cm9sXHQ6ICdSaWNoVGV4dEVkaXRvcicsXG4gICAgY3NzQ2xhc3M6ICdjb2wteHMtMTInXG4gIH0sXG4gIHtcbiAgICBhZGRUb0dyb3VwQ3RybCA6ICd0ZXh0YXJlYXMnXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBBZGQgcmFkaW9cbiAgICpcbiAgICAqIG5vdGUgOiBmb3JtbHkgdGVtcGxhdGUgYWxyZWFkeSBleGlzdHNcbiAgICAqIG5vIG5lZWQgdG8gY3JlYXRlIGEgY3VzdG9tIG9uZVxuICAgICpcbiAgICAqIGp1c3QgZGVjbGFyZSBpbiBFYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHNQcm92aWRlclxuICAgICovXG4gIEVhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVsc1Byb3ZpZGVyLmFkZEVhc3lGb3JtQ29udHJvbFRvTGlzdCh7XG4gICAgaWQgXHRcdFx0XHRcdFx0XHRcdDogJ1JhZGlvJyxcbiAgICBuYW1lIFx0XHRcdFx0XHRcdFx0OiAnUmFkaW8nLFxuICAgIHN1YnRpdGxlIFx0XHRcdFx0XHQ6ICdSYWRpbycsXG4gICAgb3B0aW9ucyBcdFx0XHRcdFx0OiBbXSxcbiAgICBncm91cCBcdFx0XHRcdFx0XHQ6ICdSYWRpbycsXG4gICAgZm9ybWx5VHlwZSBcdFx0XHRcdDogJ3JhZGlvJyxcbiAgICBmb3JtbHlTdWJ0eXBlIFx0XHQ6ICcnLFxuICAgIGZvcm1seUxhYmVsIFx0XHRcdDogJycsXG4gICAgZm9ybWx5UmVxdWlyZWQgXHRcdDogZmFsc2UsXG4gICAgZm9ybWx5RGVzY3JpcHRpb24gXHQ6ICcnICxcbiAgICBmb3JtbHlPcHRpb25zIFx0XHQ6IFtdXG4gIH0pO1xuICAvKipcbiAgICogZHJhZyBhbmQgZHJvcCByYWRpbyBjb250cm9sIHRlbXBsYXRlICh1c2luZyB0ZXh0QW5ndWxhcilcbiAgICpcbiAgICAqXG4gICAgKiBAUEFSQU0gMSA6IGNvbnRyb2wgdGVtcGxhdGUgb2JqZWN0IChkcmFnIGFuIGRyb3ApXG4gICAgKiBAUEFSQU0gMiA6IG9iamVjdCB0byBpbmRpY2F0ZXMgaW4gd2hpY2ggZ3JvdXAgb2YgY29udHJvbCBpdCB3aWxsIGJlIGluc2VydGVkXG4gICAgKiAgXHRcdFx0XHRcdChyZWxhdGVkIHRvIF9kcmFnRHJvcENvbmZpZ01vZGVsLmNvbnRhaW5lckNvbmZpZy5kZWNvcmF0aW9uIGluIGRyYWdEcm9wQ29uZmlnIHByb3ZpZGVyKVxuICAgICovXG4gIGVhc3lGb3JtRHJhZ1dheUNvbmZpZ1Byb3ZpZGVyLmFkZENvbnRyb2xUb0RyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWwoe1xuICAgICdsYWJlbCcgXHQ6IGBcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwidmVydFJhZGlvXCIgY2xhc3M9XCJjb250cm9sLWxhYmVsIHRleHRDb250cm9sTGFiZWwgcHVsbC1sZWZ0XCI+dGl0bGUgZm9yIHJhZGlvIDxzcGFuIGNsYXNzPVwidGV4dENvbnRyb2xMYWJlbFwiPio8L3NwYW4+PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW50ZXJsaWduZVwiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdWxsLWxlZnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpb1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmYWtlQ2hlY2tcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgZGlzYWJsZWQgbmFtZT1cIm9wdGlvbnNSYWRpb3NcIiBjbGFzcz1cImZha2VDaGVja1wiIGlkPVwib3B0aW9uc1JhZGlvLTBcIiB2YWx1ZT1cInZlcnRpY2FsUmFkaW8wXCIgY2hlY2tlZD1cIlwiPlxuICAgICAgICAgICAgICAgIG9wdGlvbjFcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZha2VDaGVja1wiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBkaXNhYmxlZCBuYW1lPVwib3B0aW9uc1JhZGlvc1wiIGNsYXNzPVwiZmFrZUNoZWNrXCIgIGlkPVwib3B0aW9uc1JhZGlvLTFcIiB2YWx1ZT1cInZlcnRpY2FsUmFkaW8xXCIgY2hlY2tlZD1cIlwiPlxuICAgICAgICAgICAgICAgIG9wdGlvbjJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWxwLWJsb2NrIHB1bGwtbGVmdFwiPmRlc2NyaXB0aW9uPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PmAsXG4gICAgJ2NvbnRyb2wnXHQ6ICdSYWRpbycsXG4gICAgJ2Nzc0NsYXNzJzogJ2NvbC14cy0xMidcbiAgfSxcbiAge1xuICAgIGFkZFRvR3JvdXBDdHJsIDogJ3JhZGlvcydcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEFkZCBjaGVja2JveFxuICAgKlxuICAgICogbm90ZSA6IGZvcm1seSB0ZW1wbGF0ZSBhbHJlYWR5IGV4aXN0c1xuICAgICogbm8gbmVlZCB0byBjcmVhdGUgYSBjdXN0b20gb25lXG4gICAgKlxuICAgICoganVzdCBkZWNsYXJlIGluIEVhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVsc1Byb3ZpZGVyXG4gICAgKi9cbiAgRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzUHJvdmlkZXIuYWRkRWFzeUZvcm1Db250cm9sVG9MaXN0KHtcbiAgICBpZCBcdFx0XHRcdFx0XHRcdFx0OiAnQ2hlY2tib3gnLFxuICAgIG5hbWUgXHRcdFx0XHRcdFx0XHQ6ICdDaGVja2JveCcsXG4gICAgc3VidGl0bGUgXHRcdFx0XHRcdDogJ0NoZWNrYm94JyxcbiAgICBncm91cCBcdFx0XHRcdFx0XHQ6ICdDaGVja2JveCcsXG4gICAgZm9ybWx5VHlwZSBcdFx0XHRcdDogJ2NoZWNrYm94JyxcbiAgICBmb3JtbHlTdWJ0eXBlIFx0XHQ6ICcnLFxuICAgIGZvcm1seUxhYmVsIFx0XHRcdDogJycsXG4gICAgZm9ybWx5UmVxdWlyZWQgXHRcdDogZmFsc2UsXG4gICAgZm9ybWx5RGVzY3JpcHRpb24gXHQ6ICcnLFxuICAgIGZvcm1seU9wdGlvbnMgXHRcdDogW11cbiAgfSk7XG4gIC8qKlxuICAgKiBkcmFnIGFuZCBkcm9wIGNoZWNrYm94IGNvbnRyb2wgdGVtcGxhdGUgKHVzaW5nIHRleHRBbmd1bGFyKVxuICAgKlxuICAgICpcbiAgICAqIEBQQVJBTSAxIDogY29udHJvbCB0ZW1wbGF0ZSBvYmplY3QgKGRyYWcgYW4gZHJvcClcbiAgICAqIEBQQVJBTSAyIDogb2JqZWN0IHRvIGluZGljYXRlcyBpbiB3aGljaCBncm91cCBvZiBjb250cm9sIGl0IHdpbGwgYmUgaW5zZXJ0ZWRcbiAgICAqICBcdFx0XHRcdFx0KHJlbGF0ZWQgdG8gX2RyYWdEcm9wQ29uZmlnTW9kZWwuY29udGFpbmVyQ29uZmlnLmRlY29yYXRpb24gaW4gZHJhZ0Ryb3BDb25maWcgcHJvdmlkZXIpXG4gICAgKi9cbiAgZWFzeUZvcm1EcmFnV2F5Q29uZmlnUHJvdmlkZXIuYWRkQ29udHJvbFRvRHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbCh7XG4gICAgbGFiZWwgXHQ6IGBcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZmFrZUNoZWNrXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGRpc2FibGVkIGNsYXNzPVwiZmFrZUNoZWNrXCIgaWQ9XCJjaGVja0JveFwiPlxuICAgICAgXHRcdDxzcGFuIGNsYXNzPVwiYmxhY2tUZXh0IG5nLWJpbmRpbmdcIj5sYWJlbCBmb3IgY2hlY2tib3ggPC9zcGFuPlxuICAgICAgXHRcdDxzcGFuIGNsYXNzPVwidGV4dENvbnRyb2xMYWJlbCBuZy1zY29wZVwiPio8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxwIGNsYXNzPVwiaGVscC1ibG9jayBuZy1iaW5kaW5nXCI+ZGVzY3JpcHRpb248L3A+XG4gICAgPC9kaXY+YCxcbiAgICBjb250cm9sXHQ6ICdDaGVja2JveCcsXG4gICAgY3NzQ2xhc3M6ICdjb2wteHMtMTInXG4gIH0sXG4gIHtcbiAgICBhZGRUb0dyb3VwQ3RybCA6ICdjaGVja2JveGVzJ1xuICB9KTtcblxuICAvKipcbiAgICogQWRkIGJhc2ljIFNlbGVjdCBjb250cm9sXG4gICAqXG4gICAgKiB1c2luZyBueWEtYnMtc2VsZWN0XG4gICAgKi9cbiAgbGV0IGJhc2ljU2VsZWN0VGVtcGxhdGUgPVx0YFxuICAgPG9sIGNsYXNzPVwibnlhLWJzLXNlbGVjdCBjb2wtc20tMTIgY29sLXhzLTEyIGNvbC1tZC0xMiBjb2wtbGcxMlwiXG4gIFx0XHRuZy1tb2RlbD1cIm1vZGVsW29wdGlvbnMua2V5IHx8IGluZGV4XVwiXG4gIFx0XHRpZD1cInt7aWR9fVwiXG4gIFx0XHRkaXNhYmxlZD1cIm9wdGlvbnMudGVtcGxhdGVPcHRpb25zLm9wdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgIDxsaSBjbGFzcz1cIm55YS1icy1vcHRpb25cIiBueWEtYnMtb3B0aW9uPVwib3B0aW9uIGluIG9wdGlvbnMudGVtcGxhdGVPcHRpb25zLm9wdGlvbnNcIj5cbiAgICAgICA8YT57e29wdGlvbi5uYW1lfX08L2E+XG4gICAgIDwvbGk+XG4gICA8L29sPiBgO1xuXG4gIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuICAgIG5hbWUgXHRcdFx0OiAnYmFzaWNTZWxlY3QnLFxuICAgIHRlbXBsYXRlIFx0OiBiYXNpY1NlbGVjdFRlbXBsYXRlXG4gIH0pO1xuXG4gIEVhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVsc1Byb3ZpZGVyLmFkZEVhc3lGb3JtQ29udHJvbFRvTGlzdCh7XG4gICAgaWQgXHRcdFx0XHRcdFx0XHRcdDogJ0Jhc2ljU2VsZWN0JyxcbiAgICBuYW1lIFx0XHRcdFx0XHRcdFx0OiAnQmFzaWMgc2VsZWN0JyxcbiAgICBzdWJ0aXRsZSBcdFx0XHRcdFx0OiAnQmFzaWMgc2VsZWN0JyxcbiAgICBvcHRpb25zIFx0XHRcdFx0XHQ6IFtdLFxuICAgIGdyb3VwIFx0XHRcdFx0XHRcdDogJ1NlbGVjdCcsXG4gICAgZm9ybWx5VHlwZSBcdFx0XHRcdDogJ2Jhc2ljU2VsZWN0JyxcbiAgICBmb3JtbHlTdWJ0eXBlIFx0XHQ6ICcnLFxuICAgIGZvcm1seUxhYmVsIFx0XHRcdDogJycsXG4gICAgZm9ybWx5UmVxdWlyZWQgXHRcdDogZmFsc2UsXG4gICAgZm9ybWx5RGVzY3JpcHRpb24gXHQ6ICcnLFxuICAgIGZvcm1seU9wdGlvbnMgXHRcdDogW11cbiAgfSk7XG5cbiAgLyoqXG4gICAqIGRyYWcgYW5kIGRyb3AgYmFzaWMgc2VsZWN0IGNvbnRyb2wgdGVtcGxhdGUgKHVzaW5nIHRleHRBbmd1bGFyKVxuICAgKlxuICAgICpcbiAgICAqIEBQQVJBTSAxIDogY29udHJvbCB0ZW1wbGF0ZSBvYmplY3QgKGRyYWcgYW4gZHJvcClcbiAgICAqIEBQQVJBTSAyIDogb2JqZWN0IHRvIGluZGljYXRlcyBpbiB3aGljaCBncm91cCBvZiBjb250cm9sIGl0IHdpbGwgYmUgaW5zZXJ0ZWRcbiAgICAqICBcdFx0XHRcdFx0KHJlbGF0ZWQgdG8gX2RyYWdEcm9wQ29uZmlnTW9kZWwuY29udGFpbmVyQ29uZmlnLmRlY29yYXRpb24gaW4gZHJhZ0Ryb3BDb25maWcgcHJvdmlkZXIpXG4gICAgKi9cbiAgZWFzeUZvcm1EcmFnV2F5Q29uZmlnUHJvdmlkZXIuYWRkQ29udHJvbFRvRHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbChcbiAge1xuICAgIGxhYmVsIFx0OiBgXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0xMiBjb2wtbWQtMTIgY29sLWxnLTEyIHNlbGVjdGZvcmRlbW9cIj5cblxuICAgICAgPG9sIGNsYXNzPVwibnlhLWJzLXNlbGVjdCBjb2wteHMtMTIgY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtbGctMTIgbmctdmFsaWQgYnRuLWdyb3VwIG5nLWRpcnR5IG5nLXZhbGlkLXBhcnNlIG5nLXRvdWNoZWRcIlxuICAgICAgXHRuZy1tb2RlbD1cImZha2VNb2RlbE55YVNlbGVjdEJhc2ljXCJcbiAgICAgIFx0ZGF0YS1saXZlLXNlYXJjaD1cImZhbHNlXCI+XG5cbiAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgZHJvcGRvd24tdG9nZ2xlXCIgZGlzYWJsZWQgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgXHRcdCA8c3BhbiBjbGFzcz1cInB1bGwtbGVmdCBmaWx0ZXItb3B0aW9uXCI+XG4gICAgICBcdFx0XHQgPHNwYW4gY2xhc3M9XCJuZy1iaW5kaW5nXCI+QmFzaWMgc2VsZWN0PC9zcGFuPlxuICAgICAgXHRcdDwvc3Bhbj5cbiAgICAgIFx0XHQmbmJzcDs8c3BhbiBjbGFzcz1cImNhcmV0XCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5gLFxuICAgIGNvbnRyb2xcdDogJ0Jhc2ljU2VsZWN0JyxcbiAgICBjc3NDbGFzczogJ2NvbC14cy0xMidcbiAgfSxcbiAge1xuICAgIGFkZFRvR3JvdXBDdHJsIDogJ3NlbGVjdHMnXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBBZGQgR3JvdXBlZCBTZWxlY3QgY29udHJvbFxuICAgKlxuICAgICogdXNpbmcgbnlhLWJzLXNlbGVjdFxuICAgICovXG4gIGxldCBncm91cGVkU2VsZWN0VGVtcGxhdGUgPVx0YFxuICA8b2wgY2xhc3M9XCJueWEtYnMtc2VsZWN0IGNvbC1zbS0xMiBjb2wteHMtMTIgY29sLW1kLTEyIGNvbC1sZzEyXCJcblx0XHQgICBuZy1tb2RlbD1cIm1vZGVsW29wdGlvbnMua2V5IHx8IGluZGV4XVwiXG4gICAgICBkYXRhLWxpdmUtc2VhcmNoPVwidHJ1ZVwiXG4gICAgICBkaXNhYmxlZD1cIm9wdGlvbnMudGVtcGxhdGVPcHRpb25zLm9wdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICA8bGkgbnlhLWJzLW9wdGlvbj1cIm9wdGlvbiBpbiAgb3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnMub3B0aW9ucyBncm91cCBieSBvcHRpb24uZ3JvdXBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1oZWFkZXJcIj57eyRncm91cH19PC9zcGFuPlxuICAgICAgICA8YT5cbiAgICAgICAgICA8c3Bhbj57e29wdGlvbi5uYW1lfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnbHlwaGljb24gZ2x5cGhpY29uLW9rIGNoZWNrLW1hcmtcIj48L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gIDwvb2w+YDtcblxuICBmb3JtbHlDb25maWdQcm92aWRlci5zZXRUeXBlKHtcbiAgICBuYW1lICAgXHRcdDogJ2dyb3VwZWRTZWxlY3QnLFxuICAgIHRlbXBsYXRlIFx0OiBncm91cGVkU2VsZWN0VGVtcGxhdGVcbiAgfSk7XG5cbiAgRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzUHJvdmlkZXIuYWRkRWFzeUZvcm1Db250cm9sVG9MaXN0KHtcbiAgICBpZCBcdFx0XHRcdFx0XHRcdFx0OiAnR3JvdXBlZFNlbGVjdCcsXG4gICAgbmFtZSBcdFx0XHRcdFx0XHRcdDogJ0dyb3VwZWQgU2VsZWN0JyxcbiAgICBzdWJ0aXRsZSBcdFx0XHRcdFx0OiAnR3JvdXBlZCBTZWxlY3QnLFxuICAgIG9wdGlvbnMgXHRcdFx0XHRcdDogW10sXG4gICAgZ3JvdXAgXHRcdFx0XHRcdFx0OiAnU2VsZWN0JyxcbiAgICBmb3JtbHlUeXBlIFx0XHRcdFx0OiAnZ3JvdXBlZFNlbGVjdCcsXG4gICAgZm9ybWx5U3VidHlwZSBcdFx0OiAnJyxcbiAgICBmb3JtbHlMYWJlbCBcdFx0XHQ6ICcnLFxuICAgIGZvcm1seVJlcXVpcmVkIFx0XHQ6IGZhbHNlLFxuICAgIGZvcm1seURlc2NyaXB0aW9uIFx0OiAnJyxcbiAgICBmb3JtbHlPcHRpb25zIFx0XHQ6IFtdXG4gIH0pO1xuICAvKipcbiAgICogZHJhZyBhbmQgZHJvcCBncm91cGVkIHNlbGVjdCBjb250cm9sIHRlbXBsYXRlICh1c2luZyB0ZXh0QW5ndWxhcilcbiAgICpcbiAgICAqXG4gICAgKiBAUEFSQU0gMSA6IGNvbnRyb2wgdGVtcGxhdGUgb2JqZWN0IChkcmFnIGFuIGRyb3ApXG4gICAgKiBAUEFSQU0gMiA6IG9iamVjdCB0byBpbmRpY2F0ZXMgaW4gd2hpY2ggZ3JvdXAgb2YgY29udHJvbCBpdCB3aWxsIGJlIGluc2VydGVkXG4gICAgKiAgXHRcdFx0XHRcdChyZWxhdGVkIHRvIF9kcmFnRHJvcENvbmZpZ01vZGVsLmNvbnRhaW5lckNvbmZpZy5kZWNvcmF0aW9uIGluIGRyYWdEcm9wQ29uZmlnIHByb3ZpZGVyKVxuICAgICovXG4gIGVhc3lGb3JtRHJhZ1dheUNvbmZpZ1Byb3ZpZGVyLmFkZENvbnRyb2xUb0RyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWwoe1xuICAgIGxhYmVsIFx0OiBgXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtbGctMTIgc2VsZWN0Zm9yZGVtb1wiPlxuICAgICAgPG9sIGNsYXNzPVwibnlhLWJzLXNlbGVjdCBjb2wteHMtMTIgY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtbGctMTIgbmctdmFsaWQgYnRuLWdyb3VwIG5nLWRpcnR5IG5nLXZhbGlkLXBhcnNlIG5nLXRvdWNoZWRcIlxuICAgICAgXHRuZy1tb2RlbD1cImZha2VNb2RlbE55YVNlbGVjdEJhc2ljXCJcbiAgICAgIFx0ZGF0YS1saXZlLXNlYXJjaD1cImZhbHNlXCI+XG4gICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGRyb3Bkb3duLXRvZ2dsZVwiIGRpc2FibGVkIHR5cGU9XCJidXR0b25cIj5cbiAgICAgIFx0XHQgPHNwYW4gY2xhc3M9XCJwdWxsLWxlZnQgZmlsdGVyLW9wdGlvblwiPlxuICAgICAgXHRcdFx0IDxzcGFuIGNsYXNzPVwibmctYmluZGluZ1wiPkdyb3VwZWQgc2VsZWN0PC9zcGFuPlxuICAgICAgXHRcdDwvc3Bhbj5cbiAgICAgIFx0XHQmbmJzcDs8c3BhbiBjbGFzcz1cImNhcmV0XCI+PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PmAsXG4gICAgY29udHJvbFx0OiAnR3JvdXBlZFNlbGVjdCcsXG4gICAgY3NzQ2xhc3M6ICdjb2wteHMtMTInXG4gIH0sXG4gIHtcbiAgICBhZGRUb0dyb3VwQ3RybCA6ICdzZWxlY3RzJ1xuICB9KTtcblxuXG59XG5cbmZvcm1seUNvbmZpZy4kaW5qZWN0ID0gW1xuICAnZm9ybWx5Q29uZmlnUHJvdmlkZXInLFxuICAnRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzUHJvdmlkZXInLFxuICAnZWFzeUZvcm1EcmFnV2F5Q29uZmlnUHJvdmlkZXInXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBmb3JtbHlDb25maWc7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbmZpZy9lZGFEcmFnRHJvcFdheS5mb3JtbHlDb25maWcuY29uZmlnLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 12 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EASY_FORM_DD_VERSION_VALUE = exports.EASY_FORM_DD_VERSION_NAME = undefined;\n\nvar _easyFormConfig = __webpack_require__(13);\n\nvar _easyFormConfig2 = _interopRequireDefault(_easyFormConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EASY_FORM_DD_VERSION_NAME = 'easyFormGenVersion';\nvar EASY_FORM_DD_VERSION_VALUE = _easyFormConfig2.default.dragdropway.version;\n\nfunction dragDropConfigFunct(easyFormDragWayConfigProvider) {\n easyFormDragWayConfigProvider.setItemsNotTocount({\n //placeholder : '',\n itemBeingDragged: 'dndDraggingSource'\n });\n}\n\ndragDropConfigFunct.$inject = ['easyFormDragWayConfigProvider'];\n\nexports.default = dragDropConfigFunct;\nexports.EASY_FORM_DD_VERSION_NAME = EASY_FORM_DD_VERSION_NAME;\nexports.EASY_FORM_DD_VERSION_VALUE = EASY_FORM_DD_VERSION_VALUE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbmZpZy9lZGFEcmFnRHJvcFdheS5kcmFnRHJvcENvbmZpZy5jb25maWcuanM/ZjU4NCJdLCJuYW1lcyI6WyJFQVNZX0ZPUk1fRERfVkVSU0lPTl9OQU1FIiwiRUFTWV9GT1JNX0REX1ZFUlNJT05fVkFMVUUiLCJkcmFnZHJvcHdheSIsInZlcnNpb24iLCJkcmFnRHJvcENvbmZpZ0Z1bmN0IiwiZWFzeUZvcm1EcmFnV2F5Q29uZmlnUHJvdmlkZXIiLCJzZXRJdGVtc05vdFRvY291bnQiLCJpdGVtQmVpbmdEcmFnZ2VkIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7Ozs7QUFFQSxJQUFNQSw0QkFBNkIsb0JBQW5DO0FBQ0EsSUFBTUMsNkJBQTZCLHlCQUFlQyxXQUFmLENBQTJCQyxPQUE5RDs7QUFFQSxTQUFTQyxtQkFBVCxDQUE2QkMsNkJBQTdCLEVBQTREO0FBQzFEQSxnQ0FBOEJDLGtCQUE5QixDQUFpRDtBQUMvQztBQUNBQyxzQkFBc0I7QUFGeUIsR0FBakQ7QUFJRDs7QUFFREgsb0JBQW9CSSxPQUFwQixHQUE4QixDQUM1QiwrQkFENEIsQ0FBOUI7O2tCQUllSixtQjtRQUdiSix5QixHQUFBQSx5QjtRQUNBQywwQixHQUFBQSwwQiIsImZpbGUiOiIxMi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlYXN5Rm9ybUNvbmZpZyAgIGZyb20gJy4uLy4uL2Vhc3lGb3JtQ29uZmlnLmpzb24nO1xuXG5jb25zdCBFQVNZX0ZPUk1fRERfVkVSU0lPTl9OQU1FICA9ICdlYXN5Rm9ybUdlblZlcnNpb24nO1xubGV0ICAgRUFTWV9GT1JNX0REX1ZFUlNJT05fVkFMVUUgPSBlYXN5Rm9ybUNvbmZpZy5kcmFnZHJvcHdheS52ZXJzaW9uO1xuXG5mdW5jdGlvbiBkcmFnRHJvcENvbmZpZ0Z1bmN0KGVhc3lGb3JtRHJhZ1dheUNvbmZpZ1Byb3ZpZGVyKSB7XG4gIGVhc3lGb3JtRHJhZ1dheUNvbmZpZ1Byb3ZpZGVyLnNldEl0ZW1zTm90VG9jb3VudCh7XG4gICAgLy9wbGFjZWhvbGRlciA6ICAgICAgICAgJycsXG4gICAgaXRlbUJlaW5nRHJhZ2dlZCA6ICAgICdkbmREcmFnZ2luZ1NvdXJjZScgICAgXG4gIH0pO1xufVxuXG5kcmFnRHJvcENvbmZpZ0Z1bmN0LiRpbmplY3QgPSBbXG4gICdlYXN5Rm9ybURyYWdXYXlDb25maWdQcm92aWRlcidcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGRyYWdEcm9wQ29uZmlnRnVuY3Q7IFxuXG5leHBvcnQge1xuICBFQVNZX0ZPUk1fRERfVkVSU0lPTl9OQU1FLCBcbiAgRUFTWV9GT1JNX0REX1ZFUlNJT05fVkFMVUVcbn07XG5cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29uZmlnL2VkYURyYWdEcm9wV2F5LmRyYWdEcm9wQ29uZmlnLmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 13 */
+/***/ function(module, exports) {
+
+ eval("module.exports = {\n\t\"stepway\": {\n\t\t\"version\": \"2.1.4\"\n\t},\n\t\"dragdropway\": {\n\t\t\"version\": \"2.1.4\"\n\t},\n\t\"formviewer\": {\n\t\t\"version\": \"2.1.4\"\n\t}\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Vhc3lGb3JtQ29uZmlnLmpzb24/MzFjYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIxMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge1xuXHRcInN0ZXB3YXlcIjoge1xuXHRcdFwidmVyc2lvblwiOiBcIjIuMS40XCJcblx0fSxcblx0XCJkcmFnZHJvcHdheVwiOiB7XG5cdFx0XCJ2ZXJzaW9uXCI6IFwiMi4xLjRcIlxuXHR9LFxuXHRcImZvcm12aWV3ZXJcIjoge1xuXHRcdFwidmVyc2lvblwiOiBcIjIuMS40XCJcblx0fVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvZWFzeUZvcm1Db25maWcuanNvblxuLy8gbW9kdWxlIGlkID0gMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 14 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar CORE_MODULES = ['textAngular', 'textAngularSetup', 'ngAnimate', 'toaster', 'formly', 'formlyBootstrap', 'ui.bootstrap', 'nya.bootstrap.select', 'mgcrea.ngStrap.affix'\n// 'pascalprecht.translate'\t\n];\n\nexports.default = angular.module('easyFormGen.dragDropWay.core', CORE_MODULES);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvcmUvZWRhRHJhZ0Ryb3BXYXkuY29yZS5tb2R1bGUuanM/OTY2YyJdLCJuYW1lcyI6WyJDT1JFX01PRFVMRVMiLCJhbmd1bGFyIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQU1BLGVBQWUsQ0FDcEIsYUFEb0IsRUFFcEIsa0JBRm9CLEVBR3BCLFdBSG9CLEVBSXBCLFNBSm9CLEVBS3BCLFFBTG9CLEVBTXBCLGlCQU5vQixFQU9wQixjQVBvQixFQVFwQixzQkFSb0IsRUFTcEI7QUFDQTtBQVZvQixDQUFyQjs7a0JBYWVDLFFBQ05DLE1BRE0sQ0FDQyw4QkFERCxFQUNpQ0YsWUFEakMsQyIsImZpbGUiOiIxNC5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IENPUkVfTU9EVUxFUyA9IFtcdFxuXHQndGV4dEFuZ3VsYXInLFxuXHQndGV4dEFuZ3VsYXJTZXR1cCcsXG5cdCduZ0FuaW1hdGUnLFxuXHQndG9hc3RlcicsXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHQnZm9ybWx5JywgXG5cdCdmb3JtbHlCb290c3RyYXAnLFxuXHQndWkuYm9vdHN0cmFwJyxcblx0J255YS5ib290c3RyYXAuc2VsZWN0Jyxcblx0J21nY3JlYS5uZ1N0cmFwLmFmZml4J1xuXHQvLyAncGFzY2FscHJlY2h0LnRyYW5zbGF0ZSdcdFxuXTtcblxuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuXHRcdFx0XHRcdFx0XHRcdC5tb2R1bGUoJ2Vhc3lGb3JtR2VuLmRyYWdEcm9wV2F5LmNvcmUnLCBDT1JFX01PRFVMRVMpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb3JlL2VkYURyYWdEcm9wV2F5LmNvcmUubW9kdWxlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 15 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _edaDragDropWayLeftPanel = __webpack_require__(16);\n\nvar _edaDragDropWayLeftPanel2 = _interopRequireDefault(_edaDragDropWayLeftPanel);\n\nvar _edaDragDropWayLeftPanel3 = __webpack_require__(18);\n\nvar _edaDragDropWayLeftPanel4 = _interopRequireDefault(_edaDragDropWayLeftPanel3);\n\nvar _edaDragDropWayLeftPanelSelectOptionManage = __webpack_require__(20);\n\nvar _edaDragDropWayLeftPanelSelectOptionManage2 = _interopRequireDefault(_edaDragDropWayLeftPanelSelectOptionManage);\n\nvar _edaDragDropWayLeftPanelControllerModalProxy = __webpack_require__(22);\n\nvar _edaDragDropWayLeftPanelControllerModalProxy2 = _interopRequireDefault(_edaDragDropWayLeftPanelControllerModalProxy);\n\nvar _edaDragDropWayLeftpanelValidEditFooter = __webpack_require__(23);\n\nvar _edaDragDropWayLeftpanelValidEditFooter2 = _interopRequireDefault(_edaDragDropWayLeftpanelValidEditFooter);\n\nvar _edaDragDropWayLeftpanelTextInputControl = __webpack_require__(25);\n\nvar _edaDragDropWayLeftpanelTextInputControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelTextInputControl);\n\nvar _edaDragDropWayLeftpanelTextareaControl = __webpack_require__(27);\n\nvar _edaDragDropWayLeftpanelTextareaControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelTextareaControl);\n\nvar _edaDragDropWayLeftpanelSubtitleControl = __webpack_require__(29);\n\nvar _edaDragDropWayLeftpanelSubtitleControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelSubtitleControl);\n\nvar _edaDragDropWayLeftpanelRichTextEditorControl = __webpack_require__(31);\n\nvar _edaDragDropWayLeftpanelRichTextEditorControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelRichTextEditorControl);\n\nvar _edaDragDropWayLeftpanelRadioControl = __webpack_require__(33);\n\nvar _edaDragDropWayLeftpanelRadioControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelRadioControl);\n\nvar _edaDragDropWayLeftpanelPasswordControl = __webpack_require__(35);\n\nvar _edaDragDropWayLeftpanelPasswordControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelPasswordControl);\n\nvar _edaDragDropWayLeftpanelHeaderControl = __webpack_require__(37);\n\nvar _edaDragDropWayLeftpanelHeaderControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelHeaderControl);\n\nvar _edaDragDropWayLeftpanelGroupedSelectControl = __webpack_require__(39);\n\nvar _edaDragDropWayLeftpanelGroupedSelectControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelGroupedSelectControl);\n\nvar _edaDragDropWayLeftpanelDateControl = __webpack_require__(41);\n\nvar _edaDragDropWayLeftpanelDateControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelDateControl);\n\nvar _edaDragDropWayLeftpanelCheckBoxControl = __webpack_require__(43);\n\nvar _edaDragDropWayLeftpanelCheckBoxControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelCheckBoxControl);\n\nvar _edaDragDropWayLeftpanelBlankControl = __webpack_require__(45);\n\nvar _edaDragDropWayLeftpanelBlankControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelBlankControl);\n\nvar _edaDragDropWayLeftpanelBasicSelectControl = __webpack_require__(47);\n\nvar _edaDragDropWayLeftpanelBasicSelectControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelBasicSelectControl);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_MODULE = 'edaDragDropWay.leftPanel.module'; /* global angular */\nexports.default = angular.module(LEFT_PANEL_MODULE, []).directive(_edaDragDropWayLeftPanel3.LEFT_PANEL_DIRECTIVE, _edaDragDropWayLeftPanel4.default).controller(_edaDragDropWayLeftPanel.LEFT_PANEL_CONTROLLER, _edaDragDropWayLeftPanel2.default).service(_edaDragDropWayLeftPanelSelectOptionManage.LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE, _edaDragDropWayLeftPanelSelectOptionManage2.default).service(_edaDragDropWayLeftPanelControllerModalProxy.CONTROLLER_MODAL_PROXY, _edaDragDropWayLeftPanelControllerModalProxy2.default).directive(_edaDragDropWayLeftpanelValidEditFooter.LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE, _edaDragDropWayLeftpanelValidEditFooter2.default).directive(_edaDragDropWayLeftpanelTextInputControl.LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelTextInputControl2.default).directive(_edaDragDropWayLeftpanelTextareaControl.LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelTextareaControl2.default).directive(_edaDragDropWayLeftpanelSubtitleControl.LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelSubtitleControl2.default).directive(_edaDragDropWayLeftpanelRichTextEditorControl.LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelRichTextEditorControl2.default).directive(_edaDragDropWayLeftpanelRadioControl.LEFT_PANEL_RADIO_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelRadioControl2.default).directive(_edaDragDropWayLeftpanelPasswordControl.LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelPasswordControl2.default).directive(_edaDragDropWayLeftpanelHeaderControl.LEFT_PANEL_HEADER_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelHeaderControl2.default).directive(_edaDragDropWayLeftpanelGroupedSelectControl.LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelGroupedSelectControl2.default).directive(_edaDragDropWayLeftpanelDateControl.LEFT_PANEL_DATE_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelDateControl2.default).directive(_edaDragDropWayLeftpanelCheckBoxControl.LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelCheckBoxControl2.default).directive(_edaDragDropWayLeftpanelBlankControl.LEFT_PANEL_BLANK_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelBlankControl2.default).directive(_edaDragDropWayLeftpanelBasicSelectControl.LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelBasicSelectControl2.default);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC5tb2R1bGUuanM/NzA3OCJdLCJuYW1lcyI6WyJMRUZUX1BBTkVMX01PRFVMRSIsImFuZ3VsYXIiLCJtb2R1bGUiLCJkaXJlY3RpdmUiLCJjb250cm9sbGVyIiwic2VydmljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0E7Ozs7QUFHQTs7OztBQUdBOzs7O0FBR0E7Ozs7QUFHQTs7OztBQUdBOzs7O0FBR0E7Ozs7QUFHQTs7OztBQUdBOzs7O0FBR0E7Ozs7QUFHQTs7OztBQUdBOzs7O0FBR0E7Ozs7QUFHQTs7OztBQUdBOzs7O0FBR0E7Ozs7QUFHQTs7Ozs7O0FBS0EsSUFBTUEsb0JBQW9CLGlDQUExQixDLENBdERBO2tCQXdEZUMsUUFDTkMsTUFETSxDQUNDRixpQkFERCxFQUNvQixFQURwQixFQUVORyxTQUZNLG9GQUdOQyxVQUhNLG9GQUlFQyxPQUpGLDBJQUtFQSxPQUxGLDZIQU1FRixTQU5GLG1JQU9FQSxTQVBGLHNJQVFFQSxTQVJGLGtJQVNFQSxTQVRGLGtJQVVFQSxTQVZGLHNKQVdFQSxTQVhGLHlIQVlFQSxTQVpGLGtJQWFFQSxTQWJGLDRIQWNFQSxTQWRGLGtKQWVFQSxTQWZGLHNIQWdCRUEsU0FoQkYsa0lBaUJFQSxTQWpCRix5SEFrQkVBLFNBbEJGLDJJIiwiZmlsZSI6IjE1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGFuZ3VsYXIgKi9cbmltcG9ydCBsZWZ0UGFuZWxDb250cm9sbGVyLCB7XG5cdExFRlRfUEFORUxfQ09OVFJPTExFUlxufVx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmcm9tICcuL2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC5jb250cm9sbGVyJztcbmltcG9ydCBsZWZ0UGFuZWwsIHtcblx0TEVGVF9QQU5FTF9ESVJFQ1RJVkVcbn1cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnJvbSAnLi9lZGFEcmFnRHJvcFdheS5sZWZ0UGFuZWwuZGlyZWN0aXZlJztcbmltcG9ydCBzZWxlY3RPcHRpb25NYW5nZSwge1xuICBMRUZUX1BBTkVMX1NFTEVDVF9PUFRJT05fTUFOQUdFX1NFUlZJQ0Vcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC5zZWxlY3RPcHRpb25NYW5hZ2Uuc2VydmljZSc7XG5pbXBvcnQgY29udHJvbGxlck1vZGFsUHJveHksIHtcbiAgQ09OVFJPTExFUl9NT0RBTF9QUk9YWVxufSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vZWRhRHJhZ0Ryb3BXYXkubGVmdFBhbmVsLmNvbnRyb2xsZXJNb2RhbFByb3h5LnNlcnZpY2UnO1xuaW1wb3J0IGxlZnRQYW5lbFZhbGlkRWRpdEZvb3Rlciwge1xuICBMRUZUX1BBTkVMX1ZBTElEX0VESVRfRk9PVEVSX0RJUkVDVElWRVxufSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vdmFsaWRFZGl0Rm9vdGVyL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC52YWxpZEVkaXRGb290ZXIuZGlyZWN0aXZlJztcbmltcG9ydCBsZWZ0UGFuZWxUZXh0SW5wdXRDb250cm9sLCB7XG4gIExFRlRfUEFORUxfVEVYVF9JTlBVVF9DT05UUk9MX0RJUkVDVElWRVxufSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vVGV4dElucHV0Q29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwudGV4dElucHV0Q29udHJvbC5kaXJlY3RpdmUnO1xuaW1wb3J0IGxlZnRQYW5lbFRleHRhcmVhQ29udHJvbCwge1xuICBMRUZUX1BBTkVMX1RFWFRBUkVBX0NPTlRST0xfRElSRUNUSVZFXG59ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi9UZXh0QXJlYUNvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLnRleHRhcmVhQ29udHJvbC5kaXJlY3RpdmUnO1xuaW1wb3J0IGxlZnRQYW5lbFN1YnRpdGxlQ29udHJvbCwge1xuICBMRUZUX1BBTkVMX1NVQlRJVExFX0NPTlRST0xfRElSRUNUSVZFXG59ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi9TdWJUaXRsZUNvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLnN1YnRpdGxlQ29udHJvbC5kaXJlY3RpdmUnO1xuaW1wb3J0IGxlZnRQYW5lbFJpY2hUZXh0RWRpdG9yQ29udHJvbCwge1xuICBMRUZUX1BBTkVMX1JJQ0hfVEVYVF9FRElUT1JfQ09OVFJPTF9ESVJFQ1RJVkVcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL1JpY2hUZXh0RWRpdG9yQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwucmljaFRleHRFZGl0b3JDb250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgbGVmdFBhbmVsUmFkaW9Db250cm9sLCB7XG4gIExFRlRfUEFORUxfUkFESU9fQ09OVFJPTF9ESVJFQ1RJVkVcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL1JhZGlvQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwucmFkaW9Db250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgbGVmdFBhbmVsUGFzc3dvcmRDb250cm9sLCB7XG4gIExFRlRfUEFORUxfUEFTU1dPUkRfQ09OVFJPTF9ESVJFQ1RJVkVcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL1Bhc3N3b3JkQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwucGFzc3dvcmRDb250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgbGVmdFBhbmVsSGVhZGVyQ29udHJvbCwge1xuICBMRUZUX1BBTkVMX0hFQURFUl9DT05UUk9MX0RJUkVDVElWRVxufSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vSGVhZGVyQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuaGVhZGVyQ29udHJvbC5kaXJlY3RpdmUnO1xuaW1wb3J0IGxlZnRQYW5lbEdyb3VwZWRTZWxlY3RDb250cm9sLCB7XG4gIExFRlRfUEFORUxfR1JPVVBFRF9TRUxFQ1RfQ09OVFJPTF9ESVJFQ1RJVkVcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL0dyb3VwZWRTZWxlY3RDb250cm9sL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC5ncm91cGVkU2VsZWN0Q29udHJvbC5kaXJlY3RpdmUnO1xuaW1wb3J0IGxlZnRQYW5lbERhdGVDb250cm9sLCB7XG4gIExFRlRfUEFORUxfREFURV9DT05UUk9MX0RJUkVDVElWRVxufSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vRGF0ZUNvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLmRhdGVDb250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgbGVmdFBhbmVsQ2hlY2tCb3hDb250cm9sLCB7XG4gIExFRlRfUEFORUxfQ0hFQ0tCT1hfQ09OVFJPTF9ESVJFQ1RJVkVcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL0NoZWNrQm94Q29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuY2hlY2tCb3hDb250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgbGVmdFBhbmVsQmxhbmtDb250cm9sLCB7XG4gIExFRlRfUEFORUxfQkxBTktfQ09OVFJPTF9ESVJFQ1RJVkVcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL0JsYW5rQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuYmxhbmtDb250cm9sLmRpcmVjdGl2ZSc7XG5pbXBvcnQgbGVmdFBhbmVsQmFzaWNTZWxlY3RDb250cm9sLCB7XG4gIExFRlRfUEFORUxfQkFTSUNfU0VMRUNUX0NPTlRST0xfRElSRUNUSVZFXG59ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi9CYXNpY1NlbGVjdENvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLmJhc2ljU2VsZWN0Q29udHJvbC5kaXJlY3RpdmUnO1xuXG5cbmNvbnN0IExFRlRfUEFORUxfTU9EVUxFID0gJ2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG5cdFx0XHRcdFx0XHRcdFx0Lm1vZHVsZShMRUZUX1BBTkVMX01PRFVMRSwgW10pXG5cdFx0XHRcdFx0XHRcdFx0LmRpcmVjdGl2ZShMRUZUX1BBTkVMX0RJUkVDVElWRSwgbGVmdFBhbmVsKVxuXHRcdFx0XHRcdFx0XHRcdC5jb250cm9sbGVyKExFRlRfUEFORUxfQ09OVFJPTExFUiwgbGVmdFBhbmVsQ29udHJvbGxlcilcbiAgICAgICAgICAgICAgICAuc2VydmljZShMRUZUX1BBTkVMX1NFTEVDVF9PUFRJT05fTUFOQUdFX1NFUlZJQ0UsIHNlbGVjdE9wdGlvbk1hbmdlKVxuICAgICAgICAgICAgICAgIC5zZXJ2aWNlKENPTlRST0xMRVJfTU9EQUxfUFJPWFksIGNvbnRyb2xsZXJNb2RhbFByb3h5KVxuICAgICAgICAgICAgICAgIC5kaXJlY3RpdmUoTEVGVF9QQU5FTF9WQUxJRF9FRElUX0ZPT1RFUl9ESVJFQ1RJVkUsIGxlZnRQYW5lbFZhbGlkRWRpdEZvb3RlcilcbiAgICAgICAgICAgICAgICAuZGlyZWN0aXZlKExFRlRfUEFORUxfVEVYVF9JTlBVVF9DT05UUk9MX0RJUkVDVElWRSwgbGVmdFBhbmVsVGV4dElucHV0Q29udHJvbClcbiAgICAgICAgICAgICAgICAuZGlyZWN0aXZlKExFRlRfUEFORUxfVEVYVEFSRUFfQ09OVFJPTF9ESVJFQ1RJVkUsIGxlZnRQYW5lbFRleHRhcmVhQ29udHJvbClcbiAgICAgICAgICAgICAgICAuZGlyZWN0aXZlKExFRlRfUEFORUxfU1VCVElUTEVfQ09OVFJPTF9ESVJFQ1RJVkUsIGxlZnRQYW5lbFN1YnRpdGxlQ29udHJvbClcbiAgICAgICAgICAgICAgICAuZGlyZWN0aXZlKExFRlRfUEFORUxfUklDSF9URVhUX0VESVRPUl9DT05UUk9MX0RJUkVDVElWRSwgbGVmdFBhbmVsUmljaFRleHRFZGl0b3JDb250cm9sKVxuICAgICAgICAgICAgICAgIC5kaXJlY3RpdmUoTEVGVF9QQU5FTF9SQURJT19DT05UUk9MX0RJUkVDVElWRSwgbGVmdFBhbmVsUmFkaW9Db250cm9sKVxuICAgICAgICAgICAgICAgIC5kaXJlY3RpdmUoTEVGVF9QQU5FTF9QQVNTV09SRF9DT05UUk9MX0RJUkVDVElWRSwgbGVmdFBhbmVsUGFzc3dvcmRDb250cm9sKVxuICAgICAgICAgICAgICAgIC5kaXJlY3RpdmUoTEVGVF9QQU5FTF9IRUFERVJfQ09OVFJPTF9ESVJFQ1RJVkUsIGxlZnRQYW5lbEhlYWRlckNvbnRyb2wpXG4gICAgICAgICAgICAgICAgLmRpcmVjdGl2ZShMRUZUX1BBTkVMX0dST1VQRURfU0VMRUNUX0NPTlRST0xfRElSRUNUSVZFLCBsZWZ0UGFuZWxHcm91cGVkU2VsZWN0Q29udHJvbClcbiAgICAgICAgICAgICAgICAuZGlyZWN0aXZlKExFRlRfUEFORUxfREFURV9DT05UUk9MX0RJUkVDVElWRSwgbGVmdFBhbmVsRGF0ZUNvbnRyb2wpXG4gICAgICAgICAgICAgICAgLmRpcmVjdGl2ZShMRUZUX1BBTkVMX0NIRUNLQk9YX0NPTlRST0xfRElSRUNUSVZFLCBsZWZ0UGFuZWxDaGVja0JveENvbnRyb2wpXG4gICAgICAgICAgICAgICAgLmRpcmVjdGl2ZShMRUZUX1BBTkVMX0JMQU5LX0NPTlRST0xfRElSRUNUSVZFLCBsZWZ0UGFuZWxCbGFua0NvbnRyb2wpXG4gICAgICAgICAgICAgICAgLmRpcmVjdGl2ZShMRUZUX1BBTkVMX0JBU0lDX1NFTEVDVF9DT05UUk9MX0RJUkVDVElWRSwgbGVmdFBhbmVsQmFzaWNTZWxlY3RDb250cm9sKTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9sZWZ0UGFuZWwvZWRhRHJhZ0Ryb3BXYXkubGVmdFBhbmVsLm1vZHVsZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 16 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.LEFT_PANEL_CONTROLLERAS = exports.LEFT_PANEL_CONTROLLER = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _edaDragDropWayLeftPanelController = __webpack_require__(17);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar LEFT_PANEL_CONTROLLER = 'leftPanelController';\nvar LEFT_PANEL_CONTROLLERAS = 'leftPanelCtrl';\n\nvar leftPanelController = function () {\n\tfunction leftPanelController(toaster, $timeout, $selectOptionMange, controllerModalProxy) {\n\t\t_classCallCheck(this, leftPanelController);\n\n\t\tthis.toaster = toaster;\n\t\tthis.$timeout = $timeout;\n\t\tthis.$selectOptionMange = $selectOptionMange;\n\t\tthis.controllerModalProxy = controllerModalProxy;\n\n\t\tthis.init();\n\t}\n\n\t_createClass(leftPanelController, [{\n\t\tkey: 'init',\n\t\tvalue: function init() {\n\t\t\tthis.proxyModel = this.controllerModalProxy.proxyModel;\n\t\t\tthis.proxyModel.selectedControl = this.proxyModel.temporyConfig.selectedControl;\n\t\t\tthis.basicSelectRowCollection = this.controllerModalProxy.basicSelectRowCollection;\n\t\t\tthis.newOptionBasicSelect = this.controllerModalProxy.newOptionBasicSelect;\n\n\t\t\tthis.groupedSelectRowCollection = this.controllerModalProxy.groupedSelectRowCollection;\n\t\t\tthis.newOptionGroupedSelect = this.controllerModalProxy.newOptionGroupedSelect;\n\t\t\tthis.GroupedSelectGroups = this.controllerModalProxy.GroupedSelectGroups;\n\t\t\tthis.newGroupGroupedSelect = this.controllerModalProxy.newGroupGroupedSelect;\n\t\t\tthis.groupSelectGroupClick = this.controllerModalProxy.groupSelectGroupClick;\n\n\t\t\tthis.radioRowCollection = this.controllerModalProxy.radioRowCollection;\n\t\t\tthis.newOptionRadio = this.controllerModalProxy.newOptionRadio;\n\n\t\t\tthis.demodt = {};\n\t\t\tthis.demodt.formats = _edaDragDropWayLeftPanelController.dateFormats;\n\t\t\tthis.dateOptions = this.getDateOptions();\n\n\t\t\t// this.controllerModalProxy.resetAllTemporyModels();\n\t\t\tthis.initNyaSelectConformingSelectedControl();\n\t\t}\n\t}, {\n\t\tkey: 'getDateOptions',\n\t\tvalue: function getDateOptions() {\n\t\t\tvar dateOptions = {\n\t\t\t\tformatYear: 'yy',\n\t\t\t\tstartingDay: 1,\n\t\t\t\tshowWeeks: true,\n\t\t\t\tinitDate: null\n\t\t\t};\n\t\t\treturn dateOptions;\n\t\t}\n\t}, {\n\t\tkey: 'initNyaSelectConformingSelectedControl',\n\t\tvalue: function initNyaSelectConformingSelectedControl() {\n\t\t\t//place proxyModel to selection if not none :\n\t\t\tif (this.proxyModel.temporyConfig.selectedControl !== 'none') {\n\t\t\t\tfor (var i = this.proxyModel.controls.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (this.proxyModel.controls[i].id === this.proxyModel.temporyConfig.selectedControl) this.modelproxyModel = this.proxyModel.controls[i];\n\t\t\t\t}\n\t\t\t\tif (this.proxyModel.temporyConfig.selectedControl === 'BasicSelect') this.controllerModalProxy.bindBasicSelectFromProxyModel(self.basicSelectRowCollection);\n\t\t\t\tif (this.proxyModel.temporyConfig.selectedControl === 'GroupedSelect') this.controllerModalProxy.bindGroupedSelectFromProxyModel(this.groupedSelectRowCollection, this.GroupedSelectGroups);\n\t\t\t\tif (this.proxyModel.temporyConfig.selectedControl === 'Radio') this.controllerModalProxy.bindRadioFromProxyModel(this.radioRowCollection);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateSpecialControl',\n\t\tvalue: function updateSpecialControl() {\n\t\t\t//refresh service data for particular controls as selects and radio\n\t\t\tthis.proxyModel.basicSelectRowCollection = this.basicSelectRowCollection;\n\t\t\tthis.proxyModel.newOptionBasicSelect = this.newOptionBasicSelect;\n\t\t\tthis.proxyModel.groupedSelectRowCollection = this.groupedSelectRowCollection;\n\t\t\tthis.proxyModel.newOptionGroupedSelect = this.newOptionGroupedSelect;\n\t\t\tthis.proxyModel.GroupedSelectGroups = this.GroupedSelectGroups;\n\t\t\tthis.proxyModel.newGroupGroupedSelect = this.newGroupGroupedSelect;\n\t\t\tthis.proxyModel.groupSelectGroupClick = this.groupSelectGroupClick;\n\t\t\tthis.proxyModel.radioRowCollection = this.radioRowCollection;\n\t\t\tthis.proxyModel.newOptionRadio = this.newOptionRadio;\n\t\t\t//force apply update proxyModel\n\t\t\tthis.controllerModalProxy.bindSpecialCtrlTemporyModelsToProxyModel();\n\t\t\treturn true;\n\t\t}\n\t}, {\n\t\tkey: 'resetTemporyConfig',\n\t\tvalue: function resetTemporyConfig() {\n\t\t\tthis.proxyModel.temporyConfig = {\n\t\t\t\tformlyLabel: '',\n\t\t\t\tformlyRequired: false,\n\t\t\t\tformlyPlaceholder: '',\n\t\t\t\tformlyDescription: '',\n\t\t\t\tformlyOptions: []\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: 'resetControl',\n\t\tvalue: function resetControl() {\n\t\t\tthis.proxyModel.temporyConfig.formlyLabel = '';\n\t\t\tthis.proxyModel.temporyConfig.formlyRequired = false;\n\t\t\tthis.proxyModel.temporyConfig.formlyPlaceholder = '';\n\t\t\tthis.proxyModel.temporyConfig.formlyDescription = '';\n\t\t\tthis.proxyModel.temporyConfig.formlyOptions = [];\n\t\t\tthis.proxyModel.temporyConfig.datepickerPopup = this.initDatePicker();\n\t\t}\n\t}, {\n\t\tkey: 'initDatePicker',\n\t\tvalue: function initDatePicker() {\n\t\t\tthis.proxyModel.temporyConfig.datepickerPopup = this.demodt.formats[0];\n\t\t}\n\t}, {\n\t\tkey: 'selectThisControl',\n\t\tvalue: function selectThisControl(controlName) {\n\t\t\tthis.proxyModel.selectedControl = 'none';\n\t\t\tthis.resetTemporyConfig();\n\t\t\tfor (var i = this.proxyModel.controls.length - 1; i >= 0; i--) {\n\t\t\t\tif (this.proxyModel.controls[i].id === controlName) {\n\t\t\t\t\tthis.proxyModel.selectedControl = this.proxyModel.controls[i].id;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.proxyModel.selectedControl === 'Date') this.initDatePicker();\n\t\t}\n\n\t\t/**\n \t* ==============================================================\n \t* specific controls management\n \t* (display, properties.... : ex : grouped Select)\n \t* ==============================================================\n \t*/\n\n\t}, {\n\t\tkey: 'addNewOptionRadio',\n\t\tvalue: function addNewOptionRadio() {\n\t\t\tvar result = this.$selectOptionMange.addNewOptionRadio(this.radioRowCollection, this.newOptionRadio.saisie);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\ttitle: result.details,\n\t\t\t\t\tbody: '\\'' + this.newOptionRadio.saisie + '\\' cannot be added.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t\t//reset input\n\t\t\tthis.newOptionRadio = { saisie: '' };\n\t\t}\n\t}, {\n\t\tkey: 'removeRadioRow',\n\t\tvalue: function removeRadioRow(index) {\n\t\t\tvar result = this.$selectOptionMange.removeOption(this.radioRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\ttitle: result.details,\n\t\t\t\t\tbody: 'Delete was cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'upThisRadioRow',\n\t\tvalue: function upThisRadioRow(index) {\n\t\t\tvar result = this.$selectOptionMange.upthisOption(this.radioRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\ttitle: result.details,\n\t\t\t\t\tbody: 'Operation cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'downThisRadioRow',\n\t\tvalue: function downThisRadioRow(index) {\n\t\t\tvar result = this.$selectOptionMange.downthisOption(this.radioRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\ttitle: result.details,\n\t\t\t\t\tbody: 'Operation cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'addNewOptionBasicSelect',\n\t\tvalue: function addNewOptionBasicSelect() {\n\t\t\tvar result = this.$selectOptionMange.addNewOptionBasicSelect(this.basicSelectRowCollection, this.newOptionBasicSelect.saisie);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\ttitle: result.details,\n\t\t\t\t\tbody: '\\'' + this.newOptionBasicSelect.saisie + '\\' cannot be added.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.newOptionBasicSelect = { saisie: '' }; //reset input\n\t\t}\n\t}, {\n\t\tkey: 'removeRow',\n\t\tvalue: function removeRow(index) {\n\t\t\tvar result = this.$selectOptionMange.removeOption(this.basicSelectRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\ttitle: result.details,\n\t\t\t\t\tbody: 'Delete was cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'upThisRow',\n\t\tvalue: function upThisRow(index) {\n\t\t\tvar result = this.$selectOptionMange.upthisOption(this.basicSelectRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\ttitle: result.details,\n\t\t\t\t\tbody: 'Operation cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'downThisRow',\n\t\tvalue: function downThisRow(index) {\n\t\t\tvar result = this.$selectOptionMange.downthisOption(this.basicSelectRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\ttitle: result.details,\n\t\t\t\t\tbody: 'Operation cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'showGroupListToChoose',\n\t\tvalue: function showGroupListToChoose() {\n\t\t\tthis.groupSelectGroupClick.showList = !this.groupSelectGroupClick.showList;\n\t\t}\n\t}, {\n\t\tkey: 'addNewGroupToGroupedSelect',\n\t\tvalue: function addNewGroupToGroupedSelect() {\n\t\t\tif (this.newGroupGroupedSelect.saisie !== '') {\n\t\t\t\tfor (var i = this.GroupedSelectGroups.list.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (this.GroupedSelectGroups.list[i] === this.newGroupGroupedSelect.saisie) {\n\t\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\t\ttitle: 'Group already exists',\n\t\t\t\t\t\t\tbody: 'No group added.',\n\t\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.GroupedSelectGroups.list.push(this.newGroupGroupedSelect.saisie);\n\t\t\t} else {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\ttitle: 'Not a valid group to add',\n\t\t\t\t\tbody: 'No group added.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.newGroupGroupedSelect.saisie = '';\n\t\t}\n\t}, {\n\t\tkey: 'addNewOptionGroupedSelect',\n\t\tvalue: function addNewOptionGroupedSelect() {\n\t\t\tvar result = this.$selectOptionMange.addNewOptionGroupedSelect(this.groupedSelectRowCollection, this.newOptionGroupedSelect.saisie, '');\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\ttitle: result.details,\n\t\t\t\t\tbody: '\\'' + this.newOptionGroupedSelect.saisie + '\\' cannot be added.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t\t//bind nya : dont bind here $apply is not done fast enough\n\t\t\t//bindGroupedSelectToNya();\n\t\t\t//reset input\n\t\t\tthis.newOptionGroupedSelect = { saisie: '' };\n\t\t}\n\t}, {\n\t\tkey: 'removeGroupedSelectRow',\n\t\tvalue: function removeGroupedSelectRow(index) {\n\t\t\tvar result = this.$selectOptionMange.removeOption(this.groupedSelectRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\ttitle: result.details,\n\t\t\t\t\tbody: 'Delete was cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'upThisGroupedSelectRow',\n\t\tvalue: function upThisGroupedSelectRow(index) {\n\t\t\tvar result = this.$selectOptionMange.upthisOption(this.groupedSelectRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\ttitle: result.details,\n\t\t\t\t\tbody: 'Operation cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'downThisGroupedSelectRow',\n\t\tvalue: function downThisGroupedSelectRow(index) {\n\t\t\tvar result = this.$selectOptionMange.downthisOption(this.groupedSelectRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\ttitle: result.details,\n\t\t\t\t\tbody: 'Operation cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'today',\n\t\tvalue: function today() {\n\t\t\t(0, _edaDragDropWayLeftPanelController.setToday)(this.demodt);\n\t\t}\n\t}, {\n\t\tkey: 'clear',\n\t\tvalue: function clear() {\n\t\t\t(0, _edaDragDropWayLeftPanelController.clearDateTime)(this.demodt);\n\t\t}\n\t}, {\n\t\tkey: 'open',\n\t\tvalue: function open($event) {\n\t\t\t$event.preventDefault();\n\t\t\t$event.stopPropagation();\n\t\t\tthis.demodt.opened = true;\n\t\t}\n\t}]);\n\n\treturn leftPanelController;\n}();\n\nleftPanelController.$inject = ['toaster', '$timeout', '$selectOptionMange', 'controllerModalProxy'];\n\nexports.default = leftPanelController;\nexports.LEFT_PANEL_CONTROLLER = LEFT_PANEL_CONTROLLER;\nexports.LEFT_PANEL_CONTROLLERAS = LEFT_PANEL_CONTROLLERAS;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC5jb250cm9sbGVyLmpzPzNlZWQiXSwibmFtZXMiOlsiTEVGVF9QQU5FTF9DT05UUk9MTEVSIiwiTEVGVF9QQU5FTF9DT05UUk9MTEVSQVMiLCJsZWZ0UGFuZWxDb250cm9sbGVyIiwidG9hc3RlciIsIiR0aW1lb3V0IiwiJHNlbGVjdE9wdGlvbk1hbmdlIiwiY29udHJvbGxlck1vZGFsUHJveHkiLCJpbml0IiwicHJveHlNb2RlbCIsInNlbGVjdGVkQ29udHJvbCIsInRlbXBvcnlDb25maWciLCJiYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24iLCJuZXdPcHRpb25CYXNpY1NlbGVjdCIsImdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uIiwibmV3T3B0aW9uR3JvdXBlZFNlbGVjdCIsIkdyb3VwZWRTZWxlY3RHcm91cHMiLCJuZXdHcm91cEdyb3VwZWRTZWxlY3QiLCJncm91cFNlbGVjdEdyb3VwQ2xpY2siLCJyYWRpb1Jvd0NvbGxlY3Rpb24iLCJuZXdPcHRpb25SYWRpbyIsImRlbW9kdCIsImZvcm1hdHMiLCJkYXRlT3B0aW9ucyIsImdldERhdGVPcHRpb25zIiwiaW5pdE55YVNlbGVjdENvbmZvcm1pbmdTZWxlY3RlZENvbnRyb2wiLCJmb3JtYXRZZWFyIiwic3RhcnRpbmdEYXkiLCJzaG93V2Vla3MiLCJpbml0RGF0ZSIsImkiLCJjb250cm9scyIsImxlbmd0aCIsImlkIiwibW9kZWxwcm94eU1vZGVsIiwiYmluZEJhc2ljU2VsZWN0RnJvbVByb3h5TW9kZWwiLCJzZWxmIiwiYmluZEdyb3VwZWRTZWxlY3RGcm9tUHJveHlNb2RlbCIsImJpbmRSYWRpb0Zyb21Qcm94eU1vZGVsIiwiYmluZFNwZWNpYWxDdHJsVGVtcG9yeU1vZGVsc1RvUHJveHlNb2RlbCIsImZvcm1seUxhYmVsIiwiZm9ybWx5UmVxdWlyZWQiLCJmb3JtbHlQbGFjZWhvbGRlciIsImZvcm1seURlc2NyaXB0aW9uIiwiZm9ybWx5T3B0aW9ucyIsImRhdGVwaWNrZXJQb3B1cCIsImluaXREYXRlUGlja2VyIiwiY29udHJvbE5hbWUiLCJyZXNldFRlbXBvcnlDb25maWciLCJyZXN1bHQiLCJhZGROZXdPcHRpb25SYWRpbyIsInNhaXNpZSIsInJlc3VsdEZsYWciLCJwb3AiLCJ0eXBlIiwidGltZW91dCIsInRpdGxlIiwiZGV0YWlscyIsImJvZHkiLCJzaG93Q2xvc2VCdXR0b24iLCJpbmRleCIsInJlbW92ZU9wdGlvbiIsInVwdGhpc09wdGlvbiIsImRvd250aGlzT3B0aW9uIiwiYWRkTmV3T3B0aW9uQmFzaWNTZWxlY3QiLCJzaG93TGlzdCIsImxpc3QiLCJwdXNoIiwiYWRkTmV3T3B0aW9uR3JvdXBlZFNlbGVjdCIsIiRldmVudCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwib3BlbmVkIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7QUFNQSxJQUFNQSx3QkFBeUIscUJBQS9CO0FBQ0EsSUFBTUMsMEJBQTBCLGVBQWhDOztJQUVNQyxtQjtBQUNMLDhCQUFZQyxPQUFaLEVBQ01DLFFBRE4sRUFFTUMsa0JBRk4sRUFHTUMsb0JBSE4sRUFHMkI7QUFBQTs7QUFFMUIsT0FBS0gsT0FBTCxHQUFzQkEsT0FBdEI7QUFDQSxPQUFLQyxRQUFMLEdBQXVCQSxRQUF2QjtBQUNBLE9BQUtDLGtCQUFMLEdBQTRCQSxrQkFBNUI7QUFDQSxPQUFLQyxvQkFBTCxHQUE0QkEsb0JBQTVCOztBQUVBLE9BQUtDLElBQUw7QUFDQTs7Ozt5QkFFTTtBQUNOLFFBQUtDLFVBQUwsR0FBMEIsS0FBS0Ysb0JBQUwsQ0FBMEJFLFVBQXBEO0FBQ0EsUUFBS0EsVUFBTCxDQUFnQkMsZUFBaEIsR0FBa0MsS0FBS0QsVUFBTCxDQUFnQkUsYUFBaEIsQ0FBOEJELGVBQWhFO0FBQ0EsUUFBS0Usd0JBQUwsR0FBaUMsS0FBS0wsb0JBQUwsQ0FB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d0JDLEssRUFBTTtBQUM3QixPQUFJWCxTQUFTLEtBQUszQyxrQkFBTCxDQUF3QnlELGNBQXhCLENBQXVDLEtBQUtqRCwwQkFBNUMsRUFBd0U4QyxLQUF4RSxDQUFiO0FBQ0EsT0FBSVgsT0FBT0csVUFBUCxLQUFzQixLQUExQixFQUFpQztBQUNoQyxTQUFLaEQsT0FBTCxDQUFhaUQsR0FBYixDQUFpQjtBQUNoQkMsV0FBUSxTQURRO0FBRWhCQyxjQUFVLElBRk07QUFHaEJDLFlBQVNQLE9BQU9RLE9BSEE7QUFJaEJDLFdBQVEsc0JBSlE7QUFLaEJDLHNCQUFpQjtBQUxELEtBQWpCO0FBT0E7QUFDRjs7OzBCQUdNO0FBQ04sb0RBQVMsS0FBS3RDLE1BQWQ7QUFDQTs7OzBCQUdNO0FBQ04seURBQWMsS0FBS0EsTUFBbkI7QUFDQTs7O3VCQUdJZ0QsTSxFQUFRO0FBQ1pBLFVBQU9DLGNBQVA7QUFDQUQsVUFBT0UsZUFBUDtBQUNBLFFBQUtsRCxNQUFMLENBQVltRCxNQUFaLEdBQXFCLElBQXJCO0FBQ0E7Ozs7OztBQU1GckUsb0JBQW9Cc0UsT0FBcEIsR0FBOEIsQ0FDN0IsU0FENkIsRUFFN0IsVUFGNkIsRUFHN0Isb0JBSDZCLEVBSTdCLHNCQUo2QixDQUE5Qjs7a0JBT2V0RSxtQjtRQUdkRixxQixHQUFBQSxxQjtRQUNBQyx1QixHQUFBQSx1QiIsImZpbGUiOiIxNi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGRhdGVGb3JtYXRzLFxuXHRzZXRUb2RheSxcblx0Y2xlYXJEYXRlVGltZVxufSBcdFx0XHRcdFx0XHRcdFx0XHRmcm9tICcuL2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC5jb250cm9sbGVyLmhlbHBlcnMnO1xuXG5jb25zdCBMRUZUX1BBTkVMX0NPTlRST0xMRVIgXHQ9XHQnbGVmdFBhbmVsQ29udHJvbGxlcic7XG5jb25zdCBMRUZUX1BBTkVMX0NPTlRST0xMRVJBU1x0PSAnbGVmdFBhbmVsQ3RybCc7XG5cbmNsYXNzIGxlZnRQYW5lbENvbnRyb2xsZXJ7XG5cdGNvbnN0cnVjdG9yKHRvYXN0ZXIsXG5cdFx0XHRcdFx0XHRcdCR0aW1lb3V0LFxuXHRcdFx0XHRcdFx0XHQkc2VsZWN0T3B0aW9uTWFuZ2UsXG5cdFx0XHRcdFx0XHRcdGNvbnRyb2xsZXJNb2RhbFByb3h5KXtcblxuXHRcdHRoaXMudG9hc3RlciAgXHRcdFx0XHRcdFx0PSB0b2FzdGVyO1xuXHRcdHRoaXMuJHRpbWVvdXQgIFx0XHRcdFx0XHRcdD0gJHRpbWVvdXQ7XG5cdFx0dGhpcy4kc2VsZWN0T3B0aW9uTWFuZ2UgIFx0PSAkc2VsZWN0T3B0aW9uTWFuZ2U7XG5cdFx0dGhpcy5jb250cm9sbGVyTW9kYWxQcm94eSA9IGNvbnRyb2xsZXJNb2RhbFByb3h5O1xuXG5cdFx0dGhpcy5pbml0KCk7XG5cdH1cblxuXHRpbml0KCkge1xuXHRcdHRoaXMucHJveHlNb2RlbCBcdFx0XHRcdFx0XHRcdFx0PSB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LnByb3h5TW9kZWw7XG5cdFx0dGhpcy5wcm94eU1vZGVsLnNlbGVjdGVkQ29udHJvbCA9IHRoaXMucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLnNlbGVjdGVkQ29udHJvbDtcblx0XHR0aGlzLmJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbiBcdD0gdGhpcy5jb250cm9sbGVyTW9kYWxQcm94eS5iYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb247XG5cdFx0dGhpcy5uZXdPcHRpb25CYXNpY1NlbGVjdCBcdFx0XHQ9IHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkubmV3T3B0aW9uQmFzaWNTZWxlY3Q7XG5cblx0XHR0aGlzLmdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uID0gdGhpcy5jb250cm9sbGVyTW9kYWxQcm94eS5ncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbjtcblx0XHR0aGlzLm5ld09wdGlvbkdyb3VwZWRTZWxlY3QgXHRcdD0gdGhpcy5jb250cm9sbGVyTW9kYWxQcm94eS5uZXdPcHRpb25Hcm91cGVkU2VsZWN0O1xuXHRcdHRoaXMuR3JvdXBlZFNlbGVjdEdyb3VwcyBcdFx0XHRcdD0gdGhpcy5jb250cm9sbGVyTW9kYWxQcm94eS5Hcm91cGVkU2VsZWN0R3JvdXBzO1xuXHRcdHRoaXMubmV3R3JvdXBHcm91cGVkU2VsZWN0IFx0XHRcdD0gdGhpcy5jb250cm9sbGVyTW9kYWxQcm94eS5uZXdHcm91cEdyb3VwZWRTZWxlY3Q7XG5cdFx0dGhpcy5ncm91cFNlbGVjdEdyb3VwQ2xpY2sgXHRcdFx0PSB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5Lmdyb3VwU2VsZWN0R3JvdXBDbGljaztcblxuXHRcdHRoaXMucmFkaW9Sb3dDb2xsZWN0aW9uIFx0XHRcdFx0PSB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LnJhZGlvUm93Q29sbGVjdGlvbjtcblx0XHR0aGlzLm5ld09wdGlvblJhZGlvIFx0XHRcdFx0XHRcdD0gdGhpcy5jb250cm9sbGVyTW9kYWxQcm94eS5uZXdPcHRpb25SYWRpbztcblxuXHRcdHRoaXMuZGVtb2R0IFx0XHRcdFx0XHRcdFx0XHRcdFx0PSB7fTtcblx0XHR0aGlzLmRlbW9kdC5mb3JtYXRzXHRcdFx0XHRcdFx0XHQ9IGRhdGVGb3JtYXRzO1xuXHRcdHRoaXMuZGF0ZU9wdGlvbnNcdFx0XHRcdFx0XHRcdFx0PSB0aGlzLmdldERhdGVPcHRpb25zKCk7XG5cblx0XHQvLyB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LnJlc2V0QWxsVGVtcG9yeU1vZGVscygpO1xuICAgIHRoaXMuaW5pdE55YVNlbGVjdENvbmZvcm1pbmdTZWxlY3RlZENvbnRyb2woKTtcblx0fVxuXG5cdGdldERhdGVPcHRpb25zKCkge1xuXHRcdGxldCBkYXRlT3B0aW9ucyA9ICB7XG5cdFx0XHRmb3JtYXRZZWFyXHQ6ICd5eScsXG5cdFx0XHRzdGFydGluZ0RheVx0OiAxLFxuXHRcdFx0c2hvd1dlZWtzXHRcdDogdHJ1ZSxcblx0XHRcdGluaXREYXRlXHRcdDogbnVsbFxuXHRcdH07XG5cdFx0cmV0dXJuIGRhdGVPcHRpb25zO1xuXHR9XG5cblx0aW5pdE55YVNlbGVjdENvbmZvcm1pbmdTZWxlY3RlZENvbnRyb2woKSB7XG5cdFx0Ly9wbGFjZSBwcm94eU1vZGVsIHRvIHNlbGVjdGlvbiBpZiBub3Qgbm9uZSA6XG5cdFx0aWYgKHRoaXMucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLnNlbGVjdGVkQ29udHJvbCAhPT0gJ25vbmUnKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gdGhpcy5wcm94eU1vZGVsLmNvbnRyb2xzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMucHJveHlNb2RlbC5jb250cm9sc1tpXS5pZCA9PT0gdGhpcy5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuc2VsZWN0ZWRDb250cm9sKSB0aGlzLm1vZGVscHJveHlNb2RlbCA9IHRoaXMucHJveHlNb2RlbC5jb250cm9sc1tpXTtcblx0XHRcdH1cblx0XHRcdGlmICh0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5zZWxlY3RlZENvbnRyb2wgPT09ICdCYXNpY1NlbGVjdCcpIHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuYmluZEJhc2ljU2VsZWN0RnJvbVByb3h5TW9kZWwoc2VsZi5iYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24pO1xuXHRcdFx0aWYgKHRoaXMucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLnNlbGVjdGVkQ29udHJvbCA9PT0gJ0dyb3VwZWRTZWxlY3QnKSB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LmJpbmRHcm91cGVkU2VsZWN0RnJvbVByb3h5TW9kZWwodGhpcy5ncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbiwgdGhpcy5Hcm91cGVkU2VsZWN0R3JvdXBzKTtcblx0XHRcdGlmICh0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5zZWxlY3RlZENvbnRyb2wgPT09ICdSYWRpbycpIHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuYmluZFJhZGlvRnJvbVByb3h5TW9kZWwodGhpcy5yYWRpb1Jvd0NvbGxlY3Rpb24pO1xuXHRcdH1cblx0fVxuXG5cdHVwZGF0ZVNwZWNpYWxDb250cm9sKCkge1xuXHRcdC8vcmVmcmVzaCBzZXJ2aWNlIGRhdGEgZm9yIHBhcnRpY3VsYXIgY29udHJvbHMgYXMgc2VsZWN0cyBhbmQgcmFkaW9cblx0XHR0aGlzLnByb3h5TW9kZWwuYmFzaWNTZWxlY3RSb3dDb2xsZWN0aW9uIFx0XHQ9IHRoaXMuYmFzaWNTZWxlY3RSb3dDb2xsZWN0aW9uO1xuXHRcdHRoaXMucHJveHlNb2RlbC5uZXdPcHRpb25CYXNpY1NlbGVjdCBcdFx0XHRcdD0gdGhpcy5uZXdPcHRpb25CYXNpY1NlbGVjdDtcblx0XHR0aGlzLnByb3h5TW9kZWwuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24gXHQ9IHRoaXMuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb247XG5cdFx0dGhpcy5wcm94eU1vZGVsLm5ld09wdGlvbkdyb3VwZWRTZWxlY3QgXHRcdFx0PSB0aGlzLm5ld09wdGlvbkdyb3VwZWRTZWxlY3Q7XG5cdFx0dGhpcy5wcm94eU1vZGVsLkdyb3VwZWRTZWxlY3RHcm91cHMgXHRcdFx0XHQ9IHRoaXMuR3JvdXBlZFNlbGVjdEdyb3Vwcztcblx0XHR0aGlzLnByb3h5TW9kZWwubmV3R3JvdXBHcm91cGVkU2VsZWN0IFx0XHRcdD0gdGhpcy5uZXdHcm91cEdyb3VwZWRTZWxlY3Q7XG5cdFx0dGhpcy5wcm94eU1vZGVsLmdyb3VwU2VsZWN0R3JvdXBDbGljayBcdFx0XHQ9IHRoaXMuZ3JvdXBTZWxlY3RHcm91cENsaWNrO1xuXHRcdHRoaXMucHJveHlNb2RlbC5yYWRpb1Jvd0NvbGxlY3Rpb24gXHRcdFx0XHRcdD0gdGhpcy5yYWRpb1Jvd0NvbGxlY3Rpb247XG5cdFx0dGhpcy5wcm94eU1vZGVsLm5ld09wdGlvblJhZGlvIFx0XHRcdFx0XHRcdFx0PSB0aGlzLm5ld09wdGlvblJhZGlvO1xuXHRcdC8vZm9yY2UgYXBwbHkgdXBkYXRlIHByb3h5TW9kZWxcblx0XHR0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LmJpbmRTcGVjaWFsQ3RybFRlbXBvcnlNb2RlbHNUb1Byb3h5TW9kZWwoKTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHJlc2V0VGVtcG9yeUNvbmZpZygpIHtcblx0XHR0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZyA9IHtcblx0XHRcdGZvcm1seUxhYmVsXHRcdFx0XHQ6ICcnLFxuXHRcdFx0Zm9ybWx5UmVxdWlyZWRcdFx0OiBmYWxzZSxcblx0XHRcdGZvcm1seVBsYWNlaG9sZGVyXHQ6ICcnLFxuXHRcdFx0Zm9ybWx5RGVzY3JpcHRpb25cdDogJycsXG5cdFx0XHRmb3JtbHlPcHRpb25zXHRcdFx0OiBbXVxuXHRcdH07XG5cdH1cblxuXHRyZXNldENvbnRyb2woKSB7XG5cdFx0dGhpcy5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWwgXHRcdFx0PSAnJztcblx0XHR0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlSZXF1aXJlZCBcdFx0PSBmYWxzZTtcblx0XHR0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlQbGFjZWhvbGRlclx0PSAnJztcblx0XHR0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlEZXNjcmlwdGlvbiBcdD0gJyc7XG5cdFx0dGhpcy5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9ucyBcdFx0PSBbXTtcblx0XHR0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5kYXRlcGlja2VyUG9wdXAgICA9IHRoaXMuaW5pdERhdGVQaWNrZXIoKTtcblx0fVxuXG5cdGluaXREYXRlUGlja2VyKCkge1xuXHRcdHRoaXMucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmRhdGVwaWNrZXJQb3B1cCA9IHRoaXMuZGVtb2R0LmZvcm1hdHNbMF07XG5cdH1cblxuXHRzZWxlY3RUaGlzQ29udHJvbChjb250cm9sTmFtZSl7XG5cdFx0dGhpcy5wcm94eU1vZGVsLnNlbGVjdGVkQ29udHJvbCA9ICdub25lJztcblx0XHR0aGlzLnJlc2V0VGVtcG9yeUNvbmZpZygpO1xuXHRcdGZvciAobGV0IGkgPSB0aGlzLnByb3h5TW9kZWwuY29udHJvbHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0XHRcdGlmICh0aGlzLnByb3h5TW9kZWwuY29udHJvbHNbaV0uaWQgPT09IGNvbnRyb2xOYW1lKSB7XG5cdFx0XHRcdHRoaXMucHJveHlNb2RlbC5zZWxlY3RlZENvbnRyb2wgPSB0aGlzLnByb3h5TW9kZWwuY29udHJvbHNbaV0uaWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICh0aGlzLnByb3h5TW9kZWwuc2VsZWN0ZWRDb250cm9sID09PSAnRGF0ZScpIHRoaXMuaW5pdERhdGVQaWNrZXIoKTtcblx0fVxuXG5cblx0LyoqXG5cdFx0KiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXHRcdCogc3BlY2lmaWMgY29udHJvbHMgbWFuYWdlbWVudFxuXHRcdCogKGRpc3BsYXksIHByb3BlcnRpZXMuLi4uIDogZXggOiBncm91cGVkIFNlbGVjdClcblx0XHQqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cdFx0Ki9cblx0XHRhZGROZXdPcHRpb25SYWRpbygpe1xuXHRcdFx0bGV0IHJlc3VsdCA9IHRoaXMuJHNlbGVjdE9wdGlvbk1hbmdlLmFkZE5ld09wdGlvblJhZGlvKHRoaXMucmFkaW9Sb3dDb2xsZWN0aW9uLCB0aGlzLm5ld09wdGlvblJhZGlvLnNhaXNpZSk7XG5cdFx0XHRpZiAocmVzdWx0LnJlc3VsdEZsYWcgPT09IGZhbHNlKSB7XG5cdFx0XHRcdHRoaXMudG9hc3Rlci5wb3Aoe1xuXHRcdFx0XHRcdFx0dHlwZVx0XHQ6ICd3YXJuaW5nJyxcblx0XHRcdFx0XHRcdHRpbWVvdXRcdDogMjAwMCxcblx0XHRcdFx0XHRcdHRpdGxlXHRcdDogcmVzdWx0LmRldGFpbHMsXG5cdFx0XHRcdFx0XHRib2R5XHRcdDogYCcke3RoaXMubmV3T3B0aW9uUmFkaW8uc2Fpc2llfScgY2Fubm90IGJlIGFkZGVkLmAsXG5cdFx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b246IHRydWVcblx0XHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdC8vcmVzZXQgaW5wdXRcblx0XHRcdHRoaXMubmV3T3B0aW9uUmFkaW8gPSB7c2Fpc2llOiAnJ307XG5cdFx0fVxuXG5cdFx0cmVtb3ZlUmFkaW9Sb3coaW5kZXgpIHtcblx0XHRcdGxldCByZXN1bHQgPSB0aGlzLiRzZWxlY3RPcHRpb25NYW5nZS5yZW1vdmVPcHRpb24odGhpcy5yYWRpb1Jvd0NvbGxlY3Rpb24sIGluZGV4KTtcblx0XHRcdGlmIChyZXN1bHQucmVzdWx0RmxhZyA9PT0gZmFsc2UpIHtcblx0XHRcdFx0dGhpcy50b2FzdGVyLnBvcCh7XG5cdFx0XHRcdFx0dHlwZVx0XHRcdDogJ3dhcm5pbmcnLFxuXHRcdFx0XHRcdHRpbWVvdXRcdFx0OiAyMDAwLFxuXHRcdFx0XHRcdHRpdGxlXHRcdFx0OiByZXN1bHQuZGV0YWlscyxcblx0XHRcdFx0XHRib2R5XHRcdFx0OiAnRGVsZXRlIHdhcyBjYW5jZWxsZWQuJyxcblx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b246IHRydWVcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dXBUaGlzUmFkaW9Sb3coaW5kZXgpe1xuXHRcdFx0bGV0IHJlc3VsdCA9IHRoaXMuJHNlbGVjdE9wdGlvbk1hbmdlLnVwdGhpc09wdGlvbih0aGlzLnJhZGlvUm93Q29sbGVjdGlvbiwgaW5kZXgpO1xuXHRcdFx0aWYgKHJlc3VsdC5yZXN1bHRGbGFnID09PSBmYWxzZSkge1xuXHRcdFx0XHR0aGlzLnRvYXN0ZXIucG9wKHtcblx0XHRcdFx0XHR0eXBlXHRcdDogJ3dhcm5pbmcnLFxuXHRcdFx0XHRcdHRpbWVvdXRcdDogMjAwMCxcblx0XHRcdFx0XHR0aXRsZVx0XHQ6IHJlc3VsdC5kZXRhaWxzLFxuXHRcdFx0XHRcdGJvZHlcdFx0OiAnT3BlcmF0aW9uIGNhbmNlbGxlZC4nLFxuXHRcdFx0XHRcdHNob3dDbG9zZUJ1dHRvbjogdHJ1ZVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRkb3duVGhpc1JhZGlvUm93KGluZGV4KXtcblx0XHRcdGxldCByZXN1bHQgPSB0aGlzLiRzZWxlY3RPcHRpb25NYW5nZS5kb3dudGhpc09wdGlvbih0aGlzLnJhZGlvUm93Q29sbGVjdGlvbiwgaW5kZXgpO1xuXHRcdFx0aWYgKHJlc3VsdC5yZXN1bHRGbGFnID09PSBmYWxzZSkge1xuXHRcdFx0XHR0aGlzLnRvYXN0ZXIucG9wKHtcblx0XHRcdFx0XHR0eXBlXHRcdDogJ3dhcm5pbmcnLFxuXHRcdFx0XHRcdHRpbWVvdXRcdDogMjAwMCxcblx0XHRcdFx0XHR0aXRsZVx0XHQ6IHJlc3VsdC5kZXRhaWxzLFxuXHRcdFx0XHRcdGJvZHlcdFx0OiAnT3BlcmF0aW9uIGNhbmNlbGxlZC4nLFxuXHRcdFx0XHRcdHNob3dDbG9zZUJ1dHRvbjogdHJ1ZVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRhZGROZXdPcHRpb25CYXNpY1NlbGVjdCgpe1xuXHRcdFx0bGV0IHJlc3VsdCA9IHRoaXMuJHNlbGVjdE9wdGlvbk1hbmdlLmFkZE5ld09wdGlvbkJhc2ljU2VsZWN0KHRoaXMuYmFzaWNTZWxlY3RSb3dDb2xsZWN0aW9uLCB0aGlzLm5ld09wdGlvbkJhc2ljU2VsZWN0LnNhaXNpZSk7XG5cdFx0XHRpZiAocmVzdWx0LnJlc3VsdEZsYWcgPT09IGZhbHNlKSB7XG5cdFx0XHRcdHRoaXMudG9hc3Rlci5wb3Aoe1xuXHRcdFx0XHRcdHR5cGVcdFx0XHQ6ICd3YXJuaW5nJyxcblx0XHRcdFx0XHR0aW1lb3V0XHRcdDogMjAwMCxcblx0XHRcdFx0XHR0aXRsZVx0XHRcdDogcmVzdWx0LmRldGFpbHMsXG5cdFx0XHRcdFx0Ym9keVx0XHRcdDogYCcke3RoaXMubmV3T3B0aW9uQmFzaWNTZWxlY3Quc2Fpc2llfScgY2Fubm90IGJlIGFkZGVkLmAsXG5cdFx0XHRcdFx0c2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5uZXdPcHRpb25CYXNpY1NlbGVjdCA9IHtzYWlzaWU6ICcnfTsgLy9yZXNldCBpbnB1dFxuXHRcdH1cblxuXHRcdHJlbW92ZVJvdyhpbmRleCkge1xuXHRcdFx0bGV0IHJlc3VsdCA9IHRoaXMuJHNlbGVjdE9wdGlvbk1hbmdlLnJlbW92ZU9wdGlvbih0aGlzLmJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbiwgaW5kZXgpO1xuXHRcdFx0aWYgKHJlc3VsdC5yZXN1bHRGbGFnID09PSBmYWxzZSkge1xuXHRcdFx0XHR0aGlzLnRvYXN0ZXIucG9wKHtcblx0XHRcdFx0XHR0eXBlXHRcdDogJ3dhcm5pbmcnLFxuXHRcdFx0XHRcdHRpbWVvdXRcdDogMjAwMCxcblx0XHRcdFx0XHR0aXRsZVx0XHQ6IHJlc3VsdC5kZXRhaWxzLFxuXHRcdFx0XHRcdGJvZHlcdFx0OiAnRGVsZXRlIHdhcyBjYW5jZWxsZWQuJyxcblx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b246IHRydWVcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dXBUaGlzUm93KGluZGV4KXtcblx0XHRcdFx0bGV0IHJlc3VsdCA9IHRoaXMuJHNlbGVjdE9wdGlvbk1hbmdlLnVwdGhpc09wdGlvbih0aGlzLmJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbiwgaW5kZXgpO1xuXHRcdFx0XHRpZiAocmVzdWx0LnJlc3VsdEZsYWcgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0dGhpcy50b2FzdGVyLnBvcCh7XG5cdFx0XHRcdFx0XHR0eXBlXHRcdDogJ3dhcm5pbmcnLFxuXHRcdFx0XHRcdFx0dGltZW91dFx0OiAyMDAwLFxuXHRcdFx0XHRcdFx0dGl0bGVcdFx0OiByZXN1bHQuZGV0YWlscyxcblx0XHRcdFx0XHRcdGJvZHlcdFx0OiAnT3BlcmF0aW9uIGNhbmNlbGxlZC4nLFxuXHRcdFx0XHRcdFx0c2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHR9XG5cblx0XHRkb3duVGhpc1JvdyhpbmRleCl7XG5cdFx0XHRsZXQgcmVzdWx0ID0gdGhpcy4kc2VsZWN0T3B0aW9uTWFuZ2UuZG93bnRoaXNPcHRpb24odGhpcy5iYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24sIGluZGV4KTtcblx0XHRcdGlmIChyZXN1bHQucmVzdWx0RmxhZyA9PT0gZmFsc2UpIHtcblx0XHRcdFx0dGhpcy50b2FzdGVyLnBvcCh7XG5cdFx0XHRcdFx0dHlwZVx0XHQ6ICd3YXJuaW5nJyxcblx0XHRcdFx0XHR0aW1lb3V0XHQ6IDIwMDAsXG5cdFx0XHRcdFx0dGl0bGVcdFx0OiByZXN1bHQuZGV0YWlscyxcblx0XHRcdFx0XHRib2R5XHRcdDogJ09wZXJhdGlvbiBjYW5jZWxsZWQuJyxcblx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b246IHRydWVcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0c2hvd0dyb3VwTGlzdFRvQ2hvb3NlKCl7XG5cdFx0XHR0aGlzLmdyb3VwU2VsZWN0R3JvdXBDbGljay5zaG93TGlzdCA9ICF0aGlzLmdyb3VwU2VsZWN0R3JvdXBDbGljay5zaG93TGlzdDtcblx0XHR9XG5cblx0XHRhZGROZXdHcm91cFRvR3JvdXBlZFNlbGVjdCgpe1xuXHRcdFx0aWYgKHRoaXMubmV3R3JvdXBHcm91cGVkU2VsZWN0LnNhaXNpZSAhPT0gJycpIHtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IHRoaXMuR3JvdXBlZFNlbGVjdEdyb3Vwcy5saXN0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuR3JvdXBlZFNlbGVjdEdyb3Vwcy5saXN0W2ldID09PSB0aGlzLm5ld0dyb3VwR3JvdXBlZFNlbGVjdC5zYWlzaWUpIHtcblx0XHRcdFx0XHRcdHRoaXMudG9hc3Rlci5wb3Aoe1xuXHRcdFx0XHRcdFx0XHR0eXBlXHRcdFx0OiAnd2FybmluZycsXG5cdFx0XHRcdFx0XHRcdHRpbWVvdXRcdFx0OiAyMDAwLFxuXHRcdFx0XHRcdFx0XHR0aXRsZVx0XHRcdDogJ0dyb3VwIGFscmVhZHkgZXhpc3RzJyxcblx0XHRcdFx0XHRcdFx0Ym9keVx0XHRcdDogJ05vIGdyb3VwIGFkZGVkLicsXG5cdFx0XHRcdFx0XHRcdHNob3dDbG9zZUJ1dHRvbjogdHJ1ZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuR3JvdXBlZFNlbGVjdEdyb3Vwcy5saXN0LnB1c2godGhpcy5uZXdHcm91cEdyb3VwZWRTZWxlY3Quc2Fpc2llKTtcblx0XHRcdH1lbHNle1xuXHRcdFx0XHR0aGlzLnRvYXN0ZXIucG9wKHtcblx0XHRcdFx0XHR0eXBlXHRcdFx0OiAnd2FybmluZycsXG5cdFx0XHRcdFx0dGltZW91dFx0XHQ6IDIwMDAsXG5cdFx0XHRcdFx0dGl0bGVcdFx0XHQ6ICdOb3QgYSB2YWxpZCBncm91cCB0byBhZGQnLFxuXHRcdFx0XHRcdGJvZHlcdFx0XHQ6ICdObyBncm91cCBhZGRlZC4nLFxuXHRcdFx0XHRcdHNob3dDbG9zZUJ1dHRvbjogdHJ1ZVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdHRoaXMubmV3R3JvdXBHcm91cGVkU2VsZWN0LnNhaXNpZSA9ICcnO1xuXHRcdH1cblxuXG5cdFx0YWRkTmV3T3B0aW9uR3JvdXBlZFNlbGVjdCgpe1xuXHRcdFx0bGV0IHJlc3VsdCA9IHRoaXMuJHNlbGVjdE9wdGlvbk1hbmdlLmFkZE5ld09wdGlvbkdyb3VwZWRTZWxlY3QodGhpcy5ncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbiwgdGhpcy5uZXdPcHRpb25Hcm91cGVkU2VsZWN0LnNhaXNpZSwgJycpO1xuXHRcdFx0aWYgKHJlc3VsdC5yZXN1bHRGbGFnID09PSBmYWxzZSkge1xuXHRcdFx0XHR0aGlzLnRvYXN0ZXIucG9wKHtcblx0XHRcdFx0XHR0eXBlXHRcdFx0OiAnd2FybmluZycsXG5cdFx0XHRcdFx0dGltZW91dFx0XHQ6IDIwMDAsXG5cdFx0XHRcdFx0dGl0bGVcdFx0XHQ6IHJlc3VsdC5kZXRhaWxzLFxuXHRcdFx0XHRcdGJvZHlcdFx0XHQ6IGAnJHt0aGlzLm5ld09wdGlvbkdyb3VwZWRTZWxlY3Quc2Fpc2llfScgY2Fubm90IGJlIGFkZGVkLmAsXG5cdFx0XHRcdFx0c2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0Ly9iaW5kIG55YSA6IGRvbnQgYmluZCBoZXJlICRhcHBseSBpcyBub3QgZG9uZSBmYXN0IGVub3VnaFxuXHRcdFx0Ly9iaW5kR3JvdXBlZFNlbGVjdFRvTnlhKCk7XG5cdFx0XHQvL3Jlc2V0IGlucHV0XG5cdFx0XHR0aGlzLm5ld09wdGlvbkdyb3VwZWRTZWxlY3QgPSB7c2Fpc2llOiAnJ307XG5cdFx0fVxuXG5cblx0XHRyZW1vdmVHcm91cGVkU2VsZWN0Um93KGluZGV4KSB7XG5cdFx0XHRsZXQgcmVzdWx0ID0gdGhpcy4kc2VsZWN0T3B0aW9uTWFuZ2UucmVtb3ZlT3B0aW9uKHRoaXMuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24sIGluZGV4KTtcblx0XHRcdGlmIChyZXN1bHQucmVzdWx0RmxhZyA9PT0gZmFsc2UpIHtcblx0XHRcdFx0dGhpcy50b2FzdGVyLnBvcCh7XG5cdFx0XHRcdFx0dHlwZVx0XHQ6ICd3YXJuaW5nJyxcblx0XHRcdFx0XHR0aW1lb3V0XHQ6IDIwMDAsXG5cdFx0XHRcdFx0dGl0bGVcdFx0OiByZXN1bHQuZGV0YWlscyxcblx0XHRcdFx0XHRib2R5XHRcdDogJ0RlbGV0ZSB3YXMgY2FuY2VsbGVkLicsXG5cdFx0XHRcdFx0c2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHR1cFRoaXNHcm91cGVkU2VsZWN0Um93KGluZGV4KXtcblx0XHRsZXQgcmVzdWx0ID0gdGhpcy4kc2VsZWN0T3B0aW9uTWFuZ2UudXB0aGlzT3B0aW9uKHRoaXMuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24sIGluZGV4KTtcblx0XHRpZiAocmVzdWx0LnJlc3VsdEZsYWcgPT09IGZhbHNlKSB7XG5cdFx0XHR0aGlzLnRvYXN0ZXIucG9wKHtcblx0XHRcdFx0dHlwZVx0XHQ6ICd3YXJuaW5nJyxcblx0XHRcdFx0dGltZW91dFx0OiAyMDAwLFxuXHRcdFx0XHR0aXRsZVx0XHQ6IHJlc3VsdC5kZXRhaWxzLFxuXHRcdFx0XHRib2R5XHRcdDogJ09wZXJhdGlvbiBjYW5jZWxsZWQuJyxcblx0XHRcdFx0c2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXG5cdGRvd25UaGlzR3JvdXBlZFNlbGVjdFJvdyhpbmRleCl7XG5cdFx0XHRsZXQgcmVzdWx0ID0gdGhpcy4kc2VsZWN0T3B0aW9uTWFuZ2UuZG93bnRoaXNPcHRpb24odGhpcy5ncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbiwgaW5kZXgpO1xuXHRcdFx0aWYgKHJlc3VsdC5yZXN1bHRGbGFnID09PSBmYWxzZSkge1xuXHRcdFx0XHR0aGlzLnRvYXN0ZXIucG9wKHtcblx0XHRcdFx0XHR0eXBlXHRcdDogJ3dhcm5pbmcnLFxuXHRcdFx0XHRcdHRpbWVvdXRcdDogMjAwMCxcblx0XHRcdFx0XHR0aXRsZVx0XHQ6IHJlc3VsdC5kZXRhaWxzLFxuXHRcdFx0XHRcdGJvZHlcdFx0OiAnT3BlcmF0aW9uIGNhbmNlbGxlZC4nLFxuXHRcdFx0XHRcdHNob3dDbG9zZUJ1dHRvbjogdHJ1ZVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0fVxuXG5cblx0dG9kYXkoKXtcblx0XHRzZXRUb2RheSh0aGlzLmRlbW9kdCk7XG5cdH1cblxuXG5cdGNsZWFyKCl7XG5cdFx0Y2xlYXJEYXRlVGltZSh0aGlzLmRlbW9kdCk7XG5cdH1cblxuXG5cdG9wZW4oJGV2ZW50KSB7XG5cdFx0JGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdHRoaXMuZGVtb2R0Lm9wZW5lZCA9IHRydWU7XG5cdH1cblxuXG5cbn1cblxubGVmdFBhbmVsQ29udHJvbGxlci4kaW5qZWN0ID0gW1xuXHQndG9hc3RlcicsXG5cdCckdGltZW91dCcsXG5cdCckc2VsZWN0T3B0aW9uTWFuZ2UnLFxuXHQnY29udHJvbGxlck1vZGFsUHJveHknXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBsZWZ0UGFuZWxDb250cm9sbGVyO1xuXG5leHBvcnQge1xuXHRMRUZUX1BBTkVMX0NPTlRST0xMRVIsXG5cdExFRlRfUEFORUxfQ09OVFJPTExFUkFTXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2xlZnRQYW5lbC9lZGFEcmFnRHJvcFdheS5sZWZ0UGFuZWwuY29udHJvbGxlci5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 17 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar dateFormats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];\n\nvar setToday = function setToday(datetimePickerModel) {\n\tdatetimePickerModel.dt = new Date();\n};\n\nvar clearDateTime = function clearDateTime(datetimePickerModel) {\n\tdatetimePickerModel.dt = new Date();\n};\n\nexports.dateFormats = dateFormats;\nexports.setToday = setToday;\nexports.clearDateTime = clearDateTime;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC5jb250cm9sbGVyLmhlbHBlcnMuanM/MDMyNCJdLCJuYW1lcyI6WyJkYXRlRm9ybWF0cyIsInNldFRvZGF5IiwiZGF0ZXRpbWVQaWNrZXJNb2RlbCIsImR0IiwiRGF0ZSIsImNsZWFyRGF0ZVRpbWUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBTUEsY0FBYyxDQUFDLGNBQUQsRUFBaUIsWUFBakIsRUFBK0IsWUFBL0IsRUFBNkMsV0FBN0MsQ0FBcEI7O0FBRUEsSUFBTUMsV0FBVyxTQUFYQSxRQUFXLENBQUNDLG1CQUFELEVBQXVCO0FBQ3ZDQSxxQkFBb0JDLEVBQXBCLEdBQXlCLElBQUlDLElBQUosRUFBekI7QUFDQSxDQUZEOztBQUlBLElBQU1DLGdCQUFnQixTQUFoQkEsYUFBZ0IsQ0FBQ0gsbUJBQUQsRUFBdUI7QUFDNUNBLHFCQUFvQkMsRUFBcEIsR0FBeUIsSUFBSUMsSUFBSixFQUF6QjtBQUNBLENBRkQ7O1FBS0NKLFcsR0FBQUEsVztRQUNBQyxRLEdBQUFBLFE7UUFDQUksYSxHQUFBQSxhIiwiZmlsZSI6IjE3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZGF0ZUZvcm1hdHMgPSBbJ2RkLU1NTU0teXl5eScsICd5eXl5L01NL2RkJywgJ2RkLk1NLnl5eXknLCAnc2hvcnREYXRlJ107XG5cbmNvbnN0IHNldFRvZGF5ID0gKGRhdGV0aW1lUGlja2VyTW9kZWwpPT57XG5cdGRhdGV0aW1lUGlja2VyTW9kZWwuZHQgPSBuZXcgRGF0ZSgpO1xufTtcblxuY29uc3QgY2xlYXJEYXRlVGltZSA9IChkYXRldGltZVBpY2tlck1vZGVsKT0+e1xuXHRkYXRldGltZVBpY2tlck1vZGVsLmR0ID0gbmV3IERhdGUoKTtcbn07XG5cbmV4cG9ydCB7XG5cdGRhdGVGb3JtYXRzLFxuXHRzZXRUb2RheSxcblx0Y2xlYXJEYXRlVGltZVxufTtcblxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2xlZnRQYW5lbC9lZGFEcmFnRHJvcFdheS5sZWZ0UGFuZWwuY29udHJvbGxlci5oZWxwZXJzLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 18 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.LEFT_PANEL_DIRECTIVE = undefined;\n\nvar _edaDragDropWayLeftPanel = __webpack_require__(16);\n\nvar _edaDragDropWayLeftPanelTemplate = __webpack_require__(19);\n\nvar _edaDragDropWayLeftPanelTemplate2 = _interopRequireDefault(_edaDragDropWayLeftPanelTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_DIRECTIVE = 'leftPanel';\n\nfunction leftPanel() {\n\tvar directive = {\n\t\trestrict: 'E',\n\t\ttemplate: _edaDragDropWayLeftPanelTemplate2.default,\n\t\tscope: {},\n\t\tcontroller: _edaDragDropWayLeftPanel.LEFT_PANEL_CONTROLLER,\n\t\tcontrollerAs: _edaDragDropWayLeftPanel.LEFT_PANEL_CONTROLLERAS,\n\t\tbindToController: {\n\t\t\tcloseEditPanel: '&',\n\t\t\tselectedControl: '&',\n\t\t\tsaveFromEditPanel: '&'\n\t\t}\n\t};\n\treturn directive;\n}\n\nleftPanel.$inject = [];\n\nexports.default = leftPanel;\nexports.LEFT_PANEL_DIRECTIVE = LEFT_PANEL_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC5kaXJlY3RpdmUuanM/ZDg0YSJdLCJuYW1lcyI6WyJMRUZUX1BBTkVMX0RJUkVDVElWRSIsImxlZnRQYW5lbCIsImRpcmVjdGl2ZSIsInJlc3RyaWN0IiwidGVtcGxhdGUiLCJzY29wZSIsImNvbnRyb2xsZXIiLCJjb250cm9sbGVyQXMiLCJiaW5kVG9Db250cm9sbGVyIiwiY2xvc2VFZGl0UGFuZWwiLCJzZWxlY3RlZENvbnRyb2wiLCJzYXZlRnJvbUVkaXRQYW5lbCIsIiRpbmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFLQTs7Ozs7O0FBRUEsSUFBTUEsdUJBQXVCLFdBQTdCOztBQUdBLFNBQVNDLFNBQVQsR0FBb0I7QUFDbkIsS0FBSUMsWUFBWTtBQUNmQyxZQUFnQixHQUREO0FBRWZDLHFEQUZlO0FBR2ZDLFNBQWMsRUFIQztBQUlmQyw0REFKZTtBQUtmQyxnRUFMZTtBQU1mQyxvQkFBbUI7QUFDbEJDLG1CQUF3QixHQUROO0FBRWZDLG9CQUF3QixHQUZUO0FBR2ZDLHNCQUF3QjtBQUhUO0FBTkosRUFBaEI7QUFZQSxRQUFPVCxTQUFQO0FBQ0E7O0FBRURELFVBQVVXLE9BQVYsR0FBb0IsRUFBcEI7O2tCQUVlWCxTO1FBR2RELG9CLEdBQUFBLG9CIiwiZmlsZSI6IjE4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0TEVGVF9QQU5FTF9DT05UUk9MTEVSLFxuXHRMRUZUX1BBTkVMX0NPTlRST0xMRVJBU1xufVx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnJvbSAnLi9lZGFEcmFnRHJvcFdheS5sZWZ0UGFuZWwuY29udHJvbGxlcic7XG5cbmltcG9ydCBsZWZ0UGFuZWxUZW1wbGF0ZSBmcm9tICcuL2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC50ZW1wbGF0ZS5odG1sJztcblxuY29uc3QgTEVGVF9QQU5FTF9ESVJFQ1RJVkUgPSAnbGVmdFBhbmVsJztcblxuXG5mdW5jdGlvbiBsZWZ0UGFuZWwoKXtcblx0bGV0IGRpcmVjdGl2ZSA9IHtcblx0XHRyZXN0cmljdCBcdFx0XHRcdFx0OiAnRScsXG5cdFx0dGVtcGxhdGVcdFx0XHRcdFx0OiBsZWZ0UGFuZWxUZW1wbGF0ZSxcblx0XHRzY29wZVx0XHRcdFx0XHRcdFx0OiB7fSxcblx0XHRjb250cm9sbGVyXHRcdFx0XHQ6XHRMRUZUX1BBTkVMX0NPTlRST0xMRVIsXG5cdFx0Y29udHJvbGxlckFzXHRcdFx0OiBMRUZUX1BBTkVMX0NPTlRST0xMRVJBUyxcblx0XHRiaW5kVG9Db250cm9sbGVyXHQ6IHtcblx0XHRcdGNsb3NlRWRpdFBhbmVsICAgICAgICA6ICcmJyxcbiAgICAgIHNlbGVjdGVkQ29udHJvbCAgICAgICA6ICcmJyxcbiAgICAgIHNhdmVGcm9tRWRpdFBhbmVsICAgICA6ICcmJ1xuXHRcdH1cblx0fTtcblx0cmV0dXJuIGRpcmVjdGl2ZTtcbn1cblxubGVmdFBhbmVsLiRpbmplY3QgPSBbXTtcblxuZXhwb3J0IGRlZmF1bHQgbGVmdFBhbmVsO1xuXG5leHBvcnQge1xuXHRMRUZUX1BBTkVMX0RJUkVDVElWRVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9sZWZ0UGFuZWwvZWRhRHJhZ0Ryb3BXYXkubGVmdFBhbmVsLmRpcmVjdGl2ZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 19 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"
\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n ×\\n \\n\\t\\t \\n\\t
\\n\\t
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n \\n \\n Select a control\\n \\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t
\\n\\t
\\n Close\\n \\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC50ZW1wbGF0ZS5odG1sPzI3NDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseVJBQXlSLHVYQUF1WCIsImZpbGUiOiIxOS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IGlkPVxcXCJjb250cm9sRWRpdExlZnRQYW5lbFxcXCI+XFxuXFx0PGRpdiBjbGFzcz1cXFwicHVsbC1yaWdodFxcXCI+XFxuXFx0XFx0PGJ1dHRvblxcbiAgICAgIHR5cGU9XFxcImJ1dHRvblxcXCJcXG4gICAgICBjbGFzcz1cXFwiY2xvc2VcXFwiXFxuICAgICAgbmctY2xpY2s9XFxcImxlZnRQYW5lbEN0cmwuY2xvc2VFZGl0UGFuZWwoKVxcXCJcXG4gICAgICBhcmlhLWxhYmVsPVxcXCJDbG9zZVxcXCI+XFxuXFx0XFx0XFx0PHNwYW5cXG4gICAgICAgIGFyaWEtaGlkZGVuPVxcXCJ0cnVlXFxcIj5cXG4gICAgICAgICZ0aW1lcztcXG4gICAgICA8L3NwYW4+XFxuXFx0XFx0PC9idXR0b24+XFxuXFx0PC9kaXY+XFxuXFx0PGRpdiBjbGFzcz1cXFwic2VwYXJhdG9yMTBwaXhlbFxcXCI+PC9kaXY+XFxuXFx0PGRpdiBuZy1zd2l0Y2ggb249XFxcImxlZnRQYW5lbEN0cmwucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLnNlbGVjdGVkQ29udHJvbFxcXCI+XFxuXFx0XFx0PGRpdiBuZy1zd2l0Y2gtd2hlbj1cXFwibm9uZVxcXCI+XFxuXFx0XFx0XFx0PGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG5cXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJjb2wtc20tMTJcXFwiPlxcblxcdFxcdFxcdFxcdFxcdDxoNSBjbGFzcz1cXFwidGV4dC1jZW50ZXIgdGV4dGVSb3VnZVxcXCI+XFxuICAgICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLWFycm93LXVwXFxcIj48L2k+XFxuICAgICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgICAgU2VsZWN0IGEgY29udHJvbFxcbiAgICAgICAgICA8L2g1PlxcblxcdFxcdFxcdFxcdDwvZGl2PlxcblxcdFxcdFxcdDwvZGl2PlxcblxcdFxcdDwvZGl2PlxcblxcdFxcdDxkaXYgbmctc3dpdGNoLXdoZW49XFxcImVtcHR5XFxcIj5cXG5cXHRcXHRcXHQ8bGVmdC1wYW5lbC1ibGFuay1jb250cm9sIC8+XFxuXFx0XFx0PC9kaXY+XFxuXFx0XFx0PGRpdiBuZy1zd2l0Y2gtd2hlbj1cXFwiSGVhZGVyXFxcIj5cXG5cXHRcXHRcXHQ8bGVmdC1wYW5lbC1oZWFkZXItY29udHJvbCAvPlxcblxcdFxcdDwvZGl2PlxcblxcdFxcdDxkaXYgbmctc3dpdGNoLXdoZW49XFxcIlN1YnRpdGxlXFxcIj5cXG5cXHRcXHRcXHQ8bGVmdC1wYW5lbC1zdWJ0aXRsZS1jb250cm9sIC8+XFxuXFx0XFx0PC9kaXY+XFxuXFx0XFx0PGRpdiBuZy1zd2l0Y2gtd2hlbj1cXFwiVGV4dElucHV0XFxcIj5cXG5cXHRcXHRcXHQ8bGVmdC1wYW5lbC10ZXh0LWlucHV0LWNvbnRyb2wgLz5cXG5cXHRcXHQ8L2Rpdj5cXG5cXHRcXHQ8ZGl2IG5nLXN3aXRjaC13aGVuPVxcXCJQYXNzd29yZFxcXCI+XFxuXFx0XFx0XFx0PGxlZnQtcGFuZWwtcGFzc3dvcmQtY29udHJvbCAvPlxcblxcdFxcdDwvZGl2PlxcblxcdFxcdDxkaXYgbmctc3dpdGNoLXdoZW49XFxcIkRhdGVcXFwiPlxcblxcdFxcdFxcdDxsZWZ0LXBhbmVsLWRhdGUtY29udHJvbCAvPlxcblxcdFxcdDwvZGl2PlxcblxcdFxcdDxkaXYgbmctc3dpdGNoLXdoZW49XFxcIlRleGFyZWFcXFwiPlxcblxcdFxcdFxcdDxsZWZ0LXBhbmVsLXRleHRhcmVhLWNvbnRyb2wgLz5cXG5cXHRcXHQ8L2Rpdj5cXG5cXHRcXHQ8ZGl2IG5nLXN3aXRjaC13aGVuPVxcXCJSaWNoVGV4dEVkaXRvclxcXCI+XFxuXFx0XFx0XFx0PGxlZnQtcGFuZWwtcmljaC10ZXh0LWVkaXRvci1jb250cm9sIC8+XFxuXFx0XFx0PC9kaXY+XFxuXFx0XFx0PGRpdiBuZy1zd2l0Y2gtd2hlbj1cXFwiUmFkaW9cXFwiPlxcblxcdFxcdFxcdDxsZWZ0LXBhbmVsLXJhZGlvLWNvbnRyb2wgLz5cXG5cXHRcXHQ8L2Rpdj5cXG5cXHRcXHQ8ZGl2IG5nLXN3aXRjaC13aGVuPVxcXCJDaGVja2JveFxcXCI+XFxuXFx0XFx0XFx0PGxlZnQtcGFuZWwtY2hlY2stYm94LWNvbnRyb2wgLz5cXG5cXHRcXHQ8L2Rpdj5cXG5cXHRcXHQ8ZGl2IG5nLXN3aXRjaC13aGVuPVxcXCJCYXNpY1NlbGVjdFxcXCI+XFxuXFx0XFx0XFx0PGxlZnQtcGFuZWwtYmFzaWMtc2VsZWN0LWNvbnRyb2wgLz5cXG5cXHRcXHQ8L2Rpdj5cXG5cXHRcXHQ8ZGl2IG5nLXN3aXRjaC13aGVuPVxcXCJHcm91cGVkU2VsZWN0XFxcIj5cXG5cXHRcXHRcXHQ8bGVmdC1wYW5lbC1ncm91cGVkLXNlbGVjdC1jb250cm9sIC8+XFxuXFx0XFx0PC9kaXY+XFxuXFx0PC9kaXY+XFxuXFx0PGJ1dHRvblxcbiAgICBjbGFzcz1cXFwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1ibG9jayBwdWxsLXJpZ2h0XFxcIlxcbiAgICBuZy1jbGljaz1cXFwibGVmdFBhbmVsQ3RybC5jbG9zZUVkaXRQYW5lbCgpXFxcIj5cXG4gICAgQ2xvc2VcXG4gIDwvYnV0dG9uPlxcbjwvZGl2PlxcblwiXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSAxOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 20 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* global angular */\n\n\nvar _edaDragDropWayLeftPanelSelectOptionManageService = __webpack_require__(21);\n\nvar helpers = _interopRequireWildcard(_edaDragDropWayLeftPanelSelectOptionManageService);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE = '$selectOptionMange';\n\nvar selectOptionMange = function () {\n function selectOptionMange() {\n _classCallCheck(this, selectOptionMange);\n\n this.init();\n }\n\n _createClass(selectOptionMange, [{\n key: 'init',\n value: function init() {}\n }, {\n key: 'initModel',\n value: function initModel(selectObj) {\n helpers.resetModel(selectObj);\n }\n }, {\n key: 'isOptionUnique',\n value: function isOptionUnique(selectObj, textValue) {\n for (var i = selectObj.rows.length - 1; i >= 0; i--) {\n if (selectObj.rows[i].option === textValue) return false;\n }\n return true;\n }\n }, {\n key: 'isOptionValidFormat',\n value: function isOptionValidFormat(textValue) {\n if (textValue !== '') return true;\n return false;\n }\n }, {\n key: 'addNewOptionRadio',\n value: function addNewOptionRadio(selectObj, newOptionText) {\n var fullResponse = {\n resultFlag: false,\n details: ''\n };\n var checkResult = helpers.validOption(selectObj, newOptionText);\n if (checkResult.resultFlag === true) {\n var newOption = {\n option: newOptionText,\n order: selectObj.rows.length\n };\n selectObj.rows.push(newOption);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n } else {\n angular.copy(checkResult, fullResponse);\n return fullResponse;\n }\n }\n }, {\n key: 'addNewOptionBasicSelect',\n value: function addNewOptionBasicSelect(selectObj, newOptionText) {\n var fullResponse = {\n resultFlag: false,\n details: ''\n };\n var checkResult = helpers.validOption(selectObj, newOptionText);\n if (checkResult.resultFlag === true) {\n var newOption = {\n option: newOptionText,\n order: selectObj.rows.length\n };\n selectObj.rows.push(newOption);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n } else {\n angular.copy(checkResult, fullResponse);\n return fullResponse;\n }\n }\n }, {\n key: 'addNewOptionGroupedSelect',\n value: function addNewOptionGroupedSelect(selectObj, newOptionText, newOptionGroup) {\n var fullResponse = {\n resultFlag: false,\n details: ''\n };\n var checkResult = helpers.validOption(selectObj, newOptionText);\n if (checkResult.resultFlag === true) {\n var newOption = {\n option: newOptionText,\n group: newOptionGroup,\n order: selectObj.rows.length\n };\n selectObj.rows.push(newOption);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n } else {\n angular.copy(checkResult, fullResponse);\n return fullResponse;\n }\n }\n }, {\n key: 'removeOption',\n value: function removeOption(selectObj, AtIndex) {\n var fullResponse = {\n resultFlag: false,\n details: ''\n };\n if (AtIndex !== -1) {\n selectObj.rows.splice(AtIndex, 1);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n } else {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Option index not valid';\n return fullResponse;\n }\n }\n }, {\n key: 'upthisOption',\n value: function upthisOption(selectObj, indexOption) {\n var fullResponse = {\n resultFlag: false,\n details: ''\n };\n if (indexOption > -1) {\n if (indexOption > 0) {\n if (selectObj.rows[indexOption - 1]) {\n var currentOption = selectObj.rows[indexOption];\n selectObj.rows.splice(indexOption, 1);\n selectObj.rows.splice(indexOption - 1, 0, currentOption);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n } else {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Can\\'t retreive option from option index';\n return fullResponse;\n }\n } else {\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n }\n } else {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Option index not valid';\n return fullResponse;\n }\n }\n }, {\n key: 'downthisOption',\n value: function downthisOption(selectObj, indexOption) {\n var fullResponse = {\n resultFlag: false,\n details: ''\n };\n if (indexOption > -1) {\n if (indexOption < selectObj.rows.length - 1) {\n if (selectObj.rows[indexOption + 1]) {\n var currentOption = selectObj.rows[indexOption];\n selectObj.rows.splice(indexOption, 1);\n selectObj.rows.splice(indexOption + 1, 0, currentOption);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n } else {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Can\\'t retreive option from option index';\n return fullResponse;\n }\n } else {\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n }\n } else {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Option index not valid';\n return fullResponse;\n }\n }\n }]);\n\n return selectOptionMange;\n}();\n\nselectOptionMange.$inject = [];\n\nexports.default = selectOptionMange;\nexports.LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE = LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC5zZWxlY3RPcHRpb25NYW5hZ2Uuc2VydmljZS5qcz85ZDAwIl0sIm5hbWVzIjpbImhlbHBlcnMiLCJMRUZUX1BBTkVMX1NFTEVDVF9PUFRJT05fTUFOQUdFX1NFUlZJQ0UiLCJzZWxlY3RPcHRpb25NYW5nZSIsImluaXQiLCJzZWxlY3RPYmoiLCJyZXNldE1vZGVsIiwidGV4dFZhbHVlIiwiaSIsInJvd3MiLCJsZW5ndGgiLCJvcHRpb24iLCJuZXdPcHRpb25UZXh0IiwiZnVsbFJlc3BvbnNlIiwicmVzdWx0RmxhZyIsImRldGFpbHMiLCJjaGVja1Jlc3VsdCIsInZhbGlkT3B0aW9uIiwibmV3T3B0aW9uIiwib3JkZXIiLCJwdXNoIiwiYW5ndWxhciIsImNvcHkiLCJuZXdPcHRpb25Hcm91cCIsImdyb3VwIiwiQXRJbmRleCIsInNwbGljZSIsImluZGV4T3B0aW9uIiwiY3VycmVudE9wdGlvbiIsIiRpbmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7cWpCQUFBOzs7QUFDQTs7SUFBWUEsTzs7Ozs7O0FBRVosSUFBTUMsMENBQTBDLG9CQUFoRDs7SUFHTUMsaUI7QUFFSiwrQkFBYTtBQUFBOztBQUNYLFNBQUtDLElBQUw7QUFDRDs7OzsyQkFFSyxDQUVMOzs7OEJBRVNDLFMsRUFBVTtBQUNsQkosY0FBUUssVUFBUixDQUFtQkQsU0FBbkI7QUFDRDs7O21DQUVjQSxTLEVBQVdFLFMsRUFBVTtBQUNsQyxXQUFLLElBQUlDLElBQUlILFVBQVVJLElBQVYsQ0FBZUMsTUFBZixHQUF3QixDQUFyQyxFQUF3Q0YsS0FBSyxDQUE3QyxFQUFnREEsR0FBaEQsRUFBcUQ7QUFDbkQsWUFBSUgsVUFBVUksSUFBVixDQUFlRCxDQUFmLEVBQWtCRyxNQUFsQixLQUE2QkosU0FBakMsRUFBNEMsT0FBTyxLQUFQO0FBQzdDO0FBQ0QsYUFB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LENBQW5CLEVBQXNCO0FBQ3BCLFlBQUlBLGNBQWN0QixVQUFVSSxJQUFWLENBQWVDLE1BQWYsR0FBd0IsQ0FBMUMsRUFBNEM7QUFDMUMsY0FBSUwsVUFBVUksSUFBVixDQUFla0IsY0FBYyxDQUE3QixDQUFKLEVBQXFDO0FBQ25DLGdCQUFJQyxnQkFBZ0J2QixVQUFVSSxJQUFWLENBQWVrQixXQUFmLENBQXBCO0FBQ0F0QixzQkFBVUksSUFBVixDQUFlaUIsTUFBZixDQUFzQkMsV0FBdEIsRUFBb0MsQ0FBcEM7QUFDQXRCLHNCQUFVSSxJQUFWLENBQWVpQixNQUFmLENBQXVCQyxjQUFjLENBQXJDLEVBQXlDLENBQXpDLEVBQTRDQyxhQUE1QztBQUNBZix5QkFBYUMsVUFBYixHQUEwQixJQUExQjtBQUNBRCx5QkFBYUUsT0FBYixHQUEwQixFQUExQjtBQUNBLG1CQUFPRixZQUFQO0FBQ0QsV0FQRCxNQU9LO0FBQ0hBLHlCQUFhQyxVQUFiLEdBQTBCLEtBQTFCO0FBQ0FELHlCQUFhRSxPQUFiO0FBQ0EsbUJBQU9GLFlBQVA7QUFDRDtBQUNGLFNBYkQsTUFhSztBQUNIQSx1QkFBYUMsVUFBYixHQUEwQixJQUExQjtBQUNBRCx1QkFBYUUsT0FBYixHQUEwQixFQUExQjtBQUNBLGlCQUFPRixZQUFQO0FBQ0Q7QUFDRixPQW5CRCxNQW1CSztBQUNIQSxxQkFBYUMsVUFBYixHQUEwQixLQUExQjtBQUNBRCxxQkFBYUUsT0FBYixHQUEwQix3QkFBMUI7QUFDQSxlQUFPRixZQUFQO0FBQ0Q7QUFDRjs7Ozs7O0FBTUhWLGtCQUFrQjBCLE9BQWxCLEdBQTRCLEVBQTVCOztrQkFFZTFCLGlCO1FBR2JELHVDLEdBQUFBLHVDIiwiZmlsZSI6IjIwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGFuZ3VsYXIgKi9cbmltcG9ydCAqIGFzIGhlbHBlcnMgZnJvbSAnLi9lZGFEcmFnRHJvcFdheS5sZWZ0UGFuZWwuc2VsZWN0T3B0aW9uTWFuYWdlLnNlcnZpY2UuaGVscGVycyc7XG5cbmNvbnN0IExFRlRfUEFORUxfU0VMRUNUX09QVElPTl9NQU5BR0VfU0VSVklDRSA9ICckc2VsZWN0T3B0aW9uTWFuZ2UnO1xuXG5cbmNsYXNzIHNlbGVjdE9wdGlvbk1hbmdle1xuICBcbiAgY29uc3RydWN0b3IoKXtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuICBcbiAgaW5pdCgpe1xuICAgIFxuICB9XG4gIFxuICBpbml0TW9kZWwoc2VsZWN0T2JqKXtcbiAgICBoZWxwZXJzLnJlc2V0TW9kZWwoc2VsZWN0T2JqKTtcbiAgfVxuICBcbiAgaXNPcHRpb25VbmlxdWUoc2VsZWN0T2JqLCB0ZXh0VmFsdWUpe1xuICAgIGZvciAobGV0IGkgPSBzZWxlY3RPYmoucm93cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKHNlbGVjdE9iai5yb3dzW2ldLm9wdGlvbiA9PT0gdGV4dFZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIFxuICBpc09wdGlvblZhbGlkRm9ybWF0KHRleHRWYWx1ZSl7XG4gICAgaWYgKHRleHRWYWx1ZSAhPT0gJycpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTsgICAgICAgICAgICAgICAgICAgIFxuICB9XG5cbiAgYWRkTmV3T3B0aW9uUmFkaW8oc2VsZWN0T2JqLCBuZXdPcHRpb25UZXh0KXtcbiAgICBsZXQgZnVsbFJlc3BvbnNlID0ge1xuICAgICAgcmVzdWx0RmxhZyAgOiBmYWxzZSxcbiAgICAgIGRldGFpbHMgICAgIDogJydcbiAgICB9O1xuICAgIGxldCBjaGVja1Jlc3VsdCA9IGhlbHBlcnMudmFsaWRPcHRpb24oc2VsZWN0T2JqLCBuZXdPcHRpb25UZXh0KTsgIFxuICAgIGlmIChjaGVja1Jlc3VsdC5yZXN1bHRGbGFnID09PSB0cnVlKXtcbiAgICAgICAgbGV0IG5ld09wdGlvbiA9IHtcbiAgICAgICAgICBvcHRpb24gIDogbmV3T3B0aW9uVGV4dCxcbiAgICAgICAgICBvcmRlciAgIDogc2VsZWN0T2JqLnJvd3MubGVuZ3RoXG4gICAgICAgIH07XG4gICAgICAgIHNlbGVjdE9iai5yb3dzLnB1c2gobmV3T3B0aW9uKTtcbiAgICAgICAgZnVsbFJlc3BvbnNlLnJlc3VsdEZsYWcgPSB0cnVlO1xuICAgICAgICBmdWxsUmVzcG9uc2UuZGV0YWlscyAgICA9ICcnO1xuICAgICAgICByZXR1cm4gZnVsbFJlc3BvbnNlO1xuICAgIH1lbHNle1xuICAgICAgYW5ndWxhci5jb3B5KGNoZWNrUmVzdWx0LCBmdWxsUmVzcG9uc2UpOyAgICAgICAgICAgICAgICAgICAgXG4gICAgICByZXR1cm4gZnVsbFJlc3BvbnNlOyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgIH1cbiAgfVxuICBcbiAgYWRkTmV3T3B0aW9uQmFzaWNTZWxlY3Qoc2VsZWN0T2JqLCBuZXdPcHRpb25UZXh0KXtcbiAgICBsZXQgZnVsbFJlc3BvbnNlID0ge1xuICAgICAgcmVzdWx0RmxhZyAgOiBmYWxzZSxcbiAgICAgIGRldGFpbHMgICAgIDogJydcbiAgICB9O1xuICAgIGxldCBjaGVja1Jlc3VsdCA9IGhlbHBlcnMudmFsaWRPcHRpb24oc2VsZWN0T2JqLCBuZXdPcHRpb25UZXh0KTsgIFxuICAgIGlmIChjaGVja1Jlc3VsdC5yZXN1bHRGbGFnID09PSB0cnVlKXtcbiAgICAgIGxldCBuZXdPcHRpb24gPSB7XG4gICAgICAgICAgb3B0aW9uICA6IG5ld09wdGlvblRleHQsXG4gICAgICAgICAgb3JkZXIgICA6IHNlbGVjdE9iai5yb3dzLmxlbmd0aFxuICAgICAgfTtcbiAgICAgIHNlbGVjdE9iai5yb3dzLnB1c2gobmV3T3B0aW9uKTtcbiAgICAgIGZ1bGxSZXNwb25zZS5yZXN1bHRGbGFnID0gdHJ1ZTtcbiAgICAgIGZ1bGxSZXNwb25zZS5kZXRhaWxzICAgID0gJyc7XG4gICAgICByZXR1cm4gZnVsbFJlc3BvbnNlO1xuICAgIH1lbHNle1xuICAgICAgYW5ndWxhci5jb3B5KGNoZWNrUmVzdWx0LCBmdWxsUmVzcG9uc2UpOyAgICAgICAgICAgICAgICAgICAgXG4gICAgICByZXR1cm4gZnVsbFJlc3BvbnNlOyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgIH1cbiAgfVxuICBcbiAgYWRkTmV3T3B0aW9uR3JvdXBlZFNlbGVjdChzZWxlY3RPYmosIG5ld09wdGlvblRleHQsIG5ld09wdGlvbkdyb3VwKXtcbiAgICBsZXQgZnVsbFJlc3BvbnNlID0ge1xuICAgICAgcmVzdWx0RmxhZyAgOiBmYWxzZSxcbiAgICAgIGRldGFpbHMgICAgIDogJydcbiAgICB9O1xuICAgIGxldCBjaGVja1Jlc3VsdCA9IGhlbHBlcnMudmFsaWRPcHRpb24oc2VsZWN0T2JqLCBuZXdPcHRpb25UZXh0KTsgIFxuICAgIGlmIChjaGVja1Jlc3VsdC5yZXN1bHRGbGFnID09PSB0cnVlKXtcbiAgICAgIGxldCBuZXdPcHRpb24gPSB7XG4gICAgICAgICAgb3B0aW9uICA6IG5ld09wdGlvblRleHQsXG4gICAgICAgICAgZ3JvdXAgICA6IG5ld09wdGlvbkdyb3VwLFxuICAgICAgICAgIG9yZGVyICAgOiBzZWxlY3RPYmoucm93cy5sZW5ndGhcbiAgICAgIH07XG4gICAgICBzZWxlY3RPYmoucm93cy5wdXNoKG5ld09wdGlvbik7XG4gICAgICBmdWxsUmVzcG9uc2UucmVzdWx0RmxhZyA9IHRydWU7XG4gICAgICBmdWxsUmVzcG9uc2UuZGV0YWlscyAgICA9ICcnO1xuICAgICAgcmV0dXJuIGZ1bGxSZXNwb25zZTtcbiAgICB9ZWxzZXtcbiAgICAgIGFuZ3VsYXIuY29weShjaGVja1Jlc3VsdCwgZnVsbFJlc3BvbnNlKTsgICAgICAgICAgICAgICAgICAgIFxuICAgICAgcmV0dXJuIGZ1bGxSZXNwb25zZTsgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICB9XG4gIH0gIFxuICBcbiAgcmVtb3ZlT3B0aW9uKHNlbGVjdE9iaiwgQXRJbmRleCkge1xuICAgIGxldCBmdWxsUmVzcG9uc2UgPSB7XG4gICAgICByZXN1bHRGbGFnICA6IGZhbHNlLFxuICAgICAgZGV0YWlscyAgICAgOiAnJ1xuICAgIH07XG4gICAgaWYgKEF0SW5kZXggIT09IC0xKSB7XG4gICAgICBzZWxlY3RPYmoucm93cy5zcGxpY2UoQXRJbmRleCwgMSk7XG4gICAgICBmdWxsUmVzcG9uc2UucmVzdWx0RmxhZyA9IHRydWU7XG4gICAgICBmdWxsUmVzcG9uc2UuZGV0YWlscyAgICA9ICcnO1xuICAgICAgcmV0dXJuIGZ1bGxSZXNwb25zZTtcbiAgICB9ZWxzZXtcbiAgICAgIGZ1bGxSZXNwb25zZS5yZXN1bHRGbGFnID0gZmFsc2U7XG4gICAgICBmdWxsUmVzcG9uc2UuZGV0YWlscyAgICA9ICdPcHRpb24gaW5kZXggbm90IHZhbGlkJztcbiAgICAgIHJldHVybiBmdWxsUmVzcG9uc2U7XG4gICAgfVxuICB9XG4gIFxuICB1cHRoaXNPcHRpb24oc2VsZWN0T2JqLCBpbmRleE9wdGlvbil7XG4gICAgbGV0IGZ1bGxSZXNwb25zZSA9IHtcbiAgICAgIHJlc3VsdEZsYWcgIDogZmFsc2UsXG4gICAgICBkZXRhaWxzICAgICA6ICcnXG4gICAgfTtcbiAgICBpZiAoaW5kZXhPcHRpb24gPiAtMSkge1xuICAgICAgaWYgKGluZGV4T3B0aW9uID4gMCkge1xuICAgICAgICBpZiAoc2VsZWN0T2JqLnJvd3NbaW5kZXhPcHRpb24gLSAxXSkge1xuICAgICAgICAgIGxldCBjdXJyZW50T3B0aW9uID0gc2VsZWN0T2JqLnJvd3NbaW5kZXhPcHRpb25dO1xuICAgICAgICAgIHNlbGVjdE9iai5yb3dzLnNwbGljZShpbmRleE9wdGlvbiAsIDEpO1xuICAgICAgICAgIHNlbGVjdE9iai5yb3dzLnNwbGljZSgoaW5kZXhPcHRpb24gLSAxKSwgMCwgY3VycmVudE9wdGlvbik7IFxuICAgICAgICAgIGZ1bGxSZXNwb25zZS5yZXN1bHRGbGFnID0gdHJ1ZTtcbiAgICAgICAgICBmdWxsUmVzcG9uc2UuZGV0YWlscyAgICA9ICcnO1xuICAgICAgICAgIHJldHVybiBmdWxsUmVzcG9uc2U7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgIGZ1bGxSZXNwb25zZS5yZXN1bHRGbGFnID0gZmFsc2U7XG4gICAgICAgICAgZnVsbFJlc3BvbnNlLmRldGFpbHMgICAgPSBgQ2FuJ3QgcmV0cmVpdmUgb3B0aW9uIGZyb20gb3B0aW9uIGluZGV4YDtcbiAgICAgICAgICByZXR1cm4gZnVsbFJlc3BvbnNlO1xuICAgICAgICB9XG4gICAgICB9ZWxzZXtcbiAgICAgICAgZnVsbFJlc3BvbnNlLnJlc3VsdEZsYWcgPSB0cnVlO1xuICAgICAgICBmdWxsUmVzcG9uc2UuZGV0YWlscyAgICA9ICcnO1xuICAgICAgICByZXR1cm4gZnVsbFJlc3BvbnNlO1xuICAgICAgfSAgXG4gICAgfWVsc2V7XG4gICAgICBmdWxsUmVzcG9uc2UucmVzdWx0RmxhZyA9IGZhbHNlO1xuICAgICAgZnVsbFJlc3BvbnNlLmRldGFpbHMgICAgPSAnT3B0aW9uIGluZGV4IG5vdCB2YWxpZCc7XG4gICAgICByZXR1cm4gZnVsbFJlc3BvbnNlO1xuICAgIH1cbiAgfVxuICBcbiAgZG93bnRoaXNPcHRpb24oc2VsZWN0T2JqLCBpbmRleE9wdGlvbil7XG4gICAgbGV0IGZ1bGxSZXNwb25zZSA9IHtcbiAgICAgIHJlc3VsdEZsYWcgIDogZmFsc2UsXG4gICAgICBkZXRhaWxzICAgICA6ICcnXG4gICAgfTtcbiAgICBpZiAoaW5kZXhPcHRpb24gPiAtMSkge1xuICAgICAgaWYgKGluZGV4T3B0aW9uIDwgc2VsZWN0T2JqLnJvd3MubGVuZ3RoIC0gMSl7XG4gICAgICAgIGlmIChzZWxlY3RPYmoucm93c1tpbmRleE9wdGlvbiArIDFdKSB7XG4gICAgICAgICAgbGV0IGN1cnJlbnRPcHRpb24gPSBzZWxlY3RPYmoucm93c1tpbmRleE9wdGlvbl07XG4gICAgICAgICAgc2VsZWN0T2JqLnJvd3Muc3BsaWNlKGluZGV4T3B0aW9uICwgMSk7XG4gICAgICAgICAgc2VsZWN0T2JqLnJvd3Muc3BsaWNlKChpbmRleE9wdGlvbiArIDEpLCAwLCBjdXJyZW50T3B0aW9uKTsgIFxuICAgICAgICAgIGZ1bGxSZXNwb25zZS5yZXN1bHRGbGFnID0gdHJ1ZTtcbiAgICAgICAgICBmdWxsUmVzcG9uc2UuZGV0YWlscyAgICA9ICcnO1xuICAgICAgICAgIHJldHVybiBmdWxsUmVzcG9uc2U7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgIGZ1bGxSZXNwb25zZS5yZXN1bHRGbGFnID0gZmFsc2U7XG4gICAgICAgICAgZnVsbFJlc3BvbnNlLmRldGFpbHMgICAgPSBgQ2FuJ3QgcmV0cmVpdmUgb3B0aW9uIGZyb20gb3B0aW9uIGluZGV4YDtcbiAgICAgICAgICByZXR1cm4gZnVsbFJlc3BvbnNlO1xuICAgICAgICB9XG4gICAgICB9ZWxzZXsgICAgICAgICAgXG4gICAgICAgIGZ1bGxSZXNwb25zZS5yZXN1bHRGbGFnID0gdHJ1ZTtcbiAgICAgICAgZnVsbFJlc3BvbnNlLmRldGFpbHMgICAgPSAnJztcbiAgICAgICAgcmV0dXJuIGZ1bGxSZXNwb25zZTtcbiAgICAgIH1cbiAgICB9ZWxzZXtcbiAgICAgIGZ1bGxSZXNwb25zZS5yZXN1bHRGbGFnID0gZmFsc2U7XG4gICAgICBmdWxsUmVzcG9uc2UuZGV0YWlscyAgICA9ICdPcHRpb24gaW5kZXggbm90IHZhbGlkJztcbiAgICAgIHJldHVybiBmdWxsUmVzcG9uc2U7XG4gICAgfVxuICB9ICAgIFxuICBcbiAgXG4gIFxufVxuXG5zZWxlY3RPcHRpb25NYW5nZS4kaW5qZWN0ID0gW107XG5cbmV4cG9ydCBkZWZhdWx0IHNlbGVjdE9wdGlvbk1hbmdlO1xuXG5leHBvcnQge1xuICBMRUZUX1BBTkVMX1NFTEVDVF9PUFRJT05fTUFOQUdFX1NFUlZJQ0Vcbn07XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2xlZnRQYW5lbC9lZGFEcmFnRHJvcFdheS5sZWZ0UGFuZWwuc2VsZWN0T3B0aW9uTWFuYWdlLnNlcnZpY2UuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 21 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* global angular */\nvar resetModel = function resetModel(selectObj) {\n var zeroModel = { rows: [] };\n angular.copy(zeroModel, selectObj);\n};\n\nvar validOption = function validOption(selectObj, newOptionText) {\n var fullResponse = {\n resultFlag: false,\n details: ''\n };\n if (typeof newOptionText === 'undefined') {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Entered option is empty';\n return fullResponse;\n }\n if (newOptionText !== '') {\n for (var i = selectObj.rows.length - 1; i >= 0; i--) {\n if (selectObj.rows[i].option === newOptionText) {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Entered option is not unique';\n return fullResponse;\n }\n }\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n }\n fullResponse.resultFlag = false;\n fullResponse.details = 'Entered option is empty';\n return fullResponse;\n};\n\nexports.resetModel = resetModel;\nexports.validOption = validOption;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC5zZWxlY3RPcHRpb25NYW5hZ2Uuc2VydmljZS5oZWxwZXJzLmpzPzQyOGEiXSwibmFtZXMiOlsicmVzZXRNb2RlbCIsInNlbGVjdE9iaiIsInplcm9Nb2RlbCIsInJvd3MiLCJhbmd1bGFyIiwiY29weSIsInZhbGlkT3B0aW9uIiwibmV3T3B0aW9uVGV4dCIsImZ1bGxSZXNwb25zZSIsInJlc3VsdEZsYWciLCJkZXRhaWxzIiwiaSIsImxlbmd0aCIsIm9wdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBLElBQU1BLGFBQWEsU0FBYkEsVUFBYSxDQUFDQyxTQUFELEVBQWU7QUFDaEMsTUFBSUMsWUFBWSxFQUFFQyxNQUFLLEVBQVAsRUFBaEI7QUFDQUMsVUFBUUMsSUFBUixDQUFhSCxTQUFiLEVBQXdCRCxTQUF4QjtBQUNELENBSEQ7O0FBTUEsSUFBTUssY0FBYyxTQUFkQSxXQUFjLENBQUNMLFNBQUQsRUFBWU0sYUFBWixFQUE4QjtBQUNoRCxNQUFJQyxlQUFlO0FBQ2pCQyxnQkFBYSxLQURJO0FBRWpCQyxhQUFVO0FBRk8sR0FBbkI7QUFJQSxNQUFJLE9BQU9ILGFBQVAsS0FBeUIsV0FBN0IsRUFBMEM7QUFDeENDLGlCQUFhQyxVQUFiLEdBQTBCLEtBQTFCO0FBQ0FELGlCQUFhRSxPQUFiLEdBQTBCLHlCQUExQjtBQUNBLFdBQU9GLFlBQVA7QUFDRDtBQUNELE1BQUlELGtCQUFrQixFQUF0QixFQUEwQjtBQUN4QixTQUFLLElBQUlJLElBQUlWLFVBQVVFLElBQVYsQ0FBZVMsTUFBZixHQUF3QixDQUFyQyxFQUF3Q0QsS0FBSyxDQUE3QyxFQUFnREEsR0FBaEQsRUFBcUQ7QUFDbkQsVUFBSVYsVUFBVUUsSUFBVixDQUFlUSxDQUFmLEVBQWtCRSxNQUFsQixLQUE2Qk4sYUFBakMsRUFBZ0Q7QUFDOUNDLHFCQUFhQyxVQUFiLEdBQTBCLEtBQTFCO0FBQ0FELHFCQUFhRSxPQUFiLEdBQTBCLDhCQUExQjtBQUNBLGVBQU9GLFlBQVA7QUFDRDtBQUNGO0FBQ0RBLGlCQUFhQyxVQUFiLEdBQTBCLElBQTFCO0FBQ0FELGlCQUFhRSxPQUFiLEdBQXVCLEVBQXZCO0FBQ0EsV0FBT0YsWUFBUDtBQUNEO0FBQ0RBLGVBQWFDLFVBQWIsR0FBMEIsS0FBMUI7QUFDQUQsZUFBYUUsT0FBYixHQUF1Qix5QkFBdkI7QUFDQSxTQUFPRixZQUFQO0FBQ0QsQ0F6QkQ7O1FBNEJFUixVLEdBQUFBLFU7UUFDQU0sVyxHQUFBQSxXIiwiZmlsZSI6IjIxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGFuZ3VsYXIgKi9cbmNvbnN0IHJlc2V0TW9kZWwgPSAoc2VsZWN0T2JqKSA9PiB7XG4gIGxldCB6ZXJvTW9kZWwgPSB7IHJvd3M6W10gfTtcbiAgYW5ndWxhci5jb3B5KHplcm9Nb2RlbCwgc2VsZWN0T2JqKTtcbn07XG5cblxuY29uc3QgdmFsaWRPcHRpb24gPSAoc2VsZWN0T2JqLCBuZXdPcHRpb25UZXh0KSA9PiB7XG4gIGxldCBmdWxsUmVzcG9uc2UgPSB7XG4gICAgcmVzdWx0RmxhZyA6IGZhbHNlLFxuICAgIGRldGFpbHMgOiAnJ1xuICB9O1xuICBpZiAodHlwZW9mIG5ld09wdGlvblRleHQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgZnVsbFJlc3BvbnNlLnJlc3VsdEZsYWcgPSBmYWxzZTtcbiAgICBmdWxsUmVzcG9uc2UuZGV0YWlscyAgICA9ICdFbnRlcmVkIG9wdGlvbiBpcyBlbXB0eSc7XG4gICAgcmV0dXJuIGZ1bGxSZXNwb25zZTtcbiAgfVxuICBpZiAobmV3T3B0aW9uVGV4dCAhPT0gJycpIHtcbiAgICBmb3IgKHZhciBpID0gc2VsZWN0T2JqLnJvd3MubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChzZWxlY3RPYmoucm93c1tpXS5vcHRpb24gPT09IG5ld09wdGlvblRleHQpIHtcbiAgICAgICAgZnVsbFJlc3BvbnNlLnJlc3VsdEZsYWcgPSBmYWxzZTtcbiAgICAgICAgZnVsbFJlc3BvbnNlLmRldGFpbHMgICAgPSAnRW50ZXJlZCBvcHRpb24gaXMgbm90IHVuaXF1ZSc7XG4gICAgICAgIHJldHVybiBmdWxsUmVzcG9uc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bGxSZXNwb25zZS5yZXN1bHRGbGFnID0gdHJ1ZTtcbiAgICBmdWxsUmVzcG9uc2UuZGV0YWlscyA9ICcnO1xuICAgIHJldHVybiBmdWxsUmVzcG9uc2U7XG4gIH1cbiAgZnVsbFJlc3BvbnNlLnJlc3VsdEZsYWcgPSBmYWxzZTsgICAgIFxuICBmdWxsUmVzcG9uc2UuZGV0YWlscyA9ICdFbnRlcmVkIG9wdGlvbiBpcyBlbXB0eSc7XG4gIHJldHVybiBmdWxsUmVzcG9uc2U7XG59O1xuXG5leHBvcnQge1xuICByZXNldE1vZGVsLFxuICB2YWxpZE9wdGlvblxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9sZWZ0UGFuZWwvZWRhRHJhZ0Ryb3BXYXkubGVmdFBhbmVsLnNlbGVjdE9wdGlvbk1hbmFnZS5zZXJ2aWNlLmhlbHBlcnMuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 22 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n///
\n///
\n\n/**\n * TODO :\n * - clean deprecated functions\n * - method 'resetAllTemporyModels' -> remove no use angular.copy to optimize\n */\n\nvar CONTROLLER_MODAL_PROXY = 'controllerModalProxy';\nvar INIT_OPTION_MODEL = { rows: [] };\n\nvar controllerModalProxy = function () {\n function controllerModalProxy(EasyFormGenFormlyBindingModels) {\n _classCallCheck(this, controllerModalProxy);\n\n this.EasyFormGenFormlyBindingModels = EasyFormGenFormlyBindingModels;\n this.init();\n }\n\n _createClass(controllerModalProxy, [{\n key: 'init',\n value: function init() {\n this.proxyModel = {};\n this.resetProxyModel();\n this.editPanelModel = {\n toggle: false,\n lineIndex: -1,\n columnIndex: -1,\n control: {}\n };\n this.basicSelectRowCollection = angular.copy(INIT_OPTION_MODEL);\n this.newOptionBasicSelect = angular.copy({ saisie: '' });\n\n this.groupedSelectRowCollection = angular.copy(INIT_OPTION_MODEL);\n this.newOptionGroupedSelect = angular.copy({ saisie: '' });\n this.GroupedSelectGroups = angular.copy({ list: [] });\n this.newGroupGroupedSelect = angular.copy({ saisie: '' });\n this.groupSelectGroupClick = angular.copy({ showList: false });\n\n this.radioRowCollection = angular.copy(INIT_OPTION_MODEL);\n this.newOptionRadio = angular.copy({ saisie: '' });\n }\n\n // deprecated in drag and drop version, use initProxyModel insead\n\n }, {\n key: 'initNyaSelect',\n value: function initNyaSelect(nyaSelectObj) {\n return this.resetNyaSelect(nyaSelectObj);\n }\n }, {\n key: 'initProxyModel',\n value: function initProxyModel(thisProxyModelToInit) {\n return this.resetProxyModel(thisProxyModelToInit);\n }\n\n // deprecated : in drag and drop version, use \"resetProxyModel()\"\"\n\n }, {\n key: 'resetNyaSelect',\n value: function resetNyaSelect(nyaSelectObj) {\n var newNyaSelectObj = this.EasyFormGenFormlyBindingModels.getEasyFormListControls();\n angular.copy(newNyaSelectObj, nyaSelectObj);\n return true;\n }\n }, {\n key: 'resetProxyModel',\n value: function resetProxyModel() {\n var newProxyModel = this.EasyFormGenFormlyBindingModels.getEasyFormListControls();\n this.proxyModel = angular.copy(newProxyModel);\n return true;\n }\n }, {\n key: 'returnControlFromAddCtrlModalModel',\n value: function returnControlFromAddCtrlModalModel(CtrlModalModel) {\n var modelToReturn = {\n selectedControl: 'none',\n formlyType: 'none',\n formlySubtype: 'none',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyPlaceholder: '',\n formlyOptions: []\n };\n for (var i = CtrlModalModel.controls.length - 1; i >= 0; i--) {\n if (CtrlModalModel.selectedControl === CtrlModalModel.controls[i].id) {\n\n modelToReturn.selectedControl = CtrlModalModel.selectedControl;\n modelToReturn.formlyType = CtrlModalModel.controls[i].formlyType;\n modelToReturn.formlySubtype = CtrlModalModel.controls[i].formlySubtype;\n modelToReturn.formlyLabel = CtrlModalModel.controls[i].formlyLabel;\n modelToReturn.formlyRequired = CtrlModalModel.controls[i].formlyRequired;\n modelToReturn.formlyDescription = CtrlModalModel.controls[i].formlyDescription;\n modelToReturn.formlyPlaceholder = CtrlModalModel.controls[i].formlyPlaceholder;\n modelToReturn.formlyOptions = CtrlModalModel.controls[i].formlyOptions;\n // particular properties, here ; datetpicker format\n if (CtrlModalModel.controls[i].formlyType === 'datepicker') modelToReturn.datepickerPopup = CtrlModalModel.controls[i].datepickerPopup;\n }\n }\n return modelToReturn;\n }\n }, {\n key: 'validKeyUniqueness',\n value: function validKeyUniqueness(thisKey, configurationObj) {\n var isUnique = true;\n for (var i = configurationObj.lines.length - 1; i >= 0; i--) {\n for (var j = configurationObj.lines[i].columns.length - 1; j >= 0; j--) {\n if (configurationObj.lines[i].columns[j].control.key === thisKey) {\n isUnique = false;\n }\n }\n }\n return isUnique;\n }\n }, {\n key: 'getSelectedProxyModel',\n value: function getSelectedProxyModel(configurationSelectedCtrl) {\n var selectedProxyModelControl = 'none';\n var listProxyModelCTRL = angular.copy(this.EasyFormGenFormlyBindingModels.getEasyFormListControls().controls);\n\n listProxyModelCTRL.forEach(function (control) {\n if (control.formlyType === configurationSelectedCtrl.type && control.formlySubtype === configurationSelectedCtrl.subtype) {\n selectedProxyModelControl = control.id;\n return selectedProxyModelControl;\n }\n });\n return selectedProxyModelControl;\n }\n\n // to refresh configuration model from edit panel\n\n }, {\n key: 'bindConfigurationModelFromProxyModel',\n value: function bindConfigurationModelFromProxyModel(indexLine, numcolumn, configurationObj) {\n var extractedProps = angular.copy(this.proxyModel.temporyConfig);\n\n configurationObj.lines[indexLine].columns[numcolumn].control.selectedControl = extractedProps.selectedControl;\n configurationObj.lines[indexLine].columns[numcolumn].control.type = extractedProps.formlyType;\n configurationObj.lines[indexLine].columns[numcolumn].control.subtype = extractedProps.formlySubtype;\n // templateOptions\n configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions = {\n label: '',\n required: false,\n description: '',\n placeholder: '',\n options: []\n };\n // then bind template option\n configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label = extractedProps.formlyLabel;\n configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required = extractedProps.formlyRequired;\n configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description = extractedProps.formlyDescription;\n configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder = extractedProps.formlyPlaceholder;\n configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options = extractedProps.formlyOptions;\n // add additionnal — particular — properties : -> datepicker : datepickerPopup\n if (configurationObj.lines[indexLine].columns[numcolumn].control.type === 'datepicker') {\n configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup = extractedProps.datepickerPopup;\n }\n // unique key (set only first time) in this model is formly control type + Date.now();\n var newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();\n\n if (this.validKeyUniqueness(newKey, configurationObj) === true) {\n configurationObj.lines[indexLine].columns[numcolumn].control.key = newKey;\n } else {\n newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();\n if (this.validKeyUniqueness(newKey, configurationObj) === true) {\n configurationObj.lines[indexLine].columns[numcolumn].control.key = newKey;\n } else {\n newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();\n }\n }\n configurationObj.lines[indexLine].columns[numcolumn].control.edited = true;\n }\n\n /**\n * set local proxyModel from Selected control in configuration model\n *\n * replace deprecated \"getNyASelectFromSelectedLineColumn\"\n * -model is now named \"proxyModel\"\n * -model is stored in this service\n *\n * -> it has just more sence!\n */\n\n }, {\n key: 'setProxyModelFromConfigurationSelection',\n value: function setProxyModelFromConfigurationSelection(configurationObj, indexLine, numcolumn) {\n // data send to modal controller\n if (typeof configurationObj.lines[indexLine].columns[numcolumn].control != 'undefined') {\n // determine selected control from indexes and control.type and control.subtype in configuration model\n this.proxyModel.selectedControl = typeof configurationObj.lines[indexLine].columns[numcolumn].control.type != 'undefined' ? this.getSelectedProxyModel(configurationObj.lines[indexLine].columns[numcolumn].control) : 'none';\n this.proxyModel.temporyConfig.selectedControl = typeof configurationObj.lines[indexLine].columns[numcolumn].control.type != 'undefined' ? this.getSelectedProxyModel(configurationObj.lines[indexLine].columns[numcolumn].control) : 'none';\n this.proxyModel.temporyConfig.formlyType = typeof configurationObj.lines[indexLine].columns[numcolumn].control.type != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.type : 'none';\n this.proxyModel.temporyConfig.formlySubtype = typeof configurationObj.lines[indexLine].columns[numcolumn].control.subtype != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.subtype : 'none';\n this.proxyModel.temporyConfig.formlyLabel = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label : '';\n this.proxyModel.temporyConfig.formlyRequired = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required : '';\n this.proxyModel.temporyConfig.formlyDescription = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description : '';\n this.proxyModel.temporyConfig.formlyPlaceholder = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder : '';\n this.proxyModel.temporyConfig.formlyOptions = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options : '';\n // particular case : datepicker\n if (this.proxyModel.temporyConfig.selectedControl === 'Date') {\n this.proxyModel.temporyConfig.datepickerPopup = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup : '';\n }\n // console.info('debug setProxyModelFromConfigurationSelection');\n // console.dir({\n // selectedControl : angular.copy(this.proxyModel.selectedControl ),\n // temporyConfig : angular.copy(this.proxyModel.temporyConfig)\n // });\n }\n return this.proxyModel;\n }\n }, {\n key: 'getProxyModel',\n value: function getProxyModel() {\n return this.proxyModel;\n }\n\n /**\n * ============================================================\n * following methods for \"editPanelModel\"\n *\n * Note this model :\n * - to manage side edit control panel\n * ============================================================\n */\n\n // getter : editPanelModel (whole model => type = object)\n\n }, {\n key: 'getEditPanelModelAllModel',\n value: function getEditPanelModelAllModel() {\n return this.editPanelModel;\n }\n\n // setter : editPanelModel (whole model => type = object)\n\n }, {\n key: 'setEditPanelModelControl',\n value: function setEditPanelModelControl(newEditPanelModel) {\n var successfullDone = false;\n if (typeof newEditPanelModel !== 'undefined') {\n angular.merge(this.editPanelModel, newEditPanelModel);\n successfullDone = true;\n }\n return successfullDone;\n }\n\n // getter : editPanelModel.columnIndex\n\n }, {\n key: 'getEditPanelModelColumnIndex',\n value: function getEditPanelModelColumnIndex() {\n return this.editPanelModel.columnIndex;\n }\n\n // setter : editPanelModel.columnIndex\n\n }, {\n key: 'setEditPanelModelColumnIndex',\n value: function setEditPanelModelColumnIndex(newColumnIndex) {\n var successfullDone = false;\n if (typeof newColumnIndex !== 'undefined') {\n this.editPanelModel.columnIndex = newColumnIndex;\n successfullDone = true;\n }\n return successfullDone;\n }\n\n // getter : editPanelModel.lineIndex\n\n }, {\n key: 'getEditPanelModelLineIndex',\n value: function getEditPanelModelLineIndex() {\n return this.editPanelModel.lineIndex;\n }\n\n // setter : editPanelModel.lineIndex\n\n }, {\n key: 'setEditPanelModelLineIndex',\n value: function setEditPanelModelLineIndex(newLineIndex) {\n var successfullDone = false;\n if (typeof newLineIndex !== 'undefined') {\n this.editPanelModel.lineIndex = newLineIndex;\n successfullDone = true;\n }\n return successfullDone;\n }\n\n // getter : editPanelModel.control\n\n }, {\n key: 'getEditPanelModelControl',\n value: function getEditPanelModelControl() {\n return this.editPanelModel.control;\n }\n\n // getter : editPanelModel.toggle\n\n }, {\n key: 'getEditPanelModelToggle',\n value: function getEditPanelModelToggle() {\n return this.editPanelModel.toggle;\n }\n\n // setter : editPanelModel.toggle\n\n }, {\n key: 'setEditPanelModelToggle',\n value: function setEditPanelModelToggle(newToggleValue) {\n var successfullDone = false;\n if (typeof newToggleValue !== 'undefined') {\n this.editPanelModel.toggle = newToggleValue;\n successfullDone = true;\n }\n return successfullDone;\n }\n }, {\n key: 'resetAllTemporyModels',\n value: function resetAllTemporyModels() {\n this.basicSelectRowCollection = angular.copy(INIT_OPTION_MODEL);\n this.newOptionBasicSelect = angular.copy({ saisie: '' });\n\n this.groupedSelectRowCollection = angular.copy(INIT_OPTION_MODEL);\n this.newOptionGroupedSelect = angular.copy({ saisie: '' });\n this.GroupedSelectGroups = angular.copy({ list: [] });\n this.newGroupGroupedSelect = angular.copy({ saisie: '' });\n this.groupSelectGroupClick = angular.copy({ showList: false });\n\n this.radioRowCollection = angular.copy(INIT_OPTION_MODEL);\n this.newOptionRadio = angular.copy({ saisie: '' });\n return true;\n }\n\n /**\n * bindSpecialCtrlTemporyModelsToProxyModel: needed when validating after editing a control\n * tempory models applied to proxyModel if control is one of these\n *\n * example : if selected control is a basic select options\n * -> so its tempory models are bound to proxyModel\n */\n\n }, {\n key: 'bindSpecialCtrlTemporyModelsToProxyModel',\n value: function bindSpecialCtrlTemporyModelsToProxyModel() {\n if (this.proxyModel.selectedControl === 'BasicSelect') {\n this.bindBasicSelectToProxyModel(this.basicSelectRowCollection);\n }\n if (this.proxyModel.selectedControl === 'GroupedSelect') {\n this.bindGroupedSelectToProxyModel(this.groupedSelectRowCollection);\n }\n if (this.proxyModel.selectedControl === 'Radio') {\n this.bindRadioToProxyModel(this.radioRowCollection);\n }\n }\n\n // basic select\n\n }, {\n key: 'bindBasicSelectFromProxyModel',\n value: function bindBasicSelectFromProxyModel(basicSelectRowCollection) {\n if (this.proxyModel.temporyConfig.formlyOptions.length > 0) {\n for (var i = 0; i <= this.proxyModel.temporyConfig.formlyOptions.length - 1; i++) {\n var newOption = {\n 'option': this.proxyModel.temporyConfig.formlyOptions[i].name,\n 'order': i,\n 'group': ''\n };\n basicSelectRowCollection.rows.push(newOption);\n }\n }\n }\n }, {\n key: 'bindBasicSelectToProxyModel',\n value: function bindBasicSelectToProxyModel(basicSelectRowCollection) {\n var resetNyASelectOptions = [];\n this.proxyModel.temporyConfig.formlyOptions = resetNyASelectOptions;\n if (basicSelectRowCollection.rows.length > 0) {\n for (var i = 0; i <= basicSelectRowCollection.rows.length - 1; i++) {\n var newOption = {\n 'name': basicSelectRowCollection.rows[i].option,\n 'value': i,\n 'group': ''\n };\n this.proxyModel.temporyConfig.formlyOptions.push(newOption);\n }\n }\n }\n\n //* grouped select\n\n }, {\n key: 'bindGroupedSelectFromProxyModel',\n value: function bindGroupedSelectFromProxyModel(groupedSelectRowCollection, GroupedSelectGroups) {\n if (this.proxyModel.temporyConfig.formlyOptions.length > 0) {\n for (var i = 0; i <= this.proxyModel.temporyConfig.formlyOptions.length - 1; i++) {\n var newOption = {\n 'option': this.proxyModel.temporyConfig.formlyOptions[i].name,\n 'order': i,\n 'group': this.proxyModel.temporyConfig.formlyOptions[i].group\n };\n groupedSelectRowCollection.rows.push(newOption);\n }\n //grouplist : thx to lodash it is easy\n var filteredgroup = _.uniq(_.pluck(groupedSelectRowCollection.rows, 'group'));\n angular.copy(filteredgroup, GroupedSelectGroups.list);\n }\n }\n }, {\n key: 'bindGroupedSelectToProxyModel',\n value: function bindGroupedSelectToProxyModel(groupedSelectRowCollection) {\n this.proxyModel.temporyConfig.formlyOptions = [];\n for (var i = 0; i <= groupedSelectRowCollection.rows.length - 1; i++) {\n var newOption = {\n 'name': groupedSelectRowCollection.rows[i].option,\n 'value': i,\n 'group': groupedSelectRowCollection.rows[i].group\n };\n this.proxyModel.temporyConfig.formlyOptions.push(newOption);\n }\n }\n\n // radio\n\n }, {\n key: 'bindRadioFromProxyModel',\n value: function bindRadioFromProxyModel(radioRowCollection) {\n if (this.proxyModel.temporyConfig.formlyOptions.length > 0) {\n for (var i = 0; i <= this.proxyModel.temporyConfig.formlyOptions.length - 1; i++) {\n var newOption = {\n 'option': this.proxyModel.temporyConfig.formlyOptions[i].name,\n 'order': i,\n 'group': ''\n };\n radioRowCollection.rows.push(newOption);\n }\n }\n }\n }, {\n key: 'bindRadioToProxyModel',\n value: function bindRadioToProxyModel(radioRowCollection) {\n var resetproxyModelOptions = [];\n this.proxyModel.temporyConfig.formlyOptions = resetproxyModelOptions;\n if (radioRowCollection.rows.length > 0) {\n for (var i = 0; i <= radioRowCollection.rows.length - 1; i++) {\n var newOption = {\n 'name': radioRowCollection.rows[i].option,\n 'value': i,\n 'group': ''\n };\n this.proxyModel.temporyConfig.formlyOptions.push(newOption);\n }\n }\n }\n }]);\n\n return controllerModalProxy;\n}();\n\ncontrollerModalProxy.$inject = ['EasyFormGenFormlyBindingModels'];\n\nexports.default = controllerModalProxy;\nexports.CONTROLLER_MODAL_PROXY = CONTROLLER_MODAL_PROXY;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL2VkYURyYWdEcm9wV2F5LmxlZnRQYW5lbC5jb250cm9sbGVyTW9kYWxQcm94eS5zZXJ2aWNlLmpzP2UwMzEiXSwibmFtZXMiOlsiQ09OVFJPTExFUl9NT0RBTF9QUk9YWSIsIklOSVRfT1BUSU9OX01PREVMIiwicm93cyIsImNvbnRyb2xsZXJNb2RhbFByb3h5IiwiRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzIiwiaW5pdCIsInByb3h5TW9kZWwiLCJyZXNldFByb3h5TW9kZWwiLCJlZGl0UGFuZWxNb2RlbCIsInRvZ2dsZSIsImxpbmVJbmRleCIsImNvbHVtbkluZGV4IiwiY29udHJvbCIsImJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbiIsImFuZ3VsYXIiLCJjb3B5IiwibmV3T3B0aW9uQmFzaWNTZWxlY3QiLCJzYWlzaWUiLCJncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbiIsIm5ld09wdGlvbkdyb3VwZWRTZWxlY3QiLCJHcm91cGVkU2VsZWN0R3JvdXBzIiwibGlzdCIsIm5ld0dyb3VwR3JvdXBlZFNlbGVjdCIsImdyb3VwU2VsZWN0R3JvdXBDbGljayIsInNob3dMaXN0IiwicmFkaW9Sb3dDb2xsZWN0aW9uIiwibmV3T3B0aW9uUmFkaW8iLCJueWFTZWxlY3RPYmoiLCJyZXNldE55YVNlbGVjdCIsInRoaXNQcm94eU1vZGVsVG9Jbml0IiwibmV3TnlhU2VsZWN0T2JqIiwiZ2V0RWFzeUZvcm1MaXN0Q29udHJvbHMiLCJuZXdQcm94eU1vZGVsIiwiQ3RybE1vZGFsTW9kZWwiLCJtb2RlbFRvUmV0dXJuIiwic2VsZWN0ZWRDb250cm9sIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlQbGFjZWhvbGRlciIsImZvcm1seU9wdGlvbnMiLCJpIiwiY29udHJvbHMiLCJsZW5ndGgiLCJpZCIsImRhdGVwaWNrZXJQb3B1cCIsInRoaXNLZXkiLCJjb25maWd1cmF0aW9uT2JqIiwiaXNVbmlxdWUiLCJsaW5lcyIsImoiLCJjb2x1bW5zIiwia2V5IiwiY29uZmlndXJhdGlvblNlbGVjdGVkQ3RybCIsInNlbGVjdGVkUHJveHlNb2RlbENvbnRyb2wiLCJsaXN0UHJveHlNb2RlbENUUkwiLCJmb3JFYWNoIiwidHlwZSIsInN1YnR5cGUiLCJpbmRleExpbmUiLCJudW1jb2x1bW4iLCJleHRyYWN0ZWRQcm9wcyIsInRlbXBvcnlDb25maWciLCJ0ZW1wbGF0ZU9wdGlvbnMiLCJsYWJlbCIsInJlcXVpcmVkIiwiZGVzY3JpcHRpb24iLCJwbGFjZWhvbGRlciIsIm9wdGlvbnMiLCJuZXdLZXkiLCJEYXRlIiwibm93IiwidmFsaWRLZXlVbmlxdWVuZXNzIiwiZWRpdGVkIiwiZ2V0U2VsZWN0ZWRQcm94eU1vZGVsIiwibmV3RWRpdFBhbmVsTW9kZWwiLCJzdWNjZXNzZnVsbERvbmUiLCJtZXJnZSIsIm5ld0NvbHVtbkluZGV4IiwibmV3TGluZUluZGV4IiwibmV3VG9nZ2xlVmFsdWUiLCJiaW5kQmFzaWNTZWxlY3RUb1Byb3h5TW9kZWwiLCJiaW5kR3JvdXBlZFNlbGVjdFRvUHJveHlNb2RlbCIsImJpbmRSYWRpb1RvUHJveHlNb2RlbCIsIm5ld09wdGlvbiIsIm5hbWUiLCJwdXNoIiwicmVzZXROeUFTZWxlY3RPcHRpb25zIiwib3B0aW9uIiwiZ3JvdXAiLCJmaWx0ZXJlZGdyb3VwIiwiXyIsInVuaXEiLCJwbHVjayIsInJlc2V0cHJveHlNb2RlbE9wdGlvbnMiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTs7QUFFQTs7Ozs7O0FBTUEsSUFBTUEseUJBQTBCLHNCQUFoQztBQUNBLElBQU1DLG9CQUEwQixFQUFFQyxNQUFPLEVBQVQsRUFBaEM7O0lBRU1DLG9CO0FBRUosZ0NBQVlDLDhCQUFaLEVBQTJDO0FBQUE7O0FBQ3pDLFNB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QixJQUFuQixDQUF3QnNGLElBQXhCLENBQTZCRixTQUE3QjtBQUNIO0FBQ0Y7QUFDSDs7OzBDQUVzQjdELGtCLEVBQW1CO0FBQ3ZDLFVBQUl1RSx5QkFBeUIsRUFBN0I7QUFDQSxXQUFLMUYsVUFBTCxDQUFnQjBELGFBQWhCLENBQThCdEIsYUFBOUIsR0FBOENzRCxzQkFBOUM7QUFDQSxVQUFJdkUsbUJBQW1CdkIsSUFBbkIsQ0FBd0IyQyxNQUF4QixHQUFpQyxDQUFyQyxFQUF3QztBQUN0QyxhQUFLLElBQUlGLElBQUksQ0FBYixFQUFnQkEsS0FBS2xCLG1CQUFtQnZCLElBQW5CLENBQXdCMkMsTUFBeEIsR0FBaUMsQ0FBdEQsRUFBeURGLEdBQXpELEVBQTZEO0FBQzNELGNBQUkyQyxZQUFZO0FBQ2Qsb0JBQVU3RCxtQkFBbUJ2QixJQUFuQixDQUF3QnlDLENBQXhCLEVBQTJCK0MsTUFEdkI7QUFFZCxxQkFBVy9DLENBRkc7QUFHZCxxQkFBVztBQUhHLFdBQWhCO0FBS0EsZUFBS3JDLFVBQUwsQ0FBZ0IwRCxhQUFoQixDQUE4QnRCLGFBQTlCLENBQTRDOEMsSUFBNUMsQ0FBaURGLFNBQWpEO0FBQ0Q7QUFDRjtBQUNGOzs7Ozs7QUFRSG5GLHFCQUFxQjhGLE9BQXJCLEdBQStCLENBQzdCLGdDQUQ2QixDQUEvQjs7a0JBSWU5RixvQjtRQUdiSCxzQixHQUFBQSxzQiIsImZpbGUiOiIyMi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi8uLi8uLi90eXBpbmdzL2FuZ3VsYXJqcy9hbmd1bGFyLmQudHNcIiAvPlxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uLy4uLy4uL3R5cGluZ3MvbG9kYXNoL2xvZGFzaC5kLnRzXCIgLz5cblxuLyoqXG4gKiBUT0RPIDpcbiAqIC0gY2xlYW4gZGVwcmVjYXRlZCBmdW5jdGlvbnNcbiAqIC0gbWV0aG9kICdyZXNldEFsbFRlbXBvcnlNb2RlbHMnIC0+IHJlbW92ZSBubyB1c2UgYW5ndWxhci5jb3B5IHRvIG9wdGltaXplXG4gKi9cblxuY29uc3QgQ09OVFJPTExFUl9NT0RBTF9QUk9YWSAgPSAnY29udHJvbGxlck1vZGFsUHJveHknO1xuY29uc3QgSU5JVF9PUFRJT05fTU9ERUwgICAgICAgPSB7IHJvd3MgOiBbXSB9O1xuXG5jbGFzcyBjb250cm9sbGVyTW9kYWxQcm94eXtcblxuICBjb25zdHJ1Y3RvcihFYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHMpe1xuICAgIHRoaXMuRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzID0gRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgaW5pdCgpe1xuICAgIHRoaXMucHJveHlNb2RlbCAgICAgPSB7fTtcbiAgICB0aGlzLnJlc2V0UHJveHlNb2RlbCgpO1xuICAgIHRoaXMuZWRpdFBhbmVsTW9kZWwgPSB7XG4gICAgICB0b2dnbGUgICAgICA6IGZhbHNlLFxuICAgICAgbGluZUluZGV4ICAgOiAtMSxcbiAgICAgIGNvbHVtbkluZGV4IDogLTEsXG4gICAgICBjb250cm9sICAgICA6IHt9XG4gICAgfTtcbiAgICB0aGlzLmJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbiAgID0gYW5ndWxhci5jb3B5KElOSVRfT1BUSU9OX01PREVMKTtcblx0XHR0aGlzLm5ld09wdGlvbkJhc2ljU2VsZWN0IFx0XHRcdD0gYW5ndWxhci5jb3B5KHsgc2Fpc2llOiAnJyB9KTtcblxuXHRcdHRoaXMuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24gPSBhbmd1bGFyLmNvcHkoSU5JVF9PUFRJT05fTU9ERUwpO1xuXHRcdHRoaXMubmV3T3B0aW9uR3JvdXBlZFNlbGVjdCBcdFx0PSBhbmd1bGFyLmNvcHkoeyBzYWlzaWU6ICcnIH0pO1xuXHRcdHRoaXMuR3JvdXBlZFNlbGVjdEdyb3VwcyBcdFx0XHRcdD0gYW5ndWxhci5jb3B5KHsgbGlzdDpbXSB9KTtcblx0XHR0aGlzLm5ld0dyb3VwR3JvdXBlZFNlbGVjdCBcdFx0XHQ9IGFuZ3VsYXIuY29weSh7IHNhaXNpZTogJycgfSk7XG5cdFx0dGhpcy5ncm91cFNlbGVjdEdyb3VwQ2xpY2sgXHRcdFx0PSBhbmd1bGFyLmNvcHkoeyBzaG93TGlzdCA6IGZhbHNlIH0pO1xuXG5cdFx0dGhpcy5yYWRpb1Jvd0NvbGxlY3Rpb24gXHRcdFx0XHQ9IGFuZ3VsYXIuY29weShJTklUX09QVElPTl9NT0RFTCk7XG5cdFx0dGhpcy5uZXdPcHRpb25SYWRpbyBcdFx0XHRcdFx0XHQ9IGFuZ3VsYXIuY29weSh7IHNhaXNpZTogJycgfSk7XG4gIH1cblxuXG4gIC8vIGRlcHJlY2F0ZWQgaW4gZHJhZyBhbmQgZHJvcCB2ZXJzaW9uLCB1c2UgaW5pdFByb3h5TW9kZWwgaW5zZWFkXG4gIGluaXROeWFTZWxlY3QobnlhU2VsZWN0T2JqKXtcbiAgICByZXR1cm4gdGhpcy5yZXNldE55YVNlbGVjdChueWFTZWxlY3RPYmopO1xuICB9XG5cblxuICBpbml0UHJveHlNb2RlbCh0aGlzUHJveHlNb2RlbFRvSW5pdCl7XG4gICAgcmV0dXJuIHRoaXMucmVzZXRQcm94eU1vZGVsKHRoaXNQcm94eU1vZGVsVG9Jbml0KTtcbiAgfVxuXG5cbiAgLy8gZGVwcmVjYXRlZCA6IGluIGRyYWcgYW5kIGRyb3AgdmVyc2lvbiwgdXNlIFwicmVzZXRQcm94eU1vZGVsKClcIlwiXG4gIHJlc2V0TnlhU2VsZWN0KG55YVNlbGVjdE9iail7XG4gICAgbGV0IG5ld055YVNlbGVjdE9iaiA9IHRoaXMuRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzLmdldEVhc3lGb3JtTGlzdENvbnRyb2xzKCk7XG4gICAgYW5ndWxhci5jb3B5KG5ld055YVNlbGVjdE9iaiwgbnlhU2VsZWN0T2JqKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG5cbiAgcmVzZXRQcm94eU1vZGVsKCl7XG4gICAgbGV0IG5ld1Byb3h5TW9kZWwgPSB0aGlzLkVhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVscy5nZXRFYXN5Rm9ybUxpc3RDb250cm9scygpO1xuICAgIHRoaXMucHJveHlNb2RlbCA9IGFuZ3VsYXIuY29weShuZXdQcm94eU1vZGVsKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG5cbiAgcmV0dXJuQ29udHJvbEZyb21BZGRDdHJsTW9kYWxNb2RlbChDdHJsTW9kYWxNb2RlbCl7XG4gICAgbGV0IG1vZGVsVG9SZXR1cm4gPSB7XG4gICAgICAgICAgc2VsZWN0ZWRDb250cm9sXHRcdDogJ25vbmUnLFxuICAgICAgICAgIGZvcm1seVR5cGUgXHRcdFx0XHQ6ICdub25lJyxcbiAgICAgICAgICBmb3JtbHlTdWJ0eXBlXHRcdFx0OiAnbm9uZScsXG4gICAgICAgICAgZm9ybWx5TGFiZWxcdFx0XHRcdDogJycsXG4gICAgICAgICAgZm9ybWx5UmVxdWlyZWQgXHRcdDogZmFsc2UsXG4gICAgICAgICAgZm9ybWx5RGVzY3JpcHRpb25cdDogJycsXG4gICAgICAgICAgZm9ybWx5UGxhY2Vob2xkZXJcdDogJycsXG4gICAgICAgICAgZm9ybWx5T3B0aW9uc1x0XHRcdDogW11cbiAgICB9O1xuICAgIGZvciAobGV0IGkgPSBDdHJsTW9kYWxNb2RlbC5jb250cm9scy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKEN0cmxNb2RhbE1vZGVsLnNlbGVjdGVkQ29udHJvbCA9PT0gQ3RybE1vZGFsTW9kZWwuY29udHJvbHNbaV0uaWQpIHtcblxuICAgICAgICBtb2RlbFRvUmV0dXJuLnNlbGVjdGVkQ29udHJvbCBcdD0gQ3RybE1vZGFsTW9kZWwuc2VsZWN0ZWRDb250cm9sO1xuICAgICAgICBtb2RlbFRvUmV0dXJuLmZvcm1seVR5cGUgXHRcdFx0XHQ9IEN0cmxNb2RhbE1vZGVsLmNvbnRyb2xzW2ldLmZvcm1seVR5cGU7XG4gICAgICAgIG1vZGVsVG9SZXR1cm4uZm9ybWx5U3VidHlwZSBcdFx0PSBDdHJsTW9kYWxNb2RlbC5jb250cm9sc1tpXS5mb3JtbHlTdWJ0eXBlO1xuICAgICAgICBtb2RlbFRvUmV0dXJuLmZvcm1seUxhYmVsIFx0XHRcdD0gQ3RybE1vZGFsTW9kZWwuY29udHJvbHNbaV0uZm9ybWx5TGFiZWw7XG4gICAgICAgIG1vZGVsVG9SZXR1cm4uZm9ybWx5UmVxdWlyZWQgXHRcdD0gQ3RybE1vZGFsTW9kZWwuY29udHJvbHNbaV0uZm9ybWx5UmVxdWlyZWQ7XG4gICAgICAgIG1vZGVsVG9SZXR1cm4uZm9ybWx5RGVzY3JpcHRpb24gXHQ9IEN0cmxNb2RhbE1vZGVsLmNvbnRyb2xzW2ldLmZvcm1seURlc2NyaXB0aW9uO1xuICAgICAgICBtb2RlbFRvUmV0dXJuLmZvcm1seVBsYWNlaG9sZGVyID0gQ3RybE1vZGFsTW9kZWwuY29udHJvbHNbaV0uZm9ybWx5UGxhY2Vob2xkZXI7XG4gICAgICAgIG1vZGVsVG9SZXR1cm4uZm9ybWx5T3B0aW9ucyBcdFx0PSBDdHJsTW9kYWxNb2RlbC5jb250cm9sc1tpXS5mb3JtbHlPcHRpb25zO1xuICAgICAgICAvLyBwYXJ0aWN1bGFyIHByb3BlcnRpZXMsIGhlcmUgOyBkYXRldHBpY2tlciBmb3JtYXRcbiAgICAgICAgaWYgKEN0cmxNb2RhbE1vZGVsLmNvbnRyb2xzW2ldLmZvcm1seVR5cGUgPT09ICdkYXRlcGlja2VyJykgbW9kZWxUb1JldHVybi5kYXRlcGlja2VyUG9wdXAgPSBDdHJsTW9kYWxNb2RlbC5jb250cm9sc1tpXS5kYXRlcGlja2VyUG9wdXA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtb2RlbFRvUmV0dXJuO1xuICB9XG5cblxuICB2YWxpZEtleVVuaXF1ZW5lc3ModGhpc0tleSwgY29uZmlndXJhdGlvbk9iail7XG4gICAgbGV0IGlzVW5pcXVlID0gdHJ1ZTtcbiAgICBmb3IgKGxldCBpID0gY29uZmlndXJhdGlvbk9iai5saW5lcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgZm9yIChsZXQgaiA9IGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaV0uY29sdW1ucy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICBpZiAoY29uZmlndXJhdGlvbk9iai5saW5lc1tpXS5jb2x1bW5zW2pdLmNvbnRyb2wua2V5ID09PSB0aGlzS2V5KSB7XG4gICAgICAgICAgaXNVbmlxdWUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNVbmlxdWU7XG4gIH1cblxuXG4gIGdldFNlbGVjdGVkUHJveHlNb2RlbChjb25maWd1cmF0aW9uU2VsZWN0ZWRDdHJsKXtcbiAgICB2YXIgc2VsZWN0ZWRQcm94eU1vZGVsQ29udHJvbCA9ICdub25lJztcbiAgICB2YXIgbGlzdFByb3h5TW9kZWxDVFJMICAgICAgICA9IGFuZ3VsYXIuY29weSh0aGlzLkVhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVscy5nZXRFYXN5Rm9ybUxpc3RDb250cm9scygpLmNvbnRyb2xzKTtcblxuICAgIGxpc3RQcm94eU1vZGVsQ1RSTC5mb3JFYWNoKGZ1bmN0aW9uKGNvbnRyb2wpe1xuICAgICAgaWYgKGNvbnRyb2wuZm9ybWx5VHlwZSBcdFx0PT09IGNvbmZpZ3VyYXRpb25TZWxlY3RlZEN0cmwudHlwZSAmJlxuICAgICAgICAgIGNvbnRyb2wuZm9ybWx5U3VidHlwZSA9PT0gY29uZmlndXJhdGlvblNlbGVjdGVkQ3RybC5zdWJ0eXBlKSB7XG4gICAgICAgIHNlbGVjdGVkUHJveHlNb2RlbENvbnRyb2wgPSBjb250cm9sLmlkO1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRQcm94eU1vZGVsQ29udHJvbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gc2VsZWN0ZWRQcm94eU1vZGVsQ29udHJvbDtcbiAgfVxuXG5cbiAgLy8gdG8gcmVmcmVzaCBjb25maWd1cmF0aW9uIG1vZGVsIGZyb20gZWRpdCBwYW5lbFxuICBiaW5kQ29uZmlndXJhdGlvbk1vZGVsRnJvbVByb3h5TW9kZWwoaW5kZXhMaW5lLCBudW1jb2x1bW4sIGNvbmZpZ3VyYXRpb25PYmope1xuICAgIGxldCBleHRyYWN0ZWRQcm9wcyA9IGFuZ3VsYXIuY29weSh0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZyk7XG5cbiAgICBjb25maWd1cmF0aW9uT2JqLmxpbmVzW2luZGV4TGluZV0uY29sdW1uc1tudW1jb2x1bW5dLmNvbnRyb2wuc2VsZWN0ZWRDb250cm9sIFx0PSBleHRyYWN0ZWRQcm9wcy5zZWxlY3RlZENvbnRyb2w7XG4gICAgY29uZmlndXJhdGlvbk9iai5saW5lc1tpbmRleExpbmVdLmNvbHVtbnNbbnVtY29sdW1uXS5jb250cm9sLnR5cGUgXHRcdFx0XHRcdFx0PSBleHRyYWN0ZWRQcm9wcy5mb3JtbHlUeXBlO1xuICAgIGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbC5zdWJ0eXBlIFx0XHRcdFx0XHQ9IGV4dHJhY3RlZFByb3BzLmZvcm1seVN1YnR5cGU7XG4gICAgLy8gdGVtcGxhdGVPcHRpb25zXG4gICAgY29uZmlndXJhdGlvbk9iai5saW5lc1tpbmRleExpbmVdLmNvbHVtbnNbbnVtY29sdW1uXS5jb250cm9sLnRlbXBsYXRlT3B0aW9ucyA9IHtcbiAgICAgIGxhYmVsXHRcdFx0XHQ6ICcnLFxuICAgICAgcmVxdWlyZWRcdFx0OiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uXHQ6ICcnLFxuICAgICAgcGxhY2Vob2xkZXJcdDogJycsXG4gICAgICBvcHRpb25zXHRcdFx0OiBbXVxuICAgIH07XG4gICAgLy8gdGhlbiBiaW5kIHRlbXBsYXRlIG9wdGlvblxuICAgIGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbC50ZW1wbGF0ZU9wdGlvbnMubGFiZWwgXHRcdFx0XHQ9IGV4dHJhY3RlZFByb3BzLmZvcm1seUxhYmVsO1xuICAgIGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbC50ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWQgXHRcdD0gZXh0cmFjdGVkUHJvcHMuZm9ybWx5UmVxdWlyZWQ7XG4gICAgY29uZmlndXJhdGlvbk9iai5saW5lc1tpbmRleExpbmVdLmNvbHVtbnNbbnVtY29sdW1uXS5jb250cm9sLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbiBcdD0gZXh0cmFjdGVkUHJvcHMuZm9ybWx5RGVzY3JpcHRpb247XG4gICAgY29uZmlndXJhdGlvbk9iai5saW5lc1tpbmRleExpbmVdLmNvbHVtbnNbbnVtY29sdW1uXS5jb250cm9sLnRlbXBsYXRlT3B0aW9ucy5wbGFjZWhvbGRlciBcdD0gZXh0cmFjdGVkUHJvcHMuZm9ybWx5UGxhY2Vob2xkZXI7XG4gICAgY29uZmlndXJhdGlvbk9iai5saW5lc1tpbmRleExpbmVdLmNvbHVtbnNbbnVtY29sdW1uXS5jb250cm9sLnRlbXBsYXRlT3B0aW9ucy5vcHRpb25zIFx0XHRcdD0gZXh0cmFjdGVkUHJvcHMuZm9ybWx5T3B0aW9ucztcbiAgICAvLyBhZGQgYWRkaXRpb25uYWwg4oCUIHBhcnRpY3VsYXIg4oCUIHByb3BlcnRpZXMgOiAtPiBkYXRlcGlja2VyIDogZGF0ZXBpY2tlclBvcHVwXG4gICAgaWYgKGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbC50eXBlID09PSAnZGF0ZXBpY2tlcicpIHtcbiAgICAgIGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbC50ZW1wbGF0ZU9wdGlvbnMuZGF0ZXBpY2tlclBvcHVwID0gZXh0cmFjdGVkUHJvcHMuZGF0ZXBpY2tlclBvcHVwO1xuICAgIH1cbiAgICAvLyB1bmlxdWUga2V5IChzZXQgb25seSBmaXJzdCB0aW1lKSBpbiB0aGlzIG1vZGVsIGlzIGZvcm1seSBjb250cm9sIHR5cGUgKyBEYXRlLm5vdygpO1xuICAgIGxldCBuZXdLZXkgPSBjb25maWd1cmF0aW9uT2JqLmxpbmVzW2luZGV4TGluZV0uY29sdW1uc1tudW1jb2x1bW5dLmNvbnRyb2wudHlwZSArICctJyArIERhdGUubm93KCk7XG5cbiAgICBpZiAodGhpcy52YWxpZEtleVVuaXF1ZW5lc3MobmV3S2V5LCBjb25maWd1cmF0aW9uT2JqKSA9PT0gdHJ1ZSl7XG4gICAgICBjb25maWd1cmF0aW9uT2JqLmxpbmVzW2luZGV4TGluZV0uY29sdW1uc1tudW1jb2x1bW5dLmNvbnRyb2wua2V5ID0gbmV3S2V5O1xuICAgIH1lbHNle1xuICAgICAgbmV3S2V5ID0gY29uZmlndXJhdGlvbk9iai5saW5lc1tpbmRleExpbmVdLmNvbHVtbnNbbnVtY29sdW1uXS5jb250cm9sLnR5cGUgKyAnLScgKyBEYXRlLm5vdygpO1xuICAgICAgaWYgKHRoaXMudmFsaWRLZXlVbmlxdWVuZXNzKG5ld0tleSwgY29uZmlndXJhdGlvbk9iaikgPT09IHRydWUpe1xuICAgICAgICBjb25maWd1cmF0aW9uT2JqLmxpbmVzW2luZGV4TGluZV0uY29sdW1uc1tudW1jb2x1bW5dLmNvbnRyb2wua2V5ID0gbmV3S2V5O1xuICAgICAgfWVsc2V7XG4gICAgICAgIG5ld0tleSA9IGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbC50eXBlICsgJy0nICsgRGF0ZS5ub3coKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uZmlndXJhdGlvbk9iai5saW5lc1tpbmRleExpbmVdLmNvbHVtbnNbbnVtY29sdW1uXS5jb250cm9sLmVkaXRlZCA9IHRydWU7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBzZXQgbG9jYWwgcHJveHlNb2RlbCBmcm9tIFNlbGVjdGVkIGNvbnRyb2wgaW4gY29uZmlndXJhdGlvbiBtb2RlbFxuICAgKlxuICAgKiByZXBsYWNlIGRlcHJlY2F0ZWQgXCJnZXROeUFTZWxlY3RGcm9tU2VsZWN0ZWRMaW5lQ29sdW1uXCJcbiAgICogLW1vZGVsIGlzIG5vdyBuYW1lZCBcInByb3h5TW9kZWxcIlxuICAgKiAtbW9kZWwgaXMgc3RvcmVkIGluIHRoaXMgc2VydmljZVxuICAgKlxuICAgKiAtPiBpdCBoYXMganVzdCBtb3JlIHNlbmNlIVxuICAgKi9cbiAgc2V0UHJveHlNb2RlbEZyb21Db25maWd1cmF0aW9uU2VsZWN0aW9uKGNvbmZpZ3VyYXRpb25PYmosIGluZGV4TGluZSwgbnVtY29sdW1uKXtcbiAgICAvLyBkYXRhIHNlbmQgdG8gbW9kYWwgY29udHJvbGxlclxuICAgIGlmICh0eXBlb2YgY29uZmlndXJhdGlvbk9iai5saW5lc1tpbmRleExpbmVdLmNvbHVtbnNbbnVtY29sdW1uXS5jb250cm9sICE9ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBkZXRlcm1pbmUgc2VsZWN0ZWQgY29udHJvbCBmcm9tIGluZGV4ZXMgYW5kIGNvbnRyb2wudHlwZSBhbmQgY29udHJvbC5zdWJ0eXBlIGluIGNvbmZpZ3VyYXRpb24gbW9kZWxcbiAgICAgIHRoaXMucHJveHlNb2RlbC5zZWxlY3RlZENvbnRyb2wgXHRcdFx0XHRcdFx0XHRcdFx0PSB0eXBlb2YgY29uZmlndXJhdGlvbk9iai5saW5lc1tpbmRleExpbmVdLmNvbHVtbnNbbnVtY29sdW1uXS5jb250cm9sLnR5cGUgIT0gJ3VuZGVmaW5lZCcgPyB0aGlzLmdldFNlbGVjdGVkUHJveHlNb2RlbChjb25maWd1cmF0aW9uT2JqLmxpbmVzW2luZGV4TGluZV0uY29sdW1uc1tudW1jb2x1bW5dLmNvbnRyb2wpIDogJ25vbmUnO1xuICAgICAgdGhpcy5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuc2VsZWN0ZWRDb250cm9sIFx0XHQ9IHR5cGVvZiBjb25maWd1cmF0aW9uT2JqLmxpbmVzW2luZGV4TGluZV0uY29sdW1uc1tudW1jb2x1bW5dLmNvbnRyb2wudHlwZSAhPSAndW5kZWZpbmVkJyA/IHRoaXMuZ2V0U2VsZWN0ZWRQcm94eU1vZGVsKGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbCkgOiAnbm9uZSc7XG4gICAgICB0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlUeXBlIFx0XHRcdFx0ICA9IHR5cGVvZiBjb25maWd1cmF0aW9uT2JqLmxpbmVzW2luZGV4TGluZV0uY29sdW1uc1tudW1jb2x1bW5dLmNvbnRyb2wudHlwZSAhPSAndW5kZWZpbmVkJyA/IGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbC50eXBlOiAnbm9uZSc7XG4gICAgICB0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlTdWJ0eXBlIFx0XHRcdD0gdHlwZW9mIGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbC5zdWJ0eXBlICE9ICd1bmRlZmluZWQnID8gY29uZmlndXJhdGlvbk9iai5saW5lc1tpbmRleExpbmVdLmNvbHVtbnNbbnVtY29sdW1uXS5jb250cm9sLnN1YnR5cGUgOiAnbm9uZSc7XG4gICAgICB0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlMYWJlbCBcdFx0XHRcdD0gdHlwZW9mIGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbC50ZW1wbGF0ZU9wdGlvbnMubGFiZWwgIT0gJ3VuZGVmaW5lZCcgPyBjb25maWd1cmF0aW9uT2JqLmxpbmVzW2luZGV4TGluZV0uY29sdW1uc1tudW1jb2x1bW5dLmNvbnRyb2wudGVtcGxhdGVPcHRpb25zLmxhYmVsIDogJyc7XG4gICAgICB0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlSZXF1aXJlZFx0IFx0XHQ9IHR5cGVvZiBjb25maWd1cmF0aW9uT2JqLmxpbmVzW2luZGV4TGluZV0uY29sdW1uc1tudW1jb2x1bW5dLmNvbnRyb2wudGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkICE9ICd1bmRlZmluZWQnID8gY29uZmlndXJhdGlvbk9iai5saW5lc1tpbmRleExpbmVdLmNvbHVtbnNbbnVtY29sdW1uXS5jb250cm9sLnRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZCA6ICcnO1xuICAgICAgdGhpcy5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb24gXHQgID0gdHlwZW9mIGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbC50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24gIT0gJ3VuZGVmaW5lZCcgPyBjb25maWd1cmF0aW9uT2JqLmxpbmVzW2luZGV4TGluZV0uY29sdW1uc1tudW1jb2x1bW5dLmNvbnRyb2wudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uIDogJyc7XG4gICAgICB0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlQbGFjZWhvbGRlciBcdD0gdHlwZW9mIGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbC50ZW1wbGF0ZU9wdGlvbnMucGxhY2Vob2xkZXIgIT0gJ3VuZGVmaW5lZCcgPyBjb25maWd1cmF0aW9uT2JqLmxpbmVzW2luZGV4TGluZV0uY29sdW1uc1tudW1jb2x1bW5dLmNvbnRyb2wudGVtcGxhdGVPcHRpb25zLnBsYWNlaG9sZGVyIDogJyc7XG4gICAgICB0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlPcHRpb25zIFx0XHRcdD0gdHlwZW9mIGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbC50ZW1wbGF0ZU9wdGlvbnMub3B0aW9ucyAhPSAndW5kZWZpbmVkJyA/IGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbC50ZW1wbGF0ZU9wdGlvbnMub3B0aW9ucyA6ICcnO1xuICAgICAgLy8gcGFydGljdWxhciBjYXNlIDogZGF0ZXBpY2tlclxuICAgICAgaWYgKHRoaXMucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLnNlbGVjdGVkQ29udHJvbCA9PT0gJ0RhdGUnKSB7XG4gICAgICAgIHRoaXMucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmRhdGVwaWNrZXJQb3B1cCA9IHR5cGVvZiBjb25maWd1cmF0aW9uT2JqLmxpbmVzW2luZGV4TGluZV0uY29sdW1uc1tudW1jb2x1bW5dLmNvbnRyb2wudGVtcGxhdGVPcHRpb25zLmRhdGVwaWNrZXJQb3B1cCAhPSAndW5kZWZpbmVkJyA/IGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbC50ZW1wbGF0ZU9wdGlvbnMuZGF0ZXBpY2tlclBvcHVwIDogJyc7XG4gICAgICB9XG4gICAgICAvLyBjb25zb2xlLmluZm8oJ2RlYnVnIHNldFByb3h5TW9kZWxGcm9tQ29uZmlndXJhdGlvblNlbGVjdGlvbicpO1xuICAgICAgLy8gY29uc29sZS5kaXIoe1xuICAgICAgLy8gICBzZWxlY3RlZENvbnRyb2wgOiBhbmd1bGFyLmNvcHkodGhpcy5wcm94eU1vZGVsLnNlbGVjdGVkQ29udHJvbCApLFxuICAgICAgLy8gICB0ZW1wb3J5Q29uZmlnICAgOiBhbmd1bGFyLmNvcHkodGhpcy5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcpXG4gICAgICAvLyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucHJveHlNb2RlbDtcbiAgfVxuXG5cblx0Z2V0UHJveHlNb2RlbCgpe1xuICAgIHJldHVybiB0aGlzLnByb3h5TW9kZWw7XG4gIH1cblxuXG4gIC8qKlxuICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICogZm9sbG93aW5nIG1ldGhvZHMgZm9yIFwiZWRpdFBhbmVsTW9kZWxcIlxuICAgKlxuICAgKiBOb3RlIHRoaXMgbW9kZWwgOlxuICAgKiAtIHRvIG1hbmFnZSBzaWRlIGVkaXQgY29udHJvbCBwYW5lbFxuICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICovXG5cbiAgLy8gZ2V0dGVyIDogZWRpdFBhbmVsTW9kZWwgKHdob2xlIG1vZGVsID0+IHR5cGUgPSBvYmplY3QpXG4gIGdldEVkaXRQYW5lbE1vZGVsQWxsTW9kZWwoKXtcbiAgICByZXR1cm4gdGhpcy5lZGl0UGFuZWxNb2RlbDtcbiAgfVxuXG4gIC8vIHNldHRlciA6IGVkaXRQYW5lbE1vZGVsICh3aG9sZSBtb2RlbCA9PiB0eXBlID0gb2JqZWN0KVxuICBzZXRFZGl0UGFuZWxNb2RlbENvbnRyb2wobmV3RWRpdFBhbmVsTW9kZWwpe1xuICAgIGxldCBzdWNjZXNzZnVsbERvbmUgID0gZmFsc2U7XG4gICAgaWYgKHR5cGVvZiBuZXdFZGl0UGFuZWxNb2RlbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGFuZ3VsYXIubWVyZ2UodGhpcy5lZGl0UGFuZWxNb2RlbCwgbmV3RWRpdFBhbmVsTW9kZWwpO1xuICAgICAgc3VjY2Vzc2Z1bGxEb25lICAgICA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzZnVsbERvbmU7XG4gIH1cblxuXG4gIC8vIGdldHRlciA6IGVkaXRQYW5lbE1vZGVsLmNvbHVtbkluZGV4XG4gIGdldEVkaXRQYW5lbE1vZGVsQ29sdW1uSW5kZXgoKXtcbiAgICByZXR1cm4gdGhpcy5lZGl0UGFuZWxNb2RlbC5jb2x1bW5JbmRleDtcbiAgfVxuXG4gIC8vIHNldHRlciA6IGVkaXRQYW5lbE1vZGVsLmNvbHVtbkluZGV4XG4gIHNldEVkaXRQYW5lbE1vZGVsQ29sdW1uSW5kZXgobmV3Q29sdW1uSW5kZXgpe1xuICAgIGxldCBzdWNjZXNzZnVsbERvbmUgID0gZmFsc2U7XG4gICAgaWYgKHR5cGVvZiBuZXdDb2x1bW5JbmRleCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuZWRpdFBhbmVsTW9kZWwuY29sdW1uSW5kZXggPSBuZXdDb2x1bW5JbmRleDtcbiAgICAgIHN1Y2Nlc3NmdWxsRG9uZSAgICAgICAgICAgICAgICAgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2Vzc2Z1bGxEb25lO1xuICB9XG5cblxuICAvLyBnZXR0ZXIgOiBlZGl0UGFuZWxNb2RlbC5saW5lSW5kZXhcbiAgZ2V0RWRpdFBhbmVsTW9kZWxMaW5lSW5kZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdFBhbmVsTW9kZWwubGluZUluZGV4O1xuICB9XG5cblxuICAvLyBzZXR0ZXIgOiBlZGl0UGFuZWxNb2RlbC5saW5lSW5kZXhcbiAgc2V0RWRpdFBhbmVsTW9kZWxMaW5lSW5kZXgobmV3TGluZUluZGV4KSB7XG4gICAgbGV0IHN1Y2Nlc3NmdWxsRG9uZSAgPSBmYWxzZTtcbiAgICBpZiAodHlwZW9mIG5ld0xpbmVJbmRleCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuZWRpdFBhbmVsTW9kZWwubGluZUluZGV4ID0gbmV3TGluZUluZGV4O1xuICAgICAgc3VjY2Vzc2Z1bGxEb25lID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1Y2Nlc3NmdWxsRG9uZTtcbiAgfVxuXG4gIC8vIGdldHRlciA6IGVkaXRQYW5lbE1vZGVsLmNvbnRyb2xcbiAgZ2V0RWRpdFBhbmVsTW9kZWxDb250cm9sKCl7XG4gICAgcmV0dXJuIHRoaXMuZWRpdFBhbmVsTW9kZWwuY29udHJvbDtcbiAgfVxuXG4gIC8vIGdldHRlciA6IGVkaXRQYW5lbE1vZGVsLnRvZ2dsZVxuICBnZXRFZGl0UGFuZWxNb2RlbFRvZ2dsZSgpe1xuICAgIHJldHVybiB0aGlzLmVkaXRQYW5lbE1vZGVsLnRvZ2dsZTtcbiAgfVxuXG4gIC8vIHNldHRlciA6IGVkaXRQYW5lbE1vZGVsLnRvZ2dsZVxuICBzZXRFZGl0UGFuZWxNb2RlbFRvZ2dsZShuZXdUb2dnbGVWYWx1ZSl7XG4gICAgbGV0IHN1Y2Nlc3NmdWxsRG9uZSAgPSBmYWxzZTtcbiAgICBpZiAodHlwZW9mIG5ld1RvZ2dsZVZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5lZGl0UGFuZWxNb2RlbC50b2dnbGUgID0gbmV3VG9nZ2xlVmFsdWU7XG4gICAgICBzdWNjZXNzZnVsbERvbmUgICAgICAgICAgICAgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2Vzc2Z1bGxEb25lO1xuICB9XG5cbiAgcmVzZXRBbGxUZW1wb3J5TW9kZWxzKCl7XG4gICAgdGhpcy5iYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24gXHQ9IGFuZ3VsYXIuY29weShJTklUX09QVElPTl9NT0RFTCk7XG4gICAgdGhpcy5uZXdPcHRpb25CYXNpY1NlbGVjdCBcdFx0XHQ9IGFuZ3VsYXIuY29weSh7IHNhaXNpZTogJycgfSk7XG5cbiAgICB0aGlzLmdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uID0gYW5ndWxhci5jb3B5KElOSVRfT1BUSU9OX01PREVMKTtcbiAgICB0aGlzLm5ld09wdGlvbkdyb3VwZWRTZWxlY3QgXHRcdD0gYW5ndWxhci5jb3B5KHsgc2Fpc2llOiAnJyB9KTtcbiAgICB0aGlzLkdyb3VwZWRTZWxlY3RHcm91cHMgXHRcdFx0XHQ9IGFuZ3VsYXIuY29weSh7IGxpc3Q6W10gfSk7XG4gICAgdGhpcy5uZXdHcm91cEdyb3VwZWRTZWxlY3QgXHRcdFx0PSBhbmd1bGFyLmNvcHkoeyBzYWlzaWU6ICcnIH0pO1xuICAgIHRoaXMuZ3JvdXBTZWxlY3RHcm91cENsaWNrIFx0XHRcdD0gYW5ndWxhci5jb3B5KHsgc2hvd0xpc3QgOiBmYWxzZSB9KTtcblxuICAgIHRoaXMucmFkaW9Sb3dDb2xsZWN0aW9uIFx0XHRcdFx0PSBhbmd1bGFyLmNvcHkoSU5JVF9PUFRJT05fTU9ERUwpO1xuICAgIHRoaXMubmV3T3B0aW9uUmFkaW8gXHRcdFx0XHRcdFx0PSBhbmd1bGFyLmNvcHkoeyBzYWlzaWU6ICcnIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cblx0LyoqXG5cdCAqIGJpbmRTcGVjaWFsQ3RybFRlbXBvcnlNb2RlbHNUb1Byb3h5TW9kZWw6IG5lZWRlZCB3aGVuIHZhbGlkYXRpbmcgYWZ0ZXIgZWRpdGluZyBhIGNvbnRyb2xcblx0ICogdGVtcG9yeSBtb2RlbHMgYXBwbGllZCB0byBwcm94eU1vZGVsIGlmIGNvbnRyb2wgaXMgb25lIG9mIHRoZXNlXG5cdCAqXG5cdCAqIGV4YW1wbGUgOiBpZiBzZWxlY3RlZCBjb250cm9sIGlzIGEgYmFzaWMgc2VsZWN0IG9wdGlvbnNcblx0ICogLT4gc28gaXRzIHRlbXBvcnkgbW9kZWxzIGFyZSBib3VuZCB0byBwcm94eU1vZGVsXG5cdCAqL1xuXHRiaW5kU3BlY2lhbEN0cmxUZW1wb3J5TW9kZWxzVG9Qcm94eU1vZGVsKCkge1xuXHRcdGlmICh0aGlzLnByb3h5TW9kZWwuc2VsZWN0ZWRDb250cm9sID09PSAnQmFzaWNTZWxlY3QnKSB7XG4gICAgICB0aGlzLmJpbmRCYXNpY1NlbGVjdFRvUHJveHlNb2RlbCh0aGlzLmJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbik7XG4gICAgfVxuXHRcdGlmICh0aGlzLnByb3h5TW9kZWwuc2VsZWN0ZWRDb250cm9sID09PSAnR3JvdXBlZFNlbGVjdCcpIHtcbiAgICAgIHRoaXMuYmluZEdyb3VwZWRTZWxlY3RUb1Byb3h5TW9kZWwodGhpcy5ncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbik7XG4gICAgfVxuXHRcdGlmICh0aGlzLnByb3h5TW9kZWwuc2VsZWN0ZWRDb250cm9sID09PSAnUmFkaW8nKSB7XG4gICAgICB0aGlzLmJpbmRSYWRpb1RvUHJveHlNb2RlbCh0aGlzLnJhZGlvUm93Q29sbGVjdGlvbik7XG4gICAgfVxuXHR9XG5cbiAgLy8gYmFzaWMgc2VsZWN0XG4gIGJpbmRCYXNpY1NlbGVjdEZyb21Qcm94eU1vZGVsKGJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbil7XG4gICAgaWYgKHRoaXMucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmZvcm1seU9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gdGhpcy5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9ucy5sZW5ndGgtMTsgaSsrKXtcbiAgICAgICAgbGV0IG5ld09wdGlvbiA9IHtcbiAgICAgICAgICAnb3B0aW9uJyBcdDogdGhpcy5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9uc1tpXS5uYW1lLFxuICAgICAgICAgICdvcmRlcicgXHQ6IGksXG4gICAgICAgICAgJ2dyb3VwJyBcdDogJydcbiAgICAgICAgfTtcbiAgICAgICAgYmFzaWNTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MucHVzaChuZXdPcHRpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGJpbmRCYXNpY1NlbGVjdFRvUHJveHlNb2RlbChiYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24pe1xuICAgIGxldCByZXNldE55QVNlbGVjdE9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlPcHRpb25zID0gcmVzZXROeUFTZWxlY3RPcHRpb25zO1xuICAgIGlmIChiYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24ucm93cy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBiYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24ucm93cy5sZW5ndGggLSAxOyBpKyspe1xuICAgICAgICBsZXQgbmV3T3B0aW9uID0ge1xuICAgICAgICAgICduYW1lJyA6IGJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbi5yb3dzW2ldLm9wdGlvbixcbiAgICAgICAgICAndmFsdWUnOiBpLFxuICAgICAgICAgICdncm91cCc6ICcnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmZvcm1seU9wdGlvbnMucHVzaChuZXdPcHRpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vKiBncm91cGVkIHNlbGVjdFxuICBiaW5kR3JvdXBlZFNlbGVjdEZyb21Qcm94eU1vZGVsKGdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uLCBHcm91cGVkU2VsZWN0R3JvdXBzKXtcbiAgICBpZiAodGhpcy5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSB0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlPcHRpb25zLmxlbmd0aC0xOyBpKyspe1xuICAgICAgICBsZXQgbmV3T3B0aW9uID0ge1xuICAgICAgICAgICdvcHRpb24nIFx0OiB0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlPcHRpb25zW2ldLm5hbWUsXG4gICAgICAgICAgJ29yZGVyJ1x0XHQ6IGksXG4gICAgICAgICAgJ2dyb3VwJ1x0XHQ6IHRoaXMucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmZvcm1seU9wdGlvbnNbaV0uZ3JvdXBcbiAgICAgICAgfTtcbiAgICAgICAgZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24ucm93cy5wdXNoKG5ld09wdGlvbik7XG4gICAgICAgfVxuICAgICAgIC8vZ3JvdXBsaXN0IDogdGh4IHRvIGxvZGFzaCBpdCBpcyBlYXN5XG4gICAgICAgbGV0IGZpbHRlcmVkZ3JvdXAgPSBfLnVuaXEoXy5wbHVjayhncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbi5yb3dzLCAnZ3JvdXAnKSk7XG4gICAgICAgYW5ndWxhci5jb3B5KGZpbHRlcmVkZ3JvdXAsIEdyb3VwZWRTZWxlY3RHcm91cHMubGlzdCk7XG4gICAgfVxuICB9XG5cblxuICBiaW5kR3JvdXBlZFNlbGVjdFRvUHJveHlNb2RlbChncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbil7XG4gICAgdGhpcy5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoIC0gMTsgaSsrKXtcbiAgICAgIGxldCBuZXdPcHRpb24gPSB7XG4gICAgICAgICduYW1lJyBcdDogZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24ucm93c1tpXS5vcHRpb24sXG4gICAgICAgICd2YWx1ZSdcdDogaSxcbiAgICAgICAgJ2dyb3VwJ1x0OiBncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbi5yb3dzW2ldLmdyb3VwXG4gICAgICB9O1xuICAgICAgdGhpcy5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9ucy5wdXNoKG5ld09wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLy8gcmFkaW9cblx0YmluZFJhZGlvRnJvbVByb3h5TW9kZWwocmFkaW9Sb3dDb2xsZWN0aW9uKXtcbiAgICBpZiAodGhpcy5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSB0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlPcHRpb25zLmxlbmd0aC0xOyBpKyspe1xuICAgICAgICAgIGxldCBuZXdPcHRpb24gPSB7XG4gICAgICAgICAgICAnb3B0aW9uJ1x0OiB0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlPcHRpb25zW2ldLm5hbWUsXG4gICAgICAgICAgICAnb3JkZXInXHRcdDogaSxcbiAgICAgICAgICAgICdncm91cCdcdFx0OiAnJ1xuICAgICAgICAgIH07XG4gICAgICAgICAgcmFkaW9Sb3dDb2xsZWN0aW9uLnJvd3MucHVzaChuZXdPcHRpb24pO1xuICAgICAgfVxuICAgIH1cblx0fVxuXG4gIGJpbmRSYWRpb1RvUHJveHlNb2RlbChyYWRpb1Jvd0NvbGxlY3Rpb24pe1xuICAgIGxldCByZXNldHByb3h5TW9kZWxPcHRpb25zID0gW107XG4gICAgdGhpcy5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9ucyA9IHJlc2V0cHJveHlNb2RlbE9wdGlvbnM7XG4gICAgaWYgKHJhZGlvUm93Q29sbGVjdGlvbi5yb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHJhZGlvUm93Q29sbGVjdGlvbi5yb3dzLmxlbmd0aCAtIDE7IGkrKyl7XG4gICAgICAgIGxldCBuZXdPcHRpb24gPSB7XG4gICAgICAgICAgJ25hbWUnXHRcdDogcmFkaW9Sb3dDb2xsZWN0aW9uLnJvd3NbaV0ub3B0aW9uLFxuICAgICAgICAgICd2YWx1ZSdcdFx0OiBpLFxuICAgICAgICAgICdncm91cCdcdFx0OiAnJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlPcHRpb25zLnB1c2gobmV3T3B0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG5cblxuXG59XG5cbmNvbnRyb2xsZXJNb2RhbFByb3h5LiRpbmplY3QgPSBbXG4gICdFYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHMnXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBjb250cm9sbGVyTW9kYWxQcm94eTtcblxuZXhwb3J0IHtcbiAgQ09OVFJPTExFUl9NT0RBTF9QUk9YWVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9sZWZ0UGFuZWwvZWRhRHJhZ0Ryb3BXYXkubGVmdFBhbmVsLmNvbnRyb2xsZXJNb2RhbFByb3h5LnNlcnZpY2UuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 23 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE = undefined;\n\nvar _edaDragDropWayLeftpanelValidEditFooterTemplate = __webpack_require__(24);\n\nvar _edaDragDropWayLeftpanelValidEditFooterTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelValidEditFooterTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE = 'leftPanelValidEditFooter';\n\nfunction leftPanelValidEditFooter() {\n var directive = {\n restrict: 'E',\n template: _edaDragDropWayLeftpanelValidEditFooterTemplate2.default\n };\n return directive;\n}\n\nleftPanelValidEditFooter.$inject = [];\n\nexports.default = leftPanelValidEditFooter;\nexports.LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE = LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL3ZhbGlkRWRpdEZvb3Rlci9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwudmFsaWRFZGl0Rm9vdGVyLmRpcmVjdGl2ZS5qcz83MTg1Il0sIm5hbWVzIjpbIkxFRlRfUEFORUxfVkFMSURfRURJVF9GT09URVJfRElSRUNUSVZFIiwibGVmdFBhbmVsVmFsaWRFZGl0Rm9vdGVyIiwiZGlyZWN0aXZlIiwicmVzdHJpY3QiLCJ0ZW1wbGF0ZSIsIiRpbmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7Ozs7O0FBRUEsSUFBTUEseUNBQXlDLDBCQUEvQzs7QUFFQSxTQUFTQyx3QkFBVCxHQUFvQztBQUNsQyxNQUFJQyxZQUFZO0FBQ2RDLGNBQVcsR0FERztBQUVkQztBQUZjLEdBQWhCO0FBSUEsU0FBT0YsU0FBUDtBQUNEOztBQUVERCx5QkFBeUJJLE9BQXpCLEdBQW1DLEVBQW5DOztrQkFFZUosd0I7UUFHYkQsc0MsR0FBQUEsc0MiLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbGVmdFBhbmVsVmFsaWRFZGl0Rm9vdGVyVGVtcGxhdGUgZnJvbSAnLi9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwudmFsaWRFZGl0Rm9vdGVyLnRlbXBsYXRlLmh0bWwnO1xuXG5jb25zdCBMRUZUX1BBTkVMX1ZBTElEX0VESVRfRk9PVEVSX0RJUkVDVElWRSA9ICdsZWZ0UGFuZWxWYWxpZEVkaXRGb290ZXInO1xuXG5mdW5jdGlvbiBsZWZ0UGFuZWxWYWxpZEVkaXRGb290ZXIoKSB7XG4gIGxldCBkaXJlY3RpdmUgPSB7XG4gICAgcmVzdHJpY3QgOiAnRScsXG4gICAgdGVtcGxhdGUgOiBsZWZ0UGFuZWxWYWxpZEVkaXRGb290ZXJUZW1wbGF0ZVxuICB9O1xuICByZXR1cm4gZGlyZWN0aXZlO1xufVxuXG5sZWZ0UGFuZWxWYWxpZEVkaXRGb290ZXIuJGluamVjdCA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBsZWZ0UGFuZWxWYWxpZEVkaXRGb290ZXI7XG5cbmV4cG9ydCB7XG4gIExFRlRfUEFORUxfVkFMSURfRURJVF9GT09URVJfRElSRUNUSVZFXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2xlZnRQYW5lbC92YWxpZEVkaXRGb290ZXIvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLnZhbGlkRWRpdEZvb3Rlci5kaXJlY3RpdmUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 24 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL3ZhbGlkRWRpdEZvb3Rlci9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwudmFsaWRFZGl0Rm9vdGVyLnRlbXBsYXRlLmh0bWw/ODMwNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrTUFBa00sbUlBQW1JLG1DQUFtQyxxREFBcUQiLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwibW9kYWwtZm9vdGVyXFxcIj5cXG4gIDxidXR0b25cXG4gICAgY2xhc3M9XFxcImJ0biBidG4tZGFuZ2VyIHB1bGwtbGVmdFxcXCJcXG4gICAgbmctY2xpY2s9XFxcImxlZnRQYW5lbEN0cmwucmVzZXRDb250cm9sKClcXFwiPlxcbiAgICA8aSBjbGFzcz1cXFwiZmEgZmEtcmVmcmVzaFxcXCI+PC9pPlxcbiAgICAmbmJzcDtcXG4gICAgUmVzZXRcXG4gIDwvYnV0dG9uPlxcbiAgPGJ1dHRvblxcbiAgICBjbGFzcz1cXFwiYnRuIGJ0bi1zdWNjZXNzIHB1bGwtcmlnaHRcXFwiXFxuICAgIG5nLWNsaWNrPVxcXCJsZWZ0UGFuZWxDdHJsLnVwZGF0ZVNwZWNpYWxDb250cm9sKCk7IGxlZnRQYW5lbEN0cmwuc2F2ZUZyb21FZGl0UGFuZWwoKTtcXFwiPlxcbiAgICA8aSBjbGFzcz1cXFwiZmEgZmEtZmxvcHB5LW9cXFwiPjwvaT5cXG4gICAgJm5ic3A7XFxuICAgIFNhdmVcXG4gIDwvYnV0dG9uPlxcbjwvZGl2PlxcblwiXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL3ZhbGlkRWRpdEZvb3Rlci9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwudmFsaWRFZGl0Rm9vdGVyLnRlbXBsYXRlLmh0bWxcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 25 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE = undefined;\n\nvar _edaDragDropWayLeftpanelTextInputControlTemplate = __webpack_require__(26);\n\nvar _edaDragDropWayLeftpanelTextInputControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelTextInputControlTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE = 'leftPanelTextInputControl';\n\nfunction leftPanelTextInputControl() {\n var directive = {\n restrict: 'E',\n template: _edaDragDropWayLeftpanelTextInputControlTemplate2.default\n };\n return directive;\n}\n\nleftPanelTextInputControl.$inject = [];\n\nexports.default = leftPanelTextInputControl;\nexports.LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE = LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1RleHRJbnB1dENvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLnRleHRJbnB1dENvbnRyb2wuZGlyZWN0aXZlLmpzP2JmZWYiXSwibmFtZXMiOlsiTEVGVF9QQU5FTF9URVhUX0lOUFVUX0NPTlRST0xfRElSRUNUSVZFIiwibGVmdFBhbmVsVGV4dElucHV0Q29udHJvbCIsImRpcmVjdGl2ZSIsInJlc3RyaWN0IiwidGVtcGxhdGUiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLDBDQUEwQywyQkFBaEQ7O0FBRUEsU0FBU0MseUJBQVQsR0FBcUM7QUFDbkMsTUFBSUMsWUFBWTtBQUNkQyxjQUFXLEdBREc7QUFFZEM7QUFGYyxHQUFoQjtBQUlBLFNBQU9GLFNBQVA7QUFDRDs7QUFFREQsMEJBQTBCSSxPQUExQixHQUFvQyxFQUFwQzs7a0JBRWVKLHlCO1FBR2JELHVDLEdBQUFBLHVDIiwiZmlsZSI6IjI1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgbGVmdFBhbmVsVGV4dElucHV0Q29udHJvbFRlbXBsYXRlIGZyb20gJy4vZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLnRleHRJbnB1dENvbnRyb2wudGVtcGxhdGUuaHRtbCc7XG5cbmNvbnN0IExFRlRfUEFORUxfVEVYVF9JTlBVVF9DT05UUk9MX0RJUkVDVElWRSA9ICdsZWZ0UGFuZWxUZXh0SW5wdXRDb250cm9sJztcblxuZnVuY3Rpb24gbGVmdFBhbmVsVGV4dElucHV0Q29udHJvbCgpIHtcbiAgbGV0IGRpcmVjdGl2ZSA9IHtcbiAgICByZXN0cmljdCA6ICdFJyxcbiAgICB0ZW1wbGF0ZSA6IGxlZnRQYW5lbFRleHRJbnB1dENvbnRyb2xUZW1wbGF0ZVxuICB9O1xuICByZXR1cm4gZGlyZWN0aXZlO1xufVxuXG5sZWZ0UGFuZWxUZXh0SW5wdXRDb250cm9sLiRpbmplY3QgPSBbXTtcblxuZXhwb3J0IGRlZmF1bHQgbGVmdFBhbmVsVGV4dElucHV0Q29udHJvbDtcblxuZXhwb3J0IHtcbiAgTEVGVF9QQU5FTF9URVhUX0lOUFVUX0NPTlRST0xfRElSRUNUSVZFXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2xlZnRQYW5lbC9UZXh0SW5wdXRDb250cm9sL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC50ZXh0SW5wdXRDb250cm9sLmRpcmVjdGl2ZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 26 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1RleHRJbnB1dENvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLnRleHRJbnB1dENvbnRyb2wudGVtcGxhdGUuaHRtbD85Nzg4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1QQUFtUCxrdkRBQWt2RCIsImZpbGUiOiIyNi5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG4gIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8aDUgY2xhc3M9XFxcImdyZXlUZXh0XFxcIj5cXG4gICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLXBlbmNpbC1zcXVhcmUtb1xcXCI+PC9pPlxcbiAgICAgICAgICAmbmJzcDtcXG4gICAgICAgICAgRWRpdCBwcm9wZXJ0aWVzIDpcXG4gICAgICAgIDwvaDU+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dExhYmVsVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFxcXCI+XFxuICAgICAgICAgIExhYmVsIHRleHQgOlxcbiAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgIG5nLW1vZGVsPVxcXCJsZWZ0UGFuZWxDdHJsLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlMYWJlbFxcXCJcXG4gICAgICAgICAgICBpZD1cXFwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcXFwiXFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkFkZCAvIGVkaXQgY29udHJvbCBsYWJlbCBoZXJlXFxcIj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwiaW5wdXRUZXh0cGxhY2Vob2xkZXJVcGRhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICBwbGFjZWhvbGRlciA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgIG5nLW1vZGVsPVxcXCJsZWZ0UGFuZWxDdHJsLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlQbGFjZWhvbGRlclxcXCJcXG4gICAgICAgICAgICBpZD1cXFwiaW5wdXRUZXh0cGxhY2Vob2xkZXJVcGRhdGVcXFwiXFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkFkZCAvIGVkaXQgcGxhY2Vob2xkZXIgdGV4dCBoZXJlXFxcIj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICA8ZGl2IGNsYXNzPVxcXCJcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwiaW5wdXRUZXh0UmVxdWlyZWRVcGRhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJjb2wtbWQtNCBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICBSZXF1aXJlZCA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLThcXFwiPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjaGVja2JveENzc0NvcnJlY3Rpb25cXFwiPiZuYnNwOzwvZGl2PlxcbiAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICBuZy1tb2RlbD1cXFwibGVmdFBhbmVsQ3RybC5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5UmVxdWlyZWRcXFwiXFxuICAgICAgICAgICAgaWQ9XFxcImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXFxcIj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICBEZXNjcmlwdGlvbiA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCIgXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICBuZy1tb2RlbD1cXFwibGVmdFBhbmVsQ3RybC5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb25cXFwiXFxuICAgICAgICAgICAgaWQ9XFxcImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJBZGQgLyBlZGl0IGRlc2NyaXB0aW9uIGhlcmVcXFwiPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbiAgPGxlZnQtcGFuZWwtdmFsaWQtZWRpdC1mb290ZXIgLz5cXG48L2Rpdj5cXG5cIlxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2xlZnRQYW5lbC9UZXh0SW5wdXRDb250cm9sL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC50ZXh0SW5wdXRDb250cm9sLnRlbXBsYXRlLmh0bWxcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 27 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE = undefined;\n\nvar _edaDragDropWayLeftpanelTextareaControlTemplate = __webpack_require__(28);\n\nvar _edaDragDropWayLeftpanelTextareaControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelTextareaControlTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE = 'leftPanelTextareaControl';\n\nfunction leftPanelTextareaControl() {\n var directive = {\n restrict: 'E',\n template: _edaDragDropWayLeftpanelTextareaControlTemplate2.default\n };\n return directive;\n}\n\nleftPanelTextareaControl.$inject = [];\n\nexports.default = leftPanelTextareaControl;\nexports.LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE = LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1RleHRBcmVhQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwudGV4dGFyZWFDb250cm9sLmRpcmVjdGl2ZS5qcz8yY2IzIl0sIm5hbWVzIjpbIkxFRlRfUEFORUxfVEVYVEFSRUFfQ09OVFJPTF9ESVJFQ1RJVkUiLCJsZWZ0UGFuZWxUZXh0YXJlYUNvbnRyb2wiLCJkaXJlY3RpdmUiLCJyZXN0cmljdCIsInRlbXBsYXRlIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7Ozs7QUFFQSxJQUFNQSx3Q0FBd0MsMEJBQTlDOztBQUVBLFNBQVNDLHdCQUFULEdBQW9DO0FBQ2xDLE1BQUlDLFlBQVk7QUFDZEMsY0FBVyxHQURHO0FBRWRDO0FBRmMsR0FBaEI7QUFJQSxTQUFPRixTQUFQO0FBQ0Q7O0FBRURELHlCQUF5QkksT0FBekIsR0FBbUMsRUFBbkM7O2tCQUVlSix3QjtRQUdiRCxxQyxHQUFBQSxxQyIsImZpbGUiOiIyNy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IGxlZnRQYW5lbFRleHRhcmVhQ29udHJvbFRlbXBsYXRlIGZyb20gJy4vZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLnRleHRhcmVhQ29udHJvbC50ZW1wbGF0ZS5odG1sJztcblxuY29uc3QgTEVGVF9QQU5FTF9URVhUQVJFQV9DT05UUk9MX0RJUkVDVElWRSA9ICdsZWZ0UGFuZWxUZXh0YXJlYUNvbnRyb2wnO1xuXG5mdW5jdGlvbiBsZWZ0UGFuZWxUZXh0YXJlYUNvbnRyb2woKSB7XG4gIGxldCBkaXJlY3RpdmUgPSB7XG4gICAgcmVzdHJpY3QgOiAnRScsXG4gICAgdGVtcGxhdGUgOiBsZWZ0UGFuZWxUZXh0YXJlYUNvbnRyb2xUZW1wbGF0ZVxuICB9O1xuICByZXR1cm4gZGlyZWN0aXZlO1xufVxuXG5sZWZ0UGFuZWxUZXh0YXJlYUNvbnRyb2wuJGluamVjdCA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBsZWZ0UGFuZWxUZXh0YXJlYUNvbnRyb2w7XG5cbmV4cG9ydCB7XG4gIExFRlRfUEFORUxfVEVYVEFSRUFfQ09OVFJPTF9ESVJFQ1RJVkVcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1RleHRBcmVhQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwudGV4dGFyZWFDb250cm9sLmRpcmVjdGl2ZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 28 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1RleHRBcmVhQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwudGV4dGFyZWFDb250cm9sLnRlbXBsYXRlLmh0bWw/OWU4MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtUEFBbVAsMmxDQUEybEMiLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIEVkaXQgcHJvcGVydGllcyA6XFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgZm9yPVxcXCJpbnB1dFRleHRMYWJlbFVwZGF0ZVxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcIiBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICBMYWJlbCB0ZXh0IDpcXG4gICAgICAgIDwvbGFiZWw+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJcXFwiPlxcbiAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgbmctbW9kZWw9XFxcImxlZnRQYW5lbEN0cmwucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsXFxcIiBcXG4gICAgICAgICAgICBpZD1cXFwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcXFwiXFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkFkZCAvIGVkaXQgY29udHJvbCBsYWJlbCBoZXJlXFxcIj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICA8ZGl2IGNsYXNzPVxcXCJcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwiUmVxdWlyZWRVcGRhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJjb2wtbWQtNCBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICBSZXF1aXJlZCA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLThcXFwiPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjaGVja2JveENzc0NvcnJlY3Rpb25cXFwiPlxcbiAgICAgICAgICAgICZuYnNwO1xcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgbmctbW9kZWw9XFxcImxlZnRQYW5lbEN0cmwucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXFxcIlxcbiAgICAgICAgICAgIGlkPVxcXCJSZXF1aXJlZFVwZGF0ZVxcXCI+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcIkRlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAgRGVzY3JpcHRpb24gOlxcbiAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcIlxcXCI+XFxuICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICBuZy1tb2RlbD1cXFwibGVmdFBhbmVsQ3RybC5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb25cXFwiXFxuICAgICAgICAgICAgaWQ9XFxcIkRlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJBZGQgLyBlZGl0IGRlc2NyaXB0aW9uIGhlcmVcXFwiPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbiAgPGxlZnQtcGFuZWwtdmFsaWQtZWRpdC1mb290ZXIgLz5cXG48L2Rpdj5cXG5cIlxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2xlZnRQYW5lbC9UZXh0QXJlYUNvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLnRleHRhcmVhQ29udHJvbC50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSAyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 29 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE = undefined;\n\nvar _edaDragDropWayLeftpanelSubtitleControlTemplate = __webpack_require__(30);\n\nvar _edaDragDropWayLeftpanelSubtitleControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelSubtitleControlTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE = 'leftPanelSubtitleControl';\n\nfunction leftPanelSubtitleControl() {\n var directive = {\n restrict: 'E',\n template: _edaDragDropWayLeftpanelSubtitleControlTemplate2.default\n };\n return directive;\n}\n\nleftPanelSubtitleControl.$inject = [];\n\nexports.default = leftPanelSubtitleControl;\nexports.LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE = LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1N1YlRpdGxlQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuc3VidGl0bGVDb250cm9sLmRpcmVjdGl2ZS5qcz9hYjE1Il0sIm5hbWVzIjpbIkxFRlRfUEFORUxfU1VCVElUTEVfQ09OVFJPTF9ESVJFQ1RJVkUiLCJsZWZ0UGFuZWxTdWJ0aXRsZUNvbnRyb2wiLCJkaXJlY3RpdmUiLCJyZXN0cmljdCIsInRlbXBsYXRlIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7Ozs7QUFFQSxJQUFNQSx3Q0FBd0MsMEJBQTlDOztBQUVBLFNBQVNDLHdCQUFULEdBQW9DO0FBQ2xDLE1BQUlDLFlBQVk7QUFDZEMsY0FBVyxHQURHO0FBRWRDO0FBRmMsR0FBaEI7QUFJQSxTQUFPRixTQUFQO0FBQ0Q7O0FBRURELHlCQUF5QkksT0FBekIsR0FBbUMsRUFBbkM7O2tCQUVlSix3QjtRQUdiRCxxQyxHQUFBQSxxQyIsImZpbGUiOiIyOS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsZWZ0UGFuZWxTdWJ0aXRsZUNvbnRyb2xUZW1wbGF0ZSBmcm9tICcuL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC5zdWJ0aXRsZUNvbnRyb2wudGVtcGxhdGUuaHRtbCc7XG5cbmNvbnN0IExFRlRfUEFORUxfU1VCVElUTEVfQ09OVFJPTF9ESVJFQ1RJVkUgPSAnbGVmdFBhbmVsU3VidGl0bGVDb250cm9sJztcblxuZnVuY3Rpb24gbGVmdFBhbmVsU3VidGl0bGVDb250cm9sKCkge1xuICBsZXQgZGlyZWN0aXZlID0ge1xuICAgIHJlc3RyaWN0IDogJ0UnLFxuICAgIHRlbXBsYXRlIDogbGVmdFBhbmVsU3VidGl0bGVDb250cm9sVGVtcGxhdGVcbiAgfTtcbiAgcmV0dXJuIGRpcmVjdGl2ZTtcbn1cblxubGVmdFBhbmVsU3VidGl0bGVDb250cm9sLiRpbmplY3QgPSBbXTtcblxuZXhwb3J0IGRlZmF1bHQgbGVmdFBhbmVsU3VidGl0bGVDb250cm9sO1xuXG5leHBvcnQge1xuICBMRUZUX1BBTkVMX1NVQlRJVExFX0NPTlRST0xfRElSRUNUSVZFXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2xlZnRQYW5lbC9TdWJUaXRsZUNvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLnN1YnRpdGxlQ29udHJvbC5kaXJlY3RpdmUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 30 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1N1YlRpdGxlQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuc3VidGl0bGVDb250cm9sLnRlbXBsYXRlLmh0bWw/ZTBlMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtUEFBbVAiLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIEVkaXQgcHJvcGVydGllcyA6XFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICAgIFN1YnRpdGxlIHRleHQgOlxcbiAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJcXFwiPlxcbiAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiIFxcbiAgICAgICAgICAgICAgbmctbW9kZWw9XFxcImxlZnRQYW5lbEN0cmwucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9uXFxcIlxcbiAgICAgICAgICAgICAgaWQ9XFxcImlucHV0U3VidGl0bGVUZXh0VXBkYXRlXFxcIlxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkFkZCAvIGVkaXQgc3VidGl0bGUgdGV4dCBoZXJlXFxcIiA+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuICA8bGVmdC1wYW5lbC12YWxpZC1lZGl0LWZvb3RlciAvPlxcbjwvZGl2PlxcblwiXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1N1YlRpdGxlQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuc3VidGl0bGVDb250cm9sLnRlbXBsYXRlLmh0bWxcbi8vIG1vZHVsZSBpZCA9IDMwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 31 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE = undefined;\n\nvar _edaDragDropWayLeftpanelRichTextEditorControlTemplate = __webpack_require__(32);\n\nvar _edaDragDropWayLeftpanelRichTextEditorControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelRichTextEditorControlTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE = 'leftPanelRichTextEditorControl';\n\nfunction leftPanelRichTextEditorControl() {\n var directive = {\n restrict: 'E',\n template: _edaDragDropWayLeftpanelRichTextEditorControlTemplate2.default\n };\n return directive;\n}\n\nleftPanelRichTextEditorControl.$inject = [];\n\nexports.default = leftPanelRichTextEditorControl;\nexports.LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE = LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1JpY2hUZXh0RWRpdG9yQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwucmljaFRleHRFZGl0b3JDb250cm9sLmRpcmVjdGl2ZS5qcz9jNWQwIl0sIm5hbWVzIjpbIkxFRlRfUEFORUxfUklDSF9URVhUX0VESVRPUl9DT05UUk9MX0RJUkVDVElWRSIsImxlZnRQYW5lbFJpY2hUZXh0RWRpdG9yQ29udHJvbCIsImRpcmVjdGl2ZSIsInJlc3RyaWN0IiwidGVtcGxhdGUiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLGdEQUFnRCxnQ0FBdEQ7O0FBRUEsU0FBU0MsOEJBQVQsR0FBMEM7QUFDeEMsTUFBSUMsWUFBWTtBQUNkQyxjQUFXLEdBREc7QUFFZEM7QUFGYyxHQUFoQjtBQUlBLFNBQU9GLFNBQVA7QUFDRDs7QUFFREQsK0JBQStCSSxPQUEvQixHQUF5QyxFQUF6Qzs7a0JBRWVKLDhCO1FBR2JELDZDLEdBQUFBLDZDIiwiZmlsZSI6IjMxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgbGVmdFBhbmVsUmljaFRleHRFZGl0b3JDb250cm9sVGVtcGxhdGUgZnJvbSAnLi9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwucmljaFRleHRFZGl0b3JDb250cm9sLnRlbXBsYXRlLmh0bWwnO1xuXG5jb25zdCBMRUZUX1BBTkVMX1JJQ0hfVEVYVF9FRElUT1JfQ09OVFJPTF9ESVJFQ1RJVkUgPSAnbGVmdFBhbmVsUmljaFRleHRFZGl0b3JDb250cm9sJztcblxuZnVuY3Rpb24gbGVmdFBhbmVsUmljaFRleHRFZGl0b3JDb250cm9sKCkge1xuICBsZXQgZGlyZWN0aXZlID0ge1xuICAgIHJlc3RyaWN0IDogJ0UnLFxuICAgIHRlbXBsYXRlIDogbGVmdFBhbmVsUmljaFRleHRFZGl0b3JDb250cm9sVGVtcGxhdGVcbiAgfTtcbiAgcmV0dXJuIGRpcmVjdGl2ZTtcbn1cblxubGVmdFBhbmVsUmljaFRleHRFZGl0b3JDb250cm9sLiRpbmplY3QgPSBbXTtcblxuZXhwb3J0IGRlZmF1bHQgbGVmdFBhbmVsUmljaFRleHRFZGl0b3JDb250cm9sO1xuXG5leHBvcnQge1xuICBMRUZUX1BBTkVMX1JJQ0hfVEVYVF9FRElUT1JfQ09OVFJPTF9ESVJFQ1RJVkVcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1JpY2hUZXh0RWRpdG9yQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwucmljaFRleHRFZGl0b3JDb250cm9sLmRpcmVjdGl2ZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 32 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1JpY2hUZXh0RWRpdG9yQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwucmljaFRleHRFZGl0b3JDb250cm9sLnRlbXBsYXRlLmh0bWw/ZmVjNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtUEFBbVAiLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7IEVkaXQgcHJvcGVydGllcyA6XFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgZm9yPVxcXCJEZXNjcmlwdGlvblVwZGF0ZVxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFxcXCI+XFxuICAgICAgICAgIERlc2NyaXB0aW9uIDpcXG4gICAgICAgIDwvbGFiZWw+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJcXFwiPlxcbiAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgbmctbW9kZWw9XFxcImxlZnRQYW5lbEN0cmwucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9uXFxcIlxcbiAgICAgICAgICAgIGlkPVxcXCJEZXNjcmlwdGlvblVwZGF0ZVxcXCJcXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiQWRkIC8gZWRpdCBkZXNjcmlwdGlvbiBoZXJlXFxcIj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG4gIDxsZWZ0LXBhbmVsLXZhbGlkLWVkaXQtZm9vdGVyIC8+XFxuPC9kaXY+XFxuXCJcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9sZWZ0UGFuZWwvUmljaFRleHRFZGl0b3JDb250cm9sL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC5yaWNoVGV4dEVkaXRvckNvbnRyb2wudGVtcGxhdGUuaHRtbFxuLy8gbW9kdWxlIGlkID0gMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 33 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LEFT_PANEL_RADIO_CONTROL_DIRECTIVE = undefined;\n\nvar _edaDragDropWayLeftpanelRadioControlTemplate = __webpack_require__(34);\n\nvar _edaDragDropWayLeftpanelRadioControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelRadioControlTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_RADIO_CONTROL_DIRECTIVE = 'leftPanelRadioControl';\n\nfunction leftPanelRadioControl() {\n var directive = {\n restrict: 'E',\n template: _edaDragDropWayLeftpanelRadioControlTemplate2.default\n };\n return directive;\n}\n\nleftPanelRadioControl.$inject = [];\n\nexports.default = leftPanelRadioControl;\nexports.LEFT_PANEL_RADIO_CONTROL_DIRECTIVE = LEFT_PANEL_RADIO_CONTROL_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1JhZGlvQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwucmFkaW9Db250cm9sLmRpcmVjdGl2ZS5qcz9lMmE0Il0sIm5hbWVzIjpbIkxFRlRfUEFORUxfUkFESU9fQ09OVFJPTF9ESVJFQ1RJVkUiLCJsZWZ0UGFuZWxSYWRpb0NvbnRyb2wiLCJkaXJlY3RpdmUiLCJyZXN0cmljdCIsInRlbXBsYXRlIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7Ozs7QUFFQSxJQUFNQSxxQ0FBcUMsdUJBQTNDOztBQUVBLFNBQVNDLHFCQUFULEdBQWlDO0FBQy9CLE1BQUlDLFlBQVk7QUFDZEMsY0FBVyxHQURHO0FBRWRDO0FBRmMsR0FBaEI7QUFJQSxTQUFPRixTQUFQO0FBQ0Q7O0FBRURELHNCQUFzQkksT0FBdEIsR0FBZ0MsRUFBaEM7O2tCQUVlSixxQjtRQUdiRCxrQyxHQUFBQSxrQyIsImZpbGUiOiIzMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IGxlZnRQYW5lbFJhZGlvQ29udHJvbFRlbXBsYXRlIGZyb20gJy4vZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLnJhZGlvQ29udHJvbC50ZW1wbGF0ZS5odG1sJztcblxuY29uc3QgTEVGVF9QQU5FTF9SQURJT19DT05UUk9MX0RJUkVDVElWRSA9ICdsZWZ0UGFuZWxSYWRpb0NvbnRyb2wnO1xuXG5mdW5jdGlvbiBsZWZ0UGFuZWxSYWRpb0NvbnRyb2woKSB7XG4gIGxldCBkaXJlY3RpdmUgPSB7XG4gICAgcmVzdHJpY3QgOiAnRScsXG4gICAgdGVtcGxhdGUgOiBsZWZ0UGFuZWxSYWRpb0NvbnRyb2xUZW1wbGF0ZVxuICB9O1xuICByZXR1cm4gZGlyZWN0aXZlO1xufVxuXG5sZWZ0UGFuZWxSYWRpb0NvbnRyb2wuJGluamVjdCA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBsZWZ0UGFuZWxSYWRpb0NvbnRyb2w7XG5cbmV4cG9ydCB7XG4gIExFRlRfUEFORUxfUkFESU9fQ09OVFJPTF9ESVJFQ1RJVkVcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1JhZGlvQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwucmFkaW9Db250cm9sLmRpcmVjdGl2ZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 34 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n \\n Add new radio :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n Edit/Remove radio :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1JhZGlvQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwucmFkaW9Db250cm9sLnRlbXBsYXRlLmh0bWw/ODQzYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtUEFBbVAsMm9GQUEyb0YsUUFBUSxtRkFBbUYsaUJBQWlCLDhnRUFBOGdFIiwiZmlsZSI6IjM0LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIjxkaXYgY2xhc3M9XFxcInBhbmVsIHBhbmVsLWRlZmF1bHRcXFwiPlxcbiAgPGRpdiBjbGFzcz1cXFwicGFuZWwtYm9keVxcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIj5cXG4gICAgICAgIDxoNSBjbGFzcz1cXFwiZ3JleVRleHRcXFwiPlxcbiAgICAgICAgICA8aSBjbGFzcz1cXFwiZmEgZmEtcGVuY2lsLXNxdWFyZS1vXFxcIj48L2k+XFxuICAgICAgICAgICZuYnNwO1xcbiAgICAgICAgICBFZGl0IHByb3BlcnRpZXMgOlxcbiAgICAgICAgPC9oNT5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1sZy0xMiBjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwicmFkaW9Sb3dDb2xsZWN0aW9uXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFxcXCI+XFxuICAgICAgICAgIEFkZCBuZXcgcmFkaW8gOlxcbiAgICAgICAgPC9sYWJlbD5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICA8ZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLXNtLTkgY29sLXhzLTkgY29sLW1kLTkgY29sLWxnLTlcXFwiPlxcbiAgICAgICAgPGlucHV0XFxuICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgIGlkPVxcXCJpbnB1dEFkZE5ld1JhZGlvT3B0aW9uXFxcIlxcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiYWRkIG5ldyByYWRpb1xcXCJcXG4gICAgICAgICAgbmctbW9kZWw9XFxcImxlZnRQYW5lbEN0cmwubmV3T3B0aW9uUmFkaW8uc2Fpc2llXFxcIj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLXNtLTMgY29sLXhzLTMgY29sLW1kLTMgY29sLWxnLTNcXFwiPlxcbiAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgY2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeVxcXCJcXG4gICAgICAgICAgICBuZy1jbGljaz1cXFwibGVmdFBhbmVsQ3RybC5hZGROZXdPcHRpb25SYWRpbygpXFxcIj5cXG4gICAgICAgICAgICBhZGRcXG4gICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG4gIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcImNvbC1sZy0xMiBjb2wtbWQtMTJcXFwiPlxcbiAgICAgIDxsYWJlbFxcbiAgICAgICAgZm9yPVxcXCJyYWRpb1Jvd0NvbGxlY3Rpb25cXFwiXFxuICAgICAgICBjbGFzcz1cXFwiIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFxcXCI+XFxuICAgICAgICBFZGl0L1JlbW92ZSByYWRpbyA6XFxuICAgICAgPC9sYWJlbD5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG4gIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3MtXFxcImNvbC1sZy0xMiBjb2wtbWQtMTIgY29sLXNtLTEyIGNvbC14cy0xMlxcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb250YWluZXJcXFwiPlxcbiAgICAgICAgICA8ZGl2IG5nLXNob3c9XFxcImxlZnRQYW5lbEN0cmwucmFkaW9Sb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID09PSAwXFxcIj5cXG4gICAgICAgICAgICA8aDUgY2xhc3M9XFxcInRleHQtY2VudGVyIGdyZXlUZXh0XFxcIj5cXG4gICAgICAgICAgICAgIDxlbT5cXG4gICAgICAgICAgICAgICAgLSBubyByYWRpbyA6IGFkZCBuZXcgcmFkaW8gdmFsdWVzIC1cXG4gICAgICAgICAgICAgIDwvZW0+XFxuICAgICAgICAgICAgPC9oNT5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgIDx0YWJsZVxcbiAgICAgICAgICAgIG5nLWlmPVxcXCJsZWZ0UGFuZWxDdHJsLnJhZGlvUm93Q29sbGVjdGlvbi5yb3dzLmxlbmd0aCA+IDBcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcInRhYmxlIHRhYmxlLXN0cmlwZWRcXFwiPlxcbiAgICAgICAgICAgIDx0aGVhZD5cXG4gICAgICAgICAgICA8dHI+XFxuICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XFxcIjIwXFxcIj5cXG4gICAgICAgICAgICAgICAgb3JkZXJcXG4gICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XFxcIjU1XFxcIj5cXG4gICAgICAgICAgICAgICAgb3B0aW9uXFxuICAgICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVxcXCIyNVxcXCI+XFxuICAgICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgICAgPHRyPlxcbiAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVxcXCIyMFxcXCI+XFxuICAgICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVxcXCI1NVxcXCI+XFxuICAgICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICAgIG5nLW1vZGVsPVxcXCJyYWRpb0ZpbHRlclxcXCJcXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwic2VhcmNoIGZvciBvcHRpb25cXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImlucHV0LXNtIGZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICAgICAgICB0eXBlPVxcXCJzZWFyY2hcXFwiIC8+XFxuICAgICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVxcXCIyNVxcXCI+PC90aD5cXG4gICAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICAgIDwvdGhlYWQ+XFxuICAgICAgICAgICAgPHRib2R5PlxcbiAgICAgICAgICAgICAgPHRyIG5nLXJlcGVhdD1cXFwicmFkaW9Sb3cgaW4gbGVmdFBhbmVsQ3RybC5yYWRpb1Jvd0NvbGxlY3Rpb24ucm93cyB8IGZpbHRlcjpyYWRpb0ZpbHRlciBhcyByYWRpb1Jvd1xcXCI+XFxuICAgICAgICAgICAgICAgIDx0ZCBzdC1yYXRpbz1cXFwiMjBcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7JGluZGV4fX1cXG4gICAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgICAgPHRkIHN0LXJhdGlvPVxcXCI1NVxcXCI+XFxuICAgICAgICAgICAgICAgICAge3tyYWRpb1Jvdy5vcHRpb259fVxcbiAgICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgICA8dGQgc3QtcmF0aW89XFxcIjI1XFxcIj5cXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwdWxsLXJpZ2h0XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XFxcImxlZnRQYW5lbEN0cmwudXBUaGlzUmFkaW9Sb3coJGluZGV4KVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1hcnJvdy11cFxcXCI+PC9pPlxcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVxcXCJsZWZ0UGFuZWxDdHJsLmRvd25UaGlzUmFkaW9Sb3coJGluZGV4KVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1hcnJvdy1kb3duXFxcIj48L2k+XFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImJ0biBidG4tZGFuZ2VyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cXFwibGVmdFBhbmVsQ3RybC5yZW1vdmVSYWRpb1JvdygkaW5kZXgpXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLXRyYXNoLW9cXFwiPjwvaT5cXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgICAgPC90Ym9keT5cXG4gICAgICAgICAgPC90YWJsZT5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbiAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICBcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dExhYmVsVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCIgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAgICBMYWJlbCB0ZXh0IDpcXG4gICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgICAgbmctbW9kZWw9XFxcImxlZnRQYW5lbEN0cmwucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsXFxcIlxcbiAgICAgICAgICAgICAgaWQ9XFxcImlucHV0VGV4dExhYmVsVXBkYXRlXFxcIlxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkFkZCAvIGVkaXQgY29udHJvbCBsYWJlbCBoZXJlXFxcIj5cXG4gICAgICAgICAgPC9kaXY+XFxuICBcXHRcXHRcXHQ8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgXFx0XFx0XFx0PGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgPGxhYmVsXFxuICAgICAgICAgICAgZm9yPVxcXCJSZXF1aXJlZFVwZGF0ZVxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiY29sLW1kLTQgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAgICBSZXF1aXJlZCA6XFxuICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC04XFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjaGVja2JveENzc0NvcnJlY3Rpb25cXFwiPiZuYnNwOzwvZGl2PlxcbiAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgICBuZy1tb2RlbD1cXFwibGVmdFBhbmVsQ3RybC5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5UmVxdWlyZWRcXFwiXFxuICAgICAgICAgICAgICBpZD1cXFwiUmVxdWlyZWRVcGRhdGVcXFwiPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gIFxcdFxcdFxcdDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICBcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgICBmb3I9XFxcIkRlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICAgIERlc2NyaXB0aW9uIDpcXG4gICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgICAgbmctbW9kZWw9XFxcImxlZnRQYW5lbEN0cmwucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9uXFxcIlxcbiAgICAgICAgICAgICAgaWQ9XFxcIkRlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkFkZCAvIGVkaXQgZGVzY3JpcHRpb24gaGVyZVxcXCI+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgXFx0XFx0XFx0PC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgPC9kaXY+XFxuICA8L2Rpdj5cXG4gIDxsZWZ0LXBhbmVsLXZhbGlkLWVkaXQtZm9vdGVyIC8+XFxuPC9kaXY+XFxuXCJcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9sZWZ0UGFuZWwvUmFkaW9Db250cm9sL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC5yYWRpb0NvbnRyb2wudGVtcGxhdGUuaHRtbFxuLy8gbW9kdWxlIGlkID0gMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 35 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE = undefined;\n\nvar _edaDragDropWayLeftpanelPasswordControlTemplate = __webpack_require__(36);\n\nvar _edaDragDropWayLeftpanelPasswordControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelPasswordControlTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE = 'leftPanelPasswordControl';\n\nfunction leftPanelPasswordControl() {\n var directive = {\n restrict: 'E',\n template: _edaDragDropWayLeftpanelPasswordControlTemplate2.default\n };\n return directive;\n}\n\nleftPanelPasswordControl.$inject = [];\n\nexports.default = leftPanelPasswordControl;\nexports.LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE = LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1Bhc3N3b3JkQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwucGFzc3dvcmRDb250cm9sLmRpcmVjdGl2ZS5qcz82NjgzIl0sIm5hbWVzIjpbIkxFRlRfUEFORUxfUEFTU1dPUkRfQ09OVFJPTF9ESVJFQ1RJVkUiLCJsZWZ0UGFuZWxQYXNzd29yZENvbnRyb2wiLCJkaXJlY3RpdmUiLCJyZXN0cmljdCIsInRlbXBsYXRlIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7Ozs7QUFFQSxJQUFNQSx3Q0FBd0MsMEJBQTlDOztBQUVBLFNBQVNDLHdCQUFULEdBQW9DO0FBQ2xDLE1BQUlDLFlBQVk7QUFDZEMsY0FBVyxHQURHO0FBRWRDO0FBRmMsR0FBaEI7QUFJQSxTQUFPRixTQUFQO0FBQ0Q7O0FBRURELHlCQUF5QkksT0FBekIsR0FBbUMsRUFBbkM7O2tCQUVlSix3QjtRQUdiRCxxQyxHQUFBQSxxQyIsImZpbGUiOiIzNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IGxlZnRQYW5lbFBhc3N3b3JkQ29udHJvbFRlbXBsYXRlIGZyb20gJy4vZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLnBhc3N3b3JkQ29udHJvbC50ZW1wbGF0ZS5odG1sJztcblxuY29uc3QgTEVGVF9QQU5FTF9QQVNTV09SRF9DT05UUk9MX0RJUkVDVElWRSA9ICdsZWZ0UGFuZWxQYXNzd29yZENvbnRyb2wnO1xuXG5mdW5jdGlvbiBsZWZ0UGFuZWxQYXNzd29yZENvbnRyb2woKSB7XG4gIGxldCBkaXJlY3RpdmUgPSB7XG4gICAgcmVzdHJpY3QgOiAnRScsXG4gICAgdGVtcGxhdGUgOiBsZWZ0UGFuZWxQYXNzd29yZENvbnRyb2xUZW1wbGF0ZVxuICB9O1xuICByZXR1cm4gZGlyZWN0aXZlO1xufVxuXG5sZWZ0UGFuZWxQYXNzd29yZENvbnRyb2wuJGluamVjdCA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBsZWZ0UGFuZWxQYXNzd29yZENvbnRyb2w7XG5cbmV4cG9ydCB7XG4gIExFRlRfUEFORUxfUEFTU1dPUkRfQ09OVFJPTF9ESVJFQ1RJVkVcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1Bhc3N3b3JkQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwucGFzc3dvcmRDb250cm9sLmRpcmVjdGl2ZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 36 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL1Bhc3N3b3JkQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwucGFzc3dvcmRDb250cm9sLnRlbXBsYXRlLmh0bWw/YWY5ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtUEFBbVAsaXVEQUFpdUQiLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIEVkaXQgcHJvcGVydGllcyA6XFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgZm9yPVxcXCJpbnB1dFRleHRMYWJlbFVwZGF0ZVxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcIiBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICBMYWJlbCB0ZXh0IDpcXG4gICAgICAgIDwvbGFiZWw+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJcXFwiPlxcbiAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIiBcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgIG5nLW1vZGVsPVxcXCJsZWZ0UGFuZWxDdHJsLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlMYWJlbFxcXCJcXG4gICAgICAgICAgICBpZD1cXFwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcXFwiXFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkFkZCAvIGVkaXQgY29udHJvbCBsYWJlbCBoZXJlXFxcIiA+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcInBsYWNlaG9sZGVyVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAgcGxhY2Vob2xkZXIgOlxcbiAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcIlxcXCI+XFxuICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICBuZy1tb2RlbD1cXFwibGVmdFBhbmVsQ3RybC5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5UGxhY2Vob2xkZXJcXFwiXFxuICAgICAgICAgICAgaWQ9XFxcImlucHV0VGV4dHBsYWNlaG9sZGVyVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJBZGQgLyBlZGl0IHBsYWNlaG9sZGVyIHRleHQgaGVyZVxcXCIgPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICAgICAgIDxkaXYgY2xhc3M9XFxcIlxcXCI+XFxuICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgZm9yPVxcXCJSZXF1aXJlZFVwZGF0ZVxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImNvbC1tZC00IGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFxcXCI+XFxuICAgICAgICAgIFJlcXVpcmVkIDpcXG4gICAgICAgIDwvbGFiZWw+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtOFxcXCI+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNoZWNrYm94Q3NzQ29ycmVjdGlvblxcXCI+Jm5ic3A7PC9kaXY+XFxuICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVxcXCJsZWZ0UGFuZWxDdHJsLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlSZXF1aXJlZFxcXCJcXG4gICAgICAgICAgICAgIGlkPVxcXCJSZXF1aXJlZFVwZGF0ZVxcXCI+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcIkRlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAgRGVzY3JpcHRpb24gOlxcbiAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcIlxcXCI+XFxuICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICBuZy1tb2RlbD1cXFwibGVmdFBhbmVsQ3RybC5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb25cXFwiXFxuICAgICAgICAgICAgaWQ9XFxcIkRlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJBZGQgLyBlZGl0IGRlc2NyaXB0aW9uIGhlcmVcXFwiID5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG4gIDxsZWZ0LXBhbmVsLXZhbGlkLWVkaXQtZm9vdGVyIC8+XFxuPC9kaXY+XFxuXCJcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9sZWZ0UGFuZWwvUGFzc3dvcmRDb250cm9sL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC5wYXNzd29yZENvbnRyb2wudGVtcGxhdGUuaHRtbFxuLy8gbW9kdWxlIGlkID0gMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 37 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LEFT_PANEL_HEADER_CONTROL_DIRECTIVE = undefined;\n\nvar _edaDragDropWayLeftpanelHeaderControlTemplate = __webpack_require__(38);\n\nvar _edaDragDropWayLeftpanelHeaderControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelHeaderControlTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_HEADER_CONTROL_DIRECTIVE = 'leftPanelHeaderControl';\n\nfunction leftPanelHeaderControl() {\n var directive = {\n restrict: 'E',\n template: _edaDragDropWayLeftpanelHeaderControlTemplate2.default\n };\n return directive;\n}\n\nleftPanelHeaderControl.$inject = [];\n\nexports.default = leftPanelHeaderControl;\nexports.LEFT_PANEL_HEADER_CONTROL_DIRECTIVE = LEFT_PANEL_HEADER_CONTROL_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0hlYWRlckNvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLmhlYWRlckNvbnRyb2wuZGlyZWN0aXZlLmpzPzhjNmMiXSwibmFtZXMiOlsiTEVGVF9QQU5FTF9IRUFERVJfQ09OVFJPTF9ESVJFQ1RJVkUiLCJsZWZ0UGFuZWxIZWFkZXJDb250cm9sIiwiZGlyZWN0aXZlIiwicmVzdHJpY3QiLCJ0ZW1wbGF0ZSIsIiRpbmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7Ozs7O0FBRUEsSUFBTUEsc0NBQXNDLHdCQUE1Qzs7QUFFQSxTQUFTQyxzQkFBVCxHQUFrQztBQUNoQyxNQUFJQyxZQUFZO0FBQ2RDLGNBQVcsR0FERztBQUVkQztBQUZjLEdBQWhCO0FBSUEsU0FBT0YsU0FBUDtBQUVEOztBQUVERCx1QkFBdUJJLE9BQXZCLEdBQWlDLEVBQWpDOztrQkFFZUosc0I7UUFHYkQsbUMsR0FBQUEsbUMiLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbGVmdFBhbmVsSGVhZGVyQ29udHJvbFRlbXBsYXRlIGZyb20gJy4vZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLmhlYWRlckNvbnRyb2wudGVtcGxhdGUuaHRtbCc7XG5cbmNvbnN0IExFRlRfUEFORUxfSEVBREVSX0NPTlRST0xfRElSRUNUSVZFID0gJ2xlZnRQYW5lbEhlYWRlckNvbnRyb2wnO1xuXG5mdW5jdGlvbiBsZWZ0UGFuZWxIZWFkZXJDb250cm9sKCkgeyAgXG4gIGxldCBkaXJlY3RpdmUgPSB7XG4gICAgcmVzdHJpY3QgOiAnRScsXG4gICAgdGVtcGxhdGUgOiBsZWZ0UGFuZWxIZWFkZXJDb250cm9sVGVtcGxhdGVcbiAgfTtcbiAgcmV0dXJuIGRpcmVjdGl2ZTtcblxufVxuXG5sZWZ0UGFuZWxIZWFkZXJDb250cm9sLiRpbmplY3QgPSBbXTtcblxuZXhwb3J0IGRlZmF1bHQgbGVmdFBhbmVsSGVhZGVyQ29udHJvbDtcblxuZXhwb3J0IHtcbiAgTEVGVF9QQU5FTF9IRUFERVJfQ09OVFJPTF9ESVJFQ1RJVkVcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0hlYWRlckNvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLmhlYWRlckNvbnRyb2wuZGlyZWN0aXZlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 38 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0hlYWRlckNvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLmhlYWRlckNvbnRyb2wudGVtcGxhdGUuaHRtbD9jMTk5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1QQUFtUCIsImZpbGUiOiIzOC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG4gIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8aDUgY2xhc3M9XFxcImdyZXlUZXh0XFxcIj5cXG4gICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLXBlbmNpbC1zcXVhcmUtb1xcXCI+PC9pPlxcbiAgICAgICAgICAmbmJzcDtcXG4gICAgICAgICAgRWRpdCBwcm9wZXJ0aWVzIDpcXG4gICAgICAgIDwvaDU+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAgSGVhZGVyIHRleHQgOlxcbiAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcIlxcXCI+XFxuICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICBuZy1tb2RlbD1cXFwibGVmdFBhbmVsQ3RybC5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb25cXFwiXFxuICAgICAgICAgICAgaWQ9XFxcImlucHV0SGVhZGVyVGV4dFVwZGF0ZVxcXCJcXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiQWRkIC8gZWRpdCBoZWFkZXIgdGV4dCBoZXJlXFxcIiA+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuICA8bGVmdC1wYW5lbC12YWxpZC1lZGl0LWZvb3RlciAvPlxcbjwvZGl2PlxcblwiXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0hlYWRlckNvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLmhlYWRlckNvbnRyb2wudGVtcGxhdGUuaHRtbFxuLy8gbW9kdWxlIGlkID0gMzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 39 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE = undefined;\n\nvar _edaDragDropWayLeftpanelGroupedSelectControlTemplate = __webpack_require__(40);\n\nvar _edaDragDropWayLeftpanelGroupedSelectControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelGroupedSelectControlTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE = 'leftPanelGroupedSelectControl';\n\nfunction leftPanelGroupedSelectControl() {\n var directive = {\n restrict: 'E',\n template: _edaDragDropWayLeftpanelGroupedSelectControlTemplate2.default\n };\n return directive;\n}\n\nleftPanelGroupedSelectControl.$inject = [];\n\nexports.default = leftPanelGroupedSelectControl;\nexports.LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE = LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0dyb3VwZWRTZWxlY3RDb250cm9sL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC5ncm91cGVkU2VsZWN0Q29udHJvbC5kaXJlY3RpdmUuanM/YmE5NCJdLCJuYW1lcyI6WyJMRUZUX1BBTkVMX0dST1VQRURfU0VMRUNUX0NPTlRST0xfRElSRUNUSVZFIiwibGVmdFBhbmVsR3JvdXBlZFNlbGVjdENvbnRyb2wiLCJkaXJlY3RpdmUiLCJyZXN0cmljdCIsInRlbXBsYXRlIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7Ozs7QUFFQSxJQUFNQSw4Q0FBOEMsK0JBQXBEOztBQUVBLFNBQVNDLDZCQUFULEdBQXlDO0FBQ3ZDLE1BQUlDLFlBQVk7QUFDZEMsY0FBVyxHQURHO0FBRWRDO0FBRmMsR0FBaEI7QUFJQSxTQUFPRixTQUFQO0FBQ0Q7O0FBRURELDhCQUE4QkksT0FBOUIsR0FBd0MsRUFBeEM7O2tCQUVlSiw2QjtRQUdiRCwyQyxHQUFBQSwyQyIsImZpbGUiOiIzOS5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IGxlZnRQYW5lbEdyb3VwZWRTZWxlY3RDb250cm9sVGVtcGxhdGUgZnJvbSAnLi9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuZ3JvdXBlZFNlbGVjdENvbnRyb2wudGVtcGxhdGUuaHRtbCc7XG5cbmNvbnN0IExFRlRfUEFORUxfR1JPVVBFRF9TRUxFQ1RfQ09OVFJPTF9ESVJFQ1RJVkUgPSAnbGVmdFBhbmVsR3JvdXBlZFNlbGVjdENvbnRyb2wnO1xuXG5mdW5jdGlvbiBsZWZ0UGFuZWxHcm91cGVkU2VsZWN0Q29udHJvbCgpIHtcbiAgbGV0IGRpcmVjdGl2ZSA9IHtcbiAgICByZXN0cmljdCA6ICdFJyxcbiAgICB0ZW1wbGF0ZSA6IGxlZnRQYW5lbEdyb3VwZWRTZWxlY3RDb250cm9sVGVtcGxhdGVcbiAgfTtcbiAgcmV0dXJuIGRpcmVjdGl2ZTtcbn1cblxubGVmdFBhbmVsR3JvdXBlZFNlbGVjdENvbnRyb2wuJGluamVjdCA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBsZWZ0UGFuZWxHcm91cGVkU2VsZWN0Q29udHJvbDtcblxuZXhwb3J0IHtcbiAgTEVGVF9QQU5FTF9HUk9VUEVEX1NFTEVDVF9DT05UUk9MX0RJUkVDVElWRVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9sZWZ0UGFuZWwvR3JvdXBlZFNlbGVjdENvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLmdyb3VwZWRTZWxlY3RDb250cm9sLmRpcmVjdGl2ZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 40 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n \\n Add new options :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n Add new groups :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n Edit/Remove options/groups:\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0dyb3VwZWRTZWxlY3RDb250cm9sL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC5ncm91cGVkU2VsZWN0Q29udHJvbC50ZW1wbGF0ZS5odG1sPzY0N2MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbVBBQW1QLDY3SEFBNjdILFFBQVEsNm5DQUE2bkMsb0JBQW9CLG9RQUFvUSx3QkFBd0IsNkdBQTZHLHlCQUF5QiIsImZpbGUiOiI0MC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG4gIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8aDUgY2xhc3M9XFxcImdyZXlUZXh0XFxcIj5cXG4gICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLXBlbmNpbC1zcXVhcmUtb1xcXCI+PC9pPlxcbiAgICAgICAgICAmbmJzcDtcXG4gICAgICAgICAgRWRpdCBwcm9wZXJ0aWVzIDpcXG4gICAgICAgIDwvaDU+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbGctMTIgY29sLW1kLTEyXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcImdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAgQWRkIG5ldyBvcHRpb25zIDpcXG4gICAgICAgIDwvbGFiZWw+XFxuICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtc20tOSBjb2wteHMtOSBjb2wtbWQtOSBjb2wtbGctOVxcXCI+XFxuICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICAgIGlkPVxcXCJpbnB1dEFkZE5ld0dyb3VwZWRPcHRpb25cXFwiXFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiYWRkIG5ldyBvcHRpb25cXFwiXFxuICAgICAgICAgICAgICBuZy1tb2RlbD1cXFwibGVmdFBhbmVsQ3RybC5uZXdPcHRpb25Hcm91cGVkU2VsZWN0LnNhaXNpZVxcXCI+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtc20tMyBjb2wteHMtMyBjb2wtbWQtMyBjb2wtbGctM1xcXCI+XFxuICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeVxcXCJcXG4gICAgICAgICAgICAgIG5nLWNsaWNrPVxcXCJsZWZ0UGFuZWxDdHJsLmFkZE5ld09wdGlvbkdyb3VwZWRTZWxlY3QoKVxcXCI+XFxuICAgICAgICAgICAgICBhZGRcXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbGctMTIgY29sLW1kLTEyXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcImdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFxcXCI+XFxuICAgICAgICAgIEFkZCBuZXcgZ3JvdXBzIDpcXG4gICAgICAgIDwvbGFiZWw+XFxuICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtc20tOSBjb2wteHMtOSBjb2wtbWQtOSBjb2wtbGctOVxcXCI+XFxuICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICBpZD1cXFwiaW5wdXRBZGROZXdHcm91cEdyb3VwZWRPcHRpb25cXFwiXFxuICAgICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVxcXCJsZWZ0UGFuZWxDdHJsLm5ld0dyb3VwR3JvdXBlZFNlbGVjdC5zYWlzaWVcXFwiXFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiQWRkIG5ldyBncm91cFxcXCI+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtc20tMyBjb2wteHMtMyBjb2wtbWQtMyBjb2wtbGctM1xcXCI+XFxuICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeVxcXCJcXG4gICAgICAgICAgICAgIG5nLWNsaWNrPVxcXCJsZWZ0UGFuZWxDdHJsLmFkZE5ld0dyb3VwVG9Hcm91cGVkU2VsZWN0KClcXFwiPlxcbiAgICAgICAgICAgICAgYWRkXFxuICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1sZy0xMiBjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGNsYXNzPVxcXCIgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAgRWRpdC9SZW1vdmUgb3B0aW9ucy9ncm91cHM6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcy1cXFwiY29sLWxnLTEyIGNvbC1tZC0xMiBjb2wtc20tMTIgY29sLXhzLTEyXFxcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IG5nLWlmPVxcXCJsZWZ0UGFuZWxDdHJsLmdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID09PSAwXFxcIj5cXG4gICAgICAgICAgICAgIDxoNSBjbGFzcz1cXFwidGV4dC1jZW50ZXIgZ3JleVRleHRcXFwiPlxcbiAgICAgICAgICAgICAgICA8ZW0+XFxuICAgICAgICAgICAgICAgICAgLSBubyBvcHRpb24gOiBhZGQgbmV3IG9wdGlvbnMgLVxcbiAgICAgICAgICAgICAgICA8L2VtPlxcbiAgICAgICAgICAgICAgPC9oNT5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8dGFibGVcXG4gICAgICAgICAgICAgIG5nLWlmPVxcXCJsZWZ0UGFuZWxDdHJsLmdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID4gMFxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJ0YWJsZSB0YWJsZS1zdHJpcGVkXFxcIj5cXG4gICAgICAgICAgICAgIDx0aGVhZD5cXG4gICAgICAgICAgICAgICAgPHRyPlxcbiAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cXFwiMjBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXJcXG4gICAgICAgICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cXFwiMjVcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBcXG4gICAgICAgICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cXFwiMzBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uXFxuICAgICAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XFxcIjI1XFxcIj48L3RoPlxcbiAgICAgICAgICAgICAgICA8L3RyPlxcbiAgICAgICAgICAgICAgICA8dHI+XFxuICAgICAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVxcXCIyMFxcXCI+PC90aD5cXG4gICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XFxcIjI1XFxcIj48L3RoPlxcbiAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cXFwiMzBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgICAgICAgIG5nLW1vZGVsPVxcXCJncm91cGVkU2VsZWN0RmlsdGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwic2VhcmNoIGZvciBvcHRpb25cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJpbnB1dC1zbSBmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XFxcInNlYXJjaFxcXCIgLz5cXG4gICAgICAgICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cXFwiMjVcXFwiPjwvdGg+XFxuICAgICAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgICAgICA8L3RoZWFkPlxcbiAgICAgICAgICAgICAgPHRib2R5PlxcbiAgICAgICAgICAgICAgPHRyXFxuICAgICAgICAgICAgICAgIG5nLXJlcGVhdD1cXFwiZ3JvdXBlZFNlbGVjdFJvdyBpbiBsZWZ0UGFuZWxDdHJsLmdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MgfCBmaWx0ZXI6Z3JvdXBlZFNlbGVjdEZpbHRlciBhcyBncm91cGVkU2VsZWN0Um93XFxcIj5cXG4gICAgICAgICAgICAgICAgPHRkIHN0LXJhdGlvPVxcXCIyMFxcXCI+XFxuICAgICAgICAgICAgICAgICAge3skaW5kZXh9fVxcbiAgICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgICA8dGQgc3QtcmF0aW89XFxcIjI1XFxcIj5cXG4gICAgICAgICAgICAgICAgICA8ZGl2IG5nLWlmPVxcXCJsZWZ0UGFuZWxDdHJsLmdyb3VwU2VsZWN0R3JvdXBDbGljay5zaG93TGlzdCA9PT0gdHJ1ZVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nLWlmPVxcXCJsZWZ0UGFuZWxDdHJsLkdyb3VwZWRTZWxlY3RHcm91cHMubGlzdC5sZW5ndGggPT09IDBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwidGV4dC1sZWZ0IG5vR3JvdXBUZXh0XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAtIGFkZCBuZXcgZ3JvdXBzIC1cXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nLWlmPVxcXCJsZWZ0UGFuZWxDdHJsLkdyb3VwZWRTZWxlY3RHcm91cHMubGlzdC5sZW5ndGggPiAwXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgPG9sXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcIm55YS1icy1zZWxlY3QgY29sLXNtLTEyIGNvbC14cy0xMiBjb2wtbWQtMTIgY29sLWxnMTIgZWRpdEdyb3VwZWRTZWxlY3RueWFTZWxlY3RcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgbmctbW9kZWw9XFxcImdyb3VwZWRTZWxlY3RSb3cuZ3JvdXBcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XFxcIm1vZGVsR3JvdXBlZE9wdGlvbkdyb3VwZWRDaG9vc2VcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9XFxcImxlZnRQYW5lbEN0cmwuR3JvdXBlZFNlbGVjdEdyb3Vwcy5saXN0Lmxlbmd0aCA9PT0gMFxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwibnlhLWJzLW9wdGlvblxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG55YS1icy1vcHRpb249XFxcIkdyb3VwZWRTZWxlY3RHcm91cCBpbiBsZWZ0UGFuZWxDdHJsLkdyb3VwZWRTZWxlY3RHcm91cHMubGlzdFxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVxcXCJHcm91cGVkU2VsZWN0R3JvdXBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGE+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7R3JvdXBlZFNlbGVjdEdyb3VwfX1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxcbiAgICAgICAgICAgICAgICAgICAgICA8L29sPlxcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgPGRpdiBuZy1pZj1cXFwibGVmdFBhbmVsQ3RybC5ncm91cFNlbGVjdEdyb3VwQ2xpY2suc2hvd0xpc3QgPT09IGZhbHNlXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIHt7Z3JvdXBlZFNlbGVjdFJvdy5ncm91cH19XFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICAgIDx0ZCBzdC1yYXRpbz1cXFwiMzBcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7Z3JvdXBlZFNlbGVjdFJvdy5vcHRpb259fVxcbiAgICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgICA8dGQgc3QtcmF0aW89XFxcIjI1XFxcIj5cXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwdWxsLXJpZ2h0XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XFxcImxlZnRQYW5lbEN0cmwudXBUaGlzR3JvdXBlZFNlbGVjdFJvdygkaW5kZXgpXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLWFycm93LXVwXFxcIj48L2k+XFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XFxcImxlZnRQYW5lbEN0cmwuZG93blRoaXNHcm91cGVkU2VsZWN0Um93KCRpbmRleClcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cXFwiZmEgZmEtYXJyb3ctZG93blxcXCI+PC9pPlxcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJidG4gYnRuLXdhcm5pbmdcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVxcXCJsZWZ0UGFuZWxDdHJsLnNob3dHcm91cExpc3RUb0Nob29zZSgpXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLXBlbmNpbC1zcXVhcmUtb1xcXCI+PC9pPlxcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJidG4gYnRuLWRhbmdlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XFxcImxlZnRQYW5lbEN0cmwucmVtb3ZlR3JvdXBlZFNlbGVjdFJvdygkaW5kZXgpXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLXRyYXNoLW9cXFwiPjwvaT5cXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgICAgICA8L3Rib2R5PlxcbiAgICAgICAgICAgIDwvdGFibGU+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG5cXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgICBmb3I9XFxcIkRlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICAgIERlc2NyaXB0aW9uIDpcXG4gICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgICAgbmctbW9kZWw9XFxcImxlZnRQYW5lbEN0cmwucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9uXFxcIlxcbiAgICAgICAgICAgICAgaWQ9XFxcIkRlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkFkZCAvIGVkaXQgZGVzY3JpcHRpb24gaGVyZVxcXCI+XFxuICAgICAgICAgIDwvZGl2PlxcblxcdFxcdFxcdFxcdDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbiAgPGxlZnQtcGFuZWwtdmFsaWQtZWRpdC1mb290ZXIgLz5cXG48L2Rpdj5cXG5cIlxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2xlZnRQYW5lbC9Hcm91cGVkU2VsZWN0Q29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuZ3JvdXBlZFNlbGVjdENvbnRyb2wudGVtcGxhdGUuaHRtbFxuLy8gbW9kdWxlIGlkID0gNDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 41 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LEFT_PANEL_DATE_CONTROL_DIRECTIVE = undefined;\n\nvar _edaDragDropWayLeftpanelDateControlTemplate = __webpack_require__(42);\n\nvar _edaDragDropWayLeftpanelDateControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelDateControlTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_DATE_CONTROL_DIRECTIVE = 'leftPanelDateControl';\n\nfunction leftPanelDateControl() {\n var directive = {\n restrict: 'E',\n template: _edaDragDropWayLeftpanelDateControlTemplate2.default\n };\n return directive;\n}\n\nleftPanelDateControl.$inject = [];\n\nexports.default = leftPanelDateControl;\nexports.LEFT_PANEL_DATE_CONTROL_DIRECTIVE = LEFT_PANEL_DATE_CONTROL_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0RhdGVDb250cm9sL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC5kYXRlQ29udHJvbC5kaXJlY3RpdmUuanM/Yjg0NiJdLCJuYW1lcyI6WyJMRUZUX1BBTkVMX0RBVEVfQ09OVFJPTF9ESVJFQ1RJVkUiLCJsZWZ0UGFuZWxEYXRlQ29udHJvbCIsImRpcmVjdGl2ZSIsInJlc3RyaWN0IiwidGVtcGxhdGUiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLG9DQUFvQyxzQkFBMUM7O0FBRUEsU0FBU0Msb0JBQVQsR0FBZ0M7QUFDOUIsTUFBSUMsWUFBWTtBQUNkQyxjQUFXLEdBREc7QUFFZEM7QUFGYyxHQUFoQjtBQUlBLFNBQU9GLFNBQVA7QUFDRDs7QUFFREQscUJBQXFCSSxPQUFyQixHQUErQixFQUEvQjs7a0JBRWVKLG9CO1FBR2JELGlDLEdBQUFBLGlDIiwiZmlsZSI6IjQxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgbGVmdFBhbmVsRGF0ZUNvbnRyb2xUZW1wbGF0ZSBmcm9tICcuL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC5kYXRlQ29udHJvbC50ZW1wbGF0ZS5odG1sJztcblxuY29uc3QgTEVGVF9QQU5FTF9EQVRFX0NPTlRST0xfRElSRUNUSVZFID0gJ2xlZnRQYW5lbERhdGVDb250cm9sJztcblxuZnVuY3Rpb24gbGVmdFBhbmVsRGF0ZUNvbnRyb2woKSB7XG4gIGxldCBkaXJlY3RpdmUgPSB7XG4gICAgcmVzdHJpY3QgOiAnRScsXG4gICAgdGVtcGxhdGUgOiBsZWZ0UGFuZWxEYXRlQ29udHJvbFRlbXBsYXRlXG4gIH07XG4gIHJldHVybiBkaXJlY3RpdmU7XG59XG5cbmxlZnRQYW5lbERhdGVDb250cm9sLiRpbmplY3QgPSBbXTtcblxuZXhwb3J0IGRlZmF1bHQgbGVmdFBhbmVsRGF0ZUNvbnRyb2w7XG5cbmV4cG9ydCB7XG4gIExFRlRfUEFORUxfREFURV9DT05UUk9MX0RJUkVDVElWRVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9sZWZ0UGFuZWwvRGF0ZUNvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLmRhdGVDb250cm9sLmRpcmVjdGl2ZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 42 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n Date format :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0RhdGVDb250cm9sL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC5kYXRlQ29udHJvbC50ZW1wbGF0ZS5odG1sPzAyYjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbVBBQW1QLHltQkFBeW1CLFlBQVksOGpDQUE4akMiLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIEVkaXQgcHJvcGVydGllcyA6XFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgPGxhYmVsIGNsYXNzPVxcXCJjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgIERhdGUgZm9ybWF0IDpcXG4gICAgPC9sYWJlbD5cXG4gICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICA8b2xcXG4gICAgICAgIGNsYXNzPVxcXCJueWEtYnMtc2VsZWN0IGNvbC1zbS0xMiBjb2wteHMtMTIgY29sLW1kLTEyIGNvbC1sZzEyXFxcIlxcbiAgICAgICAgbmctbW9kZWw9XFxcImxlZnRQYW5lbEN0cmwucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmRhdGVwaWNrZXJQb3B1cFxcXCJcXG4gICAgICAgIGlkPVxcXCJkYXRlZm9ybWF0U2VsZWN0XFxcIj5cXG4gICAgICAgIDxsaVxcbiAgICAgICAgICBjbGFzcz1cXFwibnlhLWJzLW9wdGlvblxcXCJcXG4gICAgICAgICAgbnlhLWJzLW9wdGlvbj1cXFwiZGF0ZWZvcm1hdCBpbiBsZWZ0UGFuZWxDdHJsLmRlbW9kdC5mb3JtYXRzXFxcIlxcbiAgICAgICAgICB2YWx1ZT1cXFwiZGF0ZWZvcm1hdFxcXCI+XFxuICAgICAgICAgIDxhPlxcbiAgICAgICAgICAgIHt7ZGF0ZWZvcm1hdH19XFxuICAgICAgICAgIDwvYT5cXG4gICAgICAgIDwvbGk+XFxuICAgICAgPC9vbD5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCIgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAgTGFiZWwgdGV4dCA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgIG5nLW1vZGVsPVxcXCJsZWZ0UGFuZWxDdHJsLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlMYWJlbFxcXCJcXG4gICAgICAgICAgICBpZD1cXFwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcXFwiXFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkFkZCAvIGVkaXQgY29udHJvbCBsYWJlbCBoZXJlXFxcIj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICA8ZGl2IGNsYXNzPVxcXCJcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwiUmVxdWlyZWRVcGRhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJjb2wtbWQtNCBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICBSZXF1aXJlZCA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLThcXFwiPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjaGVja2JveENzc0NvcnJlY3Rpb25cXFwiPiZuYnNwOzwvZGl2PlxcbiAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICBuZy1tb2RlbD1cXFwibGVmdFBhbmVsQ3RybC5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5UmVxdWlyZWRcXFwiXFxuICAgICAgICAgICAgaWQ9XFxcIlJlcXVpcmVkVXBkYXRlXFxcIj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwiRGVzY3JpcHRpb25VcGRhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICBEZXNjcmlwdGlvbiA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgIG5nLW1vZGVsPVxcXCJsZWZ0UGFuZWxDdHJsLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlEZXNjcmlwdGlvblxcXCJcXG4gICAgICAgICAgICBpZD1cXFwiRGVzY3JpcHRpb25VcGRhdGVcXFwiXFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkFkZCAvIGVkaXQgZGVzY3JpcHRpb24gaGVyZVxcXCI+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuICA8bGVmdC1wYW5lbC12YWxpZC1lZGl0LWZvb3RlciAvPlxcbjwvZGl2PlxcblwiXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0RhdGVDb250cm9sL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC5kYXRlQ29udHJvbC50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSA0MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 43 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE = undefined;\n\nvar _edaDragDropWayLeftpanelCheckBoxControlTemplate = __webpack_require__(44);\n\nvar _edaDragDropWayLeftpanelCheckBoxControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelCheckBoxControlTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE = 'leftPanelCheckBoxControl';\n\nfunction leftPanelCheckBoxControl() {\n var directive = {\n restrict: 'E',\n template: _edaDragDropWayLeftpanelCheckBoxControlTemplate2.default\n };\n return directive;\n}\n\nleftPanelCheckBoxControl.$inject = [];\n\nexports.default = leftPanelCheckBoxControl;\nexports.LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE = LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0NoZWNrQm94Q29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuY2hlY2tCb3hDb250cm9sLmRpcmVjdGl2ZS5qcz9iZjFhIl0sIm5hbWVzIjpbIkxFRlRfUEFORUxfQ0hFQ0tCT1hfQ09OVFJPTF9ESVJFQ1RJVkUiLCJsZWZ0UGFuZWxDaGVja0JveENvbnRyb2wiLCJkaXJlY3RpdmUiLCJyZXN0cmljdCIsInRlbXBsYXRlIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7Ozs7QUFFQSxJQUFNQSx3Q0FBd0MsMEJBQTlDOztBQUVBLFNBQVNDLHdCQUFULEdBQW9DO0FBQ2xDLE1BQUlDLFlBQVk7QUFDZEMsY0FBVyxHQURHO0FBRWRDO0FBRmMsR0FBaEI7QUFJQSxTQUFPRixTQUFQO0FBQ0Q7O0FBRURELHlCQUF5QkksT0FBekIsR0FBbUMsRUFBbkM7O2tCQUVlSix3QjtRQUdiRCxxQyxHQUFBQSxxQyIsImZpbGUiOiI0My5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IGxlZnRQYW5lbENoZWNrQm94Q29udHJvbFRlbXBsYXRlIGZyb20gJy4vZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLmNoZWNrQm94Q29udHJvbC50ZW1wbGF0ZS5odG1sJztcblxuY29uc3QgTEVGVF9QQU5FTF9DSEVDS0JPWF9DT05UUk9MX0RJUkVDVElWRSA9ICdsZWZ0UGFuZWxDaGVja0JveENvbnRyb2wnO1xuXG5mdW5jdGlvbiBsZWZ0UGFuZWxDaGVja0JveENvbnRyb2woKSB7XG4gIGxldCBkaXJlY3RpdmUgPSB7XG4gICAgcmVzdHJpY3QgOiAnRScsXG4gICAgdGVtcGxhdGUgOiBsZWZ0UGFuZWxDaGVja0JveENvbnRyb2xUZW1wbGF0ZVxuICB9O1xuICByZXR1cm4gZGlyZWN0aXZlO1xufVxuXG5sZWZ0UGFuZWxDaGVja0JveENvbnRyb2wuJGluamVjdCA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBsZWZ0UGFuZWxDaGVja0JveENvbnRyb2w7XG5cbmV4cG9ydCB7XG4gIExFRlRfUEFORUxfQ0hFQ0tCT1hfQ09OVFJPTF9ESVJFQ1RJVkVcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0NoZWNrQm94Q29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuY2hlY2tCb3hDb250cm9sLmRpcmVjdGl2ZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 44 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0NoZWNrQm94Q29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuY2hlY2tCb3hDb250cm9sLnRlbXBsYXRlLmh0bWw/MzEwNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtUEFBbVAsdW5DQUF1bkMiLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIEVkaXQgcHJvcGVydGllcyA6XFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICBcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dExhYmVsVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCIgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAgICBMYWJlbCB0ZXh0IDpcXG4gICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgICAgbmctbW9kZWw9XFxcImxlZnRQYW5lbEN0cmwucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsXFxcIlxcbiAgICAgICAgICAgICAgaWQ9XFxcImlucHV0VGV4dExhYmVsVXBkYXRlXFxcIlxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkFkZCAvIGVkaXQgY29udHJvbCBsYWJlbCBoZXJlXFxcIj5cXG4gICAgICAgICAgPC9kaXY+XFxuICBcXHRcXHRcXHQ8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgXFx0XFx0XFx0PGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgPGxhYmVsXFxuICAgICAgICAgICAgZm9yPVxcXCJSZXF1aXJlZFVwZGF0ZVxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiY29sLW1kLTQgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAgICBSZXF1aXJlZCA6XFxuICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC04XFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjaGVja2JveENzc0NvcnJlY3Rpb25cXFwiPiZuYnNwOzwvZGl2PlxcbiAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgICBuZy1tb2RlbD1cXFwibGVmdFBhbmVsQ3RybC5wcm94eU1vZGVsLnRlbXBvcnlDb25maWcuZm9ybWx5UmVxdWlyZWRcXFwiXFxuICAgICAgICAgICAgICBpZD1cXFwiUmVxdWlyZWRVcGRhdGVcXFwiPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gIFxcdFxcdFxcdDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICBcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgICBmb3I9XFxcIkRlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICAgIERlc2NyaXB0aW9uIDpcXG4gICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgICAgbmctbW9kZWw9XFxcImxlZnRQYW5lbEN0cmwucHJveHlNb2RlbC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9uXFxcIlxcbiAgICAgICAgICAgICAgaWQ9XFxcIkRlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcIkFkZCAvIGVkaXQgZGVzY3JpcHRpb24gaGVyZVxcXCI+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgXFx0XFx0XFx0PC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuICA8bGVmdC1wYW5lbC12YWxpZC1lZGl0LWZvb3RlciAvPlxcbjwvZGl2PlxcblwiXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0NoZWNrQm94Q29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuY2hlY2tCb3hDb250cm9sLnRlbXBsYXRlLmh0bWxcbi8vIG1vZHVsZSBpZCA9IDQ0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 45 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LEFT_PANEL_BLANK_CONTROL_DIRECTIVE = undefined;\n\nvar _edaDragDropWayLeftpanelBlankControlTemplate = __webpack_require__(46);\n\nvar _edaDragDropWayLeftpanelBlankControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelBlankControlTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_BLANK_CONTROL_DIRECTIVE = 'leftPanelBlankControl';\n\nfunction leftPanelBlankControl() {\n var directive = {\n restrict: 'E',\n template: _edaDragDropWayLeftpanelBlankControlTemplate2.default\n };\n return directive;\n}\n\nleftPanelBlankControl.$inject = [];\n\nexports.default = leftPanelBlankControl;\nexports.LEFT_PANEL_BLANK_CONTROL_DIRECTIVE = LEFT_PANEL_BLANK_CONTROL_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0JsYW5rQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuYmxhbmtDb250cm9sLmRpcmVjdGl2ZS5qcz8xY2JmIl0sIm5hbWVzIjpbIkxFRlRfUEFORUxfQkxBTktfQ09OVFJPTF9ESVJFQ1RJVkUiLCJsZWZ0UGFuZWxCbGFua0NvbnRyb2wiLCJkaXJlY3RpdmUiLCJyZXN0cmljdCIsInRlbXBsYXRlIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7Ozs7QUFFQSxJQUFNQSxxQ0FBcUMsdUJBQTNDOztBQUVBLFNBQVNDLHFCQUFULEdBQWlDO0FBQy9CLE1BQUlDLFlBQVk7QUFDZEMsY0FBVyxHQURHO0FBRWRDO0FBRmMsR0FBaEI7QUFJQSxTQUFPRixTQUFQO0FBQ0Q7O0FBRURELHNCQUFzQkksT0FBdEIsR0FBZ0MsRUFBaEM7O2tCQUVlSixxQjtRQUdiRCxrQyxHQUFBQSxrQyIsImZpbGUiOiI0NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsZWZ0UGFuZWxCbGFua0NvbnRyb2xUZW1wbGF0ZSBmcm9tICcuL2VkYURyYWdEcm9wV2F5LmxlZnRwYW5lbC5ibGFua0NvbnRyb2wudGVtcGxhdGUuaHRtbCc7XG5cbmNvbnN0IExFRlRfUEFORUxfQkxBTktfQ09OVFJPTF9ESVJFQ1RJVkUgPSAnbGVmdFBhbmVsQmxhbmtDb250cm9sJztcblxuZnVuY3Rpb24gbGVmdFBhbmVsQmxhbmtDb250cm9sKCkge1xuICBsZXQgZGlyZWN0aXZlID0ge1xuICAgIHJlc3RyaWN0IDogJ0UnLFxuICAgIHRlbXBsYXRlIDogbGVmdFBhbmVsQmxhbmtDb250cm9sVGVtcGxhdGVcbiAgfTtcbiAgcmV0dXJuIGRpcmVjdGl2ZTtcbn1cblxubGVmdFBhbmVsQmxhbmtDb250cm9sLiRpbmplY3QgPSBbXTtcblxuZXhwb3J0IGRlZmF1bHQgbGVmdFBhbmVsQmxhbmtDb250cm9sO1xuXG5leHBvcnQge1xuICBMRUZUX1BBTkVMX0JMQU5LX0NPTlRST0xfRElSRUNUSVZFXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2xlZnRQYW5lbC9CbGFua0NvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLmJsYW5rQ29udHJvbC5kaXJlY3RpdmUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 46 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit :\\n \\n \\n
\\n
\\n
\\n
\\n Column will be blank\\n \\n \\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0JsYW5rQ29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuYmxhbmtDb250cm9sLnRlbXBsYXRlLmh0bWw/NGNiZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtUEFBbVAiLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7IFxcbiAgICAgICAgICBFZGl0IDpcXG4gICAgICAgIDwvaDU+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PiBcXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtc20tMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJ0ZXh0LWNlbnRlciBncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIENvbHVtbiB3aWxsIGJlIGJsYW5rXFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbiAgPGxlZnQtcGFuZWwtdmFsaWQtZWRpdC1mb290ZXIgLz5cXG48L2Rpdj5cXG5cIlxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2xlZnRQYW5lbC9CbGFua0NvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLmJsYW5rQ29udHJvbC50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSA0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 47 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE = undefined;\n\nvar _edaDragDropWayLeftpanelBasicSelectControlTemplate = __webpack_require__(48);\n\nvar _edaDragDropWayLeftpanelBasicSelectControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelBasicSelectControlTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE = 'leftPanelBasicSelectControl';\n\nfunction leftPanelBasicSelectControl() {\n var directive = {\n restrict: 'E',\n template: _edaDragDropWayLeftpanelBasicSelectControlTemplate2.default\n };\n return directive;\n}\n\nleftPanelBasicSelectControl.$inject = [];\n\nexports.default = leftPanelBasicSelectControl;\nexports.LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE = LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0Jhc2ljU2VsZWN0Q29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuYmFzaWNTZWxlY3RDb250cm9sLmRpcmVjdGl2ZS5qcz84YmNhIl0sIm5hbWVzIjpbIkxFRlRfUEFORUxfQkFTSUNfU0VMRUNUX0NPTlRST0xfRElSRUNUSVZFIiwibGVmdFBhbmVsQmFzaWNTZWxlY3RDb250cm9sIiwiZGlyZWN0aXZlIiwicmVzdHJpY3QiLCJ0ZW1wbGF0ZSIsIiRpbmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7Ozs7O0FBRUEsSUFBTUEsNENBQTRDLDZCQUFsRDs7QUFFQSxTQUFTQywyQkFBVCxHQUF1QztBQUNyQyxNQUFJQyxZQUFZO0FBQ2RDLGNBQVcsR0FERztBQUVkQztBQUZjLEdBQWhCO0FBSUEsU0FBT0YsU0FBUDtBQUNEOztBQUVERCw0QkFBNEJJLE9BQTVCLEdBQXNDLEVBQXRDOztrQkFFZUosMkI7UUFHYkQseUMsR0FBQUEseUMiLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbGVmdFBhbmVsQmFzaWNTZWxlY3RDb250cm9sVGVtcGxhdGUgZnJvbSAnLi9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuYmFzaWNTZWxlY3RDb250cm9sLnRlbXBsYXRlLmh0bWwnO1xuXG5jb25zdCBMRUZUX1BBTkVMX0JBU0lDX1NFTEVDVF9DT05UUk9MX0RJUkVDVElWRSA9ICdsZWZ0UGFuZWxCYXNpY1NlbGVjdENvbnRyb2wnO1xuXG5mdW5jdGlvbiBsZWZ0UGFuZWxCYXNpY1NlbGVjdENvbnRyb2woKSB7XG4gIGxldCBkaXJlY3RpdmUgPSB7XG4gICAgcmVzdHJpY3QgOiAnRScsXG4gICAgdGVtcGxhdGUgOiBsZWZ0UGFuZWxCYXNpY1NlbGVjdENvbnRyb2xUZW1wbGF0ZVxuICB9O1xuICByZXR1cm4gZGlyZWN0aXZlO1xufVxuXG5sZWZ0UGFuZWxCYXNpY1NlbGVjdENvbnRyb2wuJGluamVjdCA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBsZWZ0UGFuZWxCYXNpY1NlbGVjdENvbnRyb2w7XG5cbmV4cG9ydCB7XG4gIExFRlRfUEFORUxfQkFTSUNfU0VMRUNUX0NPTlRST0xfRElSRUNUSVZFXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2xlZnRQYW5lbC9CYXNpY1NlbGVjdENvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLmJhc2ljU2VsZWN0Q29udHJvbC5kaXJlY3RpdmUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 48 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n \\n Add new options :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n Edit/Remove options :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvbGVmdFBhbmVsL0Jhc2ljU2VsZWN0Q29udHJvbC9lZGFEcmFnRHJvcFdheS5sZWZ0cGFuZWwuYmFzaWNTZWxlY3RDb250cm9sLnRlbXBsYXRlLmh0bWw/ZWI1OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtUEFBbVAscXlGQUFxeUYsUUFBUSx5RkFBeUYsdUJBQXVCIiwiZmlsZSI6IjQ4LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIjxkaXYgY2xhc3M9XFxcInBhbmVsIHBhbmVsLWRlZmF1bHRcXFwiPlxcbiAgPGRpdiBjbGFzcz1cXFwicGFuZWwtYm9keVxcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIj5cXG4gICAgICAgIDxoNSBjbGFzcz1cXFwiZ3JleVRleHRcXFwiPlxcbiAgICAgICAgICA8aSBjbGFzcz1cXFwiZmEgZmEtcGVuY2lsLXNxdWFyZS1vXFxcIj48L2k+XFxuICAgICAgICAgICZuYnNwO1xcbiAgICAgICAgICBFZGl0IHByb3BlcnRpZXMgOlxcbiAgICAgICAgPC9oNT5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1sZy0xMiBjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwiYmFzaWNTZWxlY3RSb3dDb2xsZWN0aW9uXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFxcXCI+XFxuICAgICAgICAgIEFkZCBuZXcgb3B0aW9ucyA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXY+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLXNtLTkgY29sLXhzLTkgY29sLW1kLTkgY29sLWxnLTlcXFwiPlxcbiAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgICBpZD1cXFwiaW5wdXRBZGROZXdCYXNpY09wdGlvblxcXCJcXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJhZGQgbmV3IG9wdGlvblxcXCJcXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVxcXCJsZWZ0UGFuZWxDdHJsLm5ld09wdGlvbkJhc2ljU2VsZWN0LnNhaXNpZVxcXCI+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLXNtLTMgY29sLXhzLTMgY29sLW1kLTMgY29sLWxnLTNcXFwiPlxcbiAgICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgICBjbGFzcz1cXFwiYnRuIGJ0bi1wcmltYXJ5XFxcIlxcbiAgICAgICAgICAgICAgICBuZy1jbGljaz1cXFwibGVmdFBhbmVsQ3RybC5hZGROZXdPcHRpb25CYXNpY1NlbGVjdCgpXFxcIj5cXG4gICAgICAgICAgICAgICAgYWRkXFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgIDxkaXYgY2xhc3M9XFxcImNvbC1sZy0xMiBjb2wtbWQtMTJcXFwiPlxcbiAgICAgICA8bGFiZWwgY2xhc3M9XFxcIiBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgIEVkaXQvUmVtb3ZlIG9wdGlvbnMgOlxcbiAgICAgICA8L2xhYmVsPlxcbiAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcy1cXFwiY29sLWxnLTEyIGNvbC1tZC0xMiBjb2wtc20tMTIgY29sLXhzLTEyXFxcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29udGFpbmVyXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IG5nLWlmPVxcXCJsZWZ0UGFuZWxDdHJsLmJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbi5yb3dzLmxlbmd0aCA9PT0gMFxcXCI+XFxuICAgICAgICAgICAgICA8aDUgY2xhc3M9XFxcInRleHQtY2VudGVyIGdyZXlUZXh0XFxcIj5cXG4gICAgICAgICAgICAgICAgPGVtPlxcbiAgICAgICAgICAgICAgICAgIC0gbm8gb3B0aW9uIDogYWRkIG5ldyBvcHRpb25zIC1cXG4gICAgICAgICAgICAgICAgPC9lbT5cXG4gICAgICAgICAgICAgIDwvaDU+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPHRhYmxlXFxuICAgICAgICAgICAgICBuZy1pZj1cXFwibGVmdFBhbmVsQ3RybC5iYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24ucm93cy5sZW5ndGggPiAwXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInRhYmxlIHRhYmxlLXN0cmlwZWRcXFwiPlxcbiAgICAgICAgICAgICAgPHRoZWFkPlxcbiAgICAgICAgICAgICAgPHRyPlxcbiAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XFxcIjIwXFxcIj5cXG4gICAgICAgICAgICAgICAgICBvcmRlclxcbiAgICAgICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XFxcIjU1XFxcIj5cXG4gICAgICAgICAgICAgICAgICBvcHRpb25cXG4gICAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVxcXCIyNVxcXCI+PC90aD5cXG4gICAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgICAgICA8dHI+XFxuICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cXFwiMjBcXFwiPjwvdGg+XFxuICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cXFwiNTVcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgICAgICAgbmctbW9kZWw9XFxcImxlZnRQYW5lbEN0cmwuYmFzaWNTZWxlY3RGaWx0ZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwic2VhcmNoIGZvciBvcHRpb25cXFwiXFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiaW5wdXQtc20gZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cXFwic2VhcmNoXFxcIiAvPlxcbiAgICAgICAgICAgICAgICA8L3RoPlxcbiAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XFxcIjI1XFxcIj48L3RoPlxcbiAgICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgICAgIDwvdGhlYWQ+XFxuICAgICAgICAgICAgICA8dGJvZHk+XFxuICAgICAgICAgICAgICAgIDx0ciBuZy1yZXBlYXQ9XFxcImJhc2ljU2VsZWN0Um93IGluIGxlZnRQYW5lbEN0cmwuYmFzaWNTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MgfCBmaWx0ZXI6YmFzaWNTZWxlY3RGaWx0ZXIgYXMgYmFzaWNTZWxlY3RSb3dcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDx0ZCBzdC1yYXRpbz1cXFwiMjBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAge3skaW5kZXh9fVxcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICAgICAgPHRkIHN0LXJhdGlvPVxcXCI1NVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICB7e2Jhc2ljU2VsZWN0Um93Lm9wdGlvbn19XFxuICAgICAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgICAgICA8dGQgc3QtcmF0aW89XFxcIjI1XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInB1bGwtcmlnaHRcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cXFwibGVmdFBhbmVsQ3RybC51cFRoaXNSb3coJGluZGV4KVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLWFycm93LXVwXFxcIj48L2k+XFxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cXFwibGVmdFBhbmVsQ3RybC5kb3duVGhpc1JvdygkaW5kZXgpXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cXFwiZmEgZmEtYXJyb3ctZG93blxcXCI+PC9pPlxcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJidG4gYnRuLWRhbmdlclxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cXFwibGVmdFBhbmVsQ3RybC5yZW1vdmVSb3coJGluZGV4KVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLXRyYXNoLW9cXFwiPjwvaT5cXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgPC90ZD5cXG4gICAgICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgICAgIDwvdGJvZHk+XFxuICAgICAgICAgICAgPC90YWJsZT5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgIFxcdDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICAgICAgPGxhYmVsXFxuICAgICAgICAgICAgICBmb3I9XFxcIkRlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFxcXCI+XFxuICAgICAgICAgICAgICBEZXNjcmlwdGlvbiA6XFxuICAgICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJcXFwiPlxcbiAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgICAgIG5nLW1vZGVsPVxcXCJsZWZ0UGFuZWxDdHJsLnByb3h5TW9kZWwudGVtcG9yeUNvbmZpZy5mb3JtbHlEZXNjcmlwdGlvblxcXCJcXG4gICAgICAgICAgICAgICAgaWQ9XFxcIkRlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwiQWRkIC8gZWRpdCBkZXNjcmlwdGlvbiBoZXJlXFxcIj5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIFxcdDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPGxlZnQtcGFuZWwtdmFsaWQtZWRpdC1mb290ZXIgLz5cXG48L2Rpdj5cXG5cIlxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2xlZnRQYW5lbC9CYXNpY1NlbGVjdENvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkubGVmdHBhbmVsLmJhc2ljU2VsZWN0Q29udHJvbC50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSA0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 49 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _edaDragDropWayFormlyProxyFormFieldManage = __webpack_require__(50);\n\nvar _edaDragDropWayFormlyProxyFormFieldManage2 = _interopRequireDefault(_edaDragDropWayFormlyProxyFormFieldManage);\n\nvar _edaDragDropWayFormlyProxyFormFieldManage3 = __webpack_require__(51);\n\nvar _edaDragDropWayFormlyProxyFormFieldManage4 = _interopRequireDefault(_edaDragDropWayFormlyProxyFormFieldManage3);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar FORMLY_PROXY_MODULE = '';\n\nexports.default = angular.module(FORMLY_PROXY_MODULE, []).service(_edaDragDropWayFormlyProxyFormFieldManage.FORM_FIELD_MANAGE_SERVICE, _edaDragDropWayFormlyProxyFormFieldManage2.default).provider(_edaDragDropWayFormlyProxyFormFieldManage3.EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER, _edaDragDropWayFormlyProxyFormFieldManage4.default);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZm9ybWx5UHJveHkvZWRhRHJhZ0Ryb3BXYXkuZm9ybWx5UHJveHkuZm9ybUZpZWxkTWFuYWdlLm1vZHVsZS5qcz9kZmRmIl0sIm5hbWVzIjpbIkZPUk1MWV9QUk9YWV9NT0RVTEUiLCJhbmd1bGFyIiwibW9kdWxlIiwic2VydmljZSIsInByb3ZpZGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUlBOzs7Ozs7QUFNQSxJQUFNQSxzQkFBc0IsRUFBNUI7O2tCQUVlQyxRQUNFQyxNQURGLENBQ1NGLG1CQURULEVBQzhCLEVBRDlCLEVBRUVHLE9BRkYsMEhBR0VDLFFBSEYsd0kiLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZm9ybUZpZWxkTWFuYWdlLCB7XG4gIEZPUk1fRklFTERfTUFOQUdFX1NFUlZJQ0Vcbn0gICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi9lZGFEcmFnRHJvcFdheS5mb3JtbHlQcm94eS5mb3JtRmllbGRNYW5hZ2Uuc2VydmljZSc7XG5cbmltcG9ydCBFYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHMsIHtcbiAgRUFTWV9GT1JNX0ZPUk1MWV9CSU5ESU5HX01PREVMX1BST1ZJREVSXG59ICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vZWRhRHJhZ0Ryb3BXYXkuZm9ybWx5UHJveHkuZm9ybUZpZWxkTWFuYWdlLnByb3ZpZGVyJztcblxuXG5cbmNvbnN0IEZPUk1MWV9QUk9YWV9NT0RVTEUgPSAnJztcblxuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuICAgICAgICAgICAgICAgIC5tb2R1bGUoRk9STUxZX1BST1hZX01PRFVMRSwgW10pXG4gICAgICAgICAgICAgICAgLnNlcnZpY2UoRk9STV9GSUVMRF9NQU5BR0VfU0VSVklDRSwgZm9ybUZpZWxkTWFuYWdlKVxuICAgICAgICAgICAgICAgIC5wcm92aWRlcihFQVNZX0ZPUk1fRk9STUxZX0JJTkRJTkdfTU9ERUxfUFJPVklERVIsIEVhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVscyk7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2Zvcm1seVByb3h5L2VkYURyYWdEcm9wV2F5LmZvcm1seVByb3h5LmZvcm1GaWVsZE1hbmFnZS5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 50 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar FORM_FIELD_MANAGE_SERVICE = 'formFieldManage';\n\nvar formFieldManage = function () {\n function formFieldManage(EasyFormGenFormlyBindingModels) {\n _classCallCheck(this, formFieldManage);\n\n this.EasyFormGenFormlyBindingModels = EasyFormGenFormlyBindingModels;\n this.init();\n }\n\n _createClass(formFieldManage, [{\n key: 'init',\n value: function init() {}\n\n /**\n * At initial state : configuration model will contain 1 line, since :\n * -> it is non sense to create a form without a single line (no line = no form at all)\n * -> so it is non sense to force user to add a first line\n *\n * PLEASE NOTE columns array contains objects that look like formly fields one\n */\n\n }, {\n key: 'initConfigurationEditFromScratch',\n value: function initConfigurationEditFromScratch(configurationModel, addStepWayProperties) {\n var configurationModelInit = this.EasyFormGenFormlyBindingModels.getEasyFormInitialStateConfigurationModel(addStepWayProperties);\n angular.copy(configurationModelInit, configurationModel);\n }\n\n /**\n * Get an configuration empty (no init line) then empty it with lines array provided in param\n * @param object - configurationModel [configuration model]\n * @param array - lines [an array : lines to apply to an empty configuration model]\n * @param bool - addStepWayProperties [description]\n * @return {object message} [give details on how it happened to caller]\n */\n\n }, {\n key: 'bindConfigurationLines',\n value: function bindConfigurationLines(configurationModel, lines, addStepWayProperties) {\n if (Object.prototype.toString.call(lines) === '[object Array]') {\n var configurationModelResult = this.EasyFormGenFormlyBindingModels.getEasyFormReloadConfigurationModel(addStepWayProperties);\n configurationModelResult.lines = [].concat(lines);\n angular.copy(configurationModelResult, configurationModel);\n return this.getMessageObject('configuration model is bound', 'lines are bound to configuration model.');\n } else {\n return this.getErrorObject('lines is not an array', 'Checks lines type, it is not an array.');\n }\n }\n\n /**\n * applyConfigurationToformlyModel :\n * - bind configuration model into formly field model\n * - reset dataModel (formlyfield may have changed so previous dataModel would be false)\n * @param configurationModel\n * @param formlyModel\n * @param formlyDataModel\n */\n\n }, {\n key: 'applyConfigurationToformlyModel',\n value: function applyConfigurationToformlyModel(configurationModel, formlyModel, formlyDataModel) {\n this.resetFormlyModel(formlyModel);\n this.resetDataModel(formlyDataModel);\n var lineNumber = configurationModel.lines.length;\n for (var i = 0; i < lineNumber; i++) {\n this.AddNColumnControl(formlyModel, configurationModel, i);\n }\n }\n }, {\n key: 'resetFormlyModel',\n value: function resetFormlyModel(formlyModel) {\n var resetformly = [];\n angular.copy(resetformly, formlyModel);\n }\n }, {\n key: 'AddNColumnControl',\n value: function AddNColumnControl(formlyModel, configurationModel, lineIndex) {\n var _this = this;\n\n var numberOfColumns = configurationModel.lines[lineIndex].columns.length;\n /**\n * push formly model\n * here : only className and empty fieldGroup (controls != header)\n * if header will be reset to set a template (at least we have now indexFormlyModel)\n */\n var rawFormlyModel = {\n className: 'row',\n fieldGroup: []\n };\n //get index formlyModel for this line :\n var indexFormlyModel = formlyModel.push(rawFormlyModel) - 1;\n\n // iterates through controls in the line\n configurationModel.lines[lineIndex].columns.forEach(function (column) {\n var controlTemplate = {};\n if (typeof controlTemplate !== 'undefined' &&\n // column.control.type !== 'header' &&\n // column.control.type !== 'subTitle' &&\n column.control.type !== 'none') {\n /**\n * controls : getFormlyControlTemplateForNcolumnLine()\n *\n * @PARAM numberOfColumns : integer to deduce cssClss to apply\n * @PARAM column.control.type : to add if needed specific properties (example : datepicker)\n */\n if (column.control.type === 'header' || column.control.type === 'subTitle') {\n var headerTextContent = column.control.templateOptions.description;\n controlTemplate.template = _this.EasyFormGenFormlyBindingModels.getHeaderTemplateForNcolumnLine(numberOfColumns, headerTextContent).template;\n controlTemplate.className = _this.EasyFormGenFormlyBindingModels.getRawHeaderTemplates().selectedClass;\n } else {\n controlTemplate = _this.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(numberOfColumns, column.control.type);\n /**\n * NEED REFACTOR HERE\n * should bind properties dynamically\n *\n * TODO need to validate all controls (datepicker may not work)\n * need to refactor\n */\n controlTemplate.className = column.control.className;\n controlTemplate.type = column.control.type;\n controlTemplate.key = column.control.key;\n controlTemplate.templateOptions.type = column.control.templateOptions.type;\n controlTemplate.templateOptions.label = column.control.templateOptions.label;\n controlTemplate.templateOptions.required = column.control.templateOptions.required;\n controlTemplate.templateOptions.placeholder = column.control.templateOptions.placeholder;\n controlTemplate.templateOptions.description = column.control.templateOptions.description;\n controlTemplate.templateOptions.options = [].concat(column.control.templateOptions.options);\n\n if (typeof controlTemplate.templateOptions.datepickerPopup !== 'undefined') column.control.templateOptions.datepickerPopup = controlTemplate.templateOptions.datepickerPopup;\n }\n /**\n * popuplate properties\n */\n\n /**\n * push control into formly model in its group\n */\n\n /**\n * need to catch this random error\n */\n formlyModel[indexFormlyModel].fieldGroup.push(controlTemplate);\n }\n });\n }\n }, {\n key: 'isTemplateOptionDefined',\n value: function isTemplateOptionDefined(obj) {\n return typeof obj.templateOptions !== 'undefined' ? true : false;\n }\n }, {\n key: 'extractTemplateOptionLabel',\n value: function extractTemplateOptionLabel(obj) {\n return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.label !== 'undefined' ? obj.templateOptions.label : '' : '';\n }\n }, {\n key: 'extractTemplateOptionDatepickerPopup',\n value: function extractTemplateOptionDatepickerPopup(obj) {\n return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.datepickerPopup !== 'undefined' ? obj.templateOptions.datepickerPopup : '' : '';\n }\n }, {\n key: 'extractTemplateOptionRequired',\n value: function extractTemplateOptionRequired(obj) {\n return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.required !== 'undefined' ? obj.templateOptions.required : '' : '';\n }\n //radio and select\n\n }, {\n key: 'extractTemplateOptionOptions',\n value: function extractTemplateOptionOptions(obj) {\n return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.options !== 'undefined' ? obj.templateOptions.options : '' : '';\n }\n }, {\n key: 'extractTemplateOptionType',\n value: function extractTemplateOptionType(obj) {\n return typeof obj.subtype !== 'undefined' ? obj.subtype : '';\n }\n }, {\n key: 'extractTemplateOptionPlaceholder',\n value: function extractTemplateOptionPlaceholder(obj) {\n return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.placeholder !== 'undefined' ? obj.templateOptions.placeholder : '' : '';\n }\n }, {\n key: 'extractTemplateOptionDescription',\n value: function extractTemplateOptionDescription(obj) {\n return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.description !== 'undefined' ? obj.templateOptions.description : '' : '';\n }\n\n // formly model functions\n\n }, {\n key: 'resetDataModel',\n value: function resetDataModel(obj) {\n var emptyDataModel = {};\n angular.copy(emptyDataModel, obj);\n return true;\n }\n\n // custom errors\n\n }, {\n key: 'getErrorObject',\n value: function getErrorObject(errorTitle, errorMessage) {\n var messageObj = {\n noError: false,\n title: '',\n Message: ''\n };\n messageObj.noError = false;\n messageObj.title = errorTitle;\n messageObj.Message = errorMessage;\n return messageObj;\n }\n }, {\n key: 'getMessageObject',\n value: function getMessageObject(messageTitle, messageBody) {\n var messageObj = {\n noError: false,\n title: '',\n Message: ''\n };\n messageObj.noError = true;\n messageObj.title = messageTitle;\n messageObj.Message = messageBody;\n return messageObj;\n }\n }]);\n\n return formFieldManage;\n}();\n\nformFieldManage.$inject = ['EasyFormGenFormlyBindingModels'];\n\nexports.default = formFieldManage;\nexports.FORM_FIELD_MANAGE_SERVICE = FORM_FIELD_MANAGE_SERVICE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZm9ybWx5UHJveHkvZWRhRHJhZ0Ryb3BXYXkuZm9ybWx5UHJveHkuZm9ybUZpZWxkTWFuYWdlLnNlcnZpY2UuanM/MTg3NyJdLCJuYW1lcyI6WyJGT1JNX0ZJRUxEX01BTkFHRV9TRVJWSUNFIiwiZm9ybUZpZWxkTWFuYWdlIiwiRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzIiwiaW5pdCIsImNvbmZpZ3VyYXRpb25Nb2RlbCIsImFkZFN0ZXBXYXlQcm9wZXJ0aWVzIiwiY29uZmlndXJhdGlvbk1vZGVsSW5pdCIsImdldEVhc3lGb3JtSW5pdGlhbFN0YXRlQ29uZmlndXJhdGlvbk1vZGVsIiwiYW5ndWxhciIsImNvcHkiLCJsaW5lcyIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsImNvbmZpZ3VyYXRpb25Nb2RlbFJlc3VsdCIsImdldEVhc3lGb3JtUmVsb2FkQ29uZmlndXJhdGlvbk1vZGVsIiwiY29uY2F0IiwiZ2V0TWVzc2FnZU9iamVjdCIsImdldEVycm9yT2JqZWN0IiwiZm9ybWx5TW9kZWwiLCJmb3JtbHlEYXRhTW9kZWwiLCJyZXNldEZvcm1seU1vZGVsIiwicmVzZXREYXRhTW9kZWwiLCJsaW5lTnVtYmVyIiwibGVuZ3RoIiwiaSIsIkFkZE5Db2x1bW5Db250cm9sIiwicmVzZXRmb3JtbHkiLCJsaW5lSW5kZXgiLCJudW1iZXJPZkNvbHVtbnMiLCJjb2x1bW5zIiwicmF3Rm9ybWx5TW9kZWwiLCJjbGFzc05hbWUiLCJmaWVsZEdyb3VwIiwiaW5kZXhGb3JtbHlNb2RlbCIsInB1c2giLCJmb3JFYWNoIiwiY29sdW1uIiwiY29udHJvbFRlbXBsYXRlIiwiY29udHJvbCIsInR5cGUiLCJoZWFkZXJUZXh0Q29udGVudCIsInRlbXBsYXRlT3B0aW9ucyIsImRlc2NyaXB0aW9uIiwidGVtcGxhdGUiLCJnZXRIZWFkZXJUZW1wbGF0ZUZvck5jb2x1bW5MaW5lIiwiZ2V0UmF3SGVhZGVyVGVtcGxhdGVzIiwic2VsZWN0ZWRDbGFzcyIsImdldEZvcm1seUNvbnRyb2xUZW1wbGF0ZUZvck5jb2x1bW5MaW5lIiwia2V5IiwibGFiZWwiLCJyZXF1aXJlZCIsInBsYWNlaG9sZGVyIiwib3B0aW9ucyIsImRhdGVwaWNrZXJQb3B1cCIsIm9iaiIsInN1YnR5cGUiLCJlbXB0eURhdGFNb2RlbCIsImVycm9yVGl0bGUiLCJlcnJvck1lc3NhZ2UiLCJtZXNzYWdlT2JqIiwibm9FcnJvciIsInRpdGxlIiwiTWVzc2FnZSIsIm1lc3NhZ2VUaXRsZSIsIm1lc3NhZ2VCb2R5IiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQU1BLDRCQUE0QixpQkFBbEM7O0lBRU1DLGU7QUFFSiwyQkFBWUMsOEJBQVosRUFBNEM7QUFBQTs7QUFDMUMsU0FBS0EsOEJBQUwsR0FBc0NBLDhCQUF0QztBQUNBLFNBQUtDLElBQUw7QUFDRDs7OzsyQkFFTSxDQUVOOztBQUVEOzs7Ozs7Ozs7O3FEQU9pQ0Msa0IsRUFBb0JDLG9CLEVBQXNCO0FBQ3pFLFVBQUlDLHlCQUF5QixLQUFLSiw4QkFBTCxDQUFvQ0sseUNBQXBDLENBQThFRixvQkFBOUUsQ0FBN0I7QUFDQUcsY0FBUUMsSUFBUixDQUFhSCxzQkFBYixFQUFxQ0Ysa0JBQXJDO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7MkNBT3VCQSxrQixFQUFvQk0sSyxFQUFPTCxvQixFQUFxQjtBQUNyRSxVQUFJTSxPQUFPQyxTQUFQLENBQWlCQyxRQUFqQixDQUEwQkMsSUFBMUIsQ0FBK0JKLEtBQS9CLE1BQTBDLGdCQUE5QyxFQUFpRTtBQUMvRCxZQUFJSywyQkFBMkIsS0FBS2IsOEJBQUwsQ0FBb0NjLG1DQUFwQyxDQUF3RVgsb0JBQXhFLENBQS9CO0FBQ0FVLGlDQUF5QkwsS0FBekIsR0FBaUMsR0FBR08sTUFBSCxDQUFVUCxLQUFWLENBQWpDO0FBQ0FGLGdCQUFRQyxJQUFSLENBQWFNLHdCQUFiLEVBQXVDWCxrQkFB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QWM7QUFDaEJDLGlCQUFZLEtBREk7QUFFaEJDLGVBQVksRUFGSTtBQUdoQkMsaUJBQVk7QUFISSxPQUFsQjtBQUtBSCxpQkFBV0MsT0FBWCxHQUFzQixLQUF0QjtBQUNBRCxpQkFBV0UsS0FBWCxHQUFzQkosVUFBdEI7QUFDQUUsaUJBQVdHLE9BQVgsR0FBc0JKLFlBQXRCO0FBQ0EsYUFBT0MsVUFBUDtBQUNEOzs7cUNBRWdCSSxZLEVBQWNDLFcsRUFBWTtBQUN6QyxVQUFJTCxhQUFjO0FBQ2hCQyxpQkFBWSxLQURJO0FBRWhCQyxlQUFZLEVBRkk7QUFHaEJDLGlCQUFZO0FBSEksT0FBbEI7QUFLQUgsaUJBQVdDLE9BQVgsR0FBd0IsSUFBeEI7QUFDQUQsaUJBQVdFLEtBQVgsR0FBd0JFLFlBQXhCO0FBQ0FKLGlCQUFXRyxPQUFYLEdBQXdCRSxXQUF4QjtBQUNBLGFBQU9MLFVBQVA7QUFDRDs7Ozs7O0FBSUg1RCxnQkFBZ0JrRSxPQUFoQixHQUEwQixDQUN4QixnQ0FEd0IsQ0FBMUI7O2tCQUllbEUsZTtRQUdiRCx5QixHQUFBQSx5QiIsImZpbGUiOiI1MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEZPUk1fRklFTERfTUFOQUdFX1NFUlZJQ0UgPSAnZm9ybUZpZWxkTWFuYWdlJztcblxuY2xhc3MgZm9ybUZpZWxkTWFuYWdle1xuXG4gIGNvbnN0cnVjdG9yKEVhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVscykge1xuICAgIHRoaXMuRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzID0gRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgaW5pdCgpIHtcblxuICB9XG5cbiAgLyoqXG4gICAqIEF0IGluaXRpYWwgc3RhdGUgOiBjb25maWd1cmF0aW9uIG1vZGVsIHdpbGwgY29udGFpbiAxIGxpbmUsIHNpbmNlIDpcbiAgICogICAgLT4gaXQgaXMgbm9uIHNlbnNlIHRvIGNyZWF0ZSBhIGZvcm0gd2l0aG91dCBhIHNpbmdsZSBsaW5lIChubyBsaW5lID0gbm8gZm9ybSBhdCBhbGwpXG4gICAqICAgIC0+IHNvIGl0IGlzIG5vbiBzZW5zZSB0byBmb3JjZSB1c2VyIHRvIGFkZCBhIGZpcnN0IGxpbmVcbiAgICpcbiAgICogIFBMRUFTRSBOT1RFIGNvbHVtbnMgYXJyYXkgY29udGFpbnMgb2JqZWN0cyB0aGF0IGxvb2sgbGlrZSBmb3JtbHkgZmllbGRzIG9uZVxuICAgKi9cbiAgaW5pdENvbmZpZ3VyYXRpb25FZGl0RnJvbVNjcmF0Y2goY29uZmlndXJhdGlvbk1vZGVsLCBhZGRTdGVwV2F5UHJvcGVydGllcykge1xuICAgIGxldCBjb25maWd1cmF0aW9uTW9kZWxJbml0ID0gdGhpcy5FYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHMuZ2V0RWFzeUZvcm1Jbml0aWFsU3RhdGVDb25maWd1cmF0aW9uTW9kZWwoYWRkU3RlcFdheVByb3BlcnRpZXMpO1xuICAgIGFuZ3VsYXIuY29weShjb25maWd1cmF0aW9uTW9kZWxJbml0LCBjb25maWd1cmF0aW9uTW9kZWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBjb25maWd1cmF0aW9uIGVtcHR5IChubyBpbml0IGxpbmUpIHRoZW4gZW1wdHkgaXQgd2l0aCBsaW5lcyBhcnJheSBwcm92aWRlZCBpbiBwYXJhbVxuICAgKiBAcGFyYW0gICBvYmplY3QgLSBjb25maWd1cmF0aW9uTW9kZWwgICBbY29uZmlndXJhdGlvbiBtb2RlbF1cbiAgICogQHBhcmFtICAgYXJyYXkgLSAgbGluZXMgICAgICAgICAgICAgICAgW2FuIGFycmF5IDogbGluZXMgdG8gYXBwbHkgdG8gYW4gZW1wdHkgY29uZmlndXJhdGlvbiBtb2RlbF1cbiAgICogQHBhcmFtICAgYm9vbCAtICAgYWRkU3RlcFdheVByb3BlcnRpZXMgW2Rlc2NyaXB0aW9uXVxuICAgKiBAcmV0dXJuIHtvYmplY3QgbWVzc2FnZX0gICAgICAgICAgICAgICBbZ2l2ZSBkZXRhaWxzIG9uIGhvdyBpdCBoYXBwZW5lZCB0byBjYWxsZXJdXG4gICAqL1xuICBiaW5kQ29uZmlndXJhdGlvbkxpbmVzKGNvbmZpZ3VyYXRpb25Nb2RlbCwgbGluZXMsIGFkZFN0ZXBXYXlQcm9wZXJ0aWVzKXtcbiAgICBpZiggT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGxpbmVzKSA9PT0gJ1tvYmplY3QgQXJyYXldJyApIHtcbiAgICAgIGxldCBjb25maWd1cmF0aW9uTW9kZWxSZXN1bHQgPSB0aGlzLkVhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVscy5nZXRFYXN5Rm9ybVJlbG9hZENvbmZpZ3VyYXRpb25Nb2RlbChhZGRTdGVwV2F5UHJvcGVydGllcyk7XG4gICAgICBjb25maWd1cmF0aW9uTW9kZWxSZXN1bHQubGluZXMgPSBbXS5jb25jYXQobGluZXMpO1xuICAgICAgYW5ndWxhci5jb3B5KGNvbmZpZ3VyYXRpb25Nb2RlbFJlc3VsdCwgY29uZmlndXJhdGlvbk1vZGVsKTtcbiAgICAgIHJldHVybiB0aGlzLmdldE1lc3NhZ2VPYmplY3QoJ2NvbmZpZ3VyYXRpb24gbW9kZWwgaXMgYm91bmQnLCdsaW5lcyBhcmUgYm91bmQgdG8gY29uZmlndXJhdGlvbiBtb2RlbC4nKTtcbiAgICB9ZWxzZXtcbiAgICAgIHJldHVybiB0aGlzLmdldEVycm9yT2JqZWN0KCdsaW5lcyBpcyBub3QgYW4gYXJyYXknLCAnQ2hlY2tzIGxpbmVzIHR5cGUsIGl0IGlzIG5vdCBhbiBhcnJheS4nKTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBhcHBseUNvbmZpZ3VyYXRpb25Ub2Zvcm1seU1vZGVsIDpcbiAgICogIC0gYmluZCBjb25maWd1cmF0aW9uIG1vZGVsIGludG8gZm9ybWx5IGZpZWxkIG1vZGVsXG4gICAqICAtIHJlc2V0IGRhdGFNb2RlbCAoZm9ybWx5ZmllbGQgbWF5IGhhdmUgY2hhbmdlZCBzbyBwcmV2aW91cyBkYXRhTW9kZWwgd291bGQgYmUgZmFsc2UpXG4gICAqIEBwYXJhbSAgY29uZmlndXJhdGlvbk1vZGVsXG4gICAqIEBwYXJhbSAgZm9ybWx5TW9kZWxcbiAgICogQHBhcmFtICBmb3JtbHlEYXRhTW9kZWxcbiAgICovXG4gIGFwcGx5Q29uZmlndXJhdGlvblRvZm9ybWx5TW9kZWwoY29uZmlndXJhdGlvbk1vZGVsLCBmb3JtbHlNb2RlbCwgZm9ybWx5RGF0YU1vZGVsKXtcbiAgICB0aGlzLnJlc2V0Rm9ybWx5TW9kZWwoZm9ybWx5TW9kZWwpO1xuICAgIHRoaXMucmVzZXREYXRhTW9kZWwoZm9ybWx5RGF0YU1vZGVsKTtcbiAgICBsZXQgbGluZU51bWJlciA9IGNvbmZpZ3VyYXRpb25Nb2RlbC5saW5lcy5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lTnVtYmVyOyBpKyspIHtcbiAgICAgIHRoaXMuQWRkTkNvbHVtbkNvbnRyb2woZm9ybWx5TW9kZWwsIGNvbmZpZ3VyYXRpb25Nb2RlbCwgaSk7XG4gICAgfVxuICB9XG5cblxuICByZXNldEZvcm1seU1vZGVsKGZvcm1seU1vZGVsKXtcbiAgICBsZXQgcmVzZXRmb3JtbHkgPSBbXTtcbiAgICBhbmd1bGFyLmNvcHkocmVzZXRmb3JtbHksIGZvcm1seU1vZGVsKTtcbiAgfVxuXG5cbiAgQWRkTkNvbHVtbkNvbnRyb2woZm9ybWx5TW9kZWwsIGNvbmZpZ3VyYXRpb25Nb2RlbCwgbGluZUluZGV4KXtcblxuICAgIGxldCBudW1iZXJPZkNvbHVtbnMgPSBjb25maWd1cmF0aW9uTW9kZWwubGluZXNbbGluZUluZGV4XS5jb2x1bW5zLmxlbmd0aDtcbiAgICAvKipcbiAgICAgKiBwdXNoIGZvcm1seSBtb2RlbFxuICAgICAqIGhlcmUgOiBvbmx5IGNsYXNzTmFtZSBhbmQgZW1wdHkgZmllbGRHcm91cCAoY29udHJvbHMgIT0gaGVhZGVyKVxuICAgICAqIGlmIGhlYWRlciB3aWxsIGJlIHJlc2V0IHRvIHNldCBhIHRlbXBsYXRlIChhdCBsZWFzdCB3ZSBoYXZlIG5vdyBpbmRleEZvcm1seU1vZGVsKVxuICAgICAqL1xuICAgIGxldCByYXdGb3JtbHlNb2RlbCA9IHtcbiAgICAgIGNsYXNzTmFtZSAgIDogJ3JvdycsXG4gICAgICBmaWVsZEdyb3VwICA6IFtdXG4gICAgfTtcbiAgICAvL2dldCBpbmRleCBmb3JtbHlNb2RlbCBmb3IgdGhpcyBsaW5lIDpcbiAgICBsZXQgaW5kZXhGb3JtbHlNb2RlbCA9ICBmb3JtbHlNb2RlbC5wdXNoKHJhd0Zvcm1seU1vZGVsKSAtIDEgO1xuXG4gICAgLy8gaXRlcmF0ZXMgdGhyb3VnaCBjb250cm9scyBpbiB0aGUgbGluZVxuICAgIGNvbmZpZ3VyYXRpb25Nb2RlbC5saW5lc1tsaW5lSW5kZXhdLmNvbHVtbnMuZm9yRWFjaCggKGNvbHVtbikgPT4ge1xuICAgICAgbGV0IGNvbnRyb2xUZW1wbGF0ZSA9IHt9O1xuICAgICAgaWYgKHR5cGVvZiBjb250cm9sVGVtcGxhdGUgICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgIC8vIGNvbHVtbi5jb250cm9sLnR5cGUgICAgICE9PSAnaGVhZGVyJyAgICAmJlxuICAgICAgICAgIC8vIGNvbHVtbi5jb250cm9sLnR5cGUgICAgICE9PSAnc3ViVGl0bGUnICAmJlxuICAgICAgICAgIGNvbHVtbi5jb250cm9sLnR5cGUgICAgICE9PSAnbm9uZScpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNvbnRyb2xzIDogZ2V0Rm9ybWx5Q29udHJvbFRlbXBsYXRlRm9yTmNvbHVtbkxpbmUoKVxuICAgICAgICAgKlxuICAgICAgICAgICogQFBBUkFNIG51bWJlck9mQ29sdW1ucyAgICAgICA6IGludGVnZXIgdG8gZGVkdWNlIGNzc0Nsc3MgdG8gYXBwbHlcbiAgICAgICAgICAqIEBQQVJBTSBjb2x1bW4uY29udHJvbC50eXBlICAgOiB0byBhZGQgaWYgbmVlZGVkIHNwZWNpZmljIHByb3BlcnRpZXMgKGV4YW1wbGUgOiBkYXRlcGlja2VyKVxuICAgICAgICAgICovXG4gICAgICAgIGlmKGNvbHVtbi5jb250cm9sLnR5cGUgID09PSAnaGVhZGVyJyB8fFxuICAgICAgICAgICAgY29sdW1uLmNvbnRyb2wudHlwZSAgPT09ICdzdWJUaXRsZScpe1xuICAgICAgICAgIGxldCBoZWFkZXJUZXh0Q29udGVudCAgICAgPSBjb2x1bW4uY29udHJvbC50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb247XG4gICAgICAgICAgY29udHJvbFRlbXBsYXRlLnRlbXBsYXRlICA9IHRoaXMuRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzLmdldEhlYWRlclRlbXBsYXRlRm9yTmNvbHVtbkxpbmUobnVtYmVyT2ZDb2x1bW5zLCBoZWFkZXJUZXh0Q29udGVudCkudGVtcGxhdGU7XG4gICAgICAgICAgY29udHJvbFRlbXBsYXRlLmNsYXNzTmFtZSA9IHRoaXMuRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzLmdldFJhd0hlYWRlclRlbXBsYXRlcygpLnNlbGVjdGVkQ2xhc3M7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udHJvbFRlbXBsYXRlID0gdGhpcy5FYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHMuZ2V0Rm9ybWx5Q29udHJvbFRlbXBsYXRlRm9yTmNvbHVtbkxpbmUobnVtYmVyT2ZDb2x1bW5zLCBjb2x1bW4uY29udHJvbC50eXBlKTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAqIE5FRUQgUkVGQUNUT1IgSEVSRVxuICAgICAgICAgICogc2hvdWxkIGJpbmQgcHJvcGVydGllcyBkeW5hbWljYWxseVxuICAgICAgICAgICpcbiAgICAgICAgICAqIFRPRE8gbmVlZCB0byB2YWxpZGF0ZSBhbGwgY29udHJvbHMgKGRhdGVwaWNrZXIgbWF5IG5vdCB3b3JrKVxuICAgICAgICAgICogbmVlZCB0byByZWZhY3RvclxuICAgICAgICAgICovXG4gICAgICAgICAgY29udHJvbFRlbXBsYXRlLmNsYXNzTmFtZSAgICAgICAgICAgICAgICAgICA9IGNvbHVtbi5jb250cm9sLmNsYXNzTmFtZTtcbiAgICAgICAgICBjb250cm9sVGVtcGxhdGUudHlwZSAgICAgICAgICAgICAgICAgICAgICAgID0gY29sdW1uLmNvbnRyb2wudHlwZTtcbiAgICAgICAgICBjb250cm9sVGVtcGxhdGUua2V5ICAgICAgICAgICAgICAgICAgICAgICAgID0gY29sdW1uLmNvbnRyb2wua2V5O1xuICAgICAgICAgIGNvbnRyb2xUZW1wbGF0ZS50ZW1wbGF0ZU9wdGlvbnMudHlwZSAgICAgICAgPSBjb2x1bW4uY29udHJvbC50ZW1wbGF0ZU9wdGlvbnMudHlwZTtcbiAgICAgICAgICBjb250cm9sVGVtcGxhdGUudGVtcGxhdGVPcHRpb25zLmxhYmVsICAgICAgID0gY29sdW1uLmNvbnRyb2wudGVtcGxhdGVPcHRpb25zLmxhYmVsO1xuICAgICAgICAgIGNvbnRyb2xUZW1wbGF0ZS50ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWQgICAgPSBjb2x1bW4uY29udHJvbC50ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWQ7XG4gICAgICAgICAgY29udHJvbFRlbXBsYXRlLnRlbXBsYXRlT3B0aW9ucy5wbGFjZWhvbGRlciA9IGNvbHVtbi5jb250cm9sLnRlbXBsYXRlT3B0aW9ucy5wbGFjZWhvbGRlcjtcbiAgICAgICAgICBjb250cm9sVGVtcGxhdGUudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uID0gY29sdW1uLmNvbnRyb2wudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uO1xuICAgICAgICAgIGNvbnRyb2xUZW1wbGF0ZS50ZW1wbGF0ZU9wdGlvbnMub3B0aW9ucyAgICAgPSBbXS5jb25jYXQoY29sdW1uLmNvbnRyb2wudGVtcGxhdGVPcHRpb25zLm9wdGlvbnMpO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBjb250cm9sVGVtcGxhdGUudGVtcGxhdGVPcHRpb25zLmRhdGVwaWNrZXJQb3B1cCAhPT0gJ3VuZGVmaW5lZCcpICBjb2x1bW4uY29udHJvbC50ZW1wbGF0ZU9wdGlvbnMuZGF0ZXBpY2tlclBvcHVwID0gY29udHJvbFRlbXBsYXRlLnRlbXBsYXRlT3B0aW9ucy5kYXRlcGlja2VyUG9wdXAgIDtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogcG9wdXBsYXRlIHByb3BlcnRpZXNcbiAgICAgICAgICovXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHB1c2ggY29udHJvbCBpbnRvIGZvcm1seSBtb2RlbCBpbiBpdHMgZ3JvdXBcbiAgICAgICAgICovXG5cbiAgICAgICAgICAvKipcbiAgICAgICAgICAqIG5lZWQgdG8gY2F0Y2ggdGhpcyByYW5kb20gZXJyb3JcbiAgICAgICAgICAqL1xuICAgICAgICAgIGZvcm1seU1vZGVsW2luZGV4Rm9ybWx5TW9kZWxdLmZpZWxkR3JvdXAucHVzaChjb250cm9sVGVtcGxhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGlzVGVtcGxhdGVPcHRpb25EZWZpbmVkKG9iail7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmoudGVtcGxhdGVPcHRpb25zICE9PSAndW5kZWZpbmVkJyA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIGV4dHJhY3RUZW1wbGF0ZU9wdGlvbkxhYmVsKG9iail7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmoudGVtcGxhdGVPcHRpb25zICE9PSAndW5kZWZpbmVkJyA/ICh0eXBlb2Ygb2JqLnRlbXBsYXRlT3B0aW9ucy5sYWJlbCAhPT0gJ3VuZGVmaW5lZCc/IG9iai50ZW1wbGF0ZU9wdGlvbnMubGFiZWw6ICcnKSA6ICcnO1xuICB9XG5cbiAgZXh0cmFjdFRlbXBsYXRlT3B0aW9uRGF0ZXBpY2tlclBvcHVwKG9iail7XG4gICAgcmV0dXJuICB0eXBlb2Ygb2JqLnRlbXBsYXRlT3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgPyAodHlwZW9mIG9iai50ZW1wbGF0ZU9wdGlvbnMuZGF0ZXBpY2tlclBvcHVwICE9PSAndW5kZWZpbmVkJz8gb2JqLnRlbXBsYXRlT3B0aW9ucy5kYXRlcGlja2VyUG9wdXA6ICcnKSA6ICcnO1xuICB9XG5cbiAgZXh0cmFjdFRlbXBsYXRlT3B0aW9uUmVxdWlyZWQob2JqKXtcbiAgICByZXR1cm4gIHR5cGVvZiBvYmoudGVtcGxhdGVPcHRpb25zICE9PSAndW5kZWZpbmVkJyA/ICh0eXBlb2Ygb2JqLnRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZCAhPT0gJ3VuZGVmaW5lZCc/IG9iai50ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWQ6ICcnKSA6ICcnO1xuICB9XG4gIC8vcmFkaW8gYW5kIHNlbGVjdFxuICBleHRyYWN0VGVtcGxhdGVPcHRpb25PcHRpb25zKG9iail7XG4gICAgcmV0dXJuICB0eXBlb2Ygb2JqLnRlbXBsYXRlT3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgPyAodHlwZW9mIG9iai50ZW1wbGF0ZU9wdGlvbnMub3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCc/IG9iai50ZW1wbGF0ZU9wdGlvbnMub3B0aW9uczogJycpIDogJyc7XG4gIH1cblxuICBleHRyYWN0VGVtcGxhdGVPcHRpb25UeXBlKG9iail7XG4gICAgcmV0dXJuICB0eXBlb2Ygb2JqLnN1YnR5cGUgIT09ICd1bmRlZmluZWQnPyBvYmouc3VidHlwZTogJyc7XG4gIH1cblxuICBleHRyYWN0VGVtcGxhdGVPcHRpb25QbGFjZWhvbGRlcihvYmope1xuICAgIHJldHVybiAgdHlwZW9mIG9iai50ZW1wbGF0ZU9wdGlvbnMgIT09ICd1bmRlZmluZWQnID8gKHR5cGVvZiBvYmoudGVtcGxhdGVPcHRpb25zLnBsYWNlaG9sZGVyICE9PSAndW5kZWZpbmVkJz8gb2JqLnRlbXBsYXRlT3B0aW9ucy5wbGFjZWhvbGRlcjogJycpIDogJyc7XG4gIH1cblxuICBleHRyYWN0VGVtcGxhdGVPcHRpb25EZXNjcmlwdGlvbihvYmope1xuICAgIHJldHVybiAgdHlwZW9mIG9iai50ZW1wbGF0ZU9wdGlvbnMgIT09ICd1bmRlZmluZWQnID8gKHR5cGVvZiBvYmoudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uICE9PSAndW5kZWZpbmVkJz8gb2JqLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbjogJycpIDogJyc7XG4gIH1cblxuICAvLyBmb3JtbHkgbW9kZWwgZnVuY3Rpb25zXG4gIHJlc2V0RGF0YU1vZGVsKG9iail7XG4gICAgbGV0IGVtcHR5RGF0YU1vZGVsID0ge307XG4gICAgYW5ndWxhci5jb3B5KGVtcHR5RGF0YU1vZGVsLCBvYmopO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gY3VzdG9tIGVycm9yc1xuICBnZXRFcnJvck9iamVjdChlcnJvclRpdGxlLCBlcnJvck1lc3NhZ2Upe1xuICAgIGxldCBtZXNzYWdlT2JqID0gIHtcbiAgICAgIG5vRXJyb3IgICA6IGZhbHNlLFxuICAgICAgdGl0bGUgICAgIDogJycsXG4gICAgICBNZXNzYWdlICAgOiAnJ1xuICAgIH07XG4gICAgbWVzc2FnZU9iai5ub0Vycm9yICA9IGZhbHNlO1xuICAgIG1lc3NhZ2VPYmoudGl0bGUgICAgPSBlcnJvclRpdGxlO1xuICAgIG1lc3NhZ2VPYmouTWVzc2FnZSAgPSBlcnJvck1lc3NhZ2U7XG4gICAgcmV0dXJuIG1lc3NhZ2VPYmo7XG4gIH1cblxuICBnZXRNZXNzYWdlT2JqZWN0KG1lc3NhZ2VUaXRsZSwgbWVzc2FnZUJvZHkpe1xuICAgIGxldCBtZXNzYWdlT2JqID0gIHtcbiAgICAgIG5vRXJyb3IgICA6IGZhbHNlLFxuICAgICAgdGl0bGUgICAgIDogJycsXG4gICAgICBNZXNzYWdlICAgOiAnJ1xuICAgIH07XG4gICAgbWVzc2FnZU9iai5ub0Vycm9yICAgID0gdHJ1ZTtcbiAgICBtZXNzYWdlT2JqLnRpdGxlICAgICAgPSBtZXNzYWdlVGl0bGU7XG4gICAgbWVzc2FnZU9iai5NZXNzYWdlICAgID0gbWVzc2FnZUJvZHk7XG4gICAgcmV0dXJuIG1lc3NhZ2VPYmo7XG4gIH1cblxufVxuXG5mb3JtRmllbGRNYW5hZ2UuJGluamVjdCA9IFtcbiAgJ0Vhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVscydcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGZvcm1GaWVsZE1hbmFnZTtcblxuZXhwb3J0IHtcbiAgRk9STV9GSUVMRF9NQU5BR0VfU0VSVklDRVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9mb3JtbHlQcm94eS9lZGFEcmFnRHJvcFdheS5mb3JtbHlQcm94eS5mb3JtRmllbGRNYW5hZ2Uuc2VydmljZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 51 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _edaDragDropWayFormlyProxyFormFieldManageProvider = __webpack_require__(52);\n\nvar helpers = _interopRequireWildcard(_edaDragDropWayFormlyProxyFormFieldManageProvider);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER = 'EasyFormGenFormlyBindingModels';\n\nfunction EasyFormGenFormlyBindingModels() {\n\n var _easyFormListControls = helpers.initEasyFormListControls();\n var _easyFormEmptyConfigurationLineModel = helpers.initEasyFormEmptyConfigurationLineModel();\n var _emptyControlFieldModel = helpers.initEmptyControlFieldModel();\n var _easyFormInitialStateConfigurationModel = helpers.initEasyFormInitialStateConfigurationModel(_easyFormEmptyConfigurationLineModel);\n var _easyFormInitialStateConfigurationModelAddOnForStepWay = helpers.initEasyFormInitialStateConfigurationModelAddOnForStepWay();\n var _easyFormReloadConfigurationModel = helpers.initEasyFormReloadConfigurationModel();\n var _headerTemplates = helpers.initHeaderTemplates();\n var _formlyControlTemplates = helpers.initFormlyControlTemplates();\n var _particularControlProperties = helpers.initParticularControlProperties();\n\n this.getAllParticularControlProperties = getAllParticularControlProperties;\n this.addParticularControlProperties = addParticularControlProperties;\n this.getEasyFormListControls = getEasyFormListControls;\n this.addEasyFormControlToList = addEasyFormControlToList;\n this.getHeaderTemplates = getHeaderTemplates;\n this.addHeaderTemplateCssClass = addHeaderTemplateCssClass;\n this.getFormlyControlTemplate = getFormlyControlTemplate;\n this.addformlyControlTemplatesCssClass = addformlyControlTemplatesCssClass;\n this.setFormlyControlTemplate = setFormlyControlTemplate;\n this.$get = getFct;\n\n function getAllParticularControlProperties() {\n return _particularControlProperties;\n }\n\n function addParticularControlProperties(newParticularControlProperty) {\n // test object param has waited properties\n if ('controlType' in newParticularControlProperty && 'properties' in newParticularControlProperty) {\n var isAnUpdate = false;\n if (_particularControlProperties.length > 0) {\n _particularControlProperties.forEach(function (controlProp) {\n if (controlProp.controlType === newParticularControlProperty.controlType) {\n controlProp.properties = [].concat(newParticularControlProperty.properties);\n isAnUpdate = true;\n }\n });\n }\n if (!isAnUpdate) {\n _particularControlProperties.push(newParticularControlProperty);\n }\n }\n return _particularControlProperties;\n }\n\n function getEasyFormListControls() {\n return _easyFormListControls;\n }\n\n function addEasyFormControlToList(controlDeclaration) {\n if (typeof controlDeclaration !== 'undefined') {\n _easyFormListControls.controls.push(controlDeclaration);\n }\n }\n\n function getHeaderTemplates() {\n return _headerTemplates;\n }\n\n function addHeaderTemplateCssClass(cssClassToAdd) {\n if (typeof cssClassToAdd !== 'undefined') {\n _headerTemplates.cssClass.push(cssClassToAdd);\n }\n }\n\n function getFormlyControlTemplate() {\n return _formlyControlTemplates;\n }\n\n function addformlyControlTemplatesCssClass(cssClassToAdd) {\n if (typeof cssClassToAdd !== 'undefined') {\n _formlyControlTemplates.className.push(cssClassToAdd);\n }\n }\n\n function setFormlyControlTemplate(newFormlyControlTemplate) {\n if ('className' in newFormlyControlTemplate && 'type' in newFormlyControlTemplate && 'key' in newFormlyControlTemplate && 'templateOptions' in newFormlyControlTemplate) {\n _formlyControlTemplates = angular.copy(newFormlyControlTemplate);\n }\n return true;\n }\n\n getFct.$inject = [];\n function getFct() {\n var service = {\n getEasyFormListControls: getEasyFormListControlsFct,\n getEasyFormInitialStateConfigurationModel: getEasyFormInitialStateConfigurationModel,\n getEasyFormReloadConfigurationModel: getEasyFormReloadConfigurationModel,\n getEasyFormEmptyConfigurationLineModel: getEasyFormEmptyConfigurationLineModel,\n getEasyFormConfigurationEmptyControlModel: getEasyFormConfigurationEmptyControlModel,\n getRawHeaderTemplates: getRawHeaderTemplates,\n getHeaderTemplateForNcolumnLine: getHeaderTemplateForNcolumnLine,\n getRawFormlyControlTemplates: getRawFormlyControlTemplates,\n getFormlyControlTemplateForNcolumnLine: getFormlyControlTemplateForNcolumnLine\n };\n return service;\n\n function getEasyFormListControlsFct() {\n return _easyFormListControls;\n }\n\n function getEasyFormInitialStateConfigurationModel(addStepWayProperties) {\n var initialConfigurationModel = angular.copy(_easyFormInitialStateConfigurationModel);\n if (typeof addStepWayProperties !== 'undefined') {\n if (addStepWayProperties) {\n // add properties specific to step way\n angular.extend(initialConfigurationModel, _easyFormInitialStateConfigurationModelAddOnForStepWay);\n }\n }\n return initialConfigurationModel;\n }\n\n function getEasyFormReloadConfigurationModel(addStepWayProperties) {\n var initialConfigurationModel = angular.copy(_easyFormReloadConfigurationModel);\n if (typeof addStepWayProperties !== 'undefined') {\n if (addStepWayProperties) {\n // add properties specific to step way\n angular.extend(initialConfigurationModel, _easyFormInitialStateConfigurationModelAddOnForStepWay);\n }\n }\n return initialConfigurationModel;\n }\n\n function getEasyFormEmptyConfigurationLineModel() {\n return _easyFormEmptyConfigurationLineModel;\n }\n\n function getEasyFormConfigurationEmptyControlModel() {\n return _emptyControlFieldModel;\n }\n\n function getRawHeaderTemplates() {\n return _headerTemplates;\n }\n\n function getHeaderTemplateForNcolumnLine(nbColInLines, textContent) {\n if (typeof nbColInLines !== 'undefined' && typeof textContent !== 'undefined') {\n if (nbColInLines === parseInt(nbColInLines, 10)) {\n if (nbColInLines <= _headerTemplates.cssClass.length) {\n var headerToReturn = {};\n headerToReturn.className = _headerTemplates.cssClass[nbColInLines - 1];\n // header html property depends this property dont forget to set it before reading html property\n _headerTemplates.textContent = textContent;\n _headerTemplates.selectedClass = headerToReturn.className;\n headerToReturn.template = [_headerTemplates.simpleHtml1, textContent, _headerTemplates.simpleHtml2].join('');\n return headerToReturn;\n }\n }\n }\n }\n\n function getRawFormlyControlTemplates() {\n return _formlyControlTemplates;\n }\n\n function getFormlyControlTemplateForNcolumnLine(nbColInLines, controlType) {\n if (typeof nbColInLines !== 'undefined') {\n if (nbColInLines === parseInt(nbColInLines, 10)) {\n if (nbColInLines <= _formlyControlTemplates.className.length) {\n var _ret = function () {\n var controlToReturn = angular.copy(_formlyControlTemplates);\n controlToReturn.className = _formlyControlTemplates.className[nbColInLines - 1];\n // throw `it should have a bug upper line`;\n /* eslint no-console:0 */\n console.warn('it should have a bug upper line');\n /**\n * check controlType: it may require another particular property\n */\n if (typeof controlType !== 'undefined') {\n _particularControlProperties.forEach(function (controlProp) {\n if (controlProp.controlType === controlType) {\n /**\n * add all properties this controlType has\n * \n * NOTE : dot expression and bracket expression to access object property\n * http://www.ecma-international.org/ecma-262/5.1/#sec-11.2.1\n */\n controlProp.properties.forEach(function (aPropToAdd) {\n if (aPropToAdd.isRoot) controlToReturn[aPropToAdd.value] = '';\n if (aPropToAdd.isTemplateOptions) controlToReturn.templateOptions[aPropToAdd.value] = '';\n });\n }\n });\n }\n return {\n v: controlToReturn\n };\n }();\n\n if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n }\n }\n }\n }\n }\n}\n\nEasyFormGenFormlyBindingModels.$inject = [];\n\nexports.default = EasyFormGenFormlyBindingModels;\nexports.EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER = EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZm9ybWx5UHJveHkvZWRhRHJhZ0Ryb3BXYXkuZm9ybWx5UHJveHkuZm9ybUZpZWxkTWFuYWdlLnByb3ZpZGVyLmpzPzAxNDgiXSwibmFtZXMiOlsiaGVscGVycyIsIkVBU1lfRk9STV9GT1JNTFlfQklORElOR19NT0RFTF9QUk9WSURFUiIsIkVhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVscyIsIl9lYXN5Rm9ybUxpc3RDb250cm9scyIsImluaXRFYXN5Rm9ybUxpc3RDb250cm9scyIsIl9lYXN5Rm9ybUVtcHR5Q29uZmlndXJhdGlvbkxpbmVNb2RlbCIsImluaXRFYXN5Rm9ybUVtcHR5Q29uZmlndXJhdGlvbkxpbmVNb2RlbCIsIl9lbXB0eUNvbnRyb2xGaWVsZE1vZGVsIiwiaW5pdEVtcHR5Q29udHJvbEZpZWxkTW9kZWwiLCJfZWFzeUZvcm1Jbml0aWFsU3RhdGVDb25maWd1cmF0aW9uTW9kZWwiLCJpbml0RWFzeUZvcm1Jbml0aWFsU3RhdGVDb25maWd1cmF0aW9uTW9kZWwiLCJfZWFzeUZvcm1Jbml0aWFsU3RhdGVDb25maWd1cmF0aW9uTW9kZWxBZGRPbkZvclN0ZXBXYXkiLCJpbml0RWFzeUZvcm1Jbml0aWFsU3RhdGVDb25maWd1cmF0aW9uTW9kZWxBZGRPbkZvclN0ZXBXYXkiLCJfZWFzeUZvcm1SZWxvYWRDb25maWd1cmF0aW9uTW9kZWwiLCJpbml0RWFzeUZvcm1SZWxvYWRDb25maWd1cmF0aW9uTW9kZWwiLCJfaGVhZGVyVGVtcGxhdGVzIiwiaW5pdEhlYWRlclRlbXBsYXRlcyIsIl9mb3JtbHlDb250cm9sVGVtcGxhdGVzIiwiaW5pdEZvcm1seUNvbnRyb2xUZW1wbGF0ZXMiLCJfcGFydGljdWxhckNvbnRyb2xQcm9wZXJ0aWVzIiwiaW5pdFBhcnRpY3VsYXJDb250cm9sUHJvcGVydGllcyIsImdldEFsbFBhcnRpY3VsYXJDb250cm9sUHJvcGVydGllcyIsImFkZFBhcnRpY3VsYXJDb250cm9sUHJvcGVydGllcyIsImdldEVhc3lGb3JtTGlzdENvbnRyb2xzIiwiYWRkRWFzeUZvcm1Db250cm9sVG9MaXN0IiwiZ2V0SGVhZGVyVGVtcGxhdGVzIiwiYWRkSGVhZGVyVGVtcGxhdGVDc3NDbGFzcyIsImdldEZvcm1seUNvbnRyb2xUZW1wbGF0ZSIsImFkZGZvcm1seUNvbnRyb2xUZW1wbGF0ZXNDc3NDbGFzcyIsInNldEZvcm1seUNvbnRyb2xUZW1wbGF0ZSIsIiRnZXQiLCJnZXRGY3QiLCJuZXdQYXJ0aWN1bGFyQ29udHJvbFByb3BlcnR5IiwiaXNBblVwZGF0ZSIsImxlbmd0aCIsImZvckVhY2giLCJjb250cm9sUHJvcCIsImNvbnRyb2xUeXBlIiwicHJvcGVydGllcyIsImNvbmNhdCIsInB1c2giLCJjb250cm9sRGVjbGFyYXRpb24iLCJjb250cm9scyIsImNzc0NsYXNzVG9BZGQiLCJjc3NDbGFzcyIsImNsYXNzTmFtZSIsIm5ld0Zvcm1seUNvbnRyb2xUZW1wbGF0ZSIsImFuZ3VsYXIiLCJjb3B5IiwiJGluamVjdCIsInNlcnZpY2UiLCJnZXRFYXN5Rm9ybUxpc3RDb250cm9sc0ZjdCIsImdldEVhc3lGb3JtSW5pdGlhbFN0YXRlQ29uZmlndXJhdGlvbk1vZGVsIiwiZ2V0RWFzeUZvcm1SZWxvYWRDb25maWd1cmF0aW9uTW9kZWwiLCJnZXRFYXN5Rm9ybUVtcHR5Q29uZmlndXJhdGlvbkxpbmVNb2RlbCIsImdldEVhc3lGb3JtQ29uZmlndXJhdGlvbkVtcHR5Q29udHJvbE1vZGVsIiwiZ2V0UmF3SGVhZGVyVGVtcGxhdGVzIiwiZ2V0SGVhZGVyVGVtcGxhdGVGb3JOY29sdW1uTGluZSIsImdldFJhd0Zvcm1seUNvbnRyb2xUZW1wbGF0ZXMiLCJnZXRGb3JtbHlDb250cm9sVGVtcGxhdGVGb3JOY29sdW1uTGluZSIsImFkZFN0ZXBXYXlQcm9wZXJ0aWVzIiwiaW5pdGlhbENvbmZpZ3VyYXRpb25Nb2RlbCIsImV4dGVuZCIsIm5iQ29sSW5MaW5lcyIsInRleHRDb250ZW50IiwicGFyc2VJbnQiLCJoZWFkZXJUb1JldHVybiIsInNlbGVjdGVkQ2xhc3MiLCJ0ZW1wbGF0ZSIsInNpbXBsZUh0bWwxIiwic2ltcGxlSHRtbDIiLCJqb2luIiwiY29udHJvbFRvUmV0dXJuIiwiY29uc29sZSIsIndhcm4iLCJhUHJvcFRvQWRkIiwiaXNSb290IiwidmFsdWUiLCJpc1RlbXBsYXRlT3B0aW9ucyIsInRlbXBsYXRlT3B0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0lBQVlBLE87Ozs7QUFFWixJQUFNQywwQ0FBMEMsZ0NBQWhEOztBQUVBLFNBQVNDLDhCQUFULEdBQXlDOztBQUV2QyxNQUFJQyx3QkFBMERILFFBQVFJLHdCQUFSLEVBQTlEO0FBQ0EsTUFBSUMsdUNBQTBETCxRQUFRTSx1Q0FBUixFQUE5RDtBQUNBLE1BQUlDLDBCQUEwRFAsUUFBUVEsMEJBQVIsRUFBOUQ7QUFDQSxNQUFJQywwQ0FBMERULFFBQVFVLDBDQUFSLENBQW1ETCxvQ0FBbkQsQ0FBOUQ7QUFDQSxNQUFJTSx5REFBMERYLFFBQVFZLHlEQUFSLEVBQTlEO0FBQ0EsTUFBSUMsb0NBQTBEYixRQUFRYyxvQ0FBUixFQUE5RDtBQUNBLE1BQUlDLG1CQUEwRGYsUUFBUWdCLG1CQUFSLEVBQTlEO0FBQ0EsTUFBSUMsMEJBQTBEakIsUUFBUWtCLDBCQUFSLEVBQTlEO0FBQ0EsTUFBSUMsK0JBQTBEbkIsUUFBUW9CLCtCQUFSLEVBQTlEOztBQUVBLE9BQUtDLGlDQUFMLEdBQThEQSxpQ0FBOUQ7QUFDQSxPQUFLQyw4QkFBTCxHQUE4REEsOEJBQTlEO0FBQ0EsT0FBS0MsdUJBQUwsR0FBOERBLHVCQUE5RDtBQUNBLE9BQUtDLHdCQUFMLEdBQThEQSx3QkFBOUQ7QUFDQSxPQUFLQyxrQkFBTCxHQUE4REEsa0JBQTlEO0FBQ0EsT0FBS0MseUJBQUwsR0FBOERBLHlCQUE5RDtBQUNBLE9BQUtDLHdCQUFMLEdBQThEQSx3QkFBOUQ7QUFDQSxPQUFLQyxpQ0FBTCxHQUE4REEsaUNBQTlEO0FBQ0Es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QUFDRDtBQUFBLG1CQUFPTDtBQUFQO0FBekI2RDs7QUFBQTtBQTBCOUQ7QUFDRjtBQUNGO0FBQ0Y7QUFHSjtBQUdGOztBQUdEdEUsK0JBQStCK0MsT0FBL0IsR0FBeUMsRUFBekM7O2tCQUVlL0MsOEI7UUFHYkQsdUMsR0FBQUEsdUMiLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBoZWxwZXJzIGZyb20gJy4vZWRhRHJhZ0Ryb3BXYXkuZm9ybWx5UHJveHkuZm9ybUZpZWxkTWFuYWdlLnByb3ZpZGVyLmhlbHBlcnMnO1xuXG5jb25zdCBFQVNZX0ZPUk1fRk9STUxZX0JJTkRJTkdfTU9ERUxfUFJPVklERVIgPSAnRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzJztcblxuZnVuY3Rpb24gRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzKCl7XG5cbiAgbGV0IF9lYXN5Rm9ybUxpc3RDb250cm9scyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPVx0aGVscGVycy5pbml0RWFzeUZvcm1MaXN0Q29udHJvbHMoKTtcbiAgbGV0IF9lYXN5Rm9ybUVtcHR5Q29uZmlndXJhdGlvbkxpbmVNb2RlbCAgICAgICAgICAgICAgICAgICAgPSBoZWxwZXJzLmluaXRFYXN5Rm9ybUVtcHR5Q29uZmlndXJhdGlvbkxpbmVNb2RlbCgpO1xuICBsZXQgX2VtcHR5Q29udHJvbEZpZWxkTW9kZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGhlbHBlcnMuaW5pdEVtcHR5Q29udHJvbEZpZWxkTW9kZWwoKTtcbiAgbGV0IF9lYXN5Rm9ybUluaXRpYWxTdGF0ZUNvbmZpZ3VyYXRpb25Nb2RlbCAgICAgICAgICAgICAgICAgPSBoZWxwZXJzLmluaXRFYXN5Rm9ybUluaXRpYWxTdGF0ZUNvbmZpZ3VyYXRpb25Nb2RlbChfZWFzeUZvcm1FbXB0eUNvbmZpZ3VyYXRpb25MaW5lTW9kZWwpO1xuICBsZXQgX2Vhc3lGb3JtSW5pdGlhbFN0YXRlQ29uZmlndXJhdGlvbk1vZGVsQWRkT25Gb3JTdGVwV2F5ICA9IGhlbHBlcnMuaW5pdEVhc3lGb3JtSW5pdGlhbFN0YXRlQ29uZmlndXJhdGlvbk1vZGVsQWRkT25Gb3JTdGVwV2F5KCk7XG4gIGxldCBfZWFzeUZvcm1SZWxvYWRDb25maWd1cmF0aW9uTW9kZWwgICAgICAgICAgICAgICAgICAgICAgID0gaGVscGVycy5pbml0RWFzeUZvcm1SZWxvYWRDb25maWd1cmF0aW9uTW9kZWwoKTtcbiAgbGV0IF9oZWFkZXJUZW1wbGF0ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBoZWxwZXJzLmluaXRIZWFkZXJUZW1wbGF0ZXMoKTsgXG4gIGxldCBfZm9ybWx5Q29udHJvbFRlbXBsYXRlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gaGVscGVycy5pbml0Rm9ybWx5Q29udHJvbFRlbXBsYXRlcygpOyAgXG4gIGxldCBfcGFydGljdWxhckNvbnRyb2xQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gaGVscGVycy5pbml0UGFydGljdWxhckNvbnRyb2xQcm9wZXJ0aWVzKCk7ICBcbiAgXG4gIHRoaXMuZ2V0QWxsUGFydGljdWxhckNvbnRyb2xQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgID0gZ2V0QWxsUGFydGljdWxhckNvbnRyb2xQcm9wZXJ0aWVzO1xuICB0aGlzLmFkZFBhcnRpY3VsYXJDb250cm9sUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICA9IGFkZFBhcnRpY3VsYXJDb250cm9sUHJvcGVydGllcztcbiAgdGhpcy5nZXRFYXN5Rm9ybUxpc3RDb250cm9scyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXRFYXN5Rm9ybUxpc3RDb250cm9scztcbiAgdGhpcy5hZGRFYXN5Rm9ybUNvbnRyb2xUb0xpc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBhZGRFYXN5Rm9ybUNvbnRyb2xUb0xpc3Q7XG4gIHRoaXMuZ2V0SGVhZGVyVGVtcGxhdGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gZ2V0SGVhZGVyVGVtcGxhdGVzO1xuICB0aGlzLmFkZEhlYWRlclRlbXBsYXRlQ3NzQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGFkZEhlYWRlclRlbXBsYXRlQ3NzQ2xhc3M7XG4gIHRoaXMuZ2V0Rm9ybWx5Q29udHJvbFRlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gZ2V0Rm9ybWx5Q29udHJvbFRlbXBsYXRlO1xuICB0aGlzLmFkZGZvcm1seUNvbnRyb2xUZW1wbGF0ZXNDc3NDbGFzcyAgICAgICAgICAgICAgICAgICAgICA9IGFkZGZvcm1seUNvbnRyb2xUZW1wbGF0ZXNDc3NDbGFzcztcbiAgdGhpcy5zZXRGb3JtbHlDb250cm9sVGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBzZXRGb3JtbHlDb250cm9sVGVtcGxhdGU7XG4gIHRoaXMuJGdldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gZ2V0RmN0O1xuICBcbiAgZnVuY3Rpb24gZ2V0QWxsUGFydGljdWxhckNvbnRyb2xQcm9wZXJ0aWVzKCl7XG4gICAgcmV0dXJuIF9wYXJ0aWN1bGFyQ29udHJvbFByb3BlcnRpZXM7XG4gIH0gICAgXG4gICAgXG4gIGZ1bmN0aW9uIGFkZFBhcnRpY3VsYXJDb250cm9sUHJvcGVydGllcyhuZXdQYXJ0aWN1bGFyQ29udHJvbFByb3BlcnR5KXtcbiAgICAvLyB0ZXN0IG9iamVjdCBwYXJhbSBoYXMgd2FpdGVkIHByb3BlcnRpZXNcbiAgICBpZiAoKCdjb250cm9sVHlwZScgXHRpbiBuZXdQYXJ0aWN1bGFyQ29udHJvbFByb3BlcnR5KSAmJlxuICAgICAgICAoJ3Byb3BlcnRpZXMnIFx0aW4gbmV3UGFydGljdWxhckNvbnRyb2xQcm9wZXJ0eSkpIHtcbiAgICAgIGxldCBpc0FuVXBkYXRlID0gZmFsc2U7XG4gICAgICBpZiAoIF9wYXJ0aWN1bGFyQ29udHJvbFByb3BlcnRpZXMubGVuZ3RoID4gMCApIHtcbiAgICAgICAgX3BhcnRpY3VsYXJDb250cm9sUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uKGNvbnRyb2xQcm9wKXtcbiAgICAgICAgICBpZiAoY29udHJvbFByb3AuY29udHJvbFR5cGUgPT09IG5ld1BhcnRpY3VsYXJDb250cm9sUHJvcGVydHkuY29udHJvbFR5cGUpIHtcbiAgICAgICAgICAgIGNvbnRyb2xQcm9wLnByb3BlcnRpZXMgPSBbXS5jb25jYXQobmV3UGFydGljdWxhckNvbnRyb2xQcm9wZXJ0eS5wcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIGlzQW5VcGRhdGUgPSB0cnVlO1xuICAgICAgICAgIH1cdFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBblVwZGF0ZSkge1xuICAgICAgICBfcGFydGljdWxhckNvbnRyb2xQcm9wZXJ0aWVzLnB1c2gobmV3UGFydGljdWxhckNvbnRyb2xQcm9wZXJ0eSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfcGFydGljdWxhckNvbnRyb2xQcm9wZXJ0aWVzO1x0XHRcdFxuICB9ICBcblxuICBmdW5jdGlvbiBnZXRFYXN5Rm9ybUxpc3RDb250cm9scygpIHtcbiAgICByZXR1cm4gX2Vhc3lGb3JtTGlzdENvbnRyb2xzO1xuICB9XG4gXG4gIGZ1bmN0aW9uIGFkZEVhc3lGb3JtQ29udHJvbFRvTGlzdChjb250cm9sRGVjbGFyYXRpb24pIHtcbiAgICBpZiAodHlwZW9mIGNvbnRyb2xEZWNsYXJhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpe1xuICAgICAgX2Vhc3lGb3JtTGlzdENvbnRyb2xzLmNvbnRyb2xzLnB1c2goY29udHJvbERlY2xhcmF0aW9uKTtcbiAgICB9XG4gIH1cbiAgXG4gIGZ1bmN0aW9uIGdldEhlYWRlclRlbXBsYXRlcygpIHtcbiAgICByZXR1cm4gX2hlYWRlclRlbXBsYXRlcztcbiAgfVxuICBcbiAgZnVuY3Rpb24gYWRkSGVhZGVyVGVtcGxhdGVDc3NDbGFzcyhjc3NDbGFzc1RvQWRkKXtcbiAgICBpZiAodHlwZW9mIGNzc0NsYXNzVG9BZGQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBfaGVhZGVyVGVtcGxhdGVzLmNzc0NsYXNzLnB1c2goY3NzQ2xhc3NUb0FkZCk7XG4gICAgfVxuICB9XG4gIFxuICBmdW5jdGlvbiBnZXRGb3JtbHlDb250cm9sVGVtcGxhdGUoKSB7XG4gICAgcmV0dXJuIF9mb3JtbHlDb250cm9sVGVtcGxhdGVzO1xuICB9XG4gIFxuICBmdW5jdGlvbiBhZGRmb3JtbHlDb250cm9sVGVtcGxhdGVzQ3NzQ2xhc3MoY3NzQ2xhc3NUb0FkZCl7XG4gICAgaWYgKHR5cGVvZiBjc3NDbGFzc1RvQWRkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgX2Zvcm1seUNvbnRyb2xUZW1wbGF0ZXMuY2xhc3NOYW1lLnB1c2goY3NzQ2xhc3NUb0FkZCk7XG4gICAgfVxuICB9ICBcbiAgXG4gIGZ1bmN0aW9uIHNldEZvcm1seUNvbnRyb2xUZW1wbGF0ZShuZXdGb3JtbHlDb250cm9sVGVtcGxhdGUpIHtcbiAgICBpZiAoKCdjbGFzc05hbWUnXHRcdFx0XHRpbiBuZXdGb3JtbHlDb250cm9sVGVtcGxhdGUpICYmXG4gICAgICAgICgndHlwZScgXHRcdFx0XHRcdFx0aW4gbmV3Rm9ybWx5Q29udHJvbFRlbXBsYXRlKSAmJlxuICAgICAgICAoJ2tleScgXHRcdFx0XHRcdFx0XHRpbiBuZXdGb3JtbHlDb250cm9sVGVtcGxhdGUpICYmXG4gICAgICAgICgndGVtcGxhdGVPcHRpb25zJykgaW4gbmV3Rm9ybWx5Q29udHJvbFRlbXBsYXRlKSB7XG4gICAgICBfZm9ybWx5Q29udHJvbFRlbXBsYXRlcyA9IGFuZ3VsYXIuY29weShuZXdGb3JtbHlDb250cm9sVGVtcGxhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAgXG4gIFxuICBnZXRGY3QuJGluamVjdCA9IFtdO1xuICBmdW5jdGlvbiBnZXRGY3QoKXtcbiAgICBsZXQgc2VydmljZSA9IHtcbiAgICAgIGdldEVhc3lGb3JtTGlzdENvbnRyb2xzICAgICAgICAgICAgICAgICAgIDogZ2V0RWFzeUZvcm1MaXN0Q29udHJvbHNGY3QsXG4gICAgICBnZXRFYXN5Rm9ybUluaXRpYWxTdGF0ZUNvbmZpZ3VyYXRpb25Nb2RlbCA6IGdldEVhc3lGb3JtSW5pdGlhbFN0YXRlQ29uZmlndXJhdGlvbk1vZGVsLFxuICAgICAgZ2V0RWFzeUZvcm1SZWxvYWRDb25maWd1cmF0aW9uTW9kZWwgICAgICAgOiBnZXRFYXN5Rm9ybVJlbG9hZENvbmZpZ3VyYXRpb25Nb2RlbCxcbiAgICAgIGdldEVhc3lGb3JtRW1wdHlDb25maWd1cmF0aW9uTGluZU1vZGVsICAgIDogZ2V0RWFzeUZvcm1FbXB0eUNvbmZpZ3VyYXRpb25MaW5lTW9kZWwsXG4gICAgICBnZXRFYXN5Rm9ybUNvbmZpZ3VyYXRpb25FbXB0eUNvbnRyb2xNb2RlbCA6IGdldEVhc3lGb3JtQ29uZmlndXJhdGlvbkVtcHR5Q29udHJvbE1vZGVsLFxuICAgICAgZ2V0UmF3SGVhZGVyVGVtcGxhdGVzICAgICAgICAgICAgICAgICAgICAgOiBnZXRSYXdIZWFkZXJUZW1wbGF0ZXMsXG4gICAgICBnZXRIZWFkZXJUZW1wbGF0ZUZvck5jb2x1bW5MaW5lICAgICAgICAgICA6IGdldEhlYWRlclRlbXBsYXRlRm9yTmNvbHVtbkxpbmUsXG4gICAgICBnZXRSYXdGb3JtbHlDb250cm9sVGVtcGxhdGVzICAgICAgICAgICAgICA6IGdldFJhd0Zvcm1seUNvbnRyb2xUZW1wbGF0ZXMsXG4gICAgICBnZXRGb3JtbHlDb250cm9sVGVtcGxhdGVGb3JOY29sdW1uTGluZSAgICA6IGdldEZvcm1seUNvbnRyb2xUZW1wbGF0ZUZvck5jb2x1bW5MaW5lXG4gICAgfTtcbiAgICByZXR1cm4gc2VydmljZTtcbiAgICBcbiAgICBmdW5jdGlvbiBnZXRFYXN5Rm9ybUxpc3RDb250cm9sc0ZjdCgpIHtcbiAgICAgIHJldHVybiBfZWFzeUZvcm1MaXN0Q29udHJvbHM7XG4gICAgfVxuICAgIFxuICAgIGZ1bmN0aW9uIGdldEVhc3lGb3JtSW5pdGlhbFN0YXRlQ29uZmlndXJhdGlvbk1vZGVsKGFkZFN0ZXBXYXlQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgaW5pdGlhbENvbmZpZ3VyYXRpb25Nb2RlbCA9IGFuZ3VsYXIuY29weShfZWFzeUZvcm1Jbml0aWFsU3RhdGVDb25maWd1cmF0aW9uTW9kZWwpO1xuICAgICAgaWYgKHR5cGVvZiBhZGRTdGVwV2F5UHJvcGVydGllcyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKGFkZFN0ZXBXYXlQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgIC8vIGFkZCBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIHN0ZXAgd2F5XG4gICAgICAgICAgYW5ndWxhci5leHRlbmQoaW5pdGlhbENvbmZpZ3VyYXRpb25Nb2RlbCwgX2Vhc3lGb3JtSW5pdGlhbFN0YXRlQ29uZmlndXJhdGlvbk1vZGVsQWRkT25Gb3JTdGVwV2F5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGluaXRpYWxDb25maWd1cmF0aW9uTW9kZWw7ICAgICAgXG4gICAgfVxuICAgIFxuICAgIGZ1bmN0aW9uIGdldEVhc3lGb3JtUmVsb2FkQ29uZmlndXJhdGlvbk1vZGVsKGFkZFN0ZXBXYXlQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgaW5pdGlhbENvbmZpZ3VyYXRpb25Nb2RlbCA9IGFuZ3VsYXIuY29weShfZWFzeUZvcm1SZWxvYWRDb25maWd1cmF0aW9uTW9kZWwpO1xuICAgICAgaWYgKHR5cGVvZiBhZGRTdGVwV2F5UHJvcGVydGllcyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKGFkZFN0ZXBXYXlQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgLy8gYWRkIHByb3BlcnRpZXMgc3BlY2lmaWMgdG8gc3RlcCB3YXlcbiAgICAgICAgICBhbmd1bGFyLmV4dGVuZChpbml0aWFsQ29uZmlndXJhdGlvbk1vZGVsLCBfZWFzeUZvcm1Jbml0aWFsU3RhdGVDb25maWd1cmF0aW9uTW9kZWxBZGRPbkZvclN0ZXBXYXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaW5pdGlhbENvbmZpZ3VyYXRpb25Nb2RlbDsgICAgICBcbiAgICB9XG4gICAgXG4gICAgZnVuY3Rpb24gZ2V0RWFzeUZvcm1FbXB0eUNvbmZpZ3VyYXRpb25MaW5lTW9kZWwoKSB7XG4gICAgICByZXR1cm4gX2Vhc3lGb3JtRW1wdHlDb25maWd1cmF0aW9uTGluZU1vZGVsOyAgICAgIFxuICAgIH1cbiAgICBcbiAgICBmdW5jdGlvbiBnZXRFYXN5Rm9ybUNvbmZpZ3VyYXRpb25FbXB0eUNvbnRyb2xNb2RlbCgpIHtcbiAgICAgIHJldHVybiBfZW1wdHlDb250cm9sRmllbGRNb2RlbDsgICAgICBcbiAgICB9XG4gICAgXG4gICAgZnVuY3Rpb24gZ2V0UmF3SGVhZGVyVGVtcGxhdGVzKCkge1xuICAgICAgcmV0dXJuIF9oZWFkZXJUZW1wbGF0ZXM7XG4gICAgfVxuICAgIFxuICAgIGZ1bmN0aW9uIGdldEhlYWRlclRlbXBsYXRlRm9yTmNvbHVtbkxpbmUobmJDb2xJbkxpbmVzLCB0ZXh0Q29udGVudCkge1xuICAgICAgaWYgKHR5cGVvZiBuYkNvbEluTGluZXMgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgdHlwZW9mIHRleHRDb250ZW50IFx0IT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmIChuYkNvbEluTGluZXMgPT09IHBhcnNlSW50KG5iQ29sSW5MaW5lcywgMTApKSB7XG4gICAgICAgICAgaWYgKG5iQ29sSW5MaW5lcyA8PSAgX2hlYWRlclRlbXBsYXRlcy5jc3NDbGFzcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCBoZWFkZXJUb1JldHVybiAgICAgICAgPSB7fTtcbiAgICAgICAgICAgIGhlYWRlclRvUmV0dXJuLmNsYXNzTmFtZSAgPSBfaGVhZGVyVGVtcGxhdGVzLmNzc0NsYXNzW25iQ29sSW5MaW5lcyAtIDFdO1xuICAgICAgICAgICAgLy8gaGVhZGVyIGh0bWwgcHJvcGVydHkgZGVwZW5kcyB0aGlzIHByb3BlcnR5IGRvbnQgZm9yZ2V0IHRvIHNldCBpdCBiZWZvcmUgcmVhZGluZyBodG1sIHByb3BlcnR5XG4gICAgICAgICAgICBfaGVhZGVyVGVtcGxhdGVzLnRleHRDb250ZW50ID0gdGV4dENvbnRlbnQ7XG4gICAgICAgICAgICBfaGVhZGVyVGVtcGxhdGVzLnNlbGVjdGVkQ2xhc3MgPSBoZWFkZXJUb1JldHVybi5jbGFzc05hbWU7XG4gICAgICAgICAgICBoZWFkZXJUb1JldHVybi50ZW1wbGF0ZSA9IFtcbiAgICAgICAgICAgICAgX2hlYWRlclRlbXBsYXRlcy5zaW1wbGVIdG1sMSxcbiAgICAgICAgICAgICAgdGV4dENvbnRlbnQsXG4gICAgICAgICAgICAgIF9oZWFkZXJUZW1wbGF0ZXMuc2ltcGxlSHRtbDJcbiAgICAgICAgICAgIF0uam9pbignJyk7XG4gICAgICAgICAgICByZXR1cm4gaGVhZGVyVG9SZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9ICAgICAgXG4gICAgfVxuICAgIFxuICAgIGZ1bmN0aW9uIGdldFJhd0Zvcm1seUNvbnRyb2xUZW1wbGF0ZXMoKSB7XG4gICAgICByZXR1cm4gX2Zvcm1seUNvbnRyb2xUZW1wbGF0ZXM7XG4gICAgfSBcbiAgICBcbiAgICBcbiAgICBmdW5jdGlvbiBnZXRGb3JtbHlDb250cm9sVGVtcGxhdGVGb3JOY29sdW1uTGluZShuYkNvbEluTGluZXMsIGNvbnRyb2xUeXBlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbmJDb2xJbkxpbmVzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGlmIChuYkNvbEluTGluZXMgPT09IHBhcnNlSW50KG5iQ29sSW5MaW5lcywgMTApKSB7XG4gICAgICAgICAgICBpZiAobmJDb2xJbkxpbmVzIDw9ICBfZm9ybWx5Q29udHJvbFRlbXBsYXRlcy5jbGFzc05hbWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGxldCBjb250cm9sVG9SZXR1cm4gICAgICAgPSBhbmd1bGFyLmNvcHkoX2Zvcm1seUNvbnRyb2xUZW1wbGF0ZXMpO1xuICAgICAgICAgICAgICBjb250cm9sVG9SZXR1cm4uY2xhc3NOYW1lID0gX2Zvcm1seUNvbnRyb2xUZW1wbGF0ZXMuY2xhc3NOYW1lW25iQ29sSW5MaW5lcyAtIDFdO1xuICAgICAgICAgICAgICAvLyB0aHJvdyBgaXQgc2hvdWxkIGhhdmUgYSBidWcgdXBwZXIgbGluZWA7XG4gICAgICAgICAgICAgIC8qIGVzbGludCBuby1jb25zb2xlOjAgKi9cbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBpdCBzaG91bGQgaGF2ZSBhIGJ1ZyB1cHBlciBsaW5lYCk7XG4gICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgKiBjaGVjayBjb250cm9sVHlwZTogaXQgbWF5IHJlcXVpcmUgYW5vdGhlciBwYXJ0aWN1bGFyIHByb3BlcnR5XG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRyb2xUeXBlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIF9wYXJ0aWN1bGFyQ29udHJvbFByb3BlcnRpZXMuZm9yRWFjaCgoY29udHJvbFByb3ApPT57XG4gICAgICAgICAgICAgICAgICBpZiAoY29udHJvbFByb3AuY29udHJvbFR5cGUgPT09IGNvbnRyb2xUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBhZGQgYWxsIHByb3BlcnRpZXMgdGhpcyBjb250cm9sVHlwZSBoYXNcbiAgICAgICAgICAgICAgICAgICAgICogXG4gICAgICAgICAgICAgICAgICAgICAqIE5PVEUgOiBkb3QgZXhwcmVzc2lvbiBhbmQgYnJhY2tldCBleHByZXNzaW9uIHRvIGFjY2VzcyBvYmplY3QgcHJvcGVydHlcbiAgICAgICAgICAgICAgICAgICAgICogaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzUuMS8jc2VjLTExLjIuMVxuICAgICAgICAgICAgICAgICAgICAgKi9cdFx0XHRcdFx0XHRcdFx0XHRcdFxuICAgICAgICAgICAgICAgICAgICBjb250cm9sUHJvcC5wcm9wZXJ0aWVzLmZvckVhY2goKGFQcm9wVG9BZGQpPT57XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGFQcm9wVG9BZGQuaXNSb290KSBjb250cm9sVG9SZXR1cm5bYVByb3BUb0FkZC52YWx1ZV0gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoYVByb3BUb0FkZC5pc1RlbXBsYXRlT3B0aW9ucykgY29udHJvbFRvUmV0dXJuLnRlbXBsYXRlT3B0aW9uc1thUHJvcFRvQWRkLnZhbHVlXSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cdFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBjb250cm9sVG9SZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9ICAgICAgIFxuICAgIFxuICAgIFxuICB9XG4gIFxuICBcbn1cblxuXG5FYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHMuJGluamVjdCA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBFYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHM7XG5cbmV4cG9ydCB7XG4gIEVBU1lfRk9STV9GT1JNTFlfQklORElOR19NT0RFTF9QUk9WSURFUlxufTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZm9ybWx5UHJveHkvZWRhRHJhZ0Ryb3BXYXkuZm9ybWx5UHJveHkuZm9ybUZpZWxkTWFuYWdlLnByb3ZpZGVyLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 52 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar initEasyFormListControls = exports.initEasyFormListControls = function initEasyFormListControls() {\n return {\n controls: [],\n selectedControl: 'none',\n temporyConfig: {\n selectedControl: 'none',\n formlyLabel: 'label',\n formlyRequired: false,\n formlyDescription: '',\n formlyPlaceholder: '',\n formlyOptions: []\n }\n };\n};\n\nvar initEasyFormEmptyConfigurationLineModel = exports.initEasyFormEmptyConfigurationLineModel = function initEasyFormEmptyConfigurationLineModel() {\n return {\n line: 1,\n activeColumn: 1,\n columns: [{\n numColumn: 1,\n exist: true,\n control: {\n type: 'none',\n key: 'none'\n }\n }]\n };\n};\n\nvar initEmptyControlFieldModel = exports.initEmptyControlFieldModel = function initEmptyControlFieldModel() {\n return {\n 'control': {\n 'type': 'none',\n 'key': 'none'\n }\n };\n};\n\nvar initEasyFormInitialStateConfigurationModel = exports.initEasyFormInitialStateConfigurationModel = function initEasyFormInitialStateConfigurationModel(_easyFormEmptyConfigurationLineModel) {\n // commun all easy form generator ways\n return {\n submitButtonText: 'submit',\n cancelButtonText: 'cancel',\n lines: [].concat(_easyFormEmptyConfigurationLineModel)\n };\n};\n\nvar initEasyFormInitialStateConfigurationModelAddOnForStepWay = exports.initEasyFormInitialStateConfigurationModelAddOnForStepWay = function initEasyFormInitialStateConfigurationModelAddOnForStepWay() {\n // specific easy form generator — step way — (not drag and drop way), needed for wizard management\n return {\n activeLine: 1,\n listConfigStep: ['init', 'first', 'second', 'third'],\n stepIndicators: [true, false, false, false],\n configStepCounter: 0\n };\n};\n\nvar initEasyFormReloadConfigurationModel = exports.initEasyFormReloadConfigurationModel = function initEasyFormReloadConfigurationModel() {\n var reloadConfigModel = initEasyFormInitialStateConfigurationModel();\n reloadConfigModel.lines = [];\n return reloadConfigModel;\n};\n\n// can't use arrow function here -> 'this' would be bound to caller rather than expected current returned object... \nvar initHeaderTemplates = exports.initHeaderTemplates = function initHeaderTemplates() {\n var headerTemplate = {\n cssClass: ['col-xs-12', 'col-xs-6', 'col-xs-4'],\n textContent: '',\n html_part1: ['
', '
'].join(''),\n html_part3: this.textContent,\n html_part4: [' ', ' ', ' '].join(''),\n simpleHtml1: ['
'].join(''),\n simpleHtml2: [' ', ' '].join('')\n };\n return headerTemplate;\n};\n\nvar initFormlyControlTemplates = exports.initFormlyControlTemplates = function initFormlyControlTemplates() {\n return {\n className: ['col-xs-12', 'col-xs-6', 'col-xs-4'],\n type: '',\n key: '',\n templateOptions: {\n type: '',\n label: '',\n required: '',\n placeholder: '',\n description: '',\n options: ''\n }\n };\n};\n\nvar initParticularControlProperties = exports.initParticularControlProperties = function initParticularControlProperties() {\n return [{\n controlType: 'datepicker',\n properties: [{\n isRoot: false,\n isTemplateOptions: true,\n value: 'datepickerPopup'\n }]\n }];\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZm9ybWx5UHJveHkvZWRhRHJhZ0Ryb3BXYXkuZm9ybWx5UHJveHkuZm9ybUZpZWxkTWFuYWdlLnByb3ZpZGVyLmhlbHBlcnMuanM/MDgyMiJdLCJuYW1lcyI6WyJpbml0RWFzeUZvcm1MaXN0Q29udHJvbHMiLCJjb250cm9scyIsInNlbGVjdGVkQ29udHJvbCIsInRlbXBvcnlDb25maWciLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlQbGFjZWhvbGRlciIsImZvcm1seU9wdGlvbnMiLCJpbml0RWFzeUZvcm1FbXB0eUNvbmZpZ3VyYXRpb25MaW5lTW9kZWwiLCJsaW5lIiwiYWN0aXZlQ29sdW1uIiwiY29sdW1ucyIsIm51bUNvbHVtbiIsImV4aXN0IiwiY29udHJvbCIsInR5cGUiLCJrZXkiLCJpbml0RW1wdHlDb250cm9sRmllbGRNb2RlbCIsImluaXRFYXN5Rm9ybUluaXRpYWxTdGF0ZUNvbmZpZ3VyYXRpb25Nb2RlbCIsIl9lYXN5Rm9ybUVtcHR5Q29uZmlndXJhdGlvbkxpbmVNb2RlbCIsInN1Ym1pdEJ1dHRvblRleHQiLCJjYW5jZWxCdXR0b25UZXh0IiwibGluZXMiLCJjb25jYXQiLCJpbml0RWFzeUZvcm1Jbml0aWFsU3RhdGVDb25maWd1cmF0aW9uTW9kZWxBZGRPbkZvclN0ZXBXYXkiLCJhY3RpdmVMaW5lIiwibGlzdENvbmZpZ1N0ZXAiLCJzdGVwSW5kaWNhdG9ycyIsImNvbmZpZ1N0ZXBDb3VudGVyIiwiaW5pdEVhc3lGb3JtUmVsb2FkQ29uZmlndXJhdGlvbk1vZGVsIiwicmVsb2FkQ29uZmlnTW9kZWwiLCJpbml0SGVhZGVyVGVtcGxhdGVzIiwiaGVhZGVyVGVtcGxhdGUiLCJjc3NDbGFzcyIsInRleHRDb250ZW50IiwiaHRtbF9wYXJ0MSIsImpvaW4iLCJzZWxlY3RlZENsYXNzIiwiaHRtbF9wYXJ0MiIsImh0bWxfcGFydDMiLCJodG1sX3BhcnQ0Iiwic2ltcGxlSHRtbDEiLCJzaW1wbGVIdG1sMiIsImluaXRGb3JtbHlDb250cm9sVGVtcGxhdGVzIiwiY2xhc3NOYW1lIiwidGVtcGxhdGVPcHRpb25zIiwibGFiZWwiLCJyZXF1aXJlZCIsInBsYWNlaG9sZGVyIiwiZGVzY3JpcHRpb24iLCJvcHRpb25zIiwiaW5pdFBhcnRpY3VsYXJDb250cm9sUHJvcGVydGllcyIsImNvbnRyb2xUeXBlIiwicHJvcGVydGllcyIsImlzUm9vdCIsImlzVGVtcGxhdGVPcHRpb25zIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQVEsSUFBTUEsOERBQTJCLFNBQTNCQSx3QkFBMkIsR0FBTTtBQUM3QyxTQUFPO0FBQ0xDLGNBQWtCLEVBRGI7QUFFTEMscUJBQWtCLE1BRmI7QUFHTEMsbUJBQWtCO0FBQ2hCRCx1QkFBbUIsTUFESDtBQUVoQkUsbUJBQWlCLE9BRkQ7QUFHaEJDLHNCQUFrQixLQUhGO0FBSWhCQyx5QkFBb0IsRUFKSjtBQUtoQkMseUJBQW9CLEVBTEo7QUFNaEJDLHFCQUFrQjtBQU5GO0FBSGIsR0FBUDtBQVlELENBYk87O0FBZUQsSUFBTUMsNEZBQTBDLFNBQTFDQSx1Q0FBMEMsR0FBTTtBQUMzRCxTQUFPO0FBQ0xDLFVBQVksQ0FEUDtBQUVMQyxrQkFBZ0IsQ0FGWDtBQUdMQyxhQUFhLENBQUM7QUFDWkMsaUJBQWEsQ0FERDtBQUVaQyxhQUFVLElBRkU7QUFHWkMsZUFBWTtBQUNWQyxjQUFLLE1BREs7QUFFVkMsYUFBSztBQUZLO0FBSEEsS0FBRDtBQUhSLEdBQVA7QUFZRCxDQWJNOztBQWVBLElBQU1DLGtFQUE2QixTQUE3QkEsMEJBQTZCLEdBQU07QUFDOUMsU0FBTztBQUNMLGVBQWM7QUFDWixjQUFVLE1BREU7QUFFWixhQUFVO0FBRkU7QUFEVCxHQUFQO0FBTUQsQ0FQTTs7QUFTQSxJQUFNQyxrR0FBNkMsU0FBN0NBLDBDQUE2QyxDQUFDQyxvQ0FBRCxFQUEwQztBQUNsRztBQUNBLFNBQU87QUFDTEMsc0JBQW9CLFFBRGY7QUFFTEMsc0JBQW9CLFFBRmY7QUFHTEMsV0FBUSxHQUFHQyxNQUFILENBQVVKLG9DQUFWO0FBSEgsR0FBUDtBQUtELENBUE07O0FBU0EsSUFBTUssZ0lBQTRELFNBQTVEQSx5REFBNEQsR0FBTTtBQUM3RTtBQUNBLFNBQU87QUFDTEMsZ0JBQWdCLENBRFg7QUFFTEMsb0JBQWtCLENBQ2hCLE1BRGdCLEVBRWhCLE9BRmdCLEVBR2hCLFFBSGdCLEVBSWhCLE9BSmdCLENBRmI7QUFRTEMsb0JBQWtCLENBQ2hCLElBRGdCLEVBRWhCLEtBRmdCLEVBR2hCLEtBSGdCLEVBSWhCLEtBSmdCLENBUmI7QUFjTEMsdUJBQW9CO0FBZGYsR0FBUDtBQWdCRCxDQWxCTTs7QUFvQkEsSUFBTUMsc0ZBQXVDLFNBQXZDQSxvQ0FBdUMsR0FBTTtBQUN4RCxNQUFJQyxvQkFBb0JaLDRDQUF4QjtBQUNBWSxvQkFBa0JSLEtBQWxCLEdBQTBCLEVBQTFCO0FBQ0EsU0FBT1EsaUJBQVA7QUFDRCxDQUpNOztBQU1QO0FBQ08sSUFBTUMsb0RBQXNCLFNBQXRCQSxtQkFBc0IsR0FBVztBQUM1QyxNQUFJQyxpQkFBaUI7QUFDbkJDLGNBQWEsQ0FBQyxXQUFELEVBQWMsVUFBZCxFQUEwQixVQUExQixDQURNO0FBRW5CQyxpQkFBYyxFQUZLO0FBR25CQyxnQkFBYyxDQUNFLGdCQURGLEVBRUlDLElBRkosQ0FFUyxFQUZULENBSEs7QUFNbkJDLG1CQUFnQixFQU5HO0FBT25CQyxnQkFBYyxDQUNFLElBREYsRUFFRSw4QkFGRixFQUdFRixJQUhGLENBR08sRUFIUCxDQVBLO0FBV25CRyxnQkFBYyxLQUFLTCxXQVhBO0FBWW5CTSxnQkFBZSxDQUNDLFVBREQsRUFFQyxXQUZELEVBR0MsVUFIRCxFQUlHSixJQUpILENBSVEsRUFKUixDQVpJO0FBaUJuQkssaUJBQWUsQ0FDQywwQkFERCxFQUVHTCxJQUZILENBRVEsRUFGUixDQWpCSTtBQW9CbkJNLGlCQUFlLENBQ0MsVUFERCxFQUVDLFdBRkQsRUFHR04sSUFISCxDQUdRLEVBSFI7QUFwQkksR0FBckI7QUF5QkEsU0FBUUosY0FBUjtBQUNELENBM0JNOztBQThCQSxJQUFNVyxrRUFBNkIsU0FBN0JBLDBCQUE2QixHQUFNO0FBQzlDLFNBQU87QUFDTEMsZUFBWSxDQUFDLFdBQUQsRUFBYyxVQUFkLEVBQTBCLFVBQTFCLENBRFA7QUFFTDdCLFVBQVksRUFGUDtBQUdMQyxTQUFZLEVBSFA7QUFJTDZCLHFCQUFpQjtBQUNmOUIsWUFBYyxFQURDO0FBRWYrQixhQUFjLEVBRkM7QUFHZkMsZ0JBQWMsRUFIQztBQUlmQyxtQkFBYyxFQUpDO0FBS2ZDLG1CQUFjLEVBTEM7QUFNZkMsZUFBYztBQU5DO0FBSlosR0FBUDtBQWFELENBZE07O0FBZ0JBLElBQU1DLDRFQUFrQyxTQUFsQ0EsK0JBQWtDLEdBQU07QUFDbkQsU0FBTyxDQUNMO0FBQ0VDLGlCQUFlLFlBRGpCO0FBRUVDLGdCQUFlLENBQ2I7QUFDQUMsY0FBZSxLQURmO0FBRUFDLHlCQUFvQixJQUZwQjtBQUdBQyxhQUFjO0FBSGQsS0FEYTtBQUZqQixHQURLLENBQVA7QUFZRCxDQWJNIiwiZmlsZSI6IjUyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIGV4cG9ydCBjb25zdCBpbml0RWFzeUZvcm1MaXN0Q29udHJvbHMgPSAoKSA9PiB7XG4gIHJldHVybiB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuICAgIGNvbnRyb2xzICAgICAgICA6IFtdLFxuICAgIHNlbGVjdGVkQ29udHJvbCA6ICdub25lJyAsXG4gICAgdGVtcG9yeUNvbmZpZyAgIDoge1xuICAgICAgc2VsZWN0ZWRDb250cm9sXHRcdDogJ25vbmUnLFxuICAgICAgZm9ybWx5TGFiZWxcdFx0XHRcdDogJ2xhYmVsJywgIFxuICAgICAgZm9ybWx5UmVxdWlyZWRcdFx0OiBmYWxzZSwgXG4gICAgICBmb3JtbHlEZXNjcmlwdGlvblx0OiAnJyxcbiAgICAgIGZvcm1seVBsYWNlaG9sZGVyXHQ6ICcnLFxuICAgICAgZm9ybWx5T3B0aW9ucyBcdFx0OiBbXVxuICAgIH0gXG4gIH07XG59O1xuICBcbmV4cG9ydCBjb25zdCBpbml0RWFzeUZvcm1FbXB0eUNvbmZpZ3VyYXRpb25MaW5lTW9kZWwgPSAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgbGluZSBcdFx0XHRcdFx0OiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgIGFjdGl2ZUNvbHVtbiBcdDogMSxcbiAgICBjb2x1bW5zIFx0XHRcdDogW3sgIFxuICAgICAgbnVtQ29sdW1uIFx0OiAxLFxuICAgICAgZXhpc3QgXHRcdFx0OnRydWUsIFxuICAgICAgY29udHJvbCBcdFx0OiB7XG4gICAgICAgIHR5cGU6J25vbmUnLFxuICAgICAgICBrZXk6ICdub25lJ1xuICAgICAgfVxuICAgIH1dXG4gIH07ICAgICAgXG59O1xuICBcbmV4cG9ydCBjb25zdCBpbml0RW1wdHlDb250cm9sRmllbGRNb2RlbCA9ICgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICAnY29udHJvbCcgXHRcdDoge1xuICAgICAgJ3R5cGUnICA6ICdub25lJyxcbiAgICAgICdrZXknICAgOiAnbm9uZSdcbiAgICB9XHRcbiAgfTsgIFxufTtcbiAgXG5leHBvcnQgY29uc3QgaW5pdEVhc3lGb3JtSW5pdGlhbFN0YXRlQ29uZmlndXJhdGlvbk1vZGVsID0gKF9lYXN5Rm9ybUVtcHR5Q29uZmlndXJhdGlvbkxpbmVNb2RlbCkgPT4ge1xuICAvLyBjb21tdW4gYWxsIGVhc3kgZm9ybSBnZW5lcmF0b3Igd2F5c1xuICByZXR1cm4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgc3VibWl0QnV0dG9uVGV4dCBcdDogJ3N1Ym1pdCcsXG4gICAgY2FuY2VsQnV0dG9uVGV4dCBcdDogJ2NhbmNlbCcsXG4gICAgbGluZXMgOiBbXS5jb25jYXQoX2Vhc3lGb3JtRW1wdHlDb25maWd1cmF0aW9uTGluZU1vZGVsKVxuICB9OyAgICBcbn07XG5cbmV4cG9ydCBjb25zdCBpbml0RWFzeUZvcm1Jbml0aWFsU3RhdGVDb25maWd1cmF0aW9uTW9kZWxBZGRPbkZvclN0ZXBXYXkgPSAoKSA9PiB7XG4gIC8vIHNwZWNpZmljIGVhc3kgZm9ybSBnZW5lcmF0b3Ig4oCUIHN0ZXAgd2F5IOKAlCAobm90IGRyYWcgYW5kIGRyb3Agd2F5KSwgbmVlZGVkIGZvciB3aXphcmQgbWFuYWdlbWVudFxuICByZXR1cm4ge1xuICAgIGFjdGl2ZUxpbmUgXHRcdFx0OiAxLCAgIFxuICAgIGxpc3RDb25maWdTdGVwIFx0OiBbXG4gICAgICAnaW5pdCcsXG4gICAgICAnZmlyc3QnLFxuICAgICAgJ3NlY29uZCcsXG4gICAgICAndGhpcmQnXG4gICAgXSxcbiAgICBzdGVwSW5kaWNhdG9ycyBcdDogW1xuICAgICAgdHJ1ZSxcbiAgICAgIGZhbHNlLFxuICAgICAgZmFsc2UsXG4gICAgICBmYWxzZVxuICAgIF0sIFxuICAgIGNvbmZpZ1N0ZXBDb3VudGVyIDogMCAgXHRcbiAgfTtcbn07XG4gIFxuZXhwb3J0IGNvbnN0IGluaXRFYXN5Rm9ybVJlbG9hZENvbmZpZ3VyYXRpb25Nb2RlbCA9ICgpID0+IHtcbiAgbGV0IHJlbG9hZENvbmZpZ01vZGVsID0gaW5pdEVhc3lGb3JtSW5pdGlhbFN0YXRlQ29uZmlndXJhdGlvbk1vZGVsKCk7XG4gIHJlbG9hZENvbmZpZ01vZGVsLmxpbmVzID0gW107XG4gIHJldHVybiByZWxvYWRDb25maWdNb2RlbDtcbn07XG4gIFxuLy8gY2FuJ3QgdXNlIGFycm93IGZ1bmN0aW9uIGhlcmUgLT4gJ3RoaXMnIHdvdWxkIGJlIGJvdW5kIHRvIGNhbGxlciByYXRoZXIgdGhhbiBleHBlY3RlZCBjdXJyZW50IHJldHVybmVkIG9iamVjdC4uLiAgXG5leHBvcnQgY29uc3QgaW5pdEhlYWRlclRlbXBsYXRlcyA9IGZ1bmN0aW9uKCkge1xuICBsZXQgaGVhZGVyVGVtcGxhdGUgPSB7XG4gICAgY3NzQ2xhc3MgXHRcdDogWydjb2wteHMtMTInLCAnY29sLXhzLTYnLCAnY29sLXhzLTQnXSxcbiAgICB0ZXh0Q29udGVudCA6ICcnLFxuICAgIGh0bWxfcGFydDEgXHQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyAgPGRpdiBjbGFzcz1cIidcbiAgICAgICAgICAgICAgICAgICAgXS5qb2luKCcnKSxcbiAgICBzZWxlY3RlZENsYXNzIDogJycsXG4gICAgaHRtbF9wYXJ0MiBcdDogW1xuICAgICAgICAgICAgICAgICAgICAnXCI+JyxcbiAgICAgICAgICAgICAgICAgICAgJyAgICA8aDIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPidcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG4gICAgICAgICAgICAgICAgICBdLmpvaW4oJycpLFx0XHRcdFx0XHRcdFx0IFxuICAgIGh0bWxfcGFydDMgIDogdGhpcy50ZXh0Q29udGVudCwgIFxuICAgIGh0bWxfcGFydDQgXHQ6ICBbIFxuICAgICAgICAgICAgICAgICAgICAnICAgIDxoMj4nLFxuICAgICAgICAgICAgICAgICAgICAnICAgIDxoci8+JyxcbiAgICAgICAgICAgICAgICAgICAgJyAgPC9kaXY+J1xuICAgICAgICAgICAgICAgICAgICBdLmpvaW4oJycpLCBcbiAgICBzaW1wbGVIdG1sMSA6IFx0W1xuICAgICAgICAgICAgICAgICAgICAnPGgyIGNsYXNzPVwidGV4dC1jZW50ZXJcIj4nXG4gICAgICAgICAgICAgICAgICAgIF0uam9pbignJyksXG4gICAgc2ltcGxlSHRtbDIgOiBcdFtcbiAgICAgICAgICAgICAgICAgICAgJyAgICA8aDI+JyxcbiAgICAgICAgICAgICAgICAgICAgJyAgICA8aHIvPidcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuICAgICAgICAgICAgICAgICAgICBdLmpvaW4oJycpXHRcdFx0XHRcdFx0IFxuICB9OyAgXG4gIHJldHVybiAgaGVhZGVyVGVtcGxhdGU7IFxufTtcbiAgXG4gIFxuZXhwb3J0IGNvbnN0IGluaXRGb3JtbHlDb250cm9sVGVtcGxhdGVzID0gKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIGNsYXNzTmFtZSA6IFsnY29sLXhzLTEyJywgJ2NvbC14cy02JywgJ2NvbC14cy00J10sXG4gICAgdHlwZSAgICAgIDogJycsXG4gICAga2V5ICAgICAgIDogJycsXG4gICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICB0eXBlICAgICAgICA6ICcnLFxuICAgICAgbGFiZWwgICAgICAgOiAnJyxcbiAgICAgIHJlcXVpcmVkICAgIDogJycsXG4gICAgICBwbGFjZWhvbGRlciA6ICcnLFxuICAgICAgZGVzY3JpcHRpb24gOiAnJyxcbiAgICAgIG9wdGlvbnMgICAgIDogJycgICAgXG4gICAgfVxuICB9O1xufTtcbiAgXG5leHBvcnQgY29uc3QgaW5pdFBhcnRpY3VsYXJDb250cm9sUHJvcGVydGllcyA9ICgpID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBjb250cm9sVHlwZSBcdDogJ2RhdGVwaWNrZXInLFxuICAgICAgcHJvcGVydGllcyBcdFx0OiBbXHRcbiAgICAgICAge1x0XG4gICAgICAgIGlzUm9vdCAgXHRcdFx0XHRcdDogZmFsc2UsIFxuICAgICAgICBpc1RlbXBsYXRlT3B0aW9ucyA6IHRydWUsIFxuICAgICAgICB2YWx1ZSBcdFx0XHRcdFx0XHQ6ICdkYXRlcGlja2VyUG9wdXAnXG4gICAgICB9XG4gICAgICBdXG4gICAgfVxuICBdO1xufTtcbiBcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZm9ybWx5UHJveHkvZWRhRHJhZ0Ryb3BXYXkuZm9ybWx5UHJveHkuZm9ybUZpZWxkTWFuYWdlLnByb3ZpZGVyLmhlbHBlcnMuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 53 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _edaDragDropWayDragdropDdContentCounter = __webpack_require__(54);\n\nvar _edaDragDropWayDragdropDdContentCounter2 = _interopRequireDefault(_edaDragDropWayDragdropDdContentCounter);\n\nvar _edaDragDropWayDragdropDdContentCounter3 = __webpack_require__(55);\n\nvar _edaDragDropWayDragdropDdContentCounter4 = _interopRequireDefault(_edaDragDropWayDragdropDdContentCounter3);\n\nvar _edaDragDropWayDragdropDdDecorContainer = __webpack_require__(56);\n\nvar _edaDragDropWayDragdropDdDecorContainer2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorContainer);\n\nvar _edaDragDropWayDragdropDdDecorContainer3 = __webpack_require__(58);\n\nvar _edaDragDropWayDragdropDdDecorContainer4 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorContainer3);\n\nvar _edaDragDropWayDragdropDdDecorDropZone = __webpack_require__(59);\n\nvar _edaDragDropWayDragdropDdDecorDropZone2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorDropZone);\n\nvar _edaDragDropWayDragdropDdDecorItem = __webpack_require__(61);\n\nvar _edaDragDropWayDragdropDdDecorItem2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorItem);\n\nvar _edaDragDropWayDragdropDdDecorItem3 = __webpack_require__(63);\n\nvar _edaDragDropWayDragdropDdDecorItem4 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorItem3);\n\nvar _edaDragDropWayDragdropDdDecorLine = __webpack_require__(64);\n\nvar _edaDragDropWayDragdropDdDecorLine2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorLine);\n\nvar _edaDragDropWayDragdropDdNoEditableControl = __webpack_require__(66);\n\nvar _edaDragDropWayDragdropDdNoEditableControl2 = _interopRequireDefault(_edaDragDropWayDragdropDdNoEditableControl);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DRAGDROP_MODULE = 'edaDragDropWay.dragdrop.module'; /* global angular */\nexports.default = angular.module(DRAGDROP_MODULE, []).directive(_edaDragDropWayDragdropDdContentCounter.DD_CONTENT_COUNTER_DIRECTIVE, _edaDragDropWayDragdropDdContentCounter2.default).controller(_edaDragDropWayDragdropDdDecorContainer3.DD_DECOR_CONTAINER_CONTROLLER_NAME, _edaDragDropWayDragdropDdDecorContainer4.default).directive(_edaDragDropWayDragdropDdDecorContainer.DD_DECOR_CONTAINER_DIRECTIVE, _edaDragDropWayDragdropDdDecorContainer2.default).directive(_edaDragDropWayDragdropDdDecorDropZone.DD_DECOR_DROPZONE_DIRECTIVE, _edaDragDropWayDragdropDdDecorDropZone2.default).directive(_edaDragDropWayDragdropDdDecorItem.DRAG_DROP_DECOR_ITEM, _edaDragDropWayDragdropDdDecorItem2.default).service(_edaDragDropWayDragdropDdDecorItem3.DRAG_DROP_ITEM_DECOR_SERVICE, _edaDragDropWayDragdropDdDecorItem4.default).directive(_edaDragDropWayDragdropDdNoEditableControl.DRAG_DROP_NO_EDITABLE_CONTROL, _edaDragDropWayDragdropDdNoEditableControl2.default).service(_edaDragDropWayDragdropDdContentCounter3.DRAG_DROP_ITEM_COUNTER_SERVICE, _edaDragDropWayDragdropDdContentCounter4.default).directive(_edaDragDropWayDragdropDdDecorLine.DRAG_DROP_DECOR_LINE, _edaDragDropWayDragdropDdDecorLine2.default);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AubW9kdWxlLmpzPzExZjkiXSwibmFtZXMiOlsiRFJBR0RST1BfTU9EVUxFIiwiYW5ndWxhciIsIm1vZHVsZSIsImRpcmVjdGl2ZSIsImNvbnRyb2xsZXIiLCJzZXJ2aWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQTs7OztBQUdBOzs7O0FBR0E7Ozs7QUFHQTs7OztBQUdBOzs7O0FBR0E7Ozs7QUFHQTs7OztBQUdBOzs7O0FBSUE7Ozs7OztBQUtBLElBQU1BLGtCQUFrQixnQ0FBeEIsQyxDQS9CQTtrQkFpQ2VDLFFBQ05DLE1BRE0sQ0FDQ0YsZUFERCxFQUNrQixFQURsQixFQUVORyxTQUZNLHlIQUdOQyxVQUhNLGdJQUlORCxTQUpNLHlIQUtOQSxTQUxNLHNIQU1OQSxTQU5NLHVHQU9ORSxPQVBNLGdIQVFORixTQVJNLGdJQVNORSxPQVRNLDRIQVVORixTQVZNLHNHIiwiZmlsZSI6IjUzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGFuZ3VsYXIgKi9cbmltcG9ydCBkZENvbnRlbnRDb3VudGVyLCB7XG4gRERfQ09OVEVOVF9DT1VOVEVSX0RJUkVDVElWRVx0XG59XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmcm9tICcuL2RkQ29udGVudENvdW50ZXIvZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGRDb250ZW50Q291bnRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IGRyYWdEcm9wSXRlbUNvdW50ZXJTZXJ2aWNlLCB7XG5cdERSQUdfRFJPUF9JVEVNX0NPVU5URVJfU0VSVklDRVxufVx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnJvbSAnLi9kZENvbnRlbnRDb3VudGVyL2VkYURyYWdEcm9wV2F5LmRyYWdkcm9wLmRkQ29udGVudENvdW50ZXIuc2VydmljZSc7XG5pbXBvcnQgZGREZWNvckNvbnRhaW5lckRpcmVjdGl2ZSwge1xuXHRERF9ERUNPUl9DT05UQUlORVJfRElSRUNUSVZFXG59IFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZyb20gJy4vZGREZWNvckNvbnRhaW5lci9lZGFEcmFnRHJvcFdheS5kcmFnZHJvcC5kZERlY29yQ29udGFpbmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgZGREZWNvckNvbnRhaW5lckNvbnRyb2xsZXIsIHtcblx0RERfREVDT1JfQ09OVEFJTkVSX0NPTlRST0xMRVJfTkFNRVxufSBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmcm9tICcuL2RkRGVjb3JDb250YWluZXIvZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckNvbnRhaW5lci5jb250cm9sbGVyJztcbmltcG9ydCBkZERlY29yRHJvcFpvbmUsIHtcblx0RERfREVDT1JfRFJPUFpPTkVfRElSRUNUSVZFXG59IFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZyb20gJy4vZGREZWNvckRyb3Bab25lL2VkYURyYWdEcm9wV2F5LmRyYWdkcm9wLmRkRGVjb3JEcm9wWm9uZS5kaXJlY3RpdmUnO1xuaW1wb3J0IGRkRGVjb3JJdGVtLCB7XG5cdERSQUdfRFJPUF9ERUNPUl9JVEVNXG59IFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZyb20gJy4vZGREZWNvckl0ZW0vZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCBkcmFnRHJvcEl0ZW1EZWNvcmF0aW9uU2VydmljZSwge1xuXHREUkFHX0RST1BfSVRFTV9ERUNPUl9TRVJWSUNFXG59XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmcm9tICcuL2RkRGVjb3JJdGVtL2VkYURyYWdEcm9wV2F5LmRyYWdkcm9wLmRkRGVjb3JJdGVtLnNlcnZpY2UnO1xuaW1wb3J0IGRkRGVjb3JMaW5lLCB7XG5cdERSQUdfRFJPUF9ERUNPUl9MSU5FXG59IFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZyb20gJy4vZGREZWNvckxpbmUvZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckxpbmUuZGlyZWN0aXZlJztcblxuaW1wb3J0IGRkTm9FZGl0YWJsZUNvbnRyb2wsIHtcblx0RFJBR19EUk9QX05PX0VESVRBQkxFX0NPTlRST0xcbn0gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnJvbSAnLi9kZE5vRWRpdGFibGVDb250cm9sL2VkYURyYWdEcm9wV2F5LmRyYWdkcm9wLmRkTm9FZGl0YWJsZUNvbnRyb2wuZGlyZWN0aXZlJztcblxuXG5jb25zdCBEUkFHRFJPUF9NT0RVTEUgPSAnZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AubW9kdWxlJztcblxuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuXHRcdFx0XHRcdFx0XHRcdC5tb2R1bGUoRFJBR0RST1BfTU9EVUxFLCBbXSlcblx0XHRcdFx0XHRcdFx0XHQuZGlyZWN0aXZlKEREX0NPTlRFTlRfQ09VTlRFUl9ESVJFQ1RJVkUsIGRkQ29udGVudENvdW50ZXIpXG5cdFx0XHRcdFx0XHRcdFx0LmNvbnRyb2xsZXIoRERfREVDT1JfQ09OVEFJTkVSX0NPTlRST0xMRVJfTkFNRSwgZGREZWNvckNvbnRhaW5lckNvbnRyb2xsZXIpXG5cdFx0XHRcdFx0XHRcdFx0LmRpcmVjdGl2ZShERF9ERUNPUl9DT05UQUlORVJfRElSRUNUSVZFLCBkZERlY29yQ29udGFpbmVyRGlyZWN0aXZlKVxuXHRcdFx0XHRcdFx0XHRcdC5kaXJlY3RpdmUoRERfREVDT1JfRFJPUFpPTkVfRElSRUNUSVZFLCBkZERlY29yRHJvcFpvbmUpXG5cdFx0XHRcdFx0XHRcdFx0LmRpcmVjdGl2ZShEUkFHX0RST1BfREVDT1JfSVRFTSwgZGREZWNvckl0ZW0pXG5cdFx0XHRcdFx0XHRcdFx0LnNlcnZpY2UoRFJBR19EUk9QX0lURU1fREVDT1JfU0VSVklDRSwgZHJhZ0Ryb3BJdGVtRGVjb3JhdGlvblNlcnZpY2UpXG5cdFx0XHRcdFx0XHRcdFx0LmRpcmVjdGl2ZShEUkFHX0RST1BfTk9fRURJVEFCTEVfQ09OVFJPTCwgZGROb0VkaXRhYmxlQ29udHJvbClcblx0XHRcdFx0XHRcdFx0XHQuc2VydmljZShEUkFHX0RST1BfSVRFTV9DT1VOVEVSX1NFUlZJQ0UsIGRyYWdEcm9wSXRlbUNvdW50ZXJTZXJ2aWNlKVxuXHRcdFx0XHRcdFx0XHRcdC5kaXJlY3RpdmUoRFJBR19EUk9QX0RFQ09SX0xJTkUsIGRkRGVjb3JMaW5lKVxuXHRcdFx0XHRcdFx0XHQ7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2RyYWdkcm9wL2VkYURyYWdEcm9wV2F5LmRyYWdkcm9wLm1vZHVsZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 54 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar DD_CONTENT_COUNTER_DIRECTIVE = 'ddContentCounter';\n\nfunction ddContentCounter(dragDropItemCounterService, $timeout) {\n\tvar directive = {\n\t\trestrict: 'A',\n\t\tscope: {\n\t\t\tvalueWhenPlaceholder: '@ddValueWhenPlaceholder',\n\t\t\tvalueWhendragging: '@ddValueWhenDragging',\n\t\t\tfullModel: '=ddFullModel',\n\t\t\tcurrentIndex: '@ddContentCounterCurrentIndex',\n\t\t\tparentIndex: '@ddContentCounterParentIndex',\n\t\t\tforceRefresh: '=ddContentCounterForceCssRefresh'\n\t\t},\n\t\tlink: linkfct\n\t};\n\treturn directive;\n\n\tfunction linkfct($scope, element) {\n\t\tvar timer = void 0;\n\t\t// watch children length change : to update css item class\n\t\t$scope.$watch(function () {\n\t\t\treturn element[0].children.length;\n\t\t}, function (newValue, oldValue) {\n\t\t\tif (newValue !== oldValue) {\n\t\t\t\t(function () {\n\t\t\t\t\tvar newRealCount = 0;\n\t\t\t\t\tvar listClassForThisRow = [];\n\t\t\t\t\tfor (var i = element[0].children.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (dragDropItemCounterService.isHtmlElementToCount(element[0].children[i].classList)) {\n\t\t\t\t\t\t\tnewRealCount++;\n\t\t\t\t\t\t\tlistClassForThisRow.push({ item: i, isReal: true });\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlistClassForThisRow.push({ item: i, isReal: false });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t$scope.contentRealCount = newRealCount;\n\t\t\t\t\t// a timer otherwise won't refresh everytime\n\t\t\t\t\ttimer = $timeout(function () {\n\t\t\t\t\t\tdragDropItemCounterService.updateLineItemCss($scope.fullModel, listClassForThisRow, $scope.parentIndex, $scope.currentIndex, newRealCount);\n\t\t\t\t\t}, 20);\n\t\t\t\t})();\n\t\t\t}\n\t\t});\n\n\t\t$scope.$on('$destroy', function () {\n\t\t\t$timeout.cancel(timer);\n\t\t});\n\t}\n}\n\nddContentCounter.$inject = ['dragDropItemCounterService', '$timeout'];\n\nexports.default = ddContentCounter;\nexports.DD_CONTENT_COUNTER_DIRECTIVE = DD_CONTENT_COUNTER_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGRDb250ZW50Q291bnRlci9lZGFEcmFnRHJvcFdheS5kcmFnZHJvcC5kZENvbnRlbnRDb3VudGVyLmRpcmVjdGl2ZS5qcz81NDljIl0sIm5hbWVzIjpbIkREX0NPTlRFTlRfQ09VTlRFUl9ESVJFQ1RJVkUiLCJkZENvbnRlbnRDb3VudGVyIiwiZHJhZ0Ryb3BJdGVtQ291bnRlclNlcnZpY2UiLCIkdGltZW91dCIsImRpcmVjdGl2ZSIsInJlc3RyaWN0Iiwic2NvcGUiLCJ2YWx1ZVdoZW5QbGFjZWhvbGRlciIsInZhbHVlV2hlbmRyYWdnaW5nIiwiZnVsbE1vZGVsIiwiY3VycmVudEluZGV4IiwicGFyZW50SW5kZXgiLCJmb3JjZVJlZnJlc2giLCJsaW5rIiwibGlua2ZjdCIsIiRzY29wZSIsImVsZW1lbnQiLCJ0aW1lciIsIiR3YXRjaCIsImNoaWxkcmVuIiwibGVuZ3RoIiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsIm5ld1JlYWxDb3VudCIsImxpc3RDbGFzc0ZvclRoaXNSb3ciLCJpIiwiaXNIdG1sRWxlbWVudFRvQ291bnQiLCJjbGFzc0xpc3QiLCJwdXNoIiwiaXRlbSIsImlzUmVhbCIsImNvbnRlbnRSZWFsQ291bnQiLCJ1cGRhdGVMaW5lSXRlbUNzcyIsIiRvbiIsImNhbmNlbCIsIiRpbmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBTUEsK0JBQStCLGtCQUFyQzs7QUFFQSxTQUFTQyxnQkFBVCxDQUEwQkMsMEJBQTFCLEVBQXNEQyxRQUF0RCxFQUErRDtBQUM3RCxLQUFJQyxZQUFZO0FBQ2ZDLFlBQVcsR0FESTtBQUVmQyxTQUFVO0FBQ1RDLHlCQUF1Qix5QkFEZDtBQUVUQyxzQkFBc0Isc0JBRmI7QUFHVEMsY0FBa0IsY0FIVDtBQUlUQyxpQkFBb0IsK0JBSlg7QUFLVEMsZ0JBQW1CLDhCQUxWO0FBTVRDLGlCQUFtQjtBQU5WLEdBRks7QUFVZkMsUUFBU0M7QUFWTSxFQUFoQjtBQVlBLFFBQU9WLFNBQVA7O0FBRUEsVUFBU1UsT0FBVCxDQUFpQkMsTUFBakIsRUFBeUJDLE9BQXpCLEVBQWlDO0FBQ2hDLE1BQUlDLGNBQUo7QUFDQTtBQUNBRixTQUFPRyxNQUFQLENBQWM7QUFBQSxVQUFJRixRQUFRLENBQVIsRUFBV0csUUFBWCxDQUFvQkMsTUFBeEI7QUFBQSxHQUFkLEVBQTZDLFVBQUNDLFFBQUQsRUFBV0MsUUFBWCxFQUFzQjtBQUNsRSxPQUFJRCxhQUFhQyxRQUFqQixFQUEyQjtBQUFBO0FBQzFCLFNBQUlDLGVBQW1CLENBQXZCO0FBQ0EsU0FBSUMsc0JBQXNCLEVBQTFCO0FBQ0EsVUFBSyxJQUFJQyxJQUFJVCxRQUFRLENBQVIsRUFBV0csUUFBWCxDQUFvQkMsTUFBcEIsR0FBNkIsQ0FBMUMsRUFBNkNLLEtBQUssQ0FBbEQsRUFBcURBLEdBQXJELEVBQTBEO0FBQ3pELFVBQUd2QiwyQkFBMkJ3QixvQkFBM0IsQ0FBZ0RWLFFBQVEsQ0FBUixFQUFXRyxRQUFYLENBQW9CTSxDQUFwQixFQUF1QkUsU0FBdkUsQ0FBSCxFQUFxRjtBQUNwRko7QUFDQUMsMkJBQW9CSSxJQUFwQixDQUEwQixFQUFDQyxNQUFNSixDQUFQLEVBQVVLLFFBQVMsSUFBbkIsRUFBMUI7QUFDQSxPQUhELE1BR0s7QUFDSk4sMkJBQW9CSSxJQUFwQixDQUEwQixFQUFDQyxNQUFNSixDQUFQLEVBQVVLLFFBQVMsS0FBbkIsRUFBMUI7QUFDQTtBQUNEO0FBQ0RmLFlBQU9nQixnQkFBUCxHQUEwQlIsWUFBMUI7QUFDQTtBQUNBTixhQUFRZCxTQUFTLFlBQU07QUFDdEJELGlDQUEyQjhCLGlCQUEzQixDQUE2Q2pCLE9BQU9OLFNBQXBELEVBQStEZSxtQkFBL0QsRUFBb0ZULE9BQU9KLFdBQTNGLEVBQXdHSSxPQUFPTCxZQUEvRyxFQUE2SGEsWUFBN0g7QUFDQSxNQUZPLEVBRUwsRUFGSyxDQUFSO0FBYjBCO0FBaUIxQjtBQUNELEdBbkJEOztBQXFCQVIsU0FBT2tCLEdBQVAsQ0FBVyxVQUFYLEVBQXVCLFlBQUk7QUFDMUI5QixZQUFTK0IsTUFBVCxDQUFnQmpCLEtBQWhCO0FBQXdCLEdBRHpCO0FBR0E7QUFFRjs7QUFFRGhCLGlCQUFpQmtDLE9BQWpCLEdBQTJCLENBQzFCLDRCQUQwQixFQUUxQixVQUYwQixDQUEzQjs7a0JBS2VsQyxnQjtRQUdkRCw0QixHQUFBQSw0QiIsImZpbGUiOiI1NC5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEREX0NPTlRFTlRfQ09VTlRFUl9ESVJFQ1RJVkUgPSAnZGRDb250ZW50Q291bnRlcic7XG5cbmZ1bmN0aW9uIGRkQ29udGVudENvdW50ZXIoZHJhZ0Ryb3BJdGVtQ291bnRlclNlcnZpY2UsICR0aW1lb3V0KXtcblx0XHRsZXQgZGlyZWN0aXZlICA9e1xuXHRcdFx0cmVzdHJpY3RcdDogJ0EnLFxuXHRcdFx0c2NvcGUgXHRcdDoge1xuXHRcdFx0XHR2YWx1ZVdoZW5QbGFjZWhvbGRlclx0OiAnQGRkVmFsdWVXaGVuUGxhY2Vob2xkZXInLFxuXHRcdFx0XHR2YWx1ZVdoZW5kcmFnZ2luZ1x0XHRcdDogJ0BkZFZhbHVlV2hlbkRyYWdnaW5nJyxcblx0XHRcdFx0ZnVsbE1vZGVsIFx0XHRcdFx0XHRcdDogJz1kZEZ1bGxNb2RlbCcsXG5cdFx0XHRcdGN1cnJlbnRJbmRleCBcdFx0XHRcdFx0OiAnQGRkQ29udGVudENvdW50ZXJDdXJyZW50SW5kZXgnLFxuXHRcdFx0XHRwYXJlbnRJbmRleCBcdFx0XHRcdFx0OiAnQGRkQ29udGVudENvdW50ZXJQYXJlbnRJbmRleCcsXG5cdFx0XHRcdGZvcmNlUmVmcmVzaFx0XHRcdFx0XHQ6ICc9ZGRDb250ZW50Q291bnRlckZvcmNlQ3NzUmVmcmVzaCdcdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdGxpbmtcdFx0XHQ6IGxpbmtmY3Rcblx0XHR9O1xuXHRcdHJldHVybiBkaXJlY3RpdmU7XG5cdFx0XG5cdFx0ZnVuY3Rpb24gbGlua2ZjdCgkc2NvcGUsIGVsZW1lbnQpe1xuXHRcdFx0bGV0IHRpbWVyO1xuXHRcdFx0Ly8gd2F0Y2ggY2hpbGRyZW4gbGVuZ3RoIGNoYW5nZSA6IHRvIHVwZGF0ZSBjc3MgaXRlbSBjbGFzc1xuXHRcdFx0JHNjb3BlLiR3YXRjaCgoKT0+ZWxlbWVudFswXS5jaGlsZHJlbi5sZW5ndGgsKG5ld1ZhbHVlLCBvbGRWYWx1ZSk9Pntcblx0XHRcdFx0aWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSkge1xuXHRcdFx0XHRcdGxldCBuZXdSZWFsQ291bnQgXHRcdFx0XHQ9IDA7XG5cdFx0XHRcdFx0bGV0IGxpc3RDbGFzc0ZvclRoaXNSb3cgPSBbXTtcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gZWxlbWVudFswXS5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1x0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0aWYoZHJhZ0Ryb3BJdGVtQ291bnRlclNlcnZpY2UuaXNIdG1sRWxlbWVudFRvQ291bnQoZWxlbWVudFswXS5jaGlsZHJlbltpXS5jbGFzc0xpc3QpKXtcblx0XHRcdFx0XHRcdFx0bmV3UmVhbENvdW50Kys7XG5cdFx0XHRcdFx0XHRcdGxpc3RDbGFzc0ZvclRoaXNSb3cucHVzaCgge2l0ZW06IGksIGlzUmVhbCA6IHRydWV9ICk7XG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0bGlzdENsYXNzRm9yVGhpc1Jvdy5wdXNoKCB7aXRlbTogaSwgaXNSZWFsIDogZmFsc2V9ICk7XG5cdFx0XHRcdFx0XHR9IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQkc2NvcGUuY29udGVudFJlYWxDb3VudCA9IG5ld1JlYWxDb3VudDtcblx0XHRcdFx0XHQvLyBhIHRpbWVyIG90aGVyd2lzZSB3b24ndCByZWZyZXNoIGV2ZXJ5dGltZVxuXHRcdFx0XHRcdHRpbWVyID0gJHRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0ZHJhZ0Ryb3BJdGVtQ291bnRlclNlcnZpY2UudXBkYXRlTGluZUl0ZW1Dc3MoJHNjb3BlLmZ1bGxNb2RlbCwgbGlzdENsYXNzRm9yVGhpc1JvdywgJHNjb3BlLnBhcmVudEluZGV4LCAkc2NvcGUuY3VycmVudEluZGV4LCBuZXdSZWFsQ291bnQpO1x0XHRcdFx0ICAgICAgICBcdFxuXHRcdFx0XHRcdH0sIDIwKTtcblx0XHRcdFx0XHRcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFxuXHRcdFx0JHNjb3BlLiRvbignJGRlc3Ryb3knLCAoKT0+e1xuXHRcdFx0XHQkdGltZW91dC5jYW5jZWwodGltZXIpO31cblx0XHRcdCk7XG5cdFx0fVxuXHRcdFxufVxuXG5kZENvbnRlbnRDb3VudGVyLiRpbmplY3QgPSBbXG5cdCdkcmFnRHJvcEl0ZW1Db3VudGVyU2VydmljZScsXG5cdCckdGltZW91dCdcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGRkQ29udGVudENvdW50ZXI7XG5cbmV4cG9ydCB7XG5cdEREX0NPTlRFTlRfQ09VTlRFUl9ESVJFQ1RJVkVcbn07XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2RyYWdkcm9wL2RkQ29udGVudENvdW50ZXIvZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGRDb250ZW50Q291bnRlci5kaXJlY3RpdmUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 55 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DRAG_DROP_ITEM_COUNTER_SERVICE = 'dragDropItemCounterService';\n\nvar dragDropItemCounterService = function () {\n\tfunction dragDropItemCounterService(easyFormDragWayConfig) {\n\t\t_classCallCheck(this, dragDropItemCounterService);\n\n\t\tthis.easyFormDragWayConfig = easyFormDragWayConfig;\n\t\tthis.init();\n\t}\n\n\t_createClass(dragDropItemCounterService, [{\n\t\tkey: 'init',\n\t\tvalue: function init() {\n\t\t\tthis._modelItemRealCounter = [];\n\t\t\tthis._itemsNotToCount = angular.copy(this.easyFormDragWayConfig.getItemsNotToCount());\n\t\t}\n\t}, {\n\t\tkey: 'getItemsNotToCount',\n\t\tvalue: function getItemsNotToCount() {\n\t\t\treturn this._itemsNotToCount;\n\t\t}\n\t}, {\n\t\tkey: 'getModelItemsRealCounter',\n\t\tvalue: function getModelItemsRealCounter() {\n\t\t\treturn this._modelItemRealCounter;\n\t\t}\n\t}, {\n\t\tkey: 'isHtmlElementToCount',\n\t\tvalue: function isHtmlElementToCount(htmlvalue) {\n\t\t\tvar isToCount = true;\n\t\t\tif (htmlvalue.length > 0) {\n\t\t\t\tangular.forEach(this._itemsNotToCount, function (value) {\n\t\t\t\t\tfor (var classes = htmlvalue.length - 1; classes >= 0; classes--) {\n\t\t\t\t\t\tif (htmlvalue[classes] === value) isToCount = isToCount && false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn isToCount;\n\t\t}\n\t}, {\n\t\tkey: 'updateLineItemCss',\n\t\tvalue: function updateLineItemCss(fullModel, listCssToApply, columIndex, lineIndex, realCount) {\n\t\t\tif (typeof fullModel !== 'undefined' && typeof listCssToApply !== 'undefined' && typeof columIndex !== 'undefined' && typeof lineIndex !== 'undefined' && typeof realCount !== 'undefined') {\n\t\t\t\tfor (var i = fullModel[columIndex][lineIndex].length - 1; i >= 0; i--) {\n\t\t\t\t\tfor (var j = 0; j < listCssToApply.length; j++) {\n\t\t\t\t\t\tif (listCssToApply[j].item === i && listCssToApply[j].isReal === true) {\n\t\t\t\t\t\t\tfullModel[columIndex][lineIndex][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(realCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn dragDropItemCounterService;\n}();\n\ndragDropItemCounterService.$inject = ['easyFormDragWayConfig'];\n\nexports.default = dragDropItemCounterService;\nexports.DRAG_DROP_ITEM_COUNTER_SERVICE = DRAG_DROP_ITEM_COUNTER_SERVICE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGRDb250ZW50Q291bnRlci9lZGFEcmFnRHJvcFdheS5kcmFnZHJvcC5kZENvbnRlbnRDb3VudGVyLnNlcnZpY2UuanM/MzE4MiJdLCJuYW1lcyI6WyJEUkFHX0RST1BfSVRFTV9DT1VOVEVSX1NFUlZJQ0UiLCJkcmFnRHJvcEl0ZW1Db3VudGVyU2VydmljZSIsImVhc3lGb3JtRHJhZ1dheUNvbmZpZyIsImluaXQiLCJfbW9kZWxJdGVtUmVhbENvdW50ZXIiLCJfaXRlbXNOb3RUb0NvdW50IiwiYW5ndWxhciIsImNvcHkiLCJnZXRJdGVtc05vdFRvQ291bnQiLCJodG1sdmFsdWUiLCJpc1RvQ291bnQiLCJsZW5ndGgiLCJmb3JFYWNoIiwidmFsdWUiLCJjbGFzc2VzIiwiZnVsbE1vZGVsIiwibGlzdENzc1RvQXBwbHkiLCJjb2x1bUluZGV4IiwibGluZUluZGV4IiwicmVhbENvdW50IiwiaSIsImoiLCJpdGVtIiwiaXNSZWFsIiwiY3NzQ2xhc3MiLCJnZXRJdGVtQ3NzRGVwZW5kaW5nTnVtYmVySXRlbXNJblJvdyIsIiRpbmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNQSxpQ0FBaUMsNEJBQXZDOztJQUVNQywwQjtBQUVMLHFDQUFZQyxxQkFBWixFQUFrQztBQUFBOztBQUNqQyxPQUFLQSxxQkFBTCxHQUE2QkEscUJBQTdCO0FBQ0EsT0FBS0MsSUFBTDtBQUNBOzs7O3lCQUVLO0FBQ0wsUUFBS0MscUJBQUwsR0FBNkIsRUFBN0I7QUFDQSxRQUFLQyxnQkFBTCxHQUF3QkMsUUFBUUMsSUFBUixDQUFhLEtBQUtMLHFCQUFMLENBQTJCTSxrQkFBM0IsRUFBYixDQUF4QjtBQUNBOzs7dUNBRW1CO0FBQ25CLFVBQU8sS0FBS0gsZ0JBQVo7QUFDQTs7OzZDQUV5QjtBQUN6QixVQUFPLEtBQUtELHFCQUFaO0FBQ0E7Ozt1Q0FFb0JLLFMsRUFBVTtBQUM5QixPQUFJQyxZQUFZLElBQWhCO0FBQ0EsT0FBSUQsVUFBVUUsTUFBVixHQUFtQixDQUF2QixFQUEwQjtBQUN6QkwsWUFBUU0sT0FBUixDQUFnQixLQUFLUCxnQkFBckIsRUFBdUMsVUFBQ1EsS0FBRCxFQUFTO0FBQy9DLFVBQUssSUFBSUMsVUFBVUwsVUFBVUUsTUFBVixHQUFtQixDQUF0QyxFQUF5Q0csV0FBVyxDQUFwRCxFQUF1REEsU0FBdkQsRUFBa0U7QUFDakUsVUFBSUwsVUFBVUssT0FBVixNQUF1QkQsS0FBM0IsRUFBa0NILFlBQVlBLGFBQWEsS0FBekI7QUFDbEM7QUFDRCxLQUpEO0FBS0E7QUFDRCxVQUFPQSxTQUFQO0FBQ0E7OztvQ0FFaUJLLFMsRUFBV0MsYyxFQUFnQkMsVSxFQUFZQyxTLEVBQVdDLFMsRUFBVTtBQUM3RSxPQUFJLE9BQU9KLFNBQVAsS0FBeUIsV0FBekIsSUFDSCxPQUFPQyxjQUFQLEtBQTRCLFdBRHpCLElBRUgsT0FBT0MsVUFBUCxLQUEwQixXQUZ2QixJQUdILE9BQU9DLFNBQVAsS0FBMEIsV0FIdkIsSUFJSCxPQUFPQyxTQUFQLEtBQTBCLFdBSjNCLEVBSXdDO0FBQ3ZDLFNBQUssSUFBSUMsSUFBSUwsVUFBVUUsVUFBVixFQUFzQkMsU0FBdEIsRUFBaUNQLE1BQWpDLEdBQTBDLENBQXZELEVBQTBEUyxLQUFLLENBQS9ELEVBQWtFQSxHQUFsRSxFQUF1RTtBQUN0RSxVQUFLLElBQUlDLElBQUksQ0FBYixFQUFnQkEsSUFBSUwsZUFBZUwsTUFBbkMsRUFBMkNVLEdBQTNDLEVBQWdEO0FBQy9DLFVBQUlMLGVBQWVLLENBQWYsRUFBa0JDLElBQWxCLEtBQTZCRixDQUE3QixJQUNGSixlQUFlSyxDQUFmLEVBQWtCRSxNQUFsQixLQUE4QixJQURoQyxFQUNxQztBQUNwQ1IsaUJBQVVFLFVBQVYsRUFBc0JDLFNBQXRCLEVBQWlDRSxDQUFqQyxFQUFvQ0ksUUFBcEMsR0FBK0MsS0FBS3RCLHFCQUFMLENBQTJCdUIsbUNBQTNCLENBQStETixTQUEvRCxDQUEvQztBQUNBO0FBQ0Q7QUFDRDtBQUNELFdBQU8sSUFBUDtBQUNBO0FBQ0Q7Ozs7OztBQUtGbEIsMkJBQTJCeUIsT0FBM0IsR0FBcUMsQ0FDcEMsdUJBRG9DLENBQXJDOztrQkFJZXpCLDBCO1FBR2RELDhCLEdBQUFBLDhCIiwiZmlsZSI6IjU1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgRFJBR19EUk9QX0lURU1fQ09VTlRFUl9TRVJWSUNFID0gJ2RyYWdEcm9wSXRlbUNvdW50ZXJTZXJ2aWNlJztcblxuY2xhc3MgZHJhZ0Ryb3BJdGVtQ291bnRlclNlcnZpY2V7XG5cdFxuXHRjb25zdHJ1Y3RvcihlYXN5Rm9ybURyYWdXYXlDb25maWcpe1xuXHRcdHRoaXMuZWFzeUZvcm1EcmFnV2F5Q29uZmlnID0gZWFzeUZvcm1EcmFnV2F5Q29uZmlnO1xuXHRcdHRoaXMuaW5pdCgpO1xuXHR9XG5cdFxuXHRpbml0KCl7XG5cdFx0dGhpcy5fbW9kZWxJdGVtUmVhbENvdW50ZXIgPSBbXTtcblx0XHR0aGlzLl9pdGVtc05vdFRvQ291bnQgPSBhbmd1bGFyLmNvcHkodGhpcy5lYXN5Rm9ybURyYWdXYXlDb25maWcuZ2V0SXRlbXNOb3RUb0NvdW50KCkpO1xuXHR9XG5cdFx0XG5cdGdldEl0ZW1zTm90VG9Db3VudCgpe1xuXHRcdHJldHVybiB0aGlzLl9pdGVtc05vdFRvQ291bnQ7XG5cdH0gXHRcblxuXHRnZXRNb2RlbEl0ZW1zUmVhbENvdW50ZXIoKXtcblx0XHRyZXR1cm4gdGhpcy5fbW9kZWxJdGVtUmVhbENvdW50ZXI7XG5cdH1cblx0XG5cdGlzSHRtbEVsZW1lbnRUb0NvdW50KGh0bWx2YWx1ZSl7XG5cdFx0bGV0IGlzVG9Db3VudCA9IHRydWU7XG5cdFx0aWYgKGh0bWx2YWx1ZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRhbmd1bGFyLmZvckVhY2godGhpcy5faXRlbXNOb3RUb0NvdW50LCAodmFsdWUpPT57XG5cdFx0XHRcdGZvciAobGV0IGNsYXNzZXMgPSBodG1sdmFsdWUubGVuZ3RoIC0gMTsgY2xhc3NlcyA+PSAwOyBjbGFzc2VzLS0pIHtcblx0XHRcdFx0XHRpZiAoaHRtbHZhbHVlW2NsYXNzZXNdID09PSB2YWx1ZSkgaXNUb0NvdW50ID0gaXNUb0NvdW50ICYmIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIGlzVG9Db3VudDtcdFxuXHR9XG5cdFxuXHR1cGRhdGVMaW5lSXRlbUNzcyhmdWxsTW9kZWwsIGxpc3RDc3NUb0FwcGx5LCBjb2x1bUluZGV4LCBsaW5lSW5kZXgsIHJlYWxDb3VudCl7XG5cdFx0aWYgKHR5cGVvZiBmdWxsTW9kZWwgXHRcdCE9PSBcdFx0J3VuZGVmaW5lZCcgJiZcblx0XHRcdHR5cGVvZiBsaXN0Q3NzVG9BcHBseSAhPT0gXHRcdCd1bmRlZmluZWQnICYmXG5cdFx0XHR0eXBlb2YgY29sdW1JbmRleCBcdFx0IT09IFx0XHQndW5kZWZpbmVkJyAmJlxuXHRcdFx0dHlwZW9mIGxpbmVJbmRleCBcdFx0XHQhPT0gXHRcdCd1bmRlZmluZWQnICYmXG5cdFx0XHR0eXBlb2YgcmVhbENvdW50IFx0XHRcdCE9PSBcdFx0J3VuZGVmaW5lZCcpIHtcblx0XHRcdGZvciAobGV0IGkgPSBmdWxsTW9kZWxbY29sdW1JbmRleF1bbGluZUluZGV4XS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0XHRmb3IgKGxldCBqID0gMDsgaiA8IGxpc3RDc3NUb0FwcGx5Lmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0aWYoXHRsaXN0Q3NzVG9BcHBseVtqXS5pdGVtIFx0XHQ9PT0gaSAmJlxuXHRcdFx0XHRcdFx0XHRsaXN0Q3NzVG9BcHBseVtqXS5pc1JlYWwgXHQ9PT0gdHJ1ZSl7XG5cdFx0XHRcdFx0XHRmdWxsTW9kZWxbY29sdW1JbmRleF1bbGluZUluZGV4XVtpXS5jc3NDbGFzcyA9IHRoaXMuZWFzeUZvcm1EcmFnV2F5Q29uZmlnLmdldEl0ZW1Dc3NEZXBlbmRpbmdOdW1iZXJJdGVtc0luUm93KHJlYWxDb3VudCk7XG5cdFx0XHRcdFx0fSBcdFxuXHRcdFx0XHR9XG5cdFx0XHR9XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH1cdFx0XG5cdFxuXHRcbn1cblxuZHJhZ0Ryb3BJdGVtQ291bnRlclNlcnZpY2UuJGluamVjdCA9IFtcblx0J2Vhc3lGb3JtRHJhZ1dheUNvbmZpZydcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGRyYWdEcm9wSXRlbUNvdW50ZXJTZXJ2aWNlO1xuXG5leHBvcnQge1xuXHREUkFHX0RST1BfSVRFTV9DT1VOVEVSX1NFUlZJQ0Vcbn07XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2RyYWdkcm9wL2RkQ29udGVudENvdW50ZXIvZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGRDb250ZW50Q291bnRlci5zZXJ2aWNlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 56 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.DD_DECOR_CONTAINER_DIRECTIVE = undefined;\n\nvar _edaDragDropWayDragdropDdDecorContainerTemplate = __webpack_require__(57);\n\nvar _edaDragDropWayDragdropDdDecorContainerTemplate2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorContainerTemplate);\n\nvar _edaDragDropWayDragdropDdDecorContainer = __webpack_require__(58);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* global angular */\nvar DD_DECOR_CONTAINER_DIRECTIVE = 'ddDecorContainer';\n\nfunction ddDecorContainer() {\n\tvar directive = {\n\t\trestrict: 'A',\n\t\ttemplate: _edaDragDropWayDragdropDdDecorContainerTemplate2.default,\n\t\tscope: {},\n\t\tcontroller: _edaDragDropWayDragdropDdDecorContainer.DD_DECOR_CONTAINER_CONTROLLER_NAME,\n\t\tcontrollerAs: _edaDragDropWayDragdropDdDecorContainer.DD_DECOR_CONTAINER_CONTROLLERAS_NAME,\n\t\tbindToController: {\n\t\t\t'styleParam': '=ddContainerProperties',\n\t\t\t'isStillCollapsed': '=ddContainerIsCollpased',\n\t\t\t'verboseMode': '@ddContainerVerboseMode',\n\t\t\t'currentIndex': '@ddContainerCurrentIndex',\n\t\t\t'collpaseAll': '&ddCollapseAll'\n\t\t},\n\t\ttransclude: true,\n\t\tlink: linkFct\n\t};\n\treturn directive;\n\n\tfunction linkFct($scope, element, attrs, ctrl, transclude) {\n\t\tvar verboseModeActive = $scope.ddDecorContainerCtrl.verboseMode;\n\t\tvar currentIndex = $scope.ddDecorContainerCtrl.currentIndex;\n\t\t$scope.ddDecorContainerCtrl.isCollapsed = false;\n\t\t$scope.ddDecorContainerCtrl.config.isEnabled = false;\n\t\t/**\n \t* forceCollapse when :\n \t* dragDropConfigModel.containerConfig.decoration.isCollapsed changed (here bound to $scope.isStillCollapsed)\n \t*/\n\t\t$scope.$watch(function () {\n\t\t\treturn $scope.ddDecorContainerCtrl.isStillCollapsed;\n\t\t}, function (newVal, oldVal) {\n\t\t\tif (newVal !== oldVal) {\n\t\t\t\tif ($scope.$parent.$parent.$index === 0) $scope.ddDecorContainerCtrl.isCollapsed = newVal;\n\t\t\t}\n\t\t});\n\n\t\t/**\n \t* verbose mode for developments only\n \t*/\n\t\tif (verboseModeActive !== '') {\n\t\t\tvar verbose = angular.lowercase(verboseModeActive);\n\t\t\tif (verbose === 'true' || verbose === '1') {\n\t\t\t\t/* eslint no-console:0 */\n\t\t\t\tconsole.dir({\n\t\t\t\t\twhoAmI: 'I am verbose from ddDecorContainer link',\n\t\t\t\t\tverbodeMode: verbose,\n\t\t\t\t\tParentParentIndex: $scope.$parent.$parent.$index,\n\t\t\t\t\tParentIndex: $scope.$parent.$index,\n\t\t\t\t\tcurrentIndex: currentIndex,\n\t\t\t\t\tstyleParam: $scope.ddDecorContainerCtrl.styleParam,\n\t\t\t\t\tcolumnindex: $scope.$parent.$parent.$parent.$parent.$index\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n \t* no header (no title, no collapse....)\n \t*/\n\t\t//$scope.ddDecorContainerCtrl.config.isEnabled\n\t\tif (typeof currentIndex !== 'undefined') {\n\t\t\tif (currentIndex !== '') {\n\t\t\t\t/**\n \t* specific 1st column\n \t*/\n\t\t\t\tif (currentIndex === '0') {\n\t\t\t\t\t/**\n \t* apply title\n \t*/\n\t\t\t\t\tif (typeof $scope.ddDecorContainerCtrl.styleParam.title !== 'undefined') {\n\t\t\t\t\t\t$scope.ddDecorContainerCtrl.currentTitle = $scope.ddDecorContainerCtrl.styleParam.title;\n\t\t\t\t\t\t$scope.ddDecorContainerCtrl.config.isEnabled = true;\n\t\t\t\t\t\t$scope.ddDecorContainerCtrl.isCollapsed = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n \t* prevent transclusion creating child scope\n \t* want to know more about what I'm talking about : check this nice tip on the subject :\n \t* http://angular-tips.com/blog/2014/03/transclusion-and-scopes/\n \t*/\n\t\ttransclude($scope.$parent, function (contentClone) {\n\t\t\t/**\n \t* transclusion will append content to '
'\n \t*/\n\t\t\tvar childDiv = angular.element(element.children()[1]);\n\t\t\tchildDiv.append(contentClone);\n\t\t});\n\t}\n}\n\nexports.default = ddDecorContainer;\nexports.DD_DECOR_CONTAINER_DIRECTIVE = DD_DECOR_CONTAINER_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGREZWNvckNvbnRhaW5lci9lZGFEcmFnRHJvcFdheS5kcmFnZHJvcC5kZERlY29yQ29udGFpbmVyLmRpcmVjdGl2ZS5qcz84MWI0Il0sIm5hbWVzIjpbIkREX0RFQ09SX0NPTlRBSU5FUl9ESVJFQ1RJVkUiLCJkZERlY29yQ29udGFpbmVyIiwiZGlyZWN0aXZlIiwicmVzdHJpY3QiLCJ0ZW1wbGF0ZSIsInNjb3BlIiwiY29udHJvbGxlciIsImNvbnRyb2xsZXJBcyIsImJpbmRUb0NvbnRyb2xsZXIiLCJ0cmFuc2NsdWRlIiwibGluayIsImxpbmtGY3QiLCIkc2NvcGUiLCJlbGVtZW50IiwiYXR0cnMiLCJjdHJsIiwidmVyYm9zZU1vZGVBY3RpdmUiLCJkZERlY29yQ29udGFpbmVyQ3RybCIsInZlcmJvc2VNb2RlIiwiY3VycmVudEluZGV4IiwiaXNDb2xsYXBzZWQiLCJjb25maWciLCJpc0VuYWJsZWQiLCIkd2F0Y2giLCJpc1N0aWxsQ29sbGFwc2VkIiwibmV3VmFsIiwib2xkVmFsIiwiJHBhcmVudCIsIiRpbmRleCIsInZlcmJvc2UiLCJhbmd1bGFyIiwibG93ZXJjYXNlIiwiY29uc29sZSIsImRpciIsIndob0FtSSIsInZlcmJvZGVNb2RlIiwiUGFyZW50UGFyZW50SW5kZXgiLCJQYXJlbnRJbmRleCIsInN0eWxlUGFyYW0iLCJjb2x1bW5pbmRleCIsInRpdGxlIiwiY3VycmVudFRpdGxlIiwiY29udGVudENsb25lIiwiY2hpbGREaXYiLCJjaGlsZHJlbiIsImFwcGVuZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFGQTtBQVFBLElBQU1BLCtCQUErQixrQkFBckM7O0FBR0EsU0FBU0MsZ0JBQVQsR0FBMkI7QUFDMUIsS0FBSUMsWUFBWTtBQUNmQyxZQUFlLEdBREE7QUFFZkMsb0VBRmU7QUFHZkMsU0FBYyxFQUhDO0FBSWZDLHdG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Q29udGVudCI6WyIvKiBnbG9iYWwgYW5ndWxhciAqL1xuaW1wb3J0IGRkRGVjb3JDb250YWluZXJUZW1wbGF0ZSBcdFx0XHRmcm9tICcuL2VkYURyYWdEcm9wV2F5LmRyYWdkcm9wLmRkRGVjb3JDb250YWluZXIudGVtcGxhdGUuaHRtbCc7XG5pbXBvcnQge1xuXHRERF9ERUNPUl9DT05UQUlORVJfQ09OVFJPTExFUl9OQU1FLFxuXHRERF9ERUNPUl9DT05UQUlORVJfQ09OVFJPTExFUkFTX05BTUVcbn1cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZyb20gJy4vZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckNvbnRhaW5lci5jb250cm9sbGVyJztcblxuXG5jb25zdCBERF9ERUNPUl9DT05UQUlORVJfRElSRUNUSVZFID0gJ2RkRGVjb3JDb250YWluZXInO1xuXG5cbmZ1bmN0aW9uIGRkRGVjb3JDb250YWluZXIoKXtcblx0bGV0IGRpcmVjdGl2ZSA9IHtcblx0XHRyZXN0cmljdFx0XHRcdFx0XHQ6ICdBJyxcblx0XHR0ZW1wbGF0ZVx0XHRcdFx0XHQ6IGRkRGVjb3JDb250YWluZXJUZW1wbGF0ZSxcblx0XHRzY29wZSBcdFx0XHRcdFx0XHQ6IHt9LFxuXHRcdGNvbnRyb2xsZXJcdFx0XHRcdDogRERfREVDT1JfQ09OVEFJTkVSX0NPTlRST0xMRVJfTkFNRSxcbiAgICBjb250cm9sbGVyQXNcdFx0XHQ6IEREX0RFQ09SX0NPTlRBSU5FUl9DT05UUk9MTEVSQVNfTkFNRSxcbiAgICBiaW5kVG9Db250cm9sbGVyXHQ6IHtcblx0XHRcdCdzdHlsZVBhcmFtJyAgICAgICAgICAgOiAnPWRkQ29udGFpbmVyUHJvcGVydGllcycsXG5cdFx0XHQnaXNTdGlsbENvbGxhcHNlZCcgICAgIDogJz1kZENvbnRhaW5lcklzQ29sbHBhc2VkJyxcblx0XHRcdCd2ZXJib3NlTW9kZScgICAgICAgICAgOiAnQGRkQ29udGFpbmVyVmVyYm9zZU1vZGUnLFxuXHRcdFx0J2N1cnJlbnRJbmRleCcgICAgICAgICA6ICdAZGRDb250YWluZXJDdXJyZW50SW5kZXgnLFxuXHRcdFx0J2NvbGxwYXNlQWxsJyAgICAgICAgICA6ICcmZGRDb2xsYXBzZUFsbCdcbiAgICB9LFxuXHRcdHRyYW5zY2x1ZGVcdFx0XHRcdDogdHJ1ZSxcblx0XHRsaW5rIFx0XHRcdFx0XHRcdFx0Olx0bGlua0ZjdFxuXHR9O1xuXHRyZXR1cm4gZGlyZWN0aXZlO1xuXG5cdGZ1bmN0aW9uIGxpbmtGY3QoJHNjb3BlLCBlbGVtZW50LCBhdHRycywgY3RybCwgdHJhbnNjbHVkZSl7XG5cdFx0bGV0IHZlcmJvc2VNb2RlQWN0aXZlICAgXHRcdFx0XHRcdFx0XHRcdFx0XHRcdD0gJHNjb3BlLmRkRGVjb3JDb250YWluZXJDdHJsLnZlcmJvc2VNb2RlO1xuXHRcdGxldCBjdXJyZW50SW5kZXggICAgICAgIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ9ICRzY29wZS5kZERlY29yQ29udGFpbmVyQ3RybC5jdXJyZW50SW5kZXg7XG5cdFx0JHNjb3BlLmRkRGVjb3JDb250YWluZXJDdHJsLmlzQ29sbGFwc2VkXHRcdFx0XHQ9IGZhbHNlO1xuXHRcdCRzY29wZS5kZERlY29yQ29udGFpbmVyQ3RybC5jb25maWcuaXNFbmFibGVkXHQ9IGZhbHNlO1xuXHRcdC8qKlxuXHRcdFx0KiBmb3JjZUNvbGxhcHNlIHdoZW4gOlxuXHRcdFx0KiAgZHJhZ0Ryb3BDb25maWdNb2RlbC5jb250YWluZXJDb25maWcuZGVjb3JhdGlvbi5pc0NvbGxhcHNlZCBjaGFuZ2VkIChoZXJlIGJvdW5kIHRvICRzY29wZS5pc1N0aWxsQ29sbGFwc2VkKVxuXHRcdFx0Ki9cblx0XHQkc2NvcGUuJHdhdGNoKCgpPT4gJHNjb3BlLmRkRGVjb3JDb250YWluZXJDdHJsLmlzU3RpbGxDb2xsYXBzZWQsKG5ld1ZhbCwgb2xkVmFsKT0+e1xuXHRcdFx0aWYgKG5ld1ZhbCAhPT0gb2xkVmFsKSB7XG5cdFx0XHRcdGlmICgkc2NvcGUuJHBhcmVudC4kcGFyZW50LiRpbmRleCA9PT0gMCkgJHNjb3BlLmRkRGVjb3JDb250YWluZXJDdHJsLmlzQ29sbGFwc2VkID0gbmV3VmFsO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cblx0XHQvKipcblx0XHRcdCogdmVyYm9zZSBtb2RlIGZvciBkZXZlbG9wbWVudHMgb25seVxuXHRcdFx0Ki9cblx0XHRpZiAodmVyYm9zZU1vZGVBY3RpdmUgIT09ICcnKSB7XG5cdFx0XHR2YXIgdmVyYm9zZSA9IGFuZ3VsYXIubG93ZXJjYXNlKHZlcmJvc2VNb2RlQWN0aXZlKTtcblx0XHRcdGlmICh2ZXJib3NlID09PSAndHJ1ZScgfHwgdmVyYm9zZSA9PT0gJzEnKSB7XG5cdFx0XHRcdC8qIGVzbGludCBuby1jb25zb2xlOjAgKi9cblx0XHRcdFx0Y29uc29sZS5kaXIoe1xuXHRcdFx0XHRcdHdob0FtSSAgICAgICAgICAgICAgOiAgICdJIGFtIHZlcmJvc2UgZnJvbSBkZERlY29yQ29udGFpbmVyIGxpbmsnLFxuXHRcdFx0XHRcdHZlcmJvZGVNb2RlICAgICAgICAgOiAgIHZlcmJvc2UsXG5cdFx0XHRcdFx0UGFyZW50UGFyZW50SW5kZXggICA6ICAgJHNjb3BlLiRwYXJlbnQuJHBhcmVudC4kaW5kZXgsXG5cdFx0XHRcdFx0UGFyZW50SW5kZXggICAgICAgICA6ICAgJHNjb3BlLiRwYXJlbnQuJGluZGV4LFxuXHRcdFx0XHRcdGN1cnJlbnRJbmRleCAgICAgICAgOiAgIGN1cnJlbnRJbmRleCxcblx0XHRcdFx0XHRzdHlsZVBhcmFtICAgICAgICAgIDogICAkc2NvcGUuZGREZWNvckNvbnRhaW5lckN0cmwuc3R5bGVQYXJhbSxcblx0XHRcdFx0XHRjb2x1bW5pbmRleCAgICAgICAgIDogICAkc2NvcGUuJHBhcmVudC4kcGFyZW50LiRwYXJlbnQuJHBhcmVudC4kaW5kZXhcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0XHQqIG5vIGhlYWRlciAobm8gdGl0bGUsIG5vIGNvbGxhcHNlLi4uLilcblx0XHRcdCovXG5cdFx0Ly8kc2NvcGUuZGREZWNvckNvbnRhaW5lckN0cmwuY29uZmlnLmlzRW5hYmxlZFxuXHRcdGlmICh0eXBlb2YgY3VycmVudEluZGV4ICE9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0aWYgKGN1cnJlbnRJbmRleCAhPT0gJycpIHtcblx0XHRcdFx0LyoqXG5cdFx0XHRcdFx0KiBzcGVjaWZpYyAxc3QgY29sdW1uXG5cdFx0XHRcdFx0Ki9cblx0XHRcdFx0aWYgKGN1cnJlbnRJbmRleCA9PT0gJzAnKSB7XG5cdFx0XHRcdFx0LyoqXG5cdFx0XHRcdFx0XHQqIGFwcGx5IHRpdGxlXG5cdFx0XHRcdFx0XHQqL1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgJHNjb3BlLmRkRGVjb3JDb250YWluZXJDdHJsLnN0eWxlUGFyYW0udGl0bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdFx0XHRcdCRzY29wZS5kZERlY29yQ29udGFpbmVyQ3RybC5jdXJyZW50VGl0bGUgICAgIFx0PSAkc2NvcGUuZGREZWNvckNvbnRhaW5lckN0cmwuc3R5bGVQYXJhbS50aXRsZTtcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmRkRGVjb3JDb250YWluZXJDdHJsLmNvbmZpZy5pc0VuYWJsZWRcdD0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0JHNjb3BlLmRkRGVjb3JDb250YWluZXJDdHJsLmlzQ29sbGFwc2VkICAgICBcdD0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblxuXHRcdC8qKlxuXHRcdFx0KiBwcmV2ZW50IHRyYW5zY2x1c2lvbiBjcmVhdGluZyBjaGlsZCBzY29wZVxuXHRcdFx0KiB3YW50IHRvIGtub3cgbW9yZSBhYm91dCB3aGF0IEknbSB0YWxraW5nIGFib3V0IDogY2hlY2sgdGhpcyBuaWNlIHRpcCBvbiB0aGUgc3ViamVjdCA6XG5cdFx0XHQqIGh0dHA6Ly9hbmd1bGFyLXRpcHMuY29tL2Jsb2cvMjAxNC8wMy90cmFuc2NsdXNpb24tYW5kLXNjb3Blcy9cblx0XHRcdCovXG5cdFx0dHJhbnNjbHVkZSgkc2NvcGUuJHBhcmVudCwgZnVuY3Rpb24oY29udGVudENsb25lKXtcblx0XHRcdFx0LyoqXG5cdFx0XHRcdFx0KiB0cmFuc2NsdXNpb24gd2lsbCBhcHBlbmQgY29udGVudCB0byAnPGRpdiBpZD1cImRkRGVjb3JDb250YWluZXJXaWxsVHJhbnNjbHVkZUhlcmVcIj48L2Rpdj4nXG5cdFx0XHRcdFx0Ki9cblx0XHRcdFx0dmFyIGNoaWxkRGl2ID0gYW5ndWxhci5lbGVtZW50KGVsZW1lbnQuY2hpbGRyZW4oKVsxXSk7XG5cdFx0XHRcdGNoaWxkRGl2LmFwcGVuZChjb250ZW50Q2xvbmUpO1xuXHRcdH0pO1xuXG5cblxuXHR9XG5cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBkZERlY29yQ29udGFpbmVyO1xuXG5leHBvcnQge1xuXHRERF9ERUNPUl9DT05UQUlORVJfRElSRUNUSVZFXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2RyYWdkcm9wL2RkRGVjb3JDb250YWluZXIvZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckNvbnRhaW5lci5kaXJlY3RpdmUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 57 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n
\\n \\n \\n \\n \\n {{ddDecorContainerCtrl.currentTitle}}\\n \\n\\n\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGREZWNvckNvbnRhaW5lci9lZGFEcmFnRHJvcFdheS5kcmFnZHJvcC5kZERlY29yQ29udGFpbmVyLnRlbXBsYXRlLmh0bWw/ZGFmOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrU0FBa1MseUNBQXlDLHFDQUFxQyxRQUFRLG1DQUFtQyIsImZpbGUiOiI1Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IG5nLWNsaWNrPVxcXCJkZERlY29yQ29udGFpbmVyQ3RybC5jb2xsYXBzZUZjdCgpXFxcIj5cXG4gICA8aDZcXG4gICAgbmctc2hvdz1cXFwiZGREZWNvckNvbnRhaW5lckN0cmwuY29uZmlnLmlzRW5hYmxlZFxcXCJcXG4gICAgY2xhc3M9XFxcImRkRGVjb3JDb250YWluZXJDdHJsLmlzQ29sbGFwc2FibGVab25lXFxcIlxcbiAgICBzdHlsZT1cXFwiY3Vyc29yOnBvaW50ZXJcXFwiPlxcbiAgICA8YnV0dG9uIGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnkgYnRuLXhzXFxcIj5cXG4gICAgICA8c3BhbiBjbGFzcz1cXFwie3tkZERlY29yQ29udGFpbmVyQ3RybC5jdXJyZW50SWNvbkNsYXNzKCl9fVxcXCI+PC9zcGFuPlxcbiAgICA8L2J1dHRvbj5cXG4gICAgJm5ic3A7XFxuICAgIHt7ZGREZWNvckNvbnRhaW5lckN0cmwuY3VycmVudFRpdGxlfX1cXG4gIDwvaDY+XFxuPC9kaXY+XFxuPGRpdiB1aWItY29sbGFwc2U9XFxcImRkRGVjb3JDb250YWluZXJDdHJsLmlzQ29sbGFwc2VkXFxcIj5cXG4gICA8ZGl2IGlkPVxcXCJkZERlY29yQ29udGFpbmVyV2lsbFRyYW5zY2x1ZGVIZXJlXFxcIj48L2Rpdj5cXG48L2Rpdj5cXG5cIlxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2RyYWdkcm9wL2RkRGVjb3JDb250YWluZXIvZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckNvbnRhaW5lci50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSA1N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 58 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/* global angular */\nvar DD_DECOR_CONTAINER_CONTROLLER_NAME = 'ddDecorContainerController';\nvar DD_DECOR_CONTAINER_CONTROLLERAS_NAME = 'ddDecorContainerCtrl';\n\nvar ddDecorContainerController = function () {\n\tfunction ddDecorContainerController() {\n\t\t_classCallCheck(this, ddDecorContainerController);\n\n\t\tthis.init();\n\t}\n\n\t_createClass(ddDecorContainerController, [{\n\t\tkey: 'init',\n\t\tvalue: function init() {\n\t\t\tthis.config = angular.extend({}, { isEnabled: false });\n\t\t\t/**\n \t* TODO (low priority) : make icon css configurable (provider)\n \t*/\n\t\t\tthis.icons = angular.extend({}, {\n\t\t\t\tclosedClass: 'glyphicon glyphicon-eye-open',\n\t\t\t\topened: 'glyphicon glyphicon-eye-close'\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'collapseFct',\n\t\tvalue: function collapseFct() {\n\t\t\tthis.collpaseAll({ exceptThisOne: this.styleParam.WhenIndex }); //note : collpaseAll function is boundToController from directive attribute : 'collpaseAll' : '&ddCollapseAll'\n\t\t\tthis.isCollapsed = !this.isCollapsed;\n\t\t\tthis.isStillCollapsed = this.isCollapsed; //note : isStillCollapsed is boundToController from directive attribute : 'isStillCollapsed' : '=ddContainerIsCollpased',\n\t\t}\n\t}, {\n\t\tkey: 'currentIconClass',\n\t\tvalue: function currentIconClass() {\n\t\t\tif (this.isCollapsed) {\n\t\t\t\treturn this.icons.closedClass;\n\t\t\t} else {\n\t\t\t\treturn this.icons.opened;\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn ddDecorContainerController;\n}();\n\nexports.default = ddDecorContainerController;\nexports.DD_DECOR_CONTAINER_CONTROLLER_NAME = DD_DECOR_CONTAINER_CONTROLLER_NAME;\nexports.DD_DECOR_CONTAINER_CONTROLLERAS_NAME = DD_DECOR_CONTAINER_CONTROLLERAS_NAME;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGREZWNvckNvbnRhaW5lci9lZGFEcmFnRHJvcFdheS5kcmFnZHJvcC5kZERlY29yQ29udGFpbmVyLmNvbnRyb2xsZXIuanM/OGEyMCJdLCJuYW1lcyI6WyJERF9ERUNPUl9DT05UQUlORVJfQ09OVFJPTExFUl9OQU1FIiwiRERfREVDT1JfQ09OVEFJTkVSX0NPTlRST0xMRVJBU19OQU1FIiwiZGREZWNvckNvbnRhaW5lckNvbnRyb2xsZXIiLCJpbml0IiwiY29uZmlnIiwiYW5ndWxhciIsImV4dGVuZCIsImlzRW5hYmxlZCIsImljb25zIiwiY2xvc2VkQ2xhc3MiLCJvcGVuZWQiLCJjb2xscGFzZUFsbCIsImV4Y2VwdFRoaXNPbmUiLCJzdHlsZVBhcmFtIiwiV2hlbkluZGV4IiwiaXNDb2xsYXBzZWQiLCJpc1N0aWxsQ29sbGFwc2VkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQSxJQUFNQSxxQ0FBdUMsNEJBQTdDO0FBQ0EsSUFBTUMsdUNBQXVDLHNCQUE3Qzs7SUFFTUMsMEI7QUFFTCx1Q0FBYTtBQUFBOztBQUNaLE9BQUtDLElBQUw7QUFDQTs7Ozt5QkFFSztBQUNMLFFBQUtDLE1BQUwsR0FBY0MsUUFBUUMsTUFBUixDQUFlLEVBQWYsRUFBbUIsRUFBRUMsV0FBWSxLQUFkLEVBQW5CLENBQWQ7QUFDQTs7O0FBR0EsUUFBS0MsS0FBTCxHQUFhSCxRQUFRQyxNQUFSLENBQWUsRUFBZixFQUFtQjtBQUMvQkcsaUJBQWMsOEJBRGlCO0FBRS9CQyxZQUFXO0FBRm9CLElBQW5CLENBQWI7QUFJQTs7O2dDQUVZO0FBQ1osUUFBS0MsV0FBTCxDQUFpQixFQUFDQyxlQUFlLEtBQUtDLFVBQUwsQ0FBZ0JDLFNBQWhDLEVBQWpCLEVBRFksQ0FDbUQ7QUFDL0QsUUFBS0MsV0FBTCxHQUFzQixDQUFDLEtBQUtBLFdBQTVCO0FBQ0EsUUFBS0MsZ0JBQUwsR0FBd0IsS0FBS0QsV0FBN0IsQ0FIWSxDQUc4QjtBQUMxQzs7O3FDQUVpQjtBQUNqQixPQUFJLEtBQUtBLFdBQVQsRUFBc0I7QUFDckIsV0FBTyxLQUFLUCxLQUFMLENBQVdDLFdBQWxCO0FBQ0EsSUFGRCxNQUVLO0FBQ0osV0FBTyxLQUFLRCxLQUFMLENBQVdFLE1BQWxCO0FBQ0E7QUFDRDs7Ozs7O2tCQUlhUiwwQjtRQUdkRixrQyxHQUFBQSxrQztRQUNBQyxvQyxHQUFBQSxvQyIsImZpbGUiOiI1OC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCBhbmd1bGFyICovXG5jb25zdCBERF9ERUNPUl9DT05UQUlORVJfQ09OVFJPTExFUl9OQU1FIFx0XHQ9ICdkZERlY29yQ29udGFpbmVyQ29udHJvbGxlcic7XG5jb25zdCBERF9ERUNPUl9DT05UQUlORVJfQ09OVFJPTExFUkFTX05BTUVcdD0gJ2RkRGVjb3JDb250YWluZXJDdHJsJztcblxuY2xhc3MgZGREZWNvckNvbnRhaW5lckNvbnRyb2xsZXJ7XG5cdFxuXHRjb25zdHJ1Y3Rvcigpe1xuXHRcdHRoaXMuaW5pdCgpO1xuXHR9XG5cdFxuXHRpbml0KCl7XG5cdFx0dGhpcy5jb25maWcgPSBhbmd1bGFyLmV4dGVuZCh7fSwgeyBpc0VuYWJsZWQgOiBmYWxzZSB9KTtcblx0XHQvKipcblx0XHRcdCogIFRPRE8gKGxvdyBwcmlvcml0eSkgOiBtYWtlIGljb24gY3NzIGNvbmZpZ3VyYWJsZSAocHJvdmlkZXIpXG5cdFx0XHQqL1x0XHRcblx0XHR0aGlzLmljb25zID0gYW5ndWxhci5leHRlbmQoe30sIHtcblx0XHRcdGNsb3NlZENsYXNzXHQ6ICdnbHlwaGljb24gZ2x5cGhpY29uLWV5ZS1vcGVuJyxcblx0XHRcdG9wZW5lZFx0XHRcdDogJ2dseXBoaWNvbiBnbHlwaGljb24tZXllLWNsb3NlJ1x0XHRcdFxuXHRcdH0pO1xuXHR9XG5cdFxuXHRjb2xsYXBzZUZjdCgpe1xuXHRcdHRoaXMuY29sbHBhc2VBbGwoe2V4Y2VwdFRoaXNPbmU6IHRoaXMuc3R5bGVQYXJhbS5XaGVuSW5kZXh9KTsgIC8vbm90ZSA6IGNvbGxwYXNlQWxsIGZ1bmN0aW9uIGlzIGJvdW5kVG9Db250cm9sbGVyIGZyb20gZGlyZWN0aXZlIGF0dHJpYnV0ZSA6ICdjb2xscGFzZUFsbCcgOiAnJmRkQ29sbGFwc2VBbGwnXG5cdFx0dGhpcy5pc0NvbGxhcHNlZCBcdFx0XHQ9ICF0aGlzLmlzQ29sbGFwc2VkO1xuXHRcdHRoaXMuaXNTdGlsbENvbGxhcHNlZFx0PSB0aGlzLmlzQ29sbGFwc2VkOyAvL25vdGUgOiBpc1N0aWxsQ29sbGFwc2VkIGlzIGJvdW5kVG9Db250cm9sbGVyIGZyb20gZGlyZWN0aXZlIGF0dHJpYnV0ZSA6ICdpc1N0aWxsQ29sbGFwc2VkJyA6ICc9ZGRDb250YWluZXJJc0NvbGxwYXNlZCcsXG5cdH1cdFxuXHRcblx0Y3VycmVudEljb25DbGFzcygpe1xuXHRcdGlmICh0aGlzLmlzQ29sbGFwc2VkKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pY29ucy5jbG9zZWRDbGFzcztcblx0XHR9ZWxzZXtcblx0XHRcdHJldHVybiB0aGlzLmljb25zLm9wZW5lZDtcblx0XHR9XG5cdH1cdFxuXHRcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGREZWNvckNvbnRhaW5lckNvbnRyb2xsZXI7XG5cbmV4cG9ydCB7XG5cdEREX0RFQ09SX0NPTlRBSU5FUl9DT05UUk9MTEVSX05BTUUsXG5cdEREX0RFQ09SX0NPTlRBSU5FUl9DT05UUk9MTEVSQVNfTkFNRVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9kcmFnZHJvcC9kZERlY29yQ29udGFpbmVyL2VkYURyYWdEcm9wV2F5LmRyYWdkcm9wLmRkRGVjb3JDb250YWluZXIuY29udHJvbGxlci5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 59 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.DD_DECOR_DROPZONE_DIRECTIVE = undefined;\n\nvar _edaDragDropWayDragdropDdDecorDropZoneTemplate = __webpack_require__(60);\n\nvar _edaDragDropWayDragdropDdDecorDropZoneTemplate2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorDropZoneTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DD_DECOR_DROPZONE_DIRECTIVE = 'ddDecorDropZone'; /* global angular */\n\n\nfunction ddDecorDropZone() {\n\tvar directive = {\n\t\trestrict: 'A',\n\t\ttemplate: _edaDragDropWayDragdropDdDecorDropZoneTemplate2.default,\n\t\tscope: {\n\t\t\t'styleParam': '=ddDropZoneProperties',\n\t\t\t'verboseMode': '@ddDropZoneVerboseMode',\n\t\t\t'currentIndex': '@ddDropZoneCurrentIndex',\n\t\t\t'addNewLineFct': '&ddDropZoneAddNewLine'\n\t\t},\n\t\ttransclude: true,\n\t\tlink: linkfct\n\t};\n\treturn directive;\n\n\tfunction linkfct($scope) {\n\n\t\tvar verboseModeActive = $scope.verboseMode;\n\t\tvar currentIndex = $scope.currentIndex;\n\n\t\t$scope.headerConfig = {\n\t\t\tHeaderButtonVisible: false,\n\t\t\taffixAttr: 'bs-affix',\n\t\t\taffixEnabled: false\n\t\t};\n\t\t/**\n \t* verbose mode : just for dev\n \t*/\n\t\tif (verboseModeActive !== '') {\n\t\t\tvar verbose = angular.lowercase(verboseModeActive);\n\t\t\tif (verbose === 'true' || verbose === '1') {\n\t\t\t\t/* eslint no-console:0 */\n\t\t\t\tconsole.dir({\n\t\t\t\t\twhoAmI: 'I am verbose from ddDecorDropZone link',\n\t\t\t\t\tverbodeMode: verbose,\n\t\t\t\t\tParentParentIndex: $scope.$parent.$parent.$index,\n\t\t\t\t\tParentIndex: $scope.$parent.$index,\n\t\t\t\t\tcurrentIndex: currentIndex,\n\t\t\t\t\tstyleParam: $scope.styleParam\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (typeof currentIndex !== 'undefined') {\n\t\t\tif (currentIndex !== '') {\n\t\t\t\t// apply title\n\t\t\t\tif (typeof $scope.styleParam.title !== 'undefined') $scope.currentTitle = $scope.styleParam.title;\n\t\t\t\t//apply font-awesome\n\t\t\t\tif (typeof $scope.styleParam.fontAwesomeIcon !== 'undefined') $scope.currentFontAwesome = $scope.styleParam.fontAwesomeIcon;\n\t\t\t\t//show add new line button\n\t\t\t\tif (currentIndex === '1') $scope.headerConfig.HeaderButtonVisible = true;\n\t\t\t}\n\t\t}\n\t}\n}\n\nddDecorDropZone.$inject = [];\n\nexports.default = ddDecorDropZone;\nexports.DD_DECOR_DROPZONE_DIRECTIVE = DD_DECOR_DROPZONE_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGREZWNvckRyb3Bab25lL2VkYURyYWdEcm9wV2F5LmRyYWdkcm9wLmRkRGVjb3JEcm9wWm9uZS5kaXJlY3RpdmUuanM/ZjdhMSJdLCJuYW1lcyI6WyJERF9ERUNPUl9EUk9QWk9ORV9ESVJFQ1RJVkUiLCJkZERlY29yRHJvcFpvbmUiLCJkaXJlY3RpdmUiLCJyZXN0cmljdCIsInRlbXBsYXRlIiwic2NvcGUiLCJ0cmFuc2NsdWRlIiwibGluayIsImxpbmtmY3QiLCIkc2NvcGUiLCJ2ZXJib3NlTW9kZUFjdGl2ZSIsInZlcmJvc2VNb2RlIiwiY3VycmVudEluZGV4IiwiaGVhZGVyQ29uZmlnIiwiSGVhZGVyQnV0dG9uVmlzaWJsZSIsImFmZml4QXR0ciIsImFmZml4RW5hYmxlZCIsInZlcmJvc2UiLCJhbmd1bGFyIiwibG93ZXJjYXNlIiwiY29uc29sZSIsImRpciIsIndob0FtSSIsInZlcmJvZGVNb2RlIiwiUGFyZW50UGFyZW50SW5kZXgiLCIkcGFyZW50IiwiJGluZGV4IiwiUGFyZW50SW5kZXgiLCJzdHlsZVBhcmFtIiwidGl0bGUiLCJjdXJyZW50VGl0bGUiLCJmb250QXdlc29tZUljb24iLCJjdXJyZW50Rm9udEF3ZXNvbWUiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLDhCQUE4QixpQkFBcEMsQyxDQUhBOzs7QUFLQSxTQUFTQyxlQUFULEdBQTBCO0FBQ3pCLEtBQUlDLFlBQVk7QUFDZkMsWUFBWSxHQURHO0FBRWZDLG1FQUZlO0FBR2ZDLFNBQVU7QUFDVCxpQkFBa0IsdUJBRFQ7QUFFVCxrQkFBa0Isd0JBRlQ7QUFHVCxtQkFBa0IseUJBSFQ7QUFJVCxvQkFBa0I7QUFKVCxHQUhLO0FBU2ZDLGNBQWEsSUFURTtBQVVmQyxRQUFVQztBQVZLLEVBQWhCO0FBWUEsUUFBT04sU0FBUDs7QUFFQSxVQUFTTSxPQUFULENBQWlCQyxNQUFqQixFQUF3Qjs7QUFFdkIsTUFBSUMsb0JBQXNCRCxPQUFPRSxXQUFqQztBQUNBLE1BQUlDLGVBQXNCSCxPQUFPRyxZQUFqQzs7QUFFQUgsU0FBT0ksWUFBUCxHQUFzQjtBQUNyQkMsd0JBQXNCLEtBREQ7QUFFckJDLGNBQXNCLFVBRkQ7QUFHckJDLGlCQUFzQjtBQUhELEdBQXRCO0FBS0E7OztBQUdBLE1BQUlOLHNCQUFzQixFQUExQixFQUE4QjtBQUM3QixPQUFJTyxVQUFVQyxRQUFRQyxTQUFSLENBQWtCVCxpQkFBbEIsQ0FBZDtBQUNBLE9BQUlPLFlBQVksTUFBWixJQUFzQkEsWUFBWSxHQUF0QyxFQUEyQztBQUMxQztBQUNBRyxZQUFRQyxHQUFSLENBQVk7QUFDWEMsYUFBc0Isd0NBRFg7QUFFWEMsa0JBQXNCTixPQUZYO0FBR1hPLHdCQUFzQmYsT0FBT2dCLE9BQVAsQ0FBZUEsT0FBZixDQUF1QkMsTUFIbEM7QUFJWEMsa0JBQXNCbEIsT0FBT2dCLE9BQVAsQ0FBZUMsTUFKMUI7QUFLWGQsbUJBQXNCQSxZQUxYO0FBTVhnQixpQkFBc0JuQixPQUFPbUI7QUFObEIsS0FBWjtBQVFBO0FBQ0Q7O0FBR0QsTUFBSSxPQUFPaEIsWUFBUCxLQUF3QixXQUE1QixFQUF5QztBQUN4QyxPQUFJQSxpQkFBaUIsRUFBckIsRUFBeUI7QUFDeEI7QUFDQSxRQUFJLE9BQU9ILE9BQU9tQixVQUFQLENBQWtCQyxLQUF6QixLQUFtQyxXQUF2QyxFQUFvRHBCLE9BQU9xQixZQUFQLEdBQXNCckIsT0FBT21CLFVBQVAsQ0FBa0JDLEtBQXhDO0FBQ3BEO0FBQ0EsUUFBSSxPQUFPcEIsT0FBT21CLFVBQVAsQ0FBa0JHLGVBQXpCLEtBQTZDLFdBQWpELEVBQThEdEIsT0FBT3VCLGtCQUFQLEdBQTRCdkIsT0FBT21CLFVBQVAsQ0FBa0JHLGVBQTlDO0FBQzlEO0FBQ0EsUUFBSW5CLGlCQUFpQixHQUFyQixFQUEwQkgsT0FBT0ksWUFBUCxDQUFvQkMsbUJBQXBCLEdBQTBDLElBQTFDO0FBQzFCO0FBQ0Q7QUFFRDtBQUVEOztBQUdEYixnQkFBZ0JnQyxPQUFoQixHQUEwQixFQUExQjs7a0JBRWVoQyxlO1FBR2RELDJCLEdBQUFBLDJCIiwiZmlsZSI6IjU5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGFuZ3VsYXIgKi9cbmltcG9ydCBkZERlY29yRHJvcFpvbmVUZW1wbGF0ZSBmcm9tICcuL2VkYURyYWdEcm9wV2F5LmRyYWdkcm9wLmRkRGVjb3JEcm9wWm9uZS50ZW1wbGF0ZS5odG1sJztcblxuY29uc3QgRERfREVDT1JfRFJPUFpPTkVfRElSRUNUSVZFID0gJ2RkRGVjb3JEcm9wWm9uZSc7XG5cbmZ1bmN0aW9uIGRkRGVjb3JEcm9wWm9uZSgpe1xuXHRsZXQgZGlyZWN0aXZlID0ge1xuXHRcdHJlc3RyaWN0IFx0OiAnQScsXG5cdFx0dGVtcGxhdGUgXHQ6IGRkRGVjb3JEcm9wWm9uZVRlbXBsYXRlLFxuXHRcdHNjb3BlXHRcdFx0Olx0e1xuXHRcdFx0J3N0eWxlUGFyYW0nICAgIDogJz1kZERyb3Bab25lUHJvcGVydGllcycsXG5cdFx0XHQndmVyYm9zZU1vZGUnICAgOiAnQGRkRHJvcFpvbmVWZXJib3NlTW9kZScsXG5cdFx0XHQnY3VycmVudEluZGV4JyAgOiAnQGRkRHJvcFpvbmVDdXJyZW50SW5kZXgnLFxuXHRcdFx0J2FkZE5ld0xpbmVGY3QnIDogJyZkZERyb3Bab25lQWRkTmV3TGluZSdcblx0XHR9LFxuXHRcdHRyYW5zY2x1ZGVcdDogdHJ1ZSxcblx0XHRsaW5rXHRcdFx0XHQ6IGxpbmtmY3Rcblx0fTtcblx0cmV0dXJuIGRpcmVjdGl2ZTtcblxuXHRmdW5jdGlvbiBsaW5rZmN0KCRzY29wZSl7XG5cblx0XHRsZXQgdmVyYm9zZU1vZGVBY3RpdmUgICA9ICRzY29wZS52ZXJib3NlTW9kZTtcblx0XHRsZXQgY3VycmVudEluZGV4ICAgICAgICA9ICRzY29wZS5jdXJyZW50SW5kZXg7XG5cblx0XHQkc2NvcGUuaGVhZGVyQ29uZmlnID0ge1xuXHRcdFx0SGVhZGVyQnV0dG9uVmlzaWJsZSA6IGZhbHNlLFxuXHRcdFx0YWZmaXhBdHRyICAgICAgICAgICA6ICdicy1hZmZpeCcsXG5cdFx0XHRhZmZpeEVuYWJsZWQgICAgICAgIDogZmFsc2Vcblx0XHR9O1xuXHRcdC8qKlxuXHRcdFx0KiB2ZXJib3NlIG1vZGUgOiBqdXN0IGZvciBkZXZcblx0XHRcdCovXG5cdFx0aWYgKHZlcmJvc2VNb2RlQWN0aXZlICE9PSAnJykge1xuXHRcdFx0bGV0IHZlcmJvc2UgPSBhbmd1bGFyLmxvd2VyY2FzZSh2ZXJib3NlTW9kZUFjdGl2ZSk7XG5cdFx0XHRpZiAodmVyYm9zZSA9PT0gJ3RydWUnIHx8IHZlcmJvc2UgPT09ICcxJykge1xuXHRcdFx0XHQvKiBlc2xpbnQgbm8tY29uc29sZTowICovXG5cdFx0XHRcdGNvbnNvbGUuZGlyKHtcblx0XHRcdFx0XHR3aG9BbUkgICAgICAgICAgICAgIDogJ0kgYW0gdmVyYm9zZSBmcm9tIGRkRGVjb3JEcm9wWm9uZSBsaW5rJyxcblx0XHRcdFx0XHR2ZXJib2RlTW9kZSAgICAgICAgIDogdmVyYm9zZSxcblx0XHRcdFx0XHRQYXJlbnRQYXJlbnRJbmRleCAgIDogJHNjb3BlLiRwYXJlbnQuJHBhcmVudC4kaW5kZXgsXG5cdFx0XHRcdFx0UGFyZW50SW5kZXggICAgICAgICA6ICRzY29wZS4kcGFyZW50LiRpbmRleCxcblx0XHRcdFx0XHRjdXJyZW50SW5kZXggICAgICAgIDogY3VycmVudEluZGV4LFxuXHRcdFx0XHRcdHN0eWxlUGFyYW0gICAgICAgICAgOiAkc2NvcGUuc3R5bGVQYXJhbVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cblxuXHRcdGlmICh0eXBlb2YgY3VycmVudEluZGV4ICE9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0aWYgKGN1cnJlbnRJbmRleCAhPT0gJycpIHtcblx0XHRcdFx0Ly8gYXBwbHkgdGl0bGVcblx0XHRcdFx0aWYgKHR5cGVvZiAkc2NvcGUuc3R5bGVQYXJhbS50aXRsZSAhPT0gJ3VuZGVmaW5lZCcpICRzY29wZS5jdXJyZW50VGl0bGUgPSAkc2NvcGUuc3R5bGVQYXJhbS50aXRsZTtcblx0XHRcdFx0Ly9hcHBseSBmb250LWF3ZXNvbWVcblx0XHRcdFx0aWYgKHR5cGVvZiAkc2NvcGUuc3R5bGVQYXJhbS5mb250QXdlc29tZUljb24gIT09ICd1bmRlZmluZWQnKSAkc2NvcGUuY3VycmVudEZvbnRBd2Vzb21lID0gJHNjb3BlLnN0eWxlUGFyYW0uZm9udEF3ZXNvbWVJY29uO1xuXHRcdFx0XHQvL3Nob3cgYWRkIG5ldyBsaW5lIGJ1dHRvblxuXHRcdFx0XHRpZiAoY3VycmVudEluZGV4ID09PSAnMScpICRzY29wZS5oZWFkZXJDb25maWcuSGVhZGVyQnV0dG9uVmlzaWJsZSA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdH1cblxufVxuXG5cbmRkRGVjb3JEcm9wWm9uZS4kaW5qZWN0ID0gW107XG5cbmV4cG9ydCBkZWZhdWx0IGRkRGVjb3JEcm9wWm9uZTtcblxuZXhwb3J0IHtcblx0RERfREVDT1JfRFJPUFpPTkVfRElSRUNUSVZFXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2RyYWdkcm9wL2RkRGVjb3JEcm9wWm9uZS9lZGFEcmFnRHJvcFdheS5kcmFnZHJvcC5kZERlY29yRHJvcFpvbmUuZGlyZWN0aXZlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 60 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n
\\n
\\n
\\n
\\n \\n {{currentTitle}}\\n \\n \\n \\n \\n add new line\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGREZWNvckRyb3Bab25lL2VkYURyYWdEcm9wV2F5LmRyYWdkcm9wLmRkRGVjb3JEcm9wWm9uZS50ZW1wbGF0ZS5odG1sPzM5NWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDLDBCQUEwQiwyS0FBMkssb0JBQW9CLGFBQWEsY0FBYyxjQUFjLG9OQUFvTiwyRkFBMkYiLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwie3tzdHlsZVBhcmFtLkFwcGx5Y3NzQ2xhc3N9fVxcXCI+XFxuICA8ZGl2IGlkPVxcXCJ2aXN1YWxQYW5lbFxcXCI+XFxuICAgIDxkaXYgIGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1oZWFkaW5nXFxcIj5cXG4gICAgICAgIDxoMyBjbGFzcz1cXFwicGFuZWwtdGl0bGVcXFwiPlxcbiAgICAgICAgICA8aSBjbGFzcz1cXFwie3tjdXJyZW50Rm9udEF3ZXNvbWV9fVxcXCI+PC9pPiZuYnNwO1xcbiAgICAgICAgICB7e2N1cnJlbnRUaXRsZX19XFxuICAgICAgICAgICA8ZGl2IG5nLXNob3c9XFxcImhlYWRlckNvbmZpZy5IZWFkZXJCdXR0b25WaXNpYmxlXFxcIj5cXG4gICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeSBidG4teHMgYnV0dG9uSGVhZGVyQWRkTmV3TGluZSBjZW50ZXItYmxvY2tcXFwiXFxuICAgICAgICAgICAgICBuZy1jbGljaz1cXFwiYWRkTmV3TGluZUZjdCgpO1xcXCI+XFxuICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcImdseXBoaWNvbiBnbHlwaGljb24tcGx1c1xcXCI+PC9zcGFuPlxcbiAgICAgICAgICAgICAgICZuYnNwO1xcbiAgICAgICAgICAgICAgIGFkZCBuZXcgbGluZVxcbiAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9oMz5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgICAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCIgbmctdHJhbnNjbHVkZT5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9kcmFnZHJvcC9kZERlY29yRHJvcFpvbmUvZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckRyb3Bab25lLnRlbXBsYXRlLmh0bWxcbi8vIG1vZHVsZSBpZCA9IDYwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 61 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.DRAG_DROP_DECOR_ITEM = undefined;\n\nvar _edaDragDropWayDragdropDdDecorItemTemplate = __webpack_require__(62);\n\nvar _edaDragDropWayDragdropDdDecorItemTemplate2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorItemTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DRAG_DROP_DECOR_ITEM = 'ddDecorItem';\n\nfunction ddDecorItem(easyFormDragWayConfig) {\n\tvar directive = {\n\t\trestrict: 'A',\n\t\tscope: {\n\t\t\t'verboseMode': '@ddItemVerboseMode',\n\t\t\t'currentIndex': '@ddItemCurrentIndex',\n\t\t\t'parentIndex': '@ddItemParentIndex',\n\t\t\t'parentParentIndex': '@ddItemParentParentIndex',\n\t\t\t'lineItemsCount': '@ddItemsCount',\n\t\t\t'cssClass': '@ddItemCssClass'\n\t\t},\n\t\ttemplate: _edaDragDropWayDragdropDdDecorItemTemplate2.default,\n\t\ttransclude: true,\n\t\tlink: linkfct\n\t};\n\treturn directive;\n\n\tfunction linkfct($scope, element, attrs, ctrl, transclude) {\n\t\tvar verboseModeActive = $scope.verboseMode;\n\t\tvar currentIndex = $scope.currentIndex;\n\t\tvar parentIndex = $scope.parentIndex;\n\t\tvar listClass = easyFormDragWayConfig.getDistinctItemCssClass();\n\n\t\t/**\n \t* init css class\n \t*/\n\t\tangular.forEach(listClass, function (css) {\n\t\t\treturn element.removeClass(css);\n\t\t});\n\t\telement.addClass($scope.cssClass);\n\t\t/**\n \t* update css class\n \t*/\n\t\t$scope.$watch('cssClass', function (newValue, oldValue) {\n\t\t\tif (newValue !== oldValue) {\n\t\t\t\t/**\n \t* update css class\n \t*/\n\t\t\t\tangular.forEach(listClass, function (css) {\n\t\t\t\t\treturn element.removeClass(css);\n\t\t\t\t});\n\t\t\t\telement.addClass(newValue);\n\t\t\t}\n\t\t});\n\n\t\t/**\n \t* verbose mode : just for dev \n \t*/\n\t\tif (verboseModeActive !== '') {\n\t\t\tvar verbose = angular.lowercase(verboseModeActive);\n\t\t\tif (verbose === 'true' || verbose === '1') {\n\t\t\t\t/* eslint no-console:0 */\n\t\t\t\tconsole.dir({\n\t\t\t\t\twhoAmI: 'I am verbose from ddDecorItem directive link',\n\t\t\t\t\tverbodeMode: verbose,\n\t\t\t\t\tParentParentIndex: $scope.$parent.$parent.$index,\n\t\t\t\t\tParentIndex: parentIndex,\n\t\t\t\t\tparentParentIndex: $scope.parentParentIndex,\n\t\t\t\t\tcurrentIndex: currentIndex,\n\t\t\t\t\tlineItemsCount: $scope.lineItemsCount\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t/**\n \t* control column : apply css class to item\n \t*/\n\t\tif ($scope.parentParentIndex === '0') element.addClass(listClass[0]);\n\t\t/**\n \t* prevent transclusion creating child scope \n \t*\n \t*\n \t* NOTE :if you want to know more about what I'm saying : check this nice tip on the subject : \n \t* http://angular-tips.com/blog/2014/03/transclusion-and-scopes/ \n \t*/\n\t\ttransclude($scope.$parent, function (contentClone) {\n\t\t\t/**\n \t* transclusion will append content to '
' \n \t*/\n\t\t\tvar childDiv = angular.element(element.children()[0]);\n\t\t\tchildDiv.append(contentClone);\n\t\t});\n\t}\n}\n\nddDecorItem.$inject = ['easyFormDragWayConfig'];\n\nexports.default = ddDecorItem;\nexports.DRAG_DROP_DECOR_ITEM = DRAG_DROP_DECOR_ITEM;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGREZWNvckl0ZW0vZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckl0ZW0uZGlyZWN0aXZlLmpzP2MxMzAiXSwibmFtZXMiOlsiRFJBR19EUk9QX0RFQ09SX0lURU0iLCJkZERlY29ySXRlbSIsImVhc3lGb3JtRHJhZ1dheUNvbmZpZyIsImRpcmVjdGl2ZSIsInJlc3RyaWN0Iiwic2NvcGUiLCJ0ZW1wbGF0ZSIsInRyYW5zY2x1ZGUiLCJsaW5rIiwibGlua2ZjdCIsIiRzY29wZSIsImVsZW1lbnQiLCJhdHRycyIsImN0cmwiLCJ2ZXJib3NlTW9kZUFjdGl2ZSIsInZlcmJvc2VNb2RlIiwiY3VycmVudEluZGV4IiwicGFyZW50SW5kZXgiLCJsaXN0Q2xhc3MiLCJnZXREaXN0aW5jdEl0ZW1Dc3NDbGFzcyIsImFuZ3VsYXIiLCJmb3JFYWNoIiwiY3NzIiwicmVtb3ZlQ2xhc3MiLCJhZGRDbGFzcyIsImNzc0NsYXNzIiwiJHdhdGNoIiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsInZlcmJvc2UiLCJsb3dlcmNhc2UiLCJjb25zb2xlIiwiZGlyIiwid2hvQW1JIiwidmVyYm9kZU1vZGUiLCJQYXJlbnRQYXJlbnRJbmRleCIsIiRwYXJlbnQiLCIkaW5kZXgiLCJQYXJlbnRJbmRleCIsInBhcmVudFBhcmVudEluZGV4IiwibGluZUl0ZW1zQ291bnQiLCJjb250ZW50Q2xvbmUiLCJjaGlsZERpdiIsImNoaWxkcmVuIiwiYXBwZW5kIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7Ozs7QUFFQSxJQUFNQSx1QkFBdUIsYUFBN0I7O0FBRUEsU0FBU0MsV0FBVCxDQUFxQkMscUJBQXJCLEVBQTJDO0FBQzFDLEtBQUlDLFlBQVk7QUFDZkMsWUFBYSxHQURFO0FBRWZDLFNBQWE7QUFDWixrQkFBbUIsb0JBRFA7QUFFWixtQkFBb0IscUJBRlI7QUFHWixrQkFBbUIsb0JBSFA7QUFJWix3QkFBc0IsMEJBSlY7QUFLWixxQkFBcUIsZUFMVDtBQU1aLGVBQWlCO0FBTkwsR0FGRTtBQVVmQywrREFWZTtBQVdmQyxjQUFhLElBWEU7QUFZZkMsUUFBVUM7QUFaSyxFQUFoQjtBQWNBLFFBQU9OLFNBQVA7O0FBRUEsVUFBU00sT0FBVCxDQUFpQkMsTUFBakIsRUFBeUJDLE9BQXpCLEVBQWtDQyxLQUFsQyxFQUF5Q0MsSUFBekMsRUFBK0NOLFVBQS9DLEVBQTBEO0FBQ3pELE1BQUlPLG9CQUFvQkosT0FBT0ssV0FBL0I7QUFDQSxNQUFJQyxlQUFvQk4sT0FBT00sWUFBL0I7QUFDQSxNQUFJQyxjQUFvQlAsT0FBT08sV0FBL0I7QUFDQSxNQUFJQyxZQUFvQmhCLHNCQUFzQmlCLHVCQUF0QixFQUF4Qjs7QUFHQTs7O0FBR0FDLFVBQVFDLE9BQVIsQ0FBZ0JILFNBQWhCLEVBQTJCLFVBQUNJLEdBQUQ7QUFBQSxVQUFPWCxRQUFRWSxXQUFSLENBQW9CRCxHQUFwQixDQUFQO0FBQUEsR0FBM0I7QUFDQVgsVUFBUWEsUUFBUixDQUFpQmQsT0FBT2UsUUFBeEI7QUFDQTs7O0FBR0FmLFNBQU9nQixNQUFQLENBQWMsVUFBZCxFQUEwQixVQUFDQyxRQUFELEVBQVdDLFFBQVgsRUFBc0I7QUFDL0MsT0FBR0QsYUFBYUMsUUFBaEIsRUFBeUI7QUFDeEI7OztBQUdBUixZQUFRQyxPQUFSLENBQWdCSCxTQUFoQixFQUEyQixVQUFDSSxHQUFEO0FBQUEsWUFBT1gsUUFBUVksV0FBUixDQUFvQkQsR0FBcEIsQ0FBUDtBQUFBLEtBQTNCO0FBQ0FYLFlBQVFhLFFBQVIsQ0FBaUJHLFFBQWpCO0FBQ0E7QUFDRCxHQVJEOztBQVVBOzs7QUFHQSxNQUFJYixzQkFBc0IsRUFBMUIsRUFBOEI7QUFDN0IsT0FBSWUsVUFBVVQsUUFBUVUsU0FBUixDQUFrQmhCLGlCQUFsQixDQUFkO0FBQ0EsT0FBSWUsWUFBWSxNQUFaLElBQXNCQSxZQUFZLEdBQXRDLEVBQTJDO0FBQzFDO0FBQ0FFLFlBQVFDLEdBQVIsQ0FBWTtBQUNYQyxhQUFzQiw4Q0FEWDtBQUVYQyxrQkFBc0JMLE9BRlg7QUFHWE0sd0JBQXNCekIsT0FBTzBCLE9BQVAsQ0FBZUEsT0FBZixDQUF1QkMsTUFIbEM7QUFJWEMsa0JBQXNCckIsV0FKWDtBQUtYc0Isd0JBQXNCN0IsT0FBTzZCLGlCQUxsQjtBQU1YdkIsbUJBQXNCQSxZQU5YO0FBT1h3QixxQkFBc0I5QixPQUFPOEI7QUFQbEIsS0FBWjtBQVNBO0FBQ0Q7QUFDRDs7O0FBR0EsTUFBSTlCLE9BQU82QixpQkFBUCxLQUE2QixHQUFqQyxFQUFzQzVCLFFBQVFhLFFBQVIsQ0FBaUJOLFVBQVUsQ0FBVixDQUFqQjtBQUN0Qzs7Ozs7OztBQU9BWCxhQUFXRyxPQUFPMEIsT0FBbEIsRUFBMkIsVUFBQ0ssWUFBRCxFQUFnQjtBQUN6Qzs7O0FBR0EsT0FBSUMsV0FBV3RCLFFBQVFULE9BQVIsQ0FBZ0JBLFFBQVFnQyxRQUFSLEdBQW1CLENBQW5CLENBQWhCLENBQWY7QUFDQUQsWUFBU0UsTUFBVCxDQUFnQkgsWUFBaEI7QUFDRCxHQU5EO0FBT0E7QUFFRDs7QUFHRHhDLFlBQVk0QyxPQUFaLEdBQXNCLENBQ3JCLHVCQURxQixDQUF0Qjs7a0JBSWU1QyxXO1FBR2RELG9CLEdBQUFBLG9CIiwiZmlsZSI6IjYxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgZHJhZ2Ryb3BJdGVtVGVtcGxhdGUgZnJvbSAnLi9lZGFEcmFnRHJvcFdheS5kcmFnZHJvcC5kZERlY29ySXRlbS50ZW1wbGF0ZS5odG1sJztcblxuY29uc3QgRFJBR19EUk9QX0RFQ09SX0lURU0gPSAnZGREZWNvckl0ZW0nO1xuXG5mdW5jdGlvbiBkZERlY29ySXRlbShlYXN5Rm9ybURyYWdXYXlDb25maWcpe1xuXHRsZXQgZGlyZWN0aXZlID0ge1xuXHRcdHJlc3RyaWN0XHRcdFx0OiAnQScsXG5cdFx0c2NvcGVcdFx0XHRcdFx0OiAge1xuXHRcdFx0J3ZlcmJvc2VNb2RlJyBcdFx0XHQ6ICdAZGRJdGVtVmVyYm9zZU1vZGUnLFxuXHRcdFx0J2N1cnJlbnRJbmRleCcgXHRcdFx0OiAnQGRkSXRlbUN1cnJlbnRJbmRleCcsXG5cdFx0XHQncGFyZW50SW5kZXgnXHRcdFx0XHQ6ICdAZGRJdGVtUGFyZW50SW5kZXgnLFxuXHRcdFx0J3BhcmVudFBhcmVudEluZGV4J1x0OiAnQGRkSXRlbVBhcmVudFBhcmVudEluZGV4JywgXG5cdFx0XHQnbGluZUl0ZW1zQ291bnQnIFx0XHQ6ICdAZGRJdGVtc0NvdW50Jyxcblx0XHRcdCdjc3NDbGFzcydcdFx0XHRcdFx0OiAnQGRkSXRlbUNzc0NsYXNzJ1xuXHRcdH0sXG5cdFx0dGVtcGxhdGVcdFx0OiAgIGRyYWdkcm9wSXRlbVRlbXBsYXRlLFxuXHRcdHRyYW5zY2x1ZGVcdDogdHJ1ZSxcdFxuXHRcdGxpbmtcdFx0XHRcdDogbGlua2ZjdFx0XG5cdH07XG5cdHJldHVybiBkaXJlY3RpdmU7XG5cdFxuXHRmdW5jdGlvbiBsaW5rZmN0KCRzY29wZSwgZWxlbWVudCwgYXR0cnMsIGN0cmwsIHRyYW5zY2x1ZGUpe1xuXHRcdGxldCB2ZXJib3NlTW9kZUFjdGl2ZSA9ICRzY29wZS52ZXJib3NlTW9kZTtcblx0XHRsZXQgY3VycmVudEluZGV4ICAgICAgPSAkc2NvcGUuY3VycmVudEluZGV4O1xuXHRcdGxldCBwYXJlbnRJbmRleCAgICAgICA9ICRzY29wZS5wYXJlbnRJbmRleDtcblx0XHRsZXQgbGlzdENsYXNzICAgICAgICAgPSBlYXN5Rm9ybURyYWdXYXlDb25maWcuZ2V0RGlzdGluY3RJdGVtQ3NzQ2xhc3MoKTtcblx0XG5cdFxuXHRcdC8qKlxuXHRcdFx0KiBpbml0IGNzcyBjbGFzc1xuXHRcdFx0Ki9cblx0XHRhbmd1bGFyLmZvckVhY2gobGlzdENsYXNzLCAoY3NzKT0+ZWxlbWVudC5yZW1vdmVDbGFzcyhjc3MpKTtcblx0XHRlbGVtZW50LmFkZENsYXNzKCRzY29wZS5jc3NDbGFzcyk7ICAgICAgICAgICAgICAgIFxuXHRcdC8qKlxuXHRcdFx0KiB1cGRhdGUgY3NzIGNsYXNzXG5cdFx0XHQqL1xuXHRcdCRzY29wZS4kd2F0Y2goJ2Nzc0NsYXNzJywgKG5ld1ZhbHVlLCBvbGRWYWx1ZSk9Pntcblx0XHRcdGlmKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSl7XG5cdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCogdXBkYXRlIGNzcyBjbGFzc1xuXHRcdFx0XHRcdCovXG5cdFx0XHRcdGFuZ3VsYXIuZm9yRWFjaChsaXN0Q2xhc3MsIChjc3MpPT5lbGVtZW50LnJlbW92ZUNsYXNzKGNzcykpO1xuXHRcdFx0XHRlbGVtZW50LmFkZENsYXNzKG5ld1ZhbHVlKTsgXG5cdFx0XHR9XHRcblx0XHR9KTtcblx0XG5cdFx0LyoqXG5cdFx0XHQqIHZlcmJvc2UgbW9kZSA6IGp1c3QgZm9yIGRldiBcblx0XHRcdCovXG5cdFx0aWYgKHZlcmJvc2VNb2RlQWN0aXZlICE9PSAnJykge1xuXHRcdFx0bGV0IHZlcmJvc2UgPSBhbmd1bGFyLmxvd2VyY2FzZSh2ZXJib3NlTW9kZUFjdGl2ZSk7XG5cdFx0XHRpZiAodmVyYm9zZSA9PT0gJ3RydWUnIHx8IHZlcmJvc2UgPT09ICcxJykge1xuXHRcdFx0XHQvKiBlc2xpbnQgbm8tY29uc29sZTowICovXG5cdFx0XHRcdGNvbnNvbGUuZGlyKHtcblx0XHRcdFx0XHR3aG9BbUkgICAgICAgICAgICAgIDogJ0kgYW0gdmVyYm9zZSBmcm9tIGRkRGVjb3JJdGVtIGRpcmVjdGl2ZSBsaW5rJyxcblx0XHRcdFx0XHR2ZXJib2RlTW9kZSAgICAgICAgIDogdmVyYm9zZSxcblx0XHRcdFx0XHRQYXJlbnRQYXJlbnRJbmRleCAgIDogJHNjb3BlLiRwYXJlbnQuJHBhcmVudC4kaW5kZXgsXG5cdFx0XHRcdFx0UGFyZW50SW5kZXggICAgICAgICA6IHBhcmVudEluZGV4LFxuXHRcdFx0XHRcdHBhcmVudFBhcmVudEluZGV4ICAgOiAkc2NvcGUucGFyZW50UGFyZW50SW5kZXgsXG5cdFx0XHRcdFx0Y3VycmVudEluZGV4ICAgICAgICA6IGN1cnJlbnRJbmRleCxcblx0XHRcdFx0XHRsaW5lSXRlbXNDb3VudCAgICAgIDogJHNjb3BlLmxpbmVJdGVtc0NvdW50XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSAgICAgICAgICAgICAgICAgICAgXG5cdFx0fVxuXHRcdC8qKlxuXHRcdFx0KiBjb250cm9sIGNvbHVtbiA6IGFwcGx5IGNzcyBjbGFzcyB0byBpdGVtXG5cdFx0XHQqL1xuXHRcdGlmICgkc2NvcGUucGFyZW50UGFyZW50SW5kZXggPT09ICcwJykgZWxlbWVudC5hZGRDbGFzcyhsaXN0Q2xhc3NbMF0pO1xuXHRcdC8qKlxuXHRcdFx0KiBwcmV2ZW50IHRyYW5zY2x1c2lvbiBjcmVhdGluZyBjaGlsZCBzY29wZSAgXG5cdFx0XHQqXG5cdFx0XHQqXG5cdFx0XHQqIE5PVEUgOmlmIHlvdSB3YW50IHRvIGtub3cgbW9yZSBhYm91dCB3aGF0IEknbSBzYXlpbmcgOiBjaGVjayB0aGlzIG5pY2UgdGlwIG9uIHRoZSBzdWJqZWN0IDogXG5cdFx0XHQqIGh0dHA6Ly9hbmd1bGFyLXRpcHMuY29tL2Jsb2cvMjAxNC8wMy90cmFuc2NsdXNpb24tYW5kLXNjb3Blcy8gICAgICAgIFxuXHRcdFx0Ki9cblx0XHR0cmFuc2NsdWRlKCRzY29wZS4kcGFyZW50LCAoY29udGVudENsb25lKT0+e1xuXHRcdFx0XHQvKipcblx0XHRcdFx0XHQqIHRyYW5zY2x1c2lvbiB3aWxsIGFwcGVuZCBjb250ZW50IHRvICc8ZGl2IGlkPVwiaXRlbURpcmVjdGl2ZVRyYW5zY2x1ZGVIZXJlXCI+PC9kaXY+JyBcblx0XHRcdFx0XHQqL1xuXHRcdFx0XHRsZXQgY2hpbGREaXYgPSBhbmd1bGFyLmVsZW1lbnQoZWxlbWVudC5jaGlsZHJlbigpWzBdKTsgXG5cdFx0XHRcdGNoaWxkRGl2LmFwcGVuZChjb250ZW50Q2xvbmUpO1xuXHRcdH0pOyAgIFx0XHRcblx0fVxuXHRcbn1cblxuXG5kZERlY29ySXRlbS4kaW5qZWN0ID0gW1xuXHQnZWFzeUZvcm1EcmFnV2F5Q29uZmlnJ1xuXTtcblxuZXhwb3J0IGRlZmF1bHQgZGREZWNvckl0ZW07XG5cbmV4cG9ydCB7XG5cdERSQUdfRFJPUF9ERUNPUl9JVEVNXG59O1xuXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGREZWNvckl0ZW0vZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckl0ZW0uZGlyZWN0aXZlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 62 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGREZWNvckl0ZW0vZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckl0ZW0udGVtcGxhdGUuaHRtbD9hNjljIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjYyLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIjxkaXY+XFxuICA8ZGl2IGlkPVxcXCJpdGVtRGlyZWN0aXZlVHJhbnNjbHVkZUhlcmVcXFwiPjwvZGl2PlxcbjwvZGl2PlxcblwiXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGREZWNvckl0ZW0vZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckl0ZW0udGVtcGxhdGUuaHRtbFxuLy8gbW9kdWxlIGlkID0gNjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 63 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DRAG_DROP_ITEM_DECOR_SERVICE = 'dragDropItemDecorationService';\n\nvar dragDropItemDecorationService = function () {\n\tfunction dragDropItemDecorationService(easyFormDragWayConfig) {\n\t\t_classCallCheck(this, dragDropItemDecorationService);\n\n\t\tthis.easyFormDragWayConfig = easyFormDragWayConfig;\n\t\tthis.init();\n\t}\n\n\t_createClass(dragDropItemDecorationService, [{\n\t\tkey: 'init',\n\t\tvalue: function init() {\n\t\t\tthis._listItemClass = [].concat(this.easyFormDragWayConfig.getListItemCssClass());\n\t\t}\n\t}, {\n\t\tkey: 'getListClass',\n\t\tvalue: function getListClass() {\n\t\t\treturn this._listItemClass;\n\t\t}\n\t}, {\n\t\tkey: 'getCssClassWhenNumberItemsInRowIs',\n\t\tvalue: function getCssClassWhenNumberItemsInRowIs(thisNumber) {\n\t\t\treturn this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(thisNumber);\n\t\t}\n\t}, {\n\t\tkey: 'applyCssClassWholeLine',\n\t\tvalue: function applyCssClassWholeLine(model, indexColumn, indexLine, numberItems, restrictToThisIndexColumn) {\n\t\t\tif (typeof numberItems !== 'undefined' && typeof indexLine !== 'undefined' && typeof indexColumn !== 'undefined' && typeof model !== 'undefined' && typeof restrictToThisIndexColumn !== 'undefined') {\n\t\t\t\tif (indexColumn === restrictToThisIndexColumn) {\n\t\t\t\t\tfor (var i = model[indexColumn][indexLine].length - 1; i >= 0; i--) {\n\t\t\t\t\t\tmodel[indexColumn][indexLine][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(numberItems);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateCssClassWholeColumn',\n\t\tvalue: function updateCssClassWholeColumn(model, indexColumn) {\n\t\t\tif (typeof indexColumn !== 'undefined' && typeof model !== 'undefined') {\n\t\t\t\tfor (var cpt = model[indexColumn].length - 1; cpt >= 0; cpt--) {\n\t\t\t\t\tfor (var i = model[indexColumn][cpt].length - 1; i >= 0; i--) {\n\t\t\t\t\t\tmodel[indexColumn][cpt][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(model[indexColumn][cpt].length);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn dragDropItemDecorationService;\n}();\n\ndragDropItemDecorationService.$inject = ['easyFormDragWayConfig'];\n\nexports.default = dragDropItemDecorationService;\nexports.DRAG_DROP_ITEM_DECOR_SERVICE = DRAG_DROP_ITEM_DECOR_SERVICE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGREZWNvckl0ZW0vZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckl0ZW0uc2VydmljZS5qcz8wMDY4Il0sIm5hbWVzIjpbIkRSQUdfRFJPUF9JVEVNX0RFQ09SX1NFUlZJQ0UiLCJkcmFnRHJvcEl0ZW1EZWNvcmF0aW9uU2VydmljZSIsImVhc3lGb3JtRHJhZ1dheUNvbmZpZyIsImluaXQiLCJfbGlzdEl0ZW1DbGFzcyIsImNvbmNhdCIsImdldExpc3RJdGVtQ3NzQ2xhc3MiLCJ0aGlzTnVtYmVyIiwiZ2V0SXRlbUNzc0RlcGVuZGluZ051bWJlckl0ZW1zSW5Sb3ciLCJtb2RlbCIsImluZGV4Q29sdW1uIiwiaW5kZXhMaW5lIiwibnVtYmVySXRlbXMiLCJyZXN0cmljdFRvVGhpc0luZGV4Q29sdW1uIiwiaSIsImxlbmd0aCIsImNzc0NsYXNzIiwiY3B0IiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQU1BLCtCQUErQiwrQkFBckM7O0lBRU1DLDZCO0FBRUwsd0NBQVlDLHFCQUFaLEVBQWtDO0FBQUE7O0FBQ2pDLE9BQUtBLHFCQUFMLEdBQTZCQSxxQkFBN0I7QUFDQSxPQUFLQyxJQUFMO0FBQ0E7Ozs7eUJBRUs7QUFDTCxRQUFLQyxjQUFMLEdBQXNCLEdBQUdDLE1BQUgsQ0FBVSxLQUFLSCxxQkFBTCxDQUEyQkksbUJBQTNCLEVBQVYsQ0FBdEI7QUFDQTs7O2lDQUVhO0FBQ2IsVUFBTyxLQUFLRixjQUFaO0FBQ0E7OztvREFFaUNHLFUsRUFBVztBQUM1QyxVQUFPLEtBQUtMLHFCQUFMLENBQTJCTSxtQ0FBM0IsQ0FBK0RELFVBQS9ELENBQVA7QUFDQTs7O3lDQUVzQkUsSyxFQUFPQyxXLEVBQWFDLFMsRUFBV0MsVyxFQUFhQyx5QixFQUEwQjtBQUM1RixPQUFJLE9BQU9ELFdBQVAsS0FBdUIsV0FBdkIsSUFDRixPQUFPRCxTQUFQLEtBQXFCLFdBRG5CLElBRUYsT0FBT0QsV0FBUCxLQUF1QixXQUZyQixJQUdGLE9BQU9ELEtBQVAsS0FBaUIsV0FIZixJQUlGLE9BQU9JLHlCQUFQLEtBQXFDLFdBSnZDLEVBSW9EO0FBQ25ELFFBQUlILGdCQUFnQkcseUJBQXBCLEVBQStDO0FBQzlDLFVBQUssSUFBSUMsSUFBSUwsTUFBTUMsV0FBTixFQUFtQkMsU0FBbkIsRUFBOEJJLE1BQTlCLEdBQXVDLENBQXBELEVBQXVERCxLQUFLLENBQTVELEVBQStEQSxHQUEvRCxFQUFvRTtBQUNsRUwsWUFBTUMsV0FBTixFQUFtQkMsU0FBbkIsRUFBOEJHLENBQTlCLEVBQWlDRSxRQUFqQyxHQUE0QyxLQUFLZCxxQkFBTCxDQUEyQk0sbUNBQTNCLENBQStESSxXQUEvRCxDQUE1QztBQUNEO0FBQ0Q7QUFDRCxXQUFPLElBQVA7QUFDQSxJQVhELE1BV0s7QUFDSixXQUFPLEtBQVA7QUFDQTtBQUNEOzs7NENBRXlCSCxLLEVBQU9DLFcsRUFBWTtBQUM1QyxPQUFJLE9BQU9BLFdBQVAsS0FBdUIsV0FBdkIsSUFDRixPQUFPRCxLQUFQLEtBQWlCLFdBRG5CLEVBQ2dDO0FBQy9CLFNBQUssSUFBSVEsTUFBTVIsTUFBTUMsV0FBTixFQUFtQkssTUFBbkIsR0FBNEIsQ0FBM0MsRUFBOENFLE9BQU8sQ0FBckQsRUFBd0RBLEtBQXhELEVBQStEO0FBQzlELFVBQUssSUFBSUgsSUFBSUwsTUFBTUMsV0FBTixFQUFtQk8sR0FBbkIsRUFBd0JGLE1BQXhCLEdBQWlDLENBQTlDLEVBQWlERCxLQUFLLENBQXRELEVBQXlEQSxHQUF6RCxFQUE4RDtBQUM1REwsWUFBTUMsV0FBTixFQUFtQk8sR0FBbkIsRUFBd0JILENBQXhCLEVBQTJCRSxRQUEzQixHQUFzQyxLQUFLZCxxQkFBTCxDQUEyQk0sbUNBQTNCLENBQStEQyxNQUFNQyxXQUFOLEVBQW1CTyxHQUFuQixFQUF3QkYsTUFBdkYsQ0FBdEM7QUFDRDtBQUNEO0FBQ0QsV0FBTyxJQUFQO0FBQ0EsSUFSRCxNQVFLO0FBQ0osV0FBTyxLQUFQO0FBQ0E7QUFDRDs7Ozs7O0FBS0ZkLDhCQUE4QmlCLE9BQTlCLEdBQXdDLENBQ3ZDLHVCQUR1QyxDQUF4Qzs7a0JBSWVqQiw2QjtRQUdkRCw0QixHQUFBQSw0QiIsImZpbGUiOiI2My5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IERSQUdfRFJPUF9JVEVNX0RFQ09SX1NFUlZJQ0UgPSAnZHJhZ0Ryb3BJdGVtRGVjb3JhdGlvblNlcnZpY2UnO1xuXG5jbGFzcyBkcmFnRHJvcEl0ZW1EZWNvcmF0aW9uU2VydmljZSB7XG5cdFxuXHRjb25zdHJ1Y3RvcihlYXN5Rm9ybURyYWdXYXlDb25maWcpe1xuXHRcdHRoaXMuZWFzeUZvcm1EcmFnV2F5Q29uZmlnID0gZWFzeUZvcm1EcmFnV2F5Q29uZmlnO1xuXHRcdHRoaXMuaW5pdCgpO1xuXHR9XG5cdFxuXHRpbml0KCl7XG5cdFx0dGhpcy5fbGlzdEl0ZW1DbGFzcyA9IFtdLmNvbmNhdCh0aGlzLmVhc3lGb3JtRHJhZ1dheUNvbmZpZy5nZXRMaXN0SXRlbUNzc0NsYXNzKCkpO1xuXHR9XG5cdFxuXHRnZXRMaXN0Q2xhc3MoKXtcblx0XHRyZXR1cm4gdGhpcy5fbGlzdEl0ZW1DbGFzcztcblx0fVx0XG5cdFxuXHRnZXRDc3NDbGFzc1doZW5OdW1iZXJJdGVtc0luUm93SXModGhpc051bWJlcil7XG5cdFx0cmV0dXJuIHRoaXMuZWFzeUZvcm1EcmFnV2F5Q29uZmlnLmdldEl0ZW1Dc3NEZXBlbmRpbmdOdW1iZXJJdGVtc0luUm93KHRoaXNOdW1iZXIpO1xuXHR9XG5cdFxuXHRhcHBseUNzc0NsYXNzV2hvbGVMaW5lKG1vZGVsLCBpbmRleENvbHVtbiwgaW5kZXhMaW5lLCBudW1iZXJJdGVtcywgcmVzdHJpY3RUb1RoaXNJbmRleENvbHVtbil7XG5cdFx0aWYgKHR5cGVvZiBudW1iZXJJdGVtcyAhPT0gJ3VuZGVmaW5lZCcgJiZcblx0XHRcdFx0dHlwZW9mIGluZGV4TGluZSAhPT0gJ3VuZGVmaW5lZCcgJiZcblx0XHRcdFx0dHlwZW9mIGluZGV4Q29sdW1uICE9PSAndW5kZWZpbmVkJyAmJlxuXHRcdFx0XHR0eXBlb2YgbW9kZWwgIT09ICd1bmRlZmluZWQnICYmXG5cdFx0XHRcdHR5cGVvZiByZXN0cmljdFRvVGhpc0luZGV4Q29sdW1uICE9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0aWYgKGluZGV4Q29sdW1uID09PSByZXN0cmljdFRvVGhpc0luZGV4Q29sdW1uKSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSBtb2RlbFtpbmRleENvbHVtbl1baW5kZXhMaW5lXS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0XHRcdFx0bW9kZWxbaW5kZXhDb2x1bW5dW2luZGV4TGluZV1baV0uY3NzQ2xhc3MgPSB0aGlzLmVhc3lGb3JtRHJhZ1dheUNvbmZpZy5nZXRJdGVtQ3NzRGVwZW5kaW5nTnVtYmVySXRlbXNJblJvdyhudW1iZXJJdGVtcyk7XG5cdFx0XHRcdH1cblx0XHRcdH0gXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9ZWxzZXtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0XG5cdHVwZGF0ZUNzc0NsYXNzV2hvbGVDb2x1bW4obW9kZWwsIGluZGV4Q29sdW1uKXtcblx0XHRpZiAodHlwZW9mIGluZGV4Q29sdW1uICE9PSAndW5kZWZpbmVkJyAmJlxuXHRcdFx0XHR0eXBlb2YgbW9kZWwgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRmb3IgKGxldCBjcHQgPSBtb2RlbFtpbmRleENvbHVtbl0ubGVuZ3RoIC0gMTsgY3B0ID49IDA7IGNwdC0tKSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSBtb2RlbFtpbmRleENvbHVtbl1bY3B0XS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0XHRcdFx0bW9kZWxbaW5kZXhDb2x1bW5dW2NwdF1baV0uY3NzQ2xhc3MgPSB0aGlzLmVhc3lGb3JtRHJhZ1dheUNvbmZpZy5nZXRJdGVtQ3NzRGVwZW5kaW5nTnVtYmVySXRlbXNJblJvdyhtb2RlbFtpbmRleENvbHVtbl1bY3B0XS5sZW5ndGgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XHRcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1lbHNle1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVx0XG5cdFx0XG5cdFxufVxuXG5kcmFnRHJvcEl0ZW1EZWNvcmF0aW9uU2VydmljZS4kaW5qZWN0ID0gW1xuXHQnZWFzeUZvcm1EcmFnV2F5Q29uZmlnJ1xuXTtcblxuZXhwb3J0IGRlZmF1bHQgZHJhZ0Ryb3BJdGVtRGVjb3JhdGlvblNlcnZpY2U7XG5cbmV4cG9ydCB7XG5cdERSQUdfRFJPUF9JVEVNX0RFQ09SX1NFUlZJQ0Vcbn07XG5cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9kcmFnZHJvcC9kZERlY29ySXRlbS9lZGFEcmFnRHJvcFdheS5kcmFnZHJvcC5kZERlY29ySXRlbS5zZXJ2aWNlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 64 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.DRAG_DROP_DECOR_LINE = undefined;\n\nvar _edaDragDropWayDragdropDdDecorLineTemplate = __webpack_require__(65);\n\nvar _edaDragDropWayDragdropDdDecorLineTemplate2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorLineTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DRAG_DROP_DECOR_LINE = 'ddDecorLine'; /* global angular */\n\n\nfunction ddDecorLine($timeout) {\n\tvar directive = {\n\t\trestrict: 'A',\n\t\tscope: {\n\t\t\t'verboseMode': '@ddLineVerboseMode',\n\t\t\t'currentIndex': '@ddLineCurrentIndex',\n\t\t\t'parentIndex': '@ddLineParentIndex',\n\t\t\t'removeLine': '&ddRemoveLine'\n\t\t},\n\t\ttemplate: _edaDragDropWayDragdropDdDecorLineTemplate2.default,\n\t\ttransclude: true,\n\t\tlink: linkfct\n\t};\n\treturn directive;\n\n\tfunction linkfct($scope, element, attrs, ctrl, transclude) {\n\t\tvar verboseModeActive = $scope.verboseMode;\n\t\tvar currentIndex = $scope.currentIndex;\n\t\tvar parentIndex = $scope.parentIndex;\n\t\t$scope.deleteLine = {};\n\t\t$scope.deleteLine.readyToDelete = false;\n\t\t$scope.deleteLine.dblClickCount = 0;\n\t\t$scope.isCollapsed = false;\n\t\tvar timer = void 0;\n\n\t\t// verbose mode : just for dev \n\t\tif (verboseModeActive !== '') {\n\t\t\tvar verbose = angular.lowercase(verboseModeActive);\n\t\t\tif (verbose === 'true' || verbose === '1') {\n\t\t\t\t/* eslint no-console:0 */\n\t\t\t\tconsole.dir({\n\t\t\t\t\twhoAmI: 'I am verbose from ddDecorLine directive link',\n\t\t\t\t\tverbodeMode: verbose,\n\t\t\t\t\tParentParentIndex: $scope.$parent.$parent.$index,\n\t\t\t\t\tParentIndex: parentIndex,\n\t\t\t\t\tcurrentIndex: currentIndex\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n \t* removeMe is function related to twice double click sequence to delete a line\n \t*\n \t* - addClass / remove/class ; will make line in a shake movement\n \t* - call \"removeLine function to delete the line (if it was rwice double clicked)\n \t*/\n\t\t$scope.removeMe = function (event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\n\t\t\tif ($scope.parentIndex === '1') {\n\t\t\t\t//2nd dbl click : if is shaking so it is confirmation to delete\n\t\t\t\tif ($scope.deleteLine.dblClickCount === 1) {\n\t\t\t\t\t$scope.deleteLine.dblClickCount = 0;\n\t\t\t\t\t$scope.deleteLine.readyToDelete = false;\n\t\t\t\t\t/**\n \t* NOTE : trick in calling parent controller function with input param when directive with isolate scope\n \t* see : https://thinkster.io/egghead/isolate-scope-am\n \t*\n \t* Here should be:\n \t* \n \t*-> in html : dd-remove-line=\"removeThisLine(indexToDelete)\n \t*-> in controller : $scope.removeThisLine = function(lineIndex){\n \t*-> so in directive call it : $scope.removeLine({indexToDelete: currentIndex});\n \t*\n \t*\n \t* BUT in this case (repeats, ul> li.... complicated) \n \t* => works better (if shaking a lot of line in a row it won't mess up)\n \t*\n \t*-> in html : dd-remove-line=\"removeThisLine($index)\n \t*-> in controller : $scope.removeThisLine = function(lineIndex){\n \t*-> so in directive call it : $scope.removeLine();\n \t*/\n\t\t\t\t\t//$scope.removeLine({indexToDelete: currentIndex});\n\t\t\t\t\t$scope.removeLine();\n\t\t\t\t\t//console.warn('force timer destruction after delete!');\n\t\t\t\t\t$timeout.cancel(timer);\n\t\t\t\t}\n\n\t\t\t\t//1st dbl click : make it shake so ready to delete\n\t\t\t\tif ($scope.deleteLine.dblClickCount === 0) {\n\t\t\t\t\t$scope.deleteLine.dblClickCount = $scope.deleteLine.dblClickCount + 1;\n\t\t\t\t\t$scope.deleteLine.readyToDelete = true;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n \t* signle event will ever occur\n \t*\n \t* to prevent it to interfere with double click sequence \n \t* -> set a time out (shaking line to delete will automaticallly end shaking after timeout : 2 seconds)\n \t*/\n\t\t$scope.cancelDelete = function () {\n\t\t\t//event.preventDefault();\n\t\t\t//event.stopPropagation();\n\t\t\ttimer = $timeout(function () {\n\t\t\t\t$scope.deleteLine.dblClickCount = 0;\n\t\t\t\t$scope.deleteLine.readyToDelete = false;\n\t\t\t}, 500);\n\n\t\t\t/**\n \t* debug\n \t*/\n\t\t\t// timer.then(\n\t\t\t// () =>{\n\t\t\t// console.log( 'Timer resolved!', Date.now() );\n\t\t\t// },\n\t\t\t// () =>{\n\t\t\t// console.log( 'Timer rejected!', Date.now() );\n\t\t\t// }\n\t\t\t// );\n\t\t};\n\n\t\t/**\n \t* timer destruction to prevent from bad UI experience\n \t*/\n\t\t$scope.$on('$destroy', function () {\n\t\t\treturn $timeout.cancel(timer);\n\t\t});\n\n\t\t/**\n \t* prevent transclusion creating child scope \n \t*\n \t*\n \t* NOTE :if you want to know more about what I'm saying : check this nice tip on the subject : \n \t* http://angular-tips.com/blog/2014/03/transclusion-and-scopes/ \n \t*/\n\t\ttransclude($scope.$parent, function (contentClone) {\n\t\t\t//transclusion will append content to '
'\n\t\t\tvar childDiv = angular.element(element.children()[0]);\n\t\t\tchildDiv.append(contentClone);\n\t\t});\n\t}\n}\n\nddDecorLine.$inject = ['$timeout'];\n\nexports.default = ddDecorLine;\nexports.DRAG_DROP_DECOR_LINE = DRAG_DROP_DECOR_LINE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGREZWNvckxpbmUvZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckxpbmUuZGlyZWN0aXZlLmpzPzkwMGEiXSwibmFtZXMiOlsiRFJBR19EUk9QX0RFQ09SX0xJTkUiLCJkZERlY29yTGluZSIsIiR0aW1lb3V0IiwiZGlyZWN0aXZlIiwicmVzdHJpY3QiLCJzY29wZSIsInRlbXBsYXRlIiwidHJhbnNjbHVkZSIsImxpbmsiLCJsaW5rZmN0IiwiJHNjb3BlIiwiZWxlbWVudCIsImF0dHJzIiwiY3RybCIsInZlcmJvc2VNb2RlQWN0aXZlIiwidmVyYm9zZU1vZGUiLCJjdXJyZW50SW5kZXgiLCJwYXJlbnRJbmRleCIsImRlbGV0ZUxpbmUiLCJyZWFkeVRvRGVsZXRlIiwiZGJsQ2xpY2tDb3VudCIsImlzQ29sbGFwc2VkIiwidGltZXIiLCJ2ZXJib3NlIiwiYW5ndWxhciIsImxvd2VyY2FzZSIsImNvbnNvbGUiLCJkaXIiLCJ3aG9BbUkiLCJ2ZXJib2RlTW9kZSIsIlBhcmVudFBhcmVudEluZGV4IiwiJHBhcmVudCIsIiRpbmRleCIsIlBhcmVudEluZGV4IiwicmVtb3ZlTWUiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVtb3ZlTGluZSIsImNhbmNlbCIsImNhbmNlbERlbGV0ZSIsIiRvbiIsImNvbnRlbnRDbG9uZSIsImNoaWxkRGl2IiwiY2hpbGRyZW4iLCJhcHBlbmQiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLHVCQUF1QixhQUE3QixDLENBSEE7OztBQU1BLFNBQVNDLFdBQVQsQ0FBcUJDLFFBQXJCLEVBQThCO0FBQzdCLEtBQUlDLFlBQVk7QUFDZkMsWUFBWSxHQURHO0FBRWZDLFNBQVc7QUFDVixrQkFBaUIsb0JBRFA7QUFFVixtQkFBaUIscUJBRlA7QUFHVixr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QWhCO0FBQ0EsR0FKRDtBQU9BO0FBRUQ7O0FBRUR6QyxZQUFZNkMsT0FBWixHQUFzQixDQUNyQixVQURxQixDQUF0Qjs7a0JBSWU3QyxXO1FBR2RELG9CLEdBQUFBLG9CIiwiZmlsZSI6IjY0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGFuZ3VsYXIgKi9cbmltcG9ydCBkZERlY29yTGluZVRlbXBsYXRlIGZyb20gJy4vZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckxpbmUudGVtcGxhdGUuaHRtbCc7XG5cbmNvbnN0IERSQUdfRFJPUF9ERUNPUl9MSU5FID0gJ2RkRGVjb3JMaW5lJztcblxuXG5mdW5jdGlvbiBkZERlY29yTGluZSgkdGltZW91dCl7XG5cdGxldCBkaXJlY3RpdmUgPSB7XG5cdFx0cmVzdHJpY3RcdFx0Olx0J0EnLFxuXHRcdHNjb3BlXHRcdFx0XHQ6IHtcblx0XHRcdCd2ZXJib3NlTW9kZScgIDogJ0BkZExpbmVWZXJib3NlTW9kZScsXG5cdFx0XHQnY3VycmVudEluZGV4JyA6ICdAZGRMaW5lQ3VycmVudEluZGV4Jyxcblx0XHRcdCdwYXJlbnRJbmRleCcgIDogJ0BkZExpbmVQYXJlbnRJbmRleCcsXG5cdFx0XHQncmVtb3ZlTGluZScgICA6ICcmZGRSZW1vdmVMaW5lJ1xuXHRcdH0sXHRcdFxuXHRcdHRlbXBsYXRlXHRcdDogZGREZWNvckxpbmVUZW1wbGF0ZSxcblx0XHR0cmFuc2NsdWRlXHQ6IHRydWUsXG5cdFx0bGlua1x0XHRcdFx0OiBsaW5rZmN0XHRcdFxuXHR9O1xuXHRyZXR1cm4gZGlyZWN0aXZlO1xuXHRcblx0XG5cdGZ1bmN0aW9uIGxpbmtmY3QoJHNjb3BlLCBlbGVtZW50LCBhdHRycywgY3RybCwgdHJhbnNjbHVkZSl7XG5cdFx0bGV0IHZlcmJvc2VNb2RlQWN0aXZlXHRcdFx0XHRcdFx0PSAkc2NvcGUudmVyYm9zZU1vZGU7XG5cdFx0bGV0IGN1cnJlbnRJbmRleCAgICAgIFx0XHRcdFx0XHQ9ICRzY29wZS5jdXJyZW50SW5kZXg7XG5cdFx0bGV0IHBhcmVudEluZGV4ICAgICAgIFx0XHRcdFx0XHQ9ICRzY29wZS5wYXJlbnRJbmRleDtcblx0XHQkc2NvcGUuZGVsZXRlTGluZSBcdFx0XHRcdFx0XHRcdD0ge307XG5cdFx0JHNjb3BlLmRlbGV0ZUxpbmUucmVhZHlUb0RlbGV0ZSA9IGZhbHNlO1xuXHRcdCRzY29wZS5kZWxldGVMaW5lLmRibENsaWNrQ291bnQgPSAwO1xuXHRcdCRzY29wZS5pc0NvbGxhcHNlZCBcdFx0XHRcdFx0XHRcdD0gZmFsc2U7XG5cdFx0bGV0IHRpbWVyO1xuXHRcdFxuXG5cdFx0Ly8gdmVyYm9zZSBtb2RlIDoganVzdCBmb3IgZGV2IFxuXHRcdGlmICh2ZXJib3NlTW9kZUFjdGl2ZSAhPT0gJycpIHtcblx0XHRcdGxldCB2ZXJib3NlID0gYW5ndWxhci5sb3dlcmNhc2UodmVyYm9zZU1vZGVBY3RpdmUpO1xuXHRcdFx0aWYgKHZlcmJvc2UgPT09ICd0cnVlJyB8fCB2ZXJib3NlID09PSAnMScpIHtcblx0XHRcdFx0LyogZXNsaW50IG5vLWNvbnNvbGU6MCAqL1xuXHRcdFx0XHRjb25zb2xlLmRpcih7XG5cdFx0XHRcdFx0d2hvQW1JICAgICAgICAgICAgICA6ICdJIGFtIHZlcmJvc2UgZnJvbSBkZERlY29yTGluZSBkaXJlY3RpdmUgbGluaycsXG5cdFx0XHRcdFx0dmVyYm9kZU1vZGUgICAgICAgICA6IHZlcmJvc2UsXG5cdFx0XHRcdFx0UGFyZW50UGFyZW50SW5kZXggICA6ICRzY29wZS4kcGFyZW50LiRwYXJlbnQuJGluZGV4LFxuXHRcdFx0XHRcdFBhcmVudEluZGV4ICAgICAgICAgOiBwYXJlbnRJbmRleCxcblx0XHRcdFx0XHRjdXJyZW50SW5kZXggICAgICAgIDogY3VycmVudEluZGV4XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSAgICAgICAgICAgICAgICAgICAgXG5cdFx0fVxuXHRcdFxuXG5cdFx0LyoqXG5cdFx0XHQqIHJlbW92ZU1lIGlzIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gdHdpY2UgZG91YmxlIGNsaWNrIHNlcXVlbmNlIHRvIGRlbGV0ZSBhIGxpbmVcblx0XHRcdCpcblx0XHRcdCogIC0gYWRkQ2xhc3MgLyByZW1vdmUvY2xhc3MgOyB3aWxsIG1ha2UgbGluZSBpbiBhIHNoYWtlIG1vdmVtZW50XG5cdFx0XHQqICAtIGNhbGwgXCJyZW1vdmVMaW5lIGZ1bmN0aW9uIHRvIGRlbGV0ZSB0aGUgbGluZSAoaWYgaXQgd2FzIHJ3aWNlIGRvdWJsZSBjbGlja2VkKVxuXHRcdFx0Ki9cblx0JHNjb3BlLnJlbW92ZU1lID0gKGV2ZW50KT0+e1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cblx0XHRpZiAoJHNjb3BlLnBhcmVudEluZGV4ID09PSAnMScpIHtcblx0XHRcdC8vMm5kIGRibCBjbGljayA6IGlmIGlzIHNoYWtpbmcgc28gaXQgaXMgY29uZmlybWF0aW9uIHRvIGRlbGV0ZVxuXHRcdFx0aWYgKCRzY29wZS5kZWxldGVMaW5lLmRibENsaWNrQ291bnQgPT09IDEpe1xuXHRcdFx0XHQkc2NvcGUuZGVsZXRlTGluZS5kYmxDbGlja0NvdW50ID0gMDtcblx0XHRcdFx0JHNjb3BlLmRlbGV0ZUxpbmUucmVhZHlUb0RlbGV0ZSA9IGZhbHNlO1xuXHRcdFx0XHQvKipcblx0XHRcdFx0XHQqIE5PVEUgOiB0cmljayBpbiBjYWxsaW5nIHBhcmVudCBjb250cm9sbGVyIGZ1bmN0aW9uIHdpdGggaW5wdXQgcGFyYW0gd2hlbiBkaXJlY3RpdmUgd2l0aCBpc29sYXRlIHNjb3BlXG5cdFx0XHRcdFx0KiBzZWUgOiBodHRwczovL3RoaW5rc3Rlci5pby9lZ2doZWFkL2lzb2xhdGUtc2NvcGUtYW1cblx0XHRcdFx0XHQqXG5cdFx0XHRcdFx0KiBIZXJlIHNob3VsZCBiZTpcblx0XHRcdFx0XHQqIFxuXHRcdFx0XHRcdCotPiBpbiBodG1sIDogICAgICAgICAgICAgICAgICAgICBkZC1yZW1vdmUtbGluZT1cInJlbW92ZVRoaXNMaW5lKGluZGV4VG9EZWxldGUpXG5cdFx0XHRcdFx0Ki0+IGluIGNvbnRyb2xsZXIgOiAgICAgICAgICAgICAgICRzY29wZS5yZW1vdmVUaGlzTGluZSA9IGZ1bmN0aW9uKGxpbmVJbmRleCl7XG5cdFx0XHRcdFx0Ki0+IHNvIGluIGRpcmVjdGl2ZSBjYWxsIGl0ICA6ICAgICRzY29wZS5yZW1vdmVMaW5lKHtpbmRleFRvRGVsZXRlOiBjdXJyZW50SW5kZXh9KTtcblx0XHRcdFx0XHQqXG5cdFx0XHRcdFx0KlxuXHRcdFx0XHRcdCogQlVUIGluIHRoaXMgY2FzZSAocmVwZWF0cywgdWw+IGxpLi4uLiBjb21wbGljYXRlZCkgXG5cdFx0XHRcdFx0KiAgPT4gd29ya3MgYmV0dGVyIChpZiBzaGFraW5nIGEgbG90IG9mIGxpbmUgaW4gYSByb3cgaXQgd29uJ3QgbWVzcyB1cClcblx0XHRcdFx0XHQqXG5cdFx0XHRcdFx0Ki0+IGluIGh0bWwgOiAgICAgICAgICAgICAgICAgICAgIGRkLXJlbW92ZS1saW5lPVwicmVtb3ZlVGhpc0xpbmUoJGluZGV4KVxuXHRcdFx0XHRcdCotPiBpbiBjb250cm9sbGVyIDogICAgICAgICAgICAgICAkc2NvcGUucmVtb3ZlVGhpc0xpbmUgPSBmdW5jdGlvbihsaW5lSW5kZXgpe1xuXHRcdFx0XHRcdCotPiBzbyBpbiBkaXJlY3RpdmUgY2FsbCBpdCAgOiAgICAkc2NvcGUucmVtb3ZlTGluZSgpO1xuXHRcdFx0XHRcdCovICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHRcdFx0XHQvLyRzY29wZS5yZW1vdmVMaW5lKHtpbmRleFRvRGVsZXRlOiBjdXJyZW50SW5kZXh9KTtcblx0XHRcdFx0JHNjb3BlLnJlbW92ZUxpbmUoKTtcblx0XHRcdFx0Ly9jb25zb2xlLndhcm4oJ2ZvcmNlIHRpbWVyIGRlc3RydWN0aW9uIGFmdGVyIGRlbGV0ZSEnKTtcblx0XHRcdFx0JHRpbWVvdXQuY2FuY2VsKHRpbWVyKTtcblx0XHRcdH1cblx0XHRcblx0XHRcdC8vMXN0IGRibCBjbGljayA6IG1ha2UgaXQgc2hha2Ugc28gcmVhZHkgdG8gZGVsZXRlXG5cdFx0XHRpZiAoJHNjb3BlLmRlbGV0ZUxpbmUuZGJsQ2xpY2tDb3VudCA9PT0gMCkge1xuXHRcdFx0XHQkc2NvcGUuZGVsZXRlTGluZS5kYmxDbGlja0NvdW50ID0gJHNjb3BlLmRlbGV0ZUxpbmUuZGJsQ2xpY2tDb3VudCArIDE7XG5cdFx0XHRcdCRzY29wZS5kZWxldGVMaW5lLnJlYWR5VG9EZWxldGUgPSB0cnVlO1xuXHRcdFx0fVxuXHRcblx0XHR9XG5cdH07XHRcdFxuXHRcblx0XG5cdFxuXHRcdC8qKlxuXHRcdFx0KiBzaWdubGUgZXZlbnQgd2lsbCBldmVyIG9jY3VyXG5cdFx0XHQqXG5cdFx0XHQqIHRvIHByZXZlbnQgaXQgdG8gaW50ZXJmZXJlIHdpdGggZG91YmxlIGNsaWNrIHNlcXVlbmNlIFxuXHRcdFx0KiAtPiBzZXQgYSB0aW1lIG91dCAoc2hha2luZyBsaW5lIHRvIGRlbGV0ZSB3aWxsIGF1dG9tYXRpY2FsbGx5IGVuZCBzaGFraW5nIGFmdGVyIHRpbWVvdXQgOiAyIHNlY29uZHMpXG5cdFx0XHQqL1xuXHRcdCRzY29wZS5jYW5jZWxEZWxldGUgPSAoKT0+e1xuXHRcdFx0Ly9ldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0Ly9ldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdHRpbWVyID0gJHRpbWVvdXQoKCk9Pntcblx0XHRcdFx0JHNjb3BlLmRlbGV0ZUxpbmUuZGJsQ2xpY2tDb3VudCA9IDA7XG5cdFx0XHRcdCRzY29wZS5kZWxldGVMaW5lLnJlYWR5VG9EZWxldGUgPSBmYWxzZTsgIFx0XHRcdFx0XHRcdFx0XG5cdFx0XHR9LCA1MDApO1xuXHRcdFx0XG5cdFx0XHQvKipcblx0XHRcdFx0KiBkZWJ1Z1xuXHRcdFx0XHQqL1xuXHRcdFx0Ly8gdGltZXIudGhlbihcblx0XHRcdC8vICAgICAoKSA9Pntcblx0XHRcdC8vICAgICAgICAgY29uc29sZS5sb2coICdUaW1lciByZXNvbHZlZCEnLCBEYXRlLm5vdygpICk7XG5cdFx0XHQvLyAgICAgfSxcblx0XHRcdC8vICAgICAoKSA9Pntcblx0XHRcdC8vICAgICAgICAgY29uc29sZS5sb2coICdUaW1lciByZWplY3RlZCEnLCBEYXRlLm5vdygpICk7XG5cdFx0XHQvLyAgICAgfVxuXHRcdFx0Ly8gKTtcblx0XHR9O1x0XHRcblx0XHRcblxuXHRcdC8qKlxuXHRcdFx0KiB0aW1lciBkZXN0cnVjdGlvbiB0byBwcmV2ZW50IGZyb20gYmFkIFVJIGV4cGVyaWVuY2Vcblx0XHRcdCovXG5cdFx0JHNjb3BlLiRvbignJGRlc3Ryb3knLCAoKT0+JHRpbWVvdXQuY2FuY2VsKHRpbWVyKSk7IFxuXHRcdFx0XHRcblxuXG5cdFx0LyoqXG5cdFx0XHQqIHByZXZlbnQgdHJhbnNjbHVzaW9uIGNyZWF0aW5nIGNoaWxkIHNjb3BlICBcblx0XHRcdCpcblx0XHRcdCpcblx0XHRcdCogTk9URSA6aWYgeW91IHdhbnQgdG8ga25vdyBtb3JlIGFib3V0IHdoYXQgSSdtIHNheWluZyA6IGNoZWNrIHRoaXMgbmljZSB0aXAgb24gdGhlIHN1YmplY3QgOiBcblx0XHRcdCogaHR0cDovL2FuZ3VsYXItdGlwcy5jb20vYmxvZy8yMDE0LzAzL3RyYW5zY2x1c2lvbi1hbmQtc2NvcGVzLyAgICAgICAgXG5cdFx0XHQqL1xuXHRcdHRyYW5zY2x1ZGUoJHNjb3BlLiRwYXJlbnQsIChjb250ZW50Q2xvbmUpPT57XG5cdFx0XHQvL3RyYW5zY2x1c2lvbiB3aWxsIGFwcGVuZCBjb250ZW50IHRvICc8ZGl2IGlkPVwibGluZURpcmVjdGl2ZVRyYW5zY2x1ZGVIZXJlXCI+PC9kaXY+J1xuXHRcdFx0bGV0IGNoaWxkRGl2ID0gYW5ndWxhci5lbGVtZW50KGVsZW1lbnQuY2hpbGRyZW4oKVswXSk7IFxuXHRcdFx0Y2hpbGREaXYuYXBwZW5kKGNvbnRlbnRDbG9uZSk7XG5cdFx0fSk7IFxuXG5cblx0fVxuXHRcbn1cblxuZGREZWNvckxpbmUuJGluamVjdCA9IFtcblx0JyR0aW1lb3V0J1xuXTtcblxuZXhwb3J0IGRlZmF1bHQgZGREZWNvckxpbmU7XG5cbmV4cG9ydCB7XG5cdERSQUdfRFJPUF9ERUNPUl9MSU5FXG59O1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9kcmFnZHJvcC9kZERlY29yTGluZS9lZGFEcmFnRHJvcFdheS5kcmFnZHJvcC5kZERlY29yTGluZS5kaXJlY3RpdmUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 65 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n \\n \\n \\n \\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGREZWNvckxpbmUvZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGREZWNvckxpbmUudGVtcGxhdGUuaHRtbD83OGIwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQyw2Q0FBNkMscUNBQXFDLHNDQUFzQyIsImZpbGUiOiI2NS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCI8ZGl2XFxuICBuZy1jbGFzcz1cXFwie2NvbmZpcm1MaW5lRGVsZXRlIDogZGVsZXRlTGluZS5yZWFkeVRvRGVsZXRlfVxcXCJcXG4gIG5nLWRibGNsaWNrPVxcXCJyZW1vdmVNZSgkZXZlbnQpO1xcXCJcXG4gIG5nLWNsaWNrPVxcXCJjYW5jZWxEZWxldGUoJGV2ZW50KTtcXFwiPlxcbiAgPGJ1dHRvblxcbiAgICBuZy1zaG93PVxcXCJkZWxldGVMaW5lLnJlYWR5VG9EZWxldGUgPT09IHRydWVcXFwiXFxuICAgIHR5cGU9XFxcImJ1dHRvblxcXCJcXG4gICAgY2xhc3M9XFxcImJ0biBidG4tZGFuZ2VyIHB1bGwtcmlnaHQgYnV0dG9uQ2xvc2VMaW5lXFxcIiA+XFxuICAgICA8c3BhblxcbiAgICAgIGNsYXNzPVxcXCJnbHlwaGljb24gZ2x5cGhpY29uLXRyYXNoXFxcIlxcbiAgICAgIGFyaWEtaGlkZGVuPVxcXCJ0cnVlXFxcIj5cXG4gICAgPC9zcGFuPlxcbiAgPC9idXR0b24+XFxuPC9kaXY+XFxuPGRpdiBpZD1cXFwibGluZURpcmVjdGl2ZVRyYW5zY2x1ZGVIZXJlXFxcIj48L2Rpdj5cXG5cIlxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2RyYWdkcm9wL2RkRGVjb3JMaW5lL2VkYURyYWdEcm9wV2F5LmRyYWdkcm9wLmRkRGVjb3JMaW5lLnRlbXBsYXRlLmh0bWxcbi8vIG1vZHVsZSBpZCA9IDY1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 66 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar DRAG_DROP_NO_EDITABLE_CONTROL = 'ddNoEditableControl';\n\nfunction ddNoEditableControl() {\n\tvar directive = {\n\t\trestrict: 'A',\n\t\tlink: linkfct\n\t};\n\treturn directive;\n\n\tfunction linkfct($scope, element) {\n\t\telement.on('click', function (event) {\n\t\t\treturn event.preventDefault();\n\t\t});\n\t}\n}\n\nddNoEditableControl.$inject = [];\n\nexports.default = ddNoEditableControl;\nexports.DRAG_DROP_NO_EDITABLE_CONTROL = DRAG_DROP_NO_EDITABLE_CONTROL;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZHJhZ2Ryb3AvZGROb0VkaXRhYmxlQ29udHJvbC9lZGFEcmFnRHJvcFdheS5kcmFnZHJvcC5kZE5vRWRpdGFibGVDb250cm9sLmRpcmVjdGl2ZS5qcz82ODBmIl0sIm5hbWVzIjpbIkRSQUdfRFJPUF9OT19FRElUQUJMRV9DT05UUk9MIiwiZGROb0VkaXRhYmxlQ29udHJvbCIsImRpcmVjdGl2ZSIsInJlc3RyaWN0IiwibGluayIsImxpbmtmY3QiLCIkc2NvcGUiLCJlbGVtZW50Iiwib24iLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFNQSxnQ0FBZ0MscUJBQXRDOztBQUVBLFNBQVNDLG1CQUFULEdBQStCO0FBQzlCLEtBQUlDLFlBQVk7QUFDZkMsWUFBVyxHQURJO0FBRWZDLFFBQVNDO0FBRk0sRUFBaEI7QUFJQSxRQUFPSCxTQUFQOztBQUVBLFVBQVNHLE9BQVQsQ0FBaUJDLE1BQWpCLEVBQXlCQyxPQUF6QixFQUFrQztBQUNqQ0EsVUFBUUMsRUFBUixDQUFXLE9BQVgsRUFBb0IsVUFBQ0MsS0FBRDtBQUFBLFVBQVNBLE1BQU1DLGNBQU4sRUFBVDtBQUFBLEdBQXBCO0FBQ0E7QUFDRDs7QUFFRFQsb0JBQW9CVSxPQUFwQixHQUE4QixFQUE5Qjs7a0JBRWVWLG1CO1FBR2RELDZCLEdBQUFBLDZCIiwiZmlsZSI6IjY2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgRFJBR19EUk9QX05PX0VESVRBQkxFX0NPTlRST0wgPSAnZGROb0VkaXRhYmxlQ29udHJvbCc7XG5cbmZ1bmN0aW9uIGRkTm9FZGl0YWJsZUNvbnRyb2woKSB7XG5cdGxldCBkaXJlY3RpdmUgPSB7XG5cdFx0cmVzdHJpY3RcdDogJ0EnLFxuXHRcdGxpbmtcdFx0XHQ6IGxpbmtmY3Rcblx0fTtcblx0cmV0dXJuIGRpcmVjdGl2ZTtcblxuXHRmdW5jdGlvbiBsaW5rZmN0KCRzY29wZSwgZWxlbWVudCkge1xuXHRcdGVsZW1lbnQub24oJ2NsaWNrJywgKGV2ZW50KT0+ZXZlbnQucHJldmVudERlZmF1bHQoKSk7XG5cdH1cbn1cblxuZGROb0VkaXRhYmxlQ29udHJvbC4kaW5qZWN0ID0gW107XG5cbmV4cG9ydCBkZWZhdWx0IGRkTm9FZGl0YWJsZUNvbnRyb2w7XG5cbmV4cG9ydCB7XG5cdERSQUdfRFJPUF9OT19FRElUQUJMRV9DT05UUk9MXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2RyYWdkcm9wL2RkTm9FZGl0YWJsZUNvbnRyb2wvZWRhRHJhZ0Ryb3BXYXkuZHJhZ2Ryb3AuZGROb0VkaXRhYmxlQ29udHJvbC5kaXJlY3RpdmUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 67 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _edaDragDropWayRightClick = __webpack_require__(68);\n\nvar _edaDragDropWayRightClick2 = _interopRequireDefault(_edaDragDropWayRightClick);\n\nvar _edaDragDropWayRightClick3 = __webpack_require__(69);\n\nvar _edaDragDropWayRightClick4 = _interopRequireDefault(_edaDragDropWayRightClick3);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EDA_RIGHT_CLICK_MODULE = 'eda.right.click.module';\n\nexports.default = angular.module(EDA_RIGHT_CLICK_MODULE, []).directive(_edaDragDropWayRightClick.EDA_RIGHT_CLICK_DIRECTIVE, _edaDragDropWayRightClick2.default).service(_edaDragDropWayRightClick3.EDA_RIGHT_CLICKED_MANAGER_SERVICE, _edaDragDropWayRightClick4.default);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29tbW9uL3JpZ2h0Y2xpY2svZWRhRHJhZ0Ryb3BXYXkucmlnaHRDbGljay5tb2R1bGUuanM/YzJlYSJdLCJuYW1lcyI6WyJFREFfUklHSFRfQ0xJQ0tfTU9EVUxFIiwiYW5ndWxhciIsIm1vZHVsZSIsImRpcmVjdGl2ZSIsInNlcnZpY2UiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBSUE7Ozs7OztBQUtBLElBQU1BLHlCQUF5Qix3QkFBL0I7O2tCQUdlQyxRQUNOQyxNQURNLENBQ0NGLHNCQURELEVBQ3lCLEVBRHpCLEVBRU5HLFNBRk0sMEZBR05DLE9BSE0sa0ciLCJmaWxlIjoiNjcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZWRhUmlnaHRDbGljaywge1xuXHRFREFfUklHSFRfQ0xJQ0tfRElSRUNUSVZFXG59XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZyb20gJy4vZWRhRHJhZ0Ryb3BXYXkucmlnaHRDbGljay5kaXJlY3RpdmUnO1xuXG5pbXBvcnQgZGRJdGVtUmlnaHRDbGlja2VkTWFuYWdlciwge1xuXHRFREFfUklHSFRfQ0xJQ0tFRF9NQU5BR0VSX1NFUlZJQ0Vcbn1cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnJvbSAnLi9lZGFEcmFnRHJvcFdheS5yaWdodENsaWNrLnNlcnZpY2UnO1xuXG5cbmNvbnN0IEVEQV9SSUdIVF9DTElDS19NT0RVTEUgPSAnZWRhLnJpZ2h0LmNsaWNrLm1vZHVsZSc7XG5cblxuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuXHRcdFx0XHRcdFx0XHRcdC5tb2R1bGUoRURBX1JJR0hUX0NMSUNLX01PRFVMRSwgW10pXG5cdFx0XHRcdFx0XHRcdFx0LmRpcmVjdGl2ZShFREFfUklHSFRfQ0xJQ0tfRElSRUNUSVZFLCBlZGFSaWdodENsaWNrKVxuXHRcdFx0XHRcdFx0XHRcdC5zZXJ2aWNlKEVEQV9SSUdIVF9DTElDS0VEX01BTkFHRVJfU0VSVklDRSwgZGRJdGVtUmlnaHRDbGlja2VkTWFuYWdlcik7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2NvbW1vbi9yaWdodGNsaWNrL2VkYURyYWdEcm9wV2F5LnJpZ2h0Q2xpY2subW9kdWxlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 68 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar EDA_RIGHT_CLICK_DIRECTIVE = 'edaRightClick';\n\nfunction edaRightClick($parse) {\n\n var directive = {\n restrict: 'A',\n link: linkFct\n };\n return directive;\n\n function linkFct(scope, element, attrs) {\n var fn = $parse(attrs.edaRightClick);\n var columnIndex = $parse(attrs.edaRightClickColIndex);\n var fctSetRightclicked = $parse(attrs.edaSetRightClicked);\n /**\n * on right click event manage\n * - open edit panel through attrs.edaRightClick function\n * - set rightCliked attribute (to true) to control (in dragDropModel)\n */\n element.on('contextmenu', function (event) {\n scope.$apply(function () {\n event.preventDefault();\n if (columnIndex(scope) === 1) fctSetRightclicked(scope, {}); //right click limited to template column (index = 1)\n if (columnIndex(scope) === 1) fn(scope, { $event: event }); //right click limited to template column (index = 1)\n });\n });\n }\n}\n\nedaRightClick.$inject = ['$parse'];\n\nexports.default = edaRightClick;\nexports.EDA_RIGHT_CLICK_DIRECTIVE = EDA_RIGHT_CLICK_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29tbW9uL3JpZ2h0Y2xpY2svZWRhRHJhZ0Ryb3BXYXkucmlnaHRDbGljay5kaXJlY3RpdmUuanM/MzJiMCJdLCJuYW1lcyI6WyJFREFfUklHSFRfQ0xJQ0tfRElSRUNUSVZFIiwiZWRhUmlnaHRDbGljayIsIiRwYXJzZSIsImRpcmVjdGl2ZSIsInJlc3RyaWN0IiwibGluayIsImxpbmtGY3QiLCJzY29wZSIsImVsZW1lbnQiLCJhdHRycyIsImZuIiwiY29sdW1uSW5kZXgiLCJlZGFSaWdodENsaWNrQ29sSW5kZXgiLCJmY3RTZXRSaWdodGNsaWNrZWQiLCJlZGFTZXRSaWdodENsaWNrZWQiLCJvbiIsImV2ZW50IiwiJGFwcGx5IiwicHJldmVudERlZmF1bHQiLCIkZXZlbnQiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQU1BLDRCQUE0QixlQUFsQzs7QUFFQSxTQUFTQyxhQUFULENBQXVCQyxNQUF2QixFQUE4Qjs7QUFFN0IsTUFBSUMsWUFBWTtBQUNiQyxjQUFZLEdBREM7QUFFYkMsVUFBWUM7QUFGQyxHQUFoQjtBQUlDLFNBQU9ILFNBQVA7O0FBRUEsV0FBU0csT0FBVCxDQUFpQkMsS0FBakIsRUFBd0JDLE9BQXhCLEVBQWlDQyxLQUFqQyxFQUF1QztBQUNyQyxRQUFJQyxLQUFzQlIsT0FBT08sTUFBTVIsYUFBYixDQUExQjtBQUNBLFFBQUlVLGNBQXNCVCxPQUFPTyxNQUFNRyxxQkFBYixDQUExQjtBQUNBLFFBQUlDLHFCQUFzQlgsT0FBT08sTUFBTUssa0JBQWIsQ0FBMUI7QUFDQTs7Ozs7QUFLQU4sWUFBUU8sRUFBUixDQUFXLGFBQVgsRUFBMEIsVUFBQ0MsS0FBRCxFQUFTO0FBQ2pDVCxZQUFNVSxNQUFOLENBQWEsWUFBSztBQUNoQkQsY0FBTUUsY0FBTjtBQUNBLFlBQUlQLFlBQVlKLEtBQVosTUFBdUIsQ0FBM0IsRUFBOEJNLG1CQUFtQk4sS0FBbkIsRUFBMEIsRUFBMUIsRUFGZCxDQUU2QztBQUM3RCxZQUFJSSxZQUFZSixLQUFaLE1BQXVCLENBQTNCLEVBQThCRyxHQUFHSCxLQUFILEVBQVUsRUFBQ1ksUUFBT0gsS0FBUixFQUFWLEVBSGQsQ0FHeUM7QUFDMUQsT0FKRDtBQUtELEtBTkQ7QUFRRDtBQUVGOztBQUVEZixjQUFjbUIsT0FBZCxHQUF3QixDQUN0QixRQURzQixDQUF4Qjs7a0JBSWVuQixhO1FBSWJELHlCLEdBQUFBLHlCIiwiZmlsZSI6IjY4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgRURBX1JJR0hUX0NMSUNLX0RJUkVDVElWRSA9ICdlZGFSaWdodENsaWNrJztcblxuZnVuY3Rpb24gZWRhUmlnaHRDbGljaygkcGFyc2Upe1xuICBcblx0bGV0IGRpcmVjdGl2ZSA9IHtcbiAgICByZXN0cmljdCAgOiAnQScsXG4gICAgbGluayAgICAgIDogbGlua0ZjdFxuICB9O1xuICByZXR1cm4gZGlyZWN0aXZlO1xuICBcbiAgZnVuY3Rpb24gbGlua0ZjdChzY29wZSwgZWxlbWVudCwgYXR0cnMpe1xuICAgIGxldCBmbiAgICAgICAgICAgICAgICAgID0gJHBhcnNlKGF0dHJzLmVkYVJpZ2h0Q2xpY2spO1xuICAgIGxldCBjb2x1bW5JbmRleCAgICAgICAgID0gJHBhcnNlKGF0dHJzLmVkYVJpZ2h0Q2xpY2tDb2xJbmRleCk7XG4gICAgbGV0IGZjdFNldFJpZ2h0Y2xpY2tlZCAgPSAkcGFyc2UoYXR0cnMuZWRhU2V0UmlnaHRDbGlja2VkKTsgICAgICBcbiAgICAvKipcbiAgICAgICogb24gcmlnaHQgY2xpY2sgZXZlbnQgbWFuYWdlXG4gICAgICAqIC0gb3BlbiBlZGl0IHBhbmVsIHRocm91Z2ggYXR0cnMuZWRhUmlnaHRDbGljayBmdW5jdGlvblxuICAgICAgKiAtIHNldCByaWdodENsaWtlZCBhdHRyaWJ1dGUgKHRvIHRydWUpIHRvIGNvbnRyb2wgKGluIGRyYWdEcm9wTW9kZWwpXG4gICAgICAqL1xuICAgIGVsZW1lbnQub24oJ2NvbnRleHRtZW51JywgKGV2ZW50KT0+e1xuICAgICAgc2NvcGUuJGFwcGx5KCgpID0+e1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoY29sdW1uSW5kZXgoc2NvcGUpID09PSAxKSBmY3RTZXRSaWdodGNsaWNrZWQoc2NvcGUsIHt9KTsgLy9yaWdodCBjbGljayBsaW1pdGVkIHRvIHRlbXBsYXRlIGNvbHVtbiAoaW5kZXggPSAxKVxuICAgICAgICBpZiAoY29sdW1uSW5kZXgoc2NvcGUpID09PSAxKSBmbihzY29wZSwgeyRldmVudDpldmVudH0pOyAvL3JpZ2h0IGNsaWNrIGxpbWl0ZWQgdG8gdGVtcGxhdGUgY29sdW1uIChpbmRleCA9IDEpXG4gICAgICB9KTtcbiAgICB9KTtcdFxuXG4gIH1cbiAgXG59XG5cbmVkYVJpZ2h0Q2xpY2suJGluamVjdCA9IFtcbiAgJyRwYXJzZSdcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGVkYVJpZ2h0Q2xpY2s7XG5cblxuZXhwb3J0IHtcbiAgRURBX1JJR0hUX0NMSUNLX0RJUkVDVElWRVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9jb21tb24vcmlnaHRjbGljay9lZGFEcmFnRHJvcFdheS5yaWdodENsaWNrLmRpcmVjdGl2ZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 69 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDA_RIGHT_CLICKED_MANAGER_SERVICE = 'ddItemRightClickedManager';\n\nvar ddItemRightClickedManager = function () {\n\tfunction ddItemRightClickedManager() {\n\t\t_classCallCheck(this, ddItemRightClickedManager);\n\n\t\tthis.init();\n\t}\n\n\t_createClass(ddItemRightClickedManager, [{\n\t\tkey: 'init',\n\t\tvalue: function init() {}\n\n\t\t/**\n \t* setUnRightClicked \n \t* set unSelected (see edaRightClick directive)\n \t*\n \t* used in edaEditcontroller when droping control\n \t*/\n\n\t}, {\n\t\tkey: 'setUnRightClicked',\n\t\tvalue: function setUnRightClicked(dragDropModelItem) {\n\t\t\tdragDropModelItem.rightCliked = false;\n\t\t}\n\n\t\t/**\n \t* resetAllDragDropItemSelectedState\n \t*\n \t* simply reset (=set to false) all item.rightCliked \n \t* in edit column (dragable column)\n \t*\n \t* used in edaEditPanel when closeEditPanel() called\n \t*/\n\n\t}, {\n\t\tkey: 'resetAllDragDropItemSelectedState',\n\t\tvalue: function resetAllDragDropItemSelectedState(dragDropModel) {\n\t\t\tangular.forEach(dragDropModel[1], function (line) {\n\t\t\t\tangular.forEach(line, function (item) {\n\t\t\t\t\treturn item.rightCliked = false;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}]);\n\n\treturn ddItemRightClickedManager;\n}();\n\nddItemRightClickedManager.$inject = [];\n\nexports.default = ddItemRightClickedManager;\nexports.EDA_RIGHT_CLICKED_MANAGER_SERVICE = EDA_RIGHT_CLICKED_MANAGER_SERVICE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29tbW9uL3JpZ2h0Y2xpY2svZWRhRHJhZ0Ryb3BXYXkucmlnaHRDbGljay5zZXJ2aWNlLmpzP2EzNjQiXSwibmFtZXMiOlsiRURBX1JJR0hUX0NMSUNLRURfTUFOQUdFUl9TRVJWSUNFIiwiZGRJdGVtUmlnaHRDbGlja2VkTWFuYWdlciIsImluaXQiLCJkcmFnRHJvcE1vZGVsSXRlbSIsInJpZ2h0Q2xpa2VkIiwiZHJhZ0Ryb3BNb2RlbCIsImFuZ3VsYXIiLCJmb3JFYWNoIiwibGluZSIsIml0ZW0iLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBTUEsb0NBQW9DLDJCQUExQzs7SUFFTUMseUI7QUFDTCxzQ0FBYTtBQUFBOztBQUNaLE9BQUtDLElBQUw7QUFDQTs7Ozt5QkFFSyxDQUVMOztBQUVEOzs7Ozs7Ozs7b0NBTWtCQyxpQixFQUFrQjtBQUNuQ0EscUJBQWtCQyxXQUFsQixHQUFnQyxLQUFoQztBQUNBOztBQUVEOzs7Ozs7Ozs7OztvREFRa0NDLGEsRUFBYztBQUMvQ0MsV0FBUUMsT0FBUixDQUFnQkYsY0FBYyxDQUFkLENBQWhCLEVBQWtDLFVBQUNHLElBQUQsRUFBUTtBQUN6Q0YsWUFBUUMsT0FBUixDQUFnQkMsSUFBaEIsRUFBc0IsVUFBQ0MsSUFBRDtBQUFBLFlBQVFBLEtBQUtMLFdBQUwsR0FBbUIsS0FBM0I7QUFBQSxLQUF0QjtBQUNBLElBRkQ7QUFJQTs7Ozs7O0FBS0ZILDBCQUEwQlMsT0FBMUIsR0FBb0MsRUFBcEM7O2tCQUVlVCx5QjtRQUdkRCxpQyxHQUFBQSxpQyIsImZpbGUiOiI2OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEVEQV9SSUdIVF9DTElDS0VEX01BTkFHRVJfU0VSVklDRSA9ICdkZEl0ZW1SaWdodENsaWNrZWRNYW5hZ2VyJztcblxuY2xhc3MgZGRJdGVtUmlnaHRDbGlja2VkTWFuYWdlcntcblx0Y29uc3RydWN0b3IoKXtcblx0XHR0aGlzLmluaXQoKTtcdFxuXHR9XG5cdFxuXHRpbml0KCl7XG5cdFx0XG5cdH1cblx0XG5cdC8qKlxuXHRcdCogc2V0VW5SaWdodENsaWNrZWQgXG5cdFx0KiBzZXQgdW5TZWxlY3RlZCAoc2VlIGVkYVJpZ2h0Q2xpY2sgZGlyZWN0aXZlKVxuXHRcdCpcblx0XHQqIHVzZWQgaW4gZWRhRWRpdGNvbnRyb2xsZXIgd2hlbiBkcm9waW5nIGNvbnRyb2xcblx0XHQqL1x0XG5cdHNldFVuUmlnaHRDbGlja2VkKGRyYWdEcm9wTW9kZWxJdGVtKXtcblx0XHRkcmFnRHJvcE1vZGVsSXRlbS5yaWdodENsaWtlZCA9IGZhbHNlO1xuXHR9XHRcblxuXHQvKipcblx0XHQqIHJlc2V0QWxsRHJhZ0Ryb3BJdGVtU2VsZWN0ZWRTdGF0ZVxuXHRcdCpcblx0XHQqIHNpbXBseSByZXNldCAoPXNldCB0byBmYWxzZSkgYWxsIGl0ZW0ucmlnaHRDbGlrZWQgXG5cdFx0KiBpbiBlZGl0IGNvbHVtbiAoZHJhZ2FibGUgY29sdW1uKVxuXHRcdCpcblx0XHQqIHVzZWQgaW4gZWRhRWRpdFBhbmVsIHdoZW4gY2xvc2VFZGl0UGFuZWwoKSBjYWxsZWRcblx0XHQqL1x0XG5cdHJlc2V0QWxsRHJhZ0Ryb3BJdGVtU2VsZWN0ZWRTdGF0ZShkcmFnRHJvcE1vZGVsKXtcblx0XHRhbmd1bGFyLmZvckVhY2goZHJhZ0Ryb3BNb2RlbFsxXSAsKGxpbmUpPT57XG5cdFx0XHRhbmd1bGFyLmZvckVhY2gobGluZSwgKGl0ZW0pPT5pdGVtLnJpZ2h0Q2xpa2VkID0gZmFsc2UpO1xuXHRcdH0pO1xuXHRcblx0fVx0XG5cdFxuXHRcbn1cblxuZGRJdGVtUmlnaHRDbGlja2VkTWFuYWdlci4kaW5qZWN0ID0gW107XG5cbmV4cG9ydCBkZWZhdWx0IGRkSXRlbVJpZ2h0Q2xpY2tlZE1hbmFnZXI7XG5cbmV4cG9ydCB7XG5cdEVEQV9SSUdIVF9DTElDS0VEX01BTkFHRVJfU0VSVklDRVxufTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29tbW9uL3JpZ2h0Y2xpY2svZWRhRHJhZ0Ryb3BXYXkucmlnaHRDbGljay5zZXJ2aWNlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 70 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _edaDragDropWayConfigurationModelProxy = __webpack_require__(71);\n\nvar _edaDragDropWayConfigurationModelProxy2 = _interopRequireDefault(_edaDragDropWayConfigurationModelProxy);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EDA_CONFIG_PROXY_MODULE = 'eda.config.proxy.module';\n\nexports.default = angular.module(EDA_CONFIG_PROXY_MODULE, []).service(_edaDragDropWayConfigurationModelProxy.DRAG_DROP_CONFIG_PROXY_SERVICE, _edaDragDropWayConfigurationModelProxy2.default);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29uZmlndXJhdGlvbk1vZGVsUHJveHkvZWRhRHJhZ0Ryb3BXYXkuY29uZmlndXJhdGlvbk1vZGVsUHJveHkubW9kdWxlLmpzPzk4ODciXSwibmFtZXMiOlsiRURBX0NPTkZJR19QUk9YWV9NT0RVTEUiLCJhbmd1bGFyIiwibW9kdWxlIiwic2VydmljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7OztBQUlBLElBQU1BLDBCQUEwQix5QkFBaEM7O2tCQUVlQyxRQUNOQyxNQURNLENBQ0NGLHVCQURELEVBQzBCLEVBRDFCLEVBRU5HLE9BRk0sd0giLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGRNb2RlbENvbmZNb2RlbFByb3h5U2VydmljZSwge1xuXHREUkFHX0RST1BfQ09ORklHX1BST1hZX1NFUlZJQ0Vcbn1cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnJvbSAnLi9lZGFEcmFnRHJvcFdheS5jb25maWd1cmF0aW9uTW9kZWxQcm94eS5zZXJ2aWNlJztcblxuY29uc3QgRURBX0NPTkZJR19QUk9YWV9NT0RVTEUgPSAnZWRhLmNvbmZpZy5wcm94eS5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG5cdFx0XHRcdFx0XHRcdFx0Lm1vZHVsZShFREFfQ09ORklHX1BST1hZX01PRFVMRSwgW10pXG5cdFx0XHRcdFx0XHRcdFx0LnNlcnZpY2UoRFJBR19EUk9QX0NPTkZJR19QUk9YWV9TRVJWSUNFLCBkZE1vZGVsQ29uZk1vZGVsUHJveHlTZXJ2aWNlKTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29uZmlndXJhdGlvbk1vZGVsUHJveHkvZWRhRHJhZ0Ryb3BXYXkuY29uZmlndXJhdGlvbk1vZGVsUHJveHkubW9kdWxlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 71 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DRAG_DROP_CONFIG_PROXY_SERVICE = 'ddModelConfModelProxyService';\n\nvar ddModelConfModelProxyService = function () {\n function ddModelConfModelProxyService(EasyFormGenFormlyBindingModels,\n // controllerModalProxy, \n // dragDropConfig, \n easyFormDragWayConfig, $parse) {\n _classCallCheck(this, ddModelConfModelProxyService);\n\n this.EasyFormGenFormlyBindingModels = EasyFormGenFormlyBindingModels;\n // this.controllerModalProxy = controllerModalProxy;\n // this.dragDropConfig = dragDropConfig;\n this.easyFormDragWayConfig = easyFormDragWayConfig;\n this.$parse = $parse;\n this.init();\n }\n\n _createClass(ddModelConfModelProxyService, [{\n key: 'init',\n value: function init() {}\n }, {\n key: 'refreshAllConfigurationFromDragAndDropModel',\n value: function refreshAllConfigurationFromDragAndDropModel(configModel, ddModel) {\n var _this = this;\n\n /**\n * TODO : prevent reset already set props\n * \n * previousConfigurationModel = a backup of configuration model 'configModel 'before resetting it\n * -> dragDrop model contains unique keys of already existing controls : these controls must not be reset / overwritten \n */\n // let previousConfigurationModel = angular.copy(configModel); \n configModel.lines = [];\n // iterates line config model\n angular.forEach(ddModel[1], function (lineValue, keyValue) {\n // add empty line 1st - if line is empty -> it will be enough \n configModel.lines.push(angular.copy(_this.EasyFormGenFormlyBindingModels.getEasyFormEmptyConfigurationLineModel()));\n // update line value field\n _this.applyThisLine(keyValue + 1, keyValue, configModel);\n // iterate through columns and add them if control exists\t\n angular.forEach(lineValue, function (colValue, colIndex) {\n // push an empty control model but relative to dradrop : model control type - (if datepicker so additionnal properties are added) \t\n var controlToBind = {\n control: angular.copy(_this.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(lineValue.length, _this.getFormlyDetailedControlModelFromDragDropObject(lineValue[colIndex]).formlyType))\n };\n var formlyDetailedControlModel = _this.getFormlyDetailedControlModelFromDragDropObject(lineValue[colIndex]);\n // controls alreadys existed so do not reset it - control to bind is the previous one\t\t\n if (typeof colValue.key !== 'undefined') {\n //console.warn('debug dragdropModel show this control key : ' + colValue.key);\n controlToBind.control = angular.copy(colValue.configModelControl);\n //update cssClass depending new position:\n var newClassName = _this.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(lineValue.length, _this.getFormlyDetailedControlModelFromDragDropObject(lineValue[colIndex]).formlyType);\n controlToBind.control.className = newClassName.className;\n //test if header nee this one\n controlToBind.control.cssClass = newClassName.className;\n // get control details for this key in backup : previousConfigurationModel\n } else {\n // controls did not exists before : control to bind is a new one\n // bind dragdrop control properties to configuration model through controlToBind var\n _this.bindConfigCtrlModelFromFormlyDetailedCtrlModel(formlyDetailedControlModel, controlToBind, configModel);\n }\n // apply controlToBind var to configuration model control\n if (typeof configModel.lines[keyValue].columns[colIndex] === 'undefined') configModel.lines[keyValue].columns.push(angular.copy(_this.EasyFormGenFormlyBindingModels.getEasyFormConfigurationEmptyControlModel()));\n configModel.lines[keyValue].columns[colIndex].control = angular.copy(controlToBind.control);\n configModel.lines[keyValue].columns[colIndex].numColumn = colIndex + 1;\n configModel.lines[keyValue].columns[colIndex].exist = true;\n });\n });\n return configModel;\n }\n }, {\n key: 'refreshControlsKeys',\n value: function refreshControlsKeys(configModel, dragDropModel) {\n angular.forEach(configModel.lines, function (aConfigLine, aConfigLineIndex) {\n angular.forEach(aConfigLine.columns, function (aConfigControl, aConfigControlIndex) {\n //if last control removed from line - and dragDrop model did not already removed this line\n if (typeof dragDropModel[1][aConfigLineIndex] !== 'undefined') {\n if (dragDropModel[1][aConfigLineIndex].length > 0) {\n dragDropModel[1][aConfigLineIndex][aConfigControlIndex].key = aConfigControl.control.key;\n //need to save all in dragdropModel as it is a reference\n //configModel still needed \n // -> to keep coherence (same back model) between all version of easyForm Generator\n // -> is the back model (can be saved to dataBase)\n dragDropModel[1][aConfigLineIndex][aConfigControlIndex].configModelControl = angular.copy(aConfigControl.control);\n }\n }\n });\n });\n }\n\n /**\n * drag drop model\n * -> will be used to bind configuration model\n * \tof no key saved, configuration model controls would be reset each drop events\n * \n * -> matching key : will prevent to reset existing control\n */\n\n }, {\n key: 'loadDragDropModelFromConfigurationModel',\n value: function loadDragDropModelFromConfigurationModel(configModel, dragDropModel) {\n var _this2 = this;\n\n //reset dragdrop fields model NOT all dragDropModel!\n dragDropModel[1] = [];\n angular.forEach(configModel.lines, function (aConfigLine, aConfigLineIndex) {\n //add new line\n dragDropModel[1].push([]);\n angular.forEach(aConfigLine.columns, function (aConfigControl) {\n // get control type from configuration.control.selectedControl\n var dragdropControlRef = {\n control: 'empty',\n cssClass: 'col-xs-12',\n label: ''\n };\n angular.forEach(dragDropModel[0], function (groupOfCtrlRef) {\n angular.forEach(groupOfCtrlRef, function (aCtrlref) {\n if (aCtrlref.control === aConfigControl.control.selectedControl) dragdropControlRef = angular.copy(aCtrlref);\n });\n });\n dragDropModel[1][aConfigLineIndex].push(dragdropControlRef);\n //update class depending number of control per line\n var cssClassToApply = _this2.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(dragDropModel[1][aConfigLineIndex].length);\n angular.forEach(dragDropModel[1][aConfigLineIndex], function (ddControlToUpdate) {\n return ddControlToUpdate.cssClass = cssClassToApply;\n });\n });\n });\n // console.info('bindDragDropModelFromConfigurationModel');\n // console.dir(\t\n // \t\t\t\t\t\t\t{\n // \t\t\t\t\t\t\t\t\t'when' \t\t\t\t\t\t\t: 'starting',\n // \t\t\t\t\t\t\t\t\t'configModel is ' \t: angular.copy(configModel),\n // \t\t\t\t\t\t\t\t\t'dragDropModel is ' : angular.copy(dragDropModel)\n // \t\t\t\t\t\t\t}\n // \t\t\t\t\t\t); \n }\n\n /**\n * returns a control model that is more formly detailed\n * (more formly detailed : see controls property in EasyFormGenFormlyBindingModels._easyFormListControls)\n */\n\n }, {\n key: 'getFormlyDetailedControlModelFromDragDropObject',\n value: function getFormlyDetailedControlModelFromDragDropObject(dragDrapCtrlModel) {\n var controlModel = {};\n var listControl = this.EasyFormGenFormlyBindingModels.getEasyFormListControls();\n var controlsListGetter = this.$parse('controls');\n\n angular.forEach(controlsListGetter(listControl), function (ctrlListValue) {\n if (ctrlListValue.id === dragDrapCtrlModel.control) controlModel = ctrlListValue;\n });\n return controlModel;\n }\n\n /**\n * valid a control key is unique\n *\n * yes... function name already told us that, \n * -> it's just confirmation and to see if\n * you keep focus while reading it ^^\n */\n\n }, {\n key: 'validKeyUniqueness',\n value: function validKeyUniqueness(thisKey, configurationObj) {\n var isUnique = true;\n for (var i = configurationObj.lines.length - 1; i >= 0; i--) {\n for (var j = configurationObj.lines[i].columns.length - 1; j >= 0; j--) {\n if (typeof configurationObj.lines[i].columns[j].control !== 'undefined') {\n if (configurationObj.lines[i].columns[j].control.key === thisKey) {\n isUnique = false;\n }\n }\n }\n }\n return isUnique;\n }\n }, {\n key: 'createUniqueKey',\n value: function createUniqueKey(baseKeyValue, configurationObj) {\n // unique key (set only first time) in this model is formly control type + Date.now(); \n var newKey = baseKeyValue + '-' + Date.now();\n if (this.validKeyUniqueness(newKey, configurationObj) === true) {\n return newKey;\n } else {\n newKey = baseKeyValue + '-' + Date.now();\n if (this.validKeyUniqueness(newKey, configurationObj) === true) {\n return newKey;\n } else {\n newKey = baseKeyValue + '-' + Date.now();\n return newKey;\n }\n }\n }\n }, {\n key: 'applyThisLine',\n value: function applyThisLine(linevalue, lineIndex, configModel) {\n angular.forEach(configModel.lines, function (aLineValue, aLineKey) {\n if (aLineKey === lineIndex) aLineValue.line = linevalue;\n });\n }\n\n /**\n * bind formly detailed model to configuration control model\n */\n\n }, {\n key: 'bindConfigCtrlModelFromFormlyDetailedCtrlModel',\n value: function bindConfigCtrlModelFromFormlyDetailedCtrlModel(formlyDetailCtrlModel, configurationCtrlModel, configModel) {\n /**\n * TODO :properties should be served by provider \n * more configurable without pain\n */\n //set selected control :\n this.$parse('control.selectedControl').assign(configurationCtrlModel, this.$parse('selectedControl')(formlyDetailCtrlModel));\n //set type :\t\n this.$parse('control.type').assign(configurationCtrlModel, this.$parse('formlyType')(formlyDetailCtrlModel));\n //set key :\t\n this.$parse('control.key').assign(configurationCtrlModel, this.createUniqueKey(this.$parse('control.type')(configurationCtrlModel), configModel));\n //set subtype :\t\n this.$parse('control.subtype').assign(configurationCtrlModel, this.$parse('formlySubtype')(formlyDetailCtrlModel));\n //set templateOptions.label :\t\n this.$parse('control.templateOptions.label').assign(configurationCtrlModel, this.$parse('formlyLabel')(formlyDetailCtrlModel));\n //set templateOptions.required :\t\n this.$parse('control.templateOptions.required').assign(configurationCtrlModel, this.$parse('formlyRequired')(formlyDetailCtrlModel));\n //set templateOptions.required :\t\n this.$parse('control.templateOptions.description').assign(configurationCtrlModel, this.$parse('formlyDescription')(formlyDetailCtrlModel));\n //set templateOptions.required :\t\n this.$parse('control.templateOptions.placeholder').assign(configurationCtrlModel, this.$parse('formlyPlaceholder')(formlyDetailCtrlModel));\n //set templateOptions.required :\t\n this.$parse('control.templateOptions.options').assign(configurationCtrlModel, this.$parse('formlyOptions')(formlyDetailCtrlModel));\n\n if (this.$parse('control.type')(configurationCtrlModel) === 'datepicker') {\n this.$parse('control.templateOptions.datepickerPopup').assign(configurationCtrlModel, this.$parse('datepickerPopup')(formlyDetailCtrlModel));\n }\n }\n }]);\n\n return ddModelConfModelProxyService;\n}();\n\nddModelConfModelProxyService.$inject = ['EasyFormGenFormlyBindingModels',\n// 'controllerModalProxy',\n// 'dragDropConfig',\n'easyFormDragWayConfig', '$parse'];\n\nexports.default = ddModelConfModelProxyService;\nexports.DRAG_DROP_CONFIG_PROXY_SERVICE = DRAG_DROP_CONFIG_PROXY_SERVICE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29uZmlndXJhdGlvbk1vZGVsUHJveHkvZWRhRHJhZ0Ryb3BXYXkuY29uZmlndXJhdGlvbk1vZGVsUHJveHkuc2VydmljZS5qcz9iYmJmIl0sIm5hbWVzIjpbIkRSQUdfRFJPUF9DT05GSUdfUFJPWFlfU0VSVklDRSIsImRkTW9kZWxDb25mTW9kZWxQcm94eVNlcnZpY2UiLCJFYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHMiLCJlYXN5Rm9ybURyYWdXYXlDb25maWciLCIkcGFyc2UiLCJpbml0IiwiY29uZmlnTW9kZWwiLCJkZE1vZGVsIiwibGluZXMiLCJhbmd1bGFyIiwiZm9yRWFjaCIsImxpbmVWYWx1ZSIsImtleVZhbHVlIiwicHVzaCIsImNvcHkiLCJnZXRFYXN5Rm9ybUVtcHR5Q29uZmlndXJhdGlvbkxpbmVNb2RlbCIsImFwcGx5VGhpc0xpbmUiLCJjb2xWYWx1ZSIsImNvbEluZGV4IiwiY29udHJvbFRvQmluZCIsImNvbnRyb2wiLCJnZXRGb3JtbHlDb250cm9sVGVtcGxhdGVGb3JOY29sdW1uTGluZSIsImxlbmd0aCIsImdldEZvcm1seURldGFpbGVkQ29udHJvbE1vZGVsRnJvbURyYWdEcm9wT2JqZWN0IiwiZm9ybWx5VHlwZSIsImZvcm1seURldGFpbGVkQ29udHJvbE1vZGVsIiwia2V5IiwiY29uZmlnTW9kZWxDb250cm9sIiwibmV3Q2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiY3NzQ2xhc3MiLCJiaW5kQ29uZmlnQ3RybE1vZGVsRnJvbUZvcm1seURldGFpbGVkQ3RybE1vZGVsIiwiY29sdW1ucyIsImdldEVhc3lGb3JtQ29uZmlndXJhdGlvbkVtcHR5Q29udHJvbE1vZGVsIiwibnVtQ29sdW1uIiwiZXhpc3QiLCJkcmFnRHJvcE1vZGVsIiwiYUNvbmZpZ0xpbmUiLCJhQ29uZmlnTGluZUluZGV4IiwiYUNvbmZpZ0NvbnRyb2wiLCJhQ29uZmlnQ29udHJvbEluZGV4IiwiZHJhZ2Ryb3BDb250cm9sUmVmIiwibGFiZWwiLCJncm91cE9mQ3RybFJlZiIsImFDdHJscmVmIiwic2VsZWN0ZWRDb250cm9sIiwiY3NzQ2xhc3NUb0FwcGx5IiwiZ2V0SXRlbUNzc0RlcGVuZGluZ051bWJlckl0ZW1zSW5Sb3ciLCJkZENvbnRyb2xUb1VwZGF0ZSIsImRyYWdEcmFwQ3RybE1vZGVsIiwiY29udHJvbE1vZGVsIiwibGlzdENvbnRyb2wiLCJnZXRFYXN5Rm9ybUxpc3RDb250cm9scyIsImNvbnRyb2xzTGlzdEdldHRlciIsImN0cmxMaXN0VmFsdWUiLCJpZCIsInRoaXNLZXkiLCJjb25maWd1cmF0aW9uT2JqIiwiaXNVbmlxdWUiLCJpIiwiaiIsImJhc2VLZXlWYWx1ZSIsIm5ld0tleSIsIkRhdGUiLCJub3ciLCJ2YWxpZEtleVVuaXF1ZW5lc3MiLCJsaW5ldmFsdWUiLCJsaW5lSW5kZXgiLCJhTGluZVZhbHVlIiwiYUxpbmVLZXkiLCJsaW5lIiwiZm9ybWx5RGV0YWlsQ3RybE1vZGVsIiwiY29uZmlndXJhdGlvbkN0cmxNb2RlbCIsImFzc2lnbiIsImNyZWF0ZVVuaXF1ZUtleSIsIiRpbmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNQSxpQ0FBaUMsOEJBQXZDOztJQUVNQyw0QjtBQUVKLHdDQUNFQyw4QkFERjtBQUVFO0FBQ0E7QUFDQUMsdUJBSkYsRUFLRUMsTUFMRixFQUtTO0FBQUE7O0FBQ1AsU0FBS0YsOEJBQUwsR0FBc0NBLDhCQUF0QztBQUNBO0FBQ0E7QUFDQSxTQUFLQyxxQkFBTCxHQUFzQ0EscUJBQXRDO0FBQ0EsU0FBS0MsTUFBTCxHQUFzQ0EsTUFBdEM7QUFDQSxTQUFLQyxJQUFMO0FBQ0Q7Ozs7MkJBRUssQ0FFTDs7O2dFQUUyQ0MsVyxFQUFhQyxPLEVBQVE7QUFBQTs7QUFDL0Q7Ozs7OztBQU1BO0FBQ0FELGtCQUFZRSxLQUFaLEdBQW9CLEVBQXBCO0FBQ0E7QUFDQUMsY0FBUUMsT0FBUixDQUFnQkgsUUFBUSxDQUFSLENBQWhC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MUQsRUFBa0YsS0FBS3BFLE1BQUwsQ0FBWSxtQkFBWixFQUFpQ21FLHFCQUFqQyxDQUFsRjtBQUNBO0FBQ0EsV0FBS25FLE1BQUwsQ0FBWSxpQ0FBWixFQUErQ3FFLE1BQS9DLENBQXNERCxzQkFBdEQsRUFBOEUsS0FBS3BFLE1BQUwsQ0FBWSxlQUFaLEVBQTZCbUUscUJBQTdCLENBQTlFOztBQUVBLFVBQUksS0FBS25FLE1BQUwsQ0FBWSxjQUFaLEVBQTRCb0Usc0JBQTVCLE1BQXdELFlBQTVELEVBQTBFO0FBQ3hFLGFBQUtwRSxNQUFMLENBQVkseUNBQVosRUFBdURxRSxNQUF2RCxDQUE4REQsc0JBQTlELEVBQXNGLEtBQUtwRSxNQUFMLENBQVksaUJBQVosRUFBK0JtRSxxQkFBL0IsQ0FBdEY7QUFDRDtBQUNGOzs7Ozs7QUFLSHRFLDZCQUE2QjBFLE9BQTdCLEdBQXVDLENBQ3JDLGdDQURxQztBQUVyQztBQUNBO0FBQ0EsdUJBSnFDLEVBS3JDLFFBTHFDLENBQXZDOztrQkFRZTFFLDRCO1FBRWJELDhCLEdBQUFBLDhCIiwiZmlsZSI6IjcxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgRFJBR19EUk9QX0NPTkZJR19QUk9YWV9TRVJWSUNFID0gJ2RkTW9kZWxDb25mTW9kZWxQcm94eVNlcnZpY2UnO1xuXG5jbGFzcyBkZE1vZGVsQ29uZk1vZGVsUHJveHlTZXJ2aWNle1xuICBcbiAgY29uc3RydWN0b3IoXG4gICAgRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzLCAgXG4gICAgLy8gY29udHJvbGxlck1vZGFsUHJveHksIFxuICAgIC8vIGRyYWdEcm9wQ29uZmlnLCBcbiAgICBlYXN5Rm9ybURyYWdXYXlDb25maWcsXG4gICAgJHBhcnNlKXtcbiAgICB0aGlzLkVhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVscyA9IEVhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVscztcbiAgICAvLyB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5ICAgICAgICAgICA9IGNvbnRyb2xsZXJNb2RhbFByb3h5O1xuICAgIC8vIHRoaXMuZHJhZ0Ryb3BDb25maWcgICAgICAgICAgICAgICAgID0gZHJhZ0Ryb3BDb25maWc7XG4gICAgdGhpcy5lYXN5Rm9ybURyYWdXYXlDb25maWcgICAgICAgICAgPSBlYXN5Rm9ybURyYWdXYXlDb25maWc7XG4gICAgdGhpcy4kcGFyc2UgICAgICAgICAgICAgICAgICAgICAgICAgPSAkcGFyc2U7XG4gICAgdGhpcy5pbml0KCk7ICBcbiAgfVxuICBcbiAgaW5pdCgpe1xuICAgIFxuICB9XG5cbiAgcmVmcmVzaEFsbENvbmZpZ3VyYXRpb25Gcm9tRHJhZ0FuZERyb3BNb2RlbChjb25maWdNb2RlbCwgZGRNb2RlbCl7XG4gICAgLyoqXG4gICAgICogVE9ETyA6IHByZXZlbnQgcmVzZXQgYWxyZWFkeSBzZXQgcHJvcHNcbiAgICAgKiBcbiAgICAgKiBwcmV2aW91c0NvbmZpZ3VyYXRpb25Nb2RlbCA9IGEgYmFja3VwIG9mIGNvbmZpZ3VyYXRpb24gbW9kZWwgJ2NvbmZpZ01vZGVsICdiZWZvcmUgcmVzZXR0aW5nIGl0XG4gICAgICogLT4gZHJhZ0Ryb3AgbW9kZWwgY29udGFpbnMgdW5pcXVlIGtleXMgb2YgYWxyZWFkeSBleGlzdGluZyBjb250cm9scyA6IHRoZXNlIGNvbnRyb2xzIG11c3Qgbm90IGJlIHJlc2V0IC8gb3ZlcndyaXR0ZW4gIFxuICAgICAqL1xuICAgIC8vIGxldCBwcmV2aW91c0NvbmZpZ3VyYXRpb25Nb2RlbCA9IGFuZ3VsYXIuY29weShjb25maWdNb2RlbCk7IFxuICAgIGNvbmZpZ01vZGVsLmxpbmVzID0gW107XG4gICAgLy8gaXRlcmF0ZXMgbGluZSBjb25maWcgbW9kZWxcbiAgICBhbmd1bGFyLmZvckVhY2goZGRNb2RlbFsxXSwgKGxpbmVWYWx1ZSwga2V5VmFsdWUpPT57XG4gICAgICAvLyBhZGQgZW1wdHkgbGluZSAxc3QgLSBpZiBsaW5lIGlzIGVtcHR5IC0+IGl0IHdpbGwgYmUgZW5vdWdoIFxuICAgICAgY29uZmlnTW9kZWwubGluZXMucHVzaChhbmd1bGFyLmNvcHkodGhpcy5FYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHMuZ2V0RWFzeUZvcm1FbXB0eUNvbmZpZ3VyYXRpb25MaW5lTW9kZWwoKSkpO1xuICAgICAgLy8gdXBkYXRlIGxpbmUgdmFsdWUgZmllbGRcbiAgICAgIHRoaXMuYXBwbHlUaGlzTGluZShrZXlWYWx1ZSArIDEsIGtleVZhbHVlLCBjb25maWdNb2RlbCk7XG4gICAgICAvLyBpdGVyYXRlIHRocm91Z2ggY29sdW1ucyBhbmQgYWRkIHRoZW0gaWYgY29udHJvbCBleGlzdHNcdFxuICAgICAgYW5ndWxhci5mb3JFYWNoKGxpbmVWYWx1ZSwgKGNvbFZhbHVlLCBjb2xJbmRleCk9PntcbiAgICAgICAgLy8gcHVzaCBhbiBlbXB0eSBjb250cm9sIG1vZGVsIGJ1dCByZWxhdGl2ZSB0byBkcmFkcm9wIDogbW9kZWwgY29udHJvbCB0eXBlIC0gKGlmIGRhdGVwaWNrZXIgc28gYWRkaXRpb25uYWwgcHJvcGVydGllcyBhcmUgYWRkZWQpIFx0XG4gICAgICAgIGxldCBjb250cm9sVG9CaW5kID0ge1xuICAgICAgICAgIGNvbnRyb2wgOiBhbmd1bGFyLmNvcHkodGhpcy5FYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHMuZ2V0Rm9ybWx5Q29udHJvbFRlbXBsYXRlRm9yTmNvbHVtbkxpbmUobGluZVZhbHVlLmxlbmd0aCwgdGhpcy5nZXRGb3JtbHlEZXRhaWxlZENvbnRyb2xNb2RlbEZyb21EcmFnRHJvcE9iamVjdChsaW5lVmFsdWVbY29sSW5kZXhdKS5mb3JtbHlUeXBlKSlcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IGZvcm1seURldGFpbGVkQ29udHJvbE1vZGVsID0gdGhpcy5nZXRGb3JtbHlEZXRhaWxlZENvbnRyb2xNb2RlbEZyb21EcmFnRHJvcE9iamVjdChsaW5lVmFsdWVbY29sSW5kZXhdKTtcbiAgICAgICAgLy8gY29udHJvbHMgYWxyZWFkeXMgZXhpc3RlZCBzbyBkbyBub3QgcmVzZXQgaXQgLSBjb250cm9sIHRvIGJpbmQgaXMgdGhlIHByZXZpb3VzIG9uZVx0XHRcbiAgICAgICAgaWYodHlwZW9mIGNvbFZhbHVlLmtleSAhPT0gJ3VuZGVmaW5lZCcpe1xuICAgICAgICAgIC8vY29uc29sZS53YXJuKCdkZWJ1ZyBkcmFnZHJvcE1vZGVsIHNob3cgdGhpcyBjb250cm9sIGtleSA6ICcgKyBjb2xWYWx1ZS5rZXkpO1xuICAgICAgICAgIGNvbnRyb2xUb0JpbmQuY29udHJvbCA9IGFuZ3VsYXIuY29weShjb2xWYWx1ZS5jb25maWdNb2RlbENvbnRyb2wpO1xuICAgICAgICAgIC8vdXBkYXRlIGNzc0NsYXNzIGRlcGVuZGluZyBuZXcgcG9zaXRpb246XG4gICAgICAgICAgdmFyIG5ld0NsYXNzTmFtZSA9IHRoaXMuRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzLmdldEZvcm1seUNvbnRyb2xUZW1wbGF0ZUZvck5jb2x1bW5MaW5lKGxpbmVWYWx1ZS5sZW5ndGgsIHRoaXMuZ2V0Rm9ybWx5RGV0YWlsZWRDb250cm9sTW9kZWxGcm9tRHJhZ0Ryb3BPYmplY3QobGluZVZhbHVlW2NvbEluZGV4XSkuZm9ybWx5VHlwZSk7XG4gICAgICAgICAgY29udHJvbFRvQmluZC5jb250cm9sLmNsYXNzTmFtZSA9IG5ld0NsYXNzTmFtZS5jbGFzc05hbWU7XG4gICAgICAgICAgLy90ZXN0IGlmIGhlYWRlciBuZWUgdGhpcyBvbmVcbiAgICAgICAgICBjb250cm9sVG9CaW5kLmNvbnRyb2wuY3NzQ2xhc3MgPSBuZXdDbGFzc05hbWUuY2xhc3NOYW1lO1xuICAgICAgICAgIC8vIGdldCBjb250cm9sIGRldGFpbHMgZm9yIHRoaXMga2V5IGluIGJhY2t1cCA6IHByZXZpb3VzQ29uZmlndXJhdGlvbk1vZGVsXG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAvLyBjb250cm9scyBkaWQgbm90IGV4aXN0cyBiZWZvcmUgOiBjb250cm9sIHRvIGJpbmQgaXMgYSBuZXcgb25lXG4gICAgICAgICAgICAvLyBiaW5kIGRyYWdkcm9wIGNvbnRyb2wgcHJvcGVydGllcyB0byBjb25maWd1cmF0aW9uIG1vZGVsIHRocm91Z2ggY29udHJvbFRvQmluZCB2YXJcbiAgICAgICAgICAgIHRoaXMuYmluZENvbmZpZ0N0cmxNb2RlbEZyb21Gb3JtbHlEZXRhaWxlZEN0cmxNb2RlbChmb3JtbHlEZXRhaWxlZENvbnRyb2xNb2RlbCwgY29udHJvbFRvQmluZCwgY29uZmlnTW9kZWwpO1xuICAgICAgICAgIH1cdFxuICAgICAgICAgIC8vIGFwcGx5IGNvbnRyb2xUb0JpbmQgdmFyIHRvIGNvbmZpZ3VyYXRpb24gbW9kZWwgY29udHJvbFxuICAgICAgICAgIGlmICh0eXBlb2YgY29uZmlnTW9kZWwubGluZXNba2V5VmFsdWVdLmNvbHVtbnNbY29sSW5kZXhdID09PSAndW5kZWZpbmVkJykgY29uZmlnTW9kZWwubGluZXNba2V5VmFsdWVdLmNvbHVtbnMucHVzaChhbmd1bGFyLmNvcHkodGhpcy5FYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHMuZ2V0RWFzeUZvcm1Db25maWd1cmF0aW9uRW1wdHlDb250cm9sTW9kZWwoKSkpOyBcbiAgICAgICAgICBjb25maWdNb2RlbC5saW5lc1trZXlWYWx1ZV0uY29sdW1uc1tjb2xJbmRleF0uY29udHJvbCBcdD0gYW5ndWxhci5jb3B5KGNvbnRyb2xUb0JpbmQuY29udHJvbCk7XG4gICAgICAgICAgY29uZmlnTW9kZWwubGluZXNba2V5VmFsdWVdLmNvbHVtbnNbY29sSW5kZXhdLm51bUNvbHVtbiA9IGNvbEluZGV4ICsgMTtcbiAgICAgICAgICBjb25maWdNb2RlbC5saW5lc1trZXlWYWx1ZV0uY29sdW1uc1tjb2xJbmRleF0uZXhpc3QgXHRcdD0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBjb25maWdNb2RlbDtcbiAgfSBcbiAgXG4gICBcbiAgcmVmcmVzaENvbnRyb2xzS2V5cyhjb25maWdNb2RlbCwgZHJhZ0Ryb3BNb2RlbCl7XHRcdFx0XHRcbiAgICBhbmd1bGFyLmZvckVhY2goY29uZmlnTW9kZWwubGluZXMsIChhQ29uZmlnTGluZSwgYUNvbmZpZ0xpbmVJbmRleCk9PntcdFx0XHRcdFx0XHRcbiAgICAgICAgYW5ndWxhci5mb3JFYWNoKGFDb25maWdMaW5lLmNvbHVtbnMsIChhQ29uZmlnQ29udHJvbCwgYUNvbmZpZ0NvbnRyb2xJbmRleCk9PntcbiAgICAgICAgICAvL2lmIGxhc3QgY29udHJvbCByZW1vdmVkIGZyb20gbGluZSAtIGFuZCBkcmFnRHJvcCBtb2RlbCBkaWQgbm90IGFscmVhZHkgcmVtb3ZlZCB0aGlzIGxpbmVcbiAgICAgICAgICBpZih0eXBlb2YgZHJhZ0Ryb3BNb2RlbFsxXVthQ29uZmlnTGluZUluZGV4XSAhPT0gJ3VuZGVmaW5lZCcpe1xuICAgICAgICAgICAgaWYoZHJhZ0Ryb3BNb2RlbFsxXVthQ29uZmlnTGluZUluZGV4XS5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgICAgZHJhZ0Ryb3BNb2RlbFsxXVthQ29uZmlnTGluZUluZGV4XVthQ29uZmlnQ29udHJvbEluZGV4XS5rZXkgPSBhQ29uZmlnQ29udHJvbC5jb250cm9sLmtleTtcbiAgICAgICAgICAgICAgLy9uZWVkIHRvIHNhdmUgYWxsIGluIGRyYWdkcm9wTW9kZWwgYXMgaXQgaXMgYSByZWZlcmVuY2VcbiAgICAgICAgICAgICAgLy9jb25maWdNb2RlbCBzdGlsbCBuZWVkZWQgXG4gICAgICAgICAgICAgIC8vIC0+IHRvIGtlZXAgY29oZXJlbmNlIChzYW1lIGJhY2sgbW9kZWwpIGJldHdlZW4gYWxsIHZlcnNpb24gb2YgZWFzeUZvcm0gR2VuZXJhdG9yXG4gICAgICAgICAgICAgIC8vIC0+IGlzIHRoZSBiYWNrIG1vZGVsIChjYW4gYmUgc2F2ZWQgdG8gZGF0YUJhc2UpXG4gICAgICAgICAgICAgIGRyYWdEcm9wTW9kZWxbMV1bYUNvbmZpZ0xpbmVJbmRleF1bYUNvbmZpZ0NvbnRyb2xJbmRleF0uY29uZmlnTW9kZWxDb250cm9sID0gYW5ndWxhci5jb3B5KGFDb25maWdDb250cm9sLmNvbnRyb2wpO1x0XHRcdFx0XHRcdFx0XHRcdFx0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTsgICAgIFxuICB9XG5cblxuICAvKipcbiAgICogZHJhZyBkcm9wIG1vZGVsXG4gICAqIC0+IHdpbGwgYmUgdXNlZCB0byBiaW5kIGNvbmZpZ3VyYXRpb24gbW9kZWxcbiAgICogXHRvZiBubyBrZXkgc2F2ZWQsIGNvbmZpZ3VyYXRpb24gbW9kZWwgY29udHJvbHMgd291bGQgYmUgcmVzZXQgZWFjaCBkcm9wIGV2ZW50c1xuICAgKiBcbiAgICogLT4gbWF0Y2hpbmcga2V5IDogd2lsbCBwcmV2ZW50IHRvIHJlc2V0IGV4aXN0aW5nIGNvbnRyb2xcbiAgICovXG4gIGxvYWREcmFnRHJvcE1vZGVsRnJvbUNvbmZpZ3VyYXRpb25Nb2RlbChjb25maWdNb2RlbCwgZHJhZ0Ryb3BNb2RlbCl7XHRcdFx0XHRcbiAgICAvL3Jlc2V0IGRyYWdkcm9wIGZpZWxkcyBtb2RlbCBOT1QgYWxsIGRyYWdEcm9wTW9kZWwhXG4gICAgZHJhZ0Ryb3BNb2RlbFsxXSA9IFtdO1xuICAgIGFuZ3VsYXIuZm9yRWFjaChjb25maWdNb2RlbC5saW5lcywgKGFDb25maWdMaW5lLCBhQ29uZmlnTGluZUluZGV4KT0+e1xuICAgICAgLy9hZGQgbmV3IGxpbmVcbiAgICAgIGRyYWdEcm9wTW9kZWxbMV0ucHVzaChbXSk7XG4gICAgICBhbmd1bGFyLmZvckVhY2goYUNvbmZpZ0xpbmUuY29sdW1ucywgKGFDb25maWdDb250cm9sKT0+e1xuICAgICAgICAvLyBnZXQgY29udHJvbCB0eXBlIGZyb20gY29uZmlndXJhdGlvbi5jb250cm9sLnNlbGVjdGVkQ29udHJvbFxuICAgICAgICBsZXQgZHJhZ2Ryb3BDb250cm9sUmVmID0ge1xuICAgICAgICAgIGNvbnRyb2wgICA6ICdlbXB0eScsXG4gICAgICAgICAgY3NzQ2xhc3MgIDogJ2NvbC14cy0xMicsXG4gICAgICAgICAgbGFiZWwgICAgIDogJzxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj4gPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj4gPGRpdiBjbGFzcz1cIlwiPiA8L2Rpdj4gPC9kaXY+PC9kaXY+J1xuICAgICAgICB9O1xuICAgICAgICBhbmd1bGFyLmZvckVhY2goZHJhZ0Ryb3BNb2RlbFswXSwgKGdyb3VwT2ZDdHJsUmVmKT0+e1xuICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChncm91cE9mQ3RybFJlZiwgKGFDdHJscmVmKT0+e1xuICAgICAgICAgICAgaWYgKGFDdHJscmVmLmNvbnRyb2wgPT09IGFDb25maWdDb250cm9sLmNvbnRyb2wuc2VsZWN0ZWRDb250cm9sKSBkcmFnZHJvcENvbnRyb2xSZWYgPSBhbmd1bGFyLmNvcHkoYUN0cmxyZWYpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgZHJhZ0Ryb3BNb2RlbFsxXVthQ29uZmlnTGluZUluZGV4XS5wdXNoKGRyYWdkcm9wQ29udHJvbFJlZik7XG4gICAgICAgIC8vdXBkYXRlIGNsYXNzIGRlcGVuZGluZyBudW1iZXIgb2YgY29udHJvbCBwZXIgbGluZVxuICAgICAgICBsZXQgY3NzQ2xhc3NUb0FwcGx5ID0gdGhpcy5lYXN5Rm9ybURyYWdXYXlDb25maWcuZ2V0SXRlbUNzc0RlcGVuZGluZ051bWJlckl0ZW1zSW5Sb3coZHJhZ0Ryb3BNb2RlbFsxXVthQ29uZmlnTGluZUluZGV4XS5sZW5ndGgpO1xuICAgICAgICBhbmd1bGFyLmZvckVhY2goZHJhZ0Ryb3BNb2RlbFsxXVthQ29uZmlnTGluZUluZGV4XSwgKGRkQ29udHJvbFRvVXBkYXRlKT0+ZGRDb250cm9sVG9VcGRhdGUuY3NzQ2xhc3MgPSBjc3NDbGFzc1RvQXBwbHkpO1xuICAgICAgfSk7XHQgICAgICAgICAgICBcbiAgICB9KTtcbiAgICAvLyBjb25zb2xlLmluZm8oJ2JpbmREcmFnRHJvcE1vZGVsRnJvbUNvbmZpZ3VyYXRpb25Nb2RlbCcpO1xuICAgIC8vIGNvbnNvbGUuZGlyKFx0XG4gICAgLy8gXHRcdFx0XHRcdFx0XHR7XG4gICAgLy8gXHRcdFx0XHRcdFx0XHRcdFx0J3doZW4nIFx0XHRcdFx0XHRcdFx0OiAnc3RhcnRpbmcnLFxuICAgIC8vIFx0XHRcdFx0XHRcdFx0XHRcdCdjb25maWdNb2RlbCBpcyAnIFx0OiBhbmd1bGFyLmNvcHkoY29uZmlnTW9kZWwpLFxuICAgIC8vIFx0XHRcdFx0XHRcdFx0XHRcdCdkcmFnRHJvcE1vZGVsIGlzICcgOiBhbmd1bGFyLmNvcHkoZHJhZ0Ryb3BNb2RlbClcbiAgICAvLyBcdFx0XHRcdFx0XHRcdH1cbiAgICAvLyBcdFx0XHRcdFx0XHQpOyAgICAgXG4gIH1cblxuXG5cblxuICAvKipcbiAgICogcmV0dXJucyBhIGNvbnRyb2wgbW9kZWwgdGhhdCBpcyBtb3JlIGZvcm1seSBkZXRhaWxlZFxuICAgKiAobW9yZSBmb3JtbHkgZGV0YWlsZWQgOiBzZWUgY29udHJvbHMgcHJvcGVydHkgaW4gRWFzeUZvcm1HZW5Gb3JtbHlCaW5kaW5nTW9kZWxzLl9lYXN5Rm9ybUxpc3RDb250cm9scylcbiAgICovXG4gIGdldEZvcm1seURldGFpbGVkQ29udHJvbE1vZGVsRnJvbURyYWdEcm9wT2JqZWN0KGRyYWdEcmFwQ3RybE1vZGVsKXtcbiAgICBsZXQgY29udHJvbE1vZGVsICAgICAgICA9IHt9O1xuICAgIGxldCBsaXN0Q29udHJvbCAgICAgICAgID0gdGhpcy5FYXN5Rm9ybUdlbkZvcm1seUJpbmRpbmdNb2RlbHMuZ2V0RWFzeUZvcm1MaXN0Q29udHJvbHMoKTtcbiAgICBsZXQgY29udHJvbHNMaXN0R2V0dGVyICA9IHRoaXMuJHBhcnNlKCdjb250cm9scycpO1xuICAgIFxuICAgIGFuZ3VsYXIuZm9yRWFjaChjb250cm9sc0xpc3RHZXR0ZXIobGlzdENvbnRyb2wpLCAoY3RybExpc3RWYWx1ZSk9PntcbiAgICAgIGlmIChjdHJsTGlzdFZhbHVlLmlkID09PSBkcmFnRHJhcEN0cmxNb2RlbC5jb250cm9sKSAgY29udHJvbE1vZGVsID0gY3RybExpc3RWYWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gY29udHJvbE1vZGVsO1xuICB9XG4gIFxuICAvKipcbiAgICogdmFsaWQgYSBjb250cm9sIGtleSBpcyB1bmlxdWVcbiAgICpcbiAgICAqIHllcy4uLiBmdW5jdGlvbiBuYW1lIGFscmVhZHkgdG9sZCB1cyB0aGF0LCBcbiAgICAqIC0+IGl0J3MganVzdCBjb25maXJtYXRpb24gYW5kIHRvIHNlZSBpZlxuICAgICogICAgeW91IGtlZXAgZm9jdXMgd2hpbGUgcmVhZGluZyBpdCBeXlxuICAgICovXG4gdmFsaWRLZXlVbmlxdWVuZXNzKHRoaXNLZXksIGNvbmZpZ3VyYXRpb25PYmope1xuICAgIGxldCBpc1VuaXF1ZSA9IHRydWU7XG4gICAgZm9yICh2YXIgaSA9IGNvbmZpZ3VyYXRpb25PYmoubGluZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGZvciAodmFyIGogPSBjb25maWd1cmF0aW9uT2JqLmxpbmVzW2ldLmNvbHVtbnMubGVuZ3RoIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWd1cmF0aW9uT2JqLmxpbmVzW2ldLmNvbHVtbnNbal0uY29udHJvbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbk9iai5saW5lc1tpXS5jb2x1bW5zW2pdLmNvbnRyb2wua2V5ID09PSB0aGlzS2V5KSB7XG4gICAgICAgICAgICBpc1VuaXF1ZSA9IGZhbHNlO1xuICAgICAgICAgIH1cdFx0XHQgICAgXHRcdFxuICAgICAgICB9XG4gICAgICB9IFxuICAgIH1cbiAgICByZXR1cm4gaXNVbmlxdWU7ICBcbiAgfSAgXG4gIFxuICBcbiAgY3JlYXRlVW5pcXVlS2V5KGJhc2VLZXlWYWx1ZSwgY29uZmlndXJhdGlvbk9iail7XG4gICAgLy8gdW5pcXVlIGtleSAoc2V0IG9ubHkgZmlyc3QgdGltZSkgaW4gdGhpcyBtb2RlbCBpcyBmb3JtbHkgY29udHJvbCB0eXBlICsgRGF0ZS5ub3coKTsgXG4gICAgbGV0IG5ld0tleSA9IGJhc2VLZXlWYWx1ZSArICctJyArIERhdGUubm93KCk7XG4gICAgaWYgKHRoaXMudmFsaWRLZXlVbmlxdWVuZXNzKG5ld0tleSwgY29uZmlndXJhdGlvbk9iaikgPT09IHRydWUpe1xuICAgICAgcmV0dXJuIG5ld0tleTtcbiAgICB9ZWxzZXtcbiAgICAgIG5ld0tleSA9IGJhc2VLZXlWYWx1ZSArICctJyArIERhdGUubm93KCk7XG4gICAgICBpZiAodGhpcy52YWxpZEtleVVuaXF1ZW5lc3MobmV3S2V5LCBjb25maWd1cmF0aW9uT2JqKSA9PT0gdHJ1ZSl7XG4gICAgICAgIHJldHVybiBuZXdLZXk7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgbmV3S2V5ID0gYmFzZUtleVZhbHVlICsgJy0nICsgRGF0ZS5ub3coKTtcbiAgICAgICAgcmV0dXJuIG5ld0tleTtcbiAgICAgIH1cbiAgICB9IFxuICB9ICBcbiBcblxuICBhcHBseVRoaXNMaW5lKGxpbmV2YWx1ZSwgbGluZUluZGV4LCBjb25maWdNb2RlbCl7XG4gICAgYW5ndWxhci5mb3JFYWNoKGNvbmZpZ01vZGVsLmxpbmVzLCAoYUxpbmVWYWx1ZSwgYUxpbmVLZXkpPT57XG4gICAgICBpZiAoYUxpbmVLZXkgPT09IGxpbmVJbmRleCkgYUxpbmVWYWx1ZS5saW5lID0gbGluZXZhbHVlO1xuICAgIH0pO1xuICB9ICBcbiAgXG5cbiAgLyoqXG4gICAqIGJpbmQgZm9ybWx5IGRldGFpbGVkIG1vZGVsIHRvIGNvbmZpZ3VyYXRpb24gY29udHJvbCBtb2RlbFxuICAgKi9cbiAgYmluZENvbmZpZ0N0cmxNb2RlbEZyb21Gb3JtbHlEZXRhaWxlZEN0cmxNb2RlbChmb3JtbHlEZXRhaWxDdHJsTW9kZWwsIGNvbmZpZ3VyYXRpb25DdHJsTW9kZWwsIGNvbmZpZ01vZGVsKXtcbiAgICAvKipcbiAgICAgICogVE9ETyA6cHJvcGVydGllcyBzaG91bGQgYmUgc2VydmVkIGJ5IHByb3ZpZGVyIFxuICAgICAgKiBtb3JlIGNvbmZpZ3VyYWJsZSB3aXRob3V0IHBhaW5cbiAgICAgICovXG4gICAgLy9zZXQgc2VsZWN0ZWQgY29udHJvbCA6XG4gICAgdGhpcy4kcGFyc2UoJ2NvbnRyb2wuc2VsZWN0ZWRDb250cm9sJykuYXNzaWduKGNvbmZpZ3VyYXRpb25DdHJsTW9kZWwsIHRoaXMuJHBhcnNlKCdzZWxlY3RlZENvbnRyb2wnKShmb3JtbHlEZXRhaWxDdHJsTW9kZWwpKTtcbiAgICAvL3NldCB0eXBlIDpcdFxuICAgIHRoaXMuJHBhcnNlKCdjb250cm9sLnR5cGUnKS5hc3NpZ24oY29uZmlndXJhdGlvbkN0cmxNb2RlbCwgdGhpcy4kcGFyc2UoJ2Zvcm1seVR5cGUnKShmb3JtbHlEZXRhaWxDdHJsTW9kZWwpKTtcbiAgICAvL3NldCBrZXkgOlx0XG4gICAgdGhpcy4kcGFyc2UoJ2NvbnRyb2wua2V5JykuYXNzaWduKGNvbmZpZ3VyYXRpb25DdHJsTW9kZWwsIHRoaXMuY3JlYXRlVW5pcXVlS2V5KHRoaXMuJHBhcnNlKCdjb250cm9sLnR5cGUnKShjb25maWd1cmF0aW9uQ3RybE1vZGVsKSwgY29uZmlnTW9kZWwpKTtcbiAgICAvL3NldCBzdWJ0eXBlIDpcdFxuICAgIHRoaXMuJHBhcnNlKCdjb250cm9sLnN1YnR5cGUnKS5hc3NpZ24oY29uZmlndXJhdGlvbkN0cmxNb2RlbCwgdGhpcy4kcGFyc2UoJ2Zvcm1seVN1YnR5cGUnKShmb3JtbHlEZXRhaWxDdHJsTW9kZWwpKTtcbiAgICAvL3NldCB0ZW1wbGF0ZU9wdGlvbnMubGFiZWwgOlx0XG4gICAgdGhpcy4kcGFyc2UoJ2NvbnRyb2wudGVtcGxhdGVPcHRpb25zLmxhYmVsJykuYXNzaWduKGNvbmZpZ3VyYXRpb25DdHJsTW9kZWwsIHRoaXMuJHBhcnNlKCdmb3JtbHlMYWJlbCcpKGZvcm1seURldGFpbEN0cmxNb2RlbCkpO1x0XHRcdFx0XHRcbiAgICAvL3NldCB0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWQgOlx0XG4gICAgdGhpcy4kcGFyc2UoJ2NvbnRyb2wudGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkJykuYXNzaWduKGNvbmZpZ3VyYXRpb25DdHJsTW9kZWwsIHRoaXMuJHBhcnNlKCdmb3JtbHlSZXF1aXJlZCcpKGZvcm1seURldGFpbEN0cmxNb2RlbCkpO1x0XG4gICAgLy9zZXQgdGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkIDpcdFxuICAgIHRoaXMuJHBhcnNlKCdjb250cm9sLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbicpLmFzc2lnbihjb25maWd1cmF0aW9uQ3RybE1vZGVsLCB0aGlzLiRwYXJzZSgnZm9ybWx5RGVzY3JpcHRpb24nKShmb3JtbHlEZXRhaWxDdHJsTW9kZWwpKTtcdFxuICAgIC8vc2V0IHRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZCA6XHRcbiAgICB0aGlzLiRwYXJzZSgnY29udHJvbC50ZW1wbGF0ZU9wdGlvbnMucGxhY2Vob2xkZXInKS5hc3NpZ24oY29uZmlndXJhdGlvbkN0cmxNb2RlbCwgdGhpcy4kcGFyc2UoJ2Zvcm1seVBsYWNlaG9sZGVyJykoZm9ybWx5RGV0YWlsQ3RybE1vZGVsKSk7XG4gICAgLy9zZXQgdGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkIDpcdFxuICAgIHRoaXMuJHBhcnNlKCdjb250cm9sLnRlbXBsYXRlT3B0aW9ucy5vcHRpb25zJykuYXNzaWduKGNvbmZpZ3VyYXRpb25DdHJsTW9kZWwsIHRoaXMuJHBhcnNlKCdmb3JtbHlPcHRpb25zJykoZm9ybWx5RGV0YWlsQ3RybE1vZGVsKSk7XG5cbiAgICBpZiAodGhpcy4kcGFyc2UoJ2NvbnRyb2wudHlwZScpKGNvbmZpZ3VyYXRpb25DdHJsTW9kZWwpID09PSAnZGF0ZXBpY2tlcicpIHtcbiAgICAgIHRoaXMuJHBhcnNlKCdjb250cm9sLnRlbXBsYXRlT3B0aW9ucy5kYXRlcGlja2VyUG9wdXAnKS5hc3NpZ24oY29uZmlndXJhdGlvbkN0cmxNb2RlbCwgdGhpcy4kcGFyc2UoJ2RhdGVwaWNrZXJQb3B1cCcpKGZvcm1seURldGFpbEN0cmxNb2RlbCkpO1xuICAgIH0gICAgXG4gIH0gIFxuICBcbiAgXG59XG5cbmRkTW9kZWxDb25mTW9kZWxQcm94eVNlcnZpY2UuJGluamVjdCA9IFtcbiAgJ0Vhc3lGb3JtR2VuRm9ybWx5QmluZGluZ01vZGVscycsXG4gIC8vICdjb250cm9sbGVyTW9kYWxQcm94eScsXG4gIC8vICdkcmFnRHJvcENvbmZpZycsXG4gICdlYXN5Rm9ybURyYWdXYXlDb25maWcnLFxuICAnJHBhcnNlJyAgXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBkZE1vZGVsQ29uZk1vZGVsUHJveHlTZXJ2aWNlO1xuZXhwb3J0IHtcbiAgRFJBR19EUk9QX0NPTkZJR19QUk9YWV9TRVJWSUNFXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25Nb2RlbFByb3h5L2VkYURyYWdEcm9wV2F5LmNvbmZpZ3VyYXRpb25Nb2RlbFByb3h5LnNlcnZpY2UuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 72 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dragAndDropListDndlist = __webpack_require__(73);\n\nvar _dragAndDropListDndlist2 = _interopRequireDefault(_dragAndDropListDndlist);\n\nvar _dragAndDropListDndDraggable = __webpack_require__(74);\n\nvar _dragAndDropListDndDraggable2 = _interopRequireDefault(_dragAndDropListDndDraggable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DRAG_DROP_LIST_MODULE = 'dndLists.module';\n\nexports.default = angular.module(DRAG_DROP_LIST_MODULE, []).directive(_dragAndDropListDndlist.DNDLIST_DIRECTIVE, _dragAndDropListDndlist2.default).directive(_dragAndDropListDndDraggable.DNDDRAGGABLE_DIRECTIVE, _dragAndDropListDndDraggable2.default).factory('dndDragTypeWorkaround', function () {\n return {};\n}).factory('dndDropEffectWorkaround', function () {\n return {};\n});//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29tbW9uL2RyYWdBbmREcm9wTGlzdC9kcmFnQW5kRHJvcExpc3QubW9kdWxlLmpzP2NiOGUiXSwibmFtZXMiOlsiRFJBR19EUk9QX0xJU1RfTU9EVUxFIiwiYW5ndWxhciIsIm1vZHVsZSIsImRpcmVjdGl2ZSIsImZhY3RvcnkiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBSUE7Ozs7OztBQUlBLElBQU1BLHdCQUF3QixpQkFBOUI7O2tCQUVlQyxRQUNFQyxNQURGLENBQ1NGLHFCQURULEVBQ2dDLEVBRGhDLEVBRUVHLFNBRkYsOEVBR0VBLFNBSEYsNkZBSUVDLE9BSkYsQ0FJVSx1QkFKVixFQUltQyxZQUFVO0FBQUUsU0FBTyxFQUFQO0FBQVksQ0FKM0QsRUFLRUEsT0FMRixDQUtVLHlCQUxWLEVBS3FDLFlBQVU7QUFBRSxTQUFPLEVBQVA7QUFBWSxDQUw3RCxDIiwiZmlsZSI6IjcyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRuZExpc3QsIHtcbiAgRE5ETElTVF9ESVJFQ1RJVkVcbn0gICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vZHJhZ0FuZERyb3BMaXN0LmRuZGxpc3QuZGlyZWN0aXZlJztcblxuaW1wb3J0IGRuZERyYWdnYWJsZSwge1xuICBETkREUkFHR0FCTEVfRElSRUNUSVZFXG59ICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL2RyYWdBbmREcm9wTGlzdC5kbmREcmFnZ2FibGUuZGlyZWN0aXZlJztcblxuY29uc3QgRFJBR19EUk9QX0xJU1RfTU9EVUxFID0gJ2RuZExpc3RzLm1vZHVsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAubW9kdWxlKERSQUdfRFJPUF9MSVNUX01PRFVMRSwgW10pXG4gICAgICAgICAgICAgICAgLmRpcmVjdGl2ZShETkRMSVNUX0RJUkVDVElWRSwgZG5kTGlzdClcbiAgICAgICAgICAgICAgICAuZGlyZWN0aXZlKERORERSQUdHQUJMRV9ESVJFQ1RJVkUsIGRuZERyYWdnYWJsZSlcbiAgICAgICAgICAgICAgICAuZmFjdG9yeSgnZG5kRHJhZ1R5cGVXb3JrYXJvdW5kJywgZnVuY3Rpb24oKXsgcmV0dXJuIHt9OyB9KVxuICAgICAgICAgICAgICAgIC5mYWN0b3J5KCdkbmREcm9wRWZmZWN0V29ya2Fyb3VuZCcsIGZ1bmN0aW9uKCl7IHJldHVybiB7fTsgfSk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29tbW9uL2RyYWdBbmREcm9wTGlzdC9kcmFnQW5kRHJvcExpc3QubW9kdWxlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 73 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar DNDLIST_DIRECTIVE = 'dndList';\n\nfunction dndList($parse, $timeout, dndDropEffectWorkaround, dndDragTypeWorkaround) {\n var directive = {\n link: linkFct\n };\n return directive;\n\n function linkFct(scope, element, attr) {\n // While an element is dragged over the list, this placeholder element is inserted\n // at the location where the element would be inserted after dropping\n var placeholder = angular.element('');\n var placeholderNode = placeholder[0];\n var listNode = element[0];\n var horizontal = attr.dndHorizontalList && scope.$eval(attr.dndHorizontalList);\n var externalSources = attr.dndExternalSources && scope.$eval(attr.dndExternalSources);\n\n /**\n * The dragover event is triggered \"every few hundred milliseconds\" while an element\n * is being dragged over our list, or over an child element.\n */\n element.on('dragover', function (event) {\n event = event.originalEvent || event;\n if (!isDropAllowed(event)) return true;\n // First of all, make sure that the placeholder is shown\n // This is especially important if the list is empty\n if (placeholderNode.parentNode != listNode) {\n element.append(placeholder);\n }\n if (event.target !== listNode) {\n // Try to find the node direct directly below the list node.\n var listItemNode = event.target;\n while (listItemNode.parentNode !== listNode && listItemNode.parentNode) {\n listItemNode = listItemNode.parentNode;\n }\n if (listItemNode.parentNode === listNode && listItemNode !== placeholderNode) {\n // If the mouse pointer is in the upper half of the child element,\n // we place it before the child element, otherwise below it.\n if (isMouseInFirstHalf(event, listItemNode)) {\n listNode.insertBefore(placeholderNode, listItemNode);\n } else {\n listNode.insertBefore(placeholderNode, listItemNode.nextSibling);\n }\n }\n } else {\n // This branch is reached when we are dragging directly over the list element.\n // Usually we wouldn't need to do anything here, but the IE does not fire it's\n // events for the child element, only for the list directly. Therefore we repeat\n // the positioning algorithm for IE here.\n if (isMouseInFirstHalf(event, placeholderNode, true)) {\n // Check if we should move the placeholder element one spot towards the top.\n // Note that display none elements will have offsetTop and offsetHeight set to\n // zero, therefore we need a special check for them.\n while (placeholderNode.previousElementSibling && (isMouseInFirstHalf(event, placeholderNode.previousElementSibling, true) || placeholderNode.previousElementSibling.offsetHeight === 0)) {\n listNode.insertBefore(placeholderNode, placeholderNode.previousElementSibling);\n }\n } else {\n // Check if we should move the placeholder element one spot towards the bottom\n while (placeholderNode.nextElementSibling && !isMouseInFirstHalf(event, placeholderNode.nextElementSibling, true)) {\n listNode.insertBefore(placeholderNode, placeholderNode.nextElementSibling.nextElementSibling);\n }\n }\n }\n\n // At this point we invoke the callback, which still can disallow the drop.\n // We can't do this earlier because we want to pass the index of the placeholder.\n if (attr.dndDragover && !invokeCallback(attr.dndDragover, event)) {\n return stopDragover();\n }\n element.addClass('dndDragover');\n event.preventDefault();\n event.stopPropagation();\n return false;\n });\n\n /**\n * When the element is dropped, we use the position of the placeholder element as the\n * position where we insert the transferred data. This assumes that the list has exactly\n * one child element per array element.\n */\n element.on('drop', function (event) {\n event = event.originalEvent || event;\n if (!isDropAllowed(event)) return true;\n // The default behavior in Firefox is to interpret the dropped element as URL and\n // forward to it. We want to prevent that even if our drop is aborted.\n event.preventDefault();\n // Unserialize the data that was serialized in dragstart. According to the HTML5 specs,\n // the \"Text\" drag type will be converted to text/plain, but IE does not do that.\n var data = event.dataTransfer.getData('Text') || event.dataTransfer.getData('text/plain');\n var transferredObject;\n try {\n transferredObject = JSON.parse(data);\n } catch (e) {\n return stopDragover();\n }\n // Invoke the callback, which can transform the transferredObject and even abort the drop.\n if (attr.dndDrop) {\n transferredObject = invokeCallback(attr.dndDrop, event, transferredObject);\n if (!transferredObject) {\n return stopDragover();\n }\n }\n // Retrieve the JSON array and insert the transferred object into it.\n var targetArray = scope.$eval(attr.dndList);\n scope.$apply(function () {\n targetArray.splice(getPlaceholderIndex(), 0, transferredObject);\n });\n // In Chrome on Windows the dropEffect will always be none...\n // We have to determine the actual effect manually from the allowed effects\n if (event.dataTransfer.dropEffect === 'none') {\n if (event.dataTransfer.effectAllowed === 'copy' || event.dataTransfer.effectAllowed === 'move') {\n dndDropEffectWorkaround.dropEffect = event.dataTransfer.effectAllowed;\n } else {\n dndDropEffectWorkaround.dropEffect = event.ctrlKey ? 'copy' : 'move';\n }\n } else {\n dndDropEffectWorkaround.dropEffect = event.dataTransfer.dropEffect;\n }\n // Clean up\n stopDragover();\n event.stopPropagation();\n return false;\n });\n\n /**\n * We have to remove the placeholder when the element is no longer dragged over our list. The\n * problem is that the dragleave event is not only fired when the element leaves our list,\n * but also when it leaves a child element -- so practically it's fired all the time. As a\n * workaround we wait a few milliseconds and then check if the dndDragover class was added\n * again. If it is there, dragover must have been called in the meantime, i.e. the element\n * is still dragging over the list. If you know a better way of doing this, please tell me!\n */\n element.on('dragleave', function (event) {\n event = event.originalEvent || event;\n\n element.removeClass('dndDragover');\n $timeout(function () {\n if (!element.hasClass('dndDragover')) {\n placeholder.remove();\n }\n }, 100);\n });\n\n /**\n * Checks whether the mouse pointer is in the first half of the given target element.\n *\n * In Chrome we can just use offsetY, but in Firefox we have to use layerY, which only\n * works if the child element has position relative. In IE the events are only triggered\n * on the listNode instead of the listNodeItem, therefore the mouse positions are\n * relative to the parent element of targetNode.\n */\n function isMouseInFirstHalf(event, targetNode, relativeToParent) {\n var mousePointer = horizontal ? event.offsetX || event.layerX : event.offsetY || event.layerY;\n var targetSize = horizontal ? targetNode.offsetWidth : targetNode.offsetHeight;\n var targetPosition = horizontal ? targetNode.offsetLeft : targetNode.offsetTop;\n targetPosition = relativeToParent ? targetPosition : 0;\n return mousePointer < targetPosition + targetSize / 2;\n }\n\n /**\n * We use the position of the placeholder node to determine at which position of the array the\n * object needs to be inserted\n */\n function getPlaceholderIndex() {\n return Array.prototype.indexOf.call(listNode.children, placeholderNode);\n }\n\n /**\n * Checks various conditions that must be fulfilled for a drop to be allowed\n */\n function isDropAllowed(event) {\n // Disallow drop from external source unless it's allowed explicitly.\n if (!dndDragTypeWorkaround.isDragging && !externalSources) return false;\n // Check mimetype. Usually we would use a custom drag type instead of Text, but IE doesn't\n // support that.\n if (!hasTextMimetype(event.dataTransfer.types)) return false;\n // Now check the dnd-allowed-types against the type of the incoming element. For drops from\n // external sources we don't know the type, so it will need to be checked via dnd-drop.\n if (attr.dndAllowedTypes && dndDragTypeWorkaround.isDragging) {\n var allowed = scope.$eval(attr.dndAllowedTypes);\n if (angular.isArray(allowed) && allowed.indexOf(dndDragTypeWorkaround.dragType) === -1) {\n return false;\n }\n }\n // Check whether droping is disabled completely\n if (attr.dndDisableIf && scope.$eval(attr.dndDisableIf)) return false;\n return true;\n }\n\n /**\n * Small helper function that cleans up if we aborted a drop.\n */\n function stopDragover() {\n placeholder.remove();\n element.removeClass('dndDragover');\n return true;\n }\n\n /**\n * Invokes a callback with some interesting parameters and returns the callbacks return value.\n */\n function invokeCallback(expression, event, item) {\n return $parse(expression)(scope, {\n event: event,\n index: getPlaceholderIndex(),\n item: item || undefined,\n external: !dndDragTypeWorkaround.isDragging,\n type: dndDragTypeWorkaround.isDragging ? dndDragTypeWorkaround.dragType : undefined\n });\n }\n\n /**\n * Check if the dataTransfer object contains a drag type that we can handle. In old versions\n * of IE the types collection will not even be there, so we just assume a drop is possible.\n */\n function hasTextMimetype(types) {\n if (!types) return true;\n for (var i = 0; i < types.length; i++) {\n if (types[i] === 'Text' || types[i] === 'text/plain') return true;\n }\n return false;\n }\n }\n}\n\nvar TO_INJECT = ['$parse', '$timeout', 'dndDropEffectWorkaround', 'dndDragTypeWorkaround'];\n\ndndList.$inject = TO_INJECT;\n\nexports.default = dndList;\nexports.DNDLIST_DIRECTIVE = DNDLIST_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29tbW9uL2RyYWdBbmREcm9wTGlzdC9kcmFnQW5kRHJvcExpc3QuZG5kbGlzdC5kaXJlY3RpdmUuanM/YjQyZiJdLCJuYW1lcyI6WyJETkRMSVNUX0RJUkVDVElWRSIsImRuZExpc3QiLCIkcGFyc2UiLCIkdGltZW91dCIsImRuZERyb3BFZmZlY3RXb3JrYXJvdW5kIiwiZG5kRHJhZ1R5cGVXb3JrYXJvdW5kIiwiZGlyZWN0aXZlIiwibGluayIsImxpbmtGY3QiLCJzY29wZSIsImVsZW1lbnQiLCJhdHRyIiwicGxhY2Vob2xkZXIiLCJhbmd1bGFyIiwicGxhY2Vob2xkZXJOb2RlIiwibGlzdE5vZGUiLCJob3Jpem9udGFsIiwiZG5kSG9yaXpvbnRhbExpc3QiLCIkZXZhbCIsImV4dGVybmFsU291cmNlcyIsImRuZEV4dGVybmFsU291cmNlcyIsIm9uIiwiZXZlbnQiLCJvcmlnaW5hbEV2ZW50IiwiaXNEcm9wQWxsb3dlZCIsInBhcmVudE5vZGUiLCJhcHBlbmQiLCJ0YXJnZXQiLCJsaXN0SXRlbU5vZGUiLCJpc01vdXNlSW5GaXJzdEhhbGYiLCJpbnNlcnRCZWZvcmUiLCJuZXh0U2libGluZyIsInByZXZpb3VzRWxlbWVudFNpYmxpbmciLCJvZmZzZXRIZWlnaHQiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJkbmREcmFnb3ZlciIsImludm9rZUNhbGxiYWNrIiwic3RvcERyYWdvdmVyIiwiYWRkQ2xhc3MiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImRhdGEiLCJkYXRhVHJhbnNmZXIiLCJnZXREYXRhIiwidHJhbnNmZXJyZWRPYmplY3QiLCJKU09OIiwicGFyc2UiLCJlIiwiZG5kRHJvcCIsInRhcmdldEFycmF5IiwiJGFwcGx5Iiwic3BsaWNlIiwiZ2V0UGxhY2Vob2xkZXJJbmRleCIsImRyb3BFZmZlY3QiLCJlZmZlY3RBbGxvd2VkIiwiY3RybEtleSIsInJlbW92ZUNsYXNzIiwiaGFzQ2xhc3MiLCJyZW1vdmUiLCJ0YXJnZXROb2RlIiwicmVsYXRpdmVUb1BhcmVudCIsIm1vdXNlUG9pbnRlciIsIm9mZnNldFgiLCJsYXllclgiLCJvZmZzZXRZIiwibGF5ZXJZIiwidGFyZ2V0U2l6ZSIsIm9mZnNldFdpZHRoIiwidGFyZ2V0UG9zaXRpb24iLCJvZmZzZXRMZWZ0Iiwib2Zmc2V0VG9wIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJpbmRleE9mIiwiY2FsbCIsImNoaWxkcmVuIiwiaXNEcmFnZ2luZyIsImhhc1RleHRNaW1ldHlwZSIsInR5cGVzIiwiZG5kQWxsb3dlZFR5cGVzIiwiYWxsb3dlZCIsImlzQXJyYXkiLCJkcmFnVHlwZSIsImRuZERpc2FibGVJZiIsImV4cHJlc3Npb24iLCJpdGVtIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJleHRlcm5hbCIsInR5cGUiLCJpIiwibGVuZ3RoIiwiVE9fSU5KRUNUIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFNQSxvQkFBb0IsU0FBMUI7O0FBRUEsU0FBU0MsT0FBVCxDQUFpQkMsTUFBakIsRUFBeUJDLFFBQXpCLEVBQW1DQyx1QkFBbkMsRUFBNERDLHFCQUE1RCxFQUFtRjtBQUNqRixNQUFJQyxZQUFZO0FBQ2RDLFVBQU9DO0FBRE8sR0FBaEI7QUFHQSxTQUFPRixTQUFQOztBQUVBLFdBQVNFLE9BQVQsQ0FBaUJDLEtBQWpCLEVBQXdCQyxPQUF4QixFQUFpQ0MsSUFBakMsRUFBdUM7QUFDckM7QUFDQTtBQUNBLFFBQUlDLGNBQWtCQyxRQUFRSCxPQUFSLENBQWdCLGtDQUFoQixDQUF0QjtBQUNBLFFBQUlJLGtCQUFrQkYsWUFBWSxDQUFaLENBQXRCO0FBQ0EsUUFBSUcsV0FBa0JMLFFBQVEsQ0FBUixDQUF0QjtBQUNBLFFBQUlNLGFBQWtCTCxLQUFLTSxpQkFBTCxJQUEwQlIsTUFBTVMsS0FBTixDQUFZUCxLQUFLTSxpQkFBakIsQ0FBaEQ7QUFDQSxRQUFJRSxrQkFBa0JSLEtBQUtTLGtCQUFM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QU4sTUFBYSxZQUF4QyxFQUFzRCxPQUFPLElBQVA7QUFDdkQ7QUFDRCxhQUFPLEtBQVA7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsSUFBTUUsWUFBWSxDQUNoQixRQURnQixFQUVoQixVQUZnQixFQUdoQix5QkFIZ0IsRUFJaEIsdUJBSmdCLENBQWxCOztBQU9BM0YsUUFBUTRGLE9BQVIsR0FBa0JELFNBQWxCOztrQkFFZTNGLE87UUFHYkQsaUIsR0FBQUEsaUIiLCJmaWxlIjoiNzMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBETkRMSVNUX0RJUkVDVElWRSA9ICdkbmRMaXN0JztcblxuZnVuY3Rpb24gZG5kTGlzdCgkcGFyc2UsICR0aW1lb3V0LCBkbmREcm9wRWZmZWN0V29ya2Fyb3VuZCwgZG5kRHJhZ1R5cGVXb3JrYXJvdW5kKSB7XG4gIGxldCBkaXJlY3RpdmUgPSB7XG4gICAgbGluayA6IGxpbmtGY3RcbiAgfTtcbiAgcmV0dXJuIGRpcmVjdGl2ZTtcblxuICBmdW5jdGlvbiBsaW5rRmN0KHNjb3BlLCBlbGVtZW50LCBhdHRyKSB7XG4gICAgLy8gV2hpbGUgYW4gZWxlbWVudCBpcyBkcmFnZ2VkIG92ZXIgdGhlIGxpc3QsIHRoaXMgcGxhY2Vob2xkZXIgZWxlbWVudCBpcyBpbnNlcnRlZFxuICAgIC8vIGF0IHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgZWxlbWVudCB3b3VsZCBiZSBpbnNlcnRlZCBhZnRlciBkcm9wcGluZ1xuICAgIGxldCBwbGFjZWhvbGRlciAgICAgPSBhbmd1bGFyLmVsZW1lbnQoJzxsaSBjbGFzcz1cImRuZFBsYWNlaG9sZGVyXCI+PC9saT4nKTtcbiAgICBsZXQgcGxhY2Vob2xkZXJOb2RlID0gcGxhY2Vob2xkZXJbMF07XG4gICAgbGV0IGxpc3ROb2RlICAgICAgICA9IGVsZW1lbnRbMF07XG4gICAgbGV0IGhvcml6b250YWwgICAgICA9IGF0dHIuZG5kSG9yaXpvbnRhbExpc3QgJiYgc2NvcGUuJGV2YWwoYXR0ci5kbmRIb3Jpem9udGFsTGlzdCk7XG4gICAgbGV0IGV4dGVybmFsU291cmNlcyA9IGF0dHIuZG5kRXh0ZXJuYWxTb3VyY2VzICYmIHNjb3BlLiRldmFsKGF0dHIuZG5kRXh0ZXJuYWxTb3VyY2VzKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBkcmFnb3ZlciBldmVudCBpcyB0cmlnZ2VyZWQgXCJldmVyeSBmZXcgaHVuZHJlZCBtaWxsaXNlY29uZHNcIiB3aGlsZSBhbiBlbGVtZW50XG4gICAgICogaXMgYmVpbmcgZHJhZ2dlZCBvdmVyIG91ciBsaXN0LCBvciBvdmVyIGFuIGNoaWxkIGVsZW1lbnQuXG4gICAgICovXG4gICAgZWxlbWVudC5vbignZHJhZ292ZXInLCAoZXZlbnQpID0+IHtcbiAgICAgIGV2ZW50ID0gZXZlbnQub3JpZ2luYWxFdmVudCB8fCBldmVudDtcbiAgICAgIGlmICghaXNEcm9wQWxsb3dlZChldmVudCkpIHJldHVybiB0cnVlO1xuICAgICAgLy8gRmlyc3Qgb2YgYWxsLCBtYWtlIHN1cmUgdGhhdCB0aGUgcGxhY2Vob2xkZXIgaXMgc2hvd25cbiAgICAgIC8vIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgaWYgdGhlIGxpc3QgaXMgZW1wdHlcbiAgICAgIGlmIChwbGFjZWhvbGRlck5vZGUucGFyZW50Tm9kZSAhPSBsaXN0Tm9kZSkge1xuICAgICAgICBlbGVtZW50LmFwcGVuZChwbGFjZWhvbGRlcik7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBsaXN0Tm9kZSkge1xuICAgICAgICAvLyBUcnkgdG8gZmluZCB0aGUgbm9kZSBkaXJlY3QgZGlyZWN0bHkgYmVsb3cgdGhlIGxpc3Qgbm9kZS5cbiAgICAgICAgdmFyIGxpc3RJdGVtTm9kZSA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgd2hpbGUgKGxpc3RJdGVtTm9kZS5wYXJlbnROb2RlICE9PSBsaXN0Tm9kZSAmJiBsaXN0SXRlbU5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgICAgIGxpc3RJdGVtTm9kZSA9IGxpc3RJdGVtTm9kZS5wYXJlbnROb2RlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaXN0SXRlbU5vZGUucGFyZW50Tm9kZSA9PT0gbGlzdE5vZGUgJiYgbGlzdEl0ZW1Ob2RlICE9PSBwbGFjZWhvbGRlck5vZGUpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgbW91c2UgcG9pbnRlciBpcyBpbiB0aGUgdXBwZXIgaGFsZiBvZiB0aGUgY2hpbGQgZWxlbWVudCxcbiAgICAgICAgICAvLyB3ZSBwbGFjZSBpdCBiZWZvcmUgdGhlIGNoaWxkIGVsZW1lbnQsIG90aGVyd2lzZSBiZWxvdyBpdC5cbiAgICAgICAgICBpZiAoaXNNb3VzZUluRmlyc3RIYWxmKGV2ZW50LCBsaXN0SXRlbU5vZGUpKSB7XG4gICAgICAgICAgICBsaXN0Tm9kZS5pbnNlcnRCZWZvcmUocGxhY2Vob2xkZXJOb2RlLCBsaXN0SXRlbU5vZGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsaXN0Tm9kZS5pbnNlcnRCZWZvcmUocGxhY2Vob2xkZXJOb2RlLCBsaXN0SXRlbU5vZGUubmV4dFNpYmxpbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhpcyBicmFuY2ggaXMgcmVhY2hlZCB3aGVuIHdlIGFyZSBkcmFnZ2luZyBkaXJlY3RseSBvdmVyIHRoZSBsaXN0IGVsZW1lbnQuXG4gICAgICAgIC8vIFVzdWFsbHkgd2Ugd291bGRuJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBoZXJlLCBidXQgdGhlIElFIGRvZXMgbm90IGZpcmUgaXQnc1xuICAgICAgICAvLyBldmVudHMgZm9yIHRoZSBjaGlsZCBlbGVtZW50LCBvbmx5IGZvciB0aGUgbGlzdCBkaXJlY3RseS4gVGhlcmVmb3JlIHdlIHJlcGVhdFxuICAgICAgICAvLyB0aGUgcG9zaXRpb25pbmcgYWxnb3JpdGhtIGZvciBJRSBoZXJlLlxuICAgICAgICBpZiAoaXNNb3VzZUluRmlyc3RIYWxmKGV2ZW50LCBwbGFjZWhvbGRlck5vZGUsIHRydWUpKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIG1vdmUgdGhlIHBsYWNlaG9sZGVyIGVsZW1lbnQgb25lIHNwb3QgdG93YXJkcyB0aGUgdG9wLlxuICAgICAgICAgIC8vIE5vdGUgdGhhdCBkaXNwbGF5IG5vbmUgZWxlbWVudHMgd2lsbCBoYXZlIG9mZnNldFRvcCBhbmQgb2Zmc2V0SGVpZ2h0IHNldCB0b1xuICAgICAgICAgIC8vIHplcm8sIHRoZXJlZm9yZSB3ZSBuZWVkIGEgc3BlY2lhbCBjaGVjayBmb3IgdGhlbS5cbiAgICAgICAgICB3aGlsZSAocGxhY2Vob2xkZXJOb2RlLnByZXZpb3VzRWxlbWVudFNpYmxpbmcgJiYgKGlzTW91c2VJbkZpcnN0SGFsZihldmVudCwgcGxhY2Vob2xkZXJOb2RlLnByZXZpb3VzRWxlbWVudFNpYmxpbmcsIHRydWUpIHx8IHBsYWNlaG9sZGVyTm9kZS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLm9mZnNldEhlaWdodCA9PT0gMCkpIHtcbiAgICAgICAgICAgIGxpc3ROb2RlLmluc2VydEJlZm9yZShwbGFjZWhvbGRlck5vZGUsIHBsYWNlaG9sZGVyTm9kZS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIG1vdmUgdGhlIHBsYWNlaG9sZGVyIGVsZW1lbnQgb25lIHNwb3QgdG93YXJkcyB0aGUgYm90dG9tXG4gICAgICAgICAgd2hpbGUgKHBsYWNlaG9sZGVyTm9kZS5uZXh0RWxlbWVudFNpYmxpbmcgJiZcbiAgICAgICAgICAgICAgICFpc01vdXNlSW5GaXJzdEhhbGYoZXZlbnQsIHBsYWNlaG9sZGVyTm9kZS5uZXh0RWxlbWVudFNpYmxpbmcsIHRydWUpKSB7XG4gICAgICAgICAgICBsaXN0Tm9kZS5pbnNlcnRCZWZvcmUocGxhY2Vob2xkZXJOb2RlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyTm9kZS5uZXh0RWxlbWVudFNpYmxpbmcubmV4dEVsZW1lbnRTaWJsaW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBpbnZva2UgdGhlIGNhbGxiYWNrLCB3aGljaCBzdGlsbCBjYW4gZGlzYWxsb3cgdGhlIGRyb3AuXG4gICAgICAvLyBXZSBjYW4ndCBkbyB0aGlzIGVhcmxpZXIgYmVjYXVzZSB3ZSB3YW50IHRvIHBhc3MgdGhlIGluZGV4IG9mIHRoZSBwbGFjZWhvbGRlci5cbiAgICAgIGlmIChhdHRyLmRuZERyYWdvdmVyICYmICFpbnZva2VDYWxsYmFjayhhdHRyLmRuZERyYWdvdmVyLCBldmVudCkpIHtcbiAgICAgICAgcmV0dXJuIHN0b3BEcmFnb3ZlcigpO1xuICAgICAgfVxuICAgICAgZWxlbWVudC5hZGRDbGFzcygnZG5kRHJhZ292ZXInKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gdGhlIGVsZW1lbnQgaXMgZHJvcHBlZCwgd2UgdXNlIHRoZSBwb3NpdGlvbiBvZiB0aGUgcGxhY2Vob2xkZXIgZWxlbWVudCBhcyB0aGVcbiAgICAgKiBwb3NpdGlvbiB3aGVyZSB3ZSBpbnNlcnQgdGhlIHRyYW5zZmVycmVkIGRhdGEuIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBsaXN0IGhhcyBleGFjdGx5XG4gICAgICogb25lIGNoaWxkIGVsZW1lbnQgcGVyIGFycmF5IGVsZW1lbnQuXG4gICAgICovXG4gICAgZWxlbWVudC5vbignZHJvcCcsIChldmVudCkgPT4ge1xuICAgICAgZXZlbnQgPSBldmVudC5vcmlnaW5hbEV2ZW50IHx8IGV2ZW50O1xuICAgICAgaWYgKCFpc0Ryb3BBbGxvd2VkKGV2ZW50KSkgcmV0dXJuIHRydWU7XG4gICAgICAvLyBUaGUgZGVmYXVsdCBiZWhhdmlvciBpbiBGaXJlZm94IGlzIHRvIGludGVycHJldCB0aGUgZHJvcHBlZCBlbGVtZW50IGFzIFVSTCBhbmRcbiAgICAgIC8vIGZvcndhcmQgdG8gaXQuIFdlIHdhbnQgdG8gcHJldmVudCB0aGF0IGV2ZW4gaWYgb3VyIGRyb3AgaXMgYWJvcnRlZC5cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAvLyBVbnNlcmlhbGl6ZSB0aGUgZGF0YSB0aGF0IHdhcyBzZXJpYWxpemVkIGluIGRyYWdzdGFydC4gQWNjb3JkaW5nIHRvIHRoZSBIVE1MNSBzcGVjcyxcbiAgICAgIC8vIHRoZSBcIlRleHRcIiBkcmFnIHR5cGUgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGV4dC9wbGFpbiwgYnV0IElFIGRvZXMgbm90IGRvIHRoYXQuXG4gICAgICB2YXIgZGF0YSA9IGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCdUZXh0JykgfHwgZXZlbnQuZGF0YVRyYW5zZmVyLmdldERhdGEoJ3RleHQvcGxhaW4nKTtcbiAgICAgIHZhciB0cmFuc2ZlcnJlZE9iamVjdDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRyYW5zZmVycmVkT2JqZWN0ID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICByZXR1cm4gc3RvcERyYWdvdmVyKCk7XG4gICAgICB9XG4gICAgICAvLyBJbnZva2UgdGhlIGNhbGxiYWNrLCB3aGljaCBjYW4gdHJhbnNmb3JtIHRoZSB0cmFuc2ZlcnJlZE9iamVjdCBhbmQgZXZlbiBhYm9ydCB0aGUgZHJvcC5cbiAgICAgIGlmIChhdHRyLmRuZERyb3ApIHtcbiAgICAgICAgdHJhbnNmZXJyZWRPYmplY3QgPSBpbnZva2VDYWxsYmFjayhhdHRyLmRuZERyb3AsIGV2ZW50LCB0cmFuc2ZlcnJlZE9iamVjdCk7XG4gICAgICAgIGlmICghdHJhbnNmZXJyZWRPYmplY3QpIHtcbiAgICAgICAgICByZXR1cm4gc3RvcERyYWdvdmVyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFJldHJpZXZlIHRoZSBKU09OIGFycmF5IGFuZCBpbnNlcnQgdGhlIHRyYW5zZmVycmVkIG9iamVjdCBpbnRvIGl0LlxuICAgICAgdmFyIHRhcmdldEFycmF5ID0gc2NvcGUuJGV2YWwoYXR0ci5kbmRMaXN0KTtcbiAgICAgIHNjb3BlLiRhcHBseSgoKSA9PiB7XG4gICAgICAgIHRhcmdldEFycmF5LnNwbGljZShnZXRQbGFjZWhvbGRlckluZGV4KCksIDAsIHRyYW5zZmVycmVkT2JqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLy8gSW4gQ2hyb21lIG9uIFdpbmRvd3MgdGhlIGRyb3BFZmZlY3Qgd2lsbCBhbHdheXMgYmUgbm9uZS4uLlxuICAgICAgLy8gV2UgaGF2ZSB0byBkZXRlcm1pbmUgdGhlIGFjdHVhbCBlZmZlY3QgbWFudWFsbHkgZnJvbSB0aGUgYWxsb3dlZCBlZmZlY3RzXG4gICAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPT09ICdub25lJykge1xuICAgICAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPT09ICdjb3B5JyB8fFxuICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPT09ICdtb3ZlJykge1xuICAgICAgICAgIGRuZERyb3BFZmZlY3RXb3JrYXJvdW5kLmRyb3BFZmZlY3QgPSBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkbmREcm9wRWZmZWN0V29ya2Fyb3VuZC5kcm9wRWZmZWN0ID0gZXZlbnQuY3RybEtleSA/ICdjb3B5JyA6ICdtb3ZlJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG5kRHJvcEVmZmVjdFdvcmthcm91bmQuZHJvcEVmZmVjdCA9IGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0O1xuICAgICAgfVxuICAgICAgLy8gQ2xlYW4gdXBcbiAgICAgIHN0b3BEcmFnb3ZlcigpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBXZSBoYXZlIHRvIHJlbW92ZSB0aGUgcGxhY2Vob2xkZXIgd2hlbiB0aGUgZWxlbWVudCBpcyBubyBsb25nZXIgZHJhZ2dlZCBvdmVyIG91ciBsaXN0LiBUaGVcbiAgICAgKiBwcm9ibGVtIGlzIHRoYXQgdGhlIGRyYWdsZWF2ZSBldmVudCBpcyBub3Qgb25seSBmaXJlZCB3aGVuIHRoZSBlbGVtZW50IGxlYXZlcyBvdXIgbGlzdCxcbiAgICAgKiBidXQgYWxzbyB3aGVuIGl0IGxlYXZlcyBhIGNoaWxkIGVsZW1lbnQgLS0gc28gcHJhY3RpY2FsbHkgaXQncyBmaXJlZCBhbGwgdGhlIHRpbWUuIEFzIGFcbiAgICAgKiB3b3JrYXJvdW5kIHdlIHdhaXQgYSBmZXcgbWlsbGlzZWNvbmRzIGFuZCB0aGVuIGNoZWNrIGlmIHRoZSBkbmREcmFnb3ZlciBjbGFzcyB3YXMgYWRkZWRcbiAgICAgKiBhZ2Fpbi4gSWYgaXQgaXMgdGhlcmUsIGRyYWdvdmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBpbiB0aGUgbWVhbnRpbWUsIGkuZS4gdGhlIGVsZW1lbnRcbiAgICAgKiBpcyBzdGlsbCBkcmFnZ2luZyBvdmVyIHRoZSBsaXN0LiBJZiB5b3Uga25vdyBhIGJldHRlciB3YXkgb2YgZG9pbmcgdGhpcywgcGxlYXNlIHRlbGwgbWUhXG4gICAgICovXG4gICAgZWxlbWVudC5vbignZHJhZ2xlYXZlJywgKGV2ZW50KSA9PiB7XG4gICAgICBldmVudCA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQgfHwgZXZlbnQ7XG5cbiAgICAgIGVsZW1lbnQucmVtb3ZlQ2xhc3MoJ2RuZERyYWdvdmVyJyk7XG4gICAgICAkdGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICghZWxlbWVudC5oYXNDbGFzcygnZG5kRHJhZ292ZXInKSkge1xuICAgICAgICAgIHBsYWNlaG9sZGVyLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIG1vdXNlIHBvaW50ZXIgaXMgaW4gdGhlIGZpcnN0IGhhbGYgb2YgdGhlIGdpdmVuIHRhcmdldCBlbGVtZW50LlxuICAgICAqXG4gICAgICogSW4gQ2hyb21lIHdlIGNhbiBqdXN0IHVzZSBvZmZzZXRZLCBidXQgaW4gRmlyZWZveCB3ZSBoYXZlIHRvIHVzZSBsYXllclksIHdoaWNoIG9ubHlcbiAgICAgKiB3b3JrcyBpZiB0aGUgY2hpbGQgZWxlbWVudCBoYXMgcG9zaXRpb24gcmVsYXRpdmUuIEluIElFIHRoZSBldmVudHMgYXJlIG9ubHkgdHJpZ2dlcmVkXG4gICAgICogb24gdGhlIGxpc3ROb2RlIGluc3RlYWQgb2YgdGhlIGxpc3ROb2RlSXRlbSwgdGhlcmVmb3JlIHRoZSBtb3VzZSBwb3NpdGlvbnMgYXJlXG4gICAgICogcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBlbGVtZW50IG9mIHRhcmdldE5vZGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNNb3VzZUluRmlyc3RIYWxmKGV2ZW50LCB0YXJnZXROb2RlLCByZWxhdGl2ZVRvUGFyZW50KSB7XG4gICAgICB2YXIgbW91c2VQb2ludGVyID0gaG9yaXpvbnRhbCA/IChldmVudC5vZmZzZXRYIHx8IGV2ZW50LmxheWVyWClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKGV2ZW50Lm9mZnNldFkgfHwgZXZlbnQubGF5ZXJZKTtcbiAgICAgIHZhciB0YXJnZXRTaXplID0gaG9yaXpvbnRhbCA/IHRhcmdldE5vZGUub2Zmc2V0V2lkdGggOiB0YXJnZXROb2RlLm9mZnNldEhlaWdodDtcbiAgICAgIHZhciB0YXJnZXRQb3NpdGlvbiA9IGhvcml6b250YWwgPyB0YXJnZXROb2RlLm9mZnNldExlZnQgOiB0YXJnZXROb2RlLm9mZnNldFRvcDtcbiAgICAgIHRhcmdldFBvc2l0aW9uID0gcmVsYXRpdmVUb1BhcmVudCA/IHRhcmdldFBvc2l0aW9uIDogMDtcbiAgICAgIHJldHVybiBtb3VzZVBvaW50ZXIgPCB0YXJnZXRQb3NpdGlvbiArIHRhcmdldFNpemUgLyAyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIHVzZSB0aGUgcG9zaXRpb24gb2YgdGhlIHBsYWNlaG9sZGVyIG5vZGUgdG8gZGV0ZXJtaW5lIGF0IHdoaWNoIHBvc2l0aW9uIG9mIHRoZSBhcnJheSB0aGVcbiAgICAgKiBvYmplY3QgbmVlZHMgdG8gYmUgaW5zZXJ0ZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRQbGFjZWhvbGRlckluZGV4KCkge1xuICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwobGlzdE5vZGUuY2hpbGRyZW4sIHBsYWNlaG9sZGVyTm9kZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHZhcmlvdXMgY29uZGl0aW9ucyB0aGF0IG11c3QgYmUgZnVsZmlsbGVkIGZvciBhIGRyb3AgdG8gYmUgYWxsb3dlZFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRHJvcEFsbG93ZWQoZXZlbnQpIHtcbiAgICAgIC8vIERpc2FsbG93IGRyb3AgZnJvbSBleHRlcm5hbCBzb3VyY2UgdW5sZXNzIGl0J3MgYWxsb3dlZCBleHBsaWNpdGx5LlxuICAgICAgaWYgKCFkbmREcmFnVHlwZVdvcmthcm91bmQuaXNEcmFnZ2luZyAmJiAhZXh0ZXJuYWxTb3VyY2VzKSByZXR1cm4gZmFsc2U7XG4gICAgICAvLyBDaGVjayBtaW1ldHlwZS4gVXN1YWxseSB3ZSB3b3VsZCB1c2UgYSBjdXN0b20gZHJhZyB0eXBlIGluc3RlYWQgb2YgVGV4dCwgYnV0IElFIGRvZXNuJ3RcbiAgICAgIC8vIHN1cHBvcnQgdGhhdC5cbiAgICAgIGlmICghaGFzVGV4dE1pbWV0eXBlKGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcykpIHJldHVybiBmYWxzZTtcbiAgICAgIC8vIE5vdyBjaGVjayB0aGUgZG5kLWFsbG93ZWQtdHlwZXMgYWdhaW5zdCB0aGUgdHlwZSBvZiB0aGUgaW5jb21pbmcgZWxlbWVudC4gRm9yIGRyb3BzIGZyb21cbiAgICAgIC8vIGV4dGVybmFsIHNvdXJjZXMgd2UgZG9uJ3Qga25vdyB0aGUgdHlwZSwgc28gaXQgd2lsbCBuZWVkIHRvIGJlIGNoZWNrZWQgdmlhIGRuZC1kcm9wLlxuICAgICAgaWYgKGF0dHIuZG5kQWxsb3dlZFR5cGVzICYmIGRuZERyYWdUeXBlV29ya2Fyb3VuZC5pc0RyYWdnaW5nKSB7XG4gICAgICAgIHZhciBhbGxvd2VkID0gc2NvcGUuJGV2YWwoYXR0ci5kbmRBbGxvd2VkVHlwZXMpO1xuICAgICAgICBpZiAoYW5ndWxhci5pc0FycmF5KGFsbG93ZWQpICYmIGFsbG93ZWQuaW5kZXhPZihkbmREcmFnVHlwZVdvcmthcm91bmQuZHJhZ1R5cGUpID09PSAtMSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQ2hlY2sgd2hldGhlciBkcm9waW5nIGlzIGRpc2FibGVkIGNvbXBsZXRlbHlcbiAgICAgIGlmIChhdHRyLmRuZERpc2FibGVJZiAmJiBzY29wZS4kZXZhbChhdHRyLmRuZERpc2FibGVJZikpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNtYWxsIGhlbHBlciBmdW5jdGlvbiB0aGF0IGNsZWFucyB1cCBpZiB3ZSBhYm9ydGVkIGEgZHJvcC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdG9wRHJhZ292ZXIoKSB7XG4gICAgICBwbGFjZWhvbGRlci5yZW1vdmUoKTtcbiAgICAgIGVsZW1lbnQucmVtb3ZlQ2xhc3MoJ2RuZERyYWdvdmVyJyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VzIGEgY2FsbGJhY2sgd2l0aCBzb21lIGludGVyZXN0aW5nIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgdGhlIGNhbGxiYWNrcyByZXR1cm4gdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW52b2tlQ2FsbGJhY2soZXhwcmVzc2lvbiwgZXZlbnQsIGl0ZW0pIHtcbiAgICAgIHJldHVybiAkcGFyc2UoZXhwcmVzc2lvbikoc2NvcGUsIHtcbiAgICAgICAgZXZlbnQgICA6IGV2ZW50LFxuICAgICAgICBpbmRleCAgIDogZ2V0UGxhY2Vob2xkZXJJbmRleCgpLFxuICAgICAgICBpdGVtICAgIDogaXRlbSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGV4dGVybmFsOiAhZG5kRHJhZ1R5cGVXb3JrYXJvdW5kLmlzRHJhZ2dpbmcsXG4gICAgICAgIHR5cGUgICAgOiBkbmREcmFnVHlwZVdvcmthcm91bmQuaXNEcmFnZ2luZyA/IGRuZERyYWdUeXBlV29ya2Fyb3VuZC5kcmFnVHlwZSA6IHVuZGVmaW5lZFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGRhdGFUcmFuc2ZlciBvYmplY3QgY29udGFpbnMgYSBkcmFnIHR5cGUgdGhhdCB3ZSBjYW4gaGFuZGxlLiBJbiBvbGQgdmVyc2lvbnNcbiAgICAgKiBvZiBJRSB0aGUgdHlwZXMgY29sbGVjdGlvbiB3aWxsIG5vdCBldmVuIGJlIHRoZXJlLCBzbyB3ZSBqdXN0IGFzc3VtZSBhIGRyb3AgaXMgcG9zc2libGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzVGV4dE1pbWV0eXBlKHR5cGVzKSB7XG4gICAgICBpZiAoIXR5cGVzKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHR5cGVzW2ldID09PSAnVGV4dCcgfHwgdHlwZXNbaV0gPT09ICd0ZXh0L3BsYWluJykgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSAgICBcbiAgfVxufVxuXG5jb25zdCBUT19JTkpFQ1QgPSBbXG4gICckcGFyc2UnLCBcbiAgJyR0aW1lb3V0JywgXG4gICdkbmREcm9wRWZmZWN0V29ya2Fyb3VuZCcsIFxuICAnZG5kRHJhZ1R5cGVXb3JrYXJvdW5kJ1xuXTtcblxuZG5kTGlzdC4kaW5qZWN0ID0gVE9fSU5KRUNUO1xuXG5leHBvcnQgZGVmYXVsdCBkbmRMaXN0O1xuXG5leHBvcnQge1xuICBETkRMSVNUX0RJUkVDVElWRVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9jb21tb24vZHJhZ0FuZERyb3BMaXN0L2RyYWdBbmREcm9wTGlzdC5kbmRsaXN0LmRpcmVjdGl2ZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 74 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar DNDDRAGGABLE_DIRECTIVE = 'dndDraggable';\n\nfunction dndDraggable($parse, $timeout, dndDropEffectWorkaround, dndDragTypeWorkaround) {\n var directive = {\n link: linkFct\n };\n return directive;\n\n function linkFct(scope, element, attr) {\n var _this = this;\n\n // Set the HTML5 draggable attribute on the element\n element.attr('draggable', 'true');\n\n // If the dnd-disable-if attribute is set, we have to watch that\n if (attr.dndDisableIf) {\n scope.$watch(attr.dndDisableIf, function (disabled) {\n return element.attr('draggable', !disabled);\n });\n }\n\n /**\n * When the drag operation is started we have to prepare the dataTransfer object,\n * which is the primary way we communicate with the target element\n */\n element.on('dragstart', function (event) {\n event = event.originalEvent || event;\n // Serialize the data associated with this element. IE only supports the Text drag type\n event.dataTransfer.setData('Text', angular.toJson(scope.$eval(attr.dndDraggable)));\n // Only allow actions specified in dnd-effect-allowed attribute\n event.dataTransfer.effectAllowed = attr.dndEffectAllowed || 'move';\n // Add CSS classes. See documentation above\n element.addClass('dndDragging');\n $timeout(function () {\n element.addClass('dndDraggingSource');\n }, 0);\n // Workarounds for stupid browsers, see description below\n dndDropEffectWorkaround.dropEffect = 'none';\n dndDragTypeWorkaround.isDragging = true;\n // Save type of item in global state. Usually, this would go into the dataTransfer\n // typename, but we have to use \"Text\" there to support IE\n dndDragTypeWorkaround.dragType = attr.dndType ? scope.$eval(attr.dndType) : undefined;\n // Invoke callback\n $parse(attr.dndDragstart)(scope, { event: event });\n event.stopPropagation();\n });\n\n /**\n * The dragend event is triggered when the element was dropped or when the drag\n * operation was aborted (e.g. hit escape button). Depending on the executed action\n * we will invoke the callbacks specified with the dnd-moved or dnd-copied attribute.\n */\n element.on('dragend', function (event) {\n event = event.originalEvent || event;\n\n // Invoke callbacks. Usually we would use event.dataTransfer.dropEffect to determine\n // the used effect, but Chrome has not implemented that field correctly. On Windows\n // it always sets it to 'none', while Chrome on Linux sometimes sets it to something\n // else when it's supposed to send 'none' (drag operation aborted).\n var dropEffect = dndDropEffectWorkaround.dropEffect;\n scope.$apply(function () {\n switch (dropEffect) {\n case 'move':\n $parse(attr.dndMoved)(scope, { event: event });\n break;\n\n case 'copy':\n $parse(attr.dndCopied)(scope, { event: event });\n break;\n }\n });\n\n // Clean up\n element.removeClass('dndDragging');\n element.removeClass('dndDraggingSource');\n dndDragTypeWorkaround.isDragging = false;\n event.stopPropagation();\n });\n\n /**\n * When the element is clicked we invoke the callback function\n * specified with the dnd-selected attribute.\n */\n element.on('click', function (event) {\n event = event.originalEvent || event;\n scope.$apply(function () {\n return $parse(attr.dndSelected)(scope, { event: event });\n });\n event.stopPropagation();\n });\n\n /**\n * Workaround to make element draggable in IE9\n */\n element.on('selectstart', function () {\n if (_this.dragDrop) _this.dragDrop();\n return false;\n });\n }\n}\n\nvar TO_INJECT = ['$parse', '$timeout', 'dndDropEffectWorkaround', 'dndDragTypeWorkaround'];\n\ndndDraggable.$inject = TO_INJECT;\n\nexports.default = dndDraggable;\nexports.DNDDRAGGABLE_DIRECTIVE = DNDDRAGGABLE_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29tbW9uL2RyYWdBbmREcm9wTGlzdC9kcmFnQW5kRHJvcExpc3QuZG5kRHJhZ2dhYmxlLmRpcmVjdGl2ZS5qcz82OTliIl0sIm5hbWVzIjpbIkRORERSQUdHQUJMRV9ESVJFQ1RJVkUiLCJkbmREcmFnZ2FibGUiLCIkcGFyc2UiLCIkdGltZW91dCIsImRuZERyb3BFZmZlY3RXb3JrYXJvdW5kIiwiZG5kRHJhZ1R5cGVXb3JrYXJvdW5kIiwiZGlyZWN0aXZlIiwibGluayIsImxpbmtGY3QiLCJzY29wZSIsImVsZW1lbnQiLCJhdHRyIiwiZG5kRGlzYWJsZUlmIiwiJHdhdGNoIiwiZGlzYWJsZWQiLCJvbiIsImV2ZW50Iiwib3JpZ2luYWxFdmVudCIsImRhdGFUcmFuc2ZlciIsInNldERhdGEiLCJhbmd1bGFyIiwidG9Kc29uIiwiJGV2YWwiLCJlZmZlY3RBbGxvd2VkIiwiZG5kRWZmZWN0QWxsb3dlZCIsImFkZENsYXNzIiwiZHJvcEVmZmVjdCIsImlzRHJhZ2dpbmciLCJkcmFnVHlwZSIsImRuZFR5cGUiLCJ1bmRlZmluZWQiLCJkbmREcmFnc3RhcnQiLCJzdG9wUHJvcGFnYXRpb24iLCIkYXBwbHkiLCJkbmRNb3ZlZCIsImRuZENvcGllZCIsInJlbW92ZUNsYXNzIiwiZG5kU2VsZWN0ZWQiLCJkcmFnRHJvcCIsIlRPX0lOSkVDVCIsIiRpbmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBTUEseUJBQXlCLGNBQS9COztBQUVBLFNBQVNDLFlBQVQsQ0FBc0JDLE1BQXRCLEVBQThCQyxRQUE5QixFQUF3Q0MsdUJBQXhDLEVBQWlFQyxxQkFBakUsRUFBd0Y7QUFDdEYsTUFBSUMsWUFBWTtBQUNkQyxVQUFPQztBQURPLEdBQWhCO0FBR0EsU0FBT0YsU0FBUDs7QUFFQSxXQUFTRSxPQUFULENBQWlCQyxLQUFqQixFQUF3QkMsT0FBeEIsRUFBaUNDLElBQWpDLEVBQXVDO0FB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Z0IsRUFJaEIsdUJBSmdCLENBQWxCOztBQVFBdEMsYUFBYXVDLE9BQWIsR0FBdUJELFNBQXZCOztrQkFFZXRDLFk7UUFHYkQsc0IsR0FBQUEsc0IiLCJmaWxlIjoiNzQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBETkREUkFHR0FCTEVfRElSRUNUSVZFID0gJ2RuZERyYWdnYWJsZSc7XG5cbmZ1bmN0aW9uIGRuZERyYWdnYWJsZSgkcGFyc2UsICR0aW1lb3V0LCBkbmREcm9wRWZmZWN0V29ya2Fyb3VuZCwgZG5kRHJhZ1R5cGVXb3JrYXJvdW5kKSB7XG4gIGxldCBkaXJlY3RpdmUgPSB7XG4gICAgbGluayA6IGxpbmtGY3RcbiAgfTtcbiAgcmV0dXJuIGRpcmVjdGl2ZTtcblxuICBmdW5jdGlvbiBsaW5rRmN0KHNjb3BlLCBlbGVtZW50LCBhdHRyKSB7XG4gICAgLy8gU2V0IHRoZSBIVE1MNSBkcmFnZ2FibGUgYXR0cmlidXRlIG9uIHRoZSBlbGVtZW50XG4gICAgZWxlbWVudC5hdHRyKCdkcmFnZ2FibGUnLCAndHJ1ZScpO1xuXG4gICAgLy8gSWYgdGhlIGRuZC1kaXNhYmxlLWlmIGF0dHJpYnV0ZSBpcyBzZXQsIHdlIGhhdmUgdG8gd2F0Y2ggdGhhdFxuICAgIGlmIChhdHRyLmRuZERpc2FibGVJZikge1xuICAgICAgc2NvcGUuJHdhdGNoKGF0dHIuZG5kRGlzYWJsZUlmLCAoZGlzYWJsZWQpID0+IGVsZW1lbnQuYXR0cignZHJhZ2dhYmxlJywgIWRpc2FibGVkKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hlbiB0aGUgZHJhZyBvcGVyYXRpb24gaXMgc3RhcnRlZCB3ZSBoYXZlIHRvIHByZXBhcmUgdGhlIGRhdGFUcmFuc2ZlciBvYmplY3QsXG4gICAgICogd2hpY2ggaXMgdGhlIHByaW1hcnkgd2F5IHdlIGNvbW11bmljYXRlIHdpdGggdGhlIHRhcmdldCBlbGVtZW50XG4gICAgICovXG4gICAgZWxlbWVudC5vbignZHJhZ3N0YXJ0JywgKGV2ZW50KSA9PiB7XG4gICAgICBldmVudCA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQgfHwgZXZlbnQ7XG4gICAgICAvLyBTZXJpYWxpemUgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZWxlbWVudC4gSUUgb25seSBzdXBwb3J0cyB0aGUgVGV4dCBkcmFnIHR5cGVcbiAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKCdUZXh0JywgYW5ndWxhci50b0pzb24oc2NvcGUuJGV2YWwoYXR0ci5kbmREcmFnZ2FibGUpKSk7XG4gICAgICAvLyBPbmx5IGFsbG93IGFjdGlvbnMgc3BlY2lmaWVkIGluIGRuZC1lZmZlY3QtYWxsb3dlZCBhdHRyaWJ1dGVcbiAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkICAgID0gYXR0ci5kbmRFZmZlY3RBbGxvd2VkIHx8ICdtb3ZlJztcbiAgICAgIC8vIEFkZCBDU1MgY2xhc3Nlcy4gU2VlIGRvY3VtZW50YXRpb24gYWJvdmVcbiAgICAgIGVsZW1lbnQuYWRkQ2xhc3MoJ2RuZERyYWdnaW5nJyk7XG4gICAgICAkdGltZW91dCgoKSA9PiB7IGVsZW1lbnQuYWRkQ2xhc3MoJ2RuZERyYWdnaW5nU291cmNlJyk7IH0sIDApO1xuICAgICAgLy8gV29ya2Fyb3VuZHMgZm9yIHN0dXBpZCBicm93c2Vycywgc2VlIGRlc2NyaXB0aW9uIGJlbG93XG4gICAgICBkbmREcm9wRWZmZWN0V29ya2Fyb3VuZC5kcm9wRWZmZWN0ICA9ICdub25lJztcbiAgICAgIGRuZERyYWdUeXBlV29ya2Fyb3VuZC5pc0RyYWdnaW5nICAgID0gdHJ1ZTtcbiAgICAgIC8vIFNhdmUgdHlwZSBvZiBpdGVtIGluIGdsb2JhbCBzdGF0ZS4gVXN1YWxseSwgdGhpcyB3b3VsZCBnbyBpbnRvIHRoZSBkYXRhVHJhbnNmZXJcbiAgICAgIC8vIHR5cGVuYW1lLCBidXQgd2UgaGF2ZSB0byB1c2UgXCJUZXh0XCIgdGhlcmUgdG8gc3VwcG9ydCBJRVxuICAgICAgZG5kRHJhZ1R5cGVXb3JrYXJvdW5kLmRyYWdUeXBlICAgICAgPSBhdHRyLmRuZFR5cGUgPyBzY29wZS4kZXZhbChhdHRyLmRuZFR5cGUpIDogdW5kZWZpbmVkO1xuICAgICAgLy8gSW52b2tlIGNhbGxiYWNrXG4gICAgICAkcGFyc2UoYXR0ci5kbmREcmFnc3RhcnQpKHNjb3BlLCB7ZXZlbnQ6IGV2ZW50fSk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBkcmFnZW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBlbGVtZW50IHdhcyBkcm9wcGVkIG9yIHdoZW4gdGhlIGRyYWdcbiAgICAgKiBvcGVyYXRpb24gd2FzIGFib3J0ZWQgKGUuZy4gaGl0IGVzY2FwZSBidXR0b24pLiBEZXBlbmRpbmcgb24gdGhlIGV4ZWN1dGVkIGFjdGlvblxuICAgICAqIHdlIHdpbGwgaW52b2tlIHRoZSBjYWxsYmFja3Mgc3BlY2lmaWVkIHdpdGggdGhlIGRuZC1tb3ZlZCBvciBkbmQtY29waWVkIGF0dHJpYnV0ZS5cbiAgICAgKi9cbiAgICBlbGVtZW50Lm9uKCdkcmFnZW5kJywgKGV2ZW50KSA9PiB7XG4gICAgICBldmVudCA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQgfHwgZXZlbnQ7XG5cbiAgICAgIC8vIEludm9rZSBjYWxsYmFja3MuIFVzdWFsbHkgd2Ugd291bGQgdXNlIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0IHRvIGRldGVybWluZVxuICAgICAgLy8gdGhlIHVzZWQgZWZmZWN0LCBidXQgQ2hyb21lIGhhcyBub3QgaW1wbGVtZW50ZWQgdGhhdCBmaWVsZCBjb3JyZWN0bHkuIE9uIFdpbmRvd3NcbiAgICAgIC8vIGl0IGFsd2F5cyBzZXRzIGl0IHRvICdub25lJywgd2hpbGUgQ2hyb21lIG9uIExpbnV4IHNvbWV0aW1lcyBzZXRzIGl0IHRvIHNvbWV0aGluZ1xuICAgICAgLy8gZWxzZSB3aGVuIGl0J3Mgc3VwcG9zZWQgdG8gc2VuZCAnbm9uZScgKGRyYWcgb3BlcmF0aW9uIGFib3J0ZWQpLlxuICAgICAgdmFyIGRyb3BFZmZlY3QgPSBkbmREcm9wRWZmZWN0V29ya2Fyb3VuZC5kcm9wRWZmZWN0O1xuICAgICAgc2NvcGUuJGFwcGx5KCgpID0+IHtcbiAgICAgICAgc3dpdGNoIChkcm9wRWZmZWN0KSB7XG4gICAgICAgIGNhc2UgJ21vdmUnOlxuICAgICAgICAgICRwYXJzZShhdHRyLmRuZE1vdmVkKShzY29wZSwge2V2ZW50OiBldmVudH0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NvcHknOlxuICAgICAgICAgICRwYXJzZShhdHRyLmRuZENvcGllZCkoc2NvcGUsIHtldmVudDogZXZlbnR9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIENsZWFuIHVwXG4gICAgICBlbGVtZW50LnJlbW92ZUNsYXNzKCdkbmREcmFnZ2luZycpO1xuICAgICAgZWxlbWVudC5yZW1vdmVDbGFzcygnZG5kRHJhZ2dpbmdTb3VyY2UnKTtcbiAgICAgIGRuZERyYWdUeXBlV29ya2Fyb3VuZC5pc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gdGhlIGVsZW1lbnQgaXMgY2xpY2tlZCB3ZSBpbnZva2UgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uXG4gICAgICogc3BlY2lmaWVkIHdpdGggdGhlIGRuZC1zZWxlY3RlZCBhdHRyaWJ1dGUuXG4gICAgICovXG4gICAgZWxlbWVudC5vbignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgIGV2ZW50ID0gZXZlbnQub3JpZ2luYWxFdmVudCB8fCBldmVudDtcbiAgICAgIHNjb3BlLiRhcHBseSgoKSA9PiAkcGFyc2UoYXR0ci5kbmRTZWxlY3RlZCkoc2NvcGUsIHtldmVudDogZXZlbnR9KSk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFdvcmthcm91bmQgdG8gbWFrZSBlbGVtZW50IGRyYWdnYWJsZSBpbiBJRTlcbiAgICAgKi9cbiAgICBlbGVtZW50Lm9uKCdzZWxlY3RzdGFydCcsICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRyYWdEcm9wKSB0aGlzLmRyYWdEcm9wKCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cbn1cblxuXG5jb25zdCBUT19JTkpFQ1QgPSBbXG4gICckcGFyc2UnLCBcbiAgJyR0aW1lb3V0JywgXG4gICdkbmREcm9wRWZmZWN0V29ya2Fyb3VuZCcsIFxuICAnZG5kRHJhZ1R5cGVXb3JrYXJvdW5kJ1xuXTtcblxuXG5kbmREcmFnZ2FibGUuJGluamVjdCA9IFRPX0lOSkVDVDtcblxuZXhwb3J0IGRlZmF1bHQgZG5kRHJhZ2dhYmxlO1xuXG5leHBvcnQge1xuICBETkREUkFHR0FCTEVfRElSRUNUSVZFXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2NvbW1vbi9kcmFnQW5kRHJvcExpc3QvZHJhZ0FuZERyb3BMaXN0LmRuZERyYWdnYWJsZS5kaXJlY3RpdmUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 75 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _pageslide = __webpack_require__(76);\n\nvar _pageslide2 = _interopRequireDefault(_pageslide);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PAGE_SLIDE_MODULE = 'pageslide.module';\n\nexports.default = angular.module(PAGE_SLIDE_MODULE, []).directive(_pageslide.PAGE_SLIDE_DIRECTIVE, _pageslide2.default);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29tbW9uL3BhZ2VzbGlkZS9wYWdlc2xpZGUubW9kdWxlLmpzPzQ0NzciXSwibmFtZXMiOlsiUEFHRV9TTElERV9NT0RVTEUiLCJhbmd1bGFyIiwibW9kdWxlIiwiZGlyZWN0aXZlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7Ozs7O0FBS0EsSUFBTUEsb0JBQW9CLGtCQUExQjs7a0JBRWVDLFFBQ0VDLE1BREYsQ0FDU0YsaUJBRFQsRUFDNEIsRUFENUIsRUFFRUcsU0FGRixzRCIsImZpbGUiOiI3NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYWdlc2xpZGUsIHtcbiAgUEFHRV9TTElERV9ESVJFQ1RJVkVcbn0gZnJvbSAnLi9wYWdlc2xpZGUuZGlyZWN0aXZlJztcblxuXG5jb25zdCBQQUdFX1NMSURFX01PRFVMRSA9ICdwYWdlc2xpZGUubW9kdWxlJztcblxuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuICAgICAgICAgICAgICAgIC5tb2R1bGUoUEFHRV9TTElERV9NT0RVTEUsIFtdKVxuICAgICAgICAgICAgICAgIC5kaXJlY3RpdmUoUEFHRV9TTElERV9ESVJFQ1RJVkUsIHBhZ2VzbGlkZSk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29tbW9uL3BhZ2VzbGlkZS9wYWdlc2xpZGUubW9kdWxlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 76 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar PAGE_SLIDE_DIRECTIVE = 'pageslide';\n\nfunction pageslide() {\n var directive = {\n restrict: 'EAC',\n transclude: false,\n scope: {\n psOpen: '=?',\n psAutoClose: '=?',\n psSide: '@',\n psSpeed: '@',\n psClass: '@',\n psSize: '@',\n psSqueeze: '@',\n psCloak: '@',\n psPush: '@',\n psContainer: '@'\n },\n link: linkFct\n };\n return directive;\n\n function linkFct($scope, el, attrs) {\n /* Inspect */\n //console.log($scope);\n //console.log(el);\n //console.log(attrs);\n\n /* Parameters */\n var param = {};\n\n param.side = $scope.psSide || 'right';\n param.speed = $scope.psSpeed || '0.5';\n param.size = $scope.psSize || '300px';\n param.zindex = 1000; // Override with custom CSS\n param.className = $scope.psClass || 'ng-pageslide';\n param.cloak = $scope.psCloak && $scope.psCloak.toLowerCase() == 'false' ? false : true;\n param.squeeze = Boolean($scope.psSqueeze) || false;\n param.push = Boolean($scope.psPush) || false;\n param.container = $scope.psContainer || false;\n\n // Apply Class\n el.addClass(param.className);\n\n /* DOM manipulation */\n var content = null;\n var slider = null;\n var body = param.container ? document.getElementById(param.container) : document.body;\n\n slider = el[0];\n\n // Check for div tag\n if (slider.tagName.toLowerCase() !== 'div' && slider.tagName.toLowerCase() !== 'pageslide') throw new Error('Pageslide can only be applied to
or
elements');\n\n // Check for content\n if (slider.children.length === 0) throw new Error('You have to content inside the ');\n\n content = angular.element(slider.children);\n\n /* Append */\n body.appendChild(slider);\n\n /* Style setup */\n slider.style.zIndex = param.zindex;\n slider.style.position = param.container !== false ? 'absolute' : 'fixed';\n slider.style.width = 0;\n slider.style.height = 0;\n slider.style.overflow = 'hidden';\n slider.style.transitionDuration = param.speed + 's';\n slider.style.webkitTransitionDuration = param.speed + 's';\n slider.style.transitionProperty = 'width, height';\n if (param.squeeze) {\n body.style.position = 'absolute';\n body.style.transitionDuration = param.speed + 's';\n body.style.webkitTransitionDuration = param.speed + 's';\n body.style.transitionProperty = 'top, bottom, left, right';\n }\n\n switch (param.side) {\n case 'right':\n slider.style.height = attrs.psCustomHeight || '100%';\n slider.style.top = attrs.psCustomTop || '0px';\n slider.style.bottom = attrs.psCustomBottom || '0px';\n slider.style.right = attrs.psCustomRight || '0px';\n break;\n case 'left':\n slider.style.height = attrs.psCustomHeight || '100%';\n slider.style.top = attrs.psCustomTop || '0px';\n slider.style.bottom = attrs.psCustomBottom || '0px';\n slider.style.left = attrs.psCustomLeft || '0px';\n break;\n case 'top':\n slider.style.width = attrs.psCustomWidth || '100%';\n slider.style.left = attrs.psCustomLeft || '0px';\n slider.style.top = attrs.psCustomTop || '0px';\n slider.style.right = attrs.psCustomRight || '0px';\n break;\n case 'bottom':\n slider.style.width = attrs.psCustomWidth || '100%';\n slider.style.bottom = attrs.psCustomBottom || '0px';\n slider.style.left = attrs.psCustomLeft || '0px';\n slider.style.right = attrs.psCustomRight || '0px';\n break;\n }\n\n /* Closed */\n function psClose(slider, param) {\n if (slider && slider.style.width !== 0 && slider.style.width !== 0) {\n if (param.cloak) content.css('display', 'none');\n switch (param.side) {\n case 'right':\n slider.style.width = '0px';\n if (param.squeeze) body.style.right = '0px';\n if (param.push) {\n body.style.right = '0px';\n body.style.left = '0px';\n }\n break;\n case 'left':\n slider.style.width = '0px';\n if (param.squeeze) body.style.left = '0px';\n if (param.push) {\n body.style.left = '0px';\n body.style.right = '0px';\n }\n break;\n case 'top':\n slider.style.height = '0px';\n if (param.squeeze) body.style.top = '0px';\n if (param.push) {\n body.style.top = '0px';\n body.style.bottom = '0px';\n }\n break;\n case 'bottom':\n slider.style.height = '0px';\n if (param.squeeze) body.style.bottom = '0px';\n if (param.push) {\n body.style.bottom = '0px';\n body.style.top = '0px';\n }\n break;\n }\n }\n $scope.psOpen = false;\n }\n\n /* Open */\n function psOpen(slider, param) {\n if (slider.style.width !== 0 && slider.style.width !== 0) {\n switch (param.side) {\n case 'right':\n slider.style.width = param.size;\n if (param.squeeze) body.style.right = param.size;\n if (param.push) {\n body.style.right = param.size;\n body.style.left = '-' + param.size;\n }\n break;\n case 'left':\n slider.style.width = param.size;\n if (param.squeeze) body.style.left = param.size;\n if (param.push) {\n body.style.left = param.size;\n body.style.right = '-' + param.size;\n }\n break;\n case 'top':\n slider.style.height = param.size;\n if (param.squeeze) body.style.top = param.size;\n if (param.push) {\n body.style.top = param.size;\n body.style.bottom = '-' + param.size;\n }\n break;\n case 'bottom':\n slider.style.height = param.size;\n if (param.squeeze) body.style.bottom = param.size;\n if (param.push) {\n body.style.bottom = param.size;\n body.style.top = '-' + param.size;\n }\n break;\n }\n setTimeout(function () {\n if (param.cloak) content.css('display', 'block');\n }, param.speed * 1000);\n }\n }\n\n // function isFunction(functionToCheck) {\n // var getType = {};\n // return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n // }\n\n /*\n * Watchers\n * */\n\n $scope.$watch('psOpen', function (value) {\n /* eslint no-extra-boolean-cast:0 */\n if (!!value) {\n // Open\n psOpen(slider, param);\n } else {\n // Close\n psClose(slider, param);\n }\n });\n\n /*\n * Events\n * */\n\n $scope.$on('$destroy', function () {\n return body.removeChild(slider);\n });\n\n if ($scope.psAutoClose) {\n $scope.$on('$locationChangeStart', function () {\n return psClose(slider, param);\n });\n $scope.$on('$stateChangeStart', function () {\n return psClose(slider, param);\n });\n }\n }\n}\n\npageslide.$inject = [];\n\nexports.default = pageslide;\nexports.PAGE_SLIDE_DIRECTIVE = PAGE_SLIDE_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29tbW9uL3BhZ2VzbGlkZS9wYWdlc2xpZGUuZGlyZWN0aXZlLmpzP2U0ZjAiXSwibmFtZXMiOlsiUEFHRV9TTElERV9ESVJFQ1RJVkUiLCJwYWdlc2xpZGUiLCJkaXJlY3RpdmUiLCJyZXN0cmljdCIsInRyYW5zY2x1ZGUiLCJzY29wZSIsInBzT3BlbiIsInBzQXV0b0Nsb3NlIiwicHNTaWRlIiwicHNTcGVlZCIsInBzQ2xhc3MiLCJwc1NpemUiLCJwc1NxdWVlemUiLCJwc0Nsb2FrIiwicHNQdXNoIiwicHNDb250YWluZXIiLCJsaW5rIiwibGlua0ZjdCIsIiRzY29wZSIsImVsIiwiYXR0cnMiLCJwYXJhbSIsInNpZGUiLCJzcGVlZCIsInNpemUiLCJ6aW5kZXgiLCJjbGFzc05hbWUiLCJjbG9hayIsInRvTG93ZXJDYXNlIiwic3F1ZWV6ZSIsIkJvb2xlYW4iLCJwdXNoIiwiY29udGFpbmVyIiwiYWRkQ2xhc3MiLCJjb250ZW50Iiwic2xpZGVyIiwiYm9keSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ0YWdOYW1lIiwiRXJyb3IiLCJjaGlsZHJlbiIsImxlbmd0aCIsImFuZ3VsYXIiLCJlbGVtZW50IiwiYXBwZW5kQ2hpbGQiLCJzdHlsZSIsInpJbmRleCIsInBvc2l0aW9uIiwid2lkdGgiLCJoZWlnaHQiLCJvdmVyZmxvdyIsInRyYW5zaXRpb25EdXJhdGlvbiIsIndlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiIsInRyYW5zaXRpb25Qcm9wZXJ0eSIsInBzQ3VzdG9tSGVpZ2h0IiwidG9wIiwicHNDdXN0b21Ub3AiLCJib3R0b20iLCJwc0N1c3RvbUJvdHRvbSIsInJpZ2h0IiwicHNDdXN0b21SaWdodCIsImxlZnQiLCJwc0N1c3RvbUxlZnQiLCJwc0N1c3RvbVdpZHRoIiwicHNDbG9zZSIsImNzcyIsInNldFRpbWVvdXQiLCIkd2F0Y2giLCJ2YWx1ZSIsIiRvbiIs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LGVBQU1MLFFBQVE5QixNQUFSLEVBQWdCZCxLQUFoQixDQUFOO0FBQUEsT0FBbkM7QUFDQUgsYUFBT29ELEdBQVAsQ0FBVyxtQkFBWCxFQUFnQztBQUFBLGVBQU1MLFFBQVE5QixNQUFSLEVBQWdCZCxLQUFoQixDQUFOO0FBQUEsT0FBaEM7QUFDRDtBQUNGO0FBRUY7O0FBRURwQixVQUFVdUUsT0FBVixHQUFvQixFQUFwQjs7a0JBRWV2RSxTO1FBR2JELG9CLEdBQUFBLG9CIiwiZmlsZSI6Ijc2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgUEFHRV9TTElERV9ESVJFQ1RJVkUgPSAncGFnZXNsaWRlJztcblxuZnVuY3Rpb24gcGFnZXNsaWRlKCkge1xuICBsZXQgZGlyZWN0aXZlID0ge1xuICAgIHJlc3RyaWN0ICAgIDogJ0VBQycsXG4gICAgdHJhbnNjbHVkZSAgOiBmYWxzZSxcbiAgICBzY29wZSA6IHtcbiAgICAgICAgcHNPcGVuICAgICAgOiAnPT8nLFxuICAgICAgICBwc0F1dG9DbG9zZSA6ICc9PycsXG4gICAgICAgIHBzU2lkZSAgICAgIDogJ0AnLFxuICAgICAgICBwc1NwZWVkICAgICA6ICdAJyxcbiAgICAgICAgcHNDbGFzcyAgICAgOiAnQCcsXG4gICAgICAgIHBzU2l6ZSAgICAgIDogJ0AnLFxuICAgICAgICBwc1NxdWVlemUgICA6ICdAJyxcbiAgICAgICAgcHNDbG9hayAgICAgOiAnQCcsXG4gICAgICAgIHBzUHVzaCAgICAgIDogJ0AnLFxuICAgICAgICBwc0NvbnRhaW5lciA6ICdAJ1xuICAgIH0sXG4gICAgbGluayA6IGxpbmtGY3RcbiAgfTtcbiAgcmV0dXJuIGRpcmVjdGl2ZTtcblxuICBmdW5jdGlvbiBsaW5rRmN0KCRzY29wZSwgZWwsIGF0dHJzKSB7XG4gICAgLyogSW5zcGVjdCAqL1xuICAgIC8vY29uc29sZS5sb2coJHNjb3BlKTtcbiAgICAvL2NvbnNvbGUubG9nKGVsKTtcbiAgICAvL2NvbnNvbGUubG9nKGF0dHJzKTtcblxuICAgIC8qIFBhcmFtZXRlcnMgKi9cbiAgICB2YXIgcGFyYW0gICAgICAgPSB7fTtcblxuICAgIHBhcmFtLnNpZGUgICAgICA9ICRzY29wZS5wc1NpZGUgfHwgJ3JpZ2h0JztcbiAgICBwYXJhbS5zcGVlZCAgICAgPSAkc2NvcGUucHNTcGVlZCB8fCAnMC41JztcbiAgICBwYXJhbS5zaXplICAgICAgPSAkc2NvcGUucHNTaXplIHx8ICczMDBweCc7XG4gICAgcGFyYW0uemluZGV4ICAgID0gMTAwMDsgLy8gT3ZlcnJpZGUgd2l0aCBjdXN0b20gQ1NTXG4gICAgcGFyYW0uY2xhc3NOYW1lID0gJHNjb3BlLnBzQ2xhc3MgfHwgJ25nLXBhZ2VzbGlkZSc7XG4gICAgcGFyYW0uY2xvYWsgICAgID0gJHNjb3BlLnBzQ2xvYWsgJiYgJHNjb3BlLnBzQ2xvYWsudG9Mb3dlckNhc2UoKSA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAgIHBhcmFtLnNxdWVlemUgICA9IEJvb2xlYW4oJHNjb3BlLnBzU3F1ZWV6ZSkgfHwgZmFsc2U7XG4gICAgcGFyYW0ucHVzaCAgICAgID0gQm9vbGVhbigkc2NvcGUucHNQdXNoKSB8fCBmYWxzZTtcbiAgICBwYXJhbS5jb250YWluZXIgPSAkc2NvcGUucHNDb250YWluZXIgfHwgZmFsc2U7IFxuXG4gICAgLy8gQXBwbHkgQ2xhc3NcbiAgICBlbC5hZGRDbGFzcyhwYXJhbS5jbGFzc05hbWUpO1xuXG4gICAgLyogRE9NIG1hbmlwdWxhdGlvbiAqL1xuICAgIGxldCBjb250ZW50ID0gbnVsbDtcbiAgICBsZXQgc2xpZGVyICA9IG51bGw7XG4gICAgbGV0IGJvZHkgICAgPSBwYXJhbS5jb250YWluZXIgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwYXJhbS5jb250YWluZXIpIDogZG9jdW1lbnQuYm9keTtcblxuICAgIHNsaWRlciAgICAgID0gZWxbMF07XG5cbiAgICAvLyBDaGVjayBmb3IgZGl2IHRhZ1xuICAgIGlmIChzbGlkZXIudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnZGl2JyAmJlxuICAgICAgICBzbGlkZXIudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAncGFnZXNsaWRlJylcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYWdlc2xpZGUgY2FuIG9ubHkgYmUgYXBwbGllZCB0byA8ZGl2PiBvciA8cGFnZXNsaWRlPiBlbGVtZW50cycpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIGNvbnRlbnRcbiAgICBpZiAoc2xpZGVyLmNoaWxkcmVuLmxlbmd0aCA9PT0gMClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgaGF2ZSB0byBjb250ZW50IGluc2lkZSB0aGUgPHBhZ2VzbGlkZT4nKTtcblxuICAgIGNvbnRlbnQgPSBhbmd1bGFyLmVsZW1lbnQoc2xpZGVyLmNoaWxkcmVuKTtcblxuICAgIC8qIEFwcGVuZCAqL1xuICAgIGJvZHkuYXBwZW5kQ2hpbGQoc2xpZGVyKTtcblxuICAgIC8qIFN0eWxlIHNldHVwICovXG4gICAgc2xpZGVyLnN0eWxlLnpJbmRleCAgICAgICAgICAgICAgICAgICA9IHBhcmFtLnppbmRleDtcbiAgICBzbGlkZXIuc3R5bGUucG9zaXRpb24gICAgICAgICAgICAgICAgID0gcGFyYW0uY29udGFpbmVyICE9PSBmYWxzZSA/ICdhYnNvbHV0ZScgOiAnZml4ZWQnO1xuICAgIHNsaWRlci5zdHlsZS53aWR0aCAgICAgICAgICAgICAgICAgICAgPSAwO1xuICAgIHNsaWRlci5zdHlsZS5oZWlnaHQgICAgICAgICAgICAgICAgICAgPSAwO1xuICAgIHNsaWRlci5zdHlsZS5vdmVyZmxvdyAgICAgICAgICAgICAgICAgPSAnaGlkZGVuJztcbiAgICBzbGlkZXIuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uICAgICAgID0gcGFyYW0uc3BlZWQgKyAncyc7XG4gICAgc2xpZGVyLnN0eWxlLndlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiA9IHBhcmFtLnNwZWVkICsgJ3MnO1xuICAgIHNsaWRlci5zdHlsZS50cmFuc2l0aW9uUHJvcGVydHkgICAgICAgPSAnd2lkdGgsIGhlaWdodCc7XG4gICAgaWYgKHBhcmFtLnNxdWVlemUpIHtcbiAgICAgIGJvZHkuc3R5bGUucG9zaXRpb24gICAgICAgICAgICAgICAgID0gJ2Fic29sdXRlJztcbiAgICAgIGJvZHkuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uICAgICAgID0gcGFyYW0uc3BlZWQgKyAncyc7XG4gICAgICBib2R5LnN0eWxlLndlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiA9IHBhcmFtLnNwZWVkICsgJ3MnO1xuICAgICAgYm9keS5zdHlsZS50cmFuc2l0aW9uUHJvcGVydHkgICAgICAgPSAndG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0JztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHBhcmFtLnNpZGUpIHtcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICBzbGlkZXIuc3R5bGUuaGVpZ2h0ID0gYXR0cnMucHNDdXN0b21IZWlnaHQgfHwgJzEwMCUnO1xuICAgICAgc2xpZGVyLnN0eWxlLnRvcCAgICA9IGF0dHJzLnBzQ3VzdG9tVG9wIHx8ICcwcHgnO1xuICAgICAgc2xpZGVyLnN0eWxlLmJvdHRvbSA9IGF0dHJzLnBzQ3VzdG9tQm90dG9tIHx8ICcwcHgnO1xuICAgICAgc2xpZGVyLnN0eWxlLnJpZ2h0ICA9IGF0dHJzLnBzQ3VzdG9tUmlnaHQgfHwgJzBweCc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdsZWZ0JzpcbiAgICAgIHNsaWRlci5zdHlsZS5oZWlnaHQgPSBhdHRycy5wc0N1c3RvbUhlaWdodCB8fCAnMTAwJSc7XG4gICAgICBzbGlkZXIuc3R5bGUudG9wICAgID0gYXR0cnMucHNDdXN0b21Ub3AgfHwgJzBweCc7XG4gICAgICBzbGlkZXIuc3R5bGUuYm90dG9tID0gYXR0cnMucHNDdXN0b21Cb3R0b20gfHwgJzBweCc7XG4gICAgICBzbGlkZXIuc3R5bGUubGVmdCAgID0gYXR0cnMucHNDdXN0b21MZWZ0IHx8ICcwcHgnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIHNsaWRlci5zdHlsZS53aWR0aCAgPSBhdHRycy5wc0N1c3RvbVdpZHRoIHx8ICcxMDAlJztcbiAgICAgIHNsaWRlci5zdHlsZS5sZWZ0ICAgPSBhdHRycy5wc0N1c3RvbUxlZnQgfHwgJzBweCc7XG4gICAgICBzbGlkZXIuc3R5bGUudG9wICAgID0gYXR0cnMucHNDdXN0b21Ub3AgfHwgJzBweCc7XG4gICAgICBzbGlkZXIuc3R5bGUucmlnaHQgID0gYXR0cnMucHNDdXN0b21SaWdodCB8fCAnMHB4JztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBzbGlkZXIuc3R5bGUud2lkdGggID0gYXR0cnMucHNDdXN0b21XaWR0aCB8fCAnMTAwJSc7XG4gICAgICBzbGlkZXIuc3R5bGUuYm90dG9tID0gYXR0cnMucHNDdXN0b21Cb3R0b20gfHwgJzBweCc7XG4gICAgICBzbGlkZXIuc3R5bGUubGVmdCAgID0gYXR0cnMucHNDdXN0b21MZWZ0IHx8ICcwcHgnO1xuICAgICAgc2xpZGVyLnN0eWxlLnJpZ2h0ICA9IGF0dHJzLnBzQ3VzdG9tUmlnaHQgfHwgJzBweCc7XG4gICAgICBicmVhaztcbiAgICB9XG5cblxuICAgIC8qIENsb3NlZCAqL1xuICAgIGZ1bmN0aW9uIHBzQ2xvc2Uoc2xpZGVyLCBwYXJhbSkge1xuICAgICAgaWYgKHNsaWRlciAmJiBzbGlkZXIuc3R5bGUud2lkdGggIT09IDAgJiYgc2xpZGVyLnN0eWxlLndpZHRoICE9PSAwKSB7XG4gICAgICAgIGlmIChwYXJhbS5jbG9haykgY29udGVudC5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgICBzd2l0Y2ggKHBhcmFtLnNpZGUpIHtcbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIHNsaWRlci5zdHlsZS53aWR0aCA9ICcwcHgnO1xuICAgICAgICAgIGlmIChwYXJhbS5zcXVlZXplKSBib2R5LnN0eWxlLnJpZ2h0ID0gJzBweCc7XG4gICAgICAgICAgaWYgKHBhcmFtLnB1c2gpIHtcbiAgICAgICAgICAgICAgYm9keS5zdHlsZS5yaWdodCAgPSAnMHB4JztcbiAgICAgICAgICAgICAgYm9keS5zdHlsZS5sZWZ0ICAgPSAnMHB4JztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIHNsaWRlci5zdHlsZS53aWR0aCA9ICcwcHgnO1xuICAgICAgICAgIGlmIChwYXJhbS5zcXVlZXplKSBib2R5LnN0eWxlLmxlZnQgPSAnMHB4JztcbiAgICAgICAgICBpZiAocGFyYW0ucHVzaCkge1xuICAgICAgICAgICAgICBib2R5LnN0eWxlLmxlZnQgICA9ICcwcHgnO1xuICAgICAgICAgICAgICBib2R5LnN0eWxlLnJpZ2h0ICA9ICcwcHgnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICBzbGlkZXIuc3R5bGUuaGVpZ2h0ID0gJzBweCc7XG4gICAgICAgICAgaWYgKHBhcmFtLnNxdWVlemUpIGJvZHkuc3R5bGUudG9wID0gJzBweCc7XG4gICAgICAgICAgaWYgKHBhcmFtLnB1c2gpIHtcbiAgICAgICAgICAgICAgYm9keS5zdHlsZS50b3AgICAgPSAnMHB4JztcbiAgICAgICAgICAgICAgYm9keS5zdHlsZS5ib3R0b20gPSAnMHB4JztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgc2xpZGVyLnN0eWxlLmhlaWdodCA9ICcwcHgnO1xuICAgICAgICAgIGlmIChwYXJhbS5zcXVlZXplKSBib2R5LnN0eWxlLmJvdHRvbSA9ICcwcHgnO1xuICAgICAgICAgIGlmIChwYXJhbS5wdXNoKSB7XG4gICAgICAgICAgICAgIGJvZHkuc3R5bGUuYm90dG9tID0gJzBweCc7IFxuICAgICAgICAgICAgICBib2R5LnN0eWxlLnRvcCAgICA9ICcwcHgnOyBcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRzY29wZS5wc09wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiBPcGVuICovXG4gICAgZnVuY3Rpb24gcHNPcGVuKHNsaWRlciwgcGFyYW0pIHtcbiAgICAgICAgaWYgKHNsaWRlci5zdHlsZS53aWR0aCAhPT0gMCAmJiBzbGlkZXIuc3R5bGUud2lkdGggIT09IDApIHtcbiAgICAgICAgICAgIHN3aXRjaCAocGFyYW0uc2lkZSkge1xuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICBzbGlkZXIuc3R5bGUud2lkdGggPSBwYXJhbS5zaXplO1xuICAgICAgICAgICAgICBpZiAocGFyYW0uc3F1ZWV6ZSkgYm9keS5zdHlsZS5yaWdodCA9IHBhcmFtLnNpemU7XG4gICAgICAgICAgICAgIGlmIChwYXJhbS5wdXNoKSB7XG4gICAgICAgICAgICAgICAgICBib2R5LnN0eWxlLnJpZ2h0ID0gcGFyYW0uc2l6ZTtcbiAgICAgICAgICAgICAgICAgIGJvZHkuc3R5bGUubGVmdCA9ICctJyArIHBhcmFtLnNpemU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgICAgc2xpZGVyLnN0eWxlLndpZHRoID0gcGFyYW0uc2l6ZTtcbiAgICAgICAgICAgICAgaWYgKHBhcmFtLnNxdWVlemUpIGJvZHkuc3R5bGUubGVmdCA9IHBhcmFtLnNpemU7XG4gICAgICAgICAgICAgIGlmIChwYXJhbS5wdXNoKSB7XG4gICAgICAgICAgICAgICAgICBib2R5LnN0eWxlLmxlZnQgPSBwYXJhbS5zaXplO1xuICAgICAgICAgICAgICAgICAgYm9keS5zdHlsZS5yaWdodCA9ICctJyArIHBhcmFtLnNpemU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICBzbGlkZXIuc3R5bGUuaGVpZ2h0ID0gcGFyYW0uc2l6ZTtcbiAgICAgICAgICAgICAgaWYgKHBhcmFtLnNxdWVlemUpIGJvZHkuc3R5bGUudG9wID0gcGFyYW0uc2l6ZTtcbiAgICAgICAgICAgICAgaWYgKHBhcmFtLnB1c2gpIHtcbiAgICAgICAgICAgICAgICAgIGJvZHkuc3R5bGUudG9wID0gcGFyYW0uc2l6ZTtcbiAgICAgICAgICAgICAgICAgIGJvZHkuc3R5bGUuYm90dG9tID0gJy0nICsgcGFyYW0uc2l6ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgIHNsaWRlci5zdHlsZS5oZWlnaHQgPSBwYXJhbS5zaXplO1xuICAgICAgICAgICAgICBpZiAocGFyYW0uc3F1ZWV6ZSkgYm9keS5zdHlsZS5ib3R0b20gPSBwYXJhbS5zaXplO1xuICAgICAgICAgICAgICBpZiAocGFyYW0ucHVzaCkge1xuICAgICAgICAgICAgICAgICAgYm9keS5zdHlsZS5ib3R0b20gPSBwYXJhbS5zaXplO1xuICAgICAgICAgICAgICAgICAgYm9keS5zdHlsZS50b3AgPSAnLScgKyBwYXJhbS5zaXplO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChwYXJhbS5jbG9haykgY29udGVudC5jc3MoJ2Rpc3BsYXknLCAnYmxvY2snKTtcbiAgICAgICAgICAgIH0sIChwYXJhbS5zcGVlZCAqIDEwMDApKTtcblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZnVuY3Rpb24gaXNGdW5jdGlvbihmdW5jdGlvblRvQ2hlY2spIHtcbiAgICAvLyAgIHZhciBnZXRUeXBlID0ge307XG4gICAgLy8gICByZXR1cm4gZnVuY3Rpb25Ub0NoZWNrICYmIGdldFR5cGUudG9TdHJpbmcuY2FsbChmdW5jdGlvblRvQ2hlY2spID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuICAgIC8vIH1cblxuICAgIC8qXG4gICAgKiBXYXRjaGVyc1xuICAgICogKi9cblxuICAgICRzY29wZS4kd2F0Y2goJ3BzT3BlbicsICh2YWx1ZSkgPT4ge1xuICAgICAgLyogZXNsaW50IG5vLWV4dHJhLWJvb2xlYW4tY2FzdDowICovXG4gICAgICBpZiAoISF2YWx1ZSkge1xuICAgICAgICAvLyBPcGVuXG4gICAgICAgIHBzT3BlbihzbGlkZXIsIHBhcmFtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENsb3NlXG4gICAgICAgIHBzQ2xvc2Uoc2xpZGVyLCBwYXJhbSk7XG4gICAgICB9XG4gICAgfSk7XG5cblxuICAgIC8qXG4gICAgKiBFdmVudHNcbiAgICAqICovXG5cbiAgICAkc2NvcGUuJG9uKCckZGVzdHJveScsICgpID0+IGJvZHkucmVtb3ZlQ2hpbGQoc2xpZGVyKSk7XG5cbiAgICBpZiAoJHNjb3BlLnBzQXV0b0Nsb3NlKSB7XG4gICAgICAkc2NvcGUuJG9uKCckbG9jYXRpb25DaGFuZ2VTdGFydCcsICgpID0+IHBzQ2xvc2Uoc2xpZGVyLCBwYXJhbSkpO1xuICAgICAgJHNjb3BlLiRvbignJHN0YXRlQ2hhbmdlU3RhcnQnLCAoKSA9PiBwc0Nsb3NlKHNsaWRlciwgcGFyYW0pKTtcbiAgICB9XG4gIH1cblxufVxuXG5wYWdlc2xpZGUuJGluamVjdCA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBwYWdlc2xpZGU7XG5cbmV4cG9ydCB7XG4gIFBBR0VfU0xJREVfRElSRUNUSVZFXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2NvbW1vbi9wYWdlc2xpZGUvcGFnZXNsaWRlLmRpcmVjdGl2ZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 77 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _edaDragDropWayEdaDragdropWayEasyFormGen = __webpack_require__(78);\n\nvar _edaDragDropWayEdaDragdropWayEasyFormGen2 = _interopRequireDefault(_edaDragDropWayEdaDragdropWayEasyFormGen);\n\nvar _edaDragDropWayEdaDragdropWayEasyFormGen3 = __webpack_require__(80);\n\nvar _edaDragDropWayEdaDragdropWayEasyFormGen4 = _interopRequireDefault(_edaDragDropWayEdaDragdropWayEasyFormGen3);\n\nvar _edaDragDropWayEdaDragdropWayEasyFormGen5 = __webpack_require__(82);\n\nvar _edaDragDropWayEdaDragdropWayEasyFormGen6 = _interopRequireDefault(_edaDragDropWayEdaDragdropWayEasyFormGen5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DRAGDROP_MODULE = 'edaDragDropWay.main.module'; /* global angular */\n\nexports.default = angular.module(DRAGDROP_MODULE, []).provider(_edaDragDropWayEdaDragdropWayEasyFormGen.EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME, _edaDragDropWayEdaDragdropWayEasyFormGen2.default).controller(_edaDragDropWayEdaDragdropWayEasyFormGen3.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER, _edaDragDropWayEdaDragdropWayEasyFormGen4.default).directive(_edaDragDropWayEdaDragdropWayEasyFormGen5.EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE, _edaDragDropWayEdaDragdropWayEasyFormGen6.default);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZWRhRHJhZ0Ryb3BXYXlFYXN5Rm9ybUdlbi9lZGFEcmFnRHJvcFdheS5lZGFEcmFnZHJvcFdheUVhc3lGb3JtR2VuLm1vZHVsZS5qcz80NjNlIl0sIm5hbWVzIjpbIkRSQUdEUk9QX01PRFVMRSIsImFuZ3VsYXIiLCJtb2R1bGUiLCJwcm92aWRlciIsImNvbnRyb2xsZXIiLCJkaXJlY3RpdmUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBOzs7O0FBR0E7Ozs7QUFHQTs7Ozs7O0FBS0EsSUFBTUEsa0JBQWtCLDRCQUF4QixDLENBYkE7O2tCQWVlQyxRQUNOQyxNQURNLENBQ0NGLGVBREQsRUFDa0IsRUFEbEIsRUFFTkcsUUFGTSxrSUFHTkMsVUFITSxzSUFJTkMsU0FKTSx1SSIsImZpbGUiOiI3Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCBhbmd1bGFyICovXG5cbmltcG9ydCBlYXN5Rm9ybURyYWdXYXlDb25maWcsIHtcblx0RUFTWV9GT1JNX0RSQUdfRFJPUF9XQVlfQ09ORklHX05BTUVcbn0gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnJvbSAnLi9lZGFEcmFnRHJvcFdheS5lZGFEcmFnZHJvcFdheUVhc3lGb3JtR2VuLnByb3ZpZGVyJztcbmltcG9ydCBlZGFEcmFnRHJvcFdheUVhc3lGb3JtR2VuQ3RybCwge1xuXHREUkFHX0RST1BfV0FZX0VBU1lfRk9STV9HRU5fQ09OVFJPTExFUlxufVx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnJvbSAnLi9lZGFEcmFnRHJvcFdheS5lZGFEcmFnZHJvcFdheUVhc3lGb3JtR2VuLmNvbnRyb2xsZXInO1xuaW1wb3J0IGVkYURyYWdkcm9wV2F5RWFzeUZvcm1HZW4sIHtcblx0RURBX0RSQUdEUk9QX1dBWV9FQVNZX0ZPUk1fR0VOX0RJUkVDVElWRVxufVx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnJvbSAnLi9lZGFEcmFnRHJvcFdheS5lZGFEcmFnZHJvcFdheUVhc3lGb3JtR2VuLmRpcmVjdGl2ZSc7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5jb25zdCBEUkFHRFJPUF9NT0RVTEUgPSAnZWRhRHJhZ0Ryb3BXYXkubWFpbi5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG5cdFx0XHRcdFx0XHRcdFx0Lm1vZHVsZShEUkFHRFJPUF9NT0RVTEUsIFtdKVxuXHRcdFx0XHRcdFx0XHRcdC5wcm92aWRlcihFQVNZX0ZPUk1fRFJBR19EUk9QX1dBWV9DT05GSUdfTkFNRSwgZWFzeUZvcm1EcmFnV2F5Q29uZmlnKVxuXHRcdFx0XHRcdFx0XHRcdC5jb250cm9sbGVyKERSQUdfRFJPUF9XQVlfRUFTWV9GT1JNX0dFTl9DT05UUk9MTEVSLCBlZGFEcmFnRHJvcFdheUVhc3lGb3JtR2VuQ3RybClcblx0XHRcdFx0XHRcdFx0XHQuZGlyZWN0aXZlKEVEQV9EUkFHRFJPUF9XQVlfRUFTWV9GT1JNX0dFTl9ESVJFQ1RJVkUsIGVkYURyYWdkcm9wV2F5RWFzeUZvcm1HZW4pO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9lZGFEcmFnRHJvcFdheUVhc3lGb3JtR2VuL2VkYURyYWdEcm9wV2F5LmVkYURyYWdkcm9wV2F5RWFzeUZvcm1HZW4ubW9kdWxlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 78 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME = undefined;\n\nvar _edaDragDropWayEdaDragdropWayEasyFormGenProvider = __webpack_require__(79);\n\nvar EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME = 'easyFormDragWayConfig'; // TODO : Add here configs from ES5 dragDropConfigProvider\n\nfunction easyFormDragWayConfig() {\n\n\tvar _listDragDropItemCssClasses = [].concat(_edaDragDropWayEdaDragdropWayEasyFormGenProvider.LIST_DRAG_DROP_ITEM_CSS_CLASSES);\n\tvar _dragDropConfigModel = angular.copy(_edaDragDropWayEdaDragdropWayEasyFormGenProvider.DRAG_DROP_CONFIG_MODEL);\n\tvar _dragDropPresentationModel = [].concat(_edaDragDropWayEdaDragdropWayEasyFormGenProvider.DRAG_DROP_PRESENTATION_MODEL);\n\tvar _itemsNotToCountFoReal = angular.copy(_edaDragDropWayEdaDragdropWayEasyFormGenProvider.ITEMS_NOT_TO_COUNT_FOR_REAL);\n\n\tvar _configuration = defaultConfig();\n\tvar _controlsList = controlsList();\n\t// let _defaultLanguage\t\t= getDefaultLanguage();\n\t// let _currentLanguage\t\t= initDefaultLanguage();\n\tvar _showPreviewPanel = getDefaultshowPreviewPanel();\n\tvar _showPreviewModels = getDefaultShowPreviewModel();\n\t/* jshint validthis:true */\n\tthis.$get = easyFormDragDropWayConfigGET;\n\tthis.setModalAnimation = setModalAnimation;\n\tthis.getModalAnimation = getModalAnimation;\n\tthis.configuration = _configuration;\n\tthis.getEnabledControls = getEnabledControls;\n\tthis.disableControl = disableControl;\n\tthis.enableControl = enableControl;\n\t// this.setLanguage\t\t\t\t= setLanguage;\n\t// this.getCurrentLanguage\t= getCurrentLanguage;\n\tthis.showPreviewPanel = showPreviewPanel;\n\tthis.showPreviewModels = showPreviewModels;\n\n\tthis.setListItemCssClass = setListItemCssClass;\n\tthis.getItemsNotTocount = getItemsNotTocount;\n\tthis.setItemsNotTocount = setItemsNotTocount;\n\tthis.addControlToDragDropPresentationModel = addControlToDragDropPresentationModel;\n\tthis.getDragDropPresentationModel = getDragDropPresentationModel;\n\n\tfunction setListItemCssClass(fromConfig) {\n\t\t_listDragDropItemCssClasses = [].concat(fromConfig);\n\t}\n\n\tfunction getItemsNotTocount() {\n\t\treturn _itemsNotToCountFoReal;\n\t}\n\n\tfunction setItemsNotTocount(fromConfig) {\n\t\t_itemsNotToCountFoReal = angular.copy(fromConfig);\n\t}\n\n\t//set default config\n\tfunction defaultConfig() {\n\t\tvar _defaultConfiguration = {\n\t\t\tmodalAnimated: false\n\t\t};\n\t\treturn _defaultConfiguration;\n\t}\n\n\tfunction addControlToDragDropPresentationModel(controlToAdd, groupToAdd) {\n\t\tif (typeof controlToAdd !== 'undefined' && typeof groupToAdd !== 'undefined') {\n\t\t\taddToGroupControl(controlToAdd, groupToAdd);\n\t\t}\n\t}\n\n\tfunction getDragDropPresentationModel() {\n\t\treturn _dragDropPresentationModel;\n\t}\n\n\t//show preview panel by default\n\tfunction getDefaultshowPreviewPanel() {\n\t\treturn true;\n\t}\n\n\t//show preview data, fields models in preview panel\n\tfunction getDefaultShowPreviewModel() {\n\t\treturn true;\n\t}\n\n\t// function getCurrentLanguage(){\n\t// \t\treturn _currentLanguage;\n\t// }\t\n\n\t//list of controls\n\tfunction controlsList() {\n\t\tvar controls = [{ name: 'empty', enabled: true }, { name: 'Header', enabled: true }, { name: 'Subtitle', enabled: true }, { name: 'TextInput', enabled: true }, { name: 'Password', enabled: true }, { name: 'Email', enabled: true }, { name: 'Date', enabled: true }, { name: 'Texarea', enabled: true }, { name: 'RichTextEditor', enabled: true }, { name: 'Radio', enabled: true }, { name: 'Checkbox', enabled: true }, { name: 'BasicSelect', enabled: true }, { name: 'GroupedSelect', enabled: true }];\n\t\treturn controls;\n\t}\n\n\tfunction showPreviewPanel(wantToShow) {\n\t\tif (angular.isDefined(wantToShow)) {\n\t\t\tif (wantToShow === true) _showPreviewPanel = true;\n\t\t\tif (wantToShow === false) _showPreviewPanel = false;\n\t\t}\n\t}\n\n\tfunction showPreviewModels(wantToShow) {\n\t\tif (angular.isDefined(wantToShow)) {\n\t\t\tif (wantToShow === true) _showPreviewModels = true;\n\t\t\tif (wantToShow === false) _showPreviewModels = false;\n\t\t}\n\t}\n\n\t// //language : set default to english\n\t// function getDefaultLanguage(){\n\t// \tlet lang = 'en';\n\t// \treturn lang;\n\t// }\n\n\t// function setDefaultLanguage(){\n\t// \t_currentLanguage = _defaultLanguage;\n\t// \t$translateProvider.preferredLanguage(_currentLanguage);\n\t// \treturn _currentLanguage;\n\t// }\t\n\n\t// function setLanguage(language){\t\t\t\t\n\t// \tif (angular.isString(language)) {\n\t// \t\t_currentLanguage = language;\n\t// \t\t$translateProvider.preferredLanguage(language);\n\t// \t}else{\n\t// \t\tsetDefaultLanguage();\n\t// \t}\n\t// }\n\n\t// function initDefaultLanguage(){\n\t// \t$translateProvider.useSanitizeValueStrategy('escape'); \t//security : Enable escaping of HTML\n\t// \t$translateProvider.fallbackLanguage(_defaultLanguage);\t//fallback language to default language\n\t// \t$translateProvider.preferredLanguage(_defaultLanguage);\n\t// \treturn _defaultLanguage;\n\t// }\n\n\tfunction getEnabledControls() {\n\t\treturn _controlsList;\n\t}\n\n\tfunction disableControl(controlName) {\n\t\tif (angular.isString(controlName)) {\n\t\t\tangular.forEach(_controlsList, function (aControl) {\n\t\t\t\tif (aControl.name === controlName) aControl.enabled = false;\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction enableControl(controlName) {\n\t\tif (angular.isString(controlName)) {\n\t\t\tangular.forEach(_controlsList, function (aControl) {\n\t\t\t\tif (aControl.name === controlName) aControl.enabled = true;\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction setModalAnimation(flagConfig) {\n\t\tvar valueToApply = flagConfig === true ? flagConfig : flagConfig === false ? flagConfig : _configuration.modalAnimated;\n\n\t\t_configuration.modalAnimated = valueToApply;\n\t}\n\n\tfunction getModalAnimation() {\n\t\treturn _configuration.modalAnimated;\n\t}\n\n\t//$get implementation :\n\t// easyFormDragDropWayConfigGET.$inject = ['$translate'];\n\t// function easyFormDragDropWayConfigGET($translate){\n\teasyFormDragDropWayConfigGET.$inject = [];\n\tfunction easyFormDragDropWayConfigGET() {\n\n\t\tvar service = {\n\t\t\tsetModalAnimation: setModalAnimationFct,\n\t\t\tgetModalAnimationValue: getModalAnimationValue,\n\t\t\tgetListEnabledControl: getListEnabledControl,\n\t\t\t// setLanguage \t\t\t\t\t\t\t\t\t\t\t: switchLanguage,\n\t\t\t// getCurrentLanguage\t\t\t\t\t\t\t\t: getCurrentLanguage,\n\t\t\tisPreviewPanelVisible: isPreviewPanelVisible,\n\t\t\tarePreviewModelsVisible: arePreviewModelsVisible,\n\n\t\t\tgetListItemCssClass: getListItemCssClass,\n\t\t\tgetItemsNotToCount: getItemsNotToCount,\n\t\t\tgetItemCssDependingNumberItemsInRow: getItemCssDependingNumberItemsInRow,\n\t\t\tgetDistinctItemCssClass: getDistinctItemCssClass,\n\t\t\tgetDragDropConfigModel: getDragDropConfigModel,\n\t\t\tgetDragDropPresentationModel: getDragDropPresentationModel,\n\t\t\tsetDragDropConfigContainerDecorationCollapse: setDragDropConfigContainerDecorationCollapse\n\t\t};\n\t\treturn service;\n\n\t\tfunction getDragDropPresentationModel() {\n\t\t\treturn _dragDropPresentationModel;\n\t\t}\n\n\t\tfunction setDragDropConfigContainerDecorationCollapse(dragDropConfigModel, indexValue, isCollapsedBool) {\n\t\t\tif (typeof indexValue !== 'undefined' && typeof isCollapsedBool !== 'undefined') {\n\t\t\t\tif (indexValue === parseInt(indexValue, 10)) {\n\t\t\t\t\tdragDropConfigModel.containerConfig.decoration[indexValue].isCollapsed = isCollapsedBool;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tfunction getDragDropConfigModel() {\n\t\t\treturn _dragDropConfigModel;\n\t\t}\n\n\t\tfunction getDistinctItemCssClass() {\n\t\t\tvar distinctCssClass = [];\n\t\t\tangular.forEach(_listDragDropItemCssClasses, function (valueRef) {\n\n\t\t\t\tvar cssClassRef = valueRef.cssClass;\n\n\t\t\t\tif (distinctCssClass.length === 0) {\n\t\t\t\t\tdistinctCssClass.push(cssClassRef);\n\t\t\t\t} else {\n\t\t\t\t\tvar canAdd = true;\n\t\t\t\t\tangular.forEach(distinctCssClass, function (valueProc) {\n\t\t\t\t\t\tvar cssClassProc = valueProc;\n\t\t\t\t\t\tif (cssClassRef === cssClassProc) {\n\t\t\t\t\t\t\tcanAdd = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif (canAdd) distinctCssClass.push(cssClassRef);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn distinctCssClass;\n\t\t}\n\n\t\tfunction getItemCssDependingNumberItemsInRow(numberOfItems) {\n\t\t\tif (typeof numberOfItems !== 'undefined') {\n\t\t\t\tvar classToReturn = '';\n\t\t\t\tfor (var i = _listDragDropItemCssClasses.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (_listDragDropItemCssClasses[i].numberItemPerRow === numberOfItems) {\n\t\t\t\t\t\tclassToReturn = _listDragDropItemCssClasses[i].cssClass;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn classToReturn;\n\t\t\t} else {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t}\n\n\t\tfunction getListItemCssClass() {\n\t\t\treturn _listDragDropItemCssClasses;\n\t\t}\n\n\t\tfunction getItemsNotToCount() {\n\t\t\treturn _itemsNotToCountFoReal;\n\t\t}\n\n\t\tfunction getModalAnimationValue() {\n\t\t\treturn _configuration.modalAnimated;\n\t\t}\n\n\t\tfunction setModalAnimationFct(value) {\n\t\t\tsetModalAnimation(value);\n\t\t}\n\n\t\tfunction getListEnabledControl() {\n\t\t\treturn angular.copy(_controlsList);\n\t\t}\n\n\t\t// function switchLanguage(language){\n\t\t// \tif (angular.isString(language)) {\n\t\t// \t\t_currentLanguage = language;\n\t\t// \t\t$translate.use(language);\n\t\t// \t}else{\n\t\t// \t\tsetDefaultLanguage();\n\t\t// \t}\n\t\t// }\t\t\t\t\t\n\n\t\tfunction isPreviewPanelVisible() {\n\t\t\treturn _showPreviewPanel;\n\t\t}\n\n\t\tfunction arePreviewModelsVisible() {\n\t\t\treturn _showPreviewModels;\n\t\t}\n\t}\n\n\t/**\n * addToGroupControl : add control to _dragDropPresentationModel\n * @param {[type]} thisControl : control to add\n * @param {[type]} thisGroup : groupId wher this control should be added\n *\n * NOTE : if _dragDropPresentationModel wrong initialized it will create list of group conforming to \n * configModel\n */\n\tfunction addToGroupControl(thisControl, thisGroup) {\n\t\t/**\n * search group if already exists\n */\n\t\tif (_dragDropPresentationModel[0].length > 0) {\n\t\t\t/**\n * case when _dragDropConfigModel.containerConfig.decoration.length is > to _dragDropPresentationModel[0].length\n *\n * for instance : initialization _dragDropPresentationModel[0] in between\n */\n\t\t\tif (_dragDropPresentationModel[0].length < _dragDropConfigModel.containerConfig.decoration.length) {\n\t\t\t\tvar missingGroupNumber = _dragDropConfigModel.containerConfig.decoration.length - _dragDropPresentationModel[0].length;\n\n\t\t\t\tfor (var i = 0; i < missingGroupNumber; i++) {\n\t\t\t\t\t_dragDropPresentationModel[0].push([]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n * push control to right index \n * (deduced by _dragDropConfigModel.containerConfig.decoration.WhenIndex value for groupId === thisGroup)\n */\n\t\t\t_dragDropConfigModel.containerConfig.decoration.forEach(function (groupConfig) {\n\t\t\t\tif (thisGroup.addToGroupCtrl === groupConfig.groupId) {\n\t\t\t\t\t_dragDropPresentationModel[0][groupConfig.WhenIndex].push(thisControl);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t/**\n * no group no control\n *\n * initialize _dragDropConfigModel.containerConfig.decoration list\n */\n\t\t\t_dragDropConfigModel.containerConfig.decoration.forEach(function () {\n\t\t\t\treturn _dragDropPresentationModel[0].push([]);\n\t\t\t});\n\t\t\t/**\n * push control to right index \n * (deduced by _dragDropConfigModel.containerConfig.decoration.WhenIndex value for groupId === thisGroup)\n */\n\t\t\t_dragDropConfigModel.containerConfig.decoration.forEach(function (groupConfig) {\n\t\t\t\tif (thisGroup.addToGroupCtrl === groupConfig.groupId) {\n\t\t\t\t\t_dragDropPresentationModel[0][groupConfig.WhenIndex].push(thisControl);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n\n// easyFormDragWayConfig.$inject = ['$translateProvider'];\n\neasyFormDragWayConfig.$inject = [];\n\nexports.default = easyFormDragWayConfig;\nexports.EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME = EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZWRhRHJhZ0Ryb3BXYXlFYXN5Rm9ybUdlbi9lZGFEcmFnRHJvcFdheS5lZGFEcmFnZHJvcFdheUVhc3lGb3JtR2VuLnByb3ZpZGVyLmpzPzE0MDIiXSwibmFtZXMiOlsiRUFTWV9GT1JNX0RSQUdfRFJPUF9XQVlfQ09ORklHX05BTUUiLCJlYXN5Rm9ybURyYWdXYXlDb25maWciLCJfbGlzdERyYWdEcm9wSXRlbUNzc0NsYXNzZXMiLCJjb25jYXQiLCJfZHJhZ0Ryb3BDb25maWdNb2RlbCIsImFuZ3VsYXIiLCJjb3B5IiwiX2RyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWwiLCJfaXRlbXNOb3RUb0NvdW50Rm9SZWFsIiwiX2NvbmZpZ3VyYXRpb24iLCJkZWZhdWx0Q29uZmlnIiwiX2NvbnRyb2xzTGlzdCIsImNvbnRyb2xzTGlzdCIsIl9zaG93UHJldmlld1BhbmVsIiwiZ2V0RGVmYXVsdHNob3dQcmV2aWV3UGFuZWwiLCJfc2hvd1ByZXZpZXdNb2RlbHMiLCJnZXREZWZhdWx0U2hvd1ByZXZpZXdNb2RlbCIsIiRnZXQiLCJlYXN5Rm9ybURyYWdEcm9wV2F5Q29uZmlnR0VUIiwic2V0TW9kYWxBbmltYXRpb24iLCJnZXRNb2RhbEFuaW1hdGlvbiIsImNvbmZpZ3VyYXRpb24iLCJnZXRFbmFibGVkQ29udHJvbHMiLCJkaXNhYmxlQ29udHJvbCIsImVuYWJsZUNvbnRyb2wiLCJzaG93UHJldmlld1BhbmVsIiwic2hvd1ByZXZpZXdNb2RlbHMiLCJzZXRMaXN0SXRlbUNzc0NsYXNzIiwiZ2V0SXRlbXNOb3RUb2NvdW50Iiwic2V0SXRlbXNOb3RUb2NvdW50IiwiYWRkQ29udHJvbFRvRHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbCIsImdldERyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWwiLCJmcm9tQ29uZmlnIiwiX2RlZmF1bHRDb25maWd1cmF0aW9uIiwibW9kYWxBbmltYXRlZCIsImNvbnRyb2xUb0FkZCIsImdyb3VwVG9BZGQiLCJhZGRUb0dyb3VwQ29udHJvbCIsImNvbnRyb2xzIiwibmFtZSIsImVuYWJsZWQiLCJ3YW50VG9TaG93IiwiaXNEZWZpbmVkIiwiY29udHJvbE5hbWUiLCJpc1N0cmluZyIsImZvckVhY2giLCJhQ29udHJvbCIsImZsYWdDb25maWciLCJ2YWx1ZVRvQXBwbHkiLCIkaW5qZWN0Iiwic2VydmljZSIsInNldE1vZGFsQW5pbWF0aW9uRmN0IiwiZ2V0TW9kYWxBbmltYXRpb25WYWx1ZSIsImdldExpc3RFbmFibGVkQ29udHJvbCIsImlzUHJldmlld1BhbmVsVmlzaWJsZSIsImFyZVByZXZpZXdNb2RlbHNWaXNpYmxlIiwiZ2V0TGlzdEl0ZW1Dc3NDbGFzcyIsImdldEl0ZW1zTm90VG9Db3VudCIsImdldEl0ZW1Dc3NEZXBlbmRpbmdOdW1iZXJJdGVtc0luUm93IiwiZ2V0RGlzdGluY3RJdGVtQ3NzQ2xhc3MiLCJnZXREcmFnRHJvcENvbmZpZ01vZGVsIiwic2V0RHJhZ0Ryb3BDb25maWdDb250YWluZXJEZWNvcmF0aW9uQ29sbGFwc2UiLCJkcmFnRHJvcENvbmZpZ01vZGVsIiwiaW5kZXhWYWx1ZSIsImlzQ29sbGFwc2VkQm9vbCIsInBhcnNlSW50IiwiY29udGFpbmVyQ29uZmlnIiwiZGVjb3JhdGlvbiIsImlzQ29sbGFwc2VkIiwiZGlzdGluY3RDc3NDbGFzcyIsInZhbHVlUmVmIiwiY3NzQ2xhc3NSZWYiLCJjc3NDbGFzcyIsImxlbmd0aCIsInB1c2giLCJjYW5BZGQiLCJ2YWx1ZVByb2MiLCJjc3NDbGFzc1Byb2MiLCJudW1iZXJPZkl0ZW1zIiwiY2xhc3NUb1JldHVybiIsImkiLCJudW1iZXJJdGVtUGVyUm93IiwidmFsdWUiLCJ0aGlzQ29udHJvbCIsInRoaXNHcm91cCIsIm1pc3NpbmdHcm91cE51bWJlciIsImdyb3VwQ29uZmlnIiwiYWRkVG9Hcm91cEN0cmwiLCJncm91cElkIiwiV2hlbkluZGV4Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7O0FB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QUFxRGYsSUFBckQsQ0FBMERTLFdBQTFEO0FBQ0Q7QUFDRCxJQUpEO0FBS0Y7QUFDRjtBQUVGOztBQUVEOztBQUVBbEYsc0JBQXNCZ0QsT0FBdEIsR0FBZ0MsRUFBaEM7O2tCQUVlaEQscUI7UUFFUEQsbUMsR0FBQUEsbUMiLCJmaWxlIjoiNzguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUT0RPIDogQWRkIGhlcmUgY29uZmlncyBmcm9tIEVTNSBkcmFnRHJvcENvbmZpZ1Byb3ZpZGVyXG5cbmltcG9ydCB7XG4gIExJU1RfRFJBR19EUk9QX0lURU1fQ1NTX0NMQVNTRVMsXG4gIERSQUdfRFJPUF9DT05GSUdfTU9ERUwsXG4gIERSQUdfRFJPUF9QUkVTRU5UQVRJT05fTU9ERUwsXG4gIElURU1TX05PVF9UT19DT1VOVF9GT1JfUkVBTFxufSBcdGZyb20gJy4vZWRhRHJhZ0Ryb3BXYXkuZWRhRHJhZ2Ryb3BXYXlFYXN5Rm9ybUdlbi5wcm92aWRlci5oZWxwZXJzJztcblxuY29uc3QgRUFTWV9GT1JNX0RSQUdfRFJPUF9XQVlfQ09ORklHX05BTUUgPSAnZWFzeUZvcm1EcmFnV2F5Q29uZmlnJztcblxuZnVuY3Rpb24gZWFzeUZvcm1EcmFnV2F5Q29uZmlnKCkge1xuXG5cdGxldCBfbGlzdERyYWdEcm9wSXRlbUNzc0NsYXNzZXMgXHRcdFx0XHRcdFx0PSBbXS5jb25jYXQoTElTVF9EUkFHX0RST1BfSVRFTV9DU1NfQ0xBU1NFUyk7XG5cdGxldCBfZHJhZ0Ryb3BDb25maWdNb2RlbCBcdFx0XHRcdFx0XHRcdFx0XHRcdD0gYW5ndWxhci5jb3B5KERSQUdfRFJPUF9DT05GSUdfTU9ERUwpO1xuXHRsZXQgX2RyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWwgXHRcdFx0XHRcdFx0XHQ9IFtdLmNvbmNhdChEUkFHX0RST1BfUFJFU0VOVEFUSU9OX01PREVMKTtcblx0bGV0IF9pdGVtc05vdFRvQ291bnRGb1JlYWwgXHRcdFx0XHRcdFx0XHRcdFx0PSBhbmd1bGFyLmNvcHkoSVRFTVNfTk9UX1RPX0NPVU5UX0ZPUl9SRUFMKTtcblxuXHRsZXQgX2NvbmZpZ3VyYXRpb24gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ9IGRlZmF1bHRDb25maWcoKTtcblx0bGV0IF9jb250cm9sc0xpc3RcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PSBjb250cm9sc0xpc3QoKTtcblx0Ly8gbGV0IF9kZWZhdWx0TGFuZ3VhZ2VcdFx0PSBnZXREZWZhdWx0TGFuZ3VhZ2UoKTtcblx0Ly8gbGV0IF9jdXJyZW50TGFuZ3VhZ2VcdFx0PSBpbml0RGVmYXVsdExhbmd1YWdlKCk7XG5cdGxldCBfc2hvd1ByZXZpZXdQYW5lbFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD0gZ2V0RGVmYXVsdHNob3dQcmV2aWV3UGFuZWwoKTtcblx0bGV0IF9zaG93UHJldmlld01vZGVsc1x0XHRcdFx0XHRcdFx0XHRcdFx0XHQ9IGdldERlZmF1bHRTaG93UHJldmlld01vZGVsKCk7XHRcblx0LyoganNoaW50IHZhbGlkdGhpczp0cnVlICovXG5cdHRoaXMuJGdldCBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PSBlYXN5Rm9ybURyYWdEcm9wV2F5Q29uZmlnR0VUO1xuXHR0aGlzLnNldE1vZGFsQW5pbWF0aW9uIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ9IHNldE1vZGFsQW5pbWF0aW9uO1xuXHR0aGlzLmdldE1vZGFsQW5pbWF0aW9uXHRcdFx0XHRcdFx0XHRcdFx0XHRcdD0gZ2V0TW9kYWxBbmltYXRpb247XG5cdHRoaXMuY29uZmlndXJhdGlvblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PSBfY29uZmlndXJhdGlvbjtcblx0dGhpcy5nZXRFbmFibGVkQ29udHJvbHMgXHRcdFx0XHRcdFx0XHRcdFx0XHQ9IGdldEVuYWJsZWRDb250cm9scztcblx0dGhpcy5kaXNhYmxlQ29udHJvbFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PSBkaXNhYmxlQ29udHJvbDtcblx0dGhpcy5lbmFibGVDb250cm9sXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ9IGVuYWJsZUNvbnRyb2w7XG5cdC8vIHRoaXMuc2V0TGFuZ3VhZ2VcdFx0XHRcdD0gc2V0TGFuZ3VhZ2U7XG5cdC8vIHRoaXMuZ2V0Q3VycmVudExhbmd1YWdlXHQ9IGdldEN1cnJlbnRMYW5ndWFnZTtcblx0dGhpcy5zaG93UHJldmlld1BhbmVsXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PSBzaG93UHJldmlld1BhbmVsO1xuXHR0aGlzLnNob3dQcmV2aWV3TW9kZWxzXHRcdFx0XHRcdFx0XHRcdFx0XHRcdD0gc2hvd1ByZXZpZXdNb2RlbHM7XHRcblxuXHR0aGlzLnNldExpc3RJdGVtQ3NzQ2xhc3MgXHRcdFx0XHRcdFx0XHRcdFx0XHQ9IHNldExpc3RJdGVtQ3NzQ2xhc3M7XG5cdHRoaXMuZ2V0SXRlbXNOb3RUb2NvdW50XHQgXHRcdFx0XHRcdFx0XHRcdFx0XHQ9IGdldEl0ZW1zTm90VG9jb3VudDtcblx0dGhpcy5zZXRJdGVtc05vdFRvY291bnQgXHRcdFx0XHRcdFx0XHRcdFx0XHQ9IHNldEl0ZW1zTm90VG9jb3VudDtcblx0dGhpcy5hZGRDb250cm9sVG9EcmFnRHJvcFByZXNlbnRhdGlvbk1vZGVsIFx0PSBhZGRDb250cm9sVG9EcmFnRHJvcFByZXNlbnRhdGlvbk1vZGVsO1xuXHR0aGlzLmdldERyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWwgXHRcdFx0XHRcdD0gZ2V0RHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbDtcblxuXHRmdW5jdGlvbiBzZXRMaXN0SXRlbUNzc0NsYXNzKGZyb21Db25maWcpIHtcblx0XHRfbGlzdERyYWdEcm9wSXRlbUNzc0NsYXNzZXMgPSBbXS5jb25jYXQoZnJvbUNvbmZpZyk7XG5cdH1cblxuXHRmdW5jdGlvbiBnZXRJdGVtc05vdFRvY291bnQoKSB7XG5cdFx0cmV0dXJuIF9pdGVtc05vdFRvQ291bnRGb1JlYWw7XG5cdH1cblxuXHRmdW5jdGlvbiBzZXRJdGVtc05vdFRvY291bnQoZnJvbUNvbmZpZykge1xuXHRcdF9pdGVtc05vdFRvQ291bnRGb1JlYWwgPSBhbmd1bGFyLmNvcHkoZnJvbUNvbmZpZyk7XHRcblx0fVxuXG5cdC8vc2V0IGRlZmF1bHQgY29uZmlnXG5cdGZ1bmN0aW9uIGRlZmF1bHRDb25maWcoKSB7XG5cdFx0bGV0ICBfZGVmYXVsdENvbmZpZ3VyYXRpb24gPSB7XG5cdFx0XHRtb2RhbEFuaW1hdGVkIDogZmFsc2Vcblx0XHR9O1xuXHRcdHJldHVybiBfZGVmYXVsdENvbmZpZ3VyYXRpb247XG5cdH1cblxuXHRmdW5jdGlvbiBhZGRDb250cm9sVG9EcmFnRHJvcFByZXNlbnRhdGlvbk1vZGVsKGNvbnRyb2xUb0FkZCwgZ3JvdXBUb0FkZCkge1xuICAgIGlmICh0eXBlb2YgY29udHJvbFRvQWRkICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICB0eXBlb2YgZ3JvdXBUb0FkZCAgICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgYWRkVG9Hcm91cENvbnRyb2woY29udHJvbFRvQWRkLCBncm91cFRvQWRkKTtcbiAgICB9XHRcdFxuXHR9XG5cbiAgZnVuY3Rpb24gZ2V0RHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbCgpe1xuICAgIHJldHVybiBfZHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbDtcbiAgfVx0XG5cdFxuXHQvL3Nob3cgcHJldmlldyBwYW5lbCBieSBkZWZhdWx0XG5cdGZ1bmN0aW9uIGdldERlZmF1bHRzaG93UHJldmlld1BhbmVsKCl7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cdFxuXHRcblx0Ly9zaG93IHByZXZpZXcgZGF0YSwgZmllbGRzIG1vZGVscyBpbiBwcmV2aWV3IHBhbmVsXG5cdGZ1bmN0aW9uIGdldERlZmF1bHRTaG93UHJldmlld01vZGVsKCl7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cdFxuXHRcblx0Ly8gZnVuY3Rpb24gZ2V0Q3VycmVudExhbmd1YWdlKCl7XG5cdC8vIFx0XHRyZXR1cm4gX2N1cnJlbnRMYW5ndWFnZTtcblx0Ly8gfVx0XG5cdFxuXHQvL2xpc3Qgb2YgY29udHJvbHNcblx0ZnVuY3Rpb24gY29udHJvbHNMaXN0KCl7XG5cdFx0bGV0IGNvbnRyb2xzID0gW1xuXHRcdFx0e25hbWU6ICdlbXB0eScsIFx0XHRcdFx0XHRlbmFibGVkOiB0cnVlfSxcblx0XHRcdHtuYW1lOiAnSGVhZGVyJywgXHRcdFx0XHRcdGVuYWJsZWQ6IHRydWV9LFxuXHRcdFx0e25hbWU6ICdTdWJ0aXRsZScsIFx0XHRcdFx0ZW5hYmxlZDogdHJ1ZX0sXG5cdFx0XHR7bmFtZTogJ1RleHRJbnB1dCcsIFx0XHRcdGVuYWJsZWQ6IHRydWV9LFxuXHRcdFx0e25hbWU6ICdQYXNzd29yZCcsIFx0XHRcdFx0ZW5hYmxlZDogdHJ1ZX0sXG5cdFx0XHR7bmFtZTogJ0VtYWlsJywgXHRcdFx0XHRcdGVuYWJsZWQ6IHRydWV9LFxuXHRcdFx0e25hbWU6ICdEYXRlJywgXHRcdFx0XHRcdFx0ZW5hYmxlZDogdHJ1ZX0sXG5cdFx0XHR7bmFtZTogJ1RleGFyZWEnLFx0IFx0XHRcdFx0ZW5hYmxlZDogdHJ1ZX0sXG5cdFx0XHR7bmFtZTogJ1JpY2hUZXh0RWRpdG9yJywgXHRlbmFibGVkOiB0cnVlfSxcblx0XHRcdHtuYW1lOiAnUmFkaW8nLCBcdFx0XHRcdFx0ZW5hYmxlZDogdHJ1ZX0sXG5cdFx0XHR7bmFtZTogJ0NoZWNrYm94JywgXHRcdFx0XHRlbmFibGVkOiB0cnVlfSxcblx0XHRcdHtuYW1lOiAnQmFzaWNTZWxlY3QnLCBcdFx0ZW5hYmxlZDogdHJ1ZX0sXG5cdFx0XHR7bmFtZTogJ0dyb3VwZWRTZWxlY3QnLCBcdGVuYWJsZWQ6IHRydWV9XG5cdFx0XTtcblx0XHRyZXR1cm4gY29udHJvbHM7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHNob3dQcmV2aWV3UGFuZWwod2FudFRvU2hvdyl7XG5cdFx0aWYgKGFuZ3VsYXIuaXNEZWZpbmVkKHdhbnRUb1Nob3cpKSB7XG5cdFx0XHRpZih3YW50VG9TaG93ID09PSB0cnVlKSBcdF9zaG93UHJldmlld1BhbmVsIFx0PSB0cnVlO1xuXHRcdFx0aWYod2FudFRvU2hvdyA9PT0gZmFsc2UpIFx0X3Nob3dQcmV2aWV3UGFuZWwgXHQ9IGZhbHNlO1xuXHRcdH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gc2hvd1ByZXZpZXdNb2RlbHMod2FudFRvU2hvdyl7XG5cdFx0aWYgKGFuZ3VsYXIuaXNEZWZpbmVkKHdhbnRUb1Nob3cpKSB7XG5cdFx0XHRpZih3YW50VG9TaG93ID09PSB0cnVlKSBcdF9zaG93UHJldmlld01vZGVscyBcdD0gdHJ1ZTtcblx0XHRcdGlmKHdhbnRUb1Nob3cgPT09IGZhbHNlKSBcdF9zaG93UHJldmlld01vZGVscyBcdD0gZmFsc2U7XG5cdFx0fVx0XHRcdFx0XG5cdH1cdFx0XG5cdFxuXHQvLyAvL2xhbmd1YWdlIDogc2V0IGRlZmF1bHQgdG8gZW5nbGlzaFxuXHQvLyBmdW5jdGlvbiBnZXREZWZhdWx0TGFuZ3VhZ2UoKXtcblx0Ly8gXHRsZXQgbGFuZyA9ICdlbic7XG5cdC8vIFx0cmV0dXJuIGxhbmc7XG5cdC8vIH1cblx0XG5cdC8vIGZ1bmN0aW9uIHNldERlZmF1bHRMYW5ndWFnZSgpe1xuXHQvLyBcdF9jdXJyZW50TGFuZ3VhZ2UgPSBfZGVmYXVsdExhbmd1YWdlO1xuXHQvLyBcdCR0cmFuc2xhdGVQcm92aWRlci5wcmVmZXJyZWRMYW5ndWFnZShfY3VycmVudExhbmd1YWdlKTtcblx0Ly8gXHRyZXR1cm4gX2N1cnJlbnRMYW5ndWFnZTtcblx0Ly8gfVx0XG5cdFxuXHQvLyBmdW5jdGlvbiBzZXRMYW5ndWFnZShsYW5ndWFnZSl7XHRcdFx0XHRcblx0Ly8gXHRpZiAoYW5ndWxhci5pc1N0cmluZyhsYW5ndWFnZSkpIHtcblx0Ly8gXHRcdF9jdXJyZW50TGFuZ3VhZ2UgPSBsYW5ndWFnZTtcblx0Ly8gXHRcdCR0cmFuc2xhdGVQcm92aWRlci5wcmVmZXJyZWRMYW5ndWFnZShsYW5ndWFnZSk7XG5cdC8vIFx0fWVsc2V7XG5cdC8vIFx0XHRzZXREZWZhdWx0TGFuZ3VhZ2UoKTtcblx0Ly8gXHR9XG5cdC8vIH1cblx0XG5cdC8vIGZ1bmN0aW9uIGluaXREZWZhdWx0TGFuZ3VhZ2UoKXtcblx0Ly8gXHQkdHJhbnNsYXRlUHJvdmlkZXIudXNlU2FuaXRpemVWYWx1ZVN0cmF0ZWd5KCdlc2NhcGUnKTsgXHQvL3NlY3VyaXR5IDogRW5hYmxlIGVzY2FwaW5nIG9mIEhUTUxcblx0Ly8gXHQkdHJhbnNsYXRlUHJvdmlkZXIuZmFsbGJhY2tMYW5ndWFnZShfZGVmYXVsdExhbmd1YWdlKTtcdC8vZmFsbGJhY2sgbGFuZ3VhZ2UgdG8gZGVmYXVsdCBsYW5ndWFnZVxuXHQvLyBcdCR0cmFuc2xhdGVQcm92aWRlci5wcmVmZXJyZWRMYW5ndWFnZShfZGVmYXVsdExhbmd1YWdlKTtcblx0Ly8gXHRyZXR1cm4gX2RlZmF1bHRMYW5ndWFnZTtcblx0Ly8gfVxuXHRcblx0ZnVuY3Rpb24gZ2V0RW5hYmxlZENvbnRyb2xzKCkge1xuXHRcdHJldHVybiBfY29udHJvbHNMaXN0O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBkaXNhYmxlQ29udHJvbChjb250cm9sTmFtZSkge1xuXHRcdGlmIChhbmd1bGFyLmlzU3RyaW5nKGNvbnRyb2xOYW1lKSkge1xuXHRcdFx0YW5ndWxhci5mb3JFYWNoKF9jb250cm9sc0xpc3QsIChhQ29udHJvbCkgPT4ge1xuXHRcdFx0XHRpZiAoYUNvbnRyb2wubmFtZSA9PT0gY29udHJvbE5hbWUpIGFDb250cm9sLmVuYWJsZWQgPSBmYWxzZTtcblx0XHRcdH0pO1x0XHRcdFx0XHRcdFxuXHRcdH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gZW5hYmxlQ29udHJvbChjb250cm9sTmFtZSkge1xuXHRcdGlmIChhbmd1bGFyLmlzU3RyaW5nKGNvbnRyb2xOYW1lKSkge1xuXHRcdFx0YW5ndWxhci5mb3JFYWNoKF9jb250cm9sc0xpc3QsIChhQ29udHJvbCkgPT4ge1xuXHRcdFx0XHRpZiAoYUNvbnRyb2wubmFtZSA9PT0gY29udHJvbE5hbWUpIGFDb250cm9sLmVuYWJsZWQgPSB0cnVlO1xuXHRcdFx0fSk7XHRcdFx0XHRcdFx0XG5cdFx0fVx0XHRcdFx0XG5cdH1cdFx0XHRcdFx0XHRcblx0XG5cdGZ1bmN0aW9uIHNldE1vZGFsQW5pbWF0aW9uKGZsYWdDb25maWcpIHtcblx0XHRsZXQgdmFsdWVUb0FwcGx5ID0gKGZsYWdDb25maWcgPT09IHRydWUpID8gXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZsYWdDb25maWcgIFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiAoZmxhZ0NvbmZpZyA9PT0gZmFsc2UgPyBcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmbGFnQ29uZmlnIFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IF9jb25maWd1cmF0aW9uLm1vZGFsQW5pbWF0ZWQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XG5cdFx0X2NvbmZpZ3VyYXRpb24ubW9kYWxBbmltYXRlZCA9IHZhbHVlVG9BcHBseTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2V0TW9kYWxBbmltYXRpb24oKSB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdHJldHVybiBfY29uZmlndXJhdGlvbi5tb2RhbEFuaW1hdGVkO1xuXHR9XHRcdFxuXHRcblx0XG5cdC8vJGdldCBpbXBsZW1lbnRhdGlvbiA6XG5cdC8vIGVhc3lGb3JtRHJhZ0Ryb3BXYXlDb25maWdHRVQuJGluamVjdCA9IFsnJHRyYW5zbGF0ZSddO1xuXHQvLyBmdW5jdGlvbiBlYXN5Rm9ybURyYWdEcm9wV2F5Q29uZmlnR0VUKCR0cmFuc2xhdGUpe1xuXHRlYXN5Rm9ybURyYWdEcm9wV2F5Q29uZmlnR0VULiRpbmplY3QgPSBbXTtcblx0ZnVuY3Rpb24gZWFzeUZvcm1EcmFnRHJvcFdheUNvbmZpZ0dFVCgpe1x0XHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcblx0XHRsZXQgc2VydmljZSA9IHtcblx0XHRcdHNldE1vZGFsQW5pbWF0aW9uIFx0XHRcdFx0XHRcdFx0XHRcdDogc2V0TW9kYWxBbmltYXRpb25GY3QsXG5cdFx0XHRnZXRNb2RhbEFuaW1hdGlvblZhbHVlIFx0XHRcdFx0XHRcdFx0OiBnZXRNb2RhbEFuaW1hdGlvblZhbHVlLFxuXHRcdFx0Z2V0TGlzdEVuYWJsZWRDb250cm9sXHRcdFx0XHRcdFx0XHRcdDogZ2V0TGlzdEVuYWJsZWRDb250cm9sLFxuXHRcdFx0Ly8gc2V0TGFuZ3VhZ2UgXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogc3dpdGNoTGFuZ3VhZ2UsXG5cdFx0XHQvLyBnZXRDdXJyZW50TGFuZ3VhZ2VcdFx0XHRcdFx0XHRcdFx0OiBnZXRDdXJyZW50TGFuZ3VhZ2UsXG5cdFx0XHRpc1ByZXZpZXdQYW5lbFZpc2libGVcdFx0XHRcdFx0XHRcdFx0OiBpc1ByZXZpZXdQYW5lbFZpc2libGUsXG5cdFx0XHRhcmVQcmV2aWV3TW9kZWxzVmlzaWJsZVx0XHRcdFx0XHRcdFx0OiBhcmVQcmV2aWV3TW9kZWxzVmlzaWJsZSxcblx0XHRcdFxuXHRcdFx0Z2V0TGlzdEl0ZW1Dc3NDbGFzcyBcdFx0XHRcdFx0XHRcdFx0OiBnZXRMaXN0SXRlbUNzc0NsYXNzLFxuXHRcdFx0Z2V0SXRlbXNOb3RUb0NvdW50IFx0XHRcdFx0XHRcdFx0XHRcdDogZ2V0SXRlbXNOb3RUb0NvdW50LFxuXHRcdFx0Z2V0SXRlbUNzc0RlcGVuZGluZ051bWJlckl0ZW1zSW5Sb3cgOiBnZXRJdGVtQ3NzRGVwZW5kaW5nTnVtYmVySXRlbXNJblJvdyxcblx0XHRcdGdldERpc3RpbmN0SXRlbUNzc0NsYXNzIFx0XHRcdFx0XHRcdDogZ2V0RGlzdGluY3RJdGVtQ3NzQ2xhc3MsXG5cdFx0XHRnZXREcmFnRHJvcENvbmZpZ01vZGVsIFx0XHRcdFx0XHRcdFx0OiBnZXREcmFnRHJvcENvbmZpZ01vZGVsLFxuXHRcdFx0Z2V0RHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbCBcdFx0XHRcdDogZ2V0RHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbCxcblx0XHRcdHNldERyYWdEcm9wQ29uZmlnQ29udGFpbmVyRGVjb3JhdGlvbkNvbGxhcHNlIDogc2V0RHJhZ0Ryb3BDb25maWdDb250YWluZXJEZWNvcmF0aW9uQ29sbGFwc2Vcblx0XHR9O1xuXHRcdHJldHVybiBzZXJ2aWNlO1xuXHRcdFxuXHRcdGZ1bmN0aW9uIGdldERyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWwoKSB7XG5cdFx0XHRyZXR1cm4gX2RyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWw7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gc2V0RHJhZ0Ryb3BDb25maWdDb250YWluZXJEZWNvcmF0aW9uQ29sbGFwc2UoZHJhZ0Ryb3BDb25maWdNb2RlbCwgaW5kZXhWYWx1ZSwgaXNDb2xsYXBzZWRCb29sKSB7XG4gICAgICBpZiAodHlwZW9mIGluZGV4VmFsdWUgICAgICAgIT09ICd1bmRlZmluZWQnICYmXG5cdFx0XHRcdFx0dHlwZW9mIGlzQ29sbGFwc2VkQm9vbCAgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmIChpbmRleFZhbHVlID09PSBwYXJzZUludChpbmRleFZhbHVlLCAxMCkpIHtcbiAgICAgICAgICBkcmFnRHJvcENvbmZpZ01vZGVsLmNvbnRhaW5lckNvbmZpZy5kZWNvcmF0aW9uW2luZGV4VmFsdWVdLmlzQ29sbGFwc2VkID0gaXNDb2xsYXBzZWRCb29sO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgcmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcblxuXHRcdGZ1bmN0aW9uIGdldERyYWdEcm9wQ29uZmlnTW9kZWwoKSB7XG5cdFx0XHRyZXR1cm4gX2RyYWdEcm9wQ29uZmlnTW9kZWw7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gZ2V0RGlzdGluY3RJdGVtQ3NzQ2xhc3MoKSB7XG4gICAgICBsZXQgZGlzdGluY3RDc3NDbGFzcyA9IFtdO1xuICAgICAgYW5ndWxhci5mb3JFYWNoKF9saXN0RHJhZ0Ryb3BJdGVtQ3NzQ2xhc3NlcywgKHZhbHVlUmVmKT0+e1xuXG4gICAgICAgIGxldCBjc3NDbGFzc1JlZiA9IHZhbHVlUmVmLmNzc0NsYXNzO1xuXG4gICAgICAgIGlmIChkaXN0aW5jdENzc0NsYXNzLmxlbmd0aCA9PT0gMCl7XG4gICAgICAgICAgZGlzdGluY3RDc3NDbGFzcy5wdXNoKGNzc0NsYXNzUmVmKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgY2FuQWRkID0gdHJ1ZTtcbiAgICAgICAgICBhbmd1bGFyLmZvckVhY2goZGlzdGluY3RDc3NDbGFzcywgKHZhbHVlUHJvYyk9PntcbiAgICAgICAgICAgIGxldCBjc3NDbGFzc1Byb2MgPSB2YWx1ZVByb2M7XG4gICAgICAgICAgICBpZiAoY3NzQ2xhc3NSZWYgPT09IGNzc0NsYXNzUHJvYykge1xuICAgICAgICAgICAgICBjYW5BZGQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoY2FuQWRkKSBkaXN0aW5jdENzc0NsYXNzLnB1c2goY3NzQ2xhc3NSZWYpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkaXN0aW5jdENzc0NsYXNzO1x0XHRcdFxuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIGdldEl0ZW1Dc3NEZXBlbmRpbmdOdW1iZXJJdGVtc0luUm93KG51bWJlck9mSXRlbXMpIHtcbiAgICAgIGlmKHR5cGVvZiBudW1iZXJPZkl0ZW1zICE9PSAndW5kZWZpbmVkJyl7XG4gICAgICAgIGxldCBjbGFzc1RvUmV0dXJuID0gJyc7XG4gICAgICAgIGZvciAobGV0ICBpID0gX2xpc3REcmFnRHJvcEl0ZW1Dc3NDbGFzc2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgaWYgKF9saXN0RHJhZ0Ryb3BJdGVtQ3NzQ2xhc3Nlc1tpXS5udW1iZXJJdGVtUGVyUm93ID09PSBudW1iZXJPZkl0ZW1zKSB7XG4gICAgICAgICAgICBjbGFzc1RvUmV0dXJuID0gX2xpc3REcmFnRHJvcEl0ZW1Dc3NDbGFzc2VzW2ldLmNzc0NsYXNzOyAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjbGFzc1RvUmV0dXJuO1xuICAgICAgfWVsc2V7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cdFx0XHRcblx0XHR9XG5cblx0XHRmdW5jdGlvbiBnZXRMaXN0SXRlbUNzc0NsYXNzKCkge1xuXHRcdFx0cmV0dXJuIF9saXN0RHJhZ0Ryb3BJdGVtQ3NzQ2xhc3NlcztcdFxuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIGdldEl0ZW1zTm90VG9Db3VudCgpIHtcblx0XHRcdHJldHVybiBfaXRlbXNOb3RUb0NvdW50Rm9SZWFsO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIGdldE1vZGFsQW5pbWF0aW9uVmFsdWUoKXtcblx0XHRcdHJldHVybiBfY29uZmlndXJhdGlvbi5tb2RhbEFuaW1hdGVkO1xuXHRcdH1cdFx0XHRcdFxuXHRcdFxuXHRcdGZ1bmN0aW9uIHNldE1vZGFsQW5pbWF0aW9uRmN0KHZhbHVlKXtcblx0XHRcdHNldE1vZGFsQW5pbWF0aW9uKHZhbHVlKTtcblx0XHR9XG5cdFx0XG5cdFx0ZnVuY3Rpb24gZ2V0TGlzdEVuYWJsZWRDb250cm9sKCl7XG5cdFx0XHRyZXR1cm4gYW5ndWxhci5jb3B5KF9jb250cm9sc0xpc3QpO1xuXHRcdH1cblx0XHRcblx0XHQvLyBmdW5jdGlvbiBzd2l0Y2hMYW5ndWFnZShsYW5ndWFnZSl7XG5cdFx0Ly8gXHRpZiAoYW5ndWxhci5pc1N0cmluZyhsYW5ndWFnZSkpIHtcblx0XHQvLyBcdFx0X2N1cnJlbnRMYW5ndWFnZSA9IGxhbmd1YWdlO1xuXHRcdC8vIFx0XHQkdHJhbnNsYXRlLnVzZShsYW5ndWFnZSk7XG5cdFx0Ly8gXHR9ZWxzZXtcblx0XHQvLyBcdFx0c2V0RGVmYXVsdExhbmd1YWdlKCk7XG5cdFx0Ly8gXHR9XG5cdFx0Ly8gfVx0XHRcdFx0XHRcblxuXHRcdGZ1bmN0aW9uIGlzUHJldmlld1BhbmVsVmlzaWJsZSgpe1xuXHRcdFx0cmV0dXJuIF9zaG93UHJldmlld1BhbmVsO1xuXHRcdH1cblx0XHRcblx0XHRmdW5jdGlvbiBhcmVQcmV2aWV3TW9kZWxzVmlzaWJsZSgpe1xuXHRcdFx0cmV0dXJuIF9zaG93UHJldmlld01vZGVscztcblx0XHR9XHRcdFx0XHRcblx0fVxuXG4gIC8qKlxuICAgKiBhZGRUb0dyb3VwQ29udHJvbCA6IGFkZCBjb250cm9sIHRvIF9kcmFnRHJvcFByZXNlbnRhdGlvbk1vZGVsXG4gICAqIEBwYXJhbSB7W3R5cGVdfSB0aGlzQ29udHJvbCA6IGNvbnRyb2wgdG8gYWRkXG4gICAqIEBwYXJhbSB7W3R5cGVdfSB0aGlzR3JvdXAgICA6IGdyb3VwSWQgd2hlciB0aGlzIGNvbnRyb2wgc2hvdWxkIGJlIGFkZGVkXG4gICAqXG4gICAqIE5PVEUgOiBpZiBfZHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbCB3cm9uZyBpbml0aWFsaXplZCBpdCB3aWxsIGNyZWF0ZSBsaXN0IG9mIGdyb3VwIGNvbmZvcm1pbmcgdG8gXG4gICAqIGNvbmZpZ01vZGVsXG4gICAqL1xuICBmdW5jdGlvbiBhZGRUb0dyb3VwQ29udHJvbCh0aGlzQ29udHJvbCwgdGhpc0dyb3VwKXtcbiAgICAvKipcbiAgICAgKiBzZWFyY2ggZ3JvdXAgaWYgYWxyZWFkeSBleGlzdHNcbiAgICAgKi9cbiAgICBpZiAoX2RyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWxbMF0ubGVuZ3RoID4gMCkge1xuICAgICAgLyoqXG4gICAgICAgKiBjYXNlIHdoZW4gX2RyYWdEcm9wQ29uZmlnTW9kZWwuY29udGFpbmVyQ29uZmlnLmRlY29yYXRpb24ubGVuZ3RoIGlzID4gdG8gX2RyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWxbMF0ubGVuZ3RoXG4gICAgICAgKlxuICAgICAgICogZm9yIGluc3RhbmNlIDogaW5pdGlhbGl6YXRpb24gX2RyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWxbMF0gaW4gYmV0d2VlblxuICAgICAgICovXG4gICAgICBpZiAoX2RyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWxbMF0ubGVuZ3RoIDwgX2RyYWdEcm9wQ29uZmlnTW9kZWwuY29udGFpbmVyQ29uZmlnLmRlY29yYXRpb24ubGVuZ3RoKSB7XG4gICAgICAgIGxldCBtaXNzaW5nR3JvdXBOdW1iZXIgPSBfZHJhZ0Ryb3BDb25maWdNb2RlbC5jb250YWluZXJDb25maWcuZGVjb3JhdGlvbi5sZW5ndGggLSBfZHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbFswXS5sZW5ndGg7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaXNzaW5nR3JvdXBOdW1iZXI7IGkrKykge1xuICAgICAgICAgIF9kcmFnRHJvcFByZXNlbnRhdGlvbk1vZGVsWzBdLnB1c2goW10pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvKipcbiAgICAgICAqIHB1c2ggY29udHJvbCB0byByaWdodCBpbmRleCBcbiAgICAgICAqIChkZWR1Y2VkIGJ5IF9kcmFnRHJvcENvbmZpZ01vZGVsLmNvbnRhaW5lckNvbmZpZy5kZWNvcmF0aW9uLldoZW5JbmRleCB2YWx1ZSBmb3IgZ3JvdXBJZCA9PT0gdGhpc0dyb3VwKVxuICAgICAgICovXG4gICAgICAgX2RyYWdEcm9wQ29uZmlnTW9kZWwuY29udGFpbmVyQ29uZmlnLmRlY29yYXRpb24uZm9yRWFjaCgoZ3JvdXBDb25maWcpPT57XG4gICAgICAgIGlmICh0aGlzR3JvdXAuYWRkVG9Hcm91cEN0cmwgPT09IGdyb3VwQ29uZmlnLmdyb3VwSWQpIHtcbiAgICAgICAgICBfZHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbFswXVtncm91cENvbmZpZy5XaGVuSW5kZXhdLnB1c2godGhpc0NvbnRyb2wpO1xuICAgICAgICB9XG4gICAgICAgfSk7XG4gICAgfWVsc2V7XG4gICAgICAvKipcbiAgICAgICAqIG5vIGdyb3VwIG5vIGNvbnRyb2xcbiAgICAgICAqXG4gICAgICAgKiBpbml0aWFsaXplIF9kcmFnRHJvcENvbmZpZ01vZGVsLmNvbnRhaW5lckNvbmZpZy5kZWNvcmF0aW9uIGxpc3RcbiAgICAgICAqL1xuICAgICAgX2RyYWdEcm9wQ29uZmlnTW9kZWwuY29udGFpbmVyQ29uZmlnLmRlY29yYXRpb24uZm9yRWFjaCgoKT0+X2RyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWxbMF0ucHVzaChbXSkpO1xuICAgICAgLyoqXG4gICAgICAgKiBwdXNoIGNvbnRyb2wgdG8gcmlnaHQgaW5kZXggXG4gICAgICAgKiAoZGVkdWNlZCBieSBfZHJhZ0Ryb3BDb25maWdNb2RlbC5jb250YWluZXJDb25maWcuZGVjb3JhdGlvbi5XaGVuSW5kZXggdmFsdWUgZm9yIGdyb3VwSWQgPT09IHRoaXNHcm91cClcbiAgICAgICAqL1xuICAgICAgIF9kcmFnRHJvcENvbmZpZ01vZGVsLmNvbnRhaW5lckNvbmZpZy5kZWNvcmF0aW9uLmZvckVhY2goKGdyb3VwQ29uZmlnKT0+e1xuICAgICAgICBpZiAodGhpc0dyb3VwLmFkZFRvR3JvdXBDdHJsID09PSBncm91cENvbmZpZy5ncm91cElkKSB7XG4gICAgICAgICAgX2RyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWxbMF1bZ3JvdXBDb25maWcuV2hlbkluZGV4XS5wdXNoKHRoaXNDb250cm9sKTtcbiAgICAgICAgfVxuICAgICAgIH0pOyBcbiAgICB9XG4gIH0gXHRcblxufVxuXG4vLyBlYXN5Rm9ybURyYWdXYXlDb25maWcuJGluamVjdCA9IFsnJHRyYW5zbGF0ZVByb3ZpZGVyJ107XG5cbmVhc3lGb3JtRHJhZ1dheUNvbmZpZy4kaW5qZWN0ID0gW107XG5cbmV4cG9ydCBkZWZhdWx0IGVhc3lGb3JtRHJhZ1dheUNvbmZpZztcblxuZXhwb3J0IHtFQVNZX0ZPUk1fRFJBR19EUk9QX1dBWV9DT05GSUdfTkFNRX07XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2VkYURyYWdEcm9wV2F5RWFzeUZvcm1HZW4vZWRhRHJhZ0Ryb3BXYXkuZWRhRHJhZ2Ryb3BXYXlFYXN5Rm9ybUdlbi5wcm92aWRlci5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 79 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar LIST_DRAG_DROP_ITEM_CSS_CLASSES = [{\n cssClass: 'col-md-12',\n numberItemPerRow: 0\n}, {\n cssClass: 'col-md-12',\n numberItemPerRow: 1\n}, {\n cssClass: 'col-md-6',\n numberItemPerRow: 2\n}, {\n cssClass: 'col-md-4',\n numberItemPerRow: 3\n}];\n\nvar DRAG_DROP_CONFIG_MODEL = {\n dropZoneConfig: {\n decoration: [{\n WhenIndex: 0,\n ApplycssClass: 'col-md-4',\n fontAwesomeIcon: 'fa fa-level-up',\n title: 'Drag control from here : '\n }, {\n WhenIndex: 1,\n ApplycssClass: 'col-md-8',\n fontAwesomeIcon: 'fa fa-level-down',\n title: 'Drop control into here : '\n }],\n verboseMode: false\n },\n containerConfig: {\n decoration: [{\n WhenIndex: 0,\n ApplycssClass: 'col-md-12',\n title: 'Blank : ',\n groupId: 'blank',\n isCollapsed: true\n }, {\n WhenIndex: 1,\n ApplycssClass: 'col-md-12',\n title: 'Headers : ',\n groupId: 'headers',\n isCollapsed: true\n }, {\n WhenIndex: 2,\n ApplycssClass: 'col-md-12',\n title: 'Text inputs : ',\n groupId: 'inputs',\n isCollapsed: true\n }, {\n WhenIndex: 3,\n ApplycssClass: 'col-md-12',\n title: 'Textareas : ',\n groupId: 'textareas',\n isCollapsed: true\n }, {\n WhenIndex: 4,\n ApplycssClass: 'col-md-12',\n title: 'Radios : ',\n groupId: 'radios',\n isCollapsed: true\n }, {\n WhenIndex: 5,\n ApplycssClass: 'col-md-12',\n title: 'Checkboxes : ',\n groupId: 'checkboxes',\n isCollapsed: true\n }, {\n WhenIndex: 6,\n ApplycssClass: 'col-md-12',\n title: 'Selects : ',\n groupId: 'selects',\n isCollapsed: true\n }],\n verboseMode: false,\n collapseEnabled: true,\n collapseCtrl: [{\n atIndex: 0,\n collapse: true\n }, {\n atIndex: 1,\n collapse: true\n }]\n },\n itemConfig: {\n verboseMode: false\n }\n};\n\nvar DRAG_DROP_PRESENTATION_MODEL = [\n//1 column here is control selection column\n[], [\n//empty 1st line at initialisation\n[]]];\n\nvar ITEMS_NOT_TO_COUNT_FOR_REAL = {\n //placeholder : '',\n itemBeingDragged: ''\n};\n\nexports.LIST_DRAG_DROP_ITEM_CSS_CLASSES = LIST_DRAG_DROP_ITEM_CSS_CLASSES;\nexports.DRAG_DROP_CONFIG_MODEL = DRAG_DROP_CONFIG_MODEL;\nexports.DRAG_DROP_PRESENTATION_MODEL = DRAG_DROP_PRESENTATION_MODEL;\nexports.ITEMS_NOT_TO_COUNT_FOR_REAL = ITEMS_NOT_TO_COUNT_FOR_REAL;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZWRhRHJhZ0Ryb3BXYXlFYXN5Rm9ybUdlbi9lZGFEcmFnRHJvcFdheS5lZGFEcmFnZHJvcFdheUVhc3lGb3JtR2VuLnByb3ZpZGVyLmhlbHBlcnMuanM/MGFjMCJdLCJuYW1lcyI6WyJMSVNUX0RSQUdfRFJPUF9JVEVNX0NTU19DTEFTU0VTIiwiY3NzQ2xhc3MiLCJudW1iZXJJdGVtUGVyUm93IiwiRFJBR19EUk9QX0NPTkZJR19NT0RFTCIsImRyb3Bab25lQ29uZmlnIiwiZGVjb3JhdGlvbiIsIldoZW5JbmRleCIsIkFwcGx5Y3NzQ2xhc3MiLCJmb250QXdlc29tZUljb24iLCJ0aXRsZSIsInZlcmJvc2VNb2RlIiwiY29udGFpbmVyQ29uZmlnIiwiZ3JvdXBJZCIsImlzQ29sbGFwc2VkIiwiY29sbGFwc2VFbmFibGVkIiwiY29sbGFwc2VDdHJsIiwiYXRJbmRleCIsImNvbGxhcHNlIiwiaXRlbUNvbmZpZyIsIkRSQUdfRFJPUF9QUkVTRU5UQVRJT05fTU9ERUwiLCJJVEVNU19OT1RfVE9fQ09VTlRfRk9SX1JFQUwiLCJpdGVtQmVpbmdEcmFnZ2VkIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQU1BLGtDQUFrQyxDQUN0QztBQUNFQyxZQUFXLFdBRGI7QUFFRUMsb0JBQWtCO0FBRnBCLENBRHNDLEVBS3RDO0FBQ0VELFlBQVcsV0FEYjtBQUVFQyxvQkFBa0I7QUFGcEIsQ0FMc0MsRUFTdEM7QUFDRUQsWUFBVyxVQURiO0FBRUVDLG9CQUFrQjtBQUZwQixDQVRzQyxFQWF0QztBQUNFRCxZQUFXLFVBRGI7QUFFRUMsb0JBQWtCO0FBRnBCLENBYnNDLENBQXhDOztBQW1CQSxJQUFNQyx5QkFBMEI7QUFDOUJDLGtCQUFpQjtBQUNmQyxnQkFBYyxDQUNkO0FBQ0VDLGlCQUFXLENBRGI7QUFFRUMscUJBQWUsVUFGakI7QUFHRUMsdUJBQWlCLGdCQUhuQjtBQUlFQyxhQUFPO0FBSlQsS0FEYyxFQU9kO0FBQ0VILGlCQUFXLENBRGI7QUFFRUMscUJBQWUsVUFGakI7QUFHRUMsdUJBQWlCLGtCQUhuQjtBQUlFQyxhQUFPO0FBSlQsS0FQYyxDQURDO0FBZWpCQyxpQkFBYztBQWZHLEdBRGE7QUFrQjlCQyxtQkFBa0I7QUFDaEJOLGdCQUFnQixDQUNkO0FBQ0VDLGlCQUFnQixDQURsQjtBQUVFQyxxQkFBZ0IsV0FGbEI7QUFHRUUsYUFBZ0IsVUFIbEI7QUFJRUcsZUFBZ0IsT0FKbEI7QUFLRUMsbUJBQWdCO0FBTGxCLEtBRGMsRUFRZDtBQUNFUCxpQkFBZ0IsQ0FEbEI7QUFFRUMscUJBQWdCLFdBRmxCO0FBR0VFLGFBQWdCLFlBSGxCO0FBSUVHLGVBQWdCLFNBSmxCO0FBS0VDLG1CQUFnQjtBQUxsQixLQVJjLEVBZWQ7QUFDRVAsaUJBQWdCLENBRGxCO0FBRUVDLHFCQUFnQixXQUZsQjtBQUdFRSxhQUFnQixnQkFIbEI7QUFJRUcsZUFBZ0IsUUFKbEI7QUFLRUMsbUJBQWdCO0FBTGxCLEtBZmMsRUFzQmQ7QUFDRVAsaUJBQWdCLENBRGxCO0FBRUVDLHFCQUFnQixXQUZsQjtBQUdFRSxhQUFnQixjQUhsQjtBQUlFRyxlQUFnQixXQUpsQjtBQUtFQyxtQkFBZ0I7QUFMbEIsS0F0QmMsRUE2QmQ7QUFDRVAsaUJBQWdCLENBRGxCO0FBRUVDLHFCQUFnQixXQUZsQjtBQUdFRSxhQUFnQixXQUhsQjtBQUlFRyxlQUFnQixRQUpsQjtBQUtFQyxtQkFBZ0I7QUFMbEIsS0E3QmMsRUFvQ2Q7QUFDRVAsaUJBQWdCLENBRGxCO0FBRUVDLHFCQUFnQixXQUZsQjtBQUdFRSxhQUFnQixlQUhsQjtBQUlFRyxlQUFnQixZQUpsQjtBQUtFQyxtQkFBZ0I7QUFMbEIsS0FwQ2MsRUEyQ2Q7QUFDRVAsaUJBQWdCLENBRGxCO0FBRUVDLHFCQUFnQixXQUZsQjtBQUdFRSxhQUFnQixZQUhsQjtBQUlFRyxlQUFnQixTQUpsQjtBQUtFQyxtQkFBZ0I7QUFMbEIsS0EzQ2MsQ0FEQTtBQW9EaEJILGlCQUFrQixLQXBERjtBQXFEaEJJLHFCQUFrQixJQXJERjtBQXNEaEJDLGtCQUFrQixDQUNoQjtBQUNFQyxlQUFVLENBRFo7QUFFRUMsZ0JBQVc7QUFGYixLQURnQixFQUtoQjtBQUNFRCxlQUFVLENBRFo7QUFFRUMsZ0JBQVc7QUFGYixLQUxnQjtBQXRERixHQWxCWTtBQW1GOUJDLGNBQWtCO0FBQ2xCUixpQkFBYztBQURJO0FBbkZZLENBQWhDOztBQXdGQSxJQUFNUywrQkFBK0I7QUFDbkM7QUFDQSxFQUZtQyxFQUduQztBQUNFO0FBQ0EsRUFGRixDQUhtQyxDQUFyQzs7QUFTQSxJQUFNQyw4QkFBOEI7QUFDbEM7QUFDQUMsb0JBQXNCO0FBRlksQ0FBcEM7O1FBTUVyQiwrQixHQUFBQSwrQjtRQUNBRyxzQixHQUFBQSxzQjtRQUNBZ0IsNEIsR0FBQUEsNEI7UUFDQUMsMkIsR0FBQUEsMkIiLCJmaWxlIjoiNzkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBMSVNUX0RSQUdfRFJPUF9JVEVNX0NTU19DTEFTU0VTID0gW1xuICB7XG4gICAgY3NzQ2xhc3MgOiAnY29sLW1kLTEyJywgXG4gICAgbnVtYmVySXRlbVBlclJvdzogMFxuICB9LFxuICB7XG4gICAgY3NzQ2xhc3MgOiAnY29sLW1kLTEyJywgXG4gICAgbnVtYmVySXRlbVBlclJvdzogMVxuICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAge1xuICAgIGNzc0NsYXNzIDogJ2NvbC1tZC02JywgXG4gICAgbnVtYmVySXRlbVBlclJvdzogMlxuICB9LFxuICB7XG4gICAgY3NzQ2xhc3MgOiAnY29sLW1kLTQnLCBcbiAgICBudW1iZXJJdGVtUGVyUm93OiAzXG4gIH1cbl07IFxuXG5jb25zdCBEUkFHX0RST1BfQ09ORklHX01PREVMID0gIHtcbiAgZHJvcFpvbmVDb25maWcgOiB7XG4gICAgZGVjb3JhdGlvbiA6ICBbXG4gICAge1xuICAgICAgV2hlbkluZGV4OiAwLFxuICAgICAgQXBwbHljc3NDbGFzczogJ2NvbC1tZC00JywgXG4gICAgICBmb250QXdlc29tZUljb246ICdmYSBmYS1sZXZlbC11cCcsXG4gICAgICB0aXRsZTogJ0RyYWcgY29udHJvbCBmcm9tIGhlcmUgOiAnXG4gICAgfSxcbiAgICB7XG4gICAgICBXaGVuSW5kZXg6IDEsXG4gICAgICBBcHBseWNzc0NsYXNzOiAnY29sLW1kLTgnLCBcbiAgICAgIGZvbnRBd2Vzb21lSWNvbjogJ2ZhIGZhLWxldmVsLWRvd24nLFxuICAgICAgdGl0bGU6ICdEcm9wIGNvbnRyb2wgaW50byBoZXJlIDogJ1xuICAgIH1cbiAgXSxcbiAgdmVyYm9zZU1vZGUgOiBmYWxzZVxufSxcbiAgY29udGFpbmVyQ29uZmlnIDoge1xuICAgIGRlY29yYXRpb24gOiAgICBbXG4gICAgICB7XG4gICAgICAgIFdoZW5JbmRleCAgICAgOiAwLFxuICAgICAgICBBcHBseWNzc0NsYXNzIDogJ2NvbC1tZC0xMicsIFxuICAgICAgICB0aXRsZSAgICAgICAgIDogJ0JsYW5rIDogJyxcbiAgICAgICAgZ3JvdXBJZCAgICAgICA6ICdibGFuaycsXG4gICAgICAgIGlzQ29sbGFwc2VkICAgOiB0cnVlIFxuICAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAge1xuICAgICAgICBXaGVuSW5kZXggICAgIDogMSxcbiAgICAgICAgQXBwbHljc3NDbGFzcyA6ICdjb2wtbWQtMTInLCBcbiAgICAgICAgdGl0bGUgICAgICAgICA6ICdIZWFkZXJzIDogJyxcbiAgICAgICAgZ3JvdXBJZCAgICAgICA6ICdoZWFkZXJzJyxcbiAgICAgICAgaXNDb2xsYXBzZWQgICA6IHRydWUgXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBXaGVuSW5kZXggICAgIDogMixcbiAgICAgICAgQXBwbHljc3NDbGFzcyA6ICdjb2wtbWQtMTInLCBcbiAgICAgICAgdGl0bGUgICAgICAgICA6ICdUZXh0IGlucHV0cyA6ICcsXG4gICAgICAgIGdyb3VwSWQgICAgICAgOiAnaW5wdXRzJyAsXG4gICAgICAgIGlzQ29sbGFwc2VkICAgOiB0cnVlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBXaGVuSW5kZXggICAgIDogMyxcbiAgICAgICAgQXBwbHljc3NDbGFzcyA6ICdjb2wtbWQtMTInLFxuICAgICAgICB0aXRsZSAgICAgICAgIDogJ1RleHRhcmVhcyA6ICcsXG4gICAgICAgIGdyb3VwSWQgICAgICAgOiAndGV4dGFyZWFzJyxcbiAgICAgICAgaXNDb2xsYXBzZWQgICA6IHRydWUgXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBXaGVuSW5kZXggICAgIDogNCxcbiAgICAgICAgQXBwbHljc3NDbGFzcyA6ICdjb2wtbWQtMTInLFxuICAgICAgICB0aXRsZSAgICAgICAgIDogJ1JhZGlvcyA6ICcsXG4gICAgICAgIGdyb3VwSWQgICAgICAgOiAncmFkaW9zJyxcbiAgICAgICAgaXNDb2xsYXBzZWQgICA6IHRydWUgXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBXaGVuSW5kZXggICAgIDogNSxcbiAgICAgICAgQXBwbHljc3NDbGFzcyA6ICdjb2wtbWQtMTInLFxuICAgICAgICB0aXRsZSAgICAgICAgIDogJ0NoZWNrYm94ZXMgOiAnLFxuICAgICAgICBncm91cElkICAgICAgIDogJ2NoZWNrYm94ZXMnLFxuICAgICAgICBpc0NvbGxhcHNlZCAgIDogdHJ1ZSBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFdoZW5JbmRleCAgICAgOiA2LFxuICAgICAgICBBcHBseWNzc0NsYXNzIDogJ2NvbC1tZC0xMicsXG4gICAgICAgIHRpdGxlICAgICAgICAgOiAnU2VsZWN0cyA6ICcsXG4gICAgICAgIGdyb3VwSWQgICAgICAgOiAnc2VsZWN0cycsXG4gICAgICAgIGlzQ29sbGFwc2VkICAgOiB0cnVlIFxuICAgICAgfSBcbiAgICBdLFxuICAgIHZlcmJvc2VNb2RlICAgICA6IGZhbHNlLCBcbiAgICBjb2xsYXBzZUVuYWJsZWQgOiB0cnVlLFxuICAgIGNvbGxhcHNlQ3RybCAgICA6IFtcbiAgICAgIHtcbiAgICAgICAgYXRJbmRleCA6IDAsXG4gICAgICAgIGNvbGxhcHNlIDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYXRJbmRleCA6IDEsXG4gICAgICAgIGNvbGxhcHNlIDogdHJ1ZVxuICAgICAgfVxuICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgfSxcbiAgaXRlbUNvbmZpZyAgICA6ICAge1xuICB2ZXJib3NlTW9kZSA6IGZhbHNlXG4gIH0gICAgICAgICAgICAgICAgICBcbn07ICBcblxuY29uc3QgRFJBR19EUk9QX1BSRVNFTlRBVElPTl9NT0RFTCA9IFtcbiAgLy8xIGNvbHVtbiBoZXJlIGlzIGNvbnRyb2wgc2VsZWN0aW9uIGNvbHVtblxuICBbXSxcbiAgW1xuICAgIC8vZW1wdHkgMXN0IGxpbmUgYXQgaW5pdGlhbGlzYXRpb25cbiAgICBbXVxuICBdXG5dO1xuXG5jb25zdCBJVEVNU19OT1RfVE9fQ09VTlRfRk9SX1JFQUwgPSB7XG4gIC8vcGxhY2Vob2xkZXIgOiAgICAgICAgICcnLFxuICBpdGVtQmVpbmdEcmFnZ2VkIDogICAgJydcbn07XG5cbmV4cG9ydCB7XG4gIExJU1RfRFJBR19EUk9QX0lURU1fQ1NTX0NMQVNTRVMsXG4gIERSQUdfRFJPUF9DT05GSUdfTU9ERUwsXG4gIERSQUdfRFJPUF9QUkVTRU5UQVRJT05fTU9ERUwsXG4gIElURU1TX05PVF9UT19DT1VOVF9GT1JfUkVBTFxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9lZGFEcmFnRHJvcFdheUVhc3lGb3JtR2VuL2VkYURyYWdEcm9wV2F5LmVkYURyYWdkcm9wV2F5RWFzeUZvcm1HZW4ucHJvdmlkZXIuaGVscGVycy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 80 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS = exports.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* global angular */\n\n///////////////////////////////////////////////////////////////////////\n// TODO :\n// - check no use methods that come from step way and delete if not needed\n// - check other TODO (a lot of fixes are needed)\n///////////////////////////////////////////////////////////////////////\n\nvar _edaDragDropWayEdaDragdropWayEasyFormGenControllerHelpers = __webpack_require__(81);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER = 'edaDragDropWayEasyFormGenCtrl';\nvar DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS = 'vm';\n\nvar edaDragDropWayEasyFormGenCtrl = function () {\n function edaDragDropWayEasyFormGenCtrl($scope, easyFormGenVersion, $filter, $anchorScroll, toaster, $timeout, $log, formFieldManage, controllerModalProxy, dragDropItemDecorationService, ddModelConfModelProxyService, ddItemRightClickedManager, easyFormDragWayConfig) {\n _classCallCheck(this, edaDragDropWayEasyFormGenCtrl);\n\n this.$scope = $scope;\n this.easyFormGenVersion = easyFormGenVersion;\n this.$filter = $filter;\n this.$anchorScroll = $anchorScroll;\n this.toaster = toaster;\n this.$timeout = $timeout;\n this.$log = $log;\n this.formFieldManage = formFieldManage;\n this.controllerModalProxy = controllerModalProxy;\n this.dragDropItemDecorationService = dragDropItemDecorationService;\n // this.dragDropConfig = dragDropConfig;\n this.ddModelConfModelProxyService = ddModelConfModelProxyService;\n this.ddItemRightClickedManager = ddItemRightClickedManager;\n this.easyFormDragWayConfig = easyFormDragWayConfig;\n\n this.init();\n }\n\n _createClass(edaDragDropWayEasyFormGenCtrl, [{\n key: 'init',\n value: function init() {\n this.easyFormGeneratorVERSION = this.easyFormGenVersion;\n this.tab = (0, _edaDragDropWayEdaDragdropWayEasyFormGenControllerHelpers.initTabModel)(this.easyFormDragWayConfig.isPreviewPanelVisible(), this.easyFormDragWayConfig.arePreviewModelsVisible());\n this.returnSaveEvent = false;\n this.dataModel = {}; //was vm.model in ES5 version\n this.wfFormFields = [];\n this.wfFormFieldsOnlyNeededProperties = [];\n this.ihm = (0, _edaDragDropWayEdaDragdropWayEasyFormGenControllerHelpers.initIhmModel)();\n this.easyFormDragDropProperties = this.easyFormDragWayConfig.getDragDropConfigModel();\n this.dragDropModel = [].concat(this.easyFormDragWayConfig.getDragDropPresentationModel());\n this.numberOfColumns = 1;\n this.MaxNumberOfColumns = 3;\n this.MinNumberOfColumns = 1;\n this.configuration = {};\n this.animationsEnabled = this.easyFormDragWayConfig.getModalAnimationValue();\n this.editPanelModel = { toggle: false };\n this.debugProxyModel = this.controllerModalProxy.ProxyModel;\n this.model = [];\n\n this.formFieldManage.initConfigurationEditFromScratch(this.configuration, false);\n this.controllerModalProxy.initProxyModel();\n }\n }, {\n key: 'collapseAllGroupControl',\n value: function collapseAllGroupControl(allExceptThisGroupIndex) {\n var _this = this;\n\n angular.forEach(this.easyFormDragDropProperties.containerConfig.decoration, function (value) {\n if (value.WhenIndex !== allExceptThisGroupIndex) _this.easyFormDragWayConfig.setDragDropConfigContainerDecorationCollapse(_this.easyFormDragDropProperties, value.WhenIndex, true);\n });\n }\n }, {\n key: 'onSubmit',\n value: function onSubmit() {\n this.toaster.pop({\n type: 'info',\n timeout: 2000,\n title: 'should save data model if it were not a static example',\n body: 'data :' + this.$filter('json')(this.dataModel, 4),\n showCloseButton: true\n });\n }\n }, {\n key: 'resetToZeroModel',\n value: function resetToZeroModel() {\n this.configuration.activeLine = 1;\n if (this.configuration.lines.length > 1) this.configuration.lines.splice(1, this.configuration.lines.length - 2);\n return this.countConfigurationModelLines();\n }\n\n //TO CHECK if does not come from step way :\n\n }, {\n key: 'countConfigurationModelLines',\n value: function countConfigurationModelLines() {\n return this.configuration.lines.length;\n }\n\n // //TO CHECK THEN TO DELETE : should come from step way...\n // setActiveLineNumber(lineNumber){\n // if (lineNumber <= this.countConfigurationModelLines()) this.configuration.activeLine = lineNumber;\n // }\n\n // //TO CHECK THEN TO DELETE : should come from step way...\n // upThisLine(indexLine){\n // if (indexLine > -1) {\n // if (this.configuration.lines[indexLine - 1]) {\n // let currentLineObj = this.configuration.lines[indexLine];\n // this.configuration.lines.splice(indexLine , 1);\n // this.configuration.lines.splice((indexLine - 1), 0, currentLineObj);\n // this.configuration.activeLine = 1;\n // }\n // }\n //\n // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n // }\n\n // //TO CHECK THEN TO DELETE : should come from step way...\n // downThisLine(indexLine){\n // if (indexLine > -1) {\n // if (this.configuration.lines[indexLine + 1]) {\n // let currentLineObj = this.configuration.lines[indexLine];\n // this.configuration.lines.splice(indexLine , 1);\n // this.configuration.lines.splice((indexLine + 1), 0, currentLineObj);\n // this.configuration.activeLine = 1;\n // }\n // }\n // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n // }\n\n // //TO CHECK THEN TO DELETE : should come from step way...\n // removeThisLine(index){\n // if (index > -1) {\n // if (this.configuration.lines.length > 1) {\n // if (this.configuration.activeLine === index + 1) this.configuration.activeLine = 1;\n // this.configuration.lines.splice(index, 1);\n // }else{\n // this.$timeout(()=>{\n // this.toaster.pop({\n // type : 'warning',\n // title : 'Last line' ,\n // body : 'Can\\'t delete the last line',\n // showCloseButton : true\n // });\n // }, 100);\n // }\n // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n // }\n // }\n\n // //TO CHECK THEN TO DELETE : should come from step way...\n // increaseNumberOfColumns(){\n // if (this.configuration.lines[this.configuration.activeLine -1].columns.length < this.MaxNumberOfColumns) {\n // let newNumberOfColumns = this.configuration.lines[this.configuration.activeLine -1].columns.push(initColumnTemplate());\n // this.configuration.lines[this.configuration.activeLine -1].columns[newNumberOfColumns - 1].numColumn = newNumberOfColumns;\n // }\n // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n // }\n\n // //TO CHECK THEN TO DELETE : should come from step way...\n // decreaseNumberOfColumns(indexLine, indexColumn){\n // if (this.configuration.lines[this.configuration.activeLine -1].columns.length > 1) {\n // this.configuration.lines[this.configuration.activeLine -1].columns.splice(this.configuration.lines[this.configuration.activeLine -1].columns.length -1, 1);\n // }\n // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n // }\n\n }, {\n key: 'saveThisForm',\n value: function saveThisForm() {\n if (typeof this.configuration.formName === 'undefined') {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: 'Form name is undefined',\n body: 'Form has not been saved.',\n showCloseButton: true\n });\n return false;\n }\n if (this.configuration.formName === '') {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: 'Form name is required',\n body: 'Form has not been saved.',\n showCloseButton: true\n });\n return false;\n }\n this.toaster.pop({\n type: 'wait',\n timeout: 10000,\n title: 'Form is being saved',\n body: 'Wait.',\n showCloseButton: true\n });\n this.toaster.clear();\n this.returnSaveEvent = true;\n return true;\n }\n }, {\n key: 'dragoverCallbackContainer',\n value: function dragoverCallbackContainer(parentparentIndex, parentIndex, index) {\n //prevent container in layout column to be drag to control select contianer\n if (index === 0) return false;\n return true;\n }\n }, {\n key: 'dropCallback',\n value: function dropCallback(event, index, item, external, type, allowedType) {\n var _this2 = this;\n\n if (external) {\n if (allowedType === 'itemType' && !item.label) return false;\n if (allowedType === 'containerType' && !angular.isArray(item)) return false;\n }\n //set a timeout befire binding since ddModel may not be called when already full updated\n var timerRefreshDDToConfig = this.$timeout(function () {\n _this2.configuration = angular.copy(_this2.ddModelConfModelProxyService.refreshAllConfigurationFromDragAndDropModel(_this2.configuration, _this2.dragDropModel));\n _this2.formFieldManage.applyConfigurationToformlyModel(_this2.configuration, _this2.wfFormFields, _this2.dataModel);\n _this2.wfFormFieldsOnlyNeededProperties = angular.copy(_this2.wfFormFields);\n _this2.ddModelConfModelProxyService.refreshControlsKeys(_this2.configuration, _this2.dragDropModel);\n }, 200);\n this.$scope.$on('$destroy', function () {\n return _this2.$timeout.cancel(timerRefreshDDToConfig);\n });\n return item;\n }\n }, {\n key: 'dndItemMoved',\n value: function dndItemMoved(parentParentIndex, parentIndex, itemIndex) {\n //prevent item from first container to disapear when dropped on other container\n if (parentParentIndex > 0) this.dragDropModel[parentParentIndex][parentIndex].splice(itemIndex, 1);\n }\n }, {\n key: 'dragoverCallbackItems',\n value: function dragoverCallbackItems(ParentParentIndex, parentIndex) {\n //prevent items in layout column to be drag to control select\n if (parentIndex === 0) return false;\n return true;\n }\n\n //TODO : will replace in html : dnd-disable-if=\"items.length > 2\"\n\n }, {\n key: 'disableItemDropIf',\n value: function disableItemDropIf() {}\n }, {\n key: 'dropCallbackItems',\n value: function dropCallbackItems(event, index, realIndex, parentIndex, parentParentIndex, parentParentParentIndex, item, external, type, allowedType) {\n var _this3 = this;\n\n if (external) {\n if (allowedType === 'itemType' && !item.label) return false;\n if (allowedType === 'containerType' && !angular.isArray(item)) return false;\n }\n //set a timeout before binding since ddModel may not be called when already full updated\n var timerRefreshDDToConfig = this.$timeout(function () {\n _this3.configuration = angular.copy(_this3.ddModelConfModelProxyService.refreshAllConfigurationFromDragAndDropModel(_this3.configuration, _this3.dragDropModel));\n _this3.formFieldManage.applyConfigurationToformlyModel(_this3.configuration, _this3.wfFormFields, _this3.dataModel);\n _this3.wfFormFieldsOnlyNeededProperties = angular.copy(_this3.wfFormFields);\n // refresh controls key in dragDrop Model to persist already exists controls between refreshes when item drop events\n _this3.ddModelConfModelProxyService.refreshControlsKeys(_this3.configuration, _this3.dragDropModel);\n }, 200);\n // add/set rightCliked property to false (will help edaRightClick directive)\n this.ddItemRightClickedManager.setUnRightClicked(item);\n // timerRefreshDDToConfig timer destruction\n this.$scope.$on('$destroy', function () {\n return _this3.$timeout.cancel(timerRefreshDDToConfig);\n });\n return item;\n }\n }, {\n key: 'saveFromEditPanel',\n value: function saveFromEditPanel() {\n /**\n * TODO :\n * should be called from edit panel\n *\n * AND\n *\n * should call all these methods\n *\n * need to get :\n *\n * - line index\n * - column index\n * - basicSelectRowCollection (from edpitpanelcontroller) --> maybe in controllerModalProxy service\n * - groupedSelectRowCollection (from edpitpanelcontroller) --> maybe in controllerModalProxy service\n * - radioRowCollection (from edpitpanelcontroller) --> maybe in controllerModalProxy service\n */\n this.controllerModalProxy.bindSpecialCtrlTemporyModelsToProxyModel();\n //save config to control\n //controllerModalProxy.applyConfigToSelectedControl(self.proxyModel);\n //return current model to parent controller :\n\n //update configuration model and formly model\n this.controllerModalProxy.bindConfigurationModelFromProxyModel(this.controllerModalProxy.getEditPanelModelLineIndex(), this.controllerModalProxy.getEditPanelModelColumnIndex(), this.configuration);\n this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n this.ddModelConfModelProxyService.refreshControlsKeys(this.configuration, this.dragDropModel);\n this.controllerModalProxy.setEditPanelModelToggle(false);\n this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();\n this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel);\n }\n }, {\n key: 'closeEditPanel',\n value: function closeEditPanel() {\n // reset all rightClicked control properties to false\n this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel);\n\n /**\n * TODO : refresh configuration model\n * uncomment after update these next 3 lines\n *\n * NOTE : indexLine AND numcolumn should be stored in service and\n * updated when togle sidepanel\n */\n //this.controllerModalProxy.bindConfigurationModelFromProxyModel(indexLine, numcolumn, modalAddCtrlModel, this.configuration);\n //this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n //this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n\n this.controllerModalProxy.setEditPanelModelToggle(false);\n this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();\n }\n }, {\n key: 'setRightClicked',\n value: function setRightClicked(previousState, item) {\n item.rightCliked = true;\n }\n }, {\n key: 'toggleEditPanel',\n value: function toggleEditPanel(event, lineIndex, colIndex, item) {\n var _this4 = this;\n\n this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel);\n // already opened (could be another control edit)\n if (this.controllerModalProxy.getEditPanelModelToggle()) {\n // -> immediate close and refresh configuration model + formly model\n this.controllerModalProxy.setEditPanelModelToggle(false);\n this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();\n\n //TODO : for refreshing\n //this.controllerModalProxy.bindConfigurationModelFromProxyModel(indexLine, numcolumn, modalAddCtrlModel, this.configuration);\n //this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n //this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n\n // check if new control right clicked otherwise just toggle side panel\n if (typeof this.controllerModalProxy.getEditPanelModelLineIndex() !== 'undefined' && typeof this.controllerModalProxy.getEditPanelModelColumnIndex() !== 'undefined' && typeof this.controllerModalProxy.getEditPanelModelControl() !== 'undefined') {\n if (this.controllerModalProxy.getEditPanelModelLineIndex() === lineIndex && this.controllerModalProxy.getEditPanelModelColumnIndex() === colIndex && angular.equals(this.controllerModalProxy.getEditPanelModelControl(), item)) {\n //console.info('already opened for SAME ctrl : so close - no re-open');\n } else {\n (function () {\n //console.info('already opened for DIFFERENT ctrl : so re-open');\n item.rightCliked = true;\n // set a timeout before re-opening, 500ms is ok for a ps-size=\"400px\"\n var timerCloseOpenedEditPanel = _this4.$timeout(function () {\n _this4.controllerModalProxy.setEditPanelModelLineIndex(lineIndex);\n _this4.controllerModalProxy.setEditPanelModelColumnIndex(colIndex);\n _this4.controllerModalProxy.setEditPanelModelControl(item);\n // control model passed to Service : controllerModalProxy\n _this4.controllerModalProxy.setProxyModelFromConfigurationSelection(_this4.configuration, lineIndex, colIndex);\n _this4.controllerModalProxy.setEditPanelModelToggle(true);\n _this4.$scope.editPanelModel.toggle = _this4.controllerModalProxy.getEditPanelModelToggle();\n }, 200);\n _this4.$scope.$on('$destroy', function () {\n return _this4.$timeout.cancel(timerCloseOpenedEditPanel);\n });\n })();\n }\n }\n } else {\n // previous state = closed = immediate open\n // console.info('NOT already opened : so open');\n item.rightCliked = true;\n\n this.controllerModalProxy.setEditPanelModelLineIndex(lineIndex);\n this.controllerModalProxy.setEditPanelModelColumnIndex(colIndex);\n this.controllerModalProxy.setEditPanelModelControl(item);\n // control model passed to Service : controllerModalProxy\n this.controllerModalProxy.setProxyModelFromConfigurationSelection(this.configuration, lineIndex, colIndex);\n this.controllerModalProxy.setEditPanelModelToggle(true);\n this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();\n }\n\n // console.info('after toggleLeftPanel check :');\n // console.dir({\n // 'this.editPanelModel' : angular.copy(this.editPanelModel),\n // 'controllerModalProxy.editPanelModel' : angular.copy(this.controllerModalProxy.editPanelModel)\n // });\n }\n\n // // refreshModels : to call after drag and drop events\n // refreshModels(){\n // this.$timeout(()=>{\n // console.info('refreshing models');\n // formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n // }, 10);\n // }\n\n\n }, {\n key: 'removeThisLine',\n value: function removeThisLine(lineIndex) {\n this.dragDropModel[1].splice(lineIndex, 1);\n }\n\n //TODO : to fix\n\n }, {\n key: 'addNewline',\n value: function addNewline() {\n // re-render formfield\n // TODO : to fix\n this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n }\n }, {\n key: 'insertNewLine',\n value: function insertNewLine() {\n this.addNewline();\n this.dragDropModel[1].push([]);\n }\n }]);\n\n return edaDragDropWayEasyFormGenCtrl;\n}();\n\nedaDragDropWayEasyFormGenCtrl.$inject = ['$scope', 'easyFormGenVersion', '$filter', '$anchorScroll', 'toaster', '$timeout', '$log', 'formFieldManage', 'controllerModalProxy', 'dragDropItemDecorationService', 'ddModelConfModelProxyService', 'ddItemRightClickedManager', 'easyFormDragWayConfig'];\n\nexports.default = edaDragDropWayEasyFormGenCtrl;\nexports.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER = DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER;\nexports.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS = DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZWRhRHJhZ0Ryb3BXYXlFYXN5Rm9ybUdlbi9lZGFEcmFnRHJvcFdheS5lZGFEcmFnZHJvcFdheUVhc3lGb3JtR2VuLmNvbnRyb2xsZXIuanM/NGRkMiJdLCJuYW1lcyI6WyJEUkFHX0RST1BfV0FZX0VBU1lfRk9STV9HRU5fQ09OVFJPTExFUiIsIkRSQUdfRFJPUF9XQVlfRUFTWV9GT1JNX0dFTl9DT05UUk9MTEVSQVMiLCJlZGFEcmFnRHJvcFdheUVhc3lGb3JtR2VuQ3RybCIsIiRzY29wZSIsImVhc3lGb3JtR2VuVmVyc2lvbiIsIiRmaWx0ZXIiLCIkYW5jaG9yU2Nyb2xsIiwidG9hc3RlciIsIiR0aW1lb3V0IiwiJGxvZyIsImZvcm1GaWVsZE1hbmFnZSIsImNvbnRyb2xsZXJNb2RhbFByb3h5IiwiZHJhZ0Ryb3BJdGVtRGVjb3JhdGlvblNlcnZpY2UiLCJkZE1vZGVsQ29uZk1vZGVsUHJveHlTZXJ2aWNlIiwiZGRJdGVtUmlnaHRDbGlja2VkTWFuYWdlciIsImVhc3lGb3JtRHJhZ1dheUNvbmZpZyIsImluaXQiLCJlYXN5Rm9ybUdlbmVyYXRvclZFUlNJT04iLCJ0YWIiLCJpc1ByZXZpZXdQYW5lbFZpc2libGUiLCJhcmVQcmV2aWV3TW9kZWxzVmlzaWJsZSIsInJldHVyblNhdmVFdmVudCIsImRhdGFNb2RlbCIsIndmRm9ybUZpZWxkcyIsIndmRm9ybUZpZWxkc09ubHlOZWVkZWRQcm9wZXJ0aWVzIiwiaWhtIiwiZWFzeUZvcm1EcmFnRHJvcFByb3BlcnRpZXMiLCJnZXREcmFnRHJvcENvbmZpZ01vZGVsIiwiZHJhZ0Ryb3BNb2RlbCIsImNvbmNhdCIsImdldERyYWdEcm9wUHJlc2VudGF0aW9uTW9kZWwiLCJudW1iZXJPZkNvbHVtbnMiLCJNYXhOdW1iZXJPZkNvbHVtbnMiLCJNaW5OdW1iZXJPZkNvbHVtbnMiLCJjb25maWd1cmF0aW9uIiwiYW5pbWF0aW9uc0VuYWJsZWQiLCJnZXRNb2RhbEFuaW1hdGlvblZhbHVlIiwiZWRpdFBhbmVsTW9kZWwiLCJ0b2dnbGUiLCJkZWJ1Z1Byb3h5TW9kZWwiLCJQcm94eU1vZGVsIiwibW9kZWwiLCJpbml0Q29uZmlndXJhdGlvbkVkaXRGcm9tU2NyYXRjaCIsImluaXRQcm94eU1vZGVsIiwiYWxsRXhjZXB0VGhpc0dyb3VwSW5kZXgiLCJhbmd1bGFyIiwiZm9yRWFjaCIsImNvbnRhaW5lckNvbmZpZyIsImRlY29yYXRpb24iLCJ2YWx1ZSIsIldoZW5JbmRleCIsInNldERyYWdEcm9wQ29uZmlnQ29udGFpbmVyRGVjb3JhdGlvbkNvbGxhcHNlIiwicG9wIiwidHlwZSIsInRpbWVvdXQiLCJ0aXRsZSIsImJvZHkiLCJzaG93Q2xvc2VCdXR0b24iLCJhY3RpdmVMaW5lIiwibGluZXMiLCJsZW5ndGgiLCJzcGxpY2UiLCJjb3VudENvbmZpZ3VyYXRpb25Nb2RlbExpbmVzIiwiZm9ybU5hbWUiLCJjbGVhciIsInBhcmVudHBhcmVudEluZGV4IiwicGFyZW50SW5kZXgiLCJpbmRleCIsImV2ZW50IiwiaXRlbSIsImV4dGVybmFsIiwiYWxsb3dlZFR5cGUiLCJsYWJlbCIsImlzQXJyYXkiLCJ0aW1lclJlZnJlc2hERFRvQ29uZmlnIiwiY29weSIsInJlZnJlc2hBbGxDb25maWd1cmF0aW9uRnJvbURyYWdBbmREcm9wTW9kZWwiLCJhcHBseUNvbmZpZ3VyYXRpb25Ub2Zvcm1seU1vZGVsIiwicmVmcmVzaENvbnRyb2xzS2V5cyIsIiRvbiIsImNhbmNlbCIsInBhcmVudFBhcmVudEluZGV4IiwiaXRlbUluZGV4IiwiUGFyZW50UGFyZW50SW5kZXgiLCJyZWFsSW5kZXgiLCJwYXJlbnRQYXJlbnRQYXJlbnRJbmRleCIsInNldFVuUmlnaHRDbGlja2VkIiwiYmluZFNwZWNpYWxDdHJsVGVtcG9yeU1vZGVsc1RvUHJveHlNb2RlbCIsImJpbmRDb25maWd1cmF0aW9uTW9kZWxGcm9tUHJveHlNb2RlbCIsImdldEVkaXRQYW5lbE1vZGVsTGluZUluZGV4IiwiZ2V0RWRpdFBhbmVsTW9kZWxDb2x1bW5JbmRleCIsInNldEVkaXRQYW5lbE1vZGVsVG9nZ2xlIiwiZ2V0RWRpdFBhbmVsTW9kZWxUb2dnbGUiLCJyZXNldEFsbERyYWdEcm9wSXRlbVNlbGVjdGVkU3RhdGUiLCJwcmV2aW91c1N0YXRlIiwicmlnaHRDbGlrZWQiLCJsaW5lSW5kZXgiLCJjb2xJbmRleCIsImdldEVkaXRQYW5lbE1vZGVsQ29udHJvbCIsImVxdWFscyIsInRpbWVyQ2xvc2VPcGVuZWRFZGl0UGFuZWwiLCJzZXRFZGl0UGFuZWxNb2RlbExpbmVJbmRleCIsInNldEVkaXRQYW5lbE1vZGVsQ29sdW1uSW5kZXgiLCJzZXRFZGl0UGFuZWxNb2RlbENvbnRyb2wiLCJzZXRQcm94eU1vZGVsRnJvbUNvbmZpZ3VyYXRpb25TZWxlY3Rpb24iLCJhZGROZXdsaW5lIiwicHVzaCIsIiRpbmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7cWpCQUFBOztBQUVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUY7Ozs7QUFLQSxJQUFNQSx5Q0FBNEMsK0JBQWxEO0FBQ0EsSUFBTUMsMkNBQTRDLElBQWxEOztJQUdNQyw2QjtBQUVKLHlDQUNFQyxNQURGLEVBRUVDLGtCQUZGLEVBR0VDLE9BSEYsRUFJRUMsYUFKRixFQUtFQyxPQUxGLEVBTUVDLFFBTkYsRUFPRUMsSUFQRixFQVFFQyxlQVJGLEVBU0VDLG9CQVRGLEVBVUVDLDZCQVZGLEVBV0VDLDRCQVhGLEVBWUVDLHlCQVpGLEVBYUVDLHFCQWJGLEVBY0M7QUFBQTs7QUFDQyxTQUFLWixNQUFMLEdBQXdDQSxNQUF4QztBQUNBLFNBQUtDLGtCQUFMLEdBQXdDQSxrQkFBeEM7QUFDQSxTQUFLQyxPQUFMLEdBQXdDQSxPQUF4QztBQUNBLFNBQUtDLGFBQUwsR0FBd0NBLGFBQXhDO0FBQ0EsU0FBS0MsT0FBTCxHQUF3Q0EsT0FBeEM7QUFDQSxTQUFLQyxRQUFMLEdBQXdDQSxRQUF4QztBQUNBLFNBQUtDLElBQUwsR0FBd0NBLElBQXhDO0FBQ0EsU0FB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bG9iYWwgYW5ndWxhciAqL1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFRPRE8gOlxuICAvLyAtIGNoZWNrIG5vIHVzZSBtZXRob2RzIHRoYXQgY29tZSBmcm9tIHN0ZXAgd2F5IGFuZCBkZWxldGUgaWYgbm90IG5lZWRlZFxuICAvLyAtIGNoZWNrIG90aGVyIFRPRE8gKGEgbG90IG9mIGZpeGVzIGFyZSBuZWVkZWQpXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmltcG9ydCB7XG4gIGluaXRUYWJNb2RlbCxcbiAgaW5pdElobU1vZGVsXG59ICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL2VkYURyYWdEcm9wV2F5LmVkYURyYWdkcm9wV2F5RWFzeUZvcm1HZW4uY29udHJvbGxlci5oZWxwZXJzLmpzJztcblxuY29uc3QgRFJBR19EUk9QX1dBWV9FQVNZX0ZPUk1fR0VOX0NPTlRST0xMRVIgICAgPSAnZWRhRHJhZ0Ryb3BXYXlFYXN5Rm9ybUdlbkN0cmwnO1xuY29uc3QgRFJBR19EUk9QX1dBWV9FQVNZX0ZPUk1fR0VOX0NPTlRST0xMRVJBUyAgPSAndm0nO1xuXG5cbmNsYXNzIGVkYURyYWdEcm9wV2F5RWFzeUZvcm1HZW5DdHJse1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICRzY29wZSxcbiAgICBlYXN5Rm9ybUdlblZlcnNpb24sXG4gICAgJGZpbHRlcixcbiAgICAkYW5jaG9yU2Nyb2xsLFxuICAgIHRvYXN0ZXIsXG4gICAgJHRpbWVvdXQsXG4gICAgJGxvZyxcbiAgICBmb3JtRmllbGRNYW5hZ2UsXG4gICAgY29udHJvbGxlck1vZGFsUHJveHksXG4gICAgZHJhZ0Ryb3BJdGVtRGVjb3JhdGlvblNlcnZpY2UsXG4gICAgZGRNb2RlbENvbmZNb2RlbFByb3h5U2VydmljZSxcbiAgICBkZEl0ZW1SaWdodENsaWNrZWRNYW5hZ2VyLFxuICAgIGVhc3lGb3JtRHJhZ1dheUNvbmZpZ1xuICApe1xuICAgIHRoaXMuJHNjb3BlICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAkc2NvcGU7XG4gICAgdGhpcy5lYXN5Rm9ybUdlblZlcnNpb24gICAgICAgICAgICAgICA9IGVhc3lGb3JtR2VuVmVyc2lvbjtcbiAgICB0aGlzLiRmaWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgID0gJGZpbHRlcjtcbiAgICB0aGlzLiRhbmNob3JTY3JvbGwgICAgICAgICAgICAgICAgICAgID0gJGFuY2hvclNjcm9sbDtcbiAgICB0aGlzLnRvYXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgID0gdG9hc3RlcjtcbiAgICB0aGlzLiR0aW1lb3V0ICAgICAgICAgICAgICAgICAgICAgICAgID0gJHRpbWVvdXQ7XG4gICAgdGhpcy4kbG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICRsb2c7XG4gICAgdGhpcy5mb3JtRmllbGRNYW5hZ2UgICAgICAgICAgICAgICAgICA9IGZvcm1GaWVsZE1hbmFnZTtcbiAgICB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5ICAgICAgICAgICAgID0gY29udHJvbGxlck1vZGFsUHJveHk7XG4gICAgdGhpcy5kcmFnRHJvcEl0ZW1EZWNvcmF0aW9uU2VydmljZSAgICA9IGRyYWdEcm9wSXRlbURlY29yYXRpb25TZXJ2aWNlO1xuICAgIC8vIHRoaXMuZHJhZ0Ryb3BDb25maWcgICAgICAgICAgICAgICAgICAgPSBkcmFnRHJvcENvbmZpZztcbiAgICB0aGlzLmRkTW9kZWxDb25mTW9kZWxQcm94eVNlcnZpY2UgICAgID0gZGRNb2RlbENvbmZNb2RlbFByb3h5U2VydmljZTtcbiAgICB0aGlzLmRkSXRlbVJpZ2h0Q2xpY2tlZE1hbmFnZXIgICAgICAgID0gZGRJdGVtUmlnaHRDbGlja2VkTWFuYWdlcjtcbiAgICB0aGlzLmVhc3lGb3JtRHJhZ1dheUNvbmZpZyAgICAgICAgICAgID0gZWFzeUZvcm1EcmFnV2F5Q29uZmlnO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuXG4gIGluaXQoKXtcbiAgICB0aGlzLmVhc3lGb3JtR2VuZXJhdG9yVkVSU0lPTiAgICAgICAgID0gdGhpcy5lYXN5Rm9ybUdlblZlcnNpb247XG4gICAgdGhpcy50YWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGluaXRUYWJNb2RlbCh0aGlzLmVhc3lGb3JtRHJhZ1dheUNvbmZpZy5pc1ByZXZpZXdQYW5lbFZpc2libGUoKSwgdGhpcy5lYXN5Rm9ybURyYWdXYXlDb25maWcuYXJlUHJldmlld01vZGVsc1Zpc2libGUoKSk7XG4gICAgdGhpcy5yZXR1cm5TYXZlRXZlbnQgICAgICAgICAgICAgICAgICA9IGZhbHNlO1xuICAgIHRoaXMuZGF0YU1vZGVsICAgICAgICAgICAgICAgICAgICAgICAgPSB7fTsgLy93YXMgdm0ubW9kZWwgaW4gRVM1IHZlcnNpb25cbiAgICB0aGlzLndmRm9ybUZpZWxkcyAgICAgICAgICAgICAgICAgICAgID0gW107XG4gICAgdGhpcy53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyA9IFtdO1xuICAgIHRoaXMuaWhtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBpbml0SWhtTW9kZWwoKTtcbiAgICB0aGlzLmVhc3lGb3JtRHJhZ0Ryb3BQcm9wZXJ0aWVzICAgICAgID0gdGhpcy5lYXN5Rm9ybURyYWdXYXlDb25maWcuZ2V0RHJhZ0Ryb3BDb25maWdNb2RlbCgpO1xuICAgIHRoaXMuZHJhZ0Ryb3BNb2RlbCAgICAgICAgICAgICAgICAgICAgPSBbXS5jb25jYXQodGhpcy5lYXN5Rm9ybURyYWdXYXlDb25maWcuZ2V0RHJhZ0Ryb3BQcmVzZW50YXRpb25Nb2RlbCgpKTtcbiAgICB0aGlzLm51bWJlck9mQ29sdW1ucyAgICAgICAgICAgICAgICAgID0gMTtcbiAgICB0aGlzLk1heE51bWJlck9mQ29sdW1ucyAgICAgICAgICAgICAgID0gMztcbiAgICB0aGlzLk1pbk51bWJlck9mQ29sdW1ucyAgICAgICAgICAgICAgID0gMTtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gICAgICAgICAgICAgICAgICAgID0ge307XG4gICAgdGhpcy5hbmltYXRpb25zRW5hYmxlZCAgICAgICAgICAgICAgICA9IHRoaXMuZWFzeUZvcm1EcmFnV2F5Q29uZmlnLmdldE1vZGFsQW5pbWF0aW9uVmFsdWUoKTtcbiAgICB0aGlzLmVkaXRQYW5lbE1vZGVsICAgICAgICAgICAgICAgICAgID0geyB0b2dnbGUgOiBmYWxzZSB9O1xuICAgIHRoaXMuZGVidWdQcm94eU1vZGVsICAgICAgICAgICAgICAgICAgPSB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LlByb3h5TW9kZWw7XG4gICAgdGhpcy5tb2RlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFtdO1xuXG4gICAgdGhpcy5mb3JtRmllbGRNYW5hZ2UuaW5pdENvbmZpZ3VyYXRpb25FZGl0RnJvbVNjcmF0Y2godGhpcy5jb25maWd1cmF0aW9uICwgZmFsc2UpO1xuICAgIHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuaW5pdFByb3h5TW9kZWwoKTtcbiAgfVxuXG5cbiAgY29sbGFwc2VBbGxHcm91cENvbnRyb2woYWxsRXhjZXB0VGhpc0dyb3VwSW5kZXgpe1xuICAgIGFuZ3VsYXIuZm9yRWFjaCh0aGlzLmVhc3lGb3JtRHJhZ0Ryb3BQcm9wZXJ0aWVzLmNvbnRhaW5lckNvbmZpZy5kZWNvcmF0aW9uLCAodmFsdWUpPT57XG4gICAgICBpZiAodmFsdWUuV2hlbkluZGV4ICE9PSBhbGxFeGNlcHRUaGlzR3JvdXBJbmRleCkgdGhpcy5lYXN5Rm9ybURyYWdXYXlDb25maWcuc2V0RHJhZ0Ryb3BDb25maWdDb250YWluZXJEZWNvcmF0aW9uQ29sbGFwc2UodGhpcy5lYXN5Rm9ybURyYWdEcm9wUHJvcGVydGllcywgdmFsdWUuV2hlbkluZGV4LCB0cnVlKTtcbiAgICB9KTtcbiAgfVxuXG5cbiAgb25TdWJtaXQoKSB7XG4gICAgdGhpcy50b2FzdGVyLnBvcCh7XG4gICAgICB0eXBlICAgICAgICAgICAgOiAnaW5mbycsXG4gICAgICB0aW1lb3V0ICAgICAgICAgOiAyMDAwLFxuICAgICAgdGl0bGUgICAgICAgICAgIDogJ3Nob3VsZCBzYXZlIGRhdGEgbW9kZWwgaWYgaXQgd2VyZSBub3QgYSBzdGF0aWMgZXhhbXBsZScsXG4gICAgICBib2R5ICAgICAgICAgICAgOiAnZGF0YSA6JyArIHRoaXMuJGZpbHRlcignanNvbicpKHRoaXMuZGF0YU1vZGVsLCA0KSxcbiAgICAgIHNob3dDbG9zZUJ1dHRvbiA6IHRydWVcbiAgICB9KTtcbiAgfVxuXG5cbiAgcmVzZXRUb1plcm9Nb2RlbCgpe1xuICAgIHRoaXMuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lID0gMTtcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmxpbmVzLmxlbmd0aCA+IDEpIHRoaXMuY29uZmlndXJhdGlvbi5saW5lcy5zcGxpY2UoMSwgdGhpcy5jb25maWd1cmF0aW9uLmxpbmVzLmxlbmd0aCAtIDIpO1xuICAgIHJldHVybiB0aGlzLmNvdW50Q29uZmlndXJhdGlvbk1vZGVsTGluZXMoKTtcbiAgfVxuXG4gIC8vVE8gQ0hFQ0sgaWYgZG9lcyBub3QgY29tZSBmcm9tIHN0ZXAgd2F5IDpcbiAgY291bnRDb25maWd1cmF0aW9uTW9kZWxMaW5lcygpe1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24ubGluZXMubGVuZ3RoO1xuICB9XG5cbiAgLy8gIC8vVE8gQ0hFQ0sgVEhFTiBUTyBERUxFVEUgOiBzaG91bGQgY29tZSBmcm9tIHN0ZXAgd2F5Li4uXG4gIC8vIHNldEFjdGl2ZUxpbmVOdW1iZXIobGluZU51bWJlcil7XG4gIC8vICBpZiAobGluZU51bWJlciA8PSB0aGlzLmNvdW50Q29uZmlndXJhdGlvbk1vZGVsTGluZXMoKSkgdGhpcy5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUgPSBsaW5lTnVtYmVyO1xuICAvLyB9XG5cbi8vICAvL1RPIENIRUNLIFRIRU4gVE8gREVMRVRFIDogc2hvdWxkIGNvbWUgZnJvbSBzdGVwIHdheS4uLlxuLy8gIHVwVGhpc0xpbmUoaW5kZXhMaW5lKXtcbi8vICAgIGlmIChpbmRleExpbmUgPiAtMSkge1xuLy8gICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmxpbmVzW2luZGV4TGluZSAtIDFdKSB7XG4vLyAgICAgICAgbGV0IGN1cnJlbnRMaW5lT2JqID0gdGhpcy5jb25maWd1cmF0aW9uLmxpbmVzW2luZGV4TGluZV07XG4vLyAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmxpbmVzLnNwbGljZShpbmRleExpbmUgLCAxKTtcbi8vICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24ubGluZXMuc3BsaWNlKChpbmRleExpbmUgLSAxKSwgMCwgY3VycmVudExpbmVPYmopO1xuLy8gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lID0gMTtcbi8vICAgICAgfVxuLy8gICAgfVxuLy9cbi8vICAgIHRoaXMuZm9ybUZpZWxkTWFuYWdlLmFwcGx5Q29uZmlndXJhdGlvblRvZm9ybWx5TW9kZWwodGhpcy5jb25maWd1cmF0aW9uLCB0aGlzLndmRm9ybUZpZWxkcywgdGhpcy5kYXRhTW9kZWwpO1xuLy8gICAgdGhpcy53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyA9IGFuZ3VsYXIuY29weSh0aGlzLndmRm9ybUZpZWxkcyk7XG4vLyAgfVxuXG4gIC8vICAvL1RPIENIRUNLIFRIRU4gVE8gREVMRVRFIDogc2hvdWxkIGNvbWUgZnJvbSBzdGVwIHdheS4uLlxuICAvLyBkb3duVGhpc0xpbmUoaW5kZXhMaW5lKXtcbiAgLy8gIGlmIChpbmRleExpbmUgPiAtMSkge1xuICAvLyAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmxpbmVzW2luZGV4TGluZSArIDFdKSB7XG4gIC8vICAgICAgbGV0IGN1cnJlbnRMaW5lT2JqID0gdGhpcy5jb25maWd1cmF0aW9uLmxpbmVzW2luZGV4TGluZV07XG4gIC8vICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmxpbmVzLnNwbGljZShpbmRleExpbmUgLCAxKTtcbiAgLy8gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24ubGluZXMuc3BsaWNlKChpbmRleExpbmUgKyAxKSwgMCwgY3VycmVudExpbmVPYmopO1xuICAvLyAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lID0gMTtcbiAgLy8gICAgfVxuICAvLyAgfVxuICAvLyAgdGhpcy5mb3JtRmllbGRNYW5hZ2UuYXBwbHlDb25maWd1cmF0aW9uVG9mb3JtbHlNb2RlbCh0aGlzLmNvbmZpZ3VyYXRpb24sIHRoaXMud2ZGb3JtRmllbGRzLCB0aGlzLmRhdGFNb2RlbCk7XG4gIC8vICB0aGlzLndmRm9ybUZpZWxkc09ubHlOZWVkZWRQcm9wZXJ0aWVzID0gYW5ndWxhci5jb3B5KHRoaXMud2ZGb3JtRmllbGRzKTtcbiAgLy8gfVxuXG4vLyAgLy9UTyBDSEVDSyBUSEVOIFRPIERFTEVURSA6IHNob3VsZCBjb21lIGZyb20gc3RlcCB3YXkuLi5cbi8vICByZW1vdmVUaGlzTGluZShpbmRleCl7XG4vLyAgICBpZiAoaW5kZXggPiAtMSkge1xuLy8gICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmxpbmVzLmxlbmd0aCA+IDEpIHtcbi8vICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUgPT09IGluZGV4ICsgMSkgdGhpcy5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUgPSAxO1xuLy8gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5saW5lcy5zcGxpY2UoaW5kZXgsIDEpO1xuLy8gICAgICB9ZWxzZXtcbi8vICAgICAgICB0aGlzLiR0aW1lb3V0KCgpPT57XG4vLyAgICAgICAgICB0aGlzLnRvYXN0ZXIucG9wKHtcbi8vICAgICAgICAgICAgdHlwZSAgICAgICAgICAgIDogJ3dhcm5pbmcnLFxuLy8gICAgICAgICAgICB0aXRsZSAgICAgICAgICAgOiAnTGFzdCBsaW5lJyAsXG4vLyAgICAgICAgICAgIGJvZHkgICAgICAgICAgICA6ICdDYW5cXCd0IGRlbGV0ZSB0aGUgbGFzdCBsaW5lJyxcbi8vICAgICAgICAgICAgc2hvd0Nsb3NlQnV0dG9uIDogdHJ1ZVxuLy8gICAgICAgICAgfSk7XG4vLyAgICAgICAgfSwgMTAwKTtcbi8vICAgICAgfVxuLy8gICAgICB0aGlzLmZvcm1GaWVsZE1hbmFnZS5hcHBseUNvbmZpZ3VyYXRpb25Ub2Zvcm1seU1vZGVsKHRoaXMuY29uZmlndXJhdGlvbiwgdGhpcy53ZkZvcm1GaWVsZHMsIHRoaXMuZGF0YU1vZGVsKTtcbi8vICAgICAgdGhpcy53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyA9IGFuZ3VsYXIuY29weSh0aGlzLndmRm9ybUZpZWxkcyk7XG4vLyAgICB9XG4vLyAgfVxuXG4gIC8vICAvL1RPIENIRUNLIFRIRU4gVE8gREVMRVRFIDogc2hvdWxkIGNvbWUgZnJvbSBzdGVwIHdheS4uLlxuICAvLyBpbmNyZWFzZU51bWJlck9mQ29sdW1ucygpe1xuICAvLyAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5saW5lc1t0aGlzLmNvbmZpZ3VyYXRpb24uYWN0aXZlTGluZSAtMV0uY29sdW1ucy5sZW5ndGggPCB0aGlzLk1heE51bWJlck9mQ29sdW1ucykge1xuICAvLyAgICBsZXQgbmV3TnVtYmVyT2ZDb2x1bW5zID0gdGhpcy5jb25maWd1cmF0aW9uLmxpbmVzW3RoaXMuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lIC0xXS5jb2x1bW5zLnB1c2goaW5pdENvbHVtblRlbXBsYXRlKCkpO1xuICAvLyAgICB0aGlzLmNvbmZpZ3VyYXRpb24ubGluZXNbdGhpcy5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUgLTFdLmNvbHVtbnNbbmV3TnVtYmVyT2ZDb2x1bW5zIC0gMV0ubnVtQ29sdW1uID0gbmV3TnVtYmVyT2ZDb2x1bW5zO1xuICAvLyAgfVxuICAvLyAgdGhpcy5mb3JtRmllbGRNYW5hZ2UuYXBwbHlDb25maWd1cmF0aW9uVG9mb3JtbHlNb2RlbCh0aGlzLmNvbmZpZ3VyYXRpb24sIHRoaXMud2ZGb3JtRmllbGRzLCB0aGlzLmRhdGFNb2RlbCk7XG4gIC8vICB0aGlzLndmRm9ybUZpZWxkc09ubHlOZWVkZWRQcm9wZXJ0aWVzID0gYW5ndWxhci5jb3B5KHRoaXMud2ZGb3JtRmllbGRzKTtcbiAgLy8gfVxuXG4gIC8vICAvL1RPIENIRUNLIFRIRU4gVE8gREVMRVRFIDogc2hvdWxkIGNvbWUgZnJvbSBzdGVwIHdheS4uLlxuICAvLyBkZWNyZWFzZU51bWJlck9mQ29sdW1ucyhpbmRleExpbmUsIGluZGV4Q29sdW1uKXtcbiAgLy8gIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24ubGluZXNbdGhpcy5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUgLTFdLmNvbHVtbnMubGVuZ3RoID4gMSkge1xuICAvLyAgICB0aGlzLmNvbmZpZ3VyYXRpb24ubGluZXNbdGhpcy5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUgLTFdLmNvbHVtbnMuc3BsaWNlKHRoaXMuY29uZmlndXJhdGlvbi5saW5lc1t0aGlzLmNvbmZpZ3VyYXRpb24uYWN0aXZlTGluZSAtMV0uY29sdW1ucy5sZW5ndGggLTEsIDEpO1xuICAvLyAgfVxuICAvLyAgdGhpcy5mb3JtRmllbGRNYW5hZ2UuYXBwbHlDb25maWd1cmF0aW9uVG9mb3JtbHlNb2RlbCh0aGlzLmNvbmZpZ3VyYXRpb24sIHRoaXMud2ZGb3JtRmllbGRzLCB0aGlzLmRhdGFNb2RlbCk7XG4gIC8vICB0aGlzLndmRm9ybUZpZWxkc09ubHlOZWVkZWRQcm9wZXJ0aWVzID0gYW5ndWxhci5jb3B5KHRoaXMud2ZGb3JtRmllbGRzKTtcbiAgLy8gfVxuXG4gIHNhdmVUaGlzRm9ybSgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlndXJhdGlvbi5mb3JtTmFtZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0aGlzLnRvYXN0ZXIucG9wKHtcbiAgICAgICAgdHlwZSAgICA6ICd3YXJuaW5nJyxcbiAgICAgICAgdGltZW91dCA6IDIwMDAsXG4gICAgICAgIHRpdGxlICAgOiAnRm9ybSBuYW1lIGlzIHVuZGVmaW5lZCcsXG4gICAgICAgIGJvZHkgICAgOiAnRm9ybSBoYXMgbm90IGJlZW4gc2F2ZWQuJyxcbiAgICAgICAgc2hvd0Nsb3NlQnV0dG9uIDogdHJ1ZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZm9ybU5hbWUgPT09ICcnKSB7XG4gICAgdGhpcy50b2FzdGVyLnBvcCh7XG4gICAgICAgIHR5cGUgICAgOiAnd2FybmluZycsXG4gICAgICAgIHRpbWVvdXQgOiAyMDAwLFxuICAgICAgICB0aXRsZSAgIDogJ0Zvcm0gbmFtZSBpcyByZXF1aXJlZCcsXG4gICAgICAgIGJvZHkgICAgOiAnRm9ybSBoYXMgbm90IGJlZW4gc2F2ZWQuJyxcbiAgICAgICAgc2hvd0Nsb3NlQnV0dG9uIDogdHJ1ZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMudG9hc3Rlci5wb3Aoe1xuICAgICAgdHlwZSAgICA6ICd3YWl0JyxcbiAgICAgIHRpbWVvdXQgOiAxMDAwMCxcbiAgICAgIHRpdGxlICAgOiAnRm9ybSBpcyBiZWluZyBzYXZlZCcsXG4gICAgICBib2R5ICAgIDogJ1dhaXQuJyxcbiAgICAgIHNob3dDbG9zZUJ1dHRvbiA6IHRydWVcbiAgICB9KTtcbiAgICB0aGlzLnRvYXN0ZXIuY2xlYXIoKTtcbiAgICB0aGlzLnJldHVyblNhdmVFdmVudCA9IHRydWU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuXG4gIGRyYWdvdmVyQ2FsbGJhY2tDb250YWluZXIocGFyZW50cGFyZW50SW5kZXgsIHBhcmVudEluZGV4LCBpbmRleCl7XG4gICAgLy9wcmV2ZW50IGNvbnRhaW5lciBpbiBsYXlvdXQgY29sdW1uIHRvIGJlIGRyYWcgdG8gY29udHJvbCBzZWxlY3QgY29udGlhbmVyXG4gICAgaWYgKGluZGV4ID09PSAwKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuXG4gIGRyb3BDYWxsYmFjayhldmVudCwgaW5kZXgsIGl0ZW0sIGV4dGVybmFsLCB0eXBlLCBhbGxvd2VkVHlwZSkge1xuICAgIGlmIChleHRlcm5hbCkge1xuICAgICAgICBpZiAoYWxsb3dlZFR5cGUgPT09ICdpdGVtVHlwZScgICAgICAmJiAhaXRlbS5sYWJlbCkgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoYWxsb3dlZFR5cGUgPT09ICdjb250YWluZXJUeXBlJyAmJiAhYW5ndWxhci5pc0FycmF5KGl0ZW0pKSAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvL3NldCBhIHRpbWVvdXQgYmVmaXJlIGJpbmRpbmcgc2luY2UgZGRNb2RlbCBtYXkgbm90IGJlIGNhbGxlZCB3aGVuIGFscmVhZHkgZnVsbCB1cGRhdGVkXG4gICAgbGV0IHRpbWVyUmVmcmVzaEREVG9Db25maWcgPSB0aGlzLiR0aW1lb3V0KCgpPT57XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBhbmd1bGFyLmNvcHkodGhpcy5kZE1vZGVsQ29uZk1vZGVsUHJveHlTZXJ2aWNlLnJlZnJlc2hBbGxDb25maWd1cmF0aW9uRnJvbURyYWdBbmREcm9wTW9kZWwodGhpcy5jb25maWd1cmF0aW9uLCB0aGlzLmRyYWdEcm9wTW9kZWwpKTtcbiAgICAgIHRoaXMuZm9ybUZpZWxkTWFuYWdlLmFwcGx5Q29uZmlndXJhdGlvblRvZm9ybWx5TW9kZWwodGhpcy5jb25maWd1cmF0aW9uLCB0aGlzLndmRm9ybUZpZWxkcywgdGhpcy5kYXRhTW9kZWwpO1xuICAgICAgdGhpcy53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyA9IGFuZ3VsYXIuY29weSh0aGlzLndmRm9ybUZpZWxkcyk7XG4gICAgICB0aGlzLmRkTW9kZWxDb25mTW9kZWxQcm94eVNlcnZpY2UucmVmcmVzaENvbnRyb2xzS2V5cyh0aGlzLmNvbmZpZ3VyYXRpb24sIHRoaXMuZHJhZ0Ryb3BNb2RlbCk7XG4gICAgfSwgMjAwKTtcbiAgICB0aGlzLiRzY29wZS4kb24oJyRkZXN0cm95JywgKCk9PnRoaXMuJHRpbWVvdXQuY2FuY2VsKHRpbWVyUmVmcmVzaEREVG9Db25maWcpKTtcbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIGRuZEl0ZW1Nb3ZlZChwYXJlbnRQYXJlbnRJbmRleCwgcGFyZW50SW5kZXgsIGl0ZW1JbmRleCl7XG4gICAgLy9wcmV2ZW50IGl0ZW0gZnJvbSBmaXJzdCBjb250YWluZXIgdG8gZGlzYXBlYXIgd2hlbiBkcm9wcGVkIG9uIG90aGVyIGNvbnRhaW5lclxuICAgIGlmIChwYXJlbnRQYXJlbnRJbmRleCA+IDApIHRoaXMuZHJhZ0Ryb3BNb2RlbFtwYXJlbnRQYXJlbnRJbmRleF1bcGFyZW50SW5kZXhdLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICB9XG5cbiAgZHJhZ292ZXJDYWxsYmFja0l0ZW1zKFBhcmVudFBhcmVudEluZGV4LCBwYXJlbnRJbmRleCl7XG4gICAgLy9wcmV2ZW50IGl0ZW1zIGluIGxheW91dCBjb2x1bW4gdG8gYmUgZHJhZyB0byBjb250cm9sIHNlbGVjdFxuICAgIGlmIChwYXJlbnRJbmRleCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy9UT0RPIDogd2lsbCByZXBsYWNlIGluIGh0bWwgOiBkbmQtZGlzYWJsZS1pZj1cIml0ZW1zLmxlbmd0aCA+IDJcIlxuICBkaXNhYmxlSXRlbURyb3BJZigpe1xuXG4gIH1cblxuICBkcm9wQ2FsbGJhY2tJdGVtcyhldmVudCwgaW5kZXgsIHJlYWxJbmRleCwgcGFyZW50SW5kZXgsIHBhcmVudFBhcmVudEluZGV4LCBwYXJlbnRQYXJlbnRQYXJlbnRJbmRleCwgaXRlbSwgZXh0ZXJuYWwsIHR5cGUsIGFsbG93ZWRUeXBlKXtcbiAgICBpZiAoZXh0ZXJuYWwpIHtcbiAgICAgIGlmIChhbGxvd2VkVHlwZSA9PT0gJ2l0ZW1UeXBlJyAmJiAhaXRlbS5sYWJlbCkgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoYWxsb3dlZFR5cGUgPT09ICdjb250YWluZXJUeXBlJyAmJiAhYW5ndWxhci5pc0FycmF5KGl0ZW0pKSAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvL3NldCBhIHRpbWVvdXQgYmVmb3JlIGJpbmRpbmcgc2luY2UgZGRNb2RlbCBtYXkgbm90IGJlIGNhbGxlZCB3aGVuIGFscmVhZHkgZnVsbCB1cGRhdGVkXG4gICAgbGV0IHRpbWVyUmVmcmVzaEREVG9Db25maWcgPSB0aGlzLiR0aW1lb3V0KCgpPT57XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGFuZ3VsYXIuY29weSh0aGlzLmRkTW9kZWxDb25mTW9kZWxQcm94eVNlcnZpY2UucmVmcmVzaEFsbENvbmZpZ3VyYXRpb25Gcm9tRHJhZ0FuZERyb3BNb2RlbCh0aGlzLmNvbmZpZ3VyYXRpb24sIHRoaXMuZHJhZ0Ryb3BNb2RlbCkpO1xuICAgICAgICB0aGlzLmZvcm1GaWVsZE1hbmFnZS5hcHBseUNvbmZpZ3VyYXRpb25Ub2Zvcm1seU1vZGVsKHRoaXMuY29uZmlndXJhdGlvbiwgdGhpcy53ZkZvcm1GaWVsZHMsIHRoaXMuZGF0YU1vZGVsKTtcbiAgICAgICAgdGhpcy53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyA9IGFuZ3VsYXIuY29weSh0aGlzLndmRm9ybUZpZWxkcyk7XG4gICAgICAgIC8vIHJlZnJlc2ggY29udHJvbHMga2V5IGluIGRyYWdEcm9wIE1vZGVsIHRvIHBlcnNpc3QgYWxyZWFkeSBleGlzdHMgY29udHJvbHMgYmV0d2VlbiByZWZyZXNoZXMgd2hlbiBpdGVtIGRyb3AgZXZlbnRzXG4gICAgICAgIHRoaXMuZGRNb2RlbENvbmZNb2RlbFByb3h5U2VydmljZS5yZWZyZXNoQ29udHJvbHNLZXlzKHRoaXMuY29uZmlndXJhdGlvbiwgdGhpcy5kcmFnRHJvcE1vZGVsKTtcbiAgICAgIH0sIDIwMCk7XG4gICAgLy8gYWRkL3NldCByaWdodENsaWtlZCBwcm9wZXJ0eSB0byBmYWxzZSAod2lsbCBoZWxwIGVkYVJpZ2h0Q2xpY2sgZGlyZWN0aXZlKVxuICAgIHRoaXMuZGRJdGVtUmlnaHRDbGlja2VkTWFuYWdlci5zZXRVblJpZ2h0Q2xpY2tlZChpdGVtKTtcbiAgICAvLyB0aW1lclJlZnJlc2hERFRvQ29uZmlnIHRpbWVyIGRlc3RydWN0aW9uXG4gICAgdGhpcy4kc2NvcGUuJG9uKCckZGVzdHJveScsICgpPT50aGlzLiR0aW1lb3V0LmNhbmNlbCh0aW1lclJlZnJlc2hERFRvQ29uZmlnKSk7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuXG4gIHNhdmVGcm9tRWRpdFBhbmVsKCkge1xuICAgIC8qKlxuICAgICogVE9ETyA6XG4gICAgKiBzaG91bGQgYmUgY2FsbGVkIGZyb20gZWRpdCBwYW5lbFxuICAgICpcbiAgICAqIEFORFxuICAgICpcbiAgICAqIHNob3VsZCBjYWxsIGFsbCB0aGVzZSBtZXRob2RzXG4gICAgKlxuICAgICogbmVlZCB0byBnZXQgIDpcbiAgICAqXG4gICAgKiAtIGxpbmUgaW5kZXhcbiAgICAqIC0gY29sdW1uIGluZGV4XG4gICAgKiAtIGJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbiAoZnJvbSBlZHBpdHBhbmVsY29udHJvbGxlcikgICAtLT4gbWF5YmUgaW4gY29udHJvbGxlck1vZGFsUHJveHkgc2VydmljZVxuICAgICogLSBncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbiAoZnJvbSBlZHBpdHBhbmVsY29udHJvbGxlcikgLS0+IG1heWJlIGluIGNvbnRyb2xsZXJNb2RhbFByb3h5IHNlcnZpY2VcbiAgICAqIC0gcmFkaW9Sb3dDb2xsZWN0aW9uIChmcm9tIGVkcGl0cGFuZWxjb250cm9sbGVyKSAgICAgICAgIC0tPiBtYXliZSBpbiBjb250cm9sbGVyTW9kYWxQcm94eSBzZXJ2aWNlXG4gICAgKi9cbiAgICB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LmJpbmRTcGVjaWFsQ3RybFRlbXBvcnlNb2RlbHNUb1Byb3h5TW9kZWwoKTtcbiAgICAvL3NhdmUgY29uZmlnIHRvIGNvbnRyb2xcbiAgICAvL2NvbnRyb2xsZXJNb2RhbFByb3h5LmFwcGx5Q29uZmlnVG9TZWxlY3RlZENvbnRyb2woc2VsZi5wcm94eU1vZGVsKTtcbiAgICAvL3JldHVybiBjdXJyZW50IG1vZGVsIHRvIHBhcmVudCBjb250cm9sbGVyIDpcblxuICAgIC8vdXBkYXRlIGNvbmZpZ3VyYXRpb24gbW9kZWwgYW5kIGZvcm1seSBtb2RlbFxuICAgIHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuYmluZENvbmZpZ3VyYXRpb25Nb2RlbEZyb21Qcm94eU1vZGVsKHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuZ2V0RWRpdFBhbmVsTW9kZWxMaW5lSW5kZXgoKSwgdGhpcy5jb250cm9sbGVyTW9kYWxQcm94eS5nZXRFZGl0UGFuZWxNb2RlbENvbHVtbkluZGV4KCksIHRoaXMuY29uZmlndXJhdGlvbik7XG4gICAgdGhpcy5mb3JtRmllbGRNYW5hZ2UuYXBwbHlDb25maWd1cmF0aW9uVG9mb3JtbHlNb2RlbCh0aGlzLmNvbmZpZ3VyYXRpb24sIHRoaXMud2ZGb3JtRmllbGRzLCB0aGlzLmRhdGFNb2RlbCk7XG4gICAgdGhpcy53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyA9IGFuZ3VsYXIuY29weSh0aGlzLndmRm9ybUZpZWxkcyk7XG4gICAgdGhpcy5kZE1vZGVsQ29uZk1vZGVsUHJveHlTZXJ2aWNlLnJlZnJlc2hDb250cm9sc0tleXModGhpcy5jb25maWd1cmF0aW9uLCB0aGlzLmRyYWdEcm9wTW9kZWwpO1xuICAgIHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuc2V0RWRpdFBhbmVsTW9kZWxUb2dnbGUoZmFsc2UpO1xuICAgIHRoaXMuZWRpdFBhbmVsTW9kZWwudG9nZ2xlID0gdGhpcy5jb250cm9sbGVyTW9kYWxQcm94eS5nZXRFZGl0UGFuZWxNb2RlbFRvZ2dsZSgpO1xuICAgIHRoaXMuZGRJdGVtUmlnaHRDbGlja2VkTWFuYWdlci5yZXNldEFsbERyYWdEcm9wSXRlbVNlbGVjdGVkU3RhdGUodGhpcy5kcmFnRHJvcE1vZGVsKTtcbiAgfVxuXG5cbiAgY2xvc2VFZGl0UGFuZWwoKXtcbiAgICAvLyByZXNldCBhbGwgcmlnaHRDbGlja2VkIGNvbnRyb2wgcHJvcGVydGllcyB0byBmYWxzZVxuICAgIHRoaXMuZGRJdGVtUmlnaHRDbGlja2VkTWFuYWdlci5yZXNldEFsbERyYWdEcm9wSXRlbVNlbGVjdGVkU3RhdGUodGhpcy5kcmFnRHJvcE1vZGVsKTtcblxuICAgIC8qKlxuICAgICogVE9ETyA6IHJlZnJlc2ggY29uZmlndXJhdGlvbiBtb2RlbFxuICAgICogdW5jb21tZW50IGFmdGVyIHVwZGF0ZSB0aGVzZSBuZXh0IDMgbGluZXNcbiAgICAqXG4gICAgKiBOT1RFIDogaW5kZXhMaW5lIEFORCAgbnVtY29sdW1uIHNob3VsZCBiZSBzdG9yZWQgaW4gc2VydmljZSBhbmRcbiAgICAqIHVwZGF0ZWQgd2hlbiB0b2dsZSBzaWRlcGFuZWxcbiAgICAqL1xuICAgIC8vdGhpcy5jb250cm9sbGVyTW9kYWxQcm94eS5iaW5kQ29uZmlndXJhdGlvbk1vZGVsRnJvbVByb3h5TW9kZWwoaW5kZXhMaW5lLCBudW1jb2x1bW4sIG1vZGFsQWRkQ3RybE1vZGVsLCB0aGlzLmNvbmZpZ3VyYXRpb24pO1xuICAgIC8vdGhpcy5mb3JtRmllbGRNYW5hZ2UuYXBwbHlDb25maWd1cmF0aW9uVG9mb3JtbHlNb2RlbCh0aGlzLmNvbmZpZ3VyYXRpb24sIHRoaXMud2ZGb3JtRmllbGRzLCB0aGlzLmRhdGFNb2RlbCk7XG4gICAgLy90aGlzLndmRm9ybUZpZWxkc09ubHlOZWVkZWRQcm9wZXJ0aWVzID0gYW5ndWxhci5jb3B5KHRoaXMud2ZGb3JtRmllbGRzKTtcblxuICAgIHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuc2V0RWRpdFBhbmVsTW9kZWxUb2dnbGUoZmFsc2UpO1xuICAgIHRoaXMuZWRpdFBhbmVsTW9kZWwudG9nZ2xlID0gdGhpcy5jb250cm9sbGVyTW9kYWxQcm94eS5nZXRFZGl0UGFuZWxNb2RlbFRvZ2dsZSgpO1xuICB9XG5cblxuICBzZXRSaWdodENsaWNrZWQocHJldmlvdXNTdGF0ZSwgaXRlbSl7XG4gICAgaXRlbS5yaWdodENsaWtlZCA9IHRydWU7XG4gIH1cblxuICB0b2dnbGVFZGl0UGFuZWwoZXZlbnQsIGxpbmVJbmRleCwgY29sSW5kZXgsIGl0ZW0pe1xuICAgIHRoaXMuZGRJdGVtUmlnaHRDbGlja2VkTWFuYWdlci5yZXNldEFsbERyYWdEcm9wSXRlbVNlbGVjdGVkU3RhdGUodGhpcy5kcmFnRHJvcE1vZGVsKTtcbiAgICAvLyBhbHJlYWR5IG9wZW5lZCAoY291bGQgYmUgYW5vdGhlciBjb250cm9sIGVkaXQpXG4gICAgaWYgKHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuZ2V0RWRpdFBhbmVsTW9kZWxUb2dnbGUoKSkge1xuICAgICAgLy8gLT4gaW1tZWRpYXRlIGNsb3NlIGFuZCByZWZyZXNoIGNvbmZpZ3VyYXRpb24gbW9kZWwgKyBmb3JtbHkgbW9kZWxcbiAgICAgIHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuc2V0RWRpdFBhbmVsTW9kZWxUb2dnbGUoZmFsc2UpO1xuICAgICAgdGhpcy5lZGl0UGFuZWxNb2RlbC50b2dnbGUgPSB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LmdldEVkaXRQYW5lbE1vZGVsVG9nZ2xlKCk7XG5cbiAgICAgIC8vVE9ETyA6IGZvciByZWZyZXNoaW5nXG4gICAgICAvL3RoaXMuY29udHJvbGxlck1vZGFsUHJveHkuYmluZENvbmZpZ3VyYXRpb25Nb2RlbEZyb21Qcm94eU1vZGVsKGluZGV4TGluZSwgbnVtY29sdW1uLCBtb2RhbEFkZEN0cmxNb2RlbCwgdGhpcy5jb25maWd1cmF0aW9uKTtcbiAgICAgIC8vdGhpcy5mb3JtRmllbGRNYW5hZ2UuYXBwbHlDb25maWd1cmF0aW9uVG9mb3JtbHlNb2RlbCh0aGlzLmNvbmZpZ3VyYXRpb24sIHRoaXMud2ZGb3JtRmllbGRzLCB0aGlzLmRhdGFNb2RlbCk7XG4gICAgICAvL3RoaXMud2ZGb3JtRmllbGRzT25seU5lZWRlZFByb3BlcnRpZXMgPSBhbmd1bGFyLmNvcHkodGhpcy53ZkZvcm1GaWVsZHMpO1xuXG4gICAgICAvLyBjaGVjayBpZiBuZXcgY29udHJvbCByaWdodCBjbGlja2VkIG90aGVyd2lzZSBqdXN0IHRvZ2dsZSBzaWRlIHBhbmVsXG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuZ2V0RWRpdFBhbmVsTW9kZWxMaW5lSW5kZXgoKSAgICAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICB0eXBlb2YgdGhpcy5jb250cm9sbGVyTW9kYWxQcm94eS5nZXRFZGl0UGFuZWxNb2RlbENvbHVtbkluZGV4KCkgICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgIHR5cGVvZiB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LmdldEVkaXRQYW5lbE1vZGVsQ29udHJvbCgpICAgICAgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LmdldEVkaXRQYW5lbE1vZGVsTGluZUluZGV4KCkgICA9PT0gbGluZUluZGV4ICYmXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LmdldEVkaXRQYW5lbE1vZGVsQ29sdW1uSW5kZXgoKSA9PT0gY29sSW5kZXggICYmXG4gICAgICAgICAgYW5ndWxhci5lcXVhbHModGhpcy5jb250cm9sbGVyTW9kYWxQcm94eS5nZXRFZGl0UGFuZWxNb2RlbENvbnRyb2woKSwgaXRlbSkpIHtcbiAgICAgICAgICAvL2NvbnNvbGUuaW5mbygnYWxyZWFkeSBvcGVuZWQgZm9yIFNBTUUgY3RybCA6IHNvIGNsb3NlIC0gbm8gcmUtb3BlbicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vY29uc29sZS5pbmZvKCdhbHJlYWR5IG9wZW5lZCBmb3IgRElGRkVSRU5UIGN0cmwgOiBzbyByZS1vcGVuJyk7XG4gICAgICAgICAgaXRlbS5yaWdodENsaWtlZCA9IHRydWU7XG4gICAgICAgICAgLy8gc2V0IGEgdGltZW91dCBiZWZvcmUgcmUtb3BlbmluZywgNTAwbXMgaXMgb2sgZm9yIGEgcHMtc2l6ZT1cIjQwMHB4XCJcbiAgICAgICAgICBsZXQgdGltZXJDbG9zZU9wZW5lZEVkaXRQYW5lbCA9IHRoaXMuJHRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuc2V0RWRpdFBhbmVsTW9kZWxMaW5lSW5kZXgobGluZUluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuc2V0RWRpdFBhbmVsTW9kZWxDb2x1bW5JbmRleChjb2xJbmRleCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LnNldEVkaXRQYW5lbE1vZGVsQ29udHJvbChpdGVtKTtcbiAgICAgICAgICAgIC8vIGNvbnRyb2wgbW9kZWwgcGFzc2VkIHRvIFNlcnZpY2UgOiBjb250cm9sbGVyTW9kYWxQcm94eVxuICAgICAgICAgICAgdGhpcy5jb250cm9sbGVyTW9kYWxQcm94eS5zZXRQcm94eU1vZGVsRnJvbUNvbmZpZ3VyYXRpb25TZWxlY3Rpb24odGhpcy5jb25maWd1cmF0aW9uLCBsaW5lSW5kZXgsIGNvbEluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuc2V0RWRpdFBhbmVsTW9kZWxUb2dnbGUodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLiRzY29wZS5lZGl0UGFuZWxNb2RlbC50b2dnbGUgPSB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LmdldEVkaXRQYW5lbE1vZGVsVG9nZ2xlKCk7XG4gICAgICAgICAgfSwgMjAwKTtcbiAgICAgICAgICB0aGlzLiRzY29wZS4kb24oJyRkZXN0cm95JywgKCk9PnRoaXMuJHRpbWVvdXQuY2FuY2VsKHRpbWVyQ2xvc2VPcGVuZWRFZGl0UGFuZWwpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBwcmV2aW91cyBzdGF0ZSA9IGNsb3NlZCA9IGltbWVkaWF0ZSBvcGVuXG4gICAgICAvLyBjb25zb2xlLmluZm8oJ05PVCBhbHJlYWR5IG9wZW5lZCA6IHNvIG9wZW4nKTtcbiAgICAgIGl0ZW0ucmlnaHRDbGlrZWQgPSB0cnVlO1xuXG4gICAgICB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LnNldEVkaXRQYW5lbE1vZGVsTGluZUluZGV4KGxpbmVJbmRleCk7XG4gICAgICB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LnNldEVkaXRQYW5lbE1vZGVsQ29sdW1uSW5kZXgoY29sSW5kZXgpO1xuICAgICAgdGhpcy5jb250cm9sbGVyTW9kYWxQcm94eS5zZXRFZGl0UGFuZWxNb2RlbENvbnRyb2woaXRlbSk7XG4gICAgICAvLyBjb250cm9sIG1vZGVsIHBhc3NlZCB0byBTZXJ2aWNlIDogY29udHJvbGxlck1vZGFsUHJveHlcbiAgICAgIHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuc2V0UHJveHlNb2RlbEZyb21Db25maWd1cmF0aW9uU2VsZWN0aW9uKHRoaXMuY29uZmlndXJhdGlvbiwgbGluZUluZGV4LCBjb2xJbmRleCk7XG4gICAgICB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LnNldEVkaXRQYW5lbE1vZGVsVG9nZ2xlKHRydWUpO1xuICAgICAgdGhpcy5lZGl0UGFuZWxNb2RlbC50b2dnbGUgPSB0aGlzLmNvbnRyb2xsZXJNb2RhbFByb3h5LmdldEVkaXRQYW5lbE1vZGVsVG9nZ2xlKCk7XG4gICAgfVxuXG4gICAgLy8gY29uc29sZS5pbmZvKCdhZnRlciB0b2dnbGVMZWZ0UGFuZWwgY2hlY2sgOicpO1xuICAgIC8vIGNvbnNvbGUuZGlyKHtcbiAgICAvLyAgICd0aGlzLmVkaXRQYW5lbE1vZGVsJyAgICAgICAgICAgICAgICAgOiBhbmd1bGFyLmNvcHkodGhpcy5lZGl0UGFuZWxNb2RlbCksXG4gICAgLy8gICAnY29udHJvbGxlck1vZGFsUHJveHkuZWRpdFBhbmVsTW9kZWwnIDogYW5ndWxhci5jb3B5KHRoaXMuY29udHJvbGxlck1vZGFsUHJveHkuZWRpdFBhbmVsTW9kZWwpXG4gICAgLy8gfSk7XG4gIH1cblxuICAvLyAvLyByZWZyZXNoTW9kZWxzIDogdG8gY2FsbCBhZnRlciBkcmFnIGFuZCBkcm9wIGV2ZW50c1xuICAvLyByZWZyZXNoTW9kZWxzKCl7XG4gIC8vICAgdGhpcy4kdGltZW91dCgoKT0+e1xuICAvLyAgICBjb25zb2xlLmluZm8oJ3JlZnJlc2hpbmcgbW9kZWxzJyk7XG4gIC8vICAgIGZvcm1GaWVsZE1hbmFnZS5hcHBseUNvbmZpZ3VyYXRpb25Ub2Zvcm1seU1vZGVsKHRoaXMuY29uZmlndXJhdGlvbiwgdGhpcy53ZkZvcm1GaWVsZHMsIHRoaXMuZGF0YU1vZGVsKTtcbiAgLy8gICAgdGhpcy53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyA9IGFuZ3VsYXIuY29weSh0aGlzLndmRm9ybUZpZWxkcyk7XG4gIC8vICAgfSwgMTApO1xuICAvLyB9XG5cblxuICByZW1vdmVUaGlzTGluZShsaW5lSW5kZXgpe1xuICAgIHRoaXMuZHJhZ0Ryb3BNb2RlbFsxXS5zcGxpY2UobGluZUluZGV4LDEpO1xuICB9XG5cblxuICAvL1RPRE8gOiB0byBmaXhcbiAgYWRkTmV3bGluZSgpe1xuICAgIC8vIHJlLXJlbmRlciBmb3JtZmllbGRcbiAgICAvLyBUT0RPIDogdG8gZml4XG4gICAgdGhpcy5mb3JtRmllbGRNYW5hZ2UuYXBwbHlDb25maWd1cmF0aW9uVG9mb3JtbHlNb2RlbCh0aGlzLmNvbmZpZ3VyYXRpb24sIHRoaXMud2ZGb3JtRmllbGRzLCB0aGlzLmRhdGFNb2RlbCk7XG4gICAgdGhpcy53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyA9IGFuZ3VsYXIuY29weSh0aGlzLndmRm9ybUZpZWxkcyk7XG4gIH1cblxuICBpbnNlcnROZXdMaW5lKCl7XG4gICAgdGhpcy5hZGROZXdsaW5lKCk7XG4gICAgdGhpcy5kcmFnRHJvcE1vZGVsWzFdLnB1c2goW10pO1xuICB9XG5cblxuXG5cbn1cblxuZWRhRHJhZ0Ryb3BXYXlFYXN5Rm9ybUdlbkN0cmwuJGluamVjdCA9IFtcbiAgICAnJHNjb3BlJyxcbiAgICAnZWFzeUZvcm1HZW5WZXJzaW9uJyxcbiAgICAnJGZpbHRlcicsXG4gICAgJyRhbmNob3JTY3JvbGwnLFxuICAgICd0b2FzdGVyJyxcbiAgICAnJHRpbWVvdXQnLFxuICAgICckbG9nJyxcbiAgICAnZm9ybUZpZWxkTWFuYWdlJyxcbiAgICAnY29udHJvbGxlck1vZGFsUHJveHknLFxuICAgICdkcmFnRHJvcEl0ZW1EZWNvcmF0aW9uU2VydmljZScsXG4gICAgJ2RkTW9kZWxDb25mTW9kZWxQcm94eVNlcnZpY2UnLFxuICAgICdkZEl0ZW1SaWdodENsaWNrZWRNYW5hZ2VyJyAsXG4gICAgJ2Vhc3lGb3JtRHJhZ1dheUNvbmZpZydcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGVkYURyYWdEcm9wV2F5RWFzeUZvcm1HZW5DdHJsO1xuXG5leHBvcnQge1xuICBEUkFHX0RST1BfV0FZX0VBU1lfRk9STV9HRU5fQ09OVFJPTExFUixcbiAgRFJBR19EUk9QX1dBWV9FQVNZX0ZPUk1fR0VOX0NPTlRST0xMRVJBU1xufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZHJhZ2Ryb3B3YXkvY29tcG9uZW50cy9lZGFEcmFnRHJvcFdheUVhc3lGb3JtR2VuL2VkYURyYWdEcm9wV2F5LmVkYURyYWdkcm9wV2F5RWFzeUZvcm1HZW4uY29udHJvbGxlci5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 81 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n/* global angular */\nvar DEBUG_MODEL = {\n\tshowDebug: false,\n\tconfigurationModelNumberofLines: 1\n};\nvar initDebugModel = function initDebugModel() {\n\treturn angular.copy(DEBUG_MODEL);\n};\n\nvar DEFAULT_TAB_MODEL = {\n\teditTab: {\n\t\tactive: true\n\t},\n\tpreviewTab: {\n\t\tactive: false,\n\t\ttabVisible: true,\n\t\tmodelsVisible: true\n\t}\n};\n\nvar initTabModel = function initTabModel(isPreviewPanelVisible, arePreviewModelsVisible) {\n\tvar _tabModel = angular.copy(DEFAULT_TAB_MODEL);\n\tangular.extend(_tabModel.previewTab, {\n\t\ttabVisible: isPreviewPanelVisible,\n\t\tmodelsVisible: arePreviewModelsVisible\n\t});\n\treturn _tabModel;\n};\n\nvar COLUMN_TEMPLATE = {\n\tnumColumn: -1,\n\texist: true,\n\tcontrol: {\n\t\ttype: 'none',\n\t\tkey: 'none',\n\t\tsubtype: 'none'\n\t\t// templateOptions: {\n\t\t// label: 'none',\n\t\t// placeholder: 'none',\n\t\t// required: false,\n\t\t// description: 'Descriptive text'\n\t\t// }\n\t}\n};\nvar initColumnTemplate = function initColumnTemplate() {\n\treturn angular.copy(COLUMN_TEMPLATE);\n};\n\nvar LINE_TEMPLATE = {\n\tline: -1,\n\tactiveColumn: 1,\n\tcolumns: [{\n\t\tnumColumn: 1,\n\t\texist: true,\n\t\tcontrol: {\n\t\t\ttype: 'none',\n\t\t\tkey: 'none'\n\t\t\t// templateOptions: {\n\t\t\t// label: 'none',\n\t\t\t// placeholder: 'none',\n\t\t\t// required: false,\n\t\t\t// description: 'Descriptive text'\n\t\t\t// }\n\t\t}\n\t}]\n};\nvar initLineTemplate = function initLineTemplate() {\n\treturn angular.copy(LINE_TEMPLATE);\n};\n\nvar DEFAULT_IHM_MODEL = {\n\tpreview: {\n\t\tformlyModelViewExpanded: true,\n\t\tformlyFieldsViewExpanded: true,\n\t\tcustomizeFormButtonsExpanded: true,\n\t\tsaveThisFormExpanded: true\n\t}\n};\n\nvar initIhmModel = function initIhmModel() {\n\treturn angular.copy(DEFAULT_IHM_MODEL);\n};\n\nexports.initDebugModel = initDebugModel;\nexports.initTabModel = initTabModel;\nexports.initColumnTemplate = initColumnTemplate;\nexports.initLineTemplate = initLineTemplate;\nexports.initIhmModel = initIhmModel;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZWRhRHJhZ0Ryb3BXYXlFYXN5Rm9ybUdlbi9lZGFEcmFnRHJvcFdheS5lZGFEcmFnZHJvcFdheUVhc3lGb3JtR2VuLmNvbnRyb2xsZXIuaGVscGVycy5qcz82YWJmIl0sIm5hbWVzIjpbIkRFQlVHX01PREVMIiwic2hvd0RlYnVnIiwiY29uZmlndXJhdGlvbk1vZGVsTnVtYmVyb2ZMaW5lcyIsImluaXREZWJ1Z01vZGVsIiwiYW5ndWxhciIsImNvcHkiLCJERUZBVUxUX1RBQl9NT0RFTCIsImVkaXRUYWIiLCJhY3RpdmUiLCJwcmV2aWV3VGFiIiwidGFiVmlzaWJsZSIsIm1vZGVsc1Zpc2libGUiLCJpbml0VGFiTW9kZWwiLCJpc1ByZXZpZXdQYW5lbFZpc2libGUiLCJhcmVQcmV2aWV3TW9kZWxzVmlzaWJsZSIsIl90YWJNb2RlbCIsImV4dGVuZCIsIkNPTFVNTl9URU1QTEFURSIsIm51bUNvbHVtbiIsImV4aXN0IiwiY29udHJvbCIsInR5cGUiLCJrZXkiLCJzdWJ0eXBlIiwiaW5pdENvbHVtblRlbXBsYXRlIiwiTElORV9URU1QTEFURSIsImxpbmUiLCJhY3RpdmVDb2x1bW4iLCJjb2x1bW5zIiwiaW5pdExpbmVUZW1wbGF0ZSIsIkRFRkFVTFRfSUhNX01PREVMIiwicHJldmlldyIsImZvcm1seU1vZGVsVmlld0V4cGFuZGVkIiwiZm9ybWx5RmllbGRzVmlld0V4cGFuZGVkIiwiY3VzdG9taXplRm9ybUJ1dHRvbnNFeHBhbmRlZCIsInNhdmVUaGlzRm9ybUV4cGFuZGVkIiwiaW5pdElobU1vZGVsIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0EsSUFBTUEsY0FBYztBQUNuQkMsWUFBWSxLQURPO0FBRW5CQyxrQ0FBa0M7QUFGZixDQUFwQjtBQUlBLElBQU1DLGlCQUFpQixTQUFqQkEsY0FBaUI7QUFBQSxRQUFNQyxRQUFRQyxJQUFSLENBQWFMLFdBQWIsQ0FBTjtBQUFBLENBQXZCOztBQUlBLElBQU1NLG9CQUFvQjtBQUN6QkMsVUFBWTtBQUNYQyxVQUFTO0FBREUsRUFEYTtBQUl6QkMsYUFBYztBQUNiRCxVQUFhLEtBREE7QUFFYkUsY0FBZSxJQUZGO0FBR2JDLGlCQUFnQjtBQUhIO0FBSlcsQ0FBMUI7O0FBV0EsSUFBTUMsZUFBZSxTQUFmQSxZQUFlLENBQUNDLHFCQUFELEVBQXdCQyx1QkFBeEIsRUFBb0Q7QUFDeEUsS0FBSUMsWUFBWVgsUUFBUUMsSUFBUixDQUFhQyxpQkFBYixDQUFoQjtBQUNBRixTQUFRWSxNQUFSLENBQWVELFVBQVVOLFVBQXpCLEVBQXFDO0FBQ3BDQyxjQUFlRyxxQkFEcUI7QUFFcENGLGlCQUFnQkc7QUFGb0IsRUFBckM7QUFJQSxRQUFPQyxTQUFQO0FBQ0EsQ0FQRDs7QUFVQSxJQUFNRSxrQkFBbUI7QUFDeEJDLFlBQWEsQ0FBQyxDQURVO0FBRXhCQyxRQUFVLElBRmM7QUFHeEJDLFVBQVk7QUFDWEMsUUFBTyxNQURJO0FBRVhDLE9BQVEsTUFGRztBQUdYQyxXQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVFc7QUFIWSxDQUF6QjtBQWVBLElBQU1DLHFCQUFxQixTQUFyQkEsa0JBQXFCO0FBQUEsUUFBTXBCLFFBQVFDLElBQVIsQ0FBYVksZUFBYixDQUFOO0FBQUEsQ0FBM0I7O0FBR0EsSUFBTVEsZ0JBQWdCO0FBQ3JCQyxPQUFLLENBQUMsQ0FEZTtBQUVyQkMsZUFBZSxDQUZNO0FBR3JCQyxVQUFTLENBQ1I7QUFDQ1YsYUFBVyxDQURaO0FBRUNDLFNBQU0sSUFGUDtBQUdDQyxXQUFTO0FBQ1JDLFNBQUssTUFERztBQUVSQyxRQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUlE7QUFIVixFQURRO0FBSFksQ0FBdEI7QUFvQkEsSUFBTU8sbUJBQW1CLFNBQW5CQSxnQkFBbUI7QUFBQSxRQUFNekIsUUFBUUMsSUFBUixDQUFhb0IsYUFBYixDQUFOO0FBQUEsQ0FBekI7O0FBR0EsSUFBTUssb0JBQW9CO0FBQ3pCQyxVQUFVO0FBQ1JDLDJCQUE2QixJQURyQjtBQUVSQyw0QkFBOEIsSUFGdEI7QUFHUkMsZ0NBQWdDLElBSHhCO0FBSVJDLHdCQUE0QjtBQUpwQjtBQURlLENBQTFCOztBQVVBLElBQU1DLGVBQWUsU0FBZkEsWUFBZTtBQUFBLFFBQU1oQyxRQUFRQyxJQUFSLENBQWF5QixpQkFBYixDQUFOO0FBQUEsQ0FBckI7O1FBR0MzQixjLEdBQUFBLGM7UUFDQVMsWSxHQUFBQSxZO1FBQ0FZLGtCLEdBQUFBLGtCO1FBQ0FLLGdCLEdBQUFBLGdCO1FBQ0FPLFksR0FBQUEsWSIsImZpbGUiOiI4MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCBhbmd1bGFyICovXG5jb25zdCBERUJVR19NT0RFTCA9IHtcblx0c2hvd0RlYnVnIDogZmFsc2UsXG5cdGNvbmZpZ3VyYXRpb25Nb2RlbE51bWJlcm9mTGluZXMgOiAxICAgICAgICBcbn07XG5jb25zdCBpbml0RGVidWdNb2RlbCA9ICgpID0+IGFuZ3VsYXIuY29weShERUJVR19NT0RFTCk7XG5cblxuXG5jb25zdCBERUZBVUxUX1RBQl9NT0RFTCA9IHtcblx0ZWRpdFRhYlx0XHRcdDoge1xuXHRcdGFjdGl2ZSA6IHRydWVcblx0fSxcblx0cHJldmlld1RhYiBcdDoge1xuXHRcdGFjdGl2ZSBcdFx0XHRcdDogZmFsc2UsXG5cdFx0dGFiVmlzaWJsZSBcdFx0OiB0cnVlLFxuXHRcdG1vZGVsc1Zpc2libGUgOiB0cnVlXG5cdH1cbn07XG5cbmNvbnN0IGluaXRUYWJNb2RlbCA9IChpc1ByZXZpZXdQYW5lbFZpc2libGUsIGFyZVByZXZpZXdNb2RlbHNWaXNpYmxlKSA9PiB7XG5cdGxldCBfdGFiTW9kZWwgPSBhbmd1bGFyLmNvcHkoREVGQVVMVF9UQUJfTU9ERUwpO1xuXHRhbmd1bGFyLmV4dGVuZChfdGFiTW9kZWwucHJldmlld1RhYiwge1xuXHRcdHRhYlZpc2libGUgXHRcdDogaXNQcmV2aWV3UGFuZWxWaXNpYmxlLFxuXHRcdG1vZGVsc1Zpc2libGUgOiBhcmVQcmV2aWV3TW9kZWxzVmlzaWJsZVx0XHRcblx0fSk7XG5cdHJldHVybiBfdGFiTW9kZWw7XG59O1xuXG5cbmNvbnN0IENPTFVNTl9URU1QTEFURSA9ICB7XG5cdG51bUNvbHVtblx0XHQ6IC0xLFxuXHRleGlzdFx0XHRcdFx0OnRydWUsIFxuXHRjb250cm9sXHRcdFx0OiB7XG5cdFx0dHlwZVx0XHQ6J25vbmUnLFxuXHRcdGtleVx0XHRcdDogJ25vbmUnLFxuXHRcdHN1YnR5cGVcdDogJ25vbmUnXG5cdFx0Ly8gdGVtcGxhdGVPcHRpb25zOiB7XG5cdFx0Ly8gICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ25vbmUnLFxuXHRcdC8vICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdub25lJyxcblx0XHQvLyAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcblx0XHQvLyAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpdmUgdGV4dCdcblx0XHQvLyAgICAgICAgICAgICAgICAgICB9XG5cdH1cbn07IFxuY29uc3QgaW5pdENvbHVtblRlbXBsYXRlID0gKCkgPT4gYW5ndWxhci5jb3B5KENPTFVNTl9URU1QTEFURSk7XG5cblxuY29uc3QgTElORV9URU1QTEFURSA9IHtcblx0bGluZTotMSwgXG5cdGFjdGl2ZUNvbHVtbiA6IDEsXG5cdGNvbHVtbnM6IFtcblx0XHR7ICBcblx0XHRcdG51bUNvbHVtbjogMSxcblx0XHRcdGV4aXN0OnRydWUsIFxuXHRcdFx0Y29udHJvbDoge1xuXHRcdFx0XHR0eXBlOidub25lJyxcblx0XHRcdFx0a2V5OiAnbm9uZSdcblx0XHRcdFx0Ly8gdGVtcGxhdGVPcHRpb25zOiB7XG5cdFx0XHRcdC8vICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdub25lJyxcblx0XHRcdFx0Ly8gICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ25vbmUnLFxuXHRcdFx0XHQvLyAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcblx0XHRcdFx0Ly8gICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aXZlIHRleHQnXG5cdFx0XHRcdC8vICAgICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdF1cbn07XG5jb25zdCBpbml0TGluZVRlbXBsYXRlID0gKCkgPT4gYW5ndWxhci5jb3B5KExJTkVfVEVNUExBVEUpO1xuXG5cbmNvbnN0IERFRkFVTFRfSUhNX01PREVMID0ge1xuXHRwcmV2aWV3IDoge1xuXHRcdFx0Zm9ybWx5TW9kZWxWaWV3RXhwYW5kZWQgXHRcdFx0OiB0cnVlLFxuXHRcdFx0Zm9ybWx5RmllbGRzVmlld0V4cGFuZGVkIFx0XHRcdDogdHJ1ZSxcblx0XHRcdGN1c3RvbWl6ZUZvcm1CdXR0b25zRXhwYW5kZWQgXHQ6IHRydWUsXG5cdFx0XHRzYXZlVGhpc0Zvcm1FeHBhbmRlZCBcdFx0XHRcdFx0OiB0cnVlICBcblx0fVxufTtcblxuXG5jb25zdCBpbml0SWhtTW9kZWwgPSAoKSA9PiBhbmd1bGFyLmNvcHkoREVGQVVMVF9JSE1fTU9ERUwpO1xuXG5leHBvcnQge1xuXHRpbml0RGVidWdNb2RlbCxcblx0aW5pdFRhYk1vZGVsLFxuXHRpbml0Q29sdW1uVGVtcGxhdGUsXG5cdGluaXRMaW5lVGVtcGxhdGUsXG5cdGluaXRJaG1Nb2RlbFxufTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZWRhRHJhZ0Ryb3BXYXlFYXN5Rm9ybUdlbi9lZGFEcmFnRHJvcFdheS5lZGFEcmFnZHJvcFdheUVhc3lGb3JtR2VuLmNvbnRyb2xsZXIuaGVscGVycy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 82 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE = undefined;\n\nvar _edaDragDropWayEdaDragdropWayEasyFormGenTemplate = __webpack_require__(83);\n\nvar _edaDragDropWayEdaDragdropWayEasyFormGenTemplate2 = _interopRequireDefault(_edaDragDropWayEdaDragdropWayEasyFormGenTemplate);\n\nvar _edaDragDropWayEdaDragdropWayEasyFormGen = __webpack_require__(80);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* global angular */\n\n//TODO : to bindToController\n//-> then angular 1.4+ will be required...\n//-> check methot to refactor inside rag drop way then common step way and drag drop way\n\nvar EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE = 'edaDragdropWayEasyFormGen';\n\nfunction edaDragdropWayEasyFormGen($timeout, formFieldManage, ddModelConfModelProxyService,\n// dragDropConfig,\neasyFormDragWayConfig) {\n\n\tvar directive = {\n\t\trestrict: 'E',\n\t\ttemplate: _edaDragDropWayEdaDragdropWayEasyFormGenTemplate2.default,\n\t\tscope: {\n\t\t\tedaEasyFormGeneratorModel: '=',\n\t\t\tedaSaveFormEvent: '&edaSaveFormEvent'\n\t\t},\n\t\tcontroller: _edaDragDropWayEdaDragdropWayEasyFormGen.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER,\n\t\tcontrollerAs: _edaDragDropWayEdaDragdropWayEasyFormGen.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS,\n\t\treplace: false,\n\t\tlink: linkFct\n\t};\n\treturn directive;\n\n\tfunction linkFct(scope) {\n\t\t// watch \"scope.easyFormGeneratorModel\"\n\t\tscope.$watch(function () {\n\t\t\treturn scope.edaEasyFormGeneratorModel;\n\t\t}, function () {\n\t\t\treturn loadExistingConfigurationModel();\n\t\t}, true);\n\n\t\t// watch \"scope.returnSaveEvent\"\" = catch saving form event \n\t\tscope.$watch(function () {\n\t\t\treturn scope.returnSaveEvent;\n\t\t}, function (newValue) {\n\t\t\tif (newValue === true) {\n\t\t\t\tvar _easyFormGeneratorModel = {\n\t\t\t\t\tformName: scope.vm.configuration.formName,\n\t\t\t\t\tbtnSubmitText: scope.vm.configuration.submitButtonText,\n\t\t\t\t\tbtnCancelText: scope.vm.configuration.cancelButtonText,\n\t\t\t\t\tedaFieldsModel: scope.vm.configuration.lines,\n\t\t\t\t\t//just as test\n\t\t\t\t\tedaFieldsModelStringified: angular.toJson(scope.vm.configuration.lines),\n\t\t\t\t\tformlyFieldsModel: scope.vm.wfFormFieldsOnlyNeededProperties,\n\t\t\t\t\tdataModel: scope.vm.dataModel\n\t\t\t\t};\n\t\t\t\tscope.edaSaveFormEvent({\n\t\t\t\t\tedaEasyFormGeneratorModel: _easyFormGeneratorModel\n\t\t\t\t});\n\t\t\t\t//back to false, waiting next save event\n\t\t\t\tscope.returnSaveEvent = false;\n\t\t\t}\n\t\t});\n\n\t\tfunction returnAttributeConfigurationLinesIfNotEmpty() {\n\t\t\tvar edaEasyFormGeneratorModelToReturn = angular.isArray(scope.edaEasyFormGeneratorModel.edaFieldsModel) ? scope.edaEasyFormGeneratorModel.edaFieldsModel.length > 0 ? scope.edaEasyFormGeneratorModel.edaFieldsModel : emptyEdaFieldsModel() : emptyEdaFieldsModel();\n\t\t\treturn edaEasyFormGeneratorModelToReturn;\n\t\t}\n\n\t\t/**\n \t* empty fields model : to display at least an empty line\n \t* otherwise would look like ugly empty line like it were a bug\n \t*/\n\t\tfunction emptyEdaFieldsModel() {\n\t\t\tvar emptyModel = [{\n\t\t\t\t'line': 1,\n\t\t\t\t'activeColumn': 1,\n\t\t\t\t'columns': [{\n\t\t\t\t\t'numColumn': 1,\n\t\t\t\t\t'exist': true,\n\t\t\t\t\t'control': {\n\t\t\t\t\t\t'type': 'none',\n\t\t\t\t\t\t'key': 'none'\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}];\n\t\t\treturn emptyModel;\n\t\t}\n\n\t\tfunction returnAttributeDataModelIfNotEmpty() {\n\t\t\tvar dataModelToReturn = angular.isArray(scope.edaEasyFormGeneratorModel.dataModel) ? scope.edaEasyFormGeneratorModel.dataModel.length > 0 ? scope.edaEasyFormGeneratorModel.dataModel : [] : [];\n\t\t\treturn dataModelToReturn;\n\t\t}\n\n\t\tfunction loadExistingConfigurationModel() {\n\t\t\tif (angular.isDefined(scope.edaEasyFormGeneratorModel)) {\n\t\t\t\tvar configlines = returnAttributeConfigurationLinesIfNotEmpty();\n\t\t\t\tscope.vm.configurationLoaded = {};\n\t\t\t\tformFieldManage.bindConfigurationLines(scope.vm.configurationLoaded, configlines, false);\n\t\t\t\t//apply configuration model\n\t\t\t\tscope.vm.configuration = angular.copy(scope.vm.configurationLoaded);\n\t\t\t\t//apply ddModel\n\t\t\t\tddModelConfModelProxyService.loadDragDropModelFromConfigurationModel(scope.vm.configuration, scope.vm.dragDropModel);\n\t\t\t\tupdateConfigurationClassName(scope.vm.configuration);\n\t\t\t\tddModelConfModelProxyService.refreshControlsKeys(scope.vm.configuration, scope.vm.dragDropModel);\n\t\t\t\t//apply formly model\n\t\t\t\tformFieldManage.applyConfigurationToformlyModel(scope.vm.configuration, scope.vm.wfFormFields, scope.vm.dataModel);\n\t\t\t\tscope.vm.wfFormFieldsOnlyNeededProperties = angular.copy(scope.vm.wfFormFields);\n\t\t\t\tscope.vm.dataModel = returnAttributeDataModelIfNotEmpty();\n\t\t\t\tscope.vm.configuration.formName = angular.isString(scope.edaEasyFormGeneratorModel.formName) ? scope.edaEasyFormGeneratorModel.formName : '';\n\t\t\t\tscope.vm.configuration.submitButtonText = angular.isString(scope.edaEasyFormGeneratorModel.btnSubmitText) ? scope.edaEasyFormGeneratorModel.btnSubmitText : 'Submit';\n\t\t\t\tscope.vm.configuration.cancelButtonText = angular.isString(scope.edaEasyFormGeneratorModel.btnCancelText) ? scope.edaEasyFormGeneratorModel.btnCancelText : 'Cancel';\n\t\t\t}\n\t\t}\n\n\t\tfunction updateConfigurationClassName(configModel) {\n\t\t\tangular.forEach(configModel.lines, function (aline) {\n\t\t\t\tvar cssClassToApply = easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(aline.columns.length);\n\t\t\t\tangular.forEach(aline.columns, function (aControl) {\n\t\t\t\t\treturn aControl.control.className = cssClassToApply;\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n}\n\nedaDragdropWayEasyFormGen.$inject = ['$timeout', 'formFieldManage', 'ddModelConfModelProxyService',\n// 'dragDropConfig',\n'easyFormDragWayConfig'];\n\nexports.default = edaDragdropWayEasyFormGen;\nexports.EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE = EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZWRhRHJhZ0Ryb3BXYXlFYXN5Rm9ybUdlbi9lZGFEcmFnRHJvcFdheS5lZGFEcmFnZHJvcFdheUVhc3lGb3JtR2VuLmRpcmVjdGl2ZS5qcz9iMjkwIl0sIm5hbWVzIjpbIkVEQV9EUkFHRFJPUF9XQVlfRUFTWV9GT1JNX0dFTl9ESVJFQ1RJVkUiLCJlZGFEcmFnZHJvcFdheUVhc3lGb3JtR2VuIiwiJHRpbWVvdXQiLCJmb3JtRmllbGRNYW5hZ2UiLCJkZE1vZGVsQ29uZk1vZGVsUHJveHlTZXJ2aWNlIiwiZWFzeUZvcm1EcmFnV2F5Q29uZmlnIiwiZGlyZWN0aXZlIiwicmVzdHJpY3QiLCJ0ZW1wbGF0ZSIsInNjb3BlIiwiZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbCIsImVkYVNhdmVGb3JtRXZlbnQiLCJjb250cm9sbGVyIiwiY29udHJvbGxlckFzIiwicmVwbGFjZSIsImxpbmsiLCJsaW5rRmN0IiwiJHdhdGNoIiwibG9hZEV4aXN0aW5nQ29uZmlndXJhdGlvbk1vZGVsIiwicmV0dXJuU2F2ZUV2ZW50IiwibmV3VmFsdWUiLCJfZWFzeUZvcm1HZW5lcmF0b3JNb2RlbCIsImZvcm1OYW1lIiwidm0iLCJjb25maWd1cmF0aW9uIiwiYnRuU3VibWl0VGV4dCIsInN1Ym1pdEJ1dHRvblRleHQiLCJidG5DYW5jZWxUZXh0IiwiY2FuY2VsQnV0dG9uVGV4dCIsImVkYUZpZWxkc01vZGVsIiwibGluZXMiLCJlZGFGaWVsZHNNb2RlbFN0cmluZ2lmaWVkIiwiYW5ndWxhciIsInRvSnNvbiIsImZvcm1seUZpZWxkc01vZGVsIiwid2ZGb3JtRmllbGRzT25seU5lZWRlZFByb3BlcnRpZXMiLCJkYXRhTW9kZWwiLCJyZXR1cm5BdHRyaWJ1dGVDb25maWd1cmF0aW9uTGluZXNJZk5vdEVtcHR5IiwiZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbFRvUmV0dXJuIiwiaXNBcnJheSIsImxlbmd0aCIsImVtcHR5RWRhRmllbGRzTW9kZWwiLCJlbXB0eU1vZGVsIiwicmV0dXJuQXR0cmlidXRlRGF0YU1vZGVsSWZOb3RFbXB0eSIsImRhdGFNb2RlbFRvUmV0dXJuIiwiaXNEZWZpbmVkIiwiY29uZmlnbGluZXMiLCJjb25maWd1cmF0aW9uTG9hZGVkIiwiYmluZENvbmZpZ3VyYXRpb25MaW5lcyIsImNvcHkiLCJsb2FkRHJhZ0Ryb3BNb2RlbEZyb21Db25maWd1cmF0aW9uTW9kZWwiLCJkcmFnRHJvcE1vZGVsIiwidXBkYXRlQ29uZmlndXJhdGlvbkNsYXNzTmFtZSIsInJlZnJlc2hDb250cm9sc0tleXMiLCJhcHBseUNvbmZpZ3VyYXRpb25Ub2Zvcm1seU1vZGVsIiwid2ZGb3JtRmllbGRzIiwiaXNTdHJpbmciLCJjb25maWdNb2RlbCIsImZvckVhY2giLCJhbGluZSIsImNzc0NsYXNzVG9BcHBseSIsImdldEl0ZW1Dc3NEZXBlbmRpbmdOdW1iZXJJdGVtc0luUm93IiwiY29sdW1ucyIsImFDb250cm9sIiwiY29udHJvbCIsImNsYXNzTmFtZSIsIiRpbmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFPQTs7OztBQUNBOzs7O0FBUkE7O0FBR0E7QUFDQTtBQUNBOztBQVNBLElBQU1BLDJDQUEyQywyQkFBakQ7O0FBRUEsU0FBU0MseUJBQVQsQ0FDQ0MsUUFERCxFQUVDQyxlQUZELEVBR0NDLDRCQUhEO0FBSUM7QUFDQUMscUJBTEQsRUFLdUI7O0FBRXRCLEtBQUlDLFlBQVk7QUFDZkMsWUFBYyxHQURDO0FBRWZDLHFFQUZlO0FBR2ZDLFNBQWE7QUFDWkMsOEJBQTRCLEdBRGhCO0FBRVpDLHFCQUE0QjtBQUZoQixHQUhFO0FBT2ZDLDZGQVBlO0FBUWZDLGlHQVJlO0FBU2ZDLFdBQWEsS0FURTtBQVVmQyxRQUFXQztBQVZJLEVBQWhCO0FBWUEsUUFBT1YsU0FBUDs7QUFLQSxVQUFTVSxPQUFULENBQWlCUCxLQUFqQixFQUF1QjtBQUN0QjtBQUNBQSxRQUFNUSxNQUFOLENBQWE7QUFBQSxVQUFJUixN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LE9BQU4sQ0FBY3RCLE1BQXhFLENBQXRCO0FBQ0FSLFlBQVEwQixPQUFSLENBQWdCQyxNQUFNRyxPQUF0QixFQUErQixVQUFDQyxRQUFEO0FBQUEsWUFBYUEsU0FBU0MsT0FBVCxDQUFpQkMsU0FBakIsR0FBNkJMLGVBQTFDO0FBQUEsS0FBL0I7QUFDQSxJQUhEO0FBSUE7QUFFRjtBQUlBOztBQUVEM0QsMEJBQTBCaUUsT0FBMUIsR0FBb0MsQ0FDbkMsVUFEbUMsRUFFbkMsaUJBRm1DLEVBR25DLDhCQUhtQztBQUluQztBQUNBLHVCQUxtQyxDQUFwQzs7a0JBUWVqRSx5QjtRQUdkRCx3QyxHQUFBQSx3QyIsImZpbGUiOiI4Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCBhbmd1bGFyICovXG5cblxuLy9UT0RPIDogdG8gYmluZFRvQ29udHJvbGxlclxuLy8tPiB0aGVuIGFuZ3VsYXIgMS40KyB3aWxsIGJlIHJlcXVpcmVkLi4uXG4vLy0+IGNoZWNrIG1ldGhvdCB0byByZWZhY3RvciBpbnNpZGUgcmFnIGRyb3Agd2F5IHRoZW4gY29tbW9uIHN0ZXAgd2F5IGFuZCBkcmFnIGRyb3Agd2F5XG5cbmltcG9ydCBlZGFEcmFnRHJvcFdheUVhc3lGb3JtR2VuRGlyZWN0aXZlVGVtcGxhdGUgXHRmcm9tICcuL2VkYURyYWdEcm9wV2F5LmVkYURyYWdkcm9wV2F5RWFzeUZvcm1HZW4udGVtcGxhdGUuaHRtbCc7XG5pbXBvcnQge1xuXHREUkFHX0RST1BfV0FZX0VBU1lfRk9STV9HRU5fQ09OVFJPTExFUixcblx0RFJBR19EUk9QX1dBWV9FQVNZX0ZPUk1fR0VOX0NPTlRST0xMRVJBU1xufSBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZyb20gJy4vZWRhRHJhZ0Ryb3BXYXkuZWRhRHJhZ2Ryb3BXYXlFYXN5Rm9ybUdlbi5jb250cm9sbGVyJztcblxuXG5jb25zdCBFREFfRFJBR0RST1BfV0FZX0VBU1lfRk9STV9HRU5fRElSRUNUSVZFID0gJ2VkYURyYWdkcm9wV2F5RWFzeUZvcm1HZW4nO1xuXG5mdW5jdGlvbiBlZGFEcmFnZHJvcFdheUVhc3lGb3JtR2VuKFxuXHQkdGltZW91dCwgXG5cdGZvcm1GaWVsZE1hbmFnZSxcblx0ZGRNb2RlbENvbmZNb2RlbFByb3h5U2VydmljZSxcblx0Ly8gZHJhZ0Ryb3BDb25maWcsXG5cdGVhc3lGb3JtRHJhZ1dheUNvbmZpZyl7XG5cdFxuXHRsZXQgZGlyZWN0aXZlID0ge1xuXHRcdHJlc3RyaWN0IFx0XHRcdDogJ0UnLFxuXHRcdHRlbXBsYXRlXHRcdFx0OiBlZGFEcmFnRHJvcFdheUVhc3lGb3JtR2VuRGlyZWN0aXZlVGVtcGxhdGUsXG5cdFx0c2NvcGUgIFx0XHRcdFx0OiB7XG5cdFx0XHRlZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsIDogJz0nLFxuXHRcdFx0ZWRhU2F2ZUZvcm1FdmVudCAgICAgICAgICA6ICcmZWRhU2F2ZUZvcm1FdmVudCdcdFx0XHRcblx0XHR9LFxuXHRcdGNvbnRyb2xsZXIgXHRcdDogRFJBR19EUk9QX1dBWV9FQVNZX0ZPUk1fR0VOX0NPTlRST0xMRVIsXG5cdFx0Y29udHJvbGxlckFzIFx0OiBEUkFHX0RST1BfV0FZX0VBU1lfRk9STV9HRU5fQ09OVFJPTExFUkFTLFxuXHRcdHJlcGxhY2UgXHRcdFx0OiBmYWxzZSxcdFx0XG5cdFx0bGlua1x0XHRcdFx0XHQ6IGxpbmtGY3Rcblx0fTtcblx0cmV0dXJuIGRpcmVjdGl2ZTtcblx0XG5cdFxuXHRcblx0XG5cdGZ1bmN0aW9uIGxpbmtGY3Qoc2NvcGUpeyAgICAgICAgICAgICAgXG5cdFx0Ly8gd2F0Y2ggXCJzY29wZS5lYXN5Rm9ybUdlbmVyYXRvck1vZGVsXCJcblx0XHRzY29wZS4kd2F0Y2goKCk9PnNjb3BlLmVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwsICgpPT5sb2FkRXhpc3RpbmdDb25maWd1cmF0aW9uTW9kZWwoKSwgdHJ1ZSk7XG5cblx0XHQvLyB3YXRjaCBcInNjb3BlLnJldHVyblNhdmVFdmVudFwiXCIgPSBjYXRjaCBzYXZpbmcgZm9ybSBldmVudCAgXG5cdFx0c2NvcGUuJHdhdGNoKCgpPT5zY29wZS5yZXR1cm5TYXZlRXZlbnQsIChuZXdWYWx1ZSk9Pntcblx0XHRcdGlmIChuZXdWYWx1ZSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRsZXQgX2Vhc3lGb3JtR2VuZXJhdG9yTW9kZWwgPSB7XG5cdFx0XHRcdFx0Zm9ybU5hbWUgICAgICAgICAgXHRcdFx0XHQ6IHNjb3BlLnZtLmNvbmZpZ3VyYXRpb24uZm9ybU5hbWUsXG5cdFx0XHRcdFx0YnRuU3VibWl0VGV4dCAgICAgXHRcdFx0XHQ6IHNjb3BlLnZtLmNvbmZpZ3VyYXRpb24uc3VibWl0QnV0dG9uVGV4dCxcblx0XHRcdFx0XHRidG5DYW5jZWxUZXh0ICAgICBcdFx0XHRcdDogc2NvcGUudm0uY29uZmlndXJhdGlvbi5jYW5jZWxCdXR0b25UZXh0LFxuXHRcdFx0XHRcdGVkYUZpZWxkc01vZGVsICAgIFx0XHRcdFx0OiBzY29wZS52bS5jb25maWd1cmF0aW9uLmxpbmVzLFxuXHRcdFx0XHRcdC8vanVzdCBhcyB0ZXN0XG5cdFx0XHRcdFx0ZWRhRmllbGRzTW9kZWxTdHJpbmdpZmllZCA6IGFuZ3VsYXIudG9Kc29uKHNjb3BlLnZtLmNvbmZpZ3VyYXRpb24ubGluZXMpLFxuXHRcdFx0XHRcdGZvcm1seUZpZWxkc01vZGVsIFx0XHRcdFx0OiBzY29wZS52bS53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyxcblx0XHRcdFx0XHRkYXRhTW9kZWwgICAgICAgICBcdFx0XHRcdDogc2NvcGUudm0uZGF0YU1vZGVsXG5cdFx0XHRcdH07XG5cdFx0XHRcdHNjb3BlLmVkYVNhdmVGb3JtRXZlbnQoe1xuXHRcdFx0XHRcdGVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwgOiBfZWFzeUZvcm1HZW5lcmF0b3JNb2RlbFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly9iYWNrIHRvIGZhbHNlLCB3YWl0aW5nIG5leHQgc2F2ZSBldmVudFxuXHRcdFx0XHRzY29wZS5yZXR1cm5TYXZlRXZlbnQgPSBmYWxzZTtcblx0XHRcdH0gICAgICAgICAgICBcblx0XHR9KTtcdFxuXG5cblx0XHRmdW5jdGlvbiByZXR1cm5BdHRyaWJ1dGVDb25maWd1cmF0aW9uTGluZXNJZk5vdEVtcHR5KCl7XG5cdFx0XHRsZXQgZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbFRvUmV0dXJuID0gKFxuXHRcdFx0XHRhbmd1bGFyLmlzQXJyYXkoc2NvcGUuZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbC5lZGFGaWVsZHNNb2RlbCkgPyAgKCBcblx0XHRcdFx0XHRzY29wZS5lZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsLmVkYUZpZWxkc01vZGVsLmxlbmd0aCA+IDAgPyBcblx0XHRcdFx0XHRcdHNjb3BlLmVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwuZWRhRmllbGRzTW9kZWwgXG5cdFx0XHRcdFx0OiBlbXB0eUVkYUZpZWxkc01vZGVsKClcblx0XHRcdFx0XHQpIFxuXHRcdFx0XHQ6IGVtcHR5RWRhRmllbGRzTW9kZWwoKVxuXHRcdFx0KTtcblx0XHRcdHJldHVybiBlZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsVG9SZXR1cm47ICBcblx0XHR9XG4gICAgICAgICAgXG5cdFx0LyoqXG5cdFx0XHQqIGVtcHR5IGZpZWxkcyBtb2RlbCA6IHRvIGRpc3BsYXkgYXQgbGVhc3QgYW4gZW1wdHkgbGluZVxuXHRcdFx0KiBvdGhlcndpc2Ugd291bGQgbG9vayBsaWtlIHVnbHkgZW1wdHkgbGluZSBsaWtlIGl0IHdlcmUgYSBidWdcblx0XHRcdCovXG5cdFx0ZnVuY3Rpb24gZW1wdHlFZGFGaWVsZHNNb2RlbCgpe1xuXHRcdFx0bGV0IGVtcHR5TW9kZWwgPSBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQnbGluZSdcdFx0XHRcdFx0OiAxLFxuXHRcdFx0XHRcdCdhY3RpdmVDb2x1bW4nXHQ6IDEsXG5cdFx0XHRcdFx0J2NvbHVtbnMnXHRcdFx0XHQ6IFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0J251bUNvbHVtbidcdDogMSxcblx0XHRcdFx0XHRcdFx0J2V4aXN0J1x0XHRcdDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0J2NvbnRyb2wnXHRcdDoge1xuXHRcdFx0XHRcdFx0XHRcdCd0eXBlJ1x0OiAnbm9uZScsXG5cdFx0XHRcdFx0XHRcdFx0J2tleSdcdFx0OiAnbm9uZSdcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdF1cblx0XHRcdFx0fVxuXHRcdFx0XTtcblx0XHRcdHJldHVybiBlbXB0eU1vZGVsO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIHJldHVybkF0dHJpYnV0ZURhdGFNb2RlbElmTm90RW1wdHkoKXtcblx0XHRcdGxldCBkYXRhTW9kZWxUb1JldHVybiA9IChcblx0XHRcdFx0YW5ndWxhci5pc0FycmF5KHNjb3BlLmVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwuZGF0YU1vZGVsKSAgID8gICggXG5cdFx0XHRcdFx0c2NvcGUuZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbC5kYXRhTW9kZWwubGVuZ3RoID4gMCA/IFxuXHRcdFx0XHRcdHNjb3BlLmVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwuZGF0YU1vZGVsIFxuXHRcdFx0XHRcdDogW11cblx0XHRcdFx0XHQpIFxuXHRcdFx0XHQ6IFtdXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIGRhdGFNb2RlbFRvUmV0dXJuOyAgXG5cdFx0fSAgICAgICAgIFxuIFxuICAgICAgICAgICAgICBcblx0XHRmdW5jdGlvbiBsb2FkRXhpc3RpbmdDb25maWd1cmF0aW9uTW9kZWwoKXtcblx0XHRcdGlmKGFuZ3VsYXIuaXNEZWZpbmVkKHNjb3BlLmVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwpKXtcblx0XHRcdFx0bGV0IGNvbmZpZ2xpbmVzICAgICAgICAgICA9IHJldHVybkF0dHJpYnV0ZUNvbmZpZ3VyYXRpb25MaW5lc0lmTm90RW1wdHkoKTsgICAgICAgICAgIFxuXHRcdFx0XHRzY29wZS52bS5jb25maWd1cmF0aW9uTG9hZGVkID0ge307XG5cdFx0XHRcdGZvcm1GaWVsZE1hbmFnZS5iaW5kQ29uZmlndXJhdGlvbkxpbmVzKHNjb3BlLnZtLmNvbmZpZ3VyYXRpb25Mb2FkZWQsIGNvbmZpZ2xpbmVzLCBmYWxzZSk7XG5cdFx0XHRcdC8vYXBwbHkgY29uZmlndXJhdGlvbiBtb2RlbFxuXHRcdFx0XHRzY29wZS52bS5jb25maWd1cmF0aW9uID0gYW5ndWxhci5jb3B5KHNjb3BlLnZtLmNvbmZpZ3VyYXRpb25Mb2FkZWQpO1xuXHRcdFx0XHQvL2FwcGx5IGRkTW9kZWxcblx0XHRcdFx0ZGRNb2RlbENvbmZNb2RlbFByb3h5U2VydmljZS5sb2FkRHJhZ0Ryb3BNb2RlbEZyb21Db25maWd1cmF0aW9uTW9kZWwoc2NvcGUudm0uY29uZmlndXJhdGlvbiwgc2NvcGUudm0uZHJhZ0Ryb3BNb2RlbCk7IFxuXHRcdFx0XHR1cGRhdGVDb25maWd1cmF0aW9uQ2xhc3NOYW1lKHNjb3BlLnZtLmNvbmZpZ3VyYXRpb24pO1xuXHRcdFx0XHRkZE1vZGVsQ29uZk1vZGVsUHJveHlTZXJ2aWNlLnJlZnJlc2hDb250cm9sc0tleXMoc2NvcGUudm0uY29uZmlndXJhdGlvbiwgc2NvcGUudm0uZHJhZ0Ryb3BNb2RlbCk7ICAgICAgICAgICAgIFxuXHRcdFx0XHQvL2FwcGx5IGZvcm1seSBtb2RlbFxuXHRcdFx0XHRmb3JtRmllbGRNYW5hZ2UuYXBwbHlDb25maWd1cmF0aW9uVG9mb3JtbHlNb2RlbChzY29wZS52bS5jb25maWd1cmF0aW9uLCBzY29wZS52bS53ZkZvcm1GaWVsZHMsIHNjb3BlLnZtLmRhdGFNb2RlbCk7ICAgICAgICAgIFxuXHRcdFx0XHRzY29wZS52bS53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyA9IGFuZ3VsYXIuY29weShzY29wZS52bS53ZkZvcm1GaWVsZHMpO1xuXHRcdFx0XHRzY29wZS52bS5kYXRhTW9kZWwgICAgICAgICAgICAgICAgICAgICAgICA9IHJldHVybkF0dHJpYnV0ZURhdGFNb2RlbElmTm90RW1wdHkoKTsgIFxuXHRcdFx0XHRzY29wZS52bS5jb25maWd1cmF0aW9uLmZvcm1OYW1lICAgICAgICAgICA9IGFuZ3VsYXIuaXNTdHJpbmcoc2NvcGUuZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbC5mb3JtTmFtZSkgPyBzY29wZS5lZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsLmZvcm1OYW1lIDogJyc7XG5cdFx0XHRcdHNjb3BlLnZtLmNvbmZpZ3VyYXRpb24uc3VibWl0QnV0dG9uVGV4dCAgID0gYW5ndWxhci5pc1N0cmluZyhzY29wZS5lZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsLmJ0blN1Ym1pdFRleHQpID8gc2NvcGUuZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbC5idG5TdWJtaXRUZXh0IDogJ1N1Ym1pdCc7IFxuXHRcdFx0XHRzY29wZS52bS5jb25maWd1cmF0aW9uLmNhbmNlbEJ1dHRvblRleHQgICA9IGFuZ3VsYXIuaXNTdHJpbmcoc2NvcGUuZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbC5idG5DYW5jZWxUZXh0KSA/IHNjb3BlLmVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwuYnRuQ2FuY2VsVGV4dCA6ICdDYW5jZWwnO1xuXHRcdFx0fSAgXG5cdFx0fSBcbiAgICAgICAgIFxuICAgICAgICAgXG5cdFx0ZnVuY3Rpb24gdXBkYXRlQ29uZmlndXJhdGlvbkNsYXNzTmFtZShjb25maWdNb2RlbCl7XG5cdFx0XHRhbmd1bGFyLmZvckVhY2goY29uZmlnTW9kZWwubGluZXMsIChhbGluZSk9Pntcblx0XHRcdFx0bGV0IGNzc0NsYXNzVG9BcHBseSA9IGVhc3lGb3JtRHJhZ1dheUNvbmZpZy5nZXRJdGVtQ3NzRGVwZW5kaW5nTnVtYmVySXRlbXNJblJvdyhhbGluZS5jb2x1bW5zLmxlbmd0aCk7XG5cdFx0XHRcdGFuZ3VsYXIuZm9yRWFjaChhbGluZS5jb2x1bW5zLCAoYUNvbnRyb2wpPT4gYUNvbnRyb2wuY29udHJvbC5jbGFzc05hbWUgPSBjc3NDbGFzc1RvQXBwbHkpOyBcblx0XHRcdH0pOyAgICAgICAgIFxuXHRcdH1cblxufVx0XG5cdFxuXHRcblx0XG59XG5cbmVkYURyYWdkcm9wV2F5RWFzeUZvcm1HZW4uJGluamVjdCA9IFtcblx0JyR0aW1lb3V0JywgXG5cdCdmb3JtRmllbGRNYW5hZ2UnLFxuXHQnZGRNb2RlbENvbmZNb2RlbFByb3h5U2VydmljZScsXG5cdC8vICdkcmFnRHJvcENvbmZpZycsXG5cdCdlYXN5Rm9ybURyYWdXYXlDb25maWcnXHRcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGVkYURyYWdkcm9wV2F5RWFzeUZvcm1HZW47XG5cbmV4cG9ydCB7XG5cdEVEQV9EUkFHRFJPUF9XQVlfRUFTWV9GT1JNX0dFTl9ESVJFQ1RJVkVcbn07XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2VkYURyYWdEcm9wV2F5RWFzeUZvcm1HZW4vZWRhRHJhZ0Ryb3BXYXkuZWRhRHJhZ2Ryb3BXYXlFYXN5Rm9ybUdlbi5kaXJlY3RpdmUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 83 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n \\n
\\n
\\n \\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
2\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdnd-dragover=\\\"vm.dragoverCallbackItems($parent.$parent.$index, $parent.$index, $index, external);\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdnd-drop=\\\"vm.dropCallbackItems(event, index, $index,$parent.$index, $parent.$parent.$index, $parent.$parent.$parent.$index, item, external, type, 'itemType');\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclass=\\\"itemlist\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-content-counter\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-value-when-placeholder=\\\"dndPlaceholder\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-value-when-dragging=\\\"dndDraggingSource\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-full-model = \\\"vm.dragDropModel\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-content-counter-current-index=\\\"{{$index}}\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-content-counter-parent-index=\\\"{{$parent.$index}}\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-content-counter-force-css-refresh = \\\"command.forceRefresh\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tCustomize form buttons\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tDATA MODEL\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{vm.model | json}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tFIELDS MODEL (ready to save to database one)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{vm.wfFormFieldsOnlyNeededProperties | json}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tSave this form\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tsave this form\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t \\n\\t\\t\\t
\\n\\t\\t\\t
\\n \\n Easy form generator : {{vm.easyFormGeneratorVERSION}} — Erwan DATIN (MacKentoch)\\n \\n\\t\\t\\t \\n
\\n
\\n \\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvZWRhRHJhZ0Ryb3BXYXlFYXN5Rm9ybUdlbi9lZGFEcmFnRHJvcFdheS5lZGFEcmFnZHJvcFdheUVhc3lGb3JtR2VuLnRlbXBsYXRlLmh0bWw/Y2NmZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyUUFBMlEsbUZBQW1GLDRuQ0FBNG5DLDBEQUEwRCw2REFBNkQsUUFBUSw0ZUFBNGUsa0hBQWtILDZjQUE2YyxvbkJBQW9uQiwyREFBMkQscUVBQXFFLGdCQUFnQiw2VUFBNlUsMkRBQTJELG9FQUFvRSxRQUFRLG1FQUFtRSxnQkFBZ0IsZ25CQUFnbkIsMk1BQTJNLG1jQUFtYyxRQUFRLGdGQUFnRixnQkFBZ0Isc21CQUFzbUIsMkxBQTJMLHNEQUFzRCx3RUFBd0UsUUFBUSx1RUFBdUUsZ0JBQWdCLGdGQUFnRix3QkFBd0IsK0lBQStJLGVBQWUsbVVBQW1VLG1EQUFtRCxnWkFBZ1osa0JBQWtCLGtGQUFrRix3QkFBd0IsZzlDQUFnOUMsbUNBQW1DLDZNQUE2TSxtQ0FBbUMsaXFCQUFpcUIsMEhBQTBILGdHQUFnRyxvRkFBb0Ysd2lGQUF3aUYsZ0hBQWdILHNHQUFzRyxxRkFBcUYsbVJBQW1SLGlCQUFpQix3a0JBQXdrQixrSEFBa0gsc0VBQXNFLGlGQUFpRixvVEFBb1QsNENBQTRDLGlrQkFBaWtCLDBHQUEwRyxzRUFBc0UsMEZBQTBGLHdtREFBd21ELDZCQUE2QiIsImZpbGUiOiI4My5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCI8c2VjdGlvbiBpZD1cXFwicGFnZVdmRWRpdFxcXCI+XFxuICA8ZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJjb250YWluZXJcXFwiPlxcbiAgICAgIDxzZWN0aW9uIGlkPVxcXCJwcmV2aWV3XFxcIj5cXG4gICAgICAgIDxkaXYgaWQ9XFxcInByZXZpZXctY29udGVudFxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0PGRpdiBjbGFzcz1cXFwiY29udGVudC1jb250YWluZXJcXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdDx0b2FzdGVyLWNvbnRhaW5lclxcbiAgICAgICAgICAgICAgdG9hc3Rlci1vcHRpb25zPVxcXCJ7ICdwb3NpdGlvbi1jbGFzcyc6ICd0b2FzdC10b3AtZnVsbC13aWR0aCcsICdleHRlbmRlZFRpbWVvdXQnIDogNTAwLCd0aW1lT3V0JzogNTAwIH1cXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdDwvdG9hc3Rlci1jb250YWluZXI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0PHVpYi10YWJzZXQganVzdGlmaWVkPVxcXCJ0cnVlXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQ8dWliLXRhYlxcbiAgICAgICAgICAgICAgICBzZWxlY3Q9XFxcInZtLnRhYkp1c3RTZWxlY3RlZCgyKVxcXCJcXG4gICAgICAgICAgICAgICAgYWN0aXZlPVxcXCJ2bS50YWIuZWRpdFRhYi5hY3RpdmVcXFwiXFxuICAgICAgICAgICAgICAgIGhlYWRpbmc9XFxcIkVkaXQgL0NyZWF0ZVxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHBhZ2VzbGlkZVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHBzLW9wZW49XFxcInZtLmVkaXRQYW5lbE1vZGVsLnRvZ2dsZVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRwcy1zaWRlPVxcXCJsZWZ0XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHBzLWNsb2FrPVxcXCJ0cnVlXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHBzLXNpemU9XFxcIjQwMHB4XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8bGVmdC1wYW5lbFxcbiAgICAgICAgICAgICAgICAgICAgICBjbG9zZS1lZGl0LXBhbmVsPVxcXCJ2bS5jbG9zZUVkaXRQYW5lbCgpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBzYXZlLWZyb20tZWRpdC1wYW5lbD12bS5zYXZlRnJvbUVkaXRQYW5lbCgpPlxcbiAgICAgICAgICAgICAgICAgICAgPC9sZWZ0LXBhbmVsPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDwvZGl2PlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDxkaXY+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdiBjbGFzcz1cXFwicm93IGFkdmFuY2VkRGVtb1xcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdiBuZy1yZXBlYXQ9XFxcImNvbnRhaW5lcnMgaW4gdm0uZHJhZ0Ryb3BNb2RlbFxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWRlY29yLWRyb3Atem9uZVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWRyb3Atem9uZS1wcm9wZXJ0aWVzPVxcXCJ2bS5lYXN5Rm9ybURyYWdEcm9wUHJvcGVydGllcy5kcm9wWm9uZUNvbmZpZy5kZWNvcmF0aW9uWyRpbmRleF1cXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGQtZHJvcC16b25lLXZlcmJvc2UtbW9kZT1cXFwie3t2bS5lYXN5Rm9ybURyYWdEcm9wUHJvcGVydGllcy5kcm9wWm9uZUNvbmZpZy52ZXJib3NlTW9kZX19XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWRyb3Atem9uZS1jdXJyZW50LWluZGV4PVxcXCJ7eyRpbmRleH19XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWRyb3Atem9uZS1hZGQtbmV3LWxpbmU9XFxcInZtLmluc2VydE5ld0xpbmUoKVxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdiBcXHRjbGFzcz1cXFwiZHJvcHpvbmUgYm94IGJveC15ZWxsb3dcXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDx1bFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRuZC1saXN0PVxcXCJjb250YWluZXJzXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRuZC1hbGxvd2VkLXR5cGVzPVxcXCJbJ2NvbnRhaW5lclR5cGUnXVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkbmQtZXh0ZXJuYWwtc291cmNlcz1cXFwidHJ1ZVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkbmQtZHJhZ292ZXI9XFxcInZtLmRyYWdvdmVyQ2FsbGJhY2tDb250YWluZXIoJHBhcmVudC4kcGFyZW50LiRpbmRleCwgJHBhcmVudC4kaW5kZXgsICRpbmRleCk7XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRuZC1kcm9wPVxcXCJ2bS5kcm9wQ2FsbGJhY2soZXZlbnQsIGluZGV4LCBpdGVtLCBleHRlcm5hbCwgdHlwZSwgJ2NvbnRhaW5lclR5cGUnKTtcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2xhc3M9XFxcInJvd1xcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGxpXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bmctcmVwZWF0PVxcXCJpdGVtcyBpbiBjb250YWluZXJzXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRuZC1kcmFnZ2FibGU9XFxcIml0ZW1zXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRuZC10eXBlPVxcXCInY29udGFpbmVyVHlwZSdcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZG5kLWVmZmVjdC1hbGxvd2VkPVxcXCJjb3B5TW92ZVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkbmQtZHJhZ3N0YXJ0PVxcXCJcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZG5kLW1vdmVkPVxcXCJjb250YWluZXJzLnNwbGljZSgkaW5kZXgsIDEpO1xcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkbmQtZGlzYWJsZS1pZj1cXFwiJHBhcmVudC4kaW5kZXggPT0gMFxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkbmQtY29waWVkPVxcXCJcXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDxkaXZcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjbGFzcz1cXFwiY29udGFpbmVyLWVsZW1lbnQgYm94IGJveC1ibHVlXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWRlY29yLWNvbnRhaW5lclxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWNvbnRhaW5lci1wcm9wZXJ0aWVzPVxcXCJ2bS5lYXN5Rm9ybURyYWdEcm9wUHJvcGVydGllcy5jb250YWluZXJDb25maWcuZGVjb3JhdGlvblskaW5kZXhdXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWNvbnRhaW5lci1pcy1jb2xscGFzZWQ9XFxcInZtLmVhc3lGb3JtRHJhZ0Ryb3BQcm9wZXJ0aWVzLmNvbnRhaW5lckNvbmZpZy5kZWNvcmF0aW9uWyRpbmRleF0uaXNDb2xsYXBzZWRcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGQtY29udGFpbmVyLXZlcmJvc2UtbW9kZT1cXFwie3t2bS5lYXN5Rm9ybURyYWdEcm9wUHJvcGVydGllcy5jb250YWluZXJDb25maWcudmVyYm9zZU1vZGV9fVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkZC1jb250YWluZXItY3VycmVudC1pbmRleD1cXFwie3skcGFyZW50LiRpbmRleH19XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWNvbGxhcHNlLWFsbD1cXFwidm0uY29sbGFwc2VBbGxHcm91cENvbnRyb2woZXhjZXB0VGhpc09uZSlcXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDxkaXYgZGQtZGVjb3ItaW5jbHVkZS1jb250YWluZXItaGVyZT5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGQtZGVjb3ItbGluZVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWxpbmUtdmVyYm9zZS1tb2RlPVxcXCJ7e3ZtLmVhc3lGb3JtRHJhZ0Ryb3BQcm9wZXJ0aWVzLmNvbnRhaW5lckNvbmZpZy52ZXJib3NlTW9kZX19XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWxpbmUtY3VycmVudC1pbmRleD1cXFwie3skaW5kZXh9fVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkZC1saW5lLXBhcmVudC1pbmRleD1cXFwie3skcGFyZW50LiRpbmRleH19XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLXJlbW92ZS1saW5lPVxcXCJ2bS5yZW1vdmVUaGlzTGluZSgkaW5kZXgpXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8dWxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkbmQtbGlzdD1cXFwiaXRlbXNcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZG5kLWFsbG93ZWQtdHlwZXM9XFxcIlsnaXRlbVR5cGUnXVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkbmQtaG9yaXpvbnRhbC1saXN0PVxcXCJ0cnVlXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRuZC1leHRlcm5hbC1zb3VyY2VzPVxcXCJ0cnVlXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRuZC1kaXNhYmxlLWlmPVxcXCJpdGVtcy5sZW5ndGggPiAyXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRuZC1kcmFnb3Zlcj1cXFwidm0uZHJhZ292ZXJDYWxsYmFja0l0ZW1zKCRwYXJlbnQuJHBhcmVudC4kaW5kZXgsICRwYXJlbnQuJGluZGV4LCAkaW5kZXgsIGV4dGVybmFsKTtcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZG5kLWRyb3A9XFxcInZtLmRyb3BDYWxsYmFja0l0ZW1zKGV2ZW50LCBpbmRleCwgJGluZGV4LCRwYXJlbnQuJGluZGV4LCAkcGFyZW50LiRwYXJlbnQuJGluZGV4LCAkcGFyZW50LiRwYXJlbnQuJHBhcmVudC4kaW5kZXgsIGl0ZW0sIGV4dGVybmFsLCB0eXBlLCAnaXRlbVR5cGUnKTtcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2xhc3M9XFxcIml0ZW1saXN0XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWNvbnRlbnQtY291bnRlclxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLXZhbHVlLXdoZW4tcGxhY2Vob2xkZXI9XFxcImRuZFBsYWNlaG9sZGVyXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLXZhbHVlLXdoZW4tZHJhZ2dpbmc9XFxcImRuZERyYWdnaW5nU291cmNlXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWZ1bGwtbW9kZWwgPSBcXFwidm0uZHJhZ0Ryb3BNb2RlbFxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkZC1jb250ZW50LWNvdW50ZXItY3VycmVudC1pbmRleD1cXFwie3skaW5kZXh9fVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkZC1jb250ZW50LWNvdW50ZXItcGFyZW50LWluZGV4PVxcXCJ7eyRwYXJlbnQuJGluZGV4fX1cXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGQtY29udGVudC1jb3VudGVyLWZvcmNlLWNzcy1yZWZyZXNoID0gXFxcImNvbW1hbmQuZm9yY2VSZWZyZXNoXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8bGlcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRuZy1yZXBlYXQ9XFxcIml0ZW0gaW4gaXRlbXNcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZG5kLWRyYWdnYWJsZT1cXFwiaXRlbVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkbmQtdHlwZT1cXFwiJ2l0ZW1UeXBlJ1xcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkbmQtZWZmZWN0LWFsbG93ZWQ9XFxcImNvcHlNb3ZlXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRuZC1kcmFnc3RhcnQ9XFxcIlxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkbmQtbW92ZWQ9XFxcInZtLmRuZEl0ZW1Nb3ZlZCgkcGFyZW50LiRwYXJlbnQuJGluZGV4LCAkcGFyZW50LiRpbmRleCwgJGluZGV4KTtcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZG5kLWNvcGllZD1cXFwiXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWRlY29yLWl0ZW1cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkZC1pdGVtLXZlcmJvc2UtbW9kZT1cXFwie3t2bS5lYXN5Rm9ybURyYWdEcm9wUHJvcGVydGllcy5pdGVtQ29uZmlnLnZlcmJvc2VNb2RlfX1cXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGQtaXRlbS1jdXJyZW50LWluZGV4PVxcXCJ7eyRpbmRleH19XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWl0ZW0tcGFyZW50LWluZGV4PVxcXCJ7eyRwYXJlbnQuJGluZGV4fX1cXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGQtaXRlbS1wYXJlbnQtcGFyZW50LWluZGV4ID0gXFxcInt7JHBhcmVudC4kcGFyZW50LiRpbmRleH19XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLWl0ZW1zLWNvdW50PVxcXCJpdGVtcy5sZW5ndGhcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGQtaXRlbS1jc3MtY2xhc3M9XFxcInt7aXRlbS5jc3NDbGFzc319XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IGlkPVxcXCJpdGVtQ29udGVudFxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkLW5vLWVkaXRhYmxlLWNvbnRyb2xcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjbGFzcz1cXFwicmlnaHRDbGlja0N0cmxcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bmctY2xhc3M9XFxcIntyaWdodENsaWNrQ3RybFNlbGVjdGVkIDogaXRlbS5yaWdodENsaWtlZCA9PT0gdHJ1ZX1cXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZWRhLXNldC1yaWdodC1jbGlja2VkPVxcXCJ2bS5zZXRSaWdodENsaWNrZWQocHJldmlvdXNTdGF0ZSwgaXRlbSlcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZWRhLXJpZ2h0LWNsaWNrPVxcXCJ2bS50b2dnbGVFZGl0UGFuZWwoJGV2ZW50LCAkcGFyZW50LiRpbmRleCwgJGluZGV4LCBpdGVtKVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRlZGEtc2VsZWN0ZWQtY2xhc3M9XFxcInJpZ2h0Q2xpY2tDdHJsU2VsZWN0ZWRcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZWRhLWlzLXNlbGVjdGVkPVxcXCJ7e2l0ZW0ucmlnaHRDbGlrZWR9fVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRlZGEtcmlnaHQtY2xpY2stY29sLWluZGV4ID0gXFxcInt7JHBhcmVudC4kcGFyZW50LiRpbmRleH19XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8c3BhbiBuZy1iaW5kLWh0bWw9XFxcIml0ZW0ubGFiZWwgfCB0cnVzdFRoaXNcXFwiPjwvc3Bhbj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2xpPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDwvdWw+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9kaXY+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdiBjbGFzcz1cXFwiY2xlYXJmaXhcXFwiPjwvZGl2PlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDwvZGl2PlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDwvZGl2PlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDwvbGk+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC91bD5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L3VpYi10YWI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0PHVpYi10YWJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRzZWxlY3Q9XFxcInZtLnRhYkp1c3RTZWxlY3RlZCgxKVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRhY3RpdmU9XFxcInZtLnRhYi5wcmV2aWV3VGFiLmFjdGl2ZVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRoZWFkaW5nPVxcXCJQcmV2aWV3XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8Zm9ybSBuZy1zdWJtaXQ9XFxcInZtLm9uU3VibWl0KClcXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDxmb3JtbHktZm9ybVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGlkPVxcXCJwcmV2aWV3Rm9ybWx5Rm9ybVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRtb2RlbD1cXFwidm0ubW9kZWxcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZmllbGRzPVxcXCJ2bS53ZkZvcm1GaWVsZHNcXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDxzcGFuIGNsYXNzPVxcXCJwdWxsLXJpZ2h0XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8YnV0dG9uXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR0eXBlPVxcXCJzdWJtaXRcXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHt7dm0uY29uZmlndXJhdGlvbi5zdWJtaXRCdXR0b25UZXh0fX1cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2J1dHRvbj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8YnV0dG9uXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR0eXBlPVxcXCJjYW5jZWxcXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHt7dm0uY29uZmlndXJhdGlvbi5jYW5jZWxCdXR0b25UZXh0fX1cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2J1dHRvbj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L3NwYW4+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9mb3JtbHktZm9ybT5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Zvcm0+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9kaXY+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9kaXY+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdiAgY2xhc3M9XFxcInBhbmVsIHBhbmVsLWRlZmF1bHRcXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDxkaXZcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjbGFzcz1cXFwicGFuZWwtaGVhZGluZyBoZWFkaW5nLXByZXZpZXdcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bmctY2xpY2s9XFxcInZtLmlobS5wcmV2aWV3LmN1c3RvbWl6ZUZvcm1CdXR0b25zRXhwYW5kZWQgPSF2bS5paG0ucHJldmlldy5jdXN0b21pemVGb3JtQnV0dG9uc0V4cGFuZGVkXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8aDMgY2xhc3M9XFxcInBhbmVsLXRpdGxlXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8YnV0dG9uIGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnkgYnRuLXhzXFxcIiA+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGlcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjbGFzcz1cXFwiZmFcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bmctY2xhc3M9XFxcInsnZmEtYW5nbGUtZG93bic6IXZtLmlobS5wcmV2aWV3LmN1c3RvbWl6ZUZvcm1CdXR0b25zRXhwYW5kZWQsICdmYS1hbmdsZS11cCcgOiB2bS5paG0ucHJldmlldy5jdXN0b21pemVGb3JtQnV0dG9uc0V4cGFuZGVkfVxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9pPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDwvYnV0dG9uPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCZuYnNwO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDxpIGNsYXNzPVxcXCJmYSBmYS13cmVuY2hcXFwiPjwvaT5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQmbmJzcDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRDdXN0b21pemUgZm9ybSBidXR0b25zXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9oMz5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IHVpYi1jb2xsYXBzZT1cXFwidm0uaWhtLnByZXZpZXcuY3VzdG9taXplRm9ybUJ1dHRvbnNFeHBhbmRlZFxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJjb2wteHMtNlxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGxhYmVsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Zm9yPVxcXCJpbnB1dFN1Ym1pdEJ1dHRvbnRleHRcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2xhc3M9XFxcIiBncmV5VGV4dCBjb250cm9sLWxhYmVsXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRDdXN0b21pemUgU3VibWl0IGJ1dHRvbiBUZXh0IDpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2xhYmVsPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDxkaXYgY2xhc3M9XFxcIlxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGlucHV0XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dHlwZT1cXFwidGV4dFxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGlkPVxcXCJpbnB1dFN1Ym1pdEJ1dHRvbnRleHRcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cGxhY2Vob2xkZXI9XFxcIlN1Ym1pdCBidXR0b24gdGV4dFxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRuZy1tb2RlbD1cXFwidm0uY29uZmlndXJhdGlvbi5zdWJtaXRCdXR0b25UZXh0XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJjb2wteHMtNlxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGxhYmVsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Zm9yPVxcXCJpbnB1dENhbmNlbEJ1dHRvbnRleHRcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2xhc3M9XFxcIiBncmV5VGV4dCBjb250cm9sLWxhYmVsXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRDdXN0b21pemUgQ2FuY2VsIGJ1dHRvbiBUZXh0IDpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2xhYmVsPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDxkaXYgY2xhc3M9XFxcIlxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGlucHV0XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dHlwZT1cXFwidGV4dFxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGlkPVxcXCJpbnB1dENhbmNlbEJ1dHRvbnRleHRcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cGxhY2Vob2xkZXI9XFxcIkNhbmNlbCBidXR0b24gdGV4dFxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRuZy1tb2RlbD1cXFwidm0uY29uZmlndXJhdGlvbi5jYW5jZWxCdXR0b25UZXh0XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2xhc3M9XFxcInBhbmVsLWhlYWRpbmcgaGVhZGluZy1wcmV2aWV3XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG5nLWNsaWNrPVxcXCJ2bS5paG0ucHJldmlldy5mb3JtbHlNb2RlbFZpZXdFeHBhbmRlZCA9IXZtLmlobS5wcmV2aWV3LmZvcm1seU1vZGVsVmlld0V4cGFuZGVkXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8aDMgY2xhc3M9XFxcInBhbmVsLXRpdGxlXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8YnV0dG9uIGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnkgYnRuLXhzXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8aVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGNsYXNzPVxcXCJmYVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRuZy1jbGFzcz1cXFwieydmYS1hbmdsZS1kb3duJzohdm0uaWhtLnByZXZpZXcuZm9ybWx5TW9kZWxWaWV3RXhwYW5kZWQsICdmYS1hbmdsZS11cCcgOiB2bS5paG0ucHJldmlldy5mb3JtbHlNb2RlbFZpZXdFeHBhbmRlZH1cXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDwvaT5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2J1dHRvbj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQmbmJzcDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8aSBjbGFzcz1cXFwiZmEgZmEtZXllXFxcIj48L2k+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Jm5ic3A7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0REFUQSBNT0RFTFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDwvaDM+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9kaXY+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdiBjbGFzcz1cXFwicGFuZWwtYm9keVxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdiB1aWItY29sbGFwc2U9XFxcInZtLmlobS5wcmV2aWV3LmZvcm1seU1vZGVsVmlld0V4cGFuZGVkXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8cHJlPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHt7dm0ubW9kZWwgfCBqc29ufX1cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L3ByZT5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2xhc3M9XFxcInBhbmVsLWhlYWRpbmcgaGVhZGluZy1wcmV2aWV3XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG5nLWNsaWNrPVxcXCJ2bS5paG0ucHJldmlldy5mb3JtbHlGaWVsZHNWaWV3RXhwYW5kZWQgPSF2bS5paG0ucHJldmlldy5mb3JtbHlGaWVsZHNWaWV3RXhwYW5kZWRcXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDxoMyBjbGFzcz1cXFwicGFuZWwtdGl0bGVcXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDxidXR0b24gY2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeSBidG4teHNcXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDxpXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2xhc3M9XFxcImZhXFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG5nLWNsYXNzPVxcXCJ7J2ZhLWFuZ2xlLWRvd24nOiF2bS5paG0ucHJldmlldy5mb3JtbHlGaWVsZHNWaWV3RXhwYW5kZWQsICdmYS1hbmdsZS11cCcgOiB2bS5paG0ucHJldmlldy5mb3JtbHlGaWVsZHNWaWV3RXhwYW5kZWR9XFxcIj48L2k+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9idXR0b24+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Jm5ic3A7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGkgY2xhc3M9XFxcImZhIGZhLWV5ZVxcXCI+PC9pPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCZuYnNwO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdEZJRUxEUyBNT0RFTCAocmVhZHkgdG8gc2F2ZSB0byBkYXRhYmFzZSBvbmUpXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9oMz5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IHVpYi1jb2xsYXBzZT1cXFwidm0uaWhtLnByZXZpZXcuZm9ybWx5RmllbGRzVmlld0V4cGFuZGVkXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8cHJlPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHt7dm0ud2ZGb3JtRmllbGRzT25seU5lZWRlZFByb3BlcnRpZXMgfCBqc29ufX1cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L3ByZT5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2xhc3M9XFxcInBhbmVsLWhlYWRpbmcgaGVhZGluZy1wcmV2aWV3XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG5nLWNsaWNrPVxcXCJ2bS5paG0ucHJldmlldy5zYXZlVGhpc0Zvcm1FeHBhbmRlZCA9IXZtLmlobS5wcmV2aWV3LnNhdmVUaGlzRm9ybUV4cGFuZGVkXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8aDMgY2xhc3M9XFxcInBhbmVsLXRpdGxlXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8YnV0dG9uIGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnkgYnRuLXhzXFxcIiA+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGlcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjbGFzcz1cXFwiZmFcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bmctY2xhc3M9XFxcInsnZmEtYW5nbGUtZG93bic6IXZtLmlobS5wcmV2aWV3LnNhdmVUaGlzRm9ybUV4cGFuZGVkLCAnZmEtYW5nbGUtdXAnIDogdm0uaWhtLnByZXZpZXcuc2F2ZVRoaXNGb3JtRXhwYW5kZWR9XFxcIj48L2k+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9idXR0b24+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Jm5ic3A7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGkgY2xhc3M9XFxcImZhIGZhLWNhbWVyYS1yZXRyb1xcXCI+PC9pPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCZuYnNwO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFNhdmUgdGhpcyBmb3JtXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9oMz5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IHVpYi1jb2xsYXBzZT1cXFwidm0uaWhtLnByZXZpZXcuc2F2ZVRoaXNGb3JtRXhwYW5kZWRcXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdiBjbGFzcz1cXFwiY29sLXhzLTEyXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8bGFiZWxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRmb3I9XFxcImlucHV0TmFtZUZvcm10ZXh0XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGNsYXNzPVxcXCIgZ3JleVRleHQgY29udHJvbC1sYWJlbFxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0TmFtZSB0byB0aGlzIGZvcm0gOlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDwvbGFiZWw+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGRpdiBjbGFzcz1cXFwiXFxcIj5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQ8aW5wdXRcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR0eXBlPVxcXCJ0ZXh0XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aWQ9XFxcImlucHV0TmFtZUZvcm10ZXh0XFxcIlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHBsYWNlaG9sZGVyPVxcXCJFbnRlciBmb3JtTmFtZVxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRuZy1tb2RlbD1cXFwidm0uY29uZmlndXJhdGlvbi5mb3JtTmFtZVxcXCI+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9kaXY+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9kaXY+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9kaXY+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9kaXY+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PGJ1dHRvblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnkgYnRuLWJsb2NrIGJ0bi1sZ1xcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRuZy1jbGljaz1cXFwidm0uc2F2ZVRoaXNGb3JtKClcXFwiPlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHNhdmUgdGhpcyBmb3JtXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9idXR0b24+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9kaXY+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9kaXY+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0PC9kaXY+XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0PC91aWItdGFiPlxcblxcdFxcdFxcdFxcdFxcdFxcdDwvdWliLXRhYnNldD5cXG5cXHRcXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHRcXHQ8L2Rpdj5cXG5cXHRcXHRcXHQ8L3NlY3Rpb24+XFxuXFx0XFx0XFx0PGhyLz5cXG5cXHRcXHRcXHQ8c2VjdGlvbj5cXG4gICAgICAgIDxoNiBjbGFzcz1cXFwidGV4dC1yaWdodFxcXCI+XFxuICAgICAgICAgIEVhc3kgZm9ybSBnZW5lcmF0b3IgOiB7e3ZtLmVhc3lGb3JtR2VuZXJhdG9yVkVSU0lPTn19IOKAlCBFcndhbiBEQVRJTiAoTWFjS2VudG9jaClcXG4gICAgICAgIDwvaDY+XFxuXFx0XFx0XFx0PC9zZWN0aW9uPlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2Plxcbjwvc2VjdGlvbj5cXG5cIlxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2VkYURyYWdEcm9wV2F5RWFzeUZvcm1HZW4vZWRhRHJhZ0Ryb3BXYXkuZWRhRHJhZ2Ryb3BXYXlFYXN5Rm9ybUdlbi50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSA4M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 84 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _edaDragDropWayTrustThis = __webpack_require__(85);\n\nvar _edaDragDropWayTrustThis2 = _interopRequireDefault(_edaDragDropWayTrustThis);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TRUST_THIS_FILTER_MODULE = 'edaDragDropWay.trustThis.filter';\n\nexports.default = angular.module(TRUST_THIS_FILTER_MODULE, []).filter(_edaDragDropWayTrustThis.TRUST_THIS_FILTER_NAME, _edaDragDropWayTrustThis2.default);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29tbW9uL2VkYVRydXN0VGhpc0ZpbHRlci9lZGFEcmFnRHJvcFdheS50cnVzdFRoaXMubW9kdWxlLmpzPzY3MTkiXSwibmFtZXMiOlsiVFJVU1RfVEhJU19GSUxURVJfTU9EVUxFIiwiYW5ndWxhciIsIm1vZHVsZSIsImZpbHRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7OztBQUtBLElBQU1BLDJCQUEyQixpQ0FBakM7O2tCQUVlQyxRQUNFQyxNQURGLENBQ1NGLHdCQURULEVBQ21DLEVBRG5DLEVBRUVHLE1BRkYsb0YiLCJmaWxlIjoiODQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHJ1c3RUaGlzLCB7XG4gIFRSVVNUX1RISVNfRklMVEVSX05BTUVcbn0gZnJvbSAnLi9lZGFEcmFnRHJvcFdheS50cnVzdFRoaXMuZmlsdGVyJztcblxuXG5jb25zdCBUUlVTVF9USElTX0ZJTFRFUl9NT0RVTEUgPSAnZWRhRHJhZ0Ryb3BXYXkudHJ1c3RUaGlzLmZpbHRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAubW9kdWxlKFRSVVNUX1RISVNfRklMVEVSX01PRFVMRSwgW10pXG4gICAgICAgICAgICAgICAgLmZpbHRlcihUUlVTVF9USElTX0ZJTFRFUl9OQU1FLCB0cnVzdFRoaXMpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2NvbW1vbi9lZGFUcnVzdFRoaXNGaWx0ZXIvZWRhRHJhZ0Ryb3BXYXkudHJ1c3RUaGlzLm1vZHVsZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 85 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar TRUST_THIS_FILTER_NAME = 'trustThis';\n\nfunction trustThis($sce) {\n return function (value, type) {\n return $sce.trustAs(type || 'html', value);\n };\n}\n\ntrustThis.$inject = ['$sce'];\n\nexports.default = trustThis;\nexports.TRUST_THIS_FILTER_NAME = TRUST_THIS_FILTER_NAME;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2RyYWdkcm9wd2F5L2NvbXBvbmVudHMvY29tbW9uL2VkYVRydXN0VGhpc0ZpbHRlci9lZGFEcmFnRHJvcFdheS50cnVzdFRoaXMuZmlsdGVyLmpzPzljMmIiXSwibmFtZXMiOlsiVFJVU1RfVEhJU19GSUxURVJfTkFNRSIsInRydXN0VGhpcyIsIiRzY2UiLCJ2YWx1ZSIsInR5cGUiLCJ0cnVzdEFzIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFNQSx5QkFBeUIsV0FBL0I7O0FBRUEsU0FBU0MsU0FBVCxDQUFtQkMsSUFBbkIsRUFBeUI7QUFDdkIsU0FBTyxVQUFDQyxLQUFELEVBQVFDLElBQVI7QUFBQSxXQUFpQkYsS0FBS0csT0FBTCxDQUFhRCxRQUFRLE1BQXJCLEVBQTZCRCxLQUE3QixDQUFqQjtBQUFBLEdBQVA7QUFDRDs7QUFFREYsVUFBVUssT0FBVixHQUFvQixDQUNsQixNQURrQixDQUFwQjs7a0JBSWVMLFM7UUFHYkQsc0IsR0FBQUEsc0IiLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBUUlVTVF9USElTX0ZJTFRFUl9OQU1FID0gJ3RydXN0VGhpcyc7XG5cbmZ1bmN0aW9uIHRydXN0VGhpcygkc2NlKSB7XG4gIHJldHVybiAodmFsdWUsIHR5cGUpID0+ICRzY2UudHJ1c3RBcyh0eXBlIHx8ICdodG1sJywgdmFsdWUpO1xufVxuXG50cnVzdFRoaXMuJGluamVjdCA9IFtcbiAgJyRzY2UnXG5dO1xuXG5leHBvcnQgZGVmYXVsdCB0cnVzdFRoaXM7XG5cbmV4cG9ydCB7XG4gIFRSVVNUX1RISVNfRklMVEVSX05BTUVcbn07XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9kcmFnZHJvcHdheS9jb21wb25lbnRzL2NvbW1vbi9lZGFUcnVzdFRoaXNGaWx0ZXIvZWRhRHJhZ0Ryb3BXYXkudHJ1c3RUaGlzLmZpbHRlci5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ }
+/******/ ]);
\ No newline at end of file
diff --git a/static/js/eda.dragdropway.min.js b/static/js/eda.dragdropway.min.js
index 9295ed8..80bf17d 100644
--- a/static/js/eda.dragdropway.min.js
+++ b/static/js/eda.dragdropway.min.js
@@ -1,6 +1,10 @@
-!function(a){function b(a,b,e){return 4===arguments.length?c.apply(this,arguments):void d(a,{declarative:!0,deps:b,declare:e})}function c(a,b,c,e){d(a,{declarative:!1,deps:b,executingRequire:c,execute:e})}function d(a,b){b.name=a,a in n||(n[a]=b),b.normalizedDeps=b.deps}function e(a,b){if(b[a.groupIndex]=b[a.groupIndex]||[],-1==o.call(b[a.groupIndex],a)){b[a.groupIndex].push(a);for(var c=0,d=a.normalizedDeps.length;d>c;c++){var f=a.normalizedDeps[c],g=n[f];if(g&&!g.evaluated){var h=a.groupIndex+(g.declarative!=a.declarative);if(void 0===g.groupIndex||g.groupIndex=0;f--){for(var g=c[f],i=0;if;f++){var h=c.importers[f];if(!h.locked)for(var i=0;if;f++){var j,k=b.normalizedDeps[f],l=n[k],o=s[k];o?j=o.exports:l&&!l.declarative?j=l.esModule:l?(h(l),o=l.module,j=o.exports):j=m(k),o&&o.importers?(o.importers.push(c),c.dependencies.push(o)):c.dependencies.push(null),c.setters[f]&&c.setters[f](j)}}}function i(a){var b,c=n[a];if(c)c.declarative?l(a,[]):c.evaluated||j(c),b=c.module.exports;else if(b=m(a),!b)throw new Error("Unable to load dependency "+a+".");return(!c||c.declarative)&&b&&b.__useDefault?b["default"]:b}function j(b){if(!b.module){var c={},d=b.module={exports:c,id:b.name};if(!b.executingRequire)for(var e=0,f=b.normalizedDeps.length;f>e;e++){var g=b.normalizedDeps[e],h=n[g];h&&j(h)}b.evaluated=!0;var l=b.execute.call(a,function(a){for(var c=0,d=b.deps.length;d>c;c++)if(b.deps[c]==a)return i(b.normalizedDeps[c]);throw new TypeError("Module "+a+" not declared as a dependency.")},c,d);l&&(d.exports=l),c=d.exports,c&&c.__esModule?b.esModule=c:b.esModule=k(c)}}function k(b){if(b===a)return b;var c={};if("object"==typeof b||"function"==typeof b)if(p){var d;for(var e in b)(d=Object.getOwnPropertyDescriptor(b,e))&&r(c,e,d)}else{var f=b&&b.hasOwnProperty;for(var e in b)(!f||b.hasOwnProperty(e))&&(c[e]=b[e])}return c["default"]=b,r(c,"__useDefault",{value:!0}),c}function l(b,c){var d=n[b];if(d&&!d.evaluated&&d.declarative){c.push(b);for(var e=0,f=d.normalizedDeps.length;f>e;e++){var g=d.normalizedDeps[e];-1==o.call(c,g)&&(n[g]?l(g,c):m(g))}d.evaluated||(d.evaluated=!0,d.module.execute.call(a))}}function m(a){if(u[a])return u[a];if("@node/"==a.substr(0,6))return t(a.substr(6));var b=n[a];if(!b)throw"Module "+a+" not present.";return f(a),l(a,[]),n[a]=void 0,b.declarative&&r(b.module.exports,"__esModule",{value:!0}),u[a]=b.declarative?b.module.exports:b.esModule}var n={},o=Array.prototype.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},p=!0;try{Object.getOwnPropertyDescriptor({a:0},"a")}catch(q){p=!1}var r;!function(){try{Object.defineProperty({},"a",{})&&(r=Object.defineProperty)}catch(a){r=function(a,b,c){try{a[b]=c.value||c.get.call(a)}catch(d){}}}}();var s={},t="undefined"!=typeof System&&System._nodeRequire||"undefined"!=typeof require&&require.resolve&&"undefined"!=typeof process&&require,u={"@empty":{}};return function(a,d,e){return function(f){f(function(f){for(var g={_nodeRequire:t,register:b,registerDynamic:c,get:m,set:function(a,b){u[a]=b},newModule:function(a){return a}},h=0;h1)for(var h=1;h "}),b.addEasyFormControlToList({id:"empty",name:"no control",subtitle:"no control",group:"Blank",formlyType:"blank",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[]}),c.addControlToDragDropPresentationModel({label:'
',control:"empty",cssClass:"col-xs-12"},{addToGroupCtrl:"blank"}),b.addEasyFormControlToList({id:"Header",name:"Header",subtitle:"no control",group:"Decoration",formlyType:"header",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[]}),c.addControlToDragDropPresentationModel({label:['
'].join(""),control:"Header",cssClass:"col-xs-12"},{addToGroupCtrl:"headers"});var e='\n
\n
\n
{{options.templateOptions.placeholder}} \n \n \n
';a.setType({name:"subTitle",template:e}),b.addEasyFormControlToList({id:"Subtitle",name:"Subtitle",subtitle:"no control",group:"Decoration",formlyType:"subTitle",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[]}),c.addControlToDragDropPresentationModel({label:'
',control:"Subtitle",cssClass:"col-xs-12"},{addToGroupCtrl:"headers"}),b.addEasyFormControlToList({id:"TextInput",name:"Text input",subtitle:"Text input",group:"input",formlyType:"input",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[]}),c.addControlToDragDropPresentationModel({label:'
',control:"TextInput",cssClass:"col-xs-12"},{addToGroupCtrl:"inputs"}),b.addEasyFormControlToList({id:"Password",name:"Password",subtitle:"Password",group:"input",formlyType:"input",formlySubtype:"password",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[]}),c.addControlToDragDropPresentationModel({label:'
',control:"Password",cssClass:"col-xs-12"},{addToGroupCtrl:"inputs"});var f=["date-disabled","custom-class","show-weeks","starting-day","init-date","min-mode","max-mode","format-day","format-month","format-year","format-day-header","format-day-title","format-month-title","year-range","shortcut-propagation","datepicker-popup","show-button-bar","current-text","clear-text","close-text","close-on-date-selection","datepicker-append-to-body"],g=["datepicker-mode","min-date","max-date"],h={};angular.forEach(f,function(a){return h[d(a)]={attribute:a}}),angular.forEach(g,function(a){return h[d(a)]={bound:a}});var i='\n
';a.setType({name:"datepicker",template:i,wrapper:["bootstrapLabel","bootstrapHasError"],controller:["$scope",function(a){a.open=function(b){b.preventDefault(),b.stopPropagation(),a.opened=!0}}],defaultOptions:{ngModelAttrs:h,templateOptions:{addonLeft:{"class":"glyphicon glyphicon-calendar",onClick:function(a){return a.templateOptions.isOpen=!a.templateOptions.isOpen}},onFocus:function(a,b,c){return c.to.isOpen=!c.to.isOpen},datepickerOptions:{}}}}),b.addEasyFormControlToList({id:"Date",name:"Date",subtitle:"Date",group:"input",formlyType:"datepicker",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[],datepickerPopup:"dd-MMMM-yyyy"}),c.addControlToDragDropPresentationModel({label:'\n
',control:"Date",cssClass:"col-xs-12"},{addToGroupCtrl:"inputs"}),b.addEasyFormControlToList({id:"Texarea",name:"Textarea",subtitle:"Textarea",group:"Textarea",formlyType:"textarea",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[]}),c.addControlToDragDropPresentationModel({label:'\n
',control:"Texarea",cssClass:"col-xs-12"},{addToGroupCtrl:"textareas"});var j='\n
\n ';a.setType({name:"richEditor",template:j}),b.addEasyFormControlToList({id:"RichTextEditor",name:"RichTextEditor",subtitle:"RichTextEditor",group:"Textarea",formlyType:"richEditor",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[]}),c.addControlToDragDropPresentationModel({label:'\n
',control:"RichTextEditor",cssClass:"col-xs-12"},{addToGroupCtrl:"textareas"}),b.addEasyFormControlToList({id:"Radio",name:"Radio",subtitle:"Radio",options:[],group:"Radio",formlyType:"radio",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[]}),c.addControlToDragDropPresentationModel({label:'\n
',control:"Radio",cssClass:"col-xs-12"},{addToGroupCtrl:"radios"}),b.addEasyFormControlToList({id:"Checkbox",name:"Checkbox",subtitle:"Checkbox",group:"Checkbox",formlyType:"checkbox",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[]}),c.addControlToDragDropPresentationModel({label:'\n
\n
\n \n \n label for checkbox \n * \n \n
\n
description
\n
',control:"Checkbox",cssClass:"col-xs-12"},{addToGroupCtrl:"checkboxes"});var k='\n
\n \n {{option.name}} \n \n ';a.setType({name:"basicSelect",template:k}),b.addEasyFormControlToList({id:"BasicSelect",name:"Basic select",subtitle:"Basic select",options:[],group:"Select",formlyType:"basicSelect",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[]}),c.addControlToDragDropPresentationModel({label:'\n
\n
',control:"BasicSelect",cssClass:"col-xs-12"},{addToGroupCtrl:"selects"});var l='\n
\n \n \n \n {{option.name}} \n \n \n \n ';a.setType({name:"groupedSelect",template:l}),b.addEasyFormControlToList({id:"GroupedSelect",name:"Grouped Select",subtitle:"Grouped Select",options:[],group:"Select",formlyType:"groupedSelect",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[]}),c.addControlToDragDropPresentationModel({label:'\n
\n
',control:"GroupedSelect",cssClass:"col-xs-12"},{addToGroupCtrl:"selects"})}return{setters:[],execute:function(){b.$inject=["formlyConfigProvider","EasyFormGenFormlyBindingModelsProvider","easyFormDragWayConfigProvider"],a("default",b)}}}),a.registerDynamic("4",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports={stepway:{version:"1.1.0"},dragdropway:{version:"1.1.0"},formviewer:{version:"1.1.0"}},d.define=e,c.exports}),a.register("5",["4"],function(a){"use strict";function b(a){a.setItemsNotTocount({itemBeingDragged:"dndDraggingSource"})}var c,d,e;return{setters:[function(a){c=a["default"]}],execute:function(){d="easyFormGenVersion",e=c.dragdropway.version,b.$inject=["easyFormDragWayConfigProvider"],a("default",b),a("EASY_FORM_DD_VERSION_NAME",d),a("EASY_FORM_DD_VERSION_VALUE",e)}}}),a.register("6",[],function(a){"use strict";var b;return{setters:[],execute:function(){b=["textAngular","textAngularSetup","ngAnimate","toaster","formly","formlyBootstrap","ui.bootstrap","nya.bootstrap.select","mgcrea.ngStrap.affix"],a("default",angular.module("easyFormGen.dragDropWay.core",b))}}}),a.register("7",[],function(a){"use strict";var b,c,d;return{setters:[],execute:function(){b=["dd-MMMM-yyyy","yyyy/MM/dd","dd.MM.yyyy","shortDate"],c=function(a){a.dt=new Date},d=function(a){a.dt=new Date},a("dateFormats",b),a("setToday",c),a("clearDateTime",d)}}}),a.register("8",["7","9","a"],function(a){var b,c,d,e,f,g,h,i;return{setters:[function(a){b=a.dateFormats,c=a.setToday,d=a.clearDateTime},function(a){e=a["default"]},function(a){f=a["default"]}],execute:function(){"use strict";g="leftPanelController",h="leftPanelCtrl",i=function(){function a(b,c,d,e){f(this,a),this.toaster=b,this.$timeout=c,this.$selectOptionMange=d,this.controllerModalProxy=e,this.init()}return e(a,[{key:"init",value:function(){this.proxyModel=this.controllerModalProxy.proxyModel,this.proxyModel.selectedControl=this.proxyModel.temporyConfig.selectedControl,this.basicSelectRowCollection=this.controllerModalProxy.basicSelectRowCollection,this.newOptionBasicSelect=this.controllerModalProxy.newOptionBasicSelect,this.groupedSelectRowCollection=this.controllerModalProxy.groupedSelectRowCollection,this.newOptionGroupedSelect=this.controllerModalProxy.newOptionGroupedSelect,this.GroupedSelectGroups=this.controllerModalProxy.GroupedSelectGroups,this.newGroupGroupedSelect=this.controllerModalProxy.newGroupGroupedSelect,this.groupSelectGroupClick=this.controllerModalProxy.groupSelectGroupClick,this.radioRowCollection=this.controllerModalProxy.radioRowCollection,this.newOptionRadio=this.controllerModalProxy.newOptionRadio,this.demodt={},this.demodt.formats=b,this.dateOptions=this.getDateOptions(),this.initNyaSelectConformingSelectedControl()}},{key:"getDateOptions",value:function(){var a={formatYear:"yy",startingDay:1,showWeeks:!0,initDate:null};return a}},{key:"initNyaSelectConformingSelectedControl",value:function(){if("none"!==this.proxyModel.temporyConfig.selectedControl){for(var a=this.proxyModel.controls.length-1;a>=0;a--)this.proxyModel.controls[a].id===this.proxyModel.temporyConfig.selectedControl&&(this.modelproxyModel=this.proxyModel.controls[a]);"BasicSelect"===this.proxyModel.temporyConfig.selectedControl&&this.controllerModalProxy.bindBasicSelectFromProxyModel(self.basicSelectRowCollection),"GroupedSelect"===this.proxyModel.temporyConfig.selectedControl&&this.controllerModalProxy.bindGroupedSelectFromProxyModel(this.groupedSelectRowCollection,this.GroupedSelectGroups),"Radio"===this.proxyModel.temporyConfig.selectedControl&&this.controllerModalProxy.bindRadioFromProxyModel(this.radioRowCollection)}}},{key:"updateSpecialControl",value:function(){return this.proxyModel.basicSelectRowCollection=this.basicSelectRowCollection,this.proxyModel.newOptionBasicSelect=this.newOptionBasicSelect,this.proxyModel.groupedSelectRowCollection=this.groupedSelectRowCollection,this.proxyModel.newOptionGroupedSelect=this.newOptionGroupedSelect,this.proxyModel.GroupedSelectGroups=this.GroupedSelectGroups,this.proxyModel.newGroupGroupedSelect=this.newGroupGroupedSelect,this.proxyModel.groupSelectGroupClick=this.groupSelectGroupClick,this.proxyModel.radioRowCollection=this.radioRowCollection,this.proxyModel.newOptionRadio=this.newOptionRadio,this.controllerModalProxy.bindSpecialCtrlTemporyModelsToProxyModel(),!0}},{key:"resetTemporyConfig",value:function(){this.proxyModel.temporyConfig={formlyLabel:"",formlyRequired:!1,formlyPlaceholder:"",formlyDesciption:"",formlyOptions:[]}}},{key:"resetControl",value:function(){this.proxyModel.temporyConfig.formlyLabel="",this.proxyModel.temporyConfig.formlyRequired=!1,this.proxyModel.temporyConfig.formlyPlaceholder="",this.proxyModel.temporyConfig.formlyDesciption="",this.proxyModel.temporyConfig.formlyOptions=[],this.proxyModel.temporyConfig.datepickerPopup=this.initDatePicker()}},{key:"initDatePicker",value:function(){this.proxyModel.temporyConfig.datepickerPopup=this.demodt.formats[0]}},{key:"selectThisControl",value:function(a){this.proxyModel.selectedControl="none",this.resetTemporyConfig();for(var b=this.proxyModel.controls.length-1;b>=0;b--)this.proxyModel.controls[b].id===a&&(this.proxyModel.selectedControl=this.proxyModel.controls[b].id);"Date"===this.proxyModel.selectedControl&&this.initDatePicker()}},{key:"addNewOptionRadio",value:function(){var a=this.$selectOptionMange.addNewOptionRadio(this.radioRowCollection,this.newOptionRadio.saisie);a.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:a.details,body:"'"+this.newOptionRadio.saisie+"' cannot be added.",showCloseButton:!0}),this.newOptionRadio={saisie:""}}},{key:"removeRadioRow",value:function(a){var b=this.$selectOptionMange.removeOption(this.radioRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Delete was cancelled.",showCloseButton:!0})}},{key:"upThisRadioRow",value:function(a){var b=this.$selectOptionMange.upthisOption(this.radioRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"downThisRadioRow",value:function(a){var b=this.$selectOptionMange.downthisOption(this.radioRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"addNewOptionBasicSelect",value:function(){var a=this.$selectOptionMange.addNewOptionBasicSelect(this.basicSelectRowCollection,this.newOptionBasicSelect.saisie);a.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:a.details,body:"'"+this.newOptionBasicSelect.saisie+"' cannot be added.",showCloseButton:!0}),this.newOptionBasicSelect={saisie:""}}},{key:"removeRow",value:function(a){var b=this.$selectOptionMange.removeOption(this.basicSelectRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Delete was cancelled.",showCloseButton:!0})}},{key:"upThisRow",value:function(a){var b=this.$selectOptionMange.upthisOption(this.basicSelectRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"downThisRow",value:function(a){var b=this.$selectOptionMange.downthisOption(this.basicSelectRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"showGroupListToChoose",value:function(){this.groupSelectGroupClick.showList=!this.groupSelectGroupClick.showList}},{key:"addNewGroupToGroupedSelect",value:function(){if(""!==this.newGroupGroupedSelect.saisie){for(var a=this.GroupedSelectGroups.list.length-1;a>=0;a--)this.GroupedSelectGroups.list[a]===this.newGroupGroupedSelect.saisie&&this.toaster.pop({type:"warning",timeout:2e3,title:"Group already exists",body:"No group added.",showCloseButton:!0});this.GroupedSelectGroups.list.push(this.newGroupGroupedSelect.saisie)}else this.toaster.pop({type:"warning",timeout:2e3,title:"Not a valid group to add",body:"No group added.",showCloseButton:!0});this.newGroupGroupedSelect.saisie=""}},{key:"addNewOptionGroupedSelect",value:function(){var a=this.$selectOptionMange.addNewOptionGroupedSelect(this.groupedSelectRowCollection,this.newOptionGroupedSelect.saisie,"");a.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:a.details,body:"'"+this.newOptionGroupedSelect.saisie+"' cannot be added.",showCloseButton:!0}),this.newOptionGroupedSelect={saisie:""}}},{key:"removeGroupedSelectRow",value:function(a){var b=this.$selectOptionMange.removeOption(this.groupedSelectRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Delete was cancelled.",showCloseButton:!0})}},{key:"upThisGroupedSelectRow",value:function(a){var b=this.$selectOptionMange.upthisOption(this.groupedSelectRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"downThisGroupedSelectRow",value:function(a){var b=this.$selectOptionMange.downthisOption(this.groupedSelectRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"today",value:function(){c(this.demodt)}},{key:"clear",value:function(){d(this.demodt)}},{key:"open",value:function(a){a.preventDefault(),a.stopPropagation(),this.demodt.opened=!0}}]),a}(),i.$inject=["toaster","$timeout","$selectOptionMange","controllerModalProxy"],a("default",i),a("LEFT_PANEL_CONTROLLER",g),a("LEFT_PANEL_CONTROLLERAS",h)}}}),a.registerDynamic("b",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='
\n
\n \n \n ×\n \n \n
\n
\n
\n
\n
\n
\n
\n \n \n Select a control\n \n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n Close\n \n
\n',d.define=e,c.exports}),a.register("c",["8","b"],function(a){"use strict";function b(){var a={restrict:"E",template:e,scope:{},controller:c,controllerAs:d,bindToController:{closeEditPanel:"&",selectedControl:"&",saveFromEditPanel:"&"}};return a}var c,d,e,f;return{setters:[function(a){c=a.LEFT_PANEL_CONTROLLER,d=a.LEFT_PANEL_CONTROLLERAS},function(a){e=a["default"]}],execute:function(){f="leftPanel",b.$inject=[],a("default",b),a("LEFT_PANEL_DIRECTIVE",f)}}}),a.register("d",[],function(a){"use strict";var b,c;return{setters:[],execute:function(){b=function(a){var b={rows:[]};angular.copy(b,a)},c=function(a,b){var c={resultFlag:!1,details:""};if("undefined"==typeof b)return c.resultFlag=!1,c.details="Entered option is empty",c;if(""!==b){for(var d=a.rows.length-1;d>=0;d--)if(a.rows[d].option===b)return c.resultFlag=!1,c.details="Entered option is not unique",c;return c.resultFlag=!0,c.details="",c}return c.resultFlag=!1,c.details="Entered option is empty",c},a("resetModel",b),a("validOption",c)}}}),a.register("e",["9","a","d"],function(a){var b,c,d,e,f;return{setters:[function(a){b=a["default"]},function(a){c=a["default"]},function(a){d=a}],execute:function(){"use strict";e="$selectOptionMange",f=function(){function a(){c(this,a),this.init()}return b(a,[{key:"init",value:function(){}},{key:"initModel",value:function(a){d.resetModel(a)}},{key:"isOptionUnique",value:function(a,b){for(var c=a.rows.length-1;c>=0;c--)if(a.rows[c].option===b)return!1;return!0}},{key:"isOptionValidFormat",value:function(a){return""!==a?!0:!1}},{key:"addNewOptionRadio",value:function(a,b){var c={resultFlag:!1,details:""},e=d.validOption(a,b);if(e.resultFlag===!0){var f={option:b,order:a.rows.length};return a.rows.push(f),c.resultFlag=!0,c.details="",c}return angular.copy(e,c),c}},{key:"addNewOptionBasicSelect",value:function(a,b){var c={resultFlag:!1,details:""},e=d.validOption(a,b);if(e.resultFlag===!0){var f={option:b,order:a.rows.length};return a.rows.push(f),c.resultFlag=!0,c.details="",c}return angular.copy(e,c),c}},{key:"addNewOptionGroupedSelect",value:function(a,b,c){var e={resultFlag:!1,details:""},f=d.validOption(a,b);if(f.resultFlag===!0){var g={option:b,group:c,order:a.rows.length};return a.rows.push(g),e.resultFlag=!0,e.details="",e}return angular.copy(f,e),e}},{key:"removeOption",value:function(a,b){var c={resultFlag:!1,details:""};return-1!==b?(a.rows.splice(b,1),c.resultFlag=!0,c.details="",c):(c.resultFlag=!1,c.details="Option index not valid",c)}},{key:"upthisOption",value:function(a,b){var c={resultFlag:!1,details:""};if(b>-1){if(b>0){if(a.rows[b-1]){var d=a.rows[b];return a.rows.splice(b,1),a.rows.splice(b-1,0,d),c.resultFlag=!0,c.details="",
-c}return c.resultFlag=!1,c.details="Can't retreive option from option index",c}return c.resultFlag=!0,c.details="",c}return c.resultFlag=!1,c.details="Option index not valid",c}},{key:"downthisOption",value:function(a,b){var c={resultFlag:!1,details:""};if(b>-1){if(b
=0;c--)a.selectedControl===a.controls[c].id&&(b.selectedControl=a.selectedControl,b.formlyType=a.controls[c].formlyType,b.formlySubtype=a.controls[c].formlySubtype,b.formlyLabel=a.controls[c].formlyLabel,b.formlyRequired=a.controls[c].formlyRequired,b.formlyDesciption=a.controls[c].formlyDesciption,b.formlyPlaceholder=a.controls[c].formlyPlaceholder,b.formlyOptions=a.controls[c].formlyOptions,"datepicker"===a.controls[c].formlyType&&(b.datepickerPopup=a.controls[c].datepickerPopup));return b}},{key:"validKeyUniqueness",value:function(a,b){for(var c=!0,d=b.lines.length-1;d>=0;d--)for(var e=b.lines[d].columns.length-1;e>=0;e--)b.lines[d].columns[e].control.key===a&&(c=!1);return c}},{key:"getSelectedProxyModel",value:function(a){var b="none",c=angular.copy(this.EasyFormGenFormlyBindingModels.getEasyFormListControls().controls);return c.forEach(function(c){return c.formlyType===a.type&&c.formlySubtype===a.subtype?b=c.id:void 0}),b}},{key:"bindConfigurationModelFromProxyModel",value:function(a,b,c){var d=angular.copy(this.proxyModel.temporyConfig);c.lines[a].columns[b].control.selectedControl=d.selectedControl,c.lines[a].columns[b].control.type=d.formlyType,c.lines[a].columns[b].control.subtype=d.formlySubtype,c.lines[a].columns[b].control.templateOptions={label:"",required:!1,description:"",placeholder:"",options:[]},c.lines[a].columns[b].control.templateOptions.label=d.formlyLabel,c.lines[a].columns[b].control.templateOptions.required=d.formlyRequired,c.lines[a].columns[b].control.templateOptions.description=d.formlyDesciption,c.lines[a].columns[b].control.templateOptions.placeholder=d.formlyPlaceholder,c.lines[a].columns[b].control.templateOptions.options=d.formlyOptions,"datepicker"===c.lines[a].columns[b].control.type&&(c.lines[a].columns[b].control.templateOptions.datepickerPopup=d.datepickerPopup);var e=c.lines[a].columns[b].control.type+"-"+Date.now();this.validKeyUniqueness(e,c)===!0?c.lines[a].columns[b].control.key=e:(e=c.lines[a].columns[b].control.type+"-"+Date.now(),this.validKeyUniqueness(e,c)===!0?c.lines[a].columns[b].control.key=e:e=c.lines[a].columns[b].control.type+"-"+Date.now()),c.lines[a].columns[b].control.edited=!0}},{key:"setProxyModelFromConfigurationSelection",value:function(a,b,c){return"undefined"!=typeof a.lines[b].columns[c].control&&(this.proxyModel.selectedControl="undefined"!=typeof a.lines[b].columns[c].control.type?this.getSelectedProxyModel(a.lines[b].columns[c].control):"none",this.proxyModel.temporyConfig.selectedControl="undefined"!=typeof a.lines[b].columns[c].control.type?this.getSelectedProxyModel(a.lines[b].columns[c].control):"none",this.proxyModel.temporyConfig.formlyType="undefined"!=typeof a.lines[b].columns[c].control.type?a.lines[b].columns[c].control.type:"none",this.proxyModel.temporyConfig.formlySubtype="undefined"!=typeof a.lines[b].columns[c].control.subtype?a.lines[b].columns[c].control.subtype:"none",this.proxyModel.temporyConfig.formlyLabel="undefined"!=typeof a.lines[b].columns[c].control.templateOptions.label?a.lines[b].columns[c].control.templateOptions.label:"",this.proxyModel.temporyConfig.formlyRequired="undefined"!=typeof a.lines[b].columns[c].control.templateOptions.required?a.lines[b].columns[c].control.templateOptions.required:"",this.proxyModel.temporyConfig.formlyDesciption="undefined"!=typeof a.lines[b].columns[c].control.templateOptions.description?a.lines[b].columns[c].control.templateOptions.description:"",this.proxyModel.temporyConfig.formlyPlaceholder="undefined"!=typeof a.lines[b].columns[c].control.templateOptions.placeholder?a.lines[b].columns[c].control.templateOptions.placeholder:"",this.proxyModel.temporyConfig.formlyOptions="undefined"!=typeof a.lines[b].columns[c].control.templateOptions.options?a.lines[b].columns[c].control.templateOptions.options:"","Date"===this.proxyModel.temporyConfig.selectedControl&&(this.proxyModel.temporyConfig.datepickerPopup="undefined"!=typeof a.lines[b].columns[c].control.templateOptions.datepickerPopup?a.lines[b].columns[c].control.templateOptions.datepickerPopup:"")),this.proxyModel}},{key:"getProxyModel",value:function(){return this.proxyModel}},{key:"getEditPanelModelAllModel",value:function(){return this.editPanelModel}},{key:"setEditPanelModelControl",value:function(a){var b=!1;return"undefined"!=typeof a&&(angular.merge(this.editPanelModel,a),b=!0),b}},{key:"getEditPanelModelColumnIndex",value:function(){return this.editPanelModel.columnIndex}},{key:"setEditPanelModelColumnIndex",value:function(a){var b=!1;return"undefined"!=typeof a&&(this.editPanelModel.columnIndex=a,b=!0),b}},{key:"getEditPanelModelLineIndex",value:function(){return this.editPanelModel.lineIndex}},{key:"setEditPanelModelLineIndex",value:function(a){var b=!1;return"undefined"!=typeof a&&(this.editPanelModel.lineIndex=a,b=!0),b}},{key:"getEditPanelModelControl",value:function(){return this.editPanelModel.control}},{key:"getEditPanelModelToggle",value:function(){return this.editPanelModel.toggle}},{key:"setEditPanelModelToggle",value:function(a){var b=!1;return"undefined"!=typeof a&&(this.editPanelModel.toggle=a,b=!0),b}},{key:"resetAllTemporyModels",value:function(){return this.basicSelectRowCollection=angular.copy(e),this.newOptionBasicSelect=angular.copy({saisie:""}),this.groupedSelectRowCollection=angular.copy(e),this.newOptionGroupedSelect=angular.copy({saisie:""}),this.GroupedSelectGroups=angular.copy({list:[]}),this.newGroupGroupedSelect=angular.copy({saisie:""}),this.groupSelectGroupClick=angular.copy({showList:!1}),this.radioRowCollection=angular.copy(e),this.newOptionRadio=angular.copy({saisie:""}),!0}},{key:"bindSpecialCtrlTemporyModelsToProxyModel",value:function(){"BasicSelect"===this.proxyModel.selectedControl&&this.bindBasicSelectToProxyModel(this.basicSelectRowCollection),"GroupedSelect"===this.proxyModel.selectedControl&&this.bindGroupedSelectToProxyModel(this.groupedSelectRowCollection),"Radio"===this.proxyModel.selectedControl&&this.bindRadioToProxyModel(this.radioRowCollection)}},{key:"bindBasicSelectFromProxyModel",value:function(a){if(this.proxyModel.temporyConfig.formlyOptions.length>0)for(var b=0;b<=this.proxyModel.temporyConfig.formlyOptions.length-1;b++){var c={option:this.proxyModel.temporyConfig.formlyOptions[b].name,order:b,group:""};a.rows.push(c)}}},{key:"bindBasicSelectToProxyModel",value:function(a){var b=[];if(this.proxyModel.temporyConfig.formlyOptions=b,a.rows.length>0)for(var c=0;c<=a.rows.length-1;c++){var d={name:a.rows[c].option,value:c,group:""};this.proxyModel.temporyConfig.formlyOptions.push(d)}}},{key:"bindGroupedSelectFromProxyModel",value:function(a,b){if(this.proxyModel.temporyConfig.formlyOptions.length>0){for(var c=0;c<=this.proxyModel.temporyConfig.formlyOptions.length-1;c++){var d={option:this.proxyModel.temporyConfig.formlyOptions[c].name,order:c,group:this.proxyModel.temporyConfig.formlyOptions[c].group};a.rows.push(d)}var e=_.uniq(_.pluck(a.rows,"group"));angular.copy(e,b.list)}}},{key:"bindGroupedSelectToProxyModel",value:function(a){this.proxyModel.temporyConfig.formlyOptions=[];for(var b=0;b<=a.rows.length-1;b++){var c={name:a.rows[b].option,value:b,group:a.rows[b].group};this.proxyModel.temporyConfig.formlyOptions.push(c)}}},{key:"bindRadioFromProxyModel",value:function(a){if(this.proxyModel.temporyConfig.formlyOptions.length>0)for(var b=0;b<=this.proxyModel.temporyConfig.formlyOptions.length-1;b++){var c={option:this.proxyModel.temporyConfig.formlyOptions[b].name,order:b,group:""};a.rows.push(c)}}},{key:"bindRadioToProxyModel",value:function(a){var b=[];if(this.proxyModel.temporyConfig.formlyOptions=b,a.rows.length>0)for(var c=0;c<=a.rows.length-1;c++){var d={name:a.rows[c].option,value:c,group:""};this.proxyModel.temporyConfig.formlyOptions.push(d)}}}]),a}(),f.$inject=["EasyFormGenFormlyBindingModels"],a("default",f),a("CONTROLLER_MODAL_PROXY",d)}}}),a.registerDynamic("10",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n',d.define=e,c.exports}),a.register("11",["10"],function(a){"use strict";function b(){var a={restrict:"E",template:c};return a}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="leftPanelValidEditFooter",b.$inject=[],a("default",b),a("LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE",d)}}}),a.registerDynamic("12",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n',d.define=e,c.exports}),a.register("13",["12"],function(a){"use strict";function b(){var a={restrict:"E",template:c};return a}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="leftPanelTextInputControl",b.$inject=[],a("default",b),a("LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE",d)}}}),a.registerDynamic("14",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n',d.define=e,c.exports}),a.register("15",["14"],function(a){"use strict";function b(){var a={restrict:"E",template:c};return a}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="leftPanelTextareaControl",b.$inject=[],a("default",b),a("LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE",d)}}}),a.registerDynamic("16",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n',d.define=e,c.exports}),a.register("17",["16"],function(a){"use strict";function b(){var a={restrict:"E",template:c};return a}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="leftPanelSubtitleControl",b.$inject=[],a("default",b),a("LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE",d)}}}),a.registerDynamic("18",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n
\n
\n
\n
\n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n',d.define=e,c.exports}),a.register("19",["18"],function(a){"use strict";function b(){var a={restrict:"E",template:c};return a}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="leftPanelRichTextEditorControl",b.$inject=[],a("default",b),a("LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE",d)}}}),a.registerDynamic("1a",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n \n Add new radio :\n \n
\n
\n
\n
\n
\n \n Edit/Remove radio :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n',d.define=e,c.exports}),a.register("1b",["1a"],function(a){"use strict";function b(){var a={restrict:"E",template:c};return a}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="leftPanelRadioControl",b.$inject=[],a("default",b),a("LEFT_PANEL_RADIO_CONTROL_DIRECTIVE",d)}}}),a.registerDynamic("1c",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n',d.define=e,c.exports}),a.register("1d",["1c"],function(a){"use strict";function b(){var a={restrict:"E",template:c};return a}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="leftPanelPasswordControl",b.$inject=[],a("default",b),a("LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE",d)}}}),a.registerDynamic("1e",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n',d.define=e,c.exports}),a.register("1f",["1e"],function(a){"use strict";function b(){var a={restrict:"E",template:c};return a}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="leftPanelHeaderControl",b.$inject=[],a("default",b),a("LEFT_PANEL_HEADER_CONTROL_DIRECTIVE",d)}}}),a.registerDynamic("20",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n \n Add new options :\n \n
\n
\n
\n
\n
\n \n Add new groups :\n \n
\n
\n
\n
\n
\n \n Edit/Remove options/groups:\n \n
\n
\n
\n
\n
\n
\n
\n
\n',
-d.define=e,c.exports}),a.register("21",["20"],function(a){"use strict";function b(){var a={restrict:"E",template:c};return a}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="leftPanelGroupedSelectControl",b.$inject=[],a("default",b),a("LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE",d)}}}),a.registerDynamic("22",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n Date format :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n',d.define=e,c.exports}),a.register("23",["22"],function(a){"use strict";function b(){var a={restrict:"E",template:c};return a}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="leftPanelDateControl",b.$inject=[],a("default",b),a("LEFT_PANEL_DATE_CONTROL_DIRECTIVE",d)}}}),a.registerDynamic("24",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n',d.define=e,c.exports}),a.register("25",["24"],function(a){"use strict";function b(){var a={restrict:"E",template:c};return a}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="leftPanelCheckBoxControl",b.$inject=[],a("default",b),a("LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE",d)}}}),a.registerDynamic("26",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n
\n
\n
\n
\n \n \n Edit :\n \n \n
\n
\n
\n
\n Column will be blank\n \n \n
\n
\n
\n
\n',d.define=e,c.exports}),a.register("27",["26"],function(a){"use strict";function b(){var a={restrict:"E",template:c};return a}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="leftPanelBlankControl",b.$inject=[],a("default",b),a("LEFT_PANEL_BLANK_CONTROL_DIRECTIVE",d)}}}),a.registerDynamic("28",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n \n Add new options :\n \n
\n
\n
\n
\n
\n \n Edit/Remove options :\n \n
\n
\n
\n
\n
\n
\n
\n
\n',d.define=e,c.exports}),a.register("29",["28"],function(a){"use strict";function b(){var a={restrict:"E",template:c};return a}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="leftPanelBasicSelectControl",b.$inject=[],a("default",b),a("LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE",d)}}}),a.register("2a",["8","11","13","15","17","19","21","23","25","27","29","c","e","f","1b","1d","1f"],function(a){"use strict";var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J;return{setters:[function(a){b=a["default"],c=a.LEFT_PANEL_CONTROLLER},function(a){d=a["default"],e=a.LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE},function(a){f=a["default"],g=a.LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE},function(a){h=a["default"],i=a.LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE},function(a){j=a["default"],k=a.LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE},function(a){l=a["default"],m=a.LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE},function(a){n=a["default"],o=a.LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE},function(a){p=a["default"],q=a.LEFT_PANEL_DATE_CONTROL_DIRECTIVE},function(a){r=a["default"],s=a.LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE},function(a){t=a["default"],u=a.LEFT_PANEL_BLANK_CONTROL_DIRECTIVE},function(a){v=a["default"],w=a.LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE},function(a){x=a["default"],y=a.LEFT_PANEL_DIRECTIVE},function(a){z=a["default"],A=a.LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE},function(a){B=a["default"],C=a.CONTROLLER_MODAL_PROXY},function(a){D=a["default"],E=a.LEFT_PANEL_RADIO_CONTROL_DIRECTIVE},function(a){F=a["default"],G=a.LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE},function(a){H=a["default"],I=a.LEFT_PANEL_HEADER_CONTROL_DIRECTIVE}],execute:function(){J="edaDragDropWay.leftPanel.module",a("default",angular.module(J,[]).directive(y,x).controller(c,b).service(A,z).service(C,B).directive(e,d).directive(g,f).directive(i,h).directive(k,j).directive(m,l).directive(E,D).directive(G,F).directive(I,H).directive(o,n).directive(q,p).directive(s,r).directive(u,t).directive(w,v))}}}),a.register("2b",["9","a"],function(a){var b,c,d,e;return{setters:[function(a){b=a["default"]},function(a){c=a["default"]}],execute:function(){"use strict";d="formFieldManage",e=function(){function a(b){c(this,a),this.EasyFormGenFormlyBindingModels=b,this.init()}return b(a,[{key:"init",value:function(){}},{key:"initConfigurationEditFromScratch",value:function(a,b){var c=this.EasyFormGenFormlyBindingModels.getEasyFormInitialStateConfigurationModel(b);angular.copy(c,a)}},{key:"bindConfigurationLines",value:function(a,b,c){if("[object Array]"===Object.prototype.toString.call(b)){var d=this.EasyFormGenFormlyBindingModels.getEasyFormReloadConfigurationModel(c);return d.lines=[].concat(b),angular.copy(d,a),this.getMessageObject("configuration model is bound","lines are bound to configuration model.")}return this.getErrorObject("lines is not an array","Checks lines type, it is not an array.")}},{key:"applyConfigurationToformlyModel",value:function(a,b,c){this.resetFormlyModel(b),this.resetDataModel(c);for(var d=a.lines.length,e=0;d>e;e++)this.AddNColumnControl(b,a,e)}},{key:"resetFormlyModel",value:function(a){var b=[];angular.copy(b,a)}},{key:"AddNColumnControl",value:function(a,b,c){var d=this,e=b.lines[c].columns.length,f={className:"row",fieldGroup:[]},g=a.push(f)-1;b.lines[c].columns.forEach(function(b){var c={};if("undefined"!=typeof c&&"none"!==b.control.type){if("header"===b.control.type||"subTitle"===b.control.type){var f=b.control.templateOptions.description;c.template=d.EasyFormGenFormlyBindingModels.getHeaderTemplateForNcolumnLine(e,f).template,c.className=d.EasyFormGenFormlyBindingModels.getRawHeaderTemplates().selectedClass}else c=d.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(e,b.control.type),c.className=b.control.className,c.type=b.control.type,c.key=b.control.key,c.templateOptions.type=b.control.templateOptions.type,c.templateOptions.label=b.control.templateOptions.label,c.templateOptions.required=b.control.templateOptions.required,c.templateOptions.placeholder=b.control.templateOptions.placeholder,c.templateOptions.description=b.control.templateOptions.description,c.templateOptions.options=[].concat(b.control.templateOptions.options),"undefined"!=typeof c.templateOptions.datepickerPopup&&(b.control.templateOptions.datepickerPopup=c.templateOptions.datepickerPopup);a[g].fieldGroup.push(c)}})}},{key:"isTemplateOptionDefined",value:function(a){return"undefined"!=typeof a.templateOptions?!0:!1}},{key:"extractTemplateOptionLabel",value:function(a){return"undefined"!=typeof a.templateOptions&&"undefined"!=typeof a.templateOptions.label?a.templateOptions.label:""}},{key:"extractTemplateOptionDatepickerPopup",value:function(a){return"undefined"!=typeof a.templateOptions&&"undefined"!=typeof a.templateOptions.datepickerPopup?a.templateOptions.datepickerPopup:""}},{key:"extractTemplateOptionRequired",value:function(a){return"undefined"!=typeof a.templateOptions&&"undefined"!=typeof a.templateOptions.required?a.templateOptions.required:""}},{key:"extractTemplateOptionOptions",value:function(a){return"undefined"!=typeof a.templateOptions&&"undefined"!=typeof a.templateOptions.options?a.templateOptions.options:""}},{key:"extractTemplateOptionType",value:function(a){return"undefined"!=typeof a.subtype?a.subtype:""}},{key:"extractTemplateOptionPlaceholder",value:function(a){return"undefined"!=typeof a.templateOptions&&"undefined"!=typeof a.templateOptions.placeholder?a.templateOptions.placeholder:""}},{key:"extractTemplateOptionDescription",value:function(a){return"undefined"!=typeof a.templateOptions&&"undefined"!=typeof a.templateOptions.description?a.templateOptions.description:""}},{key:"resetDataModel",value:function(a){var b={};return angular.copy(b,a),!0}},{key:"getErrorObject",value:function(a,b){var c={noError:!1,title:"",Message:""};return c.noError=!1,c.title=a,c.Message=b,c}},{key:"getMessageObject",value:function(a,b){var c={noError:!1,title:"",Message:""};return c.noError=!0,c.title=a,c.Message=b,c}}]),a}(),e.$inject=["EasyFormGenFormlyBindingModels"],a("default",e),a("FORM_FIELD_MANAGE_SERVICE",d)}}}),a.register("2c",[],function(a){"use strict";var b,c,d,e,f,g,h,i,j;return{setters:[],execute:function(){b=function(){return{controls:[],selectedControl:"none",temporyConfig:{selectedControl:"none",formlyLabel:"label",formlyRequired:!1,formlyDesciption:"",formlyPlaceholder:"",formlyOptions:[]}}},a("initEasyFormListControls",b),c=function(){return{line:1,activeColumn:1,columns:[{numColumn:1,exist:!0,control:{type:"none",key:"none"}}]}},a("initEasyFormEmptyConfigurationLineModel",c),d=function(){return{control:{type:"none",key:"none"}}},a("initEmptyControlFieldModel",d),e=function(a){return{submitButtonText:"submit",cancelButtonText:"cancel",lines:[].concat(a)}},a("initEasyFormInitialStateConfigurationModel",e),f=function(){return{activeLine:1,listConfigStep:["init","first","second","third"],stepIndicators:[!0,!1,!1,!1],configStepCounter:0}},a("initEasyFormInitialStateConfigurationModelAddOnForStepWay",f),g=function(){var a=e();return a.lines=[],a},a("initEasyFormReloadConfigurationModel",g),h=function(){var a={cssClass:["col-xs-12","col-xs-6","col-xs-4"],textContent:"",html_part1:[' ','
'].join(""),html_part3:this.textContent,html_part4:[" "," "," "].join(""),simpleHtml1:[''].join(""),simpleHtml2:[" "," "].join("")};return a},a("initHeaderTemplates",h),i=function(){return{className:["col-xs-12","col-xs-6","col-xs-4"],type:"",key:"",templateOptions:{type:"",label:"",required:"",placeholder:"",description:"",options:""}}},a("initFormlyControlTemplates",i),j=function(){return[{controlType:"datepicker",properties:[{isRoot:!1,isTemplateOptions:!0,value:"datepickerPopup"}]}]},a("initParticularControlProperties",j)}}}),a.register("2d",["2c"],function(a){"use strict";function b(){function a(){return t}function b(a){if("controlType"in a&&"properties"in a){var b=!1;t.length>0&&t.forEach(function(c){c.controlType===a.controlType&&(c.properties=[].concat(a.properties),b=!0)}),b||t.push(a)}return t}function d(){return l}function e(a){"undefined"!=typeof a&&l.controls.push(a)}function f(){return r}function g(a){"undefined"!=typeof a&&r.cssClass.push(a)}function h(){return s}function i(a){"undefined"!=typeof a&&s.className.push(a)}function j(a){return"className"in a&&"type"in a&&"key"in a&&"templateOptions"in a&&(s=angular.copy(a)),!0}function k(){function a(){return l}function b(a){var b=angular.copy(o);return"undefined"!=typeof a&&a&&angular.extend(b,p),b}function c(a){var b=angular.copy(q);return"undefined"!=typeof a&&a&&angular.extend(b,p),b}function d(){return m}function e(){return n}function f(){return r}function g(a,b){if("undefined"!=typeof a&&"undefined"!=typeof b&&a===parseInt(a,10)&&a<=r.cssClass.length){var c={};return c.className=r.cssClass[a-1],r.textContent=b,r.selectedClass=c.className,c.template=[r.simpleHtml1,b,r.simpleHtml2].join(""),c}}function h(){return s}function i(a,b){if("undefined"!=typeof a&&a===parseInt(a,10)&&a<=s.className.length){var c=function(){var c=angular.copy(s);return c.className=s.className[a-1],console.warn("it should have a bug upper line"),"undefined"!=typeof b&&t.forEach(function(a){a.controlType===b&&a.properties.forEach(function(a){a.isRoot&&(c[a.value]=""),a.isTemplateOptions&&(c.templateOptions[a.value]="")})}),{v:c}}();if("object"==typeof c)return c.v}}var j={getEasyFormListControls:a,getEasyFormInitialStateConfigurationModel:b,getEasyFormReloadConfigurationModel:c,getEasyFormEmptyConfigurationLineModel:d,getEasyFormConfigurationEmptyControlModel:e,getRawHeaderTemplates:f,getHeaderTemplateForNcolumnLine:g,getRawFormlyControlTemplates:h,getFormlyControlTemplateForNcolumnLine:i};return j}var l=c.initEasyFormListControls(),m=c.initEasyFormEmptyConfigurationLineModel(),n=c.initEmptyControlFieldModel(),o=c.initEasyFormInitialStateConfigurationModel(m),p=c.initEasyFormInitialStateConfigurationModelAddOnForStepWay(),q=c.initEasyFormReloadConfigurationModel(),r=c.initHeaderTemplates(),s=c.initFormlyControlTemplates(),t=c.initParticularControlProperties();this.getAllParticularControlProperties=a,this.addParticularControlProperties=b,this.getEasyFormListControls=d,this.addEasyFormControlToList=e,this.getHeaderTemplates=f,this.addHeaderTemplateCssClass=g,this.getFormlyControlTemplate=h,this.addformlyControlTemplatesCssClass=i,this.setFormlyControlTemplate=j,this.$get=k,k.$inject=[]}var c,d;return{setters:[function(a){c=a}],execute:function(){d="EasyFormGenFormlyBindingModels",b.$inject=[],a("default",b),a("EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER",d)}}}),a.register("2e",["2b","2d"],function(a){"use strict";var b,c,d,e,f;return{setters:[function(a){b=a["default"],c=a.FORM_FIELD_MANAGE_SERVICE},function(a){d=a["default"],e=a.EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER}],execute:function(){f="",a("default",angular.module(f,[]).service(c,b).provider(e,d))}}}),a.register("2f",[],function(a){"use strict";function b(a,b){function c(c,d){var e=void 0;c.$watch(function(){return d[0].children.length},function(f,g){f!==g&&!function(){for(var f=0,g=[],h=d[0].children.length-1;h>=0;h--)a.isHtmlElementToCount(d[0].children[h].classList)?(f++,g.push({item:h,isReal:!0})):g.push({item:h,isReal:!1});c.contentRealCount=f,e=b(function(){a.updateLineItemCss(c.fullModel,g,c.parentIndex,c.currentIndex,f)},20)}()}),c.$on("$destroy",function(){b.cancel(e)})}var d={restrict:"A",scope:{valueWhenPlaceholder:"@ddValueWhenPlaceholder",valueWhendragging:"@ddValueWhenDragging",fullModel:"=ddFullModel",currentIndex:"@ddContentCounterCurrentIndex",parentIndex:"@ddContentCounterParentIndex",forceRefresh:"=ddContentCounterForceCssRefresh"},link:c};return d}var c;return{setters:[],execute:function(){c="ddContentCounter",b.$inject=["dragDropItemCounterService","$timeout"],a("default",b),a("DD_CONTENT_COUNTER_DIRECTIVE",c)}}}),a.register("30",["9","a"],function(a){var b,c,d,e;return{setters:[function(a){b=a["default"]},function(a){c=a["default"]}],execute:function(){"use strict";d="dragDropItemCounterService",e=function(){function a(b){c(this,a),this.easyFormDragWayConfig=b,this.init()}return b(a,[{key:"init",value:function(){this._modelItemRealCounter=[],this._itemsNotToCount=angular.copy(this.easyFormDragWayConfig.getItemsNotToCount())}},{key:"getItemsNotToCount",value:function(){return this._itemsNotToCount}},{key:"getModelItemsRealCounter",value:function(){return this._modelItemRealCounter}},{key:"isHtmlElementToCount",value:function(a){var b=!0;return a.length>0&&angular.forEach(this._itemsNotToCount,function(c){for(var d=a.length-1;d>=0;d--)a[d]===c&&(b=b&&!1)}),b}},{key:"updateLineItemCss",value:function(a,b,c,d,e){if("undefined"!=typeof a&&"undefined"!=typeof b&&"undefined"!=typeof c&&"undefined"!=typeof d&&"undefined"!=typeof e){for(var f=a[c][d].length-1;f>=0;f--)for(var g=0;g\n \n \n \n \n \n {{ddDecorContainerCtrl.currentTitle}}\n \n \n
\n',d.define=e,c.exports}),a.register("32",["31","33"],function(a){"use strict";function b(){function a(a,b,c,d,e){var f=a.ddDecorContainerCtrl.verboseMode,g=a.ddDecorContainerCtrl.currentIndex;if(a.ddDecorContainerCtrl.isCollapsed=!1,a.ddDecorContainerCtrl.config.isEnabled=!1,a.$watch(function(){return a.ddDecorContainerCtrl.isStillCollapsed},function(b,c){b!==c&&0===a.$parent.$parent.$index&&(a.ddDecorContainerCtrl.isCollapsed=b)}),""!==f){var h=angular.lowercase(f);("true"===h||"1"===h)&&console.dir({whoAmI:"I am verbose from ddDecorContainer link",verbodeMode:h,ParentParentIndex:a.$parent.$parent.$index,ParentIndex:a.$parent.$index,currentIndex:g,styleParam:a.ddDecorContainerCtrl.styleParam,columnindex:a.$parent.$parent.$parent.$parent.$index})}"undefined"!=typeof g&&""!==g&&"0"===g&&"undefined"!=typeof a.ddDecorContainerCtrl.styleParam.title&&(a.ddDecorContainerCtrl.currentTitle=a.ddDecorContainerCtrl.styleParam.title,a.ddDecorContainerCtrl.config.isEnabled=!0,a.ddDecorContainerCtrl.isCollapsed=!0),e(a.$parent,function(a){var c=angular.element(b.children()[1]);c.append(a)})}var b={restrict:"A",template:c,scope:{},controller:d,controllerAs:e,bindToController:{styleParam:"=ddContainerProperties",isStillCollapsed:"=ddContainerIsCollpased",verboseMode:"@ddContainerVerboseMode",currentIndex:"@ddContainerCurrentIndex",collpaseAll:"&ddCollapseAll"},transclude:!0,link:a};return b}var c,d,e,f;return{setters:[function(a){c=a["default"]},function(a){d=a.DD_DECOR_CONTAINER_CONTROLLER_NAME,e=a.DD_DECOR_CONTAINER_CONTROLLERAS_NAME}],execute:function(){f="ddDecorContainer",a("default",b),a("DD_DECOR_CONTAINER_DIRECTIVE",f)}}}),a.register("33",["9","a"],function(a){var b,c,d,e,f;return{setters:[function(a){b=a["default"]},function(a){c=a["default"]}],execute:function(){"use strict";d="ddDecorContainerController",e="ddDecorContainerCtrl",f=function(){function a(){c(this,a),this.init()}return b(a,[{key:"init",value:function(){this.config=angular.extend({},{isEnabled:!1}),this.icons=angular.extend({},{closedClass:"glyphicon glyphicon-eye-open",opened:"glyphicon glyphicon-eye-close"})}},{key:"collapseFct",value:function(){this.collpaseAll({exceptThisOne:this.styleParam.WhenIndex}),this.isCollapsed=!this.isCollapsed,this.isStillCollapsed=this.isCollapsed}},{key:"currentIconClass",value:function(){return this.isCollapsed?this.icons.closedClass:this.icons.opened}}]),a}(),a("default",f),a("DD_DECOR_CONTAINER_CONTROLLER_NAME",d),a("DD_DECOR_CONTAINER_CONTROLLERAS_NAME",e)}}}),a.registerDynamic("34",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='
\n
\n
\n
\n
\n \n {{currentTitle}}\n \n \n
\n \n
\n
\n
\n
\n
\n',d.define=e,c.exports}),a.register("35",["34"],function(a){"use strict";function b(){function a(a){var b=a.verboseMode,c=a.currentIndex;if(a.headerConfig={HeaderButtonVisible:!1,affixAttr:"bs-affix",affixEnabled:!1},""!==b){var d=angular.lowercase(b);("true"===d||"1"===d)&&console.dir({whoAmI:"I am verbose from ddDecorDropZone link",verbodeMode:d,ParentParentIndex:a.$parent.$parent.$index,ParentIndex:a.$parent.$index,currentIndex:c,styleParam:a.styleParam})}"undefined"!=typeof c&&""!==c&&("undefined"!=typeof a.styleParam.title&&(a.currentTitle=a.styleParam.title),"undefined"!=typeof a.styleParam.fontAwesomeIcon&&(a.currentFontAwesome=a.styleParam.fontAwesomeIcon),"1"===c&&(a.headerConfig.HeaderButtonVisible=!0))}var b={restrict:"A",template:c,scope:{styleParam:"=ddDropZoneProperties",verboseMode:"@ddDropZoneVerboseMode",currentIndex:"@ddDropZoneCurrentIndex",addNewLineFct:"&ddDropZoneAddNewLine"},transclude:!0,link:a};return b}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="ddDecorDropZone",b.$inject=[],a("default",b),a("DD_DECOR_DROPZONE_DIRECTIVE",d)}}}),a.registerDynamic("36",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='
\n',d.define=e,c.exports}),a.register("37",["36"],function(a){"use strict";function b(a){function b(b,c,d,e,f){var g=b.verboseMode,h=b.currentIndex,i=b.parentIndex,j=a.getDistinctItemCssClass();if(angular.forEach(j,function(a){return c.removeClass(a)}),c.addClass(b.cssClass),b.$watch("cssClass",function(a,b){a!==b&&(angular.forEach(j,function(a){return c.removeClass(a)}),c.addClass(a))}),""!==g){var k=angular.lowercase(g);("true"===k||"1"===k)&&console.dir({whoAmI:"I am verbose from ddDecorItem directive link",verbodeMode:k,ParentParentIndex:b.$parent.$parent.$index,ParentIndex:i,parentParentIndex:b.parentParentIndex,currentIndex:h,lineItemsCount:b.lineItemsCount})}"0"===b.parentParentIndex&&c.addClass(j[0]),f(b.$parent,function(a){var b=angular.element(c.children()[0]);b.append(a)})}var d={restrict:"A",scope:{verboseMode:"@ddItemVerboseMode",currentIndex:"@ddItemCurrentIndex",parentIndex:"@ddItemParentIndex",parentParentIndex:"@ddItemParentParentIndex",lineItemsCount:"@ddItemsCount",cssClass:"@ddItemCssClass"},template:c,transclude:!0,link:b};return d}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="ddDecorItem",b.$inject=["easyFormDragWayConfig"],a("default",b),a("DRAG_DROP_DECOR_ITEM",d)}}}),a.register("38",["9","a"],function(a){var b,c,d,e;return{setters:[function(a){b=a["default"]},function(a){c=a["default"]}],execute:function(){"use strict";d="dragDropItemDecorationService",e=function(){function a(b){c(this,a),this.easyFormDragWayConfig=b,
-this.init()}return b(a,[{key:"init",value:function(){this._listItemClass=[].concat(this.easyFormDragWayConfig.getListItemCssClass())}},{key:"getListClass",value:function(){return this._listItemClass}},{key:"getCssClassWhenNumberItemsInRowIs",value:function(a){return this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(a)}},{key:"applyCssClassWholeLine",value:function(a,b,c,d,e){if("undefined"!=typeof d&&"undefined"!=typeof c&&"undefined"!=typeof b&&"undefined"!=typeof a&&"undefined"!=typeof e){if(b===e)for(var f=a[b][c].length-1;f>=0;f--)a[b][c][f].cssClass=this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(d);return!0}return!1}},{key:"updateCssClassWholeColumn",value:function(a,b){if("undefined"!=typeof b&&"undefined"!=typeof a){for(var c=a[b].length-1;c>=0;c--)for(var d=a[b][c].length-1;d>=0;d--)a[b][c][d].cssClass=this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(a[b][c].length);return!0}return!1}}]),a}(),e.$inject=["easyFormDragWayConfig"],a("default",e),a("DRAG_DROP_ITEM_DECOR_SERVICE",d)}}}),a.registerDynamic("39",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='
\n \n \n \n \n
\n
\n',d.define=e,c.exports}),a.register("3a",["39"],function(a){"use strict";function b(a){function b(b,c,d,e,f){var g=b.verboseMode,h=b.currentIndex,i=b.parentIndex;b.deleteLine={},b.deleteLine.readyToDelete=!1,b.deleteLine.dblClickCount=0,b.isCollapsed=!1;var j=void 0;if(""!==g){var k=angular.lowercase(g);("true"===k||"1"===k)&&console.dir({whoAmI:"I am verbose from ddDecorLine directive link",verbodeMode:k,ParentParentIndex:b.$parent.$parent.$index,ParentIndex:i,currentIndex:h})}b.removeMe=function(c){c.preventDefault(),c.stopPropagation(),"1"===b.parentIndex&&(1===b.deleteLine.dblClickCount&&(b.deleteLine.dblClickCount=0,b.deleteLine.readyToDelete=!1,b.removeLine(),a.cancel(j)),0===b.deleteLine.dblClickCount&&(b.deleteLine.dblClickCount=b.deleteLine.dblClickCount+1,b.deleteLine.readyToDelete=!0))},b.cancelDelete=function(){j=a(function(){b.deleteLine.dblClickCount=0,b.deleteLine.readyToDelete=!1},500)},b.$on("$destroy",function(){return a.cancel(j)}),f(b.$parent,function(a){var b=angular.element(c.children()[0]);b.append(a)})}var d={restrict:"A",scope:{verboseMode:"@ddLineVerboseMode",currentIndex:"@ddLineCurrentIndex",parentIndex:"@ddLineParentIndex",removeLine:"&ddRemoveLine"},template:c,transclude:!0,link:b};return d}var c,d;return{setters:[function(a){c=a["default"]}],execute:function(){d="ddDecorLine",b.$inject=["$timeout"],a("default",b),a("DRAG_DROP_DECOR_LINE",d)}}}),a.register("3b",[],function(a){"use strict";function b(){function a(a,b){b.on("click",function(a){return a.preventDefault()})}var b={restrict:"A",link:a};return b}var c;return{setters:[],execute:function(){c="ddNoEditableControl",b.$inject=[],a("default",b),a("DRAG_DROP_NO_EDITABLE_CONTROL",c)}}}),a.register("3c",["30","32","33","35","37","38","2f","3a","3b"],function(a){"use strict";var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;return{setters:[function(a){b=a["default"],c=a.DRAG_DROP_ITEM_COUNTER_SERVICE},function(a){d=a["default"],e=a.DD_DECOR_CONTAINER_DIRECTIVE},function(a){f=a["default"],g=a.DD_DECOR_CONTAINER_CONTROLLER_NAME},function(a){h=a["default"],i=a.DD_DECOR_DROPZONE_DIRECTIVE},function(a){j=a["default"],k=a.DRAG_DROP_DECOR_ITEM},function(a){l=a["default"],m=a.DRAG_DROP_ITEM_DECOR_SERVICE},function(a){n=a["default"],o=a.DD_CONTENT_COUNTER_DIRECTIVE},function(a){p=a["default"],q=a.DRAG_DROP_DECOR_LINE},function(a){r=a["default"],s=a.DRAG_DROP_NO_EDITABLE_CONTROL}],execute:function(){t="edaDragDropWay.dragdrop.module",a("default",angular.module(t,[]).directive(o,n).controller(g,f).directive(e,d).directive(i,h).directive(k,j).service(m,l).directive(s,r).service(c,b).directive(q,p))}}}),a.register("3d",[],function(a){"use strict";function b(a){function b(b,c,d){var e=a(d.edaRightClick),f=a(d.edaRightClickColIndex),g=a(d.edaSetRightClicked);c.on("contextmenu",function(a){b.$apply(function(){a.preventDefault(),1===f(b)&&g(b,{}),1===f(b)&&e(b,{$event:a})})})}var c={restrict:"A",link:b};return c}var c;return{setters:[],execute:function(){c="edaRightClick",b.$inject=["$parse"],a("default",b),a("EDA_RIGHT_CLICK_DIRECTIVE",c)}}}),a.register("3e",["9","a"],function(a){var b,c,d,e;return{setters:[function(a){b=a["default"]},function(a){c=a["default"]}],execute:function(){"use strict";d="ddItemRightClickedManager",e=function(){function a(){c(this,a),this.init()}return b(a,[{key:"init",value:function(){}},{key:"setUnRightClicked",value:function(a){a.rightCliked=!1}},{key:"resetAllDragDropItemSelectedState",value:function(a){angular.forEach(a[1],function(a){angular.forEach(a,function(a){return a.rightCliked=!1})})}}]),a}(),e.$inject=[],a("default",e),a("EDA_RIGHT_CLICKED_MANAGER_SERVICE",d)}}}),a.register("3f",["3d","3e"],function(a){"use strict";var b,c,d,e,f;return{setters:[function(a){b=a["default"],c=a.EDA_RIGHT_CLICK_DIRECTIVE},function(a){d=a["default"],e=a.EDA_RIGHT_CLICKED_MANAGER_SERVICE}],execute:function(){f="eda.right.click.module",a("default",angular.module(f,[]).directive(c,b).service(e,d))}}}),a.register("40",["9","a"],function(a){var b,c,d,e;return{setters:[function(a){b=a["default"]},function(a){c=a["default"]}],execute:function(){"use strict";d="ddModelConfModelProxyService",e=function(){function a(b,d,e){c(this,a),this.EasyFormGenFormlyBindingModels=b,this.easyFormDragWayConfig=d,this.$parse=e,this.init()}return b(a,[{key:"init",value:function(){}},{key:"refreshAllConfigurationFromDragAndDropModel",value:function(a,b){var c=this;return a.lines=[],angular.forEach(b[1],function(b,d){a.lines.push(angular.copy(c.EasyFormGenFormlyBindingModels.getEasyFormEmptyConfigurationLineModel())),c.applyThisLine(d+1,d,a),angular.forEach(b,function(e,f){var g={control:angular.copy(c.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(b.length,c.getFormlyDetailedControlModelFromDragDropObject(b[f]).formlyType))},h=c.getFormlyDetailedControlModelFromDragDropObject(b[f]);if("undefined"!=typeof e.key){g.control=angular.copy(e.configModelControl);var i=c.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(b.length,c.getFormlyDetailedControlModelFromDragDropObject(b[f]).formlyType);g.control.className=i.className,g.control.cssClass=i.className}else c.bindConfigCtrlModelFromFormlyDetailedCtrlModel(h,g,a);"undefined"==typeof a.lines[d].columns[f]&&a.lines[d].columns.push(angular.copy(c.EasyFormGenFormlyBindingModels.getEasyFormConfigurationEmptyControlModel())),a.lines[d].columns[f].control=angular.copy(g.control),a.lines[d].columns[f].numColumn=f+1,a.lines[d].columns[f].exist=!0})}),a}},{key:"refreshControlsKeys",value:function(a,b){angular.forEach(a.lines,function(a,c){angular.forEach(a.columns,function(a,d){"undefined"!=typeof b[1][c]&&b[1][c].length>0&&(b[1][c][d].key=a.control.key,b[1][c][d].configModelControl=angular.copy(a.control))})})}},{key:"loadDragDropModelFromConfigurationModel",value:function(a,b){var c=this;b[1]=[],angular.forEach(a.lines,function(a,d){b[1].push([]),angular.forEach(a.columns,function(a){var e={control:"empty",cssClass:"col-xs-12",label:'
'};angular.forEach(b[0],function(b){angular.forEach(b,function(b){b.control===a.control.selectedControl&&(e=angular.copy(b))})}),b[1][d].push(e);var f=c.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(b[1][d].length);angular.forEach(b[1][d],function(a){return a.cssClass=f})})})}},{key:"getFormlyDetailedControlModelFromDragDropObject",value:function(a){var b={},c=this.EasyFormGenFormlyBindingModels.getEasyFormListControls(),d=this.$parse("controls");return angular.forEach(d(c),function(c){c.id===a.control&&(b=c)}),b}},{key:"validKeyUniqueness",value:function(a,b){for(var c=!0,d=b.lines.length-1;d>=0;d--)for(var e=b.lines[d].columns.length-1;e>=0;e--)"undefined"!=typeof b.lines[d].columns[e].control&&b.lines[d].columns[e].control.key===a&&(c=!1);return c}},{key:"createUniqueKey",value:function(a,b){var c=a+"-"+Date.now();return this.validKeyUniqueness(c,b)===!0?c:(c=a+"-"+Date.now(),this.validKeyUniqueness(c,b)===!0?c:c=a+"-"+Date.now())}},{key:"applyThisLine",value:function(a,b,c){angular.forEach(c.lines,function(c,d){d===b&&(c.line=a)})}},{key:"bindConfigCtrlModelFromFormlyDetailedCtrlModel",value:function(a,b,c){this.$parse("control.selectedControl").assign(b,this.$parse("selectedControl")(a)),this.$parse("control.type").assign(b,this.$parse("formlyType")(a)),this.$parse("control.key").assign(b,this.createUniqueKey(this.$parse("control.type")(b),c)),this.$parse("control.subtype").assign(b,this.$parse("formlySubtype")(a)),this.$parse("control.templateOptions.label").assign(b,this.$parse("formlyLabel")(a)),this.$parse("control.templateOptions.required").assign(b,this.$parse("formlyRequired")(a)),this.$parse("control.templateOptions.description").assign(b,this.$parse("formlyDesciption")(a)),this.$parse("control.templateOptions.placeholder").assign(b,this.$parse("formlyPlaceholder")(a)),this.$parse("control.templateOptions.options").assign(b,this.$parse("formlyOptions")(a)),"datepicker"===this.$parse("control.type")(b)&&this.$parse("control.templateOptions.datepickerPopup").assign(b,this.$parse("datepickerPopup")(a))}}]),a}(),e.$inject=["EasyFormGenFormlyBindingModels","easyFormDragWayConfig","$parse"],a("default",e),a("DRAG_DROP_CONFIG_PROXY_SERVICE",d)}}}),a.register("41",["40"],function(a){"use strict";var b,c,d;return{setters:[function(a){b=a["default"],c=a.DRAG_DROP_CONFIG_PROXY_SERVICE}],execute:function(){d="eda.config.proxy.module",a("default",angular.module(d,[]).service(c,b))}}}),a.register("42",[],function(a){"use strict";function b(a,b,c,d){function e(e,f,g){function h(a,b,c){var d=q?a.offsetX||a.layerX:a.offsetY||a.layerY,e=q?b.offsetWidth:b.offsetHeight,f=q?b.offsetLeft:b.offsetTop;return f=c?f:0,f+e/2>d}function i(){return Array.prototype.indexOf.call(p.children,o)}function j(a){if(!d.isDragging&&!r)return!1;if(!m(a.dataTransfer.types))return!1;if(g.dndAllowedTypes&&d.isDragging){var b=e.$eval(g.dndAllowedTypes);if(angular.isArray(b)&&-1===b.indexOf(d.dragType))return!1}return g.dndDisableIf&&e.$eval(g.dndDisableIf)?!1:!0}function k(){return n.remove(),f.removeClass("dndDragover"),!0}function l(b,c,f){return a(b)(e,{event:c,index:i(),item:f||void 0,external:!d.isDragging,type:d.isDragging?d.dragType:void 0})}function m(a){if(!a)return!0;for(var b=0;b
'),o=n[0],p=f[0],q=g.dndHorizontalList&&e.$eval(g.dndHorizontalList),r=g.dndExternalSources&&e.$eval(g.dndExternalSources);f.on("dragover",function(a){if(a=a.originalEvent||a,!j(a))return!0;if(o.parentNode!=p&&f.append(n),a.target!==p){for(var b=a.target;b.parentNode!==p&&b.parentNode;)b=b.parentNode;b.parentNode===p&&b!==o&&(h(a,b)?p.insertBefore(o,b):p.insertBefore(o,b.nextSibling))}else if(h(a,o,!0))for(;o.previousElementSibling&&(h(a,o.previousElementSibling,!0)||0===o.previousElementSibling.offsetHeight);)p.insertBefore(o,o.previousElementSibling);else for(;o.nextElementSibling&&!h(a,o.nextElementSibling,!0);)p.insertBefore(o,o.nextElementSibling.nextElementSibling);return g.dndDragover&&!l(g.dndDragover,a)?k():(f.addClass("dndDragover"),a.preventDefault(),a.stopPropagation(),!1)}),f.on("drop",function(a){if(a=a.originalEvent||a,!j(a))return!0;a.preventDefault();var b,d=a.dataTransfer.getData("Text")||a.dataTransfer.getData("text/plain");try{b=JSON.parse(d)}catch(f){return k()}if(g.dndDrop&&(b=l(g.dndDrop,a,b),!b))return k();var h=e.$eval(g.dndList);return e.$apply(function(){h.splice(i(),0,b)}),"none"===a.dataTransfer.dropEffect?"copy"===a.dataTransfer.effectAllowed||"move"===a.dataTransfer.effectAllowed?c.dropEffect=a.dataTransfer.effectAllowed:c.dropEffect=a.ctrlKey?"copy":"move":c.dropEffect=a.dataTransfer.dropEffect,k(),a.stopPropagation(),!1}),f.on("dragleave",function(a){a=a.originalEvent||a,f.removeClass("dndDragover"),b(function(){f.hasClass("dndDragover")||n.remove()},100)})}var f={link:e};return f}var c,d;return{setters:[],execute:function(){c="dndList",d=["$parse","$timeout","dndDropEffectWorkaround","dndDragTypeWorkaround"],b.$inject=d,a("default",b),a("DNDLIST_DIRECTIVE",c)}}}),a.register("43",[],function(a){"use strict";function b(a,b,c,d){function e(e,f,g){var h=this;f.attr("draggable","true"),g.dndDisableIf&&e.$watch(g.dndDisableIf,function(a){return f.attr("draggable",!a)}),f.on("dragstart",function(h){h=h.originalEvent||h,h.dataTransfer.setData("Text",angular.toJson(e.$eval(g.dndDraggable))),h.dataTransfer.effectAllowed=g.dndEffectAllowed||"move",f.addClass("dndDragging"),b(function(){f.addClass("dndDraggingSource")},0),c.dropEffect="none",d.isDragging=!0,d.dragType=g.dndType?e.$eval(g.dndType):void 0,a(g.dndDragstart)(e,{event:h}),h.stopPropagation()}),f.on("dragend",function(b){b=b.originalEvent||b;var h=c.dropEffect;e.$apply(function(){switch(h){case"move":a(g.dndMoved)(e,{event:b});break;case"copy":a(g.dndCopied)(e,{event:b})}}),f.removeClass("dndDragging"),f.removeClass("dndDraggingSource"),d.isDragging=!1,b.stopPropagation()}),f.on("click",function(b){b=b.originalEvent||b,e.$apply(function(){return a(g.dndSelected)(e,{event:b})}),b.stopPropagation()}),f.on("selectstart",function(){return h.dragDrop&&h.dragDrop(),!1})}var f={link:e};return f}var c,d;return{setters:[],execute:function(){c="dndDraggable",d=["$parse","$timeout","dndDropEffectWorkaround","dndDragTypeWorkaround"],b.$inject=d,a("default",b),a("DNDDRAGGABLE_DIRECTIVE",c)}}}),a.register("44",["42","43"],function(a){"use strict";var b,c,d,e,f;return{setters:[function(a){b=a["default"],c=a.DNDLIST_DIRECTIVE},function(a){d=a["default"],e=a.DNDDRAGGABLE_DIRECTIVE}],execute:function(){f="dndLists.module",a("default",angular.module(f,[]).directive(c,b).directive(e,d).factory("dndDragTypeWorkaround",function(){return{}}).factory("dndDropEffectWorkaround",function(){return{}}))}}}),a.register("45",[],function(a){"use strict";function b(){function a(a,b,c){function d(b,c){if(b&&0!==b.style.width&&0!==b.style.width)switch(c.cloak&&g.css("display","none"),c.side){case"right":b.style.width="0px",c.squeeze&&(i.style.right="0px"),c.push&&(i.style.right="0px",i.style.left="0px");break;case"left":b.style.width="0px",c.squeeze&&(i.style.left="0px"),c.push&&(i.style.left="0px",i.style.right="0px");break;case"top":b.style.height="0px",c.squeeze&&(i.style.top="0px"),c.push&&(i.style.top="0px",i.style.bottom="0px");break;case"bottom":b.style.height="0px",c.squeeze&&(i.style.bottom="0px"),c.push&&(i.style.bottom="0px",i.style.top="0px")}a.psOpen=!1}function e(a,b){if(0!==a.style.width&&0!==a.style.width){switch(b.side){case"right":a.style.width=b.size,b.squeeze&&(i.style.right=b.size),b.push&&(i.style.right=b.size,i.style.left="-"+b.size);break;case"left":a.style.width=b.size,b.squeeze&&(i.style.left=b.size),b.push&&(i.style.left=b.size,i.style.right="-"+b.size);break;case"top":a.style.height=b.size,b.squeeze&&(i.style.top=b.size),b.push&&(i.style.top=b.size,i.style.bottom="-"+b.size);break;case"bottom":a.style.height=b.size,b.squeeze&&(i.style.bottom=b.size),b.push&&(i.style.bottom=b.size,i.style.top="-"+b.size)}setTimeout(function(){b.cloak&&g.css("display","block")},1e3*b.speed)}}var f={};f.side=a.psSide||"right",f.speed=a.psSpeed||"0.5",f.size=a.psSize||"300px",f.zindex=1e3,f.className=a.psClass||"ng-pageslide",f.cloak=a.psCloak&&"false"==a.psCloak.toLowerCase()?!1:!0,f.squeeze=Boolean(a.psSqueeze)||!1,f.push=Boolean(a.psPush)||!1,f.container=a.psContainer||!1,b.addClass(f.className);var g=null,h=null,i=f.container?document.getElementById(f.container):document.body;if(h=b[0],"div"!==h.tagName.toLowerCase()&&"pageslide"!==h.tagName.toLowerCase())throw new Error("Pageslide can only be applied to or
elements");if(0===h.children.length)throw new Error("You have to content inside the ");switch(g=angular.element(h.children),i.appendChild(h),h.style.zIndex=f.zindex,h.style.position=f.container!==!1?"absolute":"fixed",h.style.width=0,h.style.height=0,h.style.overflow="hidden",h.style.transitionDuration=f.speed+"s",h.style.webkitTransitionDuration=f.speed+"s",h.style.transitionProperty="width, height",f.squeeze&&(i.style.position="absolute",i.style.transitionDuration=f.speed+"s",i.style.webkitTransitionDuration=f.speed+"s",i.style.transitionProperty="top, bottom, left, right"),f.side){case"right":h.style.height=c.psCustomHeight||"100%",h.style.top=c.psCustomTop||"0px",h.style.bottom=c.psCustomBottom||"0px",h.style.right=c.psCustomRight||"0px";break;case"left":h.style.height=c.psCustomHeight||"100%",h.style.top=c.psCustomTop||"0px",h.style.bottom=c.psCustomBottom||"0px",h.style.left=c.psCustomLeft||"0px";break;case"top":h.style.width=c.psCustomWidth||"100%",h.style.left=c.psCustomLeft||"0px",h.style.top=c.psCustomTop||"0px",h.style.right=c.psCustomRight||"0px";break;case"bottom":h.style.width=c.psCustomWidth||"100%",h.style.bottom=c.psCustomBottom||"0px",h.style.left=c.psCustomLeft||"0px",h.style.right=c.psCustomRight||"0px"}a.$watch("psOpen",function(a){a?e(h,f):d(h,f)}),a.$on("$destroy",function(){return i.removeChild(h)}),a.psAutoClose&&(a.$on("$locationChangeStart",function(){return d(h,f)}),a.$on("$stateChangeStart",function(){return d(h,f)}))}var b={restrict:"EAC",transclude:!1,scope:{psOpen:"=?",psAutoClose:"=?",psSide:"@",psSpeed:"@",psClass:"@",psSize:"@",psSqueeze:"@",psCloak:"@",psPush:"@",psContainer:"@"},link:a};return b}var c;return{setters:[],execute:function(){c="pageslide",b.$inject=[],a("default",b),a("PAGE_SLIDE_DIRECTIVE",c)}}}),a.register("46",["45"],function(a){"use strict";var b,c,d;return{setters:[function(a){b=a["default"],c=a.PAGE_SLIDE_DIRECTIVE}],execute:function(){d="pageslide.module",a("default",angular.module(d,[]).directive(c,b))}}}),a.register("47",[],function(a){"use strict";var b,c,d,e;return{setters:[],execute:function(){b=[{cssClass:"col-md-12",numberItemPerRow:0},{cssClass:"col-md-12",numberItemPerRow:1},{cssClass:"col-md-6",numberItemPerRow:2},{cssClass:"col-md-4",numberItemPerRow:3}],c={dropZoneConfig:{decoration:[{WhenIndex:0,ApplycssClass:"col-md-4",fontAwesomeIcon:"fa fa-level-up",title:"Drag control from here : "},{WhenIndex:1,ApplycssClass:"col-md-8",fontAwesomeIcon:"fa fa-level-down",title:"Drop control into here : "}],verboseMode:!1},containerConfig:{decoration:[{WhenIndex:0,ApplycssClass:"col-md-12",title:"Blank : ",groupId:"blank",isCollapsed:!0},{WhenIndex:1,ApplycssClass:"col-md-12",title:"Headers : ",groupId:"headers",isCollapsed:!0},{WhenIndex:2,ApplycssClass:"col-md-12",title:"Text inputs : ",groupId:"inputs",isCollapsed:!0},{WhenIndex:3,ApplycssClass:"col-md-12",title:"Textareas : ",groupId:"textareas",isCollapsed:!0},{WhenIndex:4,ApplycssClass:"col-md-12",title:"Radios : ",groupId:"radios",isCollapsed:!0},{WhenIndex:5,ApplycssClass:"col-md-12",title:"Checkboxes : ",groupId:"checkboxes",isCollapsed:!0},{WhenIndex:6,ApplycssClass:"col-md-12",title:"Selects : ",groupId:"selects",isCollapsed:!0}],verboseMode:!1,collapseEnabled:!0,collapseCtrl:[{atIndex:0,collapse:!0},{atIndex:1,collapse:!0}]},itemConfig:{verboseMode:!1}},d=[[],[[]]],e={itemBeingDragged:""},a("LIST_DRAG_DROP_ITEM_CSS_CLASSES",b),a("DRAG_DROP_CONFIG_MODEL",c),a("DRAG_DROP_PRESENTATION_MODEL",d),a("ITEMS_NOT_TO_COUNT_FOR_REAL",e)}}}),a.register("48",["47"],function(a){"use strict";function b(){function a(a){w=[].concat(a)}function b(){return z}function g(a){z=angular.copy(a)}function h(){var a={modalAnimated:!1};return a}function i(a,b){"undefined"!=typeof a&&"undefined"!=typeof b&&v(a,b)}function j(){return y}function k(){return!0}function l(){return!0}function m(){var a=[{name:"empty",enabled:!0},{name:"Header",enabled:!0},{name:"Subtitle",enabled:!0},{name:"TextInput",enabled:!0},{name:"Password",enabled:!0},{name:"Email",enabled:!0},{name:"Date",enabled:!0},{name:"Texarea",enabled:!0},{name:"RichTextEditor",enabled:!0},{name:"Radio",enabled:!0},{name:"Checkbox",enabled:!0},{name:"BasicSelect",enabled:!0},{name:"GroupedSelect",enabled:!0}];return a}function n(a){angular.isDefined(a)&&(a===!0&&(C=!0),a===!1&&(C=!1))}function o(a){angular.isDefined(a)&&(a===!0&&(D=!0),a===!1&&(D=!1))}function p(){return B}function q(a){angular.isString(a)&&angular.forEach(B,function(b){b.name===a&&(b.enabled=!1)})}function r(a){angular.isString(a)&&angular.forEach(B,function(b){b.name===a&&(b.enabled=!0)})}function s(a){var b=a===!0?a:a===!1?a:A.modalAnimated;A.modalAnimated=b}function t(){return A.modalAnimated}function u(){function a(){return y}function b(a,b,c){return"undefined"!=typeof b&&"undefined"!=typeof c&&b===parseInt(b,10)&&(a.containerConfig.decoration[b].isCollapsed=c),!0}function c(){return x}function d(){var a=[];return angular.forEach(w,function(b){var c=b.cssClass;if(0===a.length)a.push(c);else{var d=!0;angular.forEach(a,function(a){var b=a;c===b&&(d=!1)}),d&&a.push(c)}}),a}function e(a){if("undefined"!=typeof a){for(var b="",c=w.length-1;c>=0;c--)w[c].numberItemPerRow===a&&(b=w[c].cssClass);return b}return""}function f(){return w}function g(){return z}function h(){return A.modalAnimated}function i(a){s(a)}function j(){return angular.copy(B)}function k(){return C}function l(){return D}var m={setModalAnimation:i,getModalAnimationValue:h,getListEnabledControl:j,isPreviewPanelVisible:k,arePreviewModelsVisible:l,getListItemCssClass:f,getItemsNotToCount:g,getItemCssDependingNumberItemsInRow:e,getDistinctItemCssClass:d,getDragDropConfigModel:c,getDragDropPresentationModel:a,setDragDropConfigContainerDecorationCollapse:b};return m}function v(a,b){if(y[0].length>0){if(y[0].lengthd;d++)y[0].push([]);x.containerConfig.decoration.forEach(function(c){b.addToGroupCtrl===c.groupId&&y[0][c.WhenIndex].push(a)})}else x.containerConfig.decoration.forEach(function(){return y[0].push([])}),x.containerConfig.decoration.forEach(function(c){b.addToGroupCtrl===c.groupId&&y[0][c.WhenIndex].push(a)})}var w=[].concat(c),x=angular.copy(d),y=[].concat(e),z=angular.copy(f),A=h(),B=m(),C=k(),D=l();this.$get=u,this.setModalAnimation=s,this.getModalAnimation=t,this.configuration=A,this.getEnabledControls=p,this.disableControl=q,this.enableControl=r,this.showPreviewPanel=n,this.showPreviewModels=o,this.setListItemCssClass=a,this.getItemsNotTocount=b,this.setItemsNotTocount=g,this.addControlToDragDropPresentationModel=i,this.getDragDropPresentationModel=j,u.$inject=[]}var c,d,e,f,g;return{setters:[function(a){c=a.LIST_DRAG_DROP_ITEM_CSS_CLASSES,d=a.DRAG_DROP_CONFIG_MODEL,e=a.DRAG_DROP_PRESENTATION_MODEL,f=a.ITEMS_NOT_TO_COUNT_FOR_REAL}],execute:function(){g="easyFormDragWayConfig",b.$inject=[],a("default",b),a("EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME",g)}}}),a.registerDynamic("49",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n \n
\n
\n \n
\n
\n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n \n Customize form buttons\n \n \n
\n
\n \n
\n
\n \n \n \n \n \n \n \n DATA MODEL\n \n \n
\n
\n
\n {{vm.model | json}}\n \n
\n
\n
\n \n
\n
\n \n \n \n \n \n \n FIELDS MODEL (ready to save to database one)\n \n \n
\n
\n
\n {{vm.wfFormFieldsOnlyNeededProperties | json}}\n \n
\n
\n
\n \n
\n
\n \n \n \n \n \n \n Save this form\n \n \n
\n
\n
\n
\n save this form\n \n
\n
\n
\n \n \n
\n
\n \n
\n
\n \n Easy form generator : {{vm.easyFormGeneratorVERSION}} — Erwan DATIN (MacKentoch)\n \n \n
\n
\n \n',
-d.define=e,c.exports}),a.registerDynamic("4a",[],!0,function(a,b,c){var d=this,e=d.define;d.define=void 0;var f=Object;return c.exports={create:f.create,getProto:f.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:f.getOwnPropertyDescriptor,setDesc:f.defineProperty,setDescs:f.defineProperties,getKeys:f.keys,getNames:f.getOwnPropertyNames,getSymbols:f.getOwnPropertySymbols,each:[].forEach},d.define=e,c.exports}),a.registerDynamic("4b",["4a"],!0,function(a,b,c){var d=this,e=d.define;d.define=void 0;var f=a("4a");return c.exports=function(a,b,c){return f.setDesc(a,b,c)},d.define=e,c.exports}),a.registerDynamic("4c",["4b"],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports={"default":a("4b"),__esModule:!0},d.define=e,c.exports}),a.registerDynamic("9",["4c"],!0,function(a,b,c){"use strict";var d=this,e=d.define;d.define=void 0;var f=a("4c")["default"];return b["default"]=function(){function a(a,b){for(var c=0;c1&&this.configuration.lines.splice(1,this.configuration.lines.length-2),this.countConfigurationModelLines()}},{key:"countConfigurationModelLines",value:function(){return this.configuration.lines.length}},{key:"saveThisForm",value:function(){return"undefined"==typeof this.configuration.formName?(this.toaster.pop({type:"warning",timeout:2e3,title:"Form name is undefined",body:"Form has not been saved.",showCloseButton:!0}),!1):""===this.configuration.formName?(this.toaster.pop({type:"warning",timeout:2e3,title:"Form name is required",body:"Form has not been saved.",showCloseButton:!0}),!1):(this.toaster.pop({type:"wait",timeout:1e4,title:"Form is being saved",body:"Wait.",showCloseButton:!0}),this.toaster.clear(),this.returnSaveEvent=!0,!0)}},{key:"dragoverCallbackContainer",value:function(a,b,c){return 0===c?!1:!0}},{key:"dropCallback",value:function(a,b,c,d,e,f){var g=this;if(d){if("itemType"===f&&!c.label)return!1;if("containerType"===f&&!angular.isArray(c))return!1}var h=this.$timeout(function(){g.configuration=angular.copy(g.ddModelConfModelProxyService.refreshAllConfigurationFromDragAndDropModel(g.configuration,g.dragDropModel)),g.formFieldManage.applyConfigurationToformlyModel(g.configuration,g.wfFormFields,g.dataModel),g.wfFormFieldsOnlyNeededProperties=angular.copy(g.wfFormFields),g.ddModelConfModelProxyService.refreshControlsKeys(g.configuration,g.dragDropModel)},200);return this.$scope.$on("$destroy",function(){return g.$timeout.cancel(h)}),c}},{key:"dndItemMoved",value:function(a,b,c){a>0&&this.dragDropModel[a][b].splice(c,1)}},{key:"dragoverCallbackItems",value:function(a,b){return 0===b?!1:!0}},{key:"disableItemDropIf",value:function(){}},{key:"dropCallbackItems",value:function(a,b,c,d,e,f,g,h,i,j){var k=this;if(h){if("itemType"===j&&!g.label)return!1;if("containerType"===j&&!angular.isArray(g))return!1}var l=this.$timeout(function(){k.configuration=angular.copy(k.ddModelConfModelProxyService.refreshAllConfigurationFromDragAndDropModel(k.configuration,k.dragDropModel)),k.formFieldManage.applyConfigurationToformlyModel(k.configuration,k.wfFormFields,k.dataModel),k.wfFormFieldsOnlyNeededProperties=angular.copy(k.wfFormFields),k.ddModelConfModelProxyService.refreshControlsKeys(k.configuration,k.dragDropModel)},200);return this.ddItemRightClickedManager.setUnRightClicked(g),this.$scope.$on("$destroy",function(){return k.$timeout.cancel(l)}),g}},{key:"saveFromEditPanel",value:function(){this.controllerModalProxy.bindSpecialCtrlTemporyModelsToProxyModel(),this.controllerModalProxy.bindConfigurationModelFromProxyModel(this.controllerModalProxy.getEditPanelModelLineIndex(),this.controllerModalProxy.getEditPanelModelColumnIndex(),this.configuration),this.formFieldManage.applyConfigurationToformlyModel(this.configuration,this.wfFormFields,this.dataModel),this.wfFormFieldsOnlyNeededProperties=angular.copy(this.wfFormFields),this.ddModelConfModelProxyService.refreshControlsKeys(this.configuration,this.dragDropModel),this.controllerModalProxy.setEditPanelModelToggle(!1),this.editPanelModel.toggle=this.controllerModalProxy.getEditPanelModelToggle(),this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel)}},{key:"closeEditPanel",value:function(){this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel),this.controllerModalProxy.setEditPanelModelToggle(!1),this.editPanelModel.toggle=this.controllerModalProxy.getEditPanelModelToggle()}},{key:"setRightClicked",value:function(a,b){b.rightCliked=!0}},{key:"toggleEditPanel",value:function(a,b,c,d){var e=this;this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel),this.controllerModalProxy.getEditPanelModelToggle()?(this.controllerModalProxy.setEditPanelModelToggle(!1),this.editPanelModel.toggle=this.controllerModalProxy.getEditPanelModelToggle(),"undefined"!=typeof this.controllerModalProxy.getEditPanelModelLineIndex()&&"undefined"!=typeof this.controllerModalProxy.getEditPanelModelColumnIndex()&&"undefined"!=typeof this.controllerModalProxy.getEditPanelModelControl()&&(this.controllerModalProxy.getEditPanelModelLineIndex()===b&&this.controllerModalProxy.getEditPanelModelColumnIndex()===c&&angular.equals(this.controllerModalProxy.getEditPanelModelControl(),d)||!function(){d.rightCliked=!0;var a=e.$timeout(function(){e.controllerModalProxy.setEditPanelModelLineIndex(b),e.controllerModalProxy.setEditPanelModelColumnIndex(c),e.controllerModalProxy.setEditPanelModelControl(d),e.controllerModalProxy.setProxyModelFromConfigurationSelection(e.configuration,b,c),e.controllerModalProxy.setEditPanelModelToggle(!0),e.$scope.editPanelModel.toggle=e.controllerModalProxy.getEditPanelModelToggle()},200);e.$scope.$on("$destroy",function(){return e.$timeout.cancel(a)})}())):(d.rightCliked=!0,this.controllerModalProxy.setEditPanelModelLineIndex(b),this.controllerModalProxy.setEditPanelModelColumnIndex(c),this.controllerModalProxy.setEditPanelModelControl(d),this.controllerModalProxy.setProxyModelFromConfigurationSelection(this.configuration,b,c),this.controllerModalProxy.setEditPanelModelToggle(!0),this.editPanelModel.toggle=this.controllerModalProxy.getEditPanelModelToggle())}},{key:"removeThisLine",value:function(a){this.dragDropModel[1].splice(a,1)}},{key:"addNewline",value:function(){this.formFieldManage.applyConfigurationToformlyModel(this.configuration,this.wfFormFields,this.dataModel),this.wfFormFieldsOnlyNeededProperties=angular.copy(this.wfFormFields)}},{key:"insertNewLine",value:function(){this.addNewline(),this.dragDropModel[1].push([])}}]),a}(),h.$inject=["$scope","easyFormGenVersion","$filter","$anchorScroll","toaster","$timeout","$modal","$log","formFieldManage","controllerModalProxy","dragDropItemDecorationService","ddModelConfModelProxyService","ddItemRightClickedManager","easyFormDragWayConfig"],a("default",h),a("DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER",f),a("DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS",g)}}}),a.register("4f",["49","4e"],function(a){"use strict";function b(a,b,f,g){function h(a){function c(){var b=angular.isArray(a.edaEasyFormGeneratorModel.edaFieldsModel)&&a.edaEasyFormGeneratorModel.edaFieldsModel.length>0?a.edaEasyFormGeneratorModel.edaFieldsModel:d();return b}function d(){var a=[{line:1,activeColumn:1,columns:[{numColumn:1,exist:!0,control:{type:"none",key:"none"}}]}];return a}function e(){var b=angular.isArray(a.edaEasyFormGeneratorModel.dataModel)&&a.edaEasyFormGeneratorModel.dataModel.length>0?a.edaEasyFormGeneratorModel.dataModel:[];return b}function h(){if(angular.isDefined(a.edaEasyFormGeneratorModel)){var d=c();a.vm.configurationLoaded={},b.bindConfigurationLines(a.vm.configurationLoaded,d,!1),a.vm.configuration=angular.copy(a.vm.configurationLoaded),f.loadDragDropModelFromConfigurationModel(a.vm.configuration,a.vm.dragDropModel),i(a.vm.configuration),f.refreshControlsKeys(a.vm.configuration,a.vm.dragDropModel),b.applyConfigurationToformlyModel(a.vm.configuration,a.vm.wfFormFields,a.vm.dataModel),a.vm.wfFormFieldsOnlyNeededProperties=angular.copy(a.vm.wfFormFields),a.vm.dataModel=e(),a.vm.configuration.formName=angular.isString(a.edaEasyFormGeneratorModel.formName)?a.edaEasyFormGeneratorModel.formName:"",a.vm.configuration.submitButtonText=angular.isString(a.edaEasyFormGeneratorModel.btnSubmitText)?a.edaEasyFormGeneratorModel.btnSubmitText:"Submit",a.vm.configuration.cancelButtonText=angular.isString(a.edaEasyFormGeneratorModel.btnCancelText)?a.edaEasyFormGeneratorModel.btnCancelText:"Cancel"}}function i(a){angular.forEach(a.lines,function(a){var b=g.getItemCssDependingNumberItemsInRow(a.columns.length);angular.forEach(a.columns,function(a){return a.control.className=b})})}a.$watch(function(){return a.edaEasyFormGeneratorModel},function(){return h()},!0),a.$watch(function(){return a.returnSaveEvent},function(b){if(b===!0){var c={formName:a.vm.configuration.formName,btnSubmitText:a.vm.configuration.submitButtonText,btnCancelText:a.vm.configuration.cancelButtonText,edaFieldsModel:a.vm.configuration.lines,edaFieldsModelStringified:angular.toJson(a.vm.configuration.lines),formlyFieldsModel:a.vm.wfFormFieldsOnlyNeededProperties,dataModel:a.vm.dataModel};a.edaSaveFormEvent({edaEasyFormGeneratorModel:c}),a.returnSaveEvent=!1}})}var i={restrict:"E",template:c,scope:{edaEasyFormGeneratorModel:"=",edaSaveFormEvent:"&edaSaveFormEvent"},controller:d,controllerAs:e,replace:!1,link:h};return i}var c,d,e,f;return{setters:[function(a){c=a["default"]},function(a){d=a.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER,e=a.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS}],execute:function(){f="edaDragdropWayEasyFormGen",b.$inject=["$timeout","formFieldManage","ddModelConfModelProxyService","easyFormDragWayConfig"],a("default",b),a("EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE",f)}}}),a.register("50",["48","4e","4f"],function(a){"use strict";var b,c,d,e,f,g,h;return{setters:[function(a){b=a["default"],c=a.EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME},function(a){d=a["default"],e=a.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER},function(a){f=a["default"],g=a.EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE}],execute:function(){h="edaDragDropWay.main.module",a("default",angular.module(h,[]).provider(c,b).controller(e,d).directive(g,f))}}}),a.register("51",[],function(a){"use strict";function b(a){return function(b,c){return a.trustAs(c||"html",b)}}var c;return{setters:[],execute:function(){c="trustThis",b.$inject=["$sce"],a("default",b),a("TRUST_THIS_FILTER_NAME",c)}}}),a.register("52",["51"],function(a){"use strict";var b,c,d;return{setters:[function(a){b=a["default"],c=a.TRUST_THIS_FILTER_NAME}],execute:function(){d="edaDragDropWay.trustThis.filter",a("default",angular.module(d,[]).filter(c,b))}}}),a.register("1",["2","3","5","6","41","44","46","50","52","2a","2e","3c","3f"],function(a){"use strict";var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;return{setters:[function(a){},function(a){b=a["default"]},function(a){c=a["default"],d=a.EASY_FORM_DD_VERSION_NAME,e=a.EASY_FORM_DD_VERSION_VALUE},function(a){f=a["default"]},function(a){g=a["default"]},function(a){h=a["default"]},function(a){i=a["default"]},function(a){j=a["default"]},function(a){k=a["default"]},function(a){l=a["default"]},function(a){m=a["default"]},function(a){n=a["default"]},function(a){o=a["default"]}],execute:function(){p="eda.easyformGen.dragDropWay",q=[f.name,g.name,k.name,l.name,m.name,n.name,j.name,o.name,h.name,i.name],r=angular.module(p,q).config(c).config(b).value(d,e),a("default",r)}}})})(function(a){a()});
+!function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={exports:{},id:o,loaded:!1};return t[o].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var n={};return e.m=t,e.c=n,e.p="/",e(0)}([function(t,e,n){"use strict";n(1),n(6),n(10)},function(t,e,n){"use strict";n(2),n(3),n(5)},function(t,e,n){
+//! api-check version 7.5.5 built with ♥ by Kent C. Dodds (http://kent.doddsfamily.us) (ó ì_í)=óò=(ì_í ò)
+!function(e,n){t.exports=n()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={exports:{},id:o,loaded:!1};return t[o].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=n(1),i=o(r);e.default=i.default,t.exports=e.default},function(t,e,n){"use strict";function o(){function e(o,i,l){if(e.config.disabled||t.exports.globalConfig.disabled)return{apiTypes:{},argTypes:{},passed:!0,message:"",failed:!1};n(arguments),Array.isArray(o)?i=Array.prototype.slice.call(i):(o=[o],i=[i]);var a=s(o,i);a.length||(a=r(o,i));var d=c(o,i);return d.args=i,a.length?(d.message=e.getErrorMessage(o,i,a,l),d.failed=!0,d.passed=!1):(d.message="",d.failed=!1,d.passed=!0),d}function n(t){var n=t[0],o=t[1],i=Array.isArray(o)||o&&"object"==typeof o&&"number"==typeof o.length;if(Array.isArray(n)&&!i)throw new Error(l(n,[o],["If an array is provided for the api, an array must be provided for the args as well."],{prefix:"apiCheck"}));var a=r(E.checkApiCheckApi,t);if(a.length){var s=e.getErrorMessage(E.checkApiCheckApi,t,a,{prefix:"apiCheck"});e.handleErrorMessage(s,!0)}}function o(t){return function(n,o,r){var i=e(n,o,r);return e.handleErrorMessage(i.message,t),i}}function i(t,e){if(e&&t)throw new Error(t);t&&console.warn(t)}function l(t,n){function o(){var t=s.onlyPrefix;return t||(t=((d.prefix||"")+" "+(s.prefix||"")).trim()),t}function r(){var t=s.onlySuffix;return t||(t=((s.suffix||"")+" "+(d.suffix||"")).trim()),t}function i(){var t=s.url;return t||(t=d.docsBaseUrl&&s.urlSuffix&&(""+d.docsBaseUrl+s.urlSuffix).trim()),t}var l=arguments.length<=2||void 0===arguments[2]?[]:arguments[2],s=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],d=e.config.output||{},c=o(),p=r(),u=i(),f="apiCheck failed! "+l.join(", "),m="\n\n"+a(t,n);return(c+" "+f+" "+p+" "+(u||"")+m).trim()}function a(t,e){function n(t){m(t,function(e,o){d.indexOf(e)===-1&&(d.push(e),"object"==typeof e?n(t):"function"==typeof e&&(t[o]=e.displayName||e.name||"anonymous function"))})}function o(t){return t&&t.length?(t&&1===t.length&&(t=t[0]),u(t,null,2)):"nothing"}function r(){var t="\n",n=!0;e&&1===e.length&&(n="object"==typeof e[0]&&null!==e[0]&&!!Object.keys(e[0]).length);var o="type"+(n?"s":""),r=t+t;return"You passed:"+t+p+r+("With the "+o+":"+t+a+r)+("The API calls for:"+t+l)}var i=c(t,e),l=i.apiTypes,a=i.argTypes,s=Array.prototype.slice.call(e||[]),d=[];n(s);var p=o(s);return a=o(a),l=o(l),r()}function c(n,o){n=g(n),o=g(o);var r=n.map(function(n,r){var i=t.exports.globalConfig.hasOwnProperty("verbose");return h(n,{terse:i?!t.exports.globalConfig.verbose:!e.config.verbose,obj:o[r],addHelpers:!0})}),i=o.map(function(t){return d(t,[])});return{argTypes:i,apiTypes:r}}var p=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],y=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];O&&arguments.length&&O.throw(E.getApiCheckInstanceCheckers,arguments,{prefix:"creating an apiCheck instance"});var v={throw:o(!0),warn:o(!1),getErrorMessage:l,handleErrorMessage:i,config:{output:p.output||{prefix:"",suffix:"",docsBaseUrl:""},verbose:p.verbose||!1,disabled:p.disabled||!1},utils:f};m(v,function(t,n){return e[n]=t});var b=e.disabled||t.exports.globalConfig.disabled;return m(x.getCheckers(b),function(t,n){return e[n]=t}),m(y,function(t,n){return e[n]=t}),e}function r(t,e){for(var n=[],o=!1,r=0,i=0,a=void 0,s=void 0,d=void 0,c=void 0,p=void 0,u=void 0,f=void 0;(s=t[r++])&&i=t.length,f=r>1&&t[r-1].isOptional,u&&c||u&&!c&&!s.isOptional&&!f?(o=!0,n.push(l(d,s,a))):u&&s.isOptional?i--:n.push(v(p)+" passed");return o?n:[]}function i(t,e,n){var o=x.shape({type:x.string,optional:x.bool}),r=x.func.withProperties({__apiCheckData:o}),l=x.shape({__apiCheckData:o}),a=x.oneOfType([r,l])(t,e,n);return y(a)?a:"function"==typeof t||t.hasOwnProperty(t.__apiCheckData.type)?void 0:C(e,n,i.type)}function l(t,e,n){var o=a(e,n);return o=o?" - "+o:"",t.message+o}function a(t,e){var n=t.help;return n?("function"==typeof n&&(n=n(e)),n):""}function s(t,e){var n=t.filter(function(t){return!t.isOptional});return e.length=0;o--)e[o][r[0]]===t&&(t=e[o],r.unshift(n[o]));return"~"+r.join(".")}function r(t,e,o,r){return JSON.stringify(t,n(e,r),o)}t.exports=r,r.getSerialize=n},function(t,e,n){"use strict";function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function r(t){var e=i(t),n=void 0;if("array"===e)n=[];else{if("object"!==e)return t;n={}}return d(t,function(t,e){n[e]=t}),n}function i(t){return Array.isArray(t)?"array":t instanceof RegExp?"object":typeof t}function l(t,e){var n=void 0,o=e&&e.short;return n=o&&t.shortType?t.shortType:!o&&"object"==typeof t.type||"function"===t.type?a(t,e):a(t,e)||t.displayName||t.name}function a(t,e){var n=t.type;if("function"==typeof n){var r=n.__apiCheckData,i=n(e);n=o({__apiCheckData:r},r.type,i)}return n}function s(t){return t?Array.isArray(t)?t:[t]:[]}function d(t,e,n){return Array.isArray(t)?p(t,e,n):c(t,e,n)}function c(t,e,n){var o=void 0,r=Object.prototype.hasOwnProperty;for(var i in t)if(r.call(t,i)&&(o=e.call(n,t[i],i,t),o===!1))return o;return!0}function p(t,e,n){for(var o=void 0,r=t.length,i=0;in)return f(r,i,o)},{type:o},t)}function P(e){var n="lessThan["+e+"]";return h(function(t,o,r){if("number"!=typeof t||t>e)return f(o,r,n)},{type:n},t)}function k(e){var n="greaterThan["+e+"]";return h(function(t,o,r){if("number"!=typeof t||t" in it: '+t+"\nAdditional information: "+JSON.stringify(e))}var s=this;i.extend(this,{getFormlyError:o,getFieldError:n,checkWrapper:l,checkWrapperTemplate:a,$get:function(){return s}})}var r=function(t){return t&&t.__esModule?t.default:t},i=r(n(15));t.exports=o,o.$inject=["formlyApiCheck","formlyErrorAndWarningsUrlPrefix"]},function(t,e,n){"use strict";function o(t,e){function n(t){if(i.isArray(t))i.forEach(t,n);else{if(!i.isObject(t))throw P("You must provide an object or array for setType. You provided: "+JSON.stringify(arguments));o(t),t.extends&&r(t),_[t.name]=t}}function o(t){e.throw(e.formlyTypeOptions,t,{prefix:"formlyConfig.setType",url:"settype-validation-failed"}),t.overwriteOk?t.overwriteOk=void 0:h(t.name,_,t,"types")}function r(t){var e=u(t.extends,!0,t);s(t,e),d(t,e),c(t,e),p(t,e),l.reverseDeepMerge(t,e),a(t,e)}function a(t,e){t.template&&e.templateUrl?delete t.templateUrl:t.templateUrl&&e.template&&delete t.template}function s(t,e){var n=e.controller;if(i.isDefined(n)){var o=t.controller;i.isDefined(o)?(t.controller=function(t,e){e(n,{$scope:t}),e(o,{$scope:t})},t.controller.$inject=["$scope","$controller"]):t.controller=n}}function d(t,e){var n=e.link;if(i.isDefined(n)){var o=t.link;i.isDefined(o)?t.link=function(){n.apply(void 0,arguments),o.apply(void 0,arguments)}:t.link=n}}function c(t,e){var n=e.validateOptions;if(i.isDefined(n)){var o=t.validateOptions,r=t.defaultOptions;i.isDefined(o)?t.validateOptions=function(t){o(t);var e=i.copy(t),a=r;a&&(i.isFunction(a)&&(a=a(e)),l.reverseDeepMerge(e,a)),n(e)}:t.validateOptions=n}}function p(t,e){var n=e.defaultOptions;if(i.isDefined(n)){var o=t.defaultOptions,r=i.isFunction(o),a=i.isFunction(n);a?t.defaultOptions=function(t){var e=n(t),i={};l.reverseDeepMerge(i,t,e);var a=o;return r&&(a=a(i)),l.reverseDeepMerge(e,a),e}:r&&(t.defaultOptions=function(t){var e={};return l.reverseDeepMerge(e,t,n),o(e)})}}function u(t,e,n){if(t){var o=_[t];if(o||e!==!0)return o;throw P('There is no type by the name of "'+t+'": '+JSON.stringify(n))}}function f(t,e){for(var n=!0;n;){n=!1;var o=t,r=e;if(i.isArray(o))return o.map(function(t){return f(t)});if(i.isObject(o))return o.types=m(o),o.name=y(o,r),v(o),M[o.name]=o,o;i.isString(o)&&(t={template:o,name:r},n=!0)}}function m(t){return i.isString(t.types)?[t.types]:i.isDefined(t.types)?t.types:[]}function y(t,e){return t.name||e||t.types.join(" ")||w}function v(e){t.checkWrapper(e),e.template&&t.checkWrapperTemplate(e.template,e),e.overwriteOk?delete e.overwriteOk:h(e.name,M,e,"templateWrappers"),g(e)}function g(t){var e=!i.isArray(t.types)||!t.types.every(i.isString);if(e)throw P("Attempted to create a template wrapper with types that is not a string or an array of strings")}function h(t,e,n,o){e.hasOwnProperty(t)&&O(["Attempting to overwrite "+t+" on "+o+" which is currently",""+JSON.stringify(e[t])+" with "+JSON.stringify(n),'To supress this warning, specify the property "overwriteOk: true"'].join(" "))}function b(t){return M[t||w]}function C(t){var e=[];for(var n in M)M.hasOwnProperty(n)&&M[n].types&&M[n].types.indexOf(t)!==-1&&e.push(M[n]);return e}function x(t){var e=M[t];return delete M[t],e}function E(t){var e=C(t);if(e)return i.isArray(e)?(e.forEach(function(t){return x(t.name)}),e):x(e.name)}function O(){D.disableWarnings||console.warn.apply(console,arguments)}var T=this,_={},M={},w="default",D=this,P=t.getFormlyError;i.extend(this,{setType:n,getType:u,setWrapper:f,getWrapper:b,getWrapperByType:C,removeWrapperByName:x,removeWrappersForType:E,disableWarnings:!1,extras:{disableNgModelAttrsManipulator:!1,ngModelAttrsManipulatorPreferUnbound:!1,removeChromeAutoComplete:!1,defaultHideDirective:"ng-if",getFieldId:null},templateManipulators:{preWrapper:[],postWrapper:[]},$get:function(){return T}})}var r=function(t){return t&&t.__esModule?t.default:t},i=r(n(15)),l=r(n(18));t.exports=o,o.$inject=["formlyUsabilityProvider","formlyApiCheck"]},function(t,e,n){"use strict";function o(){function t(t,e,r,i,l){o.messages[t]=n(e,r,i,l)}function e(t,e){o.messages[t]=function(){return e}}function n(t,e,n,o){return function(r,i,l){return l.options.templateOptions[t]?""+e+" "+l.options.templateOptions[t]+" "+n:o}}var o={addTemplateOptionValueMessage:t,addStringMessage:e,messages:{}};return o}t.exports=o},function(t,e,n){"use strict";function o(){return i}var r=function(t){return t&&t.__esModule?t.default:t},i=r(n(18));t.exports=o},function(t,e,n){"use strict";function o(t,e,n){return function(){if(!t.disableWarnings){var o=Array.prototype.slice.call(arguments),i=o.shift();o.unshift("Formly Warning:"),o.push(""+e+i),n.warn.apply(n,r(o))}}}var r=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e\n \n ")}function a(){t.options.elementAttributes&&o.attr(t.options.elementAttributes)}function d(){t.options.className&&o.addClass(t.options.className),t.options.type&&o.addClass("formly-field-"+t.options.type)}function p(e){return o.html(f(e)),n(o.contents())(t),e}function u(e){function n(t){var e=/\{\{(.*?)}}/,n=e.exec(t);n?o(n[1]):l(t)}function o(e){t.$watch(e,function(t){t&&(d(),l(t))})}function l(e){d=t.$watch('form["'+e+'"]',function(e){e&&(t.fc=e,t.options.formControl=e,c(),a())})}function a(){c=t.$watch(function(){var e=r.extras.errorExistsAndShouldBeVisibleExpression,n=t.options,o=t.fc;if(o.$invalid){if("boolean"==typeof n.validation.show)return n.validation.show;if(e)return s.formlyEval(t,e,o.$modelValue,o.$viewValue);var l=i.isUndefined(o.$touched)&&o.$dirty;
+return t.fc.$touched||l}return!1},function(e){t.options.validation.errorExistsAndShouldBeVisible=e,t.showError=e})}var d=i.noop,c=i.noop;if(!t.options.noFormControl){var p=i.element(""+e+"
"),u=p[0].querySelector("[ng-model],[data-ng-model]");u&&u.getAttribute("name")&&n(u.getAttribute("name"))}}function v(){b&&b.link&&b.link.apply(E,C),t.options.link&&t.options.link.apply(E,C)}function h(n){return function(o){var r=e.when(o);return i.forEach(n,function(n){r=r.then(function(o){return e.when(n(o,t.options,t)).then(function(t){return i.isString(t)?t:f(t)})})}),r}}if(t.options.fieldGroup)return void l();a(),d();var b=m(t.options),C=arguments,E=this;y(t.options).then(h(r.templateManipulators.preWrapper)).then(g(t.options)).then(h(r.templateManipulators.postWrapper)).then(p).then(u).then(v).catch(function(e){c("there-was-a-problem-setting-the-template-for-this-field","There was a problem setting the template for this field ",t.options,e)})}function f(t){var e=i.element(" ");return e.append(t).html()}function m(t){return t.type&&r.getType(t.type)}function y(t){function e(e,n){return i.isDefined(t[e])?t[e]:n&&i.isDefined(n[e])?n[e]:void 0}var n=r.getType(t.type,!0,t),o=e("template",n),l=e("templateUrl",n);if(i.isUndefined(o)&&!l)throw d.getFieldError("type-type-has-no-template","Type '"+t.type+"' has not template. On element:",t);return v(l||o,i.isUndefined(o),t)}function v(n,r,l){var a=void 0;if(a=i.isFunction(n)?e.when(n(l)):e.when(n),!r)return a;var s=function(){var e={cache:o};return{v:a.then(function(n){return t.get(n,e)}).then(function(t){return t.data}).catch(function(t){c("problem-loading-template-for-templateurl","Problem loading template for "+n,t)})}}();return"object"==typeof s?s.v:void 0}function g(t){var n=b(t);return function(o){if(!n.length)return e.when(o);n.forEach(function(e){d.checkWrapper(e,t),e.validateOptions&&e.validateOptions(t),E(e,t)});var r=n.map(function(t){return v(t.template||t.templateUrl,!t.template)});return e.all(r).then(function(t){t.forEach(function(t,e){d.checkWrapperTemplate(t,n[e])}),t.reverse();var e=t.shift();return t.forEach(function(t){e=h(e,t)}),h(e,o)})}}function h(t,e){var n=i.element(" ");n.append(t);var o=n.find("formly-transclude");return o.length||(o=s.findByNodeName(n,"formly-transclude")),o.replaceWith(e),n.html()}function b(t){var e=t.wrapper;if(null===e)return[];e=e?O(e).map(r.getWrapper):O(r.getWrapperByType(t.type));var n=r.getType(t.type,!0,t);if(n&&n.wrapper){var o=O(n.wrapper).map(r.getWrapper);e=e.concat(o)}var i=r.getWrapper();return i&&e.push(i),e}function C(t){a.throw(a.formlyFieldOptions,t,{prefix:"formly-field directive",url:"formly-field-directive-validation-failed"});var e=t.type&&r.getType(t.type);e&&(e.validateOptions&&e.validateOptions(t),E(e,t))}function x(t){a.throw(a.fieldGroup,t,{prefix:"formly-field directive",url:"formly-field-directive-validation-failed"})}function E(t,e){var n=t.apiCheck,o=t.apiCheckInstance,r=t.apiCheckFunction,i=t.apiCheckOptions;if(n){var l=o||a,s=r||"warn",d=l.shape(n);l[s](d,e,i||{prefix:"formly-field "+name,url:a.config.output.docsBaseUrl+"formly-field-type-apicheck-failed"})}}var O=s.arrayify;return p.$inject=["$scope","$timeout","$parse","$controller"],{restrict:"AE",transclude:!0,scope:{options:"=",model:"=",formId:"@",index:"=?",fields:"=?",formState:"=?",form:"=?"},controller:p,link:u}}var r=function(t){return t&&t.__esModule?t.default:t},i=r(n(15));t.exports=o,o.$inject=["$http","$q","$compile","$templateCache","formlyConfig","formlyValidationMessages","formlyApiCheck","formlyUtil","formlyUsability","formlyWarn"]},function(t,e,n){"use strict";function o(t,e){return{restrict:"A",link:function(n,o,r){var i=null,l=o[0],a=e[0];r.$observe("formlyFocus",function(e){"true"===e?t(function(){i=a.activeElement,l.focus()},~~r.focusWait):"false"===e&&a.activeElement===l&&(l.blur(),r.hasOwnProperty("refocus")&&i&&i.focus())})}}}t.exports=o,o.$inject=["$timeout","$document"]},function(t,e,n){"use strict";function o(t,e,n,o){var r=1;return{restrict:"E",template:function(e,n){function i(){return n.rootEl||"ng-form"}function l(){return n.fieldRootEl||"div"}function s(){return n.hideDirective||o.extras.defaultHideDirective||"ng-if"}function d(){return n.trackBy?"track by "+n.trackBy:""}function c(){var e=y,o=n.bindName;if(o){if(a.version.minor<3)throw t.getFormlyError("bind-name attribute on formly-form not allowed in > angular 1.3");e="{{::'formly_' + "+o+"}}"}return e}function p(t){var e=["model","form","fields","options","name","role","class"],n=[];return a.forEach(t,function(t){var o=t.nodeName,r=t.nodeValue;"undefined"!==o&&e.indexOf(o)===-1&&n.push(""+u(o)+'="'+r+'"')}),n.join(" ")}function u(t){return t?t.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()}):""}var f=i(),m=l(),y="formly_"+r++,v="";return n.hasOwnProperty("isFieldGroup")&&e.parent().parent().hasClass("formly")&&(v=p(e.parent().parent()[0].attributes)),"\n <"+f+' class="formly"\n name="'+c()+'"\n role="form" '+v+">\n <"+m+' formly-field\n ng-repeat="field in fields '+d()+'"\n '+s()+'="!field.hide"\n class="formly-field"\n options="field"\n model="field.model || model"\n fields="fields"\n form="theFormlyForm"\n form-id="'+c()+'"\n form-state="options.formState"\n index="$index">\n '+m+">\n
\n "+f+">\n "},replace:!0,transclude:!0,scope:{fields:"=",model:"=",form:"=?",options:"=?"},controller:["$scope","formlyUtil",function(e,o){function r(){a.forEach(e.fields,function(t,n){var r=t.model||e.model;if(t.runExpressions&&t.runExpressions(r),t.hideExpression){var i=r[t.key],l={options:t,index:n,formState:e.options.formState,formId:e.formId};t.hide=o.formlyEval(e,t.hideExpression,i,i,l)}})}function s(){n.throw([n.formOptionsApi.optional],[e.options],{prefix:"formly-form options check"}),e.options=e.options||{},e.options.formState=e.options.formState||{},a.extend(e.options,{updateInitialValue:d,resetModel:c})}function d(){a.forEach(e.fields,function(t){g(t)?t.options.updateInitialValue():t.updateInitialValue()})}function c(){a.forEach(e.fields,function(t){g(t)?t.options.resetModel():t.resetModel()})}function p(t){t.model&&"formState"===t.model&&(t.model=e.options.formState)}function u(t,e){g(t)||(t.key=t.key||e||0)}function f(n,o){if(!g(n)&&a.isDefined(n.watcher)){var r=n.watcher;a.isArray(r)||(r=[r]),a.forEach(r,function(r){if(!a.isDefined(r.listener))throw t.getFieldError("all-field-watchers-must-have-a-listener","All field watchers must have a listener",n);var i=m(r,n,o),l=y(r,n,o),s=r.type||"$watch";r.stopWatching=e[s](i,l,r.watchDeep)})}}function m(t,e,n){var o=t.expression||"model['"+e.key+"']";if(a.isFunction(o)){var r=o;o=function(){var e=v.apply(void 0,[t,n].concat(l.call(arguments)));return r.apply(void 0,i(e))},o.displayName="Formly Watch Expression for field for "+e.key}return o}function y(t,e,n){var o=t.listener;if(a.isFunction(o)){var r=o;o=function(){var e=v.apply(void 0,[t,n].concat(l.call(arguments)));return r.apply(void 0,i(e))},o.displayName="Formly Watch Listener for field for "+e.key}return o}function v(t,n){for(var o=arguments.length,r=Array(o>2?o-2:0),i=2;i ";var o=1===n.getElementsByTagName("i").length;if(o){var r=["formly-field","formly-form","formly-custom-validation","formly-focus","formly-transpose"];angular.forEach(r,function(t){e.createElement(t)})}}()}t.exports=o,o.$inject=["$document"]},function(t,e,n){"use strict";var o=function(t){return t&&t.__esModule?t.default:t},r=o(n(17));r.version||(r=window.angular),t.exports=r},function(e,n,o){e.exports=t},function(t,n,o){t.exports=e},function(t,e,n){"use strict";function o(t,e,n,o,r){return p.isFunction(e)?e(o,n,t,r):t.$eval(e,p.extend({$viewValue:o,$modelValue:n},r))}function r(t,e,n){if(e.id)return e.id;var o=e.type;return!o&&e.template?o="template":!o&&e.templateUrl&&(o="templateUrl"),[t,o,e.key,n].join("_")}function i(t){p.forEach(arguments,function(e,n){n&&p.forEach(e,function(e,n){p.isDefined(t[n])?l(t[n],e)&&i(t[n],e):t[n]=p.copy(e)})})}function l(t,e){return p.isObject(t)&&p.isObject(e)&&Object.getPrototypeOf(t)===Object.getPrototypeOf(e)}function a(t,e){if(t.prop||(t=p.element(t)),t.prop("nodeName")===e.toUpperCase())return t;for(var n=t.children(),o=0;n&&o0&&e;t.fc.$setValidity("required",n)}function n(){t.model[r.key]=[],angular.forEach(t.multiCheckbox.checked,function(e,n){e&&t.model[r.key].push(o.options[n][o.valueProp||"value"])}),t.fc.$setTouched(),e(!0)}var o=t.to,r=t.options;t.multiCheckbox={checked:[],change:n};var i=t.model[r.key];if(angular.isArray(i)&&!function(){var e=o.valueProp||"value";angular.forEach(o.options,function(n,o){t.multiCheckbox.checked[o]=i.indexOf(n[e])!==-1})}(),r.expressionProperties&&r.expressionProperties.required&&t.$watch(t.options.expressionProperties.required,function(t){e(t)}),t.to.required){t.$watch("fc",function(t){t&&e(!0)})}}]})}t.config(e),e.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},t.exports=e.default},function(e,n,o){e.exports=t},function(t,n,o){t.exports=e},function(t,e,n){"use strict";var o=n(8);o.version||(o=window.angular),t.exports=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){function e(t,e){var o=e;t.setWrapper([{name:"bootstrapLabel",template:n(17),apiCheck:{templateOptions:o.shape({label:o.string,required:o.bool.optional})},apiCheckInstance:o},{name:"bootstrapHasError",template:n(18)}])}t.config(e),e.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},t.exports=e.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){n(10)(t),n(1)(t),n(12)(t),n(9)(t),n(13)(t),n(14)(t)},t.exports=e.default},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=n(15),i=o(r),l=n(16),a=o(l);e.default=function(t){(0,i.default)(t),(0,a.default)(t)},t.exports=e.default},function(t,e,o){t.exports=n},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){function e(t,e){var o=e;t.setType({name:"radio",template:n(19),wrapper:["bootstrapLabel","bootstrapHasError"],defaultOptions:{noFormControl:!1},apiCheck:{templateOptions:o.shape({options:o.arrayOf(o.object),labelProp:o.string.optional,valueProp:o.string.optional})},apiCheckInstance:o})}t.config(e),e.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},t.exports=e.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){function e(t,e){var o=e;t.setType({name:"checkbox",template:n(20),wrapper:["bootstrapHasError"],apiCheck:{templateOptions:o.shape({label:o.string})},apiCheckInstance:o})}t.config(e),e.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},t.exports=e.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o="formlyBootstrap",r=n(4),i=r.module(o,[n(2)]);i.constant("formlyBootstrapApiCheck",n(3)({output:{prefix:"angular-formly-bootstrap"}})),i.constant("formlyBootstrapVersion","4.3.2"),n(5)(i),n(6)(i),n(7)(i),e.default=o,t.exports=e.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){function e(t){t.setType({name:"input",template:' ',wrapper:["bootstrapLabel","bootstrapHasError"]})}t.config(e),e.$inject=["formlyConfigProvider"]},t.exports=e.default},function(t,e,n){"use strict";function o(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0})}Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){function e(t,e){var r=e;t.setType({name:"select",template:n,wrapper:["bootstrapLabel","bootstrapHasError"],defaultOptions:function(t){var e=t.templateOptions.ngOptions||"option[to.valueProp || 'value'] as option[to.labelProp || 'name'] group by option[to.groupProp || 'group'] for option in to.options";return{ngModelAttrs:o({},e,{value:"ng-options"})}},apiCheck:{templateOptions:r.shape({options:r.arrayOf(r.object),labelProp:r.string.optional,valueProp:r.string.optional,groupProp:r.string.optional})},apiCheckInstance:r})}t.config(e);var n=' ';e.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},t.exports=e.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){function e(t,e){var n=e;t.setType({name:"textarea",template:'',wrapper:["bootstrapLabel","bootstrapHasError"],defaultOptions:{ngModelAttrs:{rows:{attribute:"rows"},cols:{attribute:"cols"}}},apiCheck:{templateOptions:n.shape({rows:n.number.optional,cols:n.number.optional})},apiCheckInstance:n})}t.config(e),e.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},t.exports=e.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){function e(t,e){var o=n(22),r=e.shape({class:e.string.optional,text:e.string.optional,onClick:e.func.optional}).strict.optional,i=e.shape({templateOptions:e.shape({addonLeft:r,addonRight:r})});t.templateManipulators.preWrapper.push(function(t,n){return n.templateOptions.addonLeft||n.templateOptions.addonRight?(e.warn([i],[n]),o.replace(" ",t)):t})}t.run(e),e.$inject=["formlyConfig","formlyBootstrapApiCheck"]},t.exports=e.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){function e(t){t.templateManipulators.preWrapper.push(function(t,e,n){if(angular.isDefined(e.templateOptions.description)){var o=document.createElement("div");o.appendChild(angular.element(t)[0]),o.appendChild(angular.element('{{to.description}}
')[0]);var r=angular.element(o.querySelectorAll("[ng-model]"));return r&&r.attr("aria-describedby",n.id+"_description"),o.innerHTML}return t})}t.run(e),e.$inject=["formlyConfig"]},t.exports=e.default},function(t,e,n){t.exports="\n \n {{to.label}}\n {{to.required ? '*' : ''}}\n \n \n
\n"},function(t,e,n){t.exports='\n \n
\n'},function(t,e,n){t.exports='\n
\n \n \n {{option[to.labelProp || \'name\']}}\n \n
\n
\n'},function(t,e,n){t.exports='\n\t\n\t\t \n\t\t{{to.label}}\n\t\t{{to.required ? \'*\' : \'\'}}\n\t \n
\n'},function(t,e,n){t.exports='\n
\n \n \n {{option[to.labelProp || \'name\']}}\n \n
\n
\n'},function(t,e,n){t.exports='\n
\n \n {{to.addonLeft.text}} \n
\n
\n
\n \n {{to.addonRight.text}} \n
\n
\n'}])})},function(t,e){},,,,function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=n(11),i=o(r),l=n(12),a=o(l),s=n(14),d=o(s),c=n(15),p=o(c),u=n(49),f=o(u),m=n(53),y=o(m),v=n(67),g=o(v),h=n(70),b=o(h),C=n(72),x=o(C),E=n(75),O=o(E),T=n(77),_=o(T),M=n(84),w=o(M),D="eda.easyformGen.dragDropWay",P=[d.default.name,b.default.name,w.default.name,p.default.name,f.default.name,y.default.name,_.default.name,g.default.name,x.default.name,O.default.name],k=angular.module(D,P).config(a.default).config(i.default).value(l.EASY_FORM_DD_VERSION_NAME,l.EASY_FORM_DD_VERSION_VALUE);e.default=k},function(t,e){"use strict";function n(t,e,n){function o(t){return t=t.replace(/[\-_\s]+(.)?/g,function(t,e){return e?e.toUpperCase():""}),t.replace(/^([A-Z])/,function(t,e){return e?e.toLowerCase():""})}t.setType({name:"blank",template:"
"}),e.addEasyFormControlToList({id:"empty",name:"no control",subtitle:"no control",group:"Blank",formlyType:"blank",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[]}),n.addControlToDragDropPresentationModel({label:'',control:"empty",cssClass:"col-xs-12"},{addToGroupCtrl:"blank"}),e.addEasyFormControlToList({id:"Header",name:"Header",subtitle:"no control",group:"Decoration",formlyType:"header",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[]}),n.addControlToDragDropPresentationModel({label:[''].join(""),control:"Header",cssClass:"col-xs-12"},{addToGroupCtrl:"headers"});var r='\n \n
\n
{{options.templateOptions.placeholder}}\n \n \n
';t.setType({name:"subTitle",template:r}),e.addEasyFormControlToList({id:"Subtitle",name:"Subtitle",subtitle:"no control",group:"Decoration",formlyType:"subTitle",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[]}),n.addControlToDragDropPresentationModel({label:'',control:"Subtitle",cssClass:"col-xs-12"},{addToGroupCtrl:"headers"}),e.addEasyFormControlToList({id:"TextInput",name:"Text input",subtitle:"Text input",group:"input",formlyType:"input",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[]}),n.addControlToDragDropPresentationModel({label:'',control:"TextInput",cssClass:"col-xs-12"},{addToGroupCtrl:"inputs"}),e.addEasyFormControlToList({id:"Password",name:"Password",subtitle:"Password",group:"input",formlyType:"input",formlySubtype:"password",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[]}),n.addControlToDragDropPresentationModel({label:'',control:"Password",cssClass:"col-xs-12"},{addToGroupCtrl:"inputs"});var i=["date-disabled","custom-class","show-weeks","starting-day","init-date","min-mode","max-mode","format-day","format-month","format-year","format-day-header","format-day-title","format-month-title","year-range","shortcut-propagation","uib-datepicker-popup","show-button-bar","current-text","clear-text","close-text","close-on-date-selection","datepicker-append-to-body"],l=["datepicker-mode","min-date","max-date"],a={};angular.forEach(i,function(t){return a[o(t)]={attribute:t}}),angular.forEach(l,function(t){return a[o(t)]={bound:t}});var s='\n ';t.setType({name:"datepicker",template:s,wrapper:["bootstrapLabel","bootstrapHasError"],controller:["$scope",function(t){t.open=function(e){e.preventDefault(),e.stopPropagation(),t.opened=!0}}],defaultOptions:{ngModelAttrs:a,templateOptions:{addonLeft:{class:"glyphicon glyphicon-calendar",onClick:function(t){return t.templateOptions.isOpen=!t.templateOptions.isOpen}},onFocus:function(t,e,n){return n.to.isOpen=!n.to.isOpen},datepickerOptions:{}}}}),e.addEasyFormControlToList({id:"Date",name:"Date",subtitle:"Date",group:"input",formlyType:"datepicker",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[],datepickerPopup:"dd-MMMM-yyyy"}),n.addControlToDragDropPresentationModel({label:'\n ',control:"Date",cssClass:"col-xs-12"},{addToGroupCtrl:"inputs"}),e.addEasyFormControlToList({id:"Texarea",name:"Textarea",subtitle:"Textarea",group:"Textarea",formlyType:"textarea",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[]}),n.addControlToDragDropPresentationModel({label:'\n ',control:"Texarea",cssClass:"col-xs-12"},{addToGroupCtrl:"textareas"});var d='\n \n ';t.setType({name:"richEditor",template:d}),e.addEasyFormControlToList({id:"RichTextEditor",name:"RichTextEditor",subtitle:"RichTextEditor",group:"Textarea",formlyType:"richEditor",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[]}),n.addControlToDragDropPresentationModel({label:'\n ',control:"RichTextEditor",cssClass:"col-xs-12"},{addToGroupCtrl:"textareas"}),e.addEasyFormControlToList({id:"Radio",name:"Radio",subtitle:"Radio",options:[],group:"Radio",formlyType:"radio",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[]}),n.addControlToDragDropPresentationModel({label:'\n ',control:"Radio",cssClass:"col-xs-12"},{addToGroupCtrl:"radios"}),e.addEasyFormControlToList({id:"Checkbox",name:"Checkbox",subtitle:"Checkbox",group:"Checkbox",formlyType:"checkbox",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[]}),n.addControlToDragDropPresentationModel({label:'\n \n
\n \n \n \t\tlabel for checkbox \n \t\t* \n \n
\n
description
\n
',
+control:"Checkbox",cssClass:"col-xs-12"},{addToGroupCtrl:"checkboxes"});var c='\n \n \n {{option.name}} \n \n ';t.setType({name:"basicSelect",template:c}),e.addEasyFormControlToList({id:"BasicSelect",name:"Basic select",subtitle:"Basic select",options:[],group:"Select",formlyType:"basicSelect",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[]}),n.addControlToDragDropPresentationModel({label:'\n \n
',control:"BasicSelect",cssClass:"col-xs-12"},{addToGroupCtrl:"selects"});var p='\n
\n \n \n \n {{option.name}} \n \n \n \n ';t.setType({name:"groupedSelect",template:p}),e.addEasyFormControlToList({id:"GroupedSelect",name:"Grouped Select",subtitle:"Grouped Select",options:[],group:"Select",formlyType:"groupedSelect",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[]}),n.addControlToDragDropPresentationModel({label:'\n
\n
',control:"GroupedSelect",cssClass:"col-xs-12"},{addToGroupCtrl:"selects"})}Object.defineProperty(e,"__esModule",{value:!0}),n.$inject=["formlyConfigProvider","EasyFormGenFormlyBindingModelsProvider","easyFormDragWayConfigProvider"],e.default=n},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(t){t.setItemsNotTocount({itemBeingDragged:"dndDraggingSource"})}Object.defineProperty(e,"__esModule",{value:!0}),e.EASY_FORM_DD_VERSION_VALUE=e.EASY_FORM_DD_VERSION_NAME=void 0;var i=n(13),l=o(i),a="easyFormGenVersion",s=l.default.dragdropway.version;r.$inject=["easyFormDragWayConfigProvider"],e.default=r,e.EASY_FORM_DD_VERSION_NAME=a,e.EASY_FORM_DD_VERSION_VALUE=s},function(t,e){t.exports={stepway:{version:"2.1.4"},dragdropway:{version:"2.1.4"},formviewer:{version:"2.1.4"}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=["textAngular","textAngularSetup","ngAnimate","toaster","formly","formlyBootstrap","ui.bootstrap","nya.bootstrap.select","mgcrea.ngStrap.affix"];e.default=angular.module("easyFormGen.dragDropWay.core",n)},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=n(16),i=o(r),l=n(18),a=o(l),s=n(20),d=o(s),c=n(22),p=o(c),u=n(23),f=o(u),m=n(25),y=o(m),v=n(27),g=o(v),h=n(29),b=o(h),C=n(31),x=o(C),E=n(33),O=o(E),T=n(35),_=o(T),M=n(37),w=o(M),D=n(39),P=o(D),k=n(41),R=o(k),F=n(43),I=o(F),L=n(45),A=o(L),S=n(47),N=o(S),$="edaDragDropWay.leftPanel.module";e.default=angular.module($,[]).directive(l.LEFT_PANEL_DIRECTIVE,a.default).controller(r.LEFT_PANEL_CONTROLLER,i.default).service(s.LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE,d.default).service(c.CONTROLLER_MODAL_PROXY,p.default).directive(u.LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE,f.default).directive(m.LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE,y.default).directive(v.LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE,g.default).directive(h.LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE,b.default).directive(C.LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE,x.default).directive(E.LEFT_PANEL_RADIO_CONTROL_DIRECTIVE,O.default).directive(T.LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE,_.default).directive(M.LEFT_PANEL_HEADER_CONTROL_DIRECTIVE,w.default).directive(D.LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE,P.default).directive(k.LEFT_PANEL_DATE_CONTROL_DIRECTIVE,R.default).directive(F.LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE,I.default).directive(L.LEFT_PANEL_BLANK_CONTROL_DIRECTIVE,A.default).directive(S.LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE,N.default)},function(t,e,n){"use strict";function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_CONTROLLERAS=e.LEFT_PANEL_CONTROLLER=void 0;var r=function(){function t(t,e){for(var n=0;n
=0;t--)this.proxyModel.controls[t].id===this.proxyModel.temporyConfig.selectedControl&&(this.modelproxyModel=this.proxyModel.controls[t]);"BasicSelect"===this.proxyModel.temporyConfig.selectedControl&&this.controllerModalProxy.bindBasicSelectFromProxyModel(self.basicSelectRowCollection),"GroupedSelect"===this.proxyModel.temporyConfig.selectedControl&&this.controllerModalProxy.bindGroupedSelectFromProxyModel(this.groupedSelectRowCollection,this.GroupedSelectGroups),"Radio"===this.proxyModel.temporyConfig.selectedControl&&this.controllerModalProxy.bindRadioFromProxyModel(this.radioRowCollection)}}},{key:"updateSpecialControl",value:function(){return this.proxyModel.basicSelectRowCollection=this.basicSelectRowCollection,this.proxyModel.newOptionBasicSelect=this.newOptionBasicSelect,this.proxyModel.groupedSelectRowCollection=this.groupedSelectRowCollection,this.proxyModel.newOptionGroupedSelect=this.newOptionGroupedSelect,this.proxyModel.GroupedSelectGroups=this.GroupedSelectGroups,this.proxyModel.newGroupGroupedSelect=this.newGroupGroupedSelect,this.proxyModel.groupSelectGroupClick=this.groupSelectGroupClick,this.proxyModel.radioRowCollection=this.radioRowCollection,this.proxyModel.newOptionRadio=this.newOptionRadio,this.controllerModalProxy.bindSpecialCtrlTemporyModelsToProxyModel(),!0}},{key:"resetTemporyConfig",value:function(){this.proxyModel.temporyConfig={formlyLabel:"",formlyRequired:!1,formlyPlaceholder:"",formlyDescription:"",formlyOptions:[]}}},{key:"resetControl",value:function(){this.proxyModel.temporyConfig.formlyLabel="",this.proxyModel.temporyConfig.formlyRequired=!1,this.proxyModel.temporyConfig.formlyPlaceholder="",this.proxyModel.temporyConfig.formlyDescription="",this.proxyModel.temporyConfig.formlyOptions=[],this.proxyModel.temporyConfig.datepickerPopup=this.initDatePicker()}},{key:"initDatePicker",value:function(){this.proxyModel.temporyConfig.datepickerPopup=this.demodt.formats[0]}},{key:"selectThisControl",value:function(t){this.proxyModel.selectedControl="none",this.resetTemporyConfig();for(var e=this.proxyModel.controls.length-1;e>=0;e--)this.proxyModel.controls[e].id===t&&(this.proxyModel.selectedControl=this.proxyModel.controls[e].id);"Date"===this.proxyModel.selectedControl&&this.initDatePicker()}},{key:"addNewOptionRadio",value:function(){var t=this.$selectOptionMange.addNewOptionRadio(this.radioRowCollection,this.newOptionRadio.saisie);t.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:t.details,body:"'"+this.newOptionRadio.saisie+"' cannot be added.",showCloseButton:!0}),this.newOptionRadio={saisie:""}}},{key:"removeRadioRow",value:function(t){var e=this.$selectOptionMange.removeOption(this.radioRowCollection,t);e.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:e.details,body:"Delete was cancelled.",showCloseButton:!0})}},{key:"upThisRadioRow",value:function(t){var e=this.$selectOptionMange.upthisOption(this.radioRowCollection,t);e.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:e.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"downThisRadioRow",value:function(t){var e=this.$selectOptionMange.downthisOption(this.radioRowCollection,t);e.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:e.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"addNewOptionBasicSelect",value:function(){var t=this.$selectOptionMange.addNewOptionBasicSelect(this.basicSelectRowCollection,this.newOptionBasicSelect.saisie);t.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:t.details,body:"'"+this.newOptionBasicSelect.saisie+"' cannot be added.",showCloseButton:!0}),this.newOptionBasicSelect={saisie:""}}},{key:"removeRow",value:function(t){var e=this.$selectOptionMange.removeOption(this.basicSelectRowCollection,t);e.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:e.details,body:"Delete was cancelled.",showCloseButton:!0})}},{key:"upThisRow",value:function(t){var e=this.$selectOptionMange.upthisOption(this.basicSelectRowCollection,t);e.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:e.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"downThisRow",value:function(t){var e=this.$selectOptionMange.downthisOption(this.basicSelectRowCollection,t);e.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:e.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"showGroupListToChoose",value:function(){this.groupSelectGroupClick.showList=!this.groupSelectGroupClick.showList}},{key:"addNewGroupToGroupedSelect",value:function(){if(""!==this.newGroupGroupedSelect.saisie){for(var t=this.GroupedSelectGroups.list.length-1;t>=0;t--)this.GroupedSelectGroups.list[t]===this.newGroupGroupedSelect.saisie&&this.toaster.pop({type:"warning",timeout:2e3,title:"Group already exists",body:"No group added.",showCloseButton:!0});this.GroupedSelectGroups.list.push(this.newGroupGroupedSelect.saisie)}else this.toaster.pop({type:"warning",timeout:2e3,title:"Not a valid group to add",body:"No group added.",showCloseButton:!0});this.newGroupGroupedSelect.saisie=""}},{key:"addNewOptionGroupedSelect",value:function(){var t=this.$selectOptionMange.addNewOptionGroupedSelect(this.groupedSelectRowCollection,this.newOptionGroupedSelect.saisie,"");t.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:t.details,body:"'"+this.newOptionGroupedSelect.saisie+"' cannot be added.",showCloseButton:!0}),this.newOptionGroupedSelect={saisie:""}}},{key:"removeGroupedSelectRow",value:function(t){var e=this.$selectOptionMange.removeOption(this.groupedSelectRowCollection,t);e.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:e.details,body:"Delete was cancelled.",showCloseButton:!0})}},{key:"upThisGroupedSelectRow",value:function(t){var e=this.$selectOptionMange.upthisOption(this.groupedSelectRowCollection,t);e.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:e.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"downThisGroupedSelectRow",value:function(t){var e=this.$selectOptionMange.downthisOption(this.groupedSelectRowCollection,t);e.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:e.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"today",value:function(){(0,i.setToday)(this.demodt)}},{key:"clear",value:function(){(0,i.clearDateTime)(this.demodt)}},{key:"open",value:function(t){t.preventDefault(),t.stopPropagation(),this.demodt.opened=!0}}]),t}();s.$inject=["toaster","$timeout","$selectOptionMange","controllerModalProxy"],e.default=s,e.LEFT_PANEL_CONTROLLER=l,e.LEFT_PANEL_CONTROLLERAS=a},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=["dd-MMMM-yyyy","yyyy/MM/dd","dd.MM.yyyy","shortDate"],o=function(t){t.dt=new Date},r=function(t){t.dt=new Date};e.dateFormats=n,e.setToday=o,e.clearDateTime=r},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(){var t={restrict:"E",template:a.default,scope:{},controller:i.LEFT_PANEL_CONTROLLER,controllerAs:i.LEFT_PANEL_CONTROLLERAS,bindToController:{closeEditPanel:"&",selectedControl:"&",saveFromEditPanel:"&"}};return t}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_DIRECTIVE=void 0;var i=n(16),l=n(19),a=o(l),s="leftPanel";r.$inject=[],e.default=r,e.LEFT_PANEL_DIRECTIVE=s},function(t,e){t.exports='\n\t
\n\t\t\n\t\t\t\n ×\n \n\t\t \n\t
\n\t
\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n \n \n Select a control\n \n\t\t\t\t\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t\t
\n\t\t\t \n\t\t
\n\t
\n\t
\n Close\n \n
\n'},function(t,e,n){"use strict";function o(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE=void 0;var i=function(){function t(t,e){for(var n=0;n=0;n--)if(t.rows[n].option===e)return!1;return!0}},{key:"isOptionValidFormat",value:function(t){return""!==t}},{key:"addNewOptionRadio",value:function(t,e){var n={resultFlag:!1,details:""},o=a.validOption(t,e);if(o.resultFlag===!0){var r={option:e,order:t.rows.length};return t.rows.push(r),n.resultFlag=!0,n.details="",n}return angular.copy(o,n),n}},{key:"addNewOptionBasicSelect",value:function(t,e){var n={resultFlag:!1,details:""},o=a.validOption(t,e);if(o.resultFlag===!0){var r={option:e,order:t.rows.length};return t.rows.push(r),n.resultFlag=!0,n.details="",n}return angular.copy(o,n),n}},{key:"addNewOptionGroupedSelect",value:function(t,e,n){var o={resultFlag:!1,details:""},r=a.validOption(t,e);if(r.resultFlag===!0){var i={option:e,group:n,order:t.rows.length};return t.rows.push(i),o.resultFlag=!0,o.details="",o}return angular.copy(r,o),o}},{key:"removeOption",value:function(t,e){var n={resultFlag:!1,details:""};return e!==-1?(t.rows.splice(e,1),n.resultFlag=!0,n.details="",n):(n.resultFlag=!1,n.details="Option index not valid",n)}},{key:"upthisOption",value:function(t,e){var n={resultFlag:!1,details:""};if(e>-1){if(e>0){if(t.rows[e-1]){var o=t.rows[e];return t.rows.splice(e,1),t.rows.splice(e-1,0,o),n.resultFlag=!0,n.details="",n}return n.resultFlag=!1,n.details="Can't retreive option from option index",n}return n.resultFlag=!0,n.details="",n}return n.resultFlag=!1,n.details="Option index not valid",n}},{key:"downthisOption",value:function(t,e){var n={resultFlag:!1,details:""};if(e>-1){if(e=0;o--)if(t.rows[o].option===e)return n.resultFlag=!1,n.details="Entered option is not unique",n;return n.resultFlag=!0,n.details="",n}return n.resultFlag=!1,n.details="Entered option is empty",n};e.resetModel=n,e.validOption=o},function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n=0;n--)t.selectedControl===t.controls[n].id&&(e.selectedControl=t.selectedControl,e.formlyType=t.controls[n].formlyType,e.formlySubtype=t.controls[n].formlySubtype,e.formlyLabel=t.controls[n].formlyLabel,e.formlyRequired=t.controls[n].formlyRequired,e.formlyDescription=t.controls[n].formlyDescription,e.formlyPlaceholder=t.controls[n].formlyPlaceholder,e.formlyOptions=t.controls[n].formlyOptions,"datepicker"===t.controls[n].formlyType&&(e.datepickerPopup=t.controls[n].datepickerPopup));return e}},{key:"validKeyUniqueness",value:function(t,e){for(var n=!0,o=e.lines.length-1;o>=0;o--)for(var r=e.lines[o].columns.length-1;r>=0;r--)e.lines[o].columns[r].control.key===t&&(n=!1);return n}},{key:"getSelectedProxyModel",value:function(t){var e="none",n=angular.copy(this.EasyFormGenFormlyBindingModels.getEasyFormListControls().controls);return n.forEach(function(n){if(n.formlyType===t.type&&n.formlySubtype===t.subtype)return e=n.id}),e}},{key:"bindConfigurationModelFromProxyModel",value:function(t,e,n){var o=angular.copy(this.proxyModel.temporyConfig);n.lines[t].columns[e].control.selectedControl=o.selectedControl,n.lines[t].columns[e].control.type=o.formlyType,n.lines[t].columns[e].control.subtype=o.formlySubtype,n.lines[t].columns[e].control.templateOptions={label:"",required:!1,description:"",placeholder:"",options:[]},n.lines[t].columns[e].control.templateOptions.label=o.formlyLabel,n.lines[t].columns[e].control.templateOptions.required=o.formlyRequired,n.lines[t].columns[e].control.templateOptions.description=o.formlyDescription,n.lines[t].columns[e].control.templateOptions.placeholder=o.formlyPlaceholder,n.lines[t].columns[e].control.templateOptions.options=o.formlyOptions,"datepicker"===n.lines[t].columns[e].control.type&&(n.lines[t].columns[e].control.templateOptions.datepickerPopup=o.datepickerPopup);var r=n.lines[t].columns[e].control.type+"-"+Date.now();this.validKeyUniqueness(r,n)===!0?n.lines[t].columns[e].control.key=r:(r=n.lines[t].columns[e].control.type+"-"+Date.now(),this.validKeyUniqueness(r,n)===!0?n.lines[t].columns[e].control.key=r:r=n.lines[t].columns[e].control.type+"-"+Date.now()),n.lines[t].columns[e].control.edited=!0}},{key:"setProxyModelFromConfigurationSelection",value:function(t,e,n){return"undefined"!=typeof t.lines[e].columns[n].control&&(this.proxyModel.selectedControl="undefined"!=typeof t.lines[e].columns[n].control.type?this.getSelectedProxyModel(t.lines[e].columns[n].control):"none",this.proxyModel.temporyConfig.selectedControl="undefined"!=typeof t.lines[e].columns[n].control.type?this.getSelectedProxyModel(t.lines[e].columns[n].control):"none",this.proxyModel.temporyConfig.formlyType="undefined"!=typeof t.lines[e].columns[n].control.type?t.lines[e].columns[n].control.type:"none",this.proxyModel.temporyConfig.formlySubtype="undefined"!=typeof t.lines[e].columns[n].control.subtype?t.lines[e].columns[n].control.subtype:"none",this.proxyModel.temporyConfig.formlyLabel="undefined"!=typeof t.lines[e].columns[n].control.templateOptions.label?t.lines[e].columns[n].control.templateOptions.label:"",this.proxyModel.temporyConfig.formlyRequired="undefined"!=typeof t.lines[e].columns[n].control.templateOptions.required?t.lines[e].columns[n].control.templateOptions.required:"",this.proxyModel.temporyConfig.formlyDescription="undefined"!=typeof t.lines[e].columns[n].control.templateOptions.description?t.lines[e].columns[n].control.templateOptions.description:"",this.proxyModel.temporyConfig.formlyPlaceholder="undefined"!=typeof t.lines[e].columns[n].control.templateOptions.placeholder?t.lines[e].columns[n].control.templateOptions.placeholder:"",this.proxyModel.temporyConfig.formlyOptions="undefined"!=typeof t.lines[e].columns[n].control.templateOptions.options?t.lines[e].columns[n].control.templateOptions.options:"","Date"===this.proxyModel.temporyConfig.selectedControl&&(this.proxyModel.temporyConfig.datepickerPopup="undefined"!=typeof t.lines[e].columns[n].control.templateOptions.datepickerPopup?t.lines[e].columns[n].control.templateOptions.datepickerPopup:"")),this.proxyModel}},{key:"getProxyModel",value:function(){return this.proxyModel}},{key:"getEditPanelModelAllModel",value:function(){return this.editPanelModel}},{key:"setEditPanelModelControl",value:function(t){var e=!1;return"undefined"!=typeof t&&(angular.merge(this.editPanelModel,t),e=!0),e}},{key:"getEditPanelModelColumnIndex",value:function(){return this.editPanelModel.columnIndex}},{key:"setEditPanelModelColumnIndex",value:function(t){var e=!1;return"undefined"!=typeof t&&(this.editPanelModel.columnIndex=t,e=!0),e}},{key:"getEditPanelModelLineIndex",value:function(){return this.editPanelModel.lineIndex}},{key:"setEditPanelModelLineIndex",value:function(t){var e=!1;return"undefined"!=typeof t&&(this.editPanelModel.lineIndex=t,e=!0),e}},{key:"getEditPanelModelControl",value:function(){return this.editPanelModel.control}},{key:"getEditPanelModelToggle",value:function(){return this.editPanelModel.toggle}},{key:"setEditPanelModelToggle",value:function(t){var e=!1;return"undefined"!=typeof t&&(this.editPanelModel.toggle=t,e=!0),e}},{key:"resetAllTemporyModels",value:function(){return this.basicSelectRowCollection=angular.copy(i),this.newOptionBasicSelect=angular.copy({saisie:""}),this.groupedSelectRowCollection=angular.copy(i),this.newOptionGroupedSelect=angular.copy({saisie:""}),this.GroupedSelectGroups=angular.copy({list:[]}),this.newGroupGroupedSelect=angular.copy({saisie:""}),this.groupSelectGroupClick=angular.copy({showList:!1}),this.radioRowCollection=angular.copy(i),this.newOptionRadio=angular.copy({saisie:""}),!0}},{key:"bindSpecialCtrlTemporyModelsToProxyModel",value:function(){"BasicSelect"===this.proxyModel.selectedControl&&this.bindBasicSelectToProxyModel(this.basicSelectRowCollection),"GroupedSelect"===this.proxyModel.selectedControl&&this.bindGroupedSelectToProxyModel(this.groupedSelectRowCollection),"Radio"===this.proxyModel.selectedControl&&this.bindRadioToProxyModel(this.radioRowCollection)}},{key:"bindBasicSelectFromProxyModel",value:function(t){if(this.proxyModel.temporyConfig.formlyOptions.length>0)for(var e=0;e<=this.proxyModel.temporyConfig.formlyOptions.length-1;e++){var n={option:this.proxyModel.temporyConfig.formlyOptions[e].name,order:e,group:""};t.rows.push(n)}}},{key:"bindBasicSelectToProxyModel",value:function(t){var e=[];if(this.proxyModel.temporyConfig.formlyOptions=e,t.rows.length>0)for(var n=0;n<=t.rows.length-1;n++){var o={name:t.rows[n].option,value:n,group:""};this.proxyModel.temporyConfig.formlyOptions.push(o)}}},{key:"bindGroupedSelectFromProxyModel",value:function(t,e){if(this.proxyModel.temporyConfig.formlyOptions.length>0){for(var n=0;n<=this.proxyModel.temporyConfig.formlyOptions.length-1;n++){var o={option:this.proxyModel.temporyConfig.formlyOptions[n].name,order:n,group:this.proxyModel.temporyConfig.formlyOptions[n].group};t.rows.push(o)}var r=_.uniq(_.pluck(t.rows,"group"));angular.copy(r,e.list)}}},{key:"bindGroupedSelectToProxyModel",value:function(t){this.proxyModel.temporyConfig.formlyOptions=[];for(var e=0;e<=t.rows.length-1;e++){var n={name:t.rows[e].option,value:e,group:t.rows[e].group};this.proxyModel.temporyConfig.formlyOptions.push(n)}}},{key:"bindRadioFromProxyModel",value:function(t){if(this.proxyModel.temporyConfig.formlyOptions.length>0)for(var e=0;e<=this.proxyModel.temporyConfig.formlyOptions.length-1;e++){var n={option:this.proxyModel.temporyConfig.formlyOptions[e].name,order:e,group:""};t.rows.push(n)}}},{key:"bindRadioToProxyModel",value:function(t){var e=[];if(this.proxyModel.temporyConfig.formlyOptions=e,t.rows.length>0)for(var n=0;n<=t.rows.length-1;n++){var o={name:t.rows[n].option,value:n,group:""};this.proxyModel.temporyConfig.formlyOptions.push(o)}}}]),t}();l.$inject=["EasyFormGenFormlyBindingModels"],e.default=l,e.CONTROLLER_MODAL_PROXY=r},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(){var t={restrict:"E",template:l.default};return t}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE=void 0;var i=n(24),l=o(i),a="leftPanelValidEditFooter";r.$inject=[],e.default=r,e.LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE=a},function(t,e){t.exports='\n'},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(){var t={restrict:"E",template:l.default};return t}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE=void 0;var i=n(26),l=o(i),a="leftPanelTextInputControl";r.$inject=[],e.default=r,e.LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE=a},function(t,e){t.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n';
+},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(){var t={restrict:"E",template:l.default};return t}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE=void 0;var i=n(28),l=o(i),a="leftPanelTextareaControl";r.$inject=[],e.default=r,e.LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE=a},function(t,e){t.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n'},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(){var t={restrict:"E",template:l.default};return t}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE=void 0;var i=n(30),l=o(i),a="leftPanelSubtitleControl";r.$inject=[],e.default=r,e.LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE=a},function(t,e){t.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n'},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(){var t={restrict:"E",template:l.default};return t}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE=void 0;var i=n(32),l=o(i),a="leftPanelRichTextEditorControl";r.$inject=[],e.default=r,e.LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE=a},function(t,e){t.exports='\n
\n
\n
\n
\n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n'},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(){var t={restrict:"E",template:l.default};return t}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_RADIO_CONTROL_DIRECTIVE=void 0;var i=n(34),l=o(i),a="leftPanelRadioControl";r.$inject=[],e.default=r,e.LEFT_PANEL_RADIO_CONTROL_DIRECTIVE=a},function(t,e){t.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n \n Add new radio :\n \n
\n
\n
\n
\n
\n \n Edit/Remove radio :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n'},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(){var t={restrict:"E",template:l.default};return t}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE=void 0;var i=n(36),l=o(i),a="leftPanelPasswordControl";r.$inject=[],e.default=r,e.LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE=a},function(t,e){t.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n'},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(){var t={restrict:"E",template:l.default};return t}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_HEADER_CONTROL_DIRECTIVE=void 0;var i=n(38),l=o(i),a="leftPanelHeaderControl";r.$inject=[],e.default=r,e.LEFT_PANEL_HEADER_CONTROL_DIRECTIVE=a},function(t,e){t.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n'},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(){var t={restrict:"E",template:l.default};return t}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE=void 0;var i=n(40),l=o(i),a="leftPanelGroupedSelectControl";r.$inject=[],e.default=r,e.LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE=a},function(t,e){t.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n \n Add new options :\n \n
\n
\n
\n
\n
\n \n Add new groups :\n \n
\n
\n
\n
\n
\n \n Edit/Remove options/groups:\n \n
\n
\n
\n
\n
\n
\n
\n
\n'},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(){var t={restrict:"E",template:l.default};return t}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_DATE_CONTROL_DIRECTIVE=void 0;var i=n(42),l=o(i),a="leftPanelDateControl";r.$inject=[],e.default=r,e.LEFT_PANEL_DATE_CONTROL_DIRECTIVE=a},function(t,e){t.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n Date format :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n'},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(){var t={restrict:"E",template:l.default};return t}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE=void 0;var i=n(44),l=o(i),a="leftPanelCheckBoxControl";r.$inject=[],e.default=r,e.LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE=a},function(t,e){t.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n'},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(){var t={restrict:"E",template:l.default};return t}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_BLANK_CONTROL_DIRECTIVE=void 0;var i=n(46),l=o(i),a="leftPanelBlankControl";r.$inject=[],e.default=r,e.LEFT_PANEL_BLANK_CONTROL_DIRECTIVE=a},function(t,e){t.exports='\n
\n
\n
\n
\n \n \n Edit :\n \n \n
\n
\n
\n
\n Column will be blank\n \n \n
\n
\n
\n
\n'},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(){var t={restrict:"E",template:l.default};return t}Object.defineProperty(e,"__esModule",{value:!0}),e.LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE=void 0;var i=n(48),l=o(i),a="leftPanelBasicSelectControl";r.$inject=[],e.default=r,e.LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE=a},function(t,e){t.exports='\n
\n
\n
\n
\n \n \n Edit properties :\n \n \n
\n
\n
\n
\n \n Add new options :\n \n
\n
\n
\n
\n
\n \n Edit/Remove options :\n \n
\n
\n
\n
\n
\n
\n
\n
\n';
+},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=n(50),i=o(r),l=n(51),a=o(l),s="";e.default=angular.module(s,[]).service(r.FORM_FIELD_MANAGE_SERVICE,i.default).provider(l.EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER,a.default)},function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n0&&C.forEach(function(n){n.controlType===t.controlType&&(n.properties=[].concat(t.properties),e=!0)}),e||C.push(t)}return C}function n(){return u}function o(t){"undefined"!=typeof t&&u.controls.push(t)}function r(){return h}function l(t){"undefined"!=typeof t&&h.cssClass.push(t)}function s(){return b}function d(t){"undefined"!=typeof t&&b.className.push(t)}function c(t){return"className"in t&&"type"in t&&"key"in t&&"templateOptions"in t&&(b=angular.copy(t)),!0}function p(){function t(){return u}function e(t){var e=angular.copy(y);return"undefined"!=typeof t&&t&&angular.extend(e,v),e}function n(t){var e=angular.copy(g);return"undefined"!=typeof t&&t&&angular.extend(e,v),e}function o(){return f}function r(){return m}function l(){return h}function a(t,e){if("undefined"!=typeof t&&"undefined"!=typeof e&&t===parseInt(t,10)&&t<=h.cssClass.length){var n={};return n.className=h.cssClass[t-1],h.textContent=e,h.selectedClass=n.className,n.template=[h.simpleHtml1,e,h.simpleHtml2].join(""),n}}function s(){return b}function d(t,e){if("undefined"!=typeof t&&t===parseInt(t,10)&&t<=b.className.length){var n=function(){var n=angular.copy(b);return n.className=b.className[t-1],console.warn("it should have a bug upper line"),"undefined"!=typeof e&&C.forEach(function(t){t.controlType===e&&t.properties.forEach(function(t){t.isRoot&&(n[t.value]=""),t.isTemplateOptions&&(n.templateOptions[t.value]="")})}),{v:n}}();if("object"===("undefined"==typeof n?"undefined":i(n)))return n.v}}var c={getEasyFormListControls:t,getEasyFormInitialStateConfigurationModel:e,getEasyFormReloadConfigurationModel:n,getEasyFormEmptyConfigurationLineModel:o,getEasyFormConfigurationEmptyControlModel:r,getRawHeaderTemplates:l,getHeaderTemplateForNcolumnLine:a,getRawFormlyControlTemplates:s,getFormlyControlTemplateForNcolumnLine:d};return c}var u=a.initEasyFormListControls(),f=a.initEasyFormEmptyConfigurationLineModel(),m=a.initEmptyControlFieldModel(),y=a.initEasyFormInitialStateConfigurationModel(f),v=a.initEasyFormInitialStateConfigurationModelAddOnForStepWay(),g=a.initEasyFormReloadConfigurationModel(),h=a.initHeaderTemplates(),b=a.initFormlyControlTemplates(),C=a.initParticularControlProperties();this.getAllParticularControlProperties=t,this.addParticularControlProperties=e,this.getEasyFormListControls=n,this.addEasyFormControlToList=o,this.getHeaderTemplates=r,this.addHeaderTemplateCssClass=l,this.getFormlyControlTemplate=s,this.addformlyControlTemplatesCssClass=d,this.setFormlyControlTemplate=c,this.$get=p,p.$inject=[]}Object.defineProperty(e,"__esModule",{value:!0}),e.EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER=void 0;var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l=n(52),a=o(l),s="EasyFormGenFormlyBindingModels";r.$inject=[],e.default=r,e.EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER=s},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=(e.initEasyFormListControls=function(){return{controls:[],selectedControl:"none",temporyConfig:{selectedControl:"none",formlyLabel:"label",formlyRequired:!1,formlyDescription:"",formlyPlaceholder:"",formlyOptions:[]}}},e.initEasyFormEmptyConfigurationLineModel=function(){return{line:1,activeColumn:1,columns:[{numColumn:1,exist:!0,control:{type:"none",key:"none"}}]}},e.initEmptyControlFieldModel=function(){return{control:{type:"none",key:"none"}}},e.initEasyFormInitialStateConfigurationModel=function(t){return{submitButtonText:"submit",cancelButtonText:"cancel",lines:[].concat(t)}});e.initEasyFormInitialStateConfigurationModelAddOnForStepWay=function(){return{activeLine:1,listConfigStep:["init","first","second","third"],stepIndicators:[!0,!1,!1,!1],configStepCounter:0}},e.initEasyFormReloadConfigurationModel=function(){var t=n();return t.lines=[],t},e.initHeaderTemplates=function(){var t={cssClass:["col-xs-12","col-xs-6","col-xs-4"],textContent:"",html_part1:[' ','
'].join(""),html_part3:this.textContent,html_part4:[" "," "," "].join(""),simpleHtml1:[''].join(""),simpleHtml2:[" "," "].join("")};return t},e.initFormlyControlTemplates=function(){return{className:["col-xs-12","col-xs-6","col-xs-4"],type:"",key:"",templateOptions:{type:"",label:"",required:"",placeholder:"",description:"",options:""}}},e.initParticularControlProperties=function(){return[{controlType:"datepicker",properties:[{isRoot:!1,isTemplateOptions:!0,value:"datepickerPopup"}]}]}},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=n(54),i=o(r),l=n(55),a=o(l),s=n(56),d=o(s),c=n(58),p=o(c),u=n(59),f=o(u),m=n(61),y=o(m),v=n(63),g=o(v),h=n(64),b=o(h),C=n(66),x=o(C),E="edaDragDropWay.dragdrop.module";e.default=angular.module(E,[]).directive(r.DD_CONTENT_COUNTER_DIRECTIVE,i.default).controller(c.DD_DECOR_CONTAINER_CONTROLLER_NAME,p.default).directive(s.DD_DECOR_CONTAINER_DIRECTIVE,d.default).directive(u.DD_DECOR_DROPZONE_DIRECTIVE,f.default).directive(m.DRAG_DROP_DECOR_ITEM,y.default).service(v.DRAG_DROP_ITEM_DECOR_SERVICE,g.default).directive(C.DRAG_DROP_NO_EDITABLE_CONTROL,x.default).service(l.DRAG_DROP_ITEM_COUNTER_SERVICE,a.default).directive(h.DRAG_DROP_DECOR_LINE,b.default)},function(t,e){"use strict";function n(t,e){function n(n,o){var r=void 0;n.$watch(function(){return o[0].children.length},function(i,l){i!==l&&!function(){for(var i=0,l=[],a=o[0].children.length-1;a>=0;a--)t.isHtmlElementToCount(o[0].children[a].classList)?(i++,l.push({item:a,isReal:!0})):l.push({item:a,isReal:!1});n.contentRealCount=i,r=e(function(){t.updateLineItemCss(n.fullModel,l,n.parentIndex,n.currentIndex,i)},20)}()}),n.$on("$destroy",function(){e.cancel(r)})}var o={restrict:"A",scope:{valueWhenPlaceholder:"@ddValueWhenPlaceholder",valueWhendragging:"@ddValueWhenDragging",fullModel:"=ddFullModel",currentIndex:"@ddContentCounterCurrentIndex",parentIndex:"@ddContentCounterParentIndex",forceRefresh:"=ddContentCounterForceCssRefresh"},link:n};return o}Object.defineProperty(e,"__esModule",{value:!0});var o="ddContentCounter";n.$inject=["dragDropItemCounterService","$timeout"],e.default=n,e.DD_CONTENT_COUNTER_DIRECTIVE=o},function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n0&&angular.forEach(this._itemsNotToCount,function(n){for(var o=t.length-1;o>=0;o--)t[o]===n&&(e=e&&!1)}),e}},{key:"updateLineItemCss",value:function(t,e,n,o,r){if("undefined"!=typeof t&&"undefined"!=typeof e&&"undefined"!=typeof n&&"undefined"!=typeof o&&"undefined"!=typeof r){for(var i=t[n][o].length-1;i>=0;i--)for(var l=0;l\n \n \n \n \n \n {{ddDecorContainerCtrl.currentTitle}}\n \n \n
\n'},function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n
\n \n
\n
\n
\n \n {{currentTitle}}\n \n \n
\n \n
\n
\n
\n
\n \n'},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(t){function e(e,n,o,r,i){var l=e.verboseMode,a=e.currentIndex,s=e.parentIndex,d=t.getDistinctItemCssClass();if(angular.forEach(d,function(t){return n.removeClass(t)}),n.addClass(e.cssClass),e.$watch("cssClass",function(t,e){t!==e&&(angular.forEach(d,function(t){return n.removeClass(t)}),n.addClass(t))}),""!==l){var c=angular.lowercase(l);"true"!==c&&"1"!==c||console.dir({whoAmI:"I am verbose from ddDecorItem directive link",verbodeMode:c,ParentParentIndex:e.$parent.$parent.$index,ParentIndex:s,parentParentIndex:e.parentParentIndex,currentIndex:a,lineItemsCount:e.lineItemsCount})}"0"===e.parentParentIndex&&n.addClass(d[0]),i(e.$parent,function(t){var e=angular.element(n.children()[0]);e.append(t)})}var n={restrict:"A",scope:{verboseMode:"@ddItemVerboseMode",currentIndex:"@ddItemCurrentIndex",parentIndex:"@ddItemParentIndex",parentParentIndex:"@ddItemParentParentIndex",lineItemsCount:"@ddItemsCount",cssClass:"@ddItemCssClass"},template:l.default,transclude:!0,link:e};return n}Object.defineProperty(e,"__esModule",{value:!0}),e.DRAG_DROP_DECOR_ITEM=void 0;var i=n(62),l=o(i),a="ddDecorItem";r.$inject=["easyFormDragWayConfig"],e.default=r,e.DRAG_DROP_DECOR_ITEM=a},function(t,e){t.exports='\n'},function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n=0;i--)t[e][n][i].cssClass=this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(o);return!0}return!1}},{key:"updateCssClassWholeColumn",value:function(t,e){if("undefined"!=typeof e&&"undefined"!=typeof t){for(var n=t[e].length-1;n>=0;n--)for(var o=t[e][n].length-1;o>=0;o--)t[e][n][o].cssClass=this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(t[e][n].length);return!0}return!1}}]),t}();i.$inject=["easyFormDragWayConfig"],e.default=i,e.DRAG_DROP_ITEM_DECOR_SERVICE=r},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(t){function e(e,n,o,r,i){var l=e.verboseMode,a=e.currentIndex,s=e.parentIndex;e.deleteLine={},e.deleteLine.readyToDelete=!1,e.deleteLine.dblClickCount=0,e.isCollapsed=!1;var d=void 0;if(""!==l){var c=angular.lowercase(l);"true"!==c&&"1"!==c||console.dir({whoAmI:"I am verbose from ddDecorLine directive link",verbodeMode:c,ParentParentIndex:e.$parent.$parent.$index,ParentIndex:s,currentIndex:a})}e.removeMe=function(n){n.preventDefault(),n.stopPropagation(),"1"===e.parentIndex&&(1===e.deleteLine.dblClickCount&&(e.deleteLine.dblClickCount=0,e.deleteLine.readyToDelete=!1,e.removeLine(),t.cancel(d)),0===e.deleteLine.dblClickCount&&(e.deleteLine.dblClickCount=e.deleteLine.dblClickCount+1,e.deleteLine.readyToDelete=!0))},e.cancelDelete=function(){d=t(function(){e.deleteLine.dblClickCount=0,e.deleteLine.readyToDelete=!1},500)},e.$on("$destroy",function(){return t.cancel(d)}),i(e.$parent,function(t){var e=angular.element(n.children()[0]);e.append(t)})}var n={restrict:"A",scope:{verboseMode:"@ddLineVerboseMode",currentIndex:"@ddLineCurrentIndex",parentIndex:"@ddLineParentIndex",removeLine:"&ddRemoveLine"},template:l.default,transclude:!0,link:e};return n}Object.defineProperty(e,"__esModule",{value:!0}),e.DRAG_DROP_DECOR_LINE=void 0;var i=n(65),l=o(i),a="ddDecorLine";r.$inject=["$timeout"],e.default=r,e.DRAG_DROP_DECOR_LINE=a},function(t,e){t.exports='\n \n \n \n \n
\n
\n'},function(t,e){"use strict";function n(){function t(t,e){e.on("click",function(t){return t.preventDefault()})}var e={restrict:"A",link:t};return e}Object.defineProperty(e,"__esModule",{value:!0});var o="ddNoEditableControl";n.$inject=[],e.default=n,e.DRAG_DROP_NO_EDITABLE_CONTROL=o},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=n(68),i=o(r),l=n(69),a=o(l),s="eda.right.click.module";e.default=angular.module(s,[]).directive(r.EDA_RIGHT_CLICK_DIRECTIVE,i.default).service(l.EDA_RIGHT_CLICKED_MANAGER_SERVICE,a.default)},function(t,e){"use strict";function n(t){function e(e,n,o){var r=t(o.edaRightClick),i=t(o.edaRightClickColIndex),l=t(o.edaSetRightClicked);n.on("contextmenu",function(t){e.$apply(function(){t.preventDefault(),1===i(e)&&l(e,{}),1===i(e)&&r(e,{$event:t})})})}var n={restrict:"A",link:e};return n}Object.defineProperty(e,"__esModule",{value:!0});var o="edaRightClick";n.$inject=["$parse"],e.default=n,e.EDA_RIGHT_CLICK_DIRECTIVE=o},function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n0&&(e[1][n][o].key=t.control.key,e[1][n][o].configModelControl=angular.copy(t.control))})})}},{key:"loadDragDropModelFromConfigurationModel",value:function(t,e){var n=this;e[1]=[],angular.forEach(t.lines,function(t,o){e[1].push([]),angular.forEach(t.columns,function(t){var r={control:"empty",cssClass:"col-xs-12",label:''};angular.forEach(e[0],function(e){angular.forEach(e,function(e){e.control===t.control.selectedControl&&(r=angular.copy(e))})}),e[1][o].push(r);var i=n.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(e[1][o].length);angular.forEach(e[1][o],function(t){return t.cssClass=i})})})}},{key:"getFormlyDetailedControlModelFromDragDropObject",value:function(t){var e={},n=this.EasyFormGenFormlyBindingModels.getEasyFormListControls(),o=this.$parse("controls");return angular.forEach(o(n),function(n){n.id===t.control&&(e=n)}),e}},{key:"validKeyUniqueness",value:function(t,e){for(var n=!0,o=e.lines.length-1;o>=0;o--)for(var r=e.lines[o].columns.length-1;r>=0;r--)"undefined"!=typeof e.lines[o].columns[r].control&&e.lines[o].columns[r].control.key===t&&(n=!1);return n}},{key:"createUniqueKey",value:function(t,e){var n=t+"-"+Date.now();return this.validKeyUniqueness(n,e)===!0?n:(n=t+"-"+Date.now(),this.validKeyUniqueness(n,e)===!0?n:n=t+"-"+Date.now())}},{key:"applyThisLine",value:function(t,e,n){angular.forEach(n.lines,function(n,o){o===e&&(n.line=t)})}},{key:"bindConfigCtrlModelFromFormlyDetailedCtrlModel",value:function(t,e,n){this.$parse("control.selectedControl").assign(e,this.$parse("selectedControl")(t)),this.$parse("control.type").assign(e,this.$parse("formlyType")(t)),this.$parse("control.key").assign(e,this.createUniqueKey(this.$parse("control.type")(e),n)),this.$parse("control.subtype").assign(e,this.$parse("formlySubtype")(t)),this.$parse("control.templateOptions.label").assign(e,this.$parse("formlyLabel")(t)),this.$parse("control.templateOptions.required").assign(e,this.$parse("formlyRequired")(t)),this.$parse("control.templateOptions.description").assign(e,this.$parse("formlyDescription")(t)),this.$parse("control.templateOptions.placeholder").assign(e,this.$parse("formlyPlaceholder")(t)),this.$parse("control.templateOptions.options").assign(e,this.$parse("formlyOptions")(t)),"datepicker"===this.$parse("control.type")(e)&&this.$parse("control.templateOptions.datepickerPopup").assign(e,this.$parse("datepickerPopup")(t))}}]),t}();i.$inject=["EasyFormGenFormlyBindingModels","easyFormDragWayConfig","$parse"],e.default=i,e.DRAG_DROP_CONFIG_PROXY_SERVICE=r},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=n(73),i=o(r),l=n(74),a=o(l),s="dndLists.module";e.default=angular.module(s,[]).directive(r.DNDLIST_DIRECTIVE,i.default).directive(l.DNDDRAGGABLE_DIRECTIVE,a.default).factory("dndDragTypeWorkaround",function(){return{}}).factory("dndDropEffectWorkaround",function(){return{}})},function(t,e){"use strict";function n(t,e,n,o){function r(r,i,l){function a(t,e,n){var o=v?t.offsetX||t.layerX:t.offsetY||t.layerY,r=v?e.offsetWidth:e.offsetHeight,i=v?e.offsetLeft:e.offsetTop;return i=n?i:0,o'),m=f[0],y=i[0],v=l.dndHorizontalList&&r.$eval(l.dndHorizontalList),g=l.dndExternalSources&&r.$eval(l.dndExternalSources);i.on("dragover",function(t){if(t=t.originalEvent||t,!d(t))return!0;if(m.parentNode!=y&&i.append(f),t.target!==y){for(var e=t.target;e.parentNode!==y&&e.parentNode;)e=e.parentNode;e.parentNode===y&&e!==m&&(a(t,e)?y.insertBefore(m,e):y.insertBefore(m,e.nextSibling))}else if(a(t,m,!0))for(;m.previousElementSibling&&(a(t,m.previousElementSibling,!0)||0===m.previousElementSibling.offsetHeight);)y.insertBefore(m,m.previousElementSibling);else for(;m.nextElementSibling&&!a(t,m.nextElementSibling,!0);)y.insertBefore(m,m.nextElementSibling.nextElementSibling);return l.dndDragover&&!p(l.dndDragover,t)?c():(i.addClass("dndDragover"),t.preventDefault(),t.stopPropagation(),!1)}),i.on("drop",function(t){if(t=t.originalEvent||t,!d(t))return!0;t.preventDefault();var e,o=t.dataTransfer.getData("Text")||t.dataTransfer.getData("text/plain");try{e=JSON.parse(o)}catch(t){return c()}if(l.dndDrop&&(e=p(l.dndDrop,t,e),!e))return c();var i=r.$eval(l.dndList);
+return r.$apply(function(){i.splice(s(),0,e)}),"none"===t.dataTransfer.dropEffect?"copy"===t.dataTransfer.effectAllowed||"move"===t.dataTransfer.effectAllowed?n.dropEffect=t.dataTransfer.effectAllowed:n.dropEffect=t.ctrlKey?"copy":"move":n.dropEffect=t.dataTransfer.dropEffect,c(),t.stopPropagation(),!1}),i.on("dragleave",function(t){t=t.originalEvent||t,i.removeClass("dndDragover"),e(function(){i.hasClass("dndDragover")||f.remove()},100)})}var i={link:r};return i}Object.defineProperty(e,"__esModule",{value:!0});var o="dndList",r=["$parse","$timeout","dndDropEffectWorkaround","dndDragTypeWorkaround"];n.$inject=r,e.default=n,e.DNDLIST_DIRECTIVE=o},function(t,e){"use strict";function n(t,e,n,o){function r(r,i,l){var a=this;i.attr("draggable","true"),l.dndDisableIf&&r.$watch(l.dndDisableIf,function(t){return i.attr("draggable",!t)}),i.on("dragstart",function(a){a=a.originalEvent||a,a.dataTransfer.setData("Text",angular.toJson(r.$eval(l.dndDraggable))),a.dataTransfer.effectAllowed=l.dndEffectAllowed||"move",i.addClass("dndDragging"),e(function(){i.addClass("dndDraggingSource")},0),n.dropEffect="none",o.isDragging=!0,o.dragType=l.dndType?r.$eval(l.dndType):void 0,t(l.dndDragstart)(r,{event:a}),a.stopPropagation()}),i.on("dragend",function(e){e=e.originalEvent||e;var a=n.dropEffect;r.$apply(function(){switch(a){case"move":t(l.dndMoved)(r,{event:e});break;case"copy":t(l.dndCopied)(r,{event:e})}}),i.removeClass("dndDragging"),i.removeClass("dndDraggingSource"),o.isDragging=!1,e.stopPropagation()}),i.on("click",function(e){e=e.originalEvent||e,r.$apply(function(){return t(l.dndSelected)(r,{event:e})}),e.stopPropagation()}),i.on("selectstart",function(){return a.dragDrop&&a.dragDrop(),!1})}var i={link:r};return i}Object.defineProperty(e,"__esModule",{value:!0});var o="dndDraggable",r=["$parse","$timeout","dndDropEffectWorkaround","dndDragTypeWorkaround"];n.$inject=r,e.default=n,e.DNDDRAGGABLE_DIRECTIVE=o},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=n(76),i=o(r),l="pageslide.module";e.default=angular.module(l,[]).directive(r.PAGE_SLIDE_DIRECTIVE,i.default)},function(t,e){"use strict";function n(){function t(t,e,n){function o(e,n){if(e&&0!==e.style.width&&0!==e.style.width)switch(n.cloak&&l.css("display","none"),n.side){case"right":e.style.width="0px",n.squeeze&&(s.style.right="0px"),n.push&&(s.style.right="0px",s.style.left="0px");break;case"left":e.style.width="0px",n.squeeze&&(s.style.left="0px"),n.push&&(s.style.left="0px",s.style.right="0px");break;case"top":e.style.height="0px",n.squeeze&&(s.style.top="0px"),n.push&&(s.style.top="0px",s.style.bottom="0px");break;case"bottom":e.style.height="0px",n.squeeze&&(s.style.bottom="0px"),n.push&&(s.style.bottom="0px",s.style.top="0px")}t.psOpen=!1}function r(t,e){if(0!==t.style.width&&0!==t.style.width){switch(e.side){case"right":t.style.width=e.size,e.squeeze&&(s.style.right=e.size),e.push&&(s.style.right=e.size,s.style.left="-"+e.size);break;case"left":t.style.width=e.size,e.squeeze&&(s.style.left=e.size),e.push&&(s.style.left=e.size,s.style.right="-"+e.size);break;case"top":t.style.height=e.size,e.squeeze&&(s.style.top=e.size),e.push&&(s.style.top=e.size,s.style.bottom="-"+e.size);break;case"bottom":t.style.height=e.size,e.squeeze&&(s.style.bottom=e.size),e.push&&(s.style.bottom=e.size,s.style.top="-"+e.size)}setTimeout(function(){e.cloak&&l.css("display","block")},1e3*e.speed)}}var i={};i.side=t.psSide||"right",i.speed=t.psSpeed||"0.5",i.size=t.psSize||"300px",i.zindex=1e3,i.className=t.psClass||"ng-pageslide",i.cloak=!t.psCloak||"false"!=t.psCloak.toLowerCase(),i.squeeze=Boolean(t.psSqueeze)||!1,i.push=Boolean(t.psPush)||!1,i.container=t.psContainer||!1,e.addClass(i.className);var l=null,a=null,s=i.container?document.getElementById(i.container):document.body;if(a=e[0],"div"!==a.tagName.toLowerCase()&&"pageslide"!==a.tagName.toLowerCase())throw new Error("Pageslide can only be applied to or
elements");if(0===a.children.length)throw new Error("You have to content inside the ");switch(l=angular.element(a.children),s.appendChild(a),a.style.zIndex=i.zindex,a.style.position=i.container!==!1?"absolute":"fixed",a.style.width=0,a.style.height=0,a.style.overflow="hidden",a.style.transitionDuration=i.speed+"s",a.style.webkitTransitionDuration=i.speed+"s",a.style.transitionProperty="width, height",i.squeeze&&(s.style.position="absolute",s.style.transitionDuration=i.speed+"s",s.style.webkitTransitionDuration=i.speed+"s",s.style.transitionProperty="top, bottom, left, right"),i.side){case"right":a.style.height=n.psCustomHeight||"100%",a.style.top=n.psCustomTop||"0px",a.style.bottom=n.psCustomBottom||"0px",a.style.right=n.psCustomRight||"0px";break;case"left":a.style.height=n.psCustomHeight||"100%",a.style.top=n.psCustomTop||"0px",a.style.bottom=n.psCustomBottom||"0px",a.style.left=n.psCustomLeft||"0px";break;case"top":a.style.width=n.psCustomWidth||"100%",a.style.left=n.psCustomLeft||"0px",a.style.top=n.psCustomTop||"0px",a.style.right=n.psCustomRight||"0px";break;case"bottom":a.style.width=n.psCustomWidth||"100%",a.style.bottom=n.psCustomBottom||"0px",a.style.left=n.psCustomLeft||"0px",a.style.right=n.psCustomRight||"0px"}t.$watch("psOpen",function(t){t?r(a,i):o(a,i)}),t.$on("$destroy",function(){return s.removeChild(a)}),t.psAutoClose&&(t.$on("$locationChangeStart",function(){return o(a,i)}),t.$on("$stateChangeStart",function(){return o(a,i)}))}var e={restrict:"EAC",transclude:!1,scope:{psOpen:"=?",psAutoClose:"=?",psSide:"@",psSpeed:"@",psClass:"@",psSize:"@",psSqueeze:"@",psCloak:"@",psPush:"@",psContainer:"@"},link:t};return e}Object.defineProperty(e,"__esModule",{value:!0});var o="pageslide";n.$inject=[],e.default=n,e.PAGE_SLIDE_DIRECTIVE=o},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=n(78),i=o(r),l=n(80),a=o(l),s=n(82),d=o(s),c="edaDragDropWay.main.module";e.default=angular.module(c,[]).provider(r.EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME,i.default).controller(l.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER,a.default).directive(s.EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE,d.default)},function(t,e,n){"use strict";function o(){function t(t){b=[].concat(t)}function e(){return E}function n(t){E=angular.copy(t)}function o(){var t={modalAnimated:!1};return t}function i(t,e){"undefined"!=typeof t&&"undefined"!=typeof e&&h(t,e)}function l(){return x}function a(){return!0}function s(){return!0}function d(){var t=[{name:"empty",enabled:!0},{name:"Header",enabled:!0},{name:"Subtitle",enabled:!0},{name:"TextInput",enabled:!0},{name:"Password",enabled:!0},{name:"Email",enabled:!0},{name:"Date",enabled:!0},{name:"Texarea",enabled:!0},{name:"RichTextEditor",enabled:!0},{name:"Radio",enabled:!0},{name:"Checkbox",enabled:!0},{name:"BasicSelect",enabled:!0},{name:"GroupedSelect",enabled:!0}];return t}function c(t){angular.isDefined(t)&&(t===!0&&(_=!0),t===!1&&(_=!1))}function p(t){angular.isDefined(t)&&(t===!0&&(M=!0),t===!1&&(M=!1))}function u(){return T}function f(t){angular.isString(t)&&angular.forEach(T,function(e){e.name===t&&(e.enabled=!1)})}function m(t){angular.isString(t)&&angular.forEach(T,function(e){e.name===t&&(e.enabled=!0)})}function y(t){var e=t===!0?t:t===!1?t:O.modalAnimated;O.modalAnimated=e}function v(){return O.modalAnimated}function g(){function t(){return x}function e(t,e,n){return"undefined"!=typeof e&&"undefined"!=typeof n&&e===parseInt(e,10)&&(t.containerConfig.decoration[e].isCollapsed=n),!0}function n(){return C}function o(){var t=[];return angular.forEach(b,function(e){var n=e.cssClass;if(0===t.length)t.push(n);else{var o=!0;angular.forEach(t,function(t){var e=t;n===e&&(o=!1)}),o&&t.push(n)}}),t}function r(t){if("undefined"!=typeof t){for(var e="",n=b.length-1;n>=0;n--)b[n].numberItemPerRow===t&&(e=b[n].cssClass);return e}return""}function i(){return b}function l(){return E}function a(){return O.modalAnimated}function s(t){y(t)}function d(){return angular.copy(T)}function c(){return _}function p(){return M}var u={setModalAnimation:s,getModalAnimationValue:a,getListEnabledControl:d,isPreviewPanelVisible:c,arePreviewModelsVisible:p,getListItemCssClass:i,getItemsNotToCount:l,getItemCssDependingNumberItemsInRow:r,getDistinctItemCssClass:o,getDragDropConfigModel:n,getDragDropPresentationModel:t,setDragDropConfigContainerDecorationCollapse:e};return u}function h(t,e){if(x[0].length>0){if(x[0].length1&&this.configuration.lines.splice(1,this.configuration.lines.length-2),this.countConfigurationModelLines()}},{key:"countConfigurationModelLines",value:function(){return this.configuration.lines.length}},{key:"saveThisForm",value:function(){return"undefined"==typeof this.configuration.formName?(this.toaster.pop({type:"warning",timeout:2e3,title:"Form name is undefined",body:"Form has not been saved.",showCloseButton:!0}),!1):""===this.configuration.formName?(this.toaster.pop({type:"warning",timeout:2e3,title:"Form name is required",body:"Form has not been saved.",showCloseButton:!0}),!1):(this.toaster.pop({type:"wait",timeout:1e4,title:"Form is being saved",body:"Wait.",showCloseButton:!0}),this.toaster.clear(),this.returnSaveEvent=!0,!0)}},{key:"dragoverCallbackContainer",value:function(t,e,n){return 0!==n}},{key:"dropCallback",value:function(t,e,n,o,r,i){var l=this;if(o){if("itemType"===i&&!n.label)return!1;if("containerType"===i&&!angular.isArray(n))return!1}var a=this.$timeout(function(){l.configuration=angular.copy(l.ddModelConfModelProxyService.refreshAllConfigurationFromDragAndDropModel(l.configuration,l.dragDropModel)),l.formFieldManage.applyConfigurationToformlyModel(l.configuration,l.wfFormFields,l.dataModel),l.wfFormFieldsOnlyNeededProperties=angular.copy(l.wfFormFields),l.ddModelConfModelProxyService.refreshControlsKeys(l.configuration,l.dragDropModel)},200);return this.$scope.$on("$destroy",function(){return l.$timeout.cancel(a)}),n}},{key:"dndItemMoved",value:function(t,e,n){t>0&&this.dragDropModel[t][e].splice(n,1)}},{key:"dragoverCallbackItems",value:function(t,e){return 0!==e}},{key:"disableItemDropIf",value:function(){}},{key:"dropCallbackItems",value:function(t,e,n,o,r,i,l,a,s,d){var c=this;if(a){if("itemType"===d&&!l.label)return!1;if("containerType"===d&&!angular.isArray(l))return!1}var p=this.$timeout(function(){c.configuration=angular.copy(c.ddModelConfModelProxyService.refreshAllConfigurationFromDragAndDropModel(c.configuration,c.dragDropModel)),c.formFieldManage.applyConfigurationToformlyModel(c.configuration,c.wfFormFields,c.dataModel),c.wfFormFieldsOnlyNeededProperties=angular.copy(c.wfFormFields),c.ddModelConfModelProxyService.refreshControlsKeys(c.configuration,c.dragDropModel)},200);return this.ddItemRightClickedManager.setUnRightClicked(l),this.$scope.$on("$destroy",function(){return c.$timeout.cancel(p)}),l}},{key:"saveFromEditPanel",value:function(){this.controllerModalProxy.bindSpecialCtrlTemporyModelsToProxyModel(),this.controllerModalProxy.bindConfigurationModelFromProxyModel(this.controllerModalProxy.getEditPanelModelLineIndex(),this.controllerModalProxy.getEditPanelModelColumnIndex(),this.configuration),this.formFieldManage.applyConfigurationToformlyModel(this.configuration,this.wfFormFields,this.dataModel),this.wfFormFieldsOnlyNeededProperties=angular.copy(this.wfFormFields),this.ddModelConfModelProxyService.refreshControlsKeys(this.configuration,this.dragDropModel),this.controllerModalProxy.setEditPanelModelToggle(!1),this.editPanelModel.toggle=this.controllerModalProxy.getEditPanelModelToggle(),this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel)}},{key:"closeEditPanel",value:function(){this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel),this.controllerModalProxy.setEditPanelModelToggle(!1),this.editPanelModel.toggle=this.controllerModalProxy.getEditPanelModelToggle()}},{key:"setRightClicked",value:function(t,e){e.rightCliked=!0}},{key:"toggleEditPanel",value:function(t,e,n,o){var r=this;this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel),this.controllerModalProxy.getEditPanelModelToggle()?(this.controllerModalProxy.setEditPanelModelToggle(!1),this.editPanelModel.toggle=this.controllerModalProxy.getEditPanelModelToggle(),"undefined"!=typeof this.controllerModalProxy.getEditPanelModelLineIndex()&&"undefined"!=typeof this.controllerModalProxy.getEditPanelModelColumnIndex()&&"undefined"!=typeof this.controllerModalProxy.getEditPanelModelControl()&&(this.controllerModalProxy.getEditPanelModelLineIndex()===e&&this.controllerModalProxy.getEditPanelModelColumnIndex()===n&&angular.equals(this.controllerModalProxy.getEditPanelModelControl(),o)||!function(){o.rightCliked=!0;var t=r.$timeout(function(){r.controllerModalProxy.setEditPanelModelLineIndex(e),r.controllerModalProxy.setEditPanelModelColumnIndex(n),r.controllerModalProxy.setEditPanelModelControl(o),r.controllerModalProxy.setProxyModelFromConfigurationSelection(r.configuration,e,n),r.controllerModalProxy.setEditPanelModelToggle(!0),r.$scope.editPanelModel.toggle=r.controllerModalProxy.getEditPanelModelToggle()},200);r.$scope.$on("$destroy",function(){return r.$timeout.cancel(t)})}())):(o.rightCliked=!0,this.controllerModalProxy.setEditPanelModelLineIndex(e),this.controllerModalProxy.setEditPanelModelColumnIndex(n),this.controllerModalProxy.setEditPanelModelControl(o),this.controllerModalProxy.setProxyModelFromConfigurationSelection(this.configuration,e,n),this.controllerModalProxy.setEditPanelModelToggle(!0),this.editPanelModel.toggle=this.controllerModalProxy.getEditPanelModelToggle())}},{key:"removeThisLine",value:function(t){this.dragDropModel[1].splice(t,1)}},{key:"addNewline",value:function(){this.formFieldManage.applyConfigurationToformlyModel(this.configuration,this.wfFormFields,this.dataModel),this.wfFormFieldsOnlyNeededProperties=angular.copy(this.wfFormFields)}},{key:"insertNewLine",value:function(){this.addNewline(),this.dragDropModel[1].push([])}}]),t}();s.$inject=["$scope","easyFormGenVersion","$filter","$anchorScroll","toaster","$timeout","$log","formFieldManage","controllerModalProxy","dragDropItemDecorationService","ddModelConfModelProxyService","ddItemRightClickedManager","easyFormDragWayConfig"],e.default=s,e.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER=l,e.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS=a},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n={showDebug:!1,configurationModelNumberofLines:1},o=function(){return angular.copy(n)},r={editTab:{active:!0},previewTab:{active:!1,tabVisible:!0,modelsVisible:!0}},i=function(t,e){var n=angular.copy(r);return angular.extend(n.previewTab,{tabVisible:t,modelsVisible:e}),n},l={numColumn:-1,exist:!0,control:{type:"none",key:"none",subtype:"none"}},a=function(){return angular.copy(l)},s={line:-1,activeColumn:1,columns:[{numColumn:1,exist:!0,control:{type:"none",key:"none"}}]},d=function(){return angular.copy(s)},c={preview:{formlyModelViewExpanded:!0,formlyFieldsViewExpanded:!0,customizeFormButtonsExpanded:!0,saveThisFormExpanded:!0}},p=function(){return angular.copy(c)};e.initDebugModel=o,e.initTabModel=i,e.initColumnTemplate=a,e.initLineTemplate=d,e.initIhmModel=p},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}function r(t,e,n,o){function r(t){function r(){var e=angular.isArray(t.edaEasyFormGeneratorModel.edaFieldsModel)&&t.edaEasyFormGeneratorModel.edaFieldsModel.length>0?t.edaEasyFormGeneratorModel.edaFieldsModel:i();return e}function i(){var t=[{line:1,activeColumn:1,columns:[{numColumn:1,exist:!0,control:{type:"none",key:"none"}}]}];return t}function l(){var e=angular.isArray(t.edaEasyFormGeneratorModel.dataModel)&&t.edaEasyFormGeneratorModel.dataModel.length>0?t.edaEasyFormGeneratorModel.dataModel:[];return e}function a(){if(angular.isDefined(t.edaEasyFormGeneratorModel)){var o=r();t.vm.configurationLoaded={},e.bindConfigurationLines(t.vm.configurationLoaded,o,!1),t.vm.configuration=angular.copy(t.vm.configurationLoaded),n.loadDragDropModelFromConfigurationModel(t.vm.configuration,t.vm.dragDropModel),s(t.vm.configuration),n.refreshControlsKeys(t.vm.configuration,t.vm.dragDropModel),e.applyConfigurationToformlyModel(t.vm.configuration,t.vm.wfFormFields,t.vm.dataModel),t.vm.wfFormFieldsOnlyNeededProperties=angular.copy(t.vm.wfFormFields),t.vm.dataModel=l(),t.vm.configuration.formName=angular.isString(t.edaEasyFormGeneratorModel.formName)?t.edaEasyFormGeneratorModel.formName:"",t.vm.configuration.submitButtonText=angular.isString(t.edaEasyFormGeneratorModel.btnSubmitText)?t.edaEasyFormGeneratorModel.btnSubmitText:"Submit",t.vm.configuration.cancelButtonText=angular.isString(t.edaEasyFormGeneratorModel.btnCancelText)?t.edaEasyFormGeneratorModel.btnCancelText:"Cancel"}}function s(t){angular.forEach(t.lines,function(t){var e=o.getItemCssDependingNumberItemsInRow(t.columns.length);angular.forEach(t.columns,function(t){return t.control.className=e})})}t.$watch(function(){return t.edaEasyFormGeneratorModel},function(){return a()},!0),t.$watch(function(){return t.returnSaveEvent},function(e){if(e===!0){var n={formName:t.vm.configuration.formName,btnSubmitText:t.vm.configuration.submitButtonText,btnCancelText:t.vm.configuration.cancelButtonText,edaFieldsModel:t.vm.configuration.lines,edaFieldsModelStringified:angular.toJson(t.vm.configuration.lines),formlyFieldsModel:t.vm.wfFormFieldsOnlyNeededProperties,dataModel:t.vm.dataModel};t.edaSaveFormEvent({edaEasyFormGeneratorModel:n}),t.returnSaveEvent=!1}})}var i={restrict:"E",template:l.default,scope:{edaEasyFormGeneratorModel:"=",edaSaveFormEvent:"&edaSaveFormEvent"},controller:a.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER,controllerAs:a.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS,replace:!1,link:r};return i}Object.defineProperty(e,"__esModule",{value:!0}),e.EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE=void 0;var i=n(83),l=o(i),a=n(80),s="edaDragdropWayEasyFormGen";r.$inject=["$timeout","formFieldManage","ddModelConfModelProxyService","easyFormDragWayConfig"],e.default=r,e.EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE=s},function(t,e){t.exports='\n \n
\n
\n \n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
2"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdnd-dragover="vm.dragoverCallbackItems($parent.$parent.$index, $parent.$index, $index, external);"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdnd-drop="vm.dropCallbackItems(event, index, $index,$parent.$index, $parent.$parent.$index, $parent.$parent.$parent.$index, item, external, type, \'itemType\');"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass="itemlist"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdd-content-counter\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdd-value-when-placeholder="dndPlaceholder"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdd-value-when-dragging="dndDraggingSource"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdd-full-model = "vm.dragDropModel"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdd-content-counter-current-index="{{$index}}"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdd-content-counter-parent-index="{{$parent.$index}}"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdd-content-counter-force-css-refresh = "command.forceRefresh">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\tCustomize form buttons\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\tDATA MODEL\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t{{vm.model | json}}\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\tFIELDS MODEL (ready to save to database one)\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t{{vm.wfFormFieldsOnlyNeededProperties | json}}\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\tSave this form\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\tsave this form\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t\t
\n\t\t\t
\n \n Easy form generator : {{vm.easyFormGeneratorVERSION}} — Erwan DATIN (MacKentoch)\n \n\t\t\t \n
\n
\n \n';
+},function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var r=n(85),i=o(r),l="edaDragDropWay.trustThis.filter";e.default=angular.module(l,[]).filter(r.TRUST_THIS_FILTER_NAME,i.default)},function(t,e){"use strict";function n(t){return function(e,n){return t.trustAs(n||"html",e)}}Object.defineProperty(e,"__esModule",{value:!0});var o="trustThis";n.$inject=["$sce"],e.default=n,e.TRUST_THIS_FILTER_NAME=o}]);
//# sourceMappingURL=eda.dragdropway.min.js.map
\ No newline at end of file
diff --git a/static/js/eda.dragdropway.min.js.map b/static/js/eda.dragdropway.min.js.map
new file mode 100644
index 0000000..ead5125
--- /dev/null
+++ b/static/js/eda.dragdropway.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///eda.dragdropway.min.js","webpack:///webpack/bootstrap dc87e9d16275571fdf62","webpack:///./src/app/dragdropway/index.js","webpack:///./src/app/dragdropway/vendors.js","webpack:///./~/api-check/dist/api-check.js","webpack:///./~/angular-formly/dist/formly.js","webpack:///external \"angular\"","webpack:///./~/angular-formly-templates-bootstrap/dist/angular-formly-templates-bootstrap.js","webpack:///./src/app/dragdropway/main.js","webpack:///./src/app/dragdropway/config/edaDragDropWay.formlyConfig.config.js","webpack:///./src/app/dragdropway/config/edaDragDropWay.dragDropConfig.config.js","webpack:///./src/app/easyFormConfig.json","webpack:///./src/app/dragdropway/core/edaDragDropWay.core.module.js","webpack:///./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.module.js","webpack:///./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.controller.js","webpack:///./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.controller.helpers.js","webpack:///./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.directive.js","webpack:///./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.template.html","webpack:///./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.selectOptionManage.service.js","webpack:///./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.selectOptionManage.service.helpers.js","webpack:///./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.controllerModalProxy.service.js","webpack:///./src/app/dragdropway/components/leftPanel/validEditFooter/edaDragDropWay.leftpanel.validEditFooter.directive.js","webpack:///./src/app/dragdropway/components/leftPanel/validEditFooter/edaDragDropWay.leftpanel.validEditFooter.template.html","webpack:///./src/app/dragdropway/components/leftPanel/TextInputControl/edaDragDropWay.leftpanel.textInputControl.directive.js","webpack:///./src/app/dragdropway/components/leftPanel/TextInputControl/edaDragDropWay.leftpanel.textInputControl.template.html","webpack:///./src/app/dragdropway/components/leftPanel/TextAreaControl/edaDragDropWay.leftpanel.textareaControl.directive.js","webpack:///./src/app/dragdropway/components/leftPanel/TextAreaControl/edaDragDropWay.leftpanel.textareaControl.template.html","webpack:///./src/app/dragdropway/components/leftPanel/SubTitleControl/edaDragDropWay.leftpanel.subtitleControl.directive.js","webpack:///./src/app/dragdropway/components/leftPanel/SubTitleControl/edaDragDropWay.leftpanel.subtitleControl.template.html","webpack:///./src/app/dragdropway/components/leftPanel/RichTextEditorControl/edaDragDropWay.leftpanel.richTextEditorControl.directive.js","webpack:///./src/app/dragdropway/components/leftPanel/RichTextEditorControl/edaDragDropWay.leftpanel.richTextEditorControl.template.html","webpack:///./src/app/dragdropway/components/leftPanel/RadioControl/edaDragDropWay.leftpanel.radioControl.directive.js","webpack:///./src/app/dragdropway/components/leftPanel/RadioControl/edaDragDropWay.leftpanel.radioControl.template.html","webpack:///./src/app/dragdropway/components/leftPanel/PasswordControl/edaDragDropWay.leftpanel.passwordControl.directive.js","webpack:///./src/app/dragdropway/components/leftPanel/PasswordControl/edaDragDropWay.leftpanel.passwordControl.template.html","webpack:///./src/app/dragdropway/components/leftPanel/HeaderControl/edaDragDropWay.leftpanel.headerControl.directive.js","webpack:///./src/app/dragdropway/components/leftPanel/HeaderControl/edaDragDropWay.leftpanel.headerControl.template.html","webpack:///./src/app/dragdropway/components/leftPanel/GroupedSelectControl/edaDragDropWay.leftpanel.groupedSelectControl.directive.js","webpack:///./src/app/dragdropway/components/leftPanel/GroupedSelectControl/edaDragDropWay.leftpanel.groupedSelectControl.template.html","webpack:///./src/app/dragdropway/components/leftPanel/DateControl/edaDragDropWay.leftpanel.dateControl.directive.js","webpack:///./src/app/dragdropway/components/leftPanel/DateControl/edaDragDropWay.leftpanel.dateControl.template.html","webpack:///./src/app/dragdropway/components/leftPanel/CheckBoxControl/edaDragDropWay.leftpanel.checkBoxControl.directive.js","webpack:///./src/app/dragdropway/components/leftPanel/CheckBoxControl/edaDragDropWay.leftpanel.checkBoxControl.template.html","webpack:///./src/app/dragdropway/components/leftPanel/BlankControl/edaDragDropWay.leftpanel.blankControl.directive.js","webpack:///./src/app/dragdropway/components/leftPanel/BlankControl/edaDragDropWay.leftpanel.blankControl.template.html","webpack:///./src/app/dragdropway/components/leftPanel/BasicSelectControl/edaDragDropWay.leftpanel.basicSelectControl.directive.js","webpack:///./src/app/dragdropway/components/leftPanel/BasicSelectControl/edaDragDropWay.leftpanel.basicSelectControl.template.html","webpack:///./src/app/dragdropway/components/formlyProxy/edaDragDropWay.formlyProxy.formFieldManage.module.js","webpack:///./src/app/dragdropway/components/formlyProxy/edaDragDropWay.formlyProxy.formFieldManage.service.js","webpack:///./src/app/dragdropway/components/formlyProxy/edaDragDropWay.formlyProxy.formFieldManage.provider.js","webpack:///./src/app/dragdropway/components/formlyProxy/edaDragDropWay.formlyProxy.formFieldManage.provider.helpers.js","webpack:///./src/app/dragdropway/components/dragdrop/edaDragDropWay.dragdrop.module.js","webpack:///./src/app/dragdropway/components/dragdrop/ddContentCounter/edaDragDropWay.dragdrop.ddContentCounter.directive.js","webpack:///./src/app/dragdropway/components/dragdrop/ddContentCounter/edaDragDropWay.dragdrop.ddContentCounter.service.js","webpack:///./src/app/dragdropway/components/dragdrop/ddDecorContainer/edaDragDropWay.dragdrop.ddDecorContainer.directive.js","webpack:///./src/app/dragdropway/components/dragdrop/ddDecorContainer/edaDragDropWay.dragdrop.ddDecorContainer.template.html","webpack:///./src/app/dragdropway/components/dragdrop/ddDecorContainer/edaDragDropWay.dragdrop.ddDecorContainer.controller.js","webpack:///./src/app/dragdropway/components/dragdrop/ddDecorDropZone/edaDragDropWay.dragdrop.ddDecorDropZone.directive.js","webpack:///./src/app/dragdropway/components/dragdrop/ddDecorDropZone/edaDragDropWay.dragdrop.ddDecorDropZone.template.html","webpack:///./src/app/dragdropway/components/dragdrop/ddDecorItem/edaDragDropWay.dragdrop.ddDecorItem.directive.js","webpack:///./src/app/dragdropway/components/dragdrop/ddDecorItem/edaDragDropWay.dragdrop.ddDecorItem.template.html","webpack:///./src/app/dragdropway/components/dragdrop/ddDecorItem/edaDragDropWay.dragdrop.ddDecorItem.service.js","webpack:///./src/app/dragdropway/components/dragdrop/ddDecorLine/edaDragDropWay.dragdrop.ddDecorLine.directive.js","webpack:///./src/app/dragdropway/components/dragdrop/ddDecorLine/edaDragDropWay.dragdrop.ddDecorLine.template.html","webpack:///./src/app/dragdropway/components/dragdrop/ddNoEditableControl/edaDragDropWay.dragdrop.ddNoEditableControl.directive.js","webpack:///./src/app/dragdropway/components/common/rightclick/edaDragDropWay.rightClick.module.js","webpack:///./src/app/dragdropway/components/common/rightclick/edaDragDropWay.rightClick.directive.js","webpack:///./src/app/dragdropway/components/common/rightclick/edaDragDropWay.rightClick.service.js","webpack:///./src/app/dragdropway/components/configurationModelProxy/edaDragDropWay.configurationModelProxy.module.js","webpack:///./src/app/dragdropway/components/configurationModelProxy/edaDragDropWay.configurationModelProxy.service.js","webpack:///./src/app/dragdropway/components/common/dragAndDropList/dragAndDropList.module.js","webpack:///./src/app/dragdropway/components/common/dragAndDropList/dragAndDropList.dndlist.directive.js","webpack:///./src/app/dragdropway/components/common/dragAndDropList/dragAndDropList.dndDraggable.directive.js","webpack:///./src/app/dragdropway/components/common/pageslide/pageslide.module.js","webpack:///./src/app/dragdropway/components/common/pageslide/pageslide.directive.js","webpack:///./src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.module.js","webpack:///./src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.provider.js","webpack:///./src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.provider.helpers.js","webpack:///./src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.controller.js","webpack:///./src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.controller.helpers.js","webpack:///./src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.directive.js","webpack:///./src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.template.html","webpack:///./src/app/dragdropway/components/common/edaTrustThisFilter/edaDragDropWay.trustThis.module.js","webpack:///./src/app/dragdropway/components/common/edaTrustThisFilter/edaDragDropWay.trustThis.filter.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","root","factory","this","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_apiCheck","_apiCheck2","getApiCheckInstance","apiCheck","api","args","output","config","disabled","globalConfig","apiTypes","argTypes","passed","message","failed","checkApiCheckApi","arguments","Array","isArray","prototype","slice","messages","checkEnoughArgs","length","checkApiWithArgs","returnObject","getTypes","getErrorMessage","checkApiArgs","isArrayOrArgs","Error","prefix","errors","apiCheckApis","handleErrorMessage","getApiCheck","shouldThrow","result","console","warn","getPrefix","onlyPrefix","gOut","trim","getSuffix","s","onlySuffix","suffix","getUrl","u","url","docsBaseUrl","urlSuffix","undefined","join","passedAndShouldHavePassed","buildMessageFromApiAndArgs","replaceFunctionWithName","each","val","name","replacedItems","indexOf","push","displayName","getObjectString","types","stringify","generateMessage","n","useS","keys","newLine","passedArgs","_getTypes","copy","arrayify","map","checker","index","specified","hasOwnProperty","getCheckerDisplay","terse","verbose","addHelpers","arg","getArgDisplay","extraCheckers","apiCheckApiCheck","getApiCheckInstanceCheckers","additionalProperties","throw","utils","apiCheckUtil","wrapper","checkers","getCheckers","checkerIndex","argIndex","res","lastChecker","argName","argFailed","skipPreviousChecker","isOptional","isError","getCheckerErrorMessage","t","checkerTypeType","checkerType","location","apiCheckDataChecker","shape","type","string","optional","bool","asFunc","func","withProperties","__apiCheckData","asShape","wrongShape","oneOfType","getError","checkerHelp","getCheckerHelp","_ref","help","requiredArgs","filter","a","gottenArgs","hasKeys","getDisplayIfNotGotten","getDisplay","cName","constructor","typeOf","properties","argDisplay","v","k","getApiCheckApis","os","checkerFnChecker","shortType","notOptional","notRequired","strict","objectOf","typeOrArrayOf","any","VERSION","internalChecker","getSerialize","fn","decycle","seen","key","getPath","ret","path","unshift","spaces","JSON","_defineProperty","enumerable","configurable","writable","daCopy","RegExp","options","display","short","getCheckerType","typeTypes","iterator","context","eachArry","eachObj","hasOwn","i","list","arry","finalJoin","last","pop","stringType","nAtL","tName","tLocation","thing","undef","setupChecker","getNoop","isNoop","prop","getRequiredVersion","notNullable","addNullable","addOptional","requiredChecker","copyProps","originalChecker","optionalCheck","fixType","nullableCheck","isNullable","nullable","checkerCopy","apply","src","dest","noop","checkerHelpers","typeOfCheckGetter","lType","toLowerCase","funcCheckGetter","functionChecker","apiError","shapeChecker","notFunction","objectCheckGetter","nullType","objectNullOkChecker","objectChecker","nullOk","instanceCheckGetter","classToCheck","oneOfCheckGetter","enums","enum","enm","some","oneOfTypeCheckGetter","typeCheckers","checkersDisplay","arrayOfCheckGetter","shortCheckerDisplay","array","every","item","objectOfCheckGetter","checkerDisplay","notObject","object","allTypesSuccess","typeOrArrayOfCheckGetter","arrayOf","getShapeCheckGetter","shapeCheckGetter","nonObject","modifyTypeDisplayToHelpOut","theRet","required","addHelper","property","objectMessage","stringMessage","error","toUpperCase","parentRequired","strictType","shapeTypes","isObject","shapePropError","shapeError","allowedProperties","extraProps","getRequiredIfNotChecker","all","otherProps","propChecker","props","ifProps","description","getTypeForShapeChild","propName","propExists","iteration","otherPropsExist","otherProp","ifNot","onlyIf","othersPresent","requiredIfNot","argumentsCheckerGetter","number","anyCheckGetter","nullCheckGetter","rangeCheckGetter","min","max","lessThanCheckGetter","greaterThanCheckGetter","emptyObjectCheckGetter","emptyObject","instanceOf","oneOf","range","lessThan","greaterThan","null","_require","__WEBPACK_EXTERNAL_MODULE_16__","__WEBPACK_EXTERNAL_MODULE_17__","_interopRequire","angular","formlyApiCheck","formlyErrorAndWarningsUrlPrefix","formlyUsability","formlyConfig","formlyValidationMessages","formlyUtil","formlyWarn","formlyCustomValidation","formlyField","formlyFocus","formlyForm","formlyNgModelAttrsManipulator","formlyCustomTags","ngModuleName","ngModule","constant","provider","directive","run","shapeRequiredIfNot","shapeRequiredIfNotDefinition","apiCheckFactory","formlyExpression","specifyWrapperType","apiCheckProperty","apiCheckInstanceProperty","apiCheckFunctionProperty","formlyWrapperType","template","templateUrl","overwriteOk","validateOptions","apiCheckInstance","apiCheckFunction","apiCheckOptions","expressionProperties","expression","modelChecker","fieldOptionsApiShape","$$hashKey","model","className","data","templateOptions","modelOptions","updateOn","debounce","allowInvalid","getterSetter","timezone","watcher","listener","validators","noFormControl","hide","hideExpression","ngModelAttrs","attribute","bound","elementAttributes","optionsTypes","link","controller","validation","show","errorExistsAndShouldBeVisible","formControl","runExpressions","resetModel","updateInitialValue","initialValue","defaultValue","formlyFieldOptions","formOptionsApi","formState","removeChromeAutoComplete","fieldGroup","form","typeOptionsDefaultOptions","formlyTypeOptions","defaultOptions","extends","extend","getFieldError","errorInfoSlug","field","toJson","getFormlyError","checkWrapper","checkWrapperTemplate","additionalInfo","formlyTransclude","_this","$get","$inject","formlyUsabilityProvider","setType","forEach","checkType","extendTypeOptions","typeMap","checkOverwrite","extendsType","getType","extendTypeControllerFunction","extendTypeLinkFunction","extendTypeValidateOptionsFunction","extendTypeDefaultOptions","reverseDeepMerge","extendTemplate","extendsCtrl","isDefined","optionsCtrl","$scope","$controller","extendsFn","optionsFn","originalDefaultOptions","mergedOptions","isFunction","extendsDO","optionsDO","optionsDOIsFn","extendsDOIsFn","extendsDefaultOptions","mergedDefaultOptions","extenderOptionsDefaultOptions","newDefaultOptions","throwError","errorContext","setWrapper","_x","_x2","_again","wrapperOptions","getOptionsTypes","getOptionsName","checkWrapperAPI","templateWrappersMap","isString","defaultWrapperName","checkWrapperTypes","newValue","objectName","getWrapper","getWrapperByType","wrappers","removeWrapperByName","removeWrappersForType","disableWarnings","_this2","extras","disableNgModelAttrsManipulator","ngModelAttrsManipulatorPreferUnbound","defaultHideDirective","getFieldId","templateManipulators","preWrapper","postWrapper","addTemplateOptionValueMessage","alternate","validationMessages","templateOptionValue","addStringMessage","viewValue","modelValue","scope","$log","warnInfoSlug","shift","_toConsumableArray","arr","arr2","from","$q","isPromiseLike","then","checkValidators","validatorsWithExtraProps","validator","restrict","require","el","attrs","ctrl","opts","formlyEval","$modelValue","$viewValue","useNewValidatorsApi","setupWithValidators","validatorCollection","isPossiblyAsync","when","reject","setupWithParsers","inFlightValidator","$parsers","isValid","$pending","$setValidity","$http","$compile","$templateCache","FormlyFieldController","$timeout","$parse","currentValue","valueGetterSetter","setter","assign","promise","newVal","simplifyLife","to","setFieldId","formName","$name","formId","setDefaultValue","setInitialValue","mergeFieldOptionsWithTypeDefaults","mergeOptions","properOrder","reverse","typeName","extraOptions","extendOptionsWithDefaults","addModelWatcher","$watch","$setViewValue","$render","$setUntouched","$setPristine","addValidationMessages","invokeControllers","setupFieldGroup","fieldType","getFieldType","checkApi","fieldLink","setFieldGroupTemplate","checkFieldGroupApi","addClass","extraAttributes","setElementTemplate","addAttributes","attr","addClasses","templateString","html","asHtml","contents","watchFormControl","watchFieldNameOrExistence","nameExpressionRegex","nameExpression","exec","watchFieldName","watchFieldExistence","stopWatchingField","fc","stopWatchingShowError","addShowMessagesWatcher","customExpression","errorExistsAndShouldBeVisibleExpression","$invalid","noTouchedButDirty","isUndefined","$touched","$dirty","showError","templateEl","element","ngModelNode","querySelector","getAttribute","callLinkFunctions","thusly","runManipulators","manipulators","chain","manipulator","newTemplate","getFieldTemplate","transcludeInWrappers","append","fromOptionsOrType","getTemplate","isUrl","templatePromise","_ret","httpOptions","cache","get","response","getWrapperOption","runApiCheck","promises","w","wrappersTemplates","wrapperTemplate","totalWrapper","doTransclusion","superWrapper","transcludeEl","find","findByNodeName","replaceWith","typeWrappers","concat","defaultWrapper","instance","transclude","fields","$document","previousEl","doc","$observe","activeElement","focus","focusWait","blur","currentFormId","getRootEl","rootEl","getFieldRootEl","fieldRootEl","getHideDirective","hideDirective","getTrackBy","trackBy","getFormName","bindName","version","minor","copyAttributes","attributes","excluded","arrayAttrs","nodeName","nodeValue","toKebabCase","replace","$1","parentFormAttributes","parent","hasClass","onModelOrFormStateChange","extraLocals","setupOptions","isFieldGroup","initModel","attachKey","setupWatchers","watchers","watchExpression","getWatchExpression","watchListener","getWatchListener","stopWatching","watchDeep","originalExpression","modifyArgs","_slice","originalListener","_len","originalArgs","_key","theFormlyForm","$parent","global","offInstance","onInstance","input","document","createElement","setAttribute","appendChild","addFormlyNgModelAttrsManipulator","ngModelAttrsManipulator","addValidation","addIfNotPresent","modelNodes","addModelOptions","node","addTemplateOptionsAttrs","ep","ngModelAttributes","getBuiltInAttributes","attrVal","attrName","ref","toVal","epVal","getEpValue","inTo","inEp","boolean","skipNgModelAttrsManipulator","innerHTML","querySelectorAll","boundOnly","bothBooleanAndBound","bothAttributeAndBound","expressionOnly","attributeOnly","substr","nodes","addCustomTags","div","isIeLessThan9","getElementsByTagName","customElements","window","$eval","objAndSameType","obj1","obj2","getPrototypeOf","children","extendFunction","fns","__WEBPACK_EXTERNAL_MODULE_2__","__WEBPACK_EXTERNAL_MODULE_3__","__WEBPACK_EXTERNAL_MODULE_8__","addCheckboxType","formlyConfigProvider","formlyBootstrapApiCheck","labelProp","valueProp","checkValidity","expressionValue","valid","setModel","multiCheckbox","checked","checkbox","$setTouched","change","addWrappers","label","_addons","_addons2","_description","_description2","addRadioType","addInputType","addSelectType","ngOptions","groupProp","addTextareaType","rows","cols","addAddonsManipulator","addonTemplate","addonChecker","class","text","onClick","addonLeft","addonRight","addDescriptionManipulator","modelEls","_edaDragDropWayFormlyConfig","_edaDragDropWayFormlyConfig2","_edaDragDropWayDragDropConfig","_edaDragDropWayDragDropConfig2","_edaDragDropWayCore","_edaDragDropWayCore2","_edaDragDropWayLeftPanel","_edaDragDropWayLeftPanel2","_edaDragDropWayFormlyProxyFormFieldManage","_edaDragDropWayFormlyProxyFormFieldManage2","_edaDragDropWayDragdrop","_edaDragDropWayDragdrop2","_edaDragDropWayRightClick","_edaDragDropWayRightClick2","_edaDragDropWayConfigurationModelProxy","_edaDragDropWayConfigurationModelProxy2","_dragAndDropList","_dragAndDropList2","_pageslide","_pageslide2","_edaDragDropWayEdaDragdropWayEasyFormGen","_edaDragDropWayEdaDragdropWayEasyFormGen2","_edaDragDropWayTrustThis","_edaDragDropWayTrustThis2","DRAG_DROP_WAY_MODULE_NAME","DRAG_DROP_MODULES_INJECT","mainModule","EASY_FORM_DD_VERSION_NAME","EASY_FORM_DD_VERSION_VALUE","EasyFormGenFormlyBindingModelsProvider","easyFormDragWayConfigProvider","camelize","match","chr","addEasyFormControlToList","subtitle","group","formlyType","formlySubtype","formlyLabel","formlyRequired","formlyDescription","formlyOptions","addControlToDragDropPresentationModel","control","cssClass","addToGroupCtrl","subTitleTemplate","bindings","binding","angularUIDatePickerTemplate","open","$event","preventDefault","stopPropagation","opened","isOpen","onFocus","datepickerOptions","datepickerPopup","richTexEditorTemplate","basicSelectTemplate","groupedSelectTemplate","dragDropConfigFunct","setItemsNotTocount","itemBeingDragged","_easyFormConfig","_easyFormConfig2","dragdropway","stepway","formviewer","CORE_MODULES","_edaDragDropWayLeftPanel3","_edaDragDropWayLeftPanel4","_edaDragDropWayLeftPanelSelectOptionManage","_edaDragDropWayLeftPanelSelectOptionManage2","_edaDragDropWayLeftPanelControllerModalProxy","_edaDragDropWayLeftPanelControllerModalProxy2","_edaDragDropWayLeftpanelValidEditFooter","_edaDragDropWayLeftpanelValidEditFooter2","_edaDragDropWayLeftpanelTextInputControl","_edaDragDropWayLeftpanelTextInputControl2","_edaDragDropWayLeftpanelTextareaControl","_edaDragDropWayLeftpanelTextareaControl2","_edaDragDropWayLeftpanelSubtitleControl","_edaDragDropWayLeftpanelSubtitleControl2","_edaDragDropWayLeftpanelRichTextEditorControl","_edaDragDropWayLeftpanelRichTextEditorControl2","_edaDragDropWayLeftpanelRadioControl","_edaDragDropWayLeftpanelRadioControl2","_edaDragDropWayLeftpanelPasswordControl","_edaDragDropWayLeftpanelPasswordControl2","_edaDragDropWayLeftpanelHeaderControl","_edaDragDropWayLeftpanelHeaderControl2","_edaDragDropWayLeftpanelGroupedSelectControl","_edaDragDropWayLeftpanelGroupedSelectControl2","_edaDragDropWayLeftpanelDateControl","_edaDragDropWayLeftpanelDateControl2","_edaDragDropWayLeftpanelCheckBoxControl","_edaDragDropWayLeftpanelCheckBoxControl2","_edaDragDropWayLeftpanelBlankControl","_edaDragDropWayLeftpanelBlankControl2","_edaDragDropWayLeftpanelBasicSelectControl","_edaDragDropWayLeftpanelBasicSelectControl2","LEFT_PANEL_MODULE","LEFT_PANEL_DIRECTIVE","LEFT_PANEL_CONTROLLER","service","LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE","CONTROLLER_MODAL_PROXY","LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE","LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE","LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE","LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE","LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE","LEFT_PANEL_RADIO_CONTROL_DIRECTIVE","LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE","LEFT_PANEL_HEADER_CONTROL_DIRECTIVE","LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE","LEFT_PANEL_DATE_CONTROL_DIRECTIVE","LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE","LEFT_PANEL_BLANK_CONTROL_DIRECTIVE","LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE","_classCallCheck","Constructor","TypeError","LEFT_PANEL_CONTROLLERAS","_createClass","defineProperties","target","descriptor","protoProps","staticProps","_edaDragDropWayLeftPanelController","leftPanelController","toaster","$selectOptionMange","controllerModalProxy","init","proxyModel","selectedControl","temporyConfig","basicSelectRowCollection","newOptionBasicSelect","groupedSelectRowCollection","newOptionGroupedSelect","GroupedSelectGroups","newGroupGroupedSelect","groupSelectGroupClick","radioRowCollection","newOptionRadio","demodt","formats","dateFormats","dateOptions","getDateOptions","initNyaSelectConformingSelectedControl","formatYear","startingDay","showWeeks","initDate","controls","modelproxyModel","bindBasicSelectFromProxyModel","self","bindGroupedSelectFromProxyModel","bindRadioFromProxyModel","bindSpecialCtrlTemporyModelsToProxyModel","formlyPlaceholder","initDatePicker","controlName","resetTemporyConfig","addNewOptionRadio","saisie","resultFlag","timeout","title","details","body","showCloseButton","removeOption","upthisOption","downthisOption","addNewOptionBasicSelect","showList","addNewOptionGroupedSelect","setToday","clearDateTime","datetimePickerModel","dt","Date","leftPanel","controllerAs","bindToController","closeEditPanel","saveFromEditPanel","_edaDragDropWayLeftPanelTemplate","_edaDragDropWayLeftPanelTemplate2","_interopRequireWildcard","newObj","_edaDragDropWayLeftPanelSelectOptionManageService","helpers","selectOptionMange","selectObj","textValue","option","newOptionText","fullResponse","checkResult","validOption","newOption","order","newOptionGroup","AtIndex","splice","indexOption","currentOption","zeroModel","INIT_OPTION_MODEL","EasyFormGenFormlyBindingModels","resetProxyModel","editPanelModel","toggle","lineIndex","columnIndex","nyaSelectObj","resetNyaSelect","thisProxyModelToInit","newNyaSelectObj","getEasyFormListControls","newProxyModel","CtrlModalModel","modelToReturn","thisKey","configurationObj","isUnique","lines","j","columns","configurationSelectedCtrl","selectedProxyModelControl","listProxyModelCTRL","subtype","indexLine","numcolumn","extractedProps","placeholder","newKey","now","validKeyUniqueness","edited","getSelectedProxyModel","newEditPanelModel","successfullDone","merge","newColumnIndex","newLineIndex","newToggleValue","bindBasicSelectToProxyModel","bindGroupedSelectToProxyModel","bindRadioToProxyModel","resetNyASelectOptions","filteredgroup","_","uniq","pluck","resetproxyModelOptions","leftPanelValidEditFooter","_edaDragDropWayLeftpanelValidEditFooterTemplate","_edaDragDropWayLeftpanelValidEditFooterTemplate2","leftPanelTextInputControl","_edaDragDropWayLeftpanelTextInputControlTemplate","_edaDragDropWayLeftpanelTextInputControlTemplate2","leftPanelTextareaControl","_edaDragDropWayLeftpanelTextareaControlTemplate","_edaDragDropWayLeftpanelTextareaControlTemplate2","leftPanelSubtitleControl","_edaDragDropWayLeftpanelSubtitleControlTemplate","_edaDragDropWayLeftpanelSubtitleControlTemplate2","leftPanelRichTextEditorControl","_edaDragDropWayLeftpanelRichTextEditorControlTemplate","_edaDragDropWayLeftpanelRichTextEditorControlTemplate2","leftPanelRadioControl","_edaDragDropWayLeftpanelRadioControlTemplate","_edaDragDropWayLeftpanelRadioControlTemplate2","leftPanelPasswordControl","_edaDragDropWayLeftpanelPasswordControlTemplate","_edaDragDropWayLeftpanelPasswordControlTemplate2","leftPanelHeaderControl","_edaDragDropWayLeftpanelHeaderControlTemplate","_edaDragDropWayLeftpanelHeaderControlTemplate2","leftPanelGroupedSelectControl","_edaDragDropWayLeftpanelGroupedSelectControlTemplate","_edaDragDropWayLeftpanelGroupedSelectControlTemplate2","leftPanelDateControl","_edaDragDropWayLeftpanelDateControlTemplate","_edaDragDropWayLeftpanelDateControlTemplate2","leftPanelCheckBoxControl","_edaDragDropWayLeftpanelCheckBoxControlTemplate","_edaDragDropWayLeftpanelCheckBoxControlTemplate2","leftPanelBlankControl","_edaDragDropWayLeftpanelBlankControlTemplate","_edaDragDropWayLeftpanelBlankControlTemplate2","leftPanelBasicSelectControl","_edaDragDropWayLeftpanelBasicSelectControlTemplate","_edaDragDropWayLeftpanelBasicSelectControlTemplate2","_edaDragDropWayFormlyProxyFormFieldManage3","_edaDragDropWayFormlyProxyFormFieldManage4","FORMLY_PROXY_MODULE","FORM_FIELD_MANAGE_SERVICE","EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER","formFieldManage","configurationModel","addStepWayProperties","configurationModelInit","getEasyFormInitialStateConfigurationModel","toString","configurationModelResult","getEasyFormReloadConfigurationModel","getMessageObject","getErrorObject","formlyModel","formlyDataModel","resetFormlyModel","resetDataModel","lineNumber","AddNColumnControl","resetformly","numberOfColumns","rawFormlyModel","indexFormlyModel","column","controlTemplate","headerTextContent","getHeaderTemplateForNcolumnLine","getRawHeaderTemplates","selectedClass","getFormlyControlTemplateForNcolumnLine","emptyDataModel","errorTitle","errorMessage","messageObj","noError","Message","messageTitle","messageBody","getAllParticularControlProperties","_particularControlProperties","addParticularControlProperties","newParticularControlProperty","isAnUpdate","controlProp","controlType","_easyFormListControls","controlDeclaration","getHeaderTemplates","_headerTemplates","addHeaderTemplateCssClass","cssClassToAdd","getFormlyControlTemplate","_formlyControlTemplates","addformlyControlTemplatesCssClass","setFormlyControlTemplate","newFormlyControlTemplate","getFct","getEasyFormListControlsFct","initialConfigurationModel","_easyFormInitialStateConfigurationModel","_easyFormInitialStateConfigurationModelAddOnForStepWay","_easyFormReloadConfigurationModel","getEasyFormEmptyConfigurationLineModel","_easyFormEmptyConfigurationLineModel","getEasyFormConfigurationEmptyControlModel","_emptyControlFieldModel","nbColInLines","textContent","parseInt","headerToReturn","simpleHtml1","simpleHtml2","getRawFormlyControlTemplates","controlToReturn","aPropToAdd","isRoot","isTemplateOptions","_typeof","initEasyFormListControls","initEasyFormEmptyConfigurationLineModel","initEmptyControlFieldModel","initEasyFormInitialStateConfigurationModel","initEasyFormInitialStateConfigurationModelAddOnForStepWay","initEasyFormReloadConfigurationModel","initHeaderTemplates","initFormlyControlTemplates","initParticularControlProperties","Symbol","_edaDragDropWayFormlyProxyFormFieldManageProvider","line","activeColumn","numColumn","exist","submitButtonText","cancelButtonText","activeLine","listConfigStep","stepIndicators","configStepCounter","reloadConfigModel","headerTemplate","html_part1","html_part2","html_part3","html_part4","_edaDragDropWayDragdropDdContentCounter","_edaDragDropWayDragdropDdContentCounter2","_edaDragDropWayDragdropDdContentCounter3","_edaDragDropWayDragdropDdContentCounter4","_edaDragDropWayDragdropDdDecorContainer","_edaDragDropWayDragdropDdDecorContainer2","_edaDragDropWayDragdropDdDecorContainer3","_edaDragDropWayDragdropDdDecorContainer4","_edaDragDropWayDragdropDdDecorDropZone","_edaDragDropWayDragdropDdDecorDropZone2","_edaDragDropWayDragdropDdDecorItem","_edaDragDropWayDragdropDdDecorItem2","_edaDragDropWayDragdropDdDecorItem3","_edaDragDropWayDragdropDdDecorItem4","_edaDragDropWayDragdropDdDecorLine","_edaDragDropWayDragdropDdDecorLine2","_edaDragDropWayDragdropDdNoEditableControl","_edaDragDropWayDragdropDdNoEditableControl2","DRAGDROP_MODULE","DD_CONTENT_COUNTER_DIRECTIVE","DD_DECOR_CONTAINER_CONTROLLER_NAME","DD_DECOR_CONTAINER_DIRECTIVE","DD_DECOR_DROPZONE_DIRECTIVE","DRAG_DROP_DECOR_ITEM","DRAG_DROP_ITEM_DECOR_SERVICE","DRAG_DROP_NO_EDITABLE_CONTROL","DRAG_DROP_ITEM_COUNTER_SERVICE","DRAG_DROP_DECOR_LINE","ddContentCounter","dragDropItemCounterService","linkfct","timer","oldValue","newRealCount","listClassForThisRow","isHtmlElementToCount","classList","isReal","contentRealCount","updateLineItemCss","fullModel","parentIndex","currentIndex","$on","cancel","valueWhenPlaceholder","valueWhendragging","forceRefresh","easyFormDragWayConfig","_modelItemRealCounter","_itemsNotToCount","getItemsNotToCount","htmlvalue","isToCount","classes","listCssToApply","columIndex","realCount","getItemCssDependingNumberItemsInRow","ddDecorContainer","linkFct","verboseModeActive","ddDecorContainerCtrl","verboseMode","isCollapsed","isEnabled","isStillCollapsed","oldVal","$index","lowercase","dir","whoAmI","verbodeMode","ParentParentIndex","ParentIndex","styleParam","columnindex","currentTitle","contentClone","childDiv","collpaseAll","_edaDragDropWayDragdropDdDecorContainerTemplate","_edaDragDropWayDragdropDdDecorContainerTemplate2","DD_DECOR_CONTAINER_CONTROLLERAS_NAME","ddDecorContainerController","icons","closedClass","exceptThisOne","WhenIndex","ddDecorDropZone","headerConfig","HeaderButtonVisible","affixAttr","affixEnabled","fontAwesomeIcon","currentFontAwesome","addNewLineFct","_edaDragDropWayDragdropDdDecorDropZoneTemplate","_edaDragDropWayDragdropDdDecorDropZoneTemplate2","ddDecorItem","listClass","getDistinctItemCssClass","css","removeClass","parentParentIndex","lineItemsCount","_edaDragDropWayDragdropDdDecorItemTemplate","_edaDragDropWayDragdropDdDecorItemTemplate2","dragDropItemDecorationService","_listItemClass","getListItemCssClass","thisNumber","indexColumn","numberItems","restrictToThisIndexColumn","cpt","ddDecorLine","deleteLine","readyToDelete","dblClickCount","removeMe","event","removeLine","cancelDelete","_edaDragDropWayDragdropDdDecorLineTemplate","_edaDragDropWayDragdropDdDecorLineTemplate2","ddNoEditableControl","on","_edaDragDropWayRightClick3","_edaDragDropWayRightClick4","EDA_RIGHT_CLICK_MODULE","EDA_RIGHT_CLICK_DIRECTIVE","EDA_RIGHT_CLICKED_MANAGER_SERVICE","edaRightClick","edaRightClickColIndex","fctSetRightclicked","edaSetRightClicked","$apply","ddItemRightClickedManager","dragDropModelItem","rightCliked","dragDropModel","EDA_CONFIG_PROXY_MODULE","DRAG_DROP_CONFIG_PROXY_SERVICE","ddModelConfModelProxyService","configModel","ddModel","lineValue","keyValue","applyThisLine","colValue","colIndex","controlToBind","getFormlyDetailedControlModelFromDragDropObject","formlyDetailedControlModel","configModelControl","newClassName","bindConfigCtrlModelFromFormlyDetailedCtrlModel","aConfigLine","aConfigLineIndex","aConfigControl","aConfigControlIndex","dragdropControlRef","groupOfCtrlRef","aCtrlref","cssClassToApply","ddControlToUpdate","dragDrapCtrlModel","controlModel","listControl","controlsListGetter","ctrlListValue","baseKeyValue","linevalue","aLineValue","aLineKey","formlyDetailCtrlModel","configurationCtrlModel","createUniqueKey","_dragAndDropListDndlist","_dragAndDropListDndlist2","_dragAndDropListDndDraggable","_dragAndDropListDndDraggable2","DRAG_DROP_LIST_MODULE","DNDLIST_DIRECTIVE","DNDDRAGGABLE_DIRECTIVE","dndList","dndDropEffectWorkaround","dndDragTypeWorkaround","isMouseInFirstHalf","targetNode","relativeToParent","mousePointer","horizontal","offsetX","layerX","offsetY","layerY","targetSize","offsetWidth","offsetHeight","targetPosition","offsetLeft","offsetTop","getPlaceholderIndex","listNode","placeholderNode","isDropAllowed","isDragging","externalSources","hasTextMimetype","dataTransfer","dndAllowedTypes","allowed","dragType","dndDisableIf","stopDragover","remove","invokeCallback","external","dndHorizontalList","dndExternalSources","originalEvent","parentNode","listItemNode","insertBefore","nextSibling","previousElementSibling","nextElementSibling","dndDragover","transferredObject","getData","parse","e","dndDrop","targetArray","dropEffect","effectAllowed","ctrlKey","TO_INJECT","dndDraggable","setData","dndEffectAllowed","dndType","dndDragstart","dndMoved","dndCopied","dndSelected","dragDrop","PAGE_SLIDE_MODULE","PAGE_SLIDE_DIRECTIVE","pageslide","psClose","slider","param","style","width","cloak","content","side","squeeze","right","left","height","top","bottom","psOpen","size","setTimeout","speed","psSide","psSpeed","psSize","zindex","psClass","psCloak","Boolean","psSqueeze","psPush","container","psContainer","getElementById","tagName","zIndex","position","overflow","transitionDuration","webkitTransitionDuration","transitionProperty","psCustomHeight","psCustomTop","psCustomBottom","psCustomRight","psCustomLeft","psCustomWidth","removeChild","psAutoClose","_edaDragDropWayEdaDragdropWayEasyFormGen3","_edaDragDropWayEdaDragdropWayEasyFormGen4","_edaDragDropWayEdaDragdropWayEasyFormGen5","_edaDragDropWayEdaDragdropWayEasyFormGen6","EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME","DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER","EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE","setListItemCssClass","fromConfig","_listDragDropItemCssClasses","getItemsNotTocount","_itemsNotToCountFoReal","defaultConfig","_defaultConfiguration","modalAnimated","controlToAdd","groupToAdd","addToGroupControl","getDragDropPresentationModel","_dragDropPresentationModel","getDefaultshowPreviewPanel","getDefaultShowPreviewModel","controlsList","enabled","showPreviewPanel","wantToShow","_showPreviewPanel","showPreviewModels","_showPreviewModels","getEnabledControls","_controlsList","disableControl","aControl","enableControl","setModalAnimation","flagConfig","valueToApply","_configuration","getModalAnimation","easyFormDragDropWayConfigGET","setDragDropConfigContainerDecorationCollapse","dragDropConfigModel","indexValue","isCollapsedBool","containerConfig","decoration","getDragDropConfigModel","_dragDropConfigModel","distinctCssClass","valueRef","cssClassRef","canAdd","valueProc","cssClassProc","numberOfItems","classToReturn","numberItemPerRow","getModalAnimationValue","setModalAnimationFct","getListEnabledControl","isPreviewPanelVisible","arePreviewModelsVisible","thisControl","thisGroup","missingGroupNumber","groupConfig","groupId","_edaDragDropWayEdaDragdropWayEasyFormGenProvider","LIST_DRAG_DROP_ITEM_CSS_CLASSES","DRAG_DROP_CONFIG_MODEL","DRAG_DROP_PRESENTATION_MODEL","ITEMS_NOT_TO_COUNT_FOR_REAL","configuration","dropZoneConfig","ApplycssClass","collapseEnabled","collapseCtrl","atIndex","collapse","itemConfig","DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS","_edaDragDropWayEdaDragdropWayEasyFormGenControllerHelpers","edaDragDropWayEasyFormGenCtrl","easyFormGenVersion","$filter","$anchorScroll","easyFormGeneratorVERSION","tab","initTabModel","returnSaveEvent","dataModel","wfFormFields","wfFormFieldsOnlyNeededProperties","ihm","initIhmModel","easyFormDragDropProperties","MaxNumberOfColumns","MinNumberOfColumns","animationsEnabled","debugProxyModel","ProxyModel","initConfigurationEditFromScratch","initProxyModel","allExceptThisGroupIndex","countConfigurationModelLines","clear","parentparentIndex","allowedType","timerRefreshDDToConfig","refreshAllConfigurationFromDragAndDropModel","applyConfigurationToformlyModel","refreshControlsKeys","itemIndex","realIndex","parentParentParentIndex","_this3","setUnRightClicked","bindConfigurationModelFromProxyModel","getEditPanelModelLineIndex","getEditPanelModelColumnIndex","setEditPanelModelToggle","getEditPanelModelToggle","resetAllDragDropItemSelectedState","previousState","_this4","getEditPanelModelControl","equals","timerCloseOpenedEditPanel","setEditPanelModelLineIndex","setEditPanelModelColumnIndex","setEditPanelModelControl","setProxyModelFromConfigurationSelection","addNewline","DEBUG_MODEL","showDebug","configurationModelNumberofLines","initDebugModel","DEFAULT_TAB_MODEL","editTab","active","previewTab","tabVisible","modelsVisible","_tabModel","COLUMN_TEMPLATE","initColumnTemplate","LINE_TEMPLATE","initLineTemplate","DEFAULT_IHM_MODEL","preview","formlyModelViewExpanded","formlyFieldsViewExpanded","customizeFormButtonsExpanded","saveThisFormExpanded","edaDragdropWayEasyFormGen","returnAttributeConfigurationLinesIfNotEmpty","edaEasyFormGeneratorModelToReturn","edaEasyFormGeneratorModel","edaFieldsModel","emptyEdaFieldsModel","emptyModel","returnAttributeDataModelIfNotEmpty","dataModelToReturn","loadExistingConfigurationModel","configlines","vm","configurationLoaded","bindConfigurationLines","loadDragDropModelFromConfigurationModel","updateConfigurationClassName","btnSubmitText","btnCancelText","aline","_easyFormGeneratorModel","edaFieldsModelStringified","formlyFieldsModel","edaSaveFormEvent","_edaDragDropWayEdaDragdropWayEasyFormGenTemplate","_edaDragDropWayEdaDragdropWayEasyFormGenTemplate2","TRUST_THIS_FILTER_MODULE","TRUST_THIS_FILTER_NAME","trustThis","$sce","trustAs"],"mappings":"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","file":"eda.dragdropway.min.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t__webpack_require__(1);\n\t\n\t__webpack_require__(6);\n\t\n\t__webpack_require__(10);\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t__webpack_require__(2);\n\t\n\t__webpack_require__(3);\n\t\n\t__webpack_require__(5);\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! api-check version 7.5.5 built with ♥ by Kent C. Dodds (http://kent.doddsfamily.us) (ó ì_í)=óò=(ì_í ò)\n\t\n\t(function webpackUniversalModuleDefinition(root, factory) {\n\t\tif(true)\n\t\t\tmodule.exports = factory();\n\t\telse if(typeof define === 'function' && define.amd)\n\t\t\tdefine(factory);\n\t\telse if(typeof exports === 'object')\n\t\t\texports[\"apiCheck\"] = factory();\n\t\telse\n\t\t\troot[\"apiCheck\"] = factory();\n\t})(this, function() {\n\treturn /******/ (function(modules) { // webpackBootstrap\n\t/******/ \t// The module cache\n\t/******/ \tvar installedModules = {};\n\t\n\t/******/ \t// The require function\n\t/******/ \tfunction __webpack_require__(moduleId) {\n\t\n\t/******/ \t\t// Check if module is in cache\n\t/******/ \t\tif(installedModules[moduleId])\n\t/******/ \t\t\treturn installedModules[moduleId].exports;\n\t\n\t/******/ \t\t// Create a new module (and put it into the cache)\n\t/******/ \t\tvar module = installedModules[moduleId] = {\n\t/******/ \t\t\texports: {},\n\t/******/ \t\t\tid: moduleId,\n\t/******/ \t\t\tloaded: false\n\t/******/ \t\t};\n\t\n\t/******/ \t\t// Execute the module function\n\t/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\n\t/******/ \t\t// Flag the module as loaded\n\t/******/ \t\tmodule.loaded = true;\n\t\n\t/******/ \t\t// Return the exports of the module\n\t/******/ \t\treturn module.exports;\n\t/******/ \t}\n\t\n\t\n\t/******/ \t// expose the modules object (__webpack_modules__)\n\t/******/ \t__webpack_require__.m = modules;\n\t\n\t/******/ \t// expose the module cache\n\t/******/ \t__webpack_require__.c = installedModules;\n\t\n\t/******/ \t// __webpack_public_path__\n\t/******/ \t__webpack_require__.p = \"\";\n\t\n\t/******/ \t// Load entry module and return exports\n\t/******/ \treturn __webpack_require__(0);\n\t/******/ })\n\t/************************************************************************/\n\t/******/ ([\n\t/* 0 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\t\tvar _apiCheck = __webpack_require__(1);\n\t\n\t\tvar _apiCheck2 = _interopRequireDefault(_apiCheck);\n\t\n\t\texports['default'] = _apiCheck2['default'];\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 1 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tvar stringify = __webpack_require__(2);\n\t\tvar apiCheckUtil = __webpack_require__(3);\n\t\tvar each = apiCheckUtil.each;\n\t\tvar isError = apiCheckUtil.isError;\n\t\tvar t = apiCheckUtil.t;\n\t\tvar arrayify = apiCheckUtil.arrayify;\n\t\tvar getCheckerDisplay = apiCheckUtil.getCheckerDisplay;\n\t\tvar typeOf = apiCheckUtil.typeOf;\n\t\tvar getError = apiCheckUtil.getError;\n\t\n\t\tvar checkers = __webpack_require__(4);\n\t\tvar apiCheckApis = getApiCheckApis();\n\t\n\t\tmodule.exports = getApiCheckInstance;\n\t\tmodule.exports.VERSION = (\"7.5.5\");\n\t\tmodule.exports.utils = apiCheckUtil;\n\t\tmodule.exports.globalConfig = {\n\t\t verbose: false,\n\t\t disabled: false\n\t\t};\n\t\n\t\tvar apiCheckApiCheck = getApiCheckInstance({\n\t\t output: { prefix: 'apiCheck' }\n\t\t});\n\t\tmodule.exports.internalChecker = apiCheckApiCheck;\n\t\n\t\teach(checkers, function (checker, name) {\n\t\t return module.exports[name] = checker;\n\t\t});\n\t\n\t\tfunction getApiCheckInstance() {\n\t\t var config = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t\t var extraCheckers = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\t\n\t\t /* eslint complexity:[2, 6] */\n\t\t if (apiCheckApiCheck && arguments.length) {\n\t\t apiCheckApiCheck['throw'](apiCheckApis.getApiCheckInstanceCheckers, arguments, {\n\t\t prefix: 'creating an apiCheck instance'\n\t\t });\n\t\t }\n\t\n\t\t var additionalProperties = {\n\t\t 'throw': getApiCheck(true),\n\t\t warn: getApiCheck(false),\n\t\t getErrorMessage: getErrorMessage,\n\t\t handleErrorMessage: handleErrorMessage,\n\t\t config: {\n\t\t output: config.output || {\n\t\t prefix: '',\n\t\t suffix: '',\n\t\t docsBaseUrl: ''\n\t\t },\n\t\t verbose: config.verbose || false,\n\t\t disabled: config.disabled || false\n\t\t },\n\t\t utils: apiCheckUtil\n\t\t };\n\t\n\t\t each(additionalProperties, function (wrapper, name) {\n\t\t return apiCheck[name] = wrapper;\n\t\t });\n\t\n\t\t var disabled = apiCheck.disabled || module.exports.globalConfig.disabled;\n\t\t each(checkers.getCheckers(disabled), function (checker, name) {\n\t\t return apiCheck[name] = checker;\n\t\t });\n\t\t each(extraCheckers, function (checker, name) {\n\t\t return apiCheck[name] = checker;\n\t\t });\n\t\n\t\t return apiCheck;\n\t\n\t\t /**\n\t\t * This is the instance function. Other things are attached to this see additional properties above.\n\t\t * @param {Array} api - the checkers to check with\n\t\t * @param {Array} args - the args to check\n\t\t * @param {Object} output - output options\n\t\t * @returns {Object} - if this has a failed = true property, then it failed\n\t\t */\n\t\t function apiCheck(api, args, output) {\n\t\t /* eslint complexity:[2, 8] */\n\t\t if (apiCheck.config.disabled || module.exports.globalConfig.disabled) {\n\t\t return {\n\t\t apiTypes: {}, argTypes: {},\n\t\t passed: true, message: '',\n\t\t failed: false\n\t\t }; // empty version of what is normally returned\n\t\t }\n\t\t checkApiCheckApi(arguments);\n\t\t if (!Array.isArray(api)) {\n\t\t api = [api];\n\t\t args = [args];\n\t\t } else {\n\t\t // turn arguments into an array\n\t\t args = Array.prototype.slice.call(args);\n\t\t }\n\t\t var messages = checkEnoughArgs(api, args);\n\t\t if (!messages.length) {\n\t\t // this is where we actually go perform the checks.\n\t\t messages = checkApiWithArgs(api, args);\n\t\t }\n\t\n\t\t var returnObject = getTypes(api, args);\n\t\t returnObject.args = args;\n\t\t if (messages.length) {\n\t\t returnObject.message = apiCheck.getErrorMessage(api, args, messages, output);\n\t\t returnObject.failed = true;\n\t\t returnObject.passed = false;\n\t\t } else {\n\t\t returnObject.message = '';\n\t\t returnObject.failed = false;\n\t\t returnObject.passed = true;\n\t\t }\n\t\t return returnObject;\n\t\t }\n\t\n\t\t /**\n\t\t * checkApiCheckApi, should be read like: check apiCheck api. As in, check the api for apiCheck :-)\n\t\t * @param {Array} checkApiArgs - args provided to apiCheck function\n\t\t */\n\t\t function checkApiCheckApi(checkApiArgs) {\n\t\t var api = checkApiArgs[0];\n\t\t var args = checkApiArgs[1];\n\t\t var isArrayOrArgs = Array.isArray(args) || args && typeof args === 'object' && typeof args.length === 'number';\n\t\n\t\t if (Array.isArray(api) && !isArrayOrArgs) {\n\t\t throw new Error(getErrorMessage(api, [args], ['If an array is provided for the api, an array must be provided for the args as well.'], { prefix: 'apiCheck' }));\n\t\t }\n\t\t // dog fooding here\n\t\t var errors = checkApiWithArgs(apiCheckApis.checkApiCheckApi, checkApiArgs);\n\t\t if (errors.length) {\n\t\t var message = apiCheck.getErrorMessage(apiCheckApis.checkApiCheckApi, checkApiArgs, errors, {\n\t\t prefix: 'apiCheck'\n\t\t });\n\t\t apiCheck.handleErrorMessage(message, true);\n\t\t }\n\t\t }\n\t\n\t\t function getApiCheck(shouldThrow) {\n\t\t return function apiCheckWrapper(api, args, output) {\n\t\t var result = apiCheck(api, args, output);\n\t\t apiCheck.handleErrorMessage(result.message, shouldThrow);\n\t\t return result; // wont get here if an error is thrown\n\t\t };\n\t\t }\n\t\n\t\t function handleErrorMessage(message, shouldThrow) {\n\t\t if (shouldThrow && message) {\n\t\t throw new Error(message);\n\t\t } else if (message) {\n\t\t /* eslint no-console:0 */\n\t\t console.warn(message);\n\t\t }\n\t\t }\n\t\n\t\t function getErrorMessage(api, args) {\n\t\t var messages = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];\n\t\t var output = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];\n\t\n\t\t var gOut = apiCheck.config.output || {};\n\t\t var prefix = getPrefix();\n\t\t var suffix = getSuffix();\n\t\t var url = getUrl();\n\t\t var message = 'apiCheck failed! ' + messages.join(', ');\n\t\t var passedAndShouldHavePassed = '\\n\\n' + buildMessageFromApiAndArgs(api, args);\n\t\t return (prefix + ' ' + message + ' ' + suffix + ' ' + (url || '') + passedAndShouldHavePassed).trim();\n\t\n\t\t function getPrefix() {\n\t\t var p = output.onlyPrefix;\n\t\t if (!p) {\n\t\t p = ((gOut.prefix || '') + ' ' + (output.prefix || '')).trim();\n\t\t }\n\t\t return p;\n\t\t }\n\t\n\t\t function getSuffix() {\n\t\t var s = output.onlySuffix;\n\t\t if (!s) {\n\t\t s = ((output.suffix || '') + ' ' + (gOut.suffix || '')).trim();\n\t\t }\n\t\t return s;\n\t\t }\n\t\n\t\t function getUrl() {\n\t\t var u = output.url;\n\t\t if (!u) {\n\t\t u = gOut.docsBaseUrl && output.urlSuffix && ('' + gOut.docsBaseUrl + output.urlSuffix).trim();\n\t\t }\n\t\t return u;\n\t\t }\n\t\t }\n\t\n\t\t function buildMessageFromApiAndArgs(api, args) {\n\t\t var _getTypes = getTypes(api, args);\n\t\n\t\t var apiTypes = _getTypes.apiTypes;\n\t\t var argTypes = _getTypes.argTypes;\n\t\n\t\t var copy = Array.prototype.slice.call(args || []);\n\t\t var replacedItems = [];\n\t\t replaceFunctionWithName(copy);\n\t\t var passedArgs = getObjectString(copy);\n\t\t argTypes = getObjectString(argTypes);\n\t\t apiTypes = getObjectString(apiTypes);\n\t\n\t\t return generateMessage();\n\t\n\t\t // functions\n\t\n\t\t function replaceFunctionWithName(obj) {\n\t\t each(obj, function (val, name) {\n\t\t /* eslint complexity:[2, 6] */\n\t\t if (replacedItems.indexOf(val) === -1) {\n\t\t // avoid recursive problems\n\t\t replacedItems.push(val);\n\t\t if (typeof val === 'object') {\n\t\t replaceFunctionWithName(obj);\n\t\t } else if (typeof val === 'function') {\n\t\t obj[name] = val.displayName || val.name || 'anonymous function';\n\t\t }\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function getObjectString(types) {\n\t\t if (!types || !types.length) {\n\t\t return 'nothing';\n\t\t } else if (types && types.length === 1) {\n\t\t types = types[0];\n\t\t }\n\t\t return stringify(types, null, 2);\n\t\t }\n\t\n\t\t function generateMessage() {\n\t\t var n = '\\n';\n\t\t var useS = true;\n\t\t if (args && args.length === 1) {\n\t\t if (typeof args[0] === 'object' && args[0] !== null) {\n\t\t useS = !!Object.keys(args[0]).length;\n\t\t } else {\n\t\t useS = false;\n\t\t }\n\t\t }\n\t\t var types = 'type' + (useS ? 's' : '');\n\t\t var newLine = n + n;\n\t\t return 'You passed:' + n + passedArgs + newLine + ('With the ' + types + ':' + n + argTypes + newLine) + ('The API calls for:' + n + apiTypes);\n\t\t }\n\t\t }\n\t\n\t\t function getTypes(api, args) {\n\t\t api = arrayify(api);\n\t\t args = arrayify(args);\n\t\t var apiTypes = api.map(function (checker, index) {\n\t\t var specified = module.exports.globalConfig.hasOwnProperty('verbose');\n\t\t return getCheckerDisplay(checker, {\n\t\t terse: specified ? !module.exports.globalConfig.verbose : !apiCheck.config.verbose,\n\t\t obj: args[index],\n\t\t addHelpers: true\n\t\t });\n\t\t });\n\t\t var argTypes = args.map(function (arg) {\n\t\t return getArgDisplay(arg, []);\n\t\t });\n\t\t return { argTypes: argTypes, apiTypes: apiTypes };\n\t\t }\n\t\t}\n\t\n\t\t// STATELESS FUNCTIONS\n\t\n\t\t/**\n\t\t * This is where the magic happens for actually checking the arguments with the api.\n\t\t * @param {Array} api - checkers\n\t\t * @param {Array} args - and arguments object\n\t\t * @returns {Array} - the error messages\n\t\t */\n\t\tfunction checkApiWithArgs(api, args) {\n\t\t /* eslint complexity:[2, 7] */\n\t\t var messages = [];\n\t\t var failed = false;\n\t\t var checkerIndex = 0;\n\t\t var argIndex = 0;\n\t\t var arg = undefined,\n\t\t checker = undefined,\n\t\t res = undefined,\n\t\t lastChecker = undefined,\n\t\t argName = undefined,\n\t\t argFailed = undefined,\n\t\t skipPreviousChecker = undefined;\n\t\t /* jshint -W084 */\n\t\t while ((checker = api[checkerIndex++]) && argIndex < args.length) {\n\t\t arg = args[argIndex++];\n\t\t argName = 'Argument ' + argIndex + (checker.isOptional ? ' (optional)' : '');\n\t\t res = checker(arg, 'value', argName);\n\t\t argFailed = isError(res);\n\t\t lastChecker = checkerIndex >= api.length;\n\t\t skipPreviousChecker = checkerIndex > 1 && api[checkerIndex - 1].isOptional;\n\t\t if (argFailed && lastChecker || argFailed && !lastChecker && !checker.isOptional && !skipPreviousChecker) {\n\t\t failed = true;\n\t\t messages.push(getCheckerErrorMessage(res, checker, arg));\n\t\t } else if (argFailed && checker.isOptional) {\n\t\t argIndex--;\n\t\t } else {\n\t\t messages.push(t(argName) + ' passed');\n\t\t }\n\t\t }\n\t\t return failed ? messages : [];\n\t\t}\n\t\n\t\tcheckerTypeType.type = 'function with __apiCheckData property and `${function.type}` property';\n\t\tfunction checkerTypeType(checkerType, name, location) {\n\t\t var apiCheckDataChecker = checkers.shape({\n\t\t type: checkers.string,\n\t\t optional: checkers.bool\n\t\t });\n\t\t var asFunc = checkers.func.withProperties({ __apiCheckData: apiCheckDataChecker });\n\t\t var asShape = checkers.shape({ __apiCheckData: apiCheckDataChecker });\n\t\t var wrongShape = checkers.oneOfType([asFunc, asShape])(checkerType, name, location);\n\t\t if (isError(wrongShape)) {\n\t\t return wrongShape;\n\t\t }\n\t\t if (typeof checkerType !== 'function' && !checkerType.hasOwnProperty(checkerType.__apiCheckData.type)) {\n\t\t return getError(name, location, checkerTypeType.type);\n\t\t }\n\t\t}\n\t\n\t\tfunction getCheckerErrorMessage(res, checker, val) {\n\t\t var checkerHelp = getCheckerHelp(checker, val);\n\t\t checkerHelp = checkerHelp ? ' - ' + checkerHelp : '';\n\t\t return res.message + checkerHelp;\n\t\t}\n\t\n\t\tfunction getCheckerHelp(_ref, val) {\n\t\t var help = _ref.help;\n\t\n\t\t if (!help) {\n\t\t return '';\n\t\t }\n\t\t if (typeof help === 'function') {\n\t\t help = help(val);\n\t\t }\n\t\t return help;\n\t\t}\n\t\n\t\tfunction checkEnoughArgs(api, args) {\n\t\t var requiredArgs = api.filter(function (a) {\n\t\t return !a.isOptional;\n\t\t });\n\t\t if (args.length < requiredArgs.length) {\n\t\t return ['Not enough arguments specified. Requires `' + requiredArgs.length + '`, you passed `' + args.length + '`'];\n\t\t } else {\n\t\t return [];\n\t\t }\n\t\t}\n\t\n\t\tfunction getArgDisplay(arg, gottenArgs) {\n\t\t /* eslint complexity:[2, 7] */\n\t\t var cName = arg && arg.constructor && arg.constructor.name;\n\t\t var type = typeOf(arg);\n\t\t if (type === 'function') {\n\t\t if (hasKeys()) {\n\t\t var properties = stringify(getDisplayIfNotGotten());\n\t\t return cName + ' (with properties: ' + properties + ')';\n\t\t }\n\t\t return cName;\n\t\t }\n\t\n\t\t if (arg === null) {\n\t\t return 'null';\n\t\t }\n\t\n\t\t if (type !== 'array' && type !== 'object') {\n\t\t return type;\n\t\t }\n\t\n\t\t if (hasKeys()) {\n\t\t return getDisplayIfNotGotten();\n\t\t }\n\t\n\t\t return cName;\n\t\n\t\t // utility functions\n\t\t function hasKeys() {\n\t\t return arg && Object.keys(arg).length;\n\t\t }\n\t\n\t\t function getDisplayIfNotGotten() {\n\t\t if (gottenArgs.indexOf(arg) !== -1) {\n\t\t return '[Circular]';\n\t\t }\n\t\t gottenArgs.push(arg);\n\t\t return getDisplay(arg, gottenArgs);\n\t\t }\n\t\t}\n\t\n\t\tfunction getDisplay(obj, gottenArgs) {\n\t\t var argDisplay = {};\n\t\t each(obj, function (v, k) {\n\t\t return argDisplay[k] = getArgDisplay(v, gottenArgs);\n\t\t });\n\t\t return argDisplay;\n\t\t}\n\t\n\t\tfunction getApiCheckApis() {\n\t\t var os = checkers.string.optional;\n\t\n\t\t var checkerFnChecker = checkers.func.withProperties({\n\t\t type: checkers.oneOfType([checkers.string, checkerTypeType]).optional,\n\t\t displayName: checkers.string.optional,\n\t\t shortType: checkers.string.optional,\n\t\t notOptional: checkers.bool.optional,\n\t\t notRequired: checkers.bool.optional\n\t\t });\n\t\n\t\t var getApiCheckInstanceCheckers = [checkers.shape({\n\t\t output: checkers.shape({\n\t\t prefix: checkers.string.optional,\n\t\t suffix: checkers.string.optional,\n\t\t docsBaseUrl: checkers.string.optional\n\t\t }).strict.optional,\n\t\t verbose: checkers.bool.optional,\n\t\t disabled: checkers.bool.optional\n\t\t }).strict.optional, checkers.objectOf(checkerFnChecker).optional];\n\t\n\t\t var checkApiCheckApi = [checkers.typeOrArrayOf(checkerFnChecker), checkers.any.optional, checkers.shape({\n\t\t prefix: os, suffix: os, urlSuffix: os, // appended case\n\t\t onlyPrefix: os, onlySuffix: os, url: os // override case\n\t\t }).strict.optional];\n\t\n\t\t return {\n\t\t checkerFnChecker: checkerFnChecker,\n\t\t getApiCheckInstanceCheckers: getApiCheckInstanceCheckers,\n\t\t checkApiCheckApi: checkApiCheckApi\n\t\t };\n\t\t}\n\t\n\t/***/ },\n\t/* 2 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = stringify;\n\t\n\t\tfunction getSerialize (fn, decycle) {\n\t\t var seen = [], keys = [];\n\t\t decycle = decycle || function(key, value) {\n\t\t return '[Circular ' + getPath(value, seen, keys) + ']'\n\t\t };\n\t\t return function(key, value) {\n\t\t var ret = value;\n\t\t if (typeof value === 'object' && value) {\n\t\t if (seen.indexOf(value) !== -1)\n\t\t ret = decycle(key, value);\n\t\t else {\n\t\t seen.push(value);\n\t\t keys.push(key);\n\t\t }\n\t\t }\n\t\t if (fn) ret = fn(key, ret);\n\t\t return ret;\n\t\t }\n\t\t}\n\t\n\t\tfunction getPath (value, seen, keys) {\n\t\t var index = seen.indexOf(value);\n\t\t var path = [ keys[index] ];\n\t\t for (index--; index >= 0; index--) {\n\t\t if (seen[index][ path[0] ] === value) {\n\t\t value = seen[index];\n\t\t path.unshift(keys[index]);\n\t\t }\n\t\t }\n\t\t return '~' + path.join('.');\n\t\t}\n\t\n\t\tfunction stringify(obj, fn, spaces, decycle) {\n\t\t return JSON.stringify(obj, getSerialize(fn, decycle), spaces);\n\t\t}\n\t\n\t\tstringify.getSerialize = getSerialize;\n\t\n\t\n\t/***/ },\n\t/* 3 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\t\tvar stringify = __webpack_require__(2);\n\t\tvar checkerHelpers = {\n\t\t addOptional: addOptional, getRequiredVersion: getRequiredVersion, setupChecker: setupChecker, addNullable: addNullable\n\t\t};\n\t\n\t\tmodule.exports = {\n\t\t each: each, copy: copy, typeOf: typeOf, arrayify: arrayify, getCheckerDisplay: getCheckerDisplay,\n\t\t isError: isError, list: list, getError: getError, nAtL: nAtL, t: t, undef: undef, checkerHelpers: checkerHelpers,\n\t\t noop: noop\n\t\t};\n\t\n\t\tfunction copy(obj) {\n\t\t var type = typeOf(obj);\n\t\t var daCopy = undefined;\n\t\t if (type === 'array') {\n\t\t daCopy = [];\n\t\t } else if (type === 'object') {\n\t\t daCopy = {};\n\t\t } else {\n\t\t return obj;\n\t\t }\n\t\t each(obj, function (val, key) {\n\t\t daCopy[key] = val; // cannot single-line this because we don't want to abort the each\n\t\t });\n\t\t return daCopy;\n\t\t}\n\t\n\t\tfunction typeOf(obj) {\n\t\t if (Array.isArray(obj)) {\n\t\t return 'array';\n\t\t } else if (obj instanceof RegExp) {\n\t\t return 'object';\n\t\t } else {\n\t\t return typeof obj;\n\t\t }\n\t\t}\n\t\n\t\tfunction getCheckerDisplay(checker, options) {\n\t\t /* eslint complexity:[2, 7] */\n\t\t var display = undefined;\n\t\t var short = options && options.short;\n\t\t if (short && checker.shortType) {\n\t\t display = checker.shortType;\n\t\t } else if (!short && typeof checker.type === 'object' || checker.type === 'function') {\n\t\t display = getCheckerType(checker, options);\n\t\t } else {\n\t\t display = getCheckerType(checker, options) || checker.displayName || checker.name;\n\t\t }\n\t\t return display;\n\t\t}\n\t\n\t\tfunction getCheckerType(_ref, options) {\n\t\t var type = _ref.type;\n\t\n\t\t if (typeof type === 'function') {\n\t\t var __apiCheckData = type.__apiCheckData;\n\t\t var typeTypes = type(options);\n\t\t type = _defineProperty({\n\t\t __apiCheckData: __apiCheckData\n\t\t }, __apiCheckData.type, typeTypes);\n\t\t }\n\t\t return type;\n\t\t}\n\t\n\t\tfunction arrayify(obj) {\n\t\t if (!obj) {\n\t\t return [];\n\t\t } else if (Array.isArray(obj)) {\n\t\t return obj;\n\t\t } else {\n\t\t return [obj];\n\t\t }\n\t\t}\n\t\n\t\tfunction each(obj, iterator, context) {\n\t\t if (Array.isArray(obj)) {\n\t\t return eachArry(obj, iterator, context);\n\t\t } else {\n\t\t return eachObj(obj, iterator, context);\n\t\t }\n\t\t}\n\t\n\t\tfunction eachObj(obj, iterator, context) {\n\t\t var ret = undefined;\n\t\t var hasOwn = Object.prototype.hasOwnProperty;\n\t\t /* eslint prefer-const:0 */ // some weird eslint bug?\n\t\t for (var key in obj) {\n\t\t if (hasOwn.call(obj, key)) {\n\t\t ret = iterator.call(context, obj[key], key, obj);\n\t\t if (ret === false) {\n\t\t return ret;\n\t\t }\n\t\t }\n\t\t }\n\t\t return true;\n\t\t}\n\t\n\t\tfunction eachArry(obj, iterator, context) {\n\t\t var ret = undefined;\n\t\t var length = obj.length;\n\t\t for (var i = 0; i < length; i++) {\n\t\t ret = iterator.call(context, obj[i], i, obj);\n\t\t if (ret === false) {\n\t\t return ret;\n\t\t }\n\t\t }\n\t\t return true;\n\t\t}\n\t\n\t\tfunction isError(obj) {\n\t\t return obj instanceof Error;\n\t\t}\n\t\n\t\tfunction list(arry, join, finalJoin) {\n\t\t arry = arrayify(arry);\n\t\t var copy = arry.slice();\n\t\t var last = copy.pop();\n\t\t if (copy.length === 1) {\n\t\t join = ' ';\n\t\t }\n\t\t return copy.join(join) + ('' + (copy.length ? join + finalJoin : '') + last);\n\t\t}\n\t\n\t\tfunction getError(name, location, checkerType) {\n\t\t if (typeof checkerType === 'function') {\n\t\t checkerType = checkerType({ short: true });\n\t\t }\n\t\t var stringType = typeof checkerType !== 'object' ? checkerType : stringify(checkerType);\n\t\t return new Error(nAtL(name, location) + ' must be ' + t(stringType));\n\t\t}\n\t\n\t\tfunction nAtL(name, location) {\n\t\t var tName = t(name || 'value');\n\t\t var tLocation = !location ? '' : ' at ' + t(location);\n\t\t return '' + tName + tLocation;\n\t\t}\n\t\n\t\tfunction t(thing) {\n\t\t return '`' + thing + '`';\n\t\t}\n\t\n\t\tfunction undef(thing) {\n\t\t return typeof thing === 'undefined';\n\t\t}\n\t\n\t\t/**\n\t\t * This will set up the checker with all of the defaults that most checkers want like required by default and an\n\t\t * optional version\n\t\t *\n\t\t * @param {Function} checker - the checker to setup with properties\n\t\t * @param {Object} properties - properties to add to the checker\n\t\t * @param {boolean} disabled - when set to true, this will set the checker to a no-op function\n\t\t * @returns {Function} checker - the setup checker\n\t\t */\n\t\tfunction setupChecker(checker, properties, disabled) {\n\t\t /* eslint complexity:[2, 9] */\n\t\t if (disabled) {\n\t\t // swap out the checker for its own copy of noop\n\t\t checker = getNoop();\n\t\t checker.isNoop = true;\n\t\t }\n\t\n\t\t if (typeof checker.type === 'string') {\n\t\t checker.shortType = checker.type;\n\t\t }\n\t\n\t\t // assign all properties given\n\t\t each(properties, function (prop, name) {\n\t\t return checker[name] = prop;\n\t\t });\n\t\n\t\t if (!checker.displayName) {\n\t\t checker.displayName = 'apiCheck ' + t(checker.shortType || checker.type || checker.name) + ' type checker';\n\t\t }\n\t\n\t\t if (!checker.notRequired) {\n\t\t checker = getRequiredVersion(checker, disabled);\n\t\t }\n\t\n\t\t if (!checker.notNullable) {\n\t\t addNullable(checker, disabled);\n\t\t }\n\t\n\t\t if (!checker.notOptional) {\n\t\t addOptional(checker, disabled);\n\t\t }\n\t\n\t\t return checker;\n\t\t}\n\t\n\t\tfunction getRequiredVersion(checker, disabled) {\n\t\t var requiredChecker = disabled ? getNoop() : function requiredChecker(val, name, location, obj) {\n\t\t if (undef(val) && !checker.isOptional) {\n\t\t var tLocation = location ? ' in ' + t(location) : '';\n\t\t var type = getCheckerDisplay(checker, { short: true });\n\t\t var stringType = typeof type !== 'object' ? type : stringify(type);\n\t\t return new Error('Required ' + t(name) + ' not specified' + tLocation + '. Must be ' + t(stringType));\n\t\t } else {\n\t\t return checker(val, name, location, obj);\n\t\t }\n\t\t };\n\t\t copyProps(checker, requiredChecker);\n\t\t requiredChecker.originalChecker = checker;\n\t\t return requiredChecker;\n\t\t}\n\t\n\t\tfunction addOptional(checker, disabled) {\n\t\t var optionalCheck = disabled ? getNoop() : function optionalCheck(val, name, location, obj) {\n\t\t if (!undef(val)) {\n\t\t return checker(val, name, location, obj);\n\t\t }\n\t\t };\n\t\t // inherit all properties on the original checker\n\t\t copyProps(checker, optionalCheck);\n\t\n\t\t optionalCheck.isOptional = true;\n\t\t optionalCheck.displayName = checker.displayName + ' (optional)';\n\t\t optionalCheck.originalChecker = checker;\n\t\n\t\t // the magic line that allows you to add .optional to the end of the checkers\n\t\t checker.optional = optionalCheck;\n\t\n\t\t fixType(checker, checker.optional);\n\t\t}\n\t\n\t\tfunction addNullable(checker, disabled) {\n\t\t var nullableCheck = disabled ? getNoop() : function nullableCheck(val, name, location, obj) {\n\t\t if (val !== null) {\n\t\t return checker(val, name, location, obj);\n\t\t }\n\t\t };\n\t\t // inherit all properties on the original checker\n\t\t copyProps(checker, nullableCheck);\n\t\n\t\t nullableCheck.isNullable = true;\n\t\t nullableCheck.displayName = checker.displayName + ' (nullable)';\n\t\t nullableCheck.originalChecker = checker;\n\t\n\t\t // the magic line that allows you to add .nullable to the end of the checkers\n\t\t checker.nullable = nullableCheck;\n\t\n\t\t fixType(checker, checker.nullable);\n\t\t if (!checker.notOptional) {\n\t\t addOptional(checker.nullable, disabled);\n\t\t }\n\t\t}\n\t\n\t\tfunction fixType(checker, checkerCopy) {\n\t\t // fix type, because it's not a straight copy...\n\t\t // the reason is we need to specify type.__apiCheckData.optional as true for the terse/verbose option.\n\t\t // we also want to add \"(optional)\" to the types with a string\n\t\t if (typeof checkerCopy.type === 'object') {\n\t\t checkerCopy.type = copy(checkerCopy.type); // make our own copy of this\n\t\t } else if (typeof checkerCopy.type === 'function') {\n\t\t checkerCopy.type = function () {\n\t\t return checker.type.apply(checker, arguments);\n\t\t };\n\t\t } else {\n\t\t checkerCopy.type += ' (optional)';\n\t\t return;\n\t\t }\n\t\t checkerCopy.type.__apiCheckData = copy(checker.type.__apiCheckData) || {}; // and this\n\t\t checkerCopy.type.__apiCheckData.optional = true;\n\t\t}\n\t\n\t\t// UTILS\n\t\n\t\tfunction copyProps(src, dest) {\n\t\t each(Object.keys(src), function (key) {\n\t\t return dest[key] = src[key];\n\t\t });\n\t\t}\n\t\n\t\tfunction noop() {}\n\t\n\t\tfunction getNoop() {\n\t\t /* eslint no-shadow:0 */\n\t\t /* istanbul ignore next */\n\t\t return function noop() {};\n\t\t}\n\t\n\t/***/ },\n\t/* 4 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tvar stringify = __webpack_require__(2);\n\t\n\t\tvar _require = __webpack_require__(3);\n\t\n\t\tvar typeOf = _require.typeOf;\n\t\tvar each = _require.each;\n\t\tvar copy = _require.copy;\n\t\tvar getCheckerDisplay = _require.getCheckerDisplay;\n\t\tvar isError = _require.isError;\n\t\tvar arrayify = _require.arrayify;\n\t\tvar list = _require.list;\n\t\tvar getError = _require.getError;\n\t\tvar nAtL = _require.nAtL;\n\t\tvar t = _require.t;\n\t\tvar checkerHelpers = _require.checkerHelpers;\n\t\tvar undef = _require.undef;\n\t\tvar setupChecker = checkerHelpers.setupChecker;\n\t\n\t\tvar checkers = module.exports = getCheckers();\n\t\tmodule.exports.getCheckers = getCheckers;\n\t\n\t\tfunction getCheckers(disabled) {\n\t\t return {\n\t\t array: typeOfCheckGetter('Array'),\n\t\t bool: typeOfCheckGetter('Boolean'),\n\t\t number: typeOfCheckGetter('Number'),\n\t\t string: typeOfCheckGetter('String'),\n\t\t func: funcCheckGetter(),\n\t\t object: objectCheckGetter(),\n\t\n\t\t emptyObject: emptyObjectCheckGetter(),\n\t\n\t\t instanceOf: instanceCheckGetter,\n\t\t oneOf: oneOfCheckGetter,\n\t\t oneOfType: oneOfTypeCheckGetter,\n\t\n\t\t arrayOf: arrayOfCheckGetter,\n\t\t objectOf: objectOfCheckGetter,\n\t\t typeOrArrayOf: typeOrArrayOfCheckGetter,\n\t\n\t\t range: rangeCheckGetter,\n\t\t lessThan: lessThanCheckGetter,\n\t\t greaterThan: greaterThanCheckGetter,\n\t\n\t\t shape: getShapeCheckGetter(),\n\t\t args: argumentsCheckerGetter(),\n\t\n\t\t any: anyCheckGetter(),\n\t\t 'null': nullCheckGetter()\n\t\n\t\t };\n\t\n\t\t function typeOfCheckGetter(type) {\n\t\t var lType = type.toLowerCase();\n\t\t return setupChecker(function typeOfCheckerDefinition(val, name, location) {\n\t\t if (typeOf(val) !== lType) {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\t }\n\t\n\t\t function funcCheckGetter() {\n\t\t var type = 'Function';\n\t\t var functionChecker = setupChecker(function functionCheckerDefinition(val, name, location) {\n\t\t if (typeOf(val) !== 'function') {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\n\t\t functionChecker.withProperties = function getWithPropertiesChecker(properties) {\n\t\t var apiError = checkers.objectOf(checkers.func)(properties, 'properties', 'apiCheck.func.withProperties');\n\t\t if (isError(apiError)) {\n\t\t throw apiError;\n\t\t }\n\t\t var shapeChecker = checkers.shape(properties, true);\n\t\t shapeChecker.type.__apiCheckData.type = 'func.withProperties';\n\t\n\t\t return setupChecker(function functionWithPropertiesChecker(val, name, location) {\n\t\t var notFunction = checkers.func(val, name, location);\n\t\t if (isError(notFunction)) {\n\t\t return notFunction;\n\t\t }\n\t\t return shapeChecker(val, name, location);\n\t\t }, { type: shapeChecker.type, shortType: 'func.withProperties' }, disabled);\n\t\t };\n\t\t return functionChecker;\n\t\t }\n\t\n\t\t function objectCheckGetter() {\n\t\t var type = 'Object';\n\t\t var nullType = 'Object (null ok)';\n\t\t var objectNullOkChecker = setupChecker(function objectNullOkCheckerDefinition(val, name, location) {\n\t\t if (typeOf(val) !== 'object') {\n\t\t return getError(name, location, nullType);\n\t\t }\n\t\t }, { type: nullType }, disabled);\n\t\n\t\t var objectChecker = setupChecker(function objectCheckerDefinition(val, name, location) {\n\t\t if (val === null || isError(objectNullOkChecker(val, name, location))) {\n\t\t return getError(name, location, objectChecker.type);\n\t\t }\n\t\t }, { type: type, nullOk: objectNullOkChecker }, disabled);\n\t\n\t\t return objectChecker;\n\t\t }\n\t\n\t\t function instanceCheckGetter(classToCheck) {\n\t\t return setupChecker(function instanceCheckerDefinition(val, name, location) {\n\t\t if (!(val instanceof classToCheck)) {\n\t\t return getError(name, location, classToCheck.name);\n\t\t }\n\t\t }, { type: classToCheck.name }, disabled);\n\t\t }\n\t\n\t\t function oneOfCheckGetter(enums) {\n\t\t var type = {\n\t\t __apiCheckData: { optional: false, type: 'enum' },\n\t\t 'enum': enums\n\t\t };\n\t\t var shortType = 'oneOf[' + enums.map(function (enm) {\n\t\t return stringify(enm);\n\t\t }).join(', ') + ']';\n\t\t return setupChecker(function oneOfCheckerDefinition(val, name, location) {\n\t\t if (!enums.some(function (enm) {\n\t\t return enm === val;\n\t\t })) {\n\t\t return getError(name, location, shortType);\n\t\t }\n\t\t }, { type: type, shortType: shortType }, disabled);\n\t\t }\n\t\n\t\t function oneOfTypeCheckGetter(typeCheckers) {\n\t\t var checkersDisplay = typeCheckers.map(function (checker) {\n\t\t return getCheckerDisplay(checker, { short: true });\n\t\t });\n\t\t var shortType = 'oneOfType[' + checkersDisplay.join(', ') + ']';\n\t\t function type(options) {\n\t\t if (options && options.short) {\n\t\t return shortType;\n\t\t }\n\t\t return typeCheckers.map(function (checker) {\n\t\t return getCheckerDisplay(checker, options);\n\t\t });\n\t\t }\n\t\t type.__apiCheckData = { optional: false, type: 'oneOfType' };\n\t\t return setupChecker(function oneOfTypeCheckerDefinition(val, name, location) {\n\t\t if (!typeCheckers.some(function (checker) {\n\t\t return !isError(checker(val, name, location));\n\t\t })) {\n\t\t return getError(name, location, shortType);\n\t\t }\n\t\t }, { type: type, shortType: shortType }, disabled);\n\t\t }\n\t\n\t\t function arrayOfCheckGetter(checker) {\n\t\t var shortCheckerDisplay = getCheckerDisplay(checker, { short: true });\n\t\t var shortType = 'arrayOf[' + shortCheckerDisplay + ']';\n\t\n\t\t function type(options) {\n\t\t if (options && options.short) {\n\t\t return shortType;\n\t\t }\n\t\t return getCheckerDisplay(checker, options);\n\t\t }\n\t\t type.__apiCheckData = { optional: false, type: 'arrayOf' };\n\t\n\t\t return setupChecker(function arrayOfCheckerDefinition(val, name, location) {\n\t\t if (isError(checkers.array(val)) || !val.every(function (item) {\n\t\t return !isError(checker(item));\n\t\t })) {\n\t\t return getError(name, location, shortType);\n\t\t }\n\t\t }, { type: type, shortType: shortType }, disabled);\n\t\t }\n\t\n\t\t function objectOfCheckGetter(checker) {\n\t\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t\t var shortType = 'objectOf[' + checkerDisplay + ']';\n\t\n\t\t function type(options) {\n\t\t if (options && options.short) {\n\t\t return shortType;\n\t\t }\n\t\t return getCheckerDisplay(checker, options);\n\t\t }\n\t\t type.__apiCheckData = { optional: false, type: 'objectOf' };\n\t\n\t\t return setupChecker(function objectOfCheckerDefinition(val, name, location) {\n\t\t var notObject = checkers.object(val, name, location);\n\t\t if (isError(notObject)) {\n\t\t return notObject;\n\t\t }\n\t\t var allTypesSuccess = each(val, function (item, key) {\n\t\t if (isError(checker(item, key, name))) {\n\t\t return false;\n\t\t }\n\t\t });\n\t\t if (!allTypesSuccess) {\n\t\t return getError(name, location, shortType);\n\t\t }\n\t\t }, { type: type, shortType: shortType }, disabled);\n\t\t }\n\t\n\t\t function typeOrArrayOfCheckGetter(checker) {\n\t\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t\t var shortType = 'typeOrArrayOf[' + checkerDisplay + ']';\n\t\n\t\t function type(options) {\n\t\t if (options && options.short) {\n\t\t return shortType;\n\t\t }\n\t\t return getCheckerDisplay(checker, options);\n\t\t }\n\t\n\t\t type.__apiCheckData = { optional: false, type: 'typeOrArrayOf' };\n\t\t return setupChecker(function typeOrArrayOfDefinition(val, name, location, obj) {\n\t\t if (isError(checkers.oneOfType([checker, checkers.arrayOf(checker)])(val, name, location, obj))) {\n\t\t return getError(name, location, shortType);\n\t\t }\n\t\t }, { type: type, shortType: shortType }, disabled);\n\t\t }\n\t\n\t\t function getShapeCheckGetter() {\n\t\t function shapeCheckGetter(shape, nonObject) {\n\t\t var shapeTypes = {};\n\t\t each(shape, function (checker, prop) {\n\t\t shapeTypes[prop] = getCheckerDisplay(checker);\n\t\t });\n\t\t function type() {\n\t\t var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t\n\t\t var ret = {};\n\t\t var terse = options.terse;\n\t\t var obj = options.obj;\n\t\t var addHelpers = options.addHelpers;\n\t\n\t\t var parentRequired = options.required;\n\t\t each(shape, function (checker, prop) {\n\t\t /* eslint complexity:[2, 6] */\n\t\t var specified = obj && obj.hasOwnProperty(prop);\n\t\t var required = undef(parentRequired) ? !checker.isOptional : parentRequired;\n\t\t if (!terse || (specified || !checker.isOptional)) {\n\t\t ret[prop] = getCheckerDisplay(checker, { terse: terse, obj: obj && obj[prop], required: required, addHelpers: addHelpers });\n\t\t }\n\t\t if (addHelpers) {\n\t\t modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required);\n\t\t }\n\t\t });\n\t\t return ret;\n\t\n\t\t function modifyTypeDisplayToHelpOut(theRet, prop, specified, checker, required) {\n\t\t if (!specified && required && !checker.isOptional) {\n\t\t var item = 'ITEM';\n\t\t if (checker.type && checker.type.__apiCheckData) {\n\t\t item = checker.type.__apiCheckData.type.toUpperCase();\n\t\t }\n\t\t addHelper('missing', 'MISSING THIS ' + item, ' <-- YOU ARE MISSING THIS');\n\t\t } else if (specified) {\n\t\t var error = checker(obj[prop], prop, null, obj);\n\t\t if (isError(error)) {\n\t\t addHelper('error', 'THIS IS THE PROBLEM: ' + error.message, ' <-- THIS IS THE PROBLEM: ' + error.message);\n\t\t }\n\t\t }\n\t\n\t\t function addHelper(property, objectMessage, stringMessage) {\n\t\t if (typeof theRet[prop] === 'string') {\n\t\t theRet[prop] += stringMessage;\n\t\t } else {\n\t\t theRet[prop].__apiCheckData[property] = objectMessage;\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\n\t\t type.__apiCheckData = { strict: false, optional: false, type: 'shape' };\n\t\t var shapeChecker = setupChecker(function shapeCheckerDefinition(val, name, location) {\n\t\t /* eslint complexity:[2, 6] */\n\t\t var isObject = !nonObject && checkers.object(val, name, location);\n\t\t if (isError(isObject)) {\n\t\t return isObject;\n\t\t }\n\t\t var shapePropError = undefined;\n\t\t location = location ? location + (name ? '/' : '') : '';\n\t\t name = name || '';\n\t\t each(shape, function (checker, prop) {\n\t\t if (val.hasOwnProperty(prop) || !checker.isOptional) {\n\t\t shapePropError = checker(val[prop], prop, '' + location + name, val);\n\t\t return !isError(shapePropError);\n\t\t }\n\t\t });\n\t\t if (isError(shapePropError)) {\n\t\t return shapePropError;\n\t\t }\n\t\t }, { type: type, shortType: 'shape' }, disabled);\n\t\n\t\t function strictType() {\n\t\t return type.apply(undefined, arguments);\n\t\t }\n\t\n\t\t strictType.__apiCheckData = copy(shapeChecker.type.__apiCheckData);\n\t\t strictType.__apiCheckData.strict = true;\n\t\t shapeChecker.strict = setupChecker(function strictShapeCheckerDefinition(val, name, location) {\n\t\t var shapeError = shapeChecker(val, name, location);\n\t\t if (isError(shapeError)) {\n\t\t return shapeError;\n\t\t }\n\t\t var allowedProperties = Object.keys(shape);\n\t\t var extraProps = Object.keys(val).filter(function (prop) {\n\t\t return allowedProperties.indexOf(prop) === -1;\n\t\t });\n\t\t if (extraProps.length) {\n\t\t return new Error(nAtL(name, location) + ' cannot have extra properties: ' + t(extraProps.join('`, `')) + '.' + ('It is limited to ' + t(allowedProperties.join('`, `'))));\n\t\t }\n\t\t }, { type: strictType, shortType: 'strict shape' }, disabled);\n\t\n\t\t return shapeChecker;\n\t\t }\n\t\n\t\t shapeCheckGetter.ifNot = function ifNot(otherProps, propChecker) {\n\t\t if (!Array.isArray(otherProps)) {\n\t\t otherProps = [otherProps];\n\t\t }\n\t\t var description = undefined;\n\t\t if (otherProps.length === 1) {\n\t\t description = 'specified only if ' + otherProps[0] + ' is not specified';\n\t\t } else {\n\t\t description = 'specified only if none of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t\t }\n\t\t var shortType = 'ifNot[' + otherProps.join(', ') + ']';\n\t\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t\t return setupChecker(function ifNotChecker(prop, propName, location, obj) {\n\t\t var propExists = obj && obj.hasOwnProperty(propName);\n\t\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t\t return obj && obj.hasOwnProperty(otherProp);\n\t\t });\n\t\t if (propExists === otherPropsExist) {\n\t\t return getError(propName, location, type);\n\t\t } else if (propExists) {\n\t\t return propChecker(prop, propName, location, obj);\n\t\t }\n\t\t }, { notRequired: true, type: type, shortType: shortType }, disabled);\n\t\t };\n\t\n\t\t shapeCheckGetter.onlyIf = function onlyIf(otherProps, propChecker) {\n\t\t otherProps = arrayify(otherProps);\n\t\t var description = undefined;\n\t\t if (otherProps.length === 1) {\n\t\t description = 'specified only if ' + otherProps[0] + ' is also specified';\n\t\t } else {\n\t\t description = 'specified only if all of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t\t }\n\t\t var shortType = 'onlyIf[' + otherProps.join(', ') + ']';\n\t\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t\t return setupChecker(function onlyIfCheckerDefinition(prop, propName, location, obj) {\n\t\t var othersPresent = otherProps.every(function (property) {\n\t\t return obj.hasOwnProperty(property);\n\t\t });\n\t\t if (!othersPresent) {\n\t\t return getError(propName, location, type);\n\t\t } else {\n\t\t return propChecker(prop, propName, location, obj);\n\t\t }\n\t\t }, { type: type, shortType: shortType }, disabled);\n\t\t };\n\t\n\t\t shapeCheckGetter.requiredIfNot = function shapeRequiredIfNot(otherProps, propChecker) {\n\t\t if (!Array.isArray(otherProps)) {\n\t\t otherProps = [otherProps];\n\t\t }\n\t\t return getRequiredIfNotChecker(false, otherProps, propChecker);\n\t\t };\n\t\n\t\t shapeCheckGetter.requiredIfNot.all = function shapeRequiredIfNotAll(otherProps, propChecker) {\n\t\t if (!Array.isArray(otherProps)) {\n\t\t throw new Error('requiredIfNot.all must be passed an array');\n\t\t }\n\t\t return getRequiredIfNotChecker(true, otherProps, propChecker);\n\t\t };\n\t\n\t\t function getRequiredIfNotChecker(all, otherProps, propChecker) {\n\t\t var props = t(otherProps.join(', '));\n\t\t var ifProps = 'if ' + (all ? 'all of' : 'at least one of');\n\t\t var description = 'specified ' + ifProps + ' these are not specified: ' + props + ' (otherwise it\\'s optional)';\n\t\t var shortType = 'requiredIfNot' + (all ? '.all' : '') + '[' + otherProps.join(', ') + '}]';\n\t\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t\t return setupChecker(function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t\t var propExists = obj && obj.hasOwnProperty(propName);\n\t\t var iteration = all ? 'every' : 'some';\n\t\t var otherPropsExist = otherProps[iteration](function (otherProp) {\n\t\t return obj && obj.hasOwnProperty(otherProp);\n\t\t });\n\t\t if (!otherPropsExist && !propExists) {\n\t\t return getError(propName, location, type);\n\t\t } else if (propExists) {\n\t\t return propChecker(prop, propName, location, obj);\n\t\t }\n\t\t }, { type: type, notRequired: true }, disabled);\n\t\t }\n\t\n\t\t return shapeCheckGetter;\n\t\n\t\t function getTypeForShapeChild(propChecker, description, shortType) {\n\t\t function type(options) {\n\t\t if (options && options.short) {\n\t\t return shortType;\n\t\t }\n\t\t return getCheckerDisplay(propChecker);\n\t\t }\n\t\t type.__apiCheckData = { optional: false, type: 'ifNot', description: description };\n\t\t return type;\n\t\t }\n\t\t }\n\t\n\t\t function argumentsCheckerGetter() {\n\t\t var type = 'function arguments';\n\t\t return setupChecker(function argsCheckerDefinition(val, name, location) {\n\t\t if (Array.isArray(val) || isError(checkers.object(val)) || isError(checkers.number(val.length))) {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\t }\n\t\n\t\t function anyCheckGetter() {\n\t\t return setupChecker(function anyCheckerDefinition() {\n\t\t // don't do anything\n\t\t }, { type: 'any' }, disabled);\n\t\t }\n\t\n\t\t function nullCheckGetter() {\n\t\t var type = 'null';\n\t\t return setupChecker(function nullChecker(val, name, location) {\n\t\t if (val !== null) {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\t }\n\t\n\t\t function rangeCheckGetter(min, max) {\n\t\t var type = 'Range (' + min + ' - ' + max + ')';\n\t\t return setupChecker(function rangeChecker(val, name, location) {\n\t\t if (typeof val !== 'number' || val < min || val > max) {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\t }\n\t\n\t\t function lessThanCheckGetter(min) {\n\t\t var type = 'lessThan[' + min + ']';\n\t\t return setupChecker(function lessThanChecker(val, name, location) {\n\t\t if (typeof val !== 'number' || val > min) {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\t }\n\t\n\t\t function greaterThanCheckGetter(max) {\n\t\t var type = 'greaterThan[' + max + ']';\n\t\t return setupChecker(function greaterThanChecker(val, name, location) {\n\t\t if (typeof val !== 'number' || val < max) {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\t }\n\t\n\t\t function emptyObjectCheckGetter() {\n\t\t var type = 'empty object';\n\t\t return setupChecker(function emptyObjectChecker(val, name, location) {\n\t\t if (typeOf(val) !== 'object' || val === null || Object.keys(val).length) {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\t }\n\t\t}\n\t\n\t/***/ }\n\t/******/ ])\n\t});\n\t;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// angular-formly version 6.8.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\t\n\t(function webpackUniversalModuleDefinition(root, factory) {\n\t\tif(true)\n\t\t\tmodule.exports = factory(__webpack_require__(2), __webpack_require__(4));\n\t\telse if(typeof define === 'function' && define.amd)\n\t\t\tdefine([\"api-check\", \"angular\"], factory);\n\t\telse if(typeof exports === 'object')\n\t\t\texports[\"ngFormly\"] = factory(require(\"api-check\"), require(\"angular\"));\n\t\telse\n\t\t\troot[\"ngFormly\"] = factory(root[\"apiCheck\"], root[\"angular\"]);\n\t})(this, function(__WEBPACK_EXTERNAL_MODULE_16__, __WEBPACK_EXTERNAL_MODULE_17__) {\n\treturn /******/ (function(modules) { // webpackBootstrap\n\t/******/ \t// The module cache\n\t/******/ \tvar installedModules = {};\n\t\n\t/******/ \t// The require function\n\t/******/ \tfunction __webpack_require__(moduleId) {\n\t\n\t/******/ \t\t// Check if module is in cache\n\t/******/ \t\tif(installedModules[moduleId])\n\t/******/ \t\t\treturn installedModules[moduleId].exports;\n\t\n\t/******/ \t\t// Create a new module (and put it into the cache)\n\t/******/ \t\tvar module = installedModules[moduleId] = {\n\t/******/ \t\t\texports: {},\n\t/******/ \t\t\tid: moduleId,\n\t/******/ \t\t\tloaded: false\n\t/******/ \t\t};\n\t\n\t/******/ \t\t// Execute the module function\n\t/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\n\t/******/ \t\t// Flag the module as loaded\n\t/******/ \t\tmodule.loaded = true;\n\t\n\t/******/ \t\t// Return the exports of the module\n\t/******/ \t\treturn module.exports;\n\t/******/ \t}\n\t\n\t\n\t/******/ \t// expose the modules object (__webpack_modules__)\n\t/******/ \t__webpack_require__.m = modules;\n\t\n\t/******/ \t// expose the module cache\n\t/******/ \t__webpack_require__.c = installedModules;\n\t\n\t/******/ \t// __webpack_public_path__\n\t/******/ \t__webpack_require__.p = \"\";\n\t\n\t/******/ \t// Load entry module and return exports\n\t/******/ \treturn __webpack_require__(0);\n\t/******/ })\n\t/************************************************************************/\n\t/******/ ([\n\t/* 0 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar index = _interopRequire(__webpack_require__(1));\n\t\n\t\tmodule.exports = index;\n\t\n\t/***/ },\n\t/* 1 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(15));\n\t\n\t\tvar formlyApiCheck = _interopRequire(__webpack_require__(2));\n\t\n\t\tvar formlyErrorAndWarningsUrlPrefix = _interopRequire(__webpack_require__(3));\n\t\n\t\tvar formlyUsability = _interopRequire(__webpack_require__(4));\n\t\n\t\tvar formlyConfig = _interopRequire(__webpack_require__(5));\n\t\n\t\tvar formlyValidationMessages = _interopRequire(__webpack_require__(6));\n\t\n\t\tvar formlyUtil = _interopRequire(__webpack_require__(7));\n\t\n\t\tvar formlyWarn = _interopRequire(__webpack_require__(8));\n\t\n\t\tvar formlyCustomValidation = _interopRequire(__webpack_require__(9));\n\t\n\t\tvar formlyField = _interopRequire(__webpack_require__(10));\n\t\n\t\tvar formlyFocus = _interopRequire(__webpack_require__(11));\n\t\n\t\tvar formlyForm = _interopRequire(__webpack_require__(12));\n\t\n\t\tvar formlyNgModelAttrsManipulator = _interopRequire(__webpack_require__(13));\n\t\n\t\tvar formlyCustomTags = _interopRequire(__webpack_require__(14));\n\t\n\t\tvar ngModuleName = \"formly\";\n\t\n\t\tmodule.exports = ngModuleName;\n\t\n\t\tvar ngModule = angular.module(ngModuleName, []);\n\t\n\t\tngModule.constant(\"formlyApiCheck\", formlyApiCheck);\n\t\tngModule.constant(\"formlyErrorAndWarningsUrlPrefix\", formlyErrorAndWarningsUrlPrefix);\n\t\tngModule.constant(\"formlyVersion\", (\"6.8.2\")); // <-- webpack variable\n\t\n\t\tngModule.provider(\"formlyUsability\", formlyUsability);\n\t\tngModule.provider(\"formlyConfig\", formlyConfig);\n\t\n\t\tngModule.factory(\"formlyValidationMessages\", formlyValidationMessages);\n\t\tngModule.factory(\"formlyUtil\", formlyUtil);\n\t\tngModule.factory(\"formlyWarn\", formlyWarn);\n\t\n\t\tngModule.directive(\"formlyCustomValidation\", formlyCustomValidation);\n\t\tngModule.directive(\"formlyField\", formlyField);\n\t\tngModule.directive(\"formlyFocus\", formlyFocus);\n\t\tngModule.directive(\"formlyForm\", formlyForm);\n\t\n\t\tngModule.run(formlyNgModelAttrsManipulator);\n\t\tngModule.run(formlyCustomTags);\n\t\n\t/***/ },\n\t/* 2 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar apiCheckFactory = _interopRequire(__webpack_require__(16));\n\t\n\t\tvar apiCheck = apiCheckFactory({\n\t\t output: {\n\t\t prefix: \"angular-formly:\",\n\t\t docsBaseUrl: __webpack_require__(3)\n\t\t }\n\t\t});\n\t\n\t\tfunction shapeRequiredIfNot(otherProps, propChecker) {\n\t\t if (!angular.isArray(otherProps)) {\n\t\t otherProps = [otherProps];\n\t\t }\n\t\t var type = \"specified if these are not specified: `\" + otherProps.join(\", \") + \"` (otherwise it's optional)\";\n\t\t function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t\t var propExists = obj && obj.hasOwnProperty(propName);\n\t\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t\t return obj && obj.hasOwnProperty(otherProp);\n\t\t });\n\t\t if (!otherPropsExist && !propExists) {\n\t\t return apiCheck.utils.getError(propName, location, type);\n\t\t } else if (propExists) {\n\t\t return propChecker(prop, propName, location, obj);\n\t\t }\n\t\t }\n\t\t shapeRequiredIfNotDefinition.type = type;\n\t\t return apiCheck.utils.checkerHelpers.setupChecker(shapeRequiredIfNotDefinition);\n\t\t}\n\t\n\t\tvar formlyExpression = apiCheck.oneOfType([apiCheck.string, apiCheck.func]);\n\t\tvar specifyWrapperType = apiCheck.oneOfType([apiCheck.oneOf([null]), apiCheck.typeOrArrayOf(apiCheck.string)]);\n\t\n\t\tvar apiCheckProperty = apiCheck.objectOf(apiCheck.func);\n\t\n\t\tvar apiCheckInstanceProperty = apiCheck.shape.onlyIf(\"apiCheck\", apiCheck.func.withProperties({\n\t\t warn: apiCheck.func,\n\t\t \"throw\": apiCheck.func,\n\t\t shape: apiCheck.func\n\t\t}));\n\t\n\t\tvar apiCheckFunctionProperty = apiCheck.shape.onlyIf(\"apiCheck\", apiCheck.oneOf([\"throw\", \"warn\"]));\n\t\n\t\tvar formlyWrapperType = apiCheck.shape({\n\t\t name: shapeRequiredIfNot(\"types\", apiCheck.string).optional,\n\t\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.string).optional,\n\t\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.string).optional,\n\t\t types: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t\t overwriteOk: apiCheck.bool.optional,\n\t\t validateOptions: apiCheck.func.optional,\n\t\t apiCheck: apiCheckProperty.optional,\n\t\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t\t apiCheckOptions: apiCheck.object.optional\n\t\t}).strict;\n\t\n\t\tvar expressionProperties = apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t\t expression: formlyExpression,\n\t\t message: formlyExpression.optional\n\t\t}).strict]));\n\t\n\t\tvar modelChecker = apiCheck.oneOfType([apiCheck.oneOf([\"formState\"]), apiCheck.object]);\n\t\n\t\tvar fieldOptionsApiShape = {\n\t\t $$hashKey: apiCheck.any.optional,\n\t\t type: apiCheck.shape.ifNot([\"template\", \"templateUrl\"], apiCheck.string).optional,\n\t\t template: apiCheck.shape.ifNot([\"type\", \"templateUrl\"], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t\t templateUrl: apiCheck.shape.ifNot([\"type\", \"template\"], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t\t key: apiCheck.oneOfType([apiCheck.string, apiCheck.number]).optional,\n\t\t model: modelChecker.optional,\n\t\t className: apiCheck.string.optional,\n\t\t id: apiCheck.string.optional,\n\t\t expressionProperties: expressionProperties.optional,\n\t\t data: apiCheck.object.optional,\n\t\t templateOptions: apiCheck.object.optional,\n\t\t wrapper: specifyWrapperType.optional,\n\t\t modelOptions: apiCheck.shape({\n\t\t updateOn: apiCheck.string.optional,\n\t\t debounce: apiCheck.oneOfType([apiCheck.objectOf(apiCheck.number), apiCheck.number]).optional,\n\t\t allowInvalid: apiCheck.bool.optional,\n\t\t getterSetter: apiCheck.bool.optional,\n\t\t timezone: apiCheck.string.optional\n\t\t }).optional,\n\t\t watcher: apiCheck.typeOrArrayOf(apiCheck.shape({\n\t\t expression: formlyExpression.optional,\n\t\t listener: formlyExpression\n\t\t })).optional,\n\t\t validators: apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t\t expression: formlyExpression,\n\t\t message: formlyExpression.optional\n\t\t }).strict])).optional,\n\t\t noFormControl: apiCheck.bool.optional,\n\t\t hide: apiCheck.bool.optional,\n\t\t hideExpression: formlyExpression.optional,\n\t\t ngModelAttrs: apiCheck.objectOf(apiCheck.shape({\n\t\t expression: apiCheck.shape.ifNot([\"value\", \"attribute\", \"bound\"], apiCheck.any).optional,\n\t\t value: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional,\n\t\t attribute: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional,\n\t\t bound: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional\n\t\t }).strict).optional,\n\t\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional,\n\t\t optionsTypes: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t\t link: apiCheck.func.optional,\n\t\t controller: apiCheck.oneOfType([apiCheck.string, apiCheck.func, apiCheck.array]).optional,\n\t\t validation: apiCheck.shape({\n\t\t show: apiCheck.oneOfType([apiCheck.bool, apiCheck.oneOf([null])]).optional,\n\t\t messages: apiCheck.objectOf(formlyExpression).optional,\n\t\t errorExistsAndShouldBeVisible: apiCheck.bool.optional\n\t\t }).optional,\n\t\t formControl: apiCheck.object.optional,\n\t\t value: apiCheck.func.optional,\n\t\t runExpressions: apiCheck.func.optional,\n\t\t resetModel: apiCheck.func.optional,\n\t\t updateInitialValue: apiCheck.func.optional,\n\t\t initialValue: apiCheck.any.optional,\n\t\t defaultValue: apiCheck.any.optional\n\t\t};\n\t\n\t\tvar formlyFieldOptions = apiCheck.shape(fieldOptionsApiShape).strict;\n\t\n\t\tvar formOptionsApi = apiCheck.shape({\n\t\t formState: apiCheck.object.optional,\n\t\t resetModel: apiCheck.func.optional,\n\t\t updateInitialValue: apiCheck.func.optional,\n\t\t removeChromeAutoComplete: apiCheck.bool.optional\n\t\t}).strict;\n\t\n\t\tvar fieldGroup = apiCheck.shape({\n\t\t $$hashKey: apiCheck.any.optional,\n\t\t // danger. Nested field groups wont get api-checked...\n\t\t fieldGroup: apiCheck.arrayOf(apiCheck.oneOfType([formlyFieldOptions, apiCheck.object])),\n\t\t className: apiCheck.string.optional,\n\t\t options: formOptionsApi.optional,\n\t\t hide: apiCheck.bool.optional,\n\t\t hideExpression: formlyExpression.optional,\n\t\t model: modelChecker.optional,\n\t\t form: apiCheck.object.optional,\n\t\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional\n\t\t}).strict;\n\t\n\t\tvar typeOptionsDefaultOptions = angular.copy(fieldOptionsApiShape);\n\t\ttypeOptionsDefaultOptions.key = apiCheck.string.optional;\n\t\n\t\tvar formlyTypeOptions = apiCheck.shape({\n\t\t name: apiCheck.string,\n\t\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t\t controller: apiCheck.oneOfType([apiCheck.func, apiCheck.string, apiCheck.array]).optional,\n\t\t link: apiCheck.func.optional,\n\t\t defaultOptions: apiCheck.oneOfType([apiCheck.func, apiCheck.shape(typeOptionsDefaultOptions)]).optional,\n\t\t \"extends\": apiCheck.string.optional,\n\t\t wrapper: specifyWrapperType.optional,\n\t\t data: apiCheck.object.optional,\n\t\t validateOptions: apiCheck.func.optional,\n\t\t apiCheck: apiCheckProperty.optional,\n\t\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t\t apiCheckOptions: apiCheck.object.optional,\n\t\t overwriteOk: apiCheck.bool.optional\n\t\t}).strict;\n\t\tangular.extend(apiCheck, {\n\t\t formlyTypeOptions: formlyTypeOptions, formlyFieldOptions: formlyFieldOptions, formlyExpression: formlyExpression, formlyWrapperType: formlyWrapperType, fieldGroup: fieldGroup, formOptionsApi: formOptionsApi\n\t\t});\n\t\n\t\tmodule.exports = apiCheck;\n\t\n\t/***/ },\n\t/* 3 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tmodule.exports = \"https://github.com/formly-js/angular-formly/blob/\" + (\"6.8.2\") + \"/other/ERRORS_AND_WARNINGS.md#\";\n\t\n\t/***/ },\n\t/* 4 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(15));\n\t\n\t\tmodule.exports = formlyUsability;\n\t\n\t\t// @ngInject\n\t\tfunction formlyUsability(formlyApiCheck, formlyErrorAndWarningsUrlPrefix) {\n\t\t var _this = this;\n\t\n\t\t angular.extend(this, {\n\t\t getFormlyError: getFormlyError,\n\t\t getFieldError: getFieldError,\n\t\t checkWrapper: checkWrapper,\n\t\t checkWrapperTemplate: checkWrapperTemplate,\n\t\t $get: function () {\n\t\t return _this;\n\t\t }\n\t\t });\n\t\n\t\t function getFieldError(errorInfoSlug, message, field) {\n\t\t if (arguments.length < 3) {\n\t\t field = message;\n\t\t message = errorInfoSlug;\n\t\t errorInfoSlug = null;\n\t\t }\n\t\t return new Error(getErrorMessage(errorInfoSlug, message) + (\" Field definition: \" + angular.toJson(field)));\n\t\t }\n\t\n\t\t function getFormlyError(errorInfoSlug, message) {\n\t\t if (!message) {\n\t\t message = errorInfoSlug;\n\t\t errorInfoSlug = null;\n\t\t }\n\t\t return new Error(getErrorMessage(errorInfoSlug, message));\n\t\t }\n\t\n\t\t function getErrorMessage(errorInfoSlug, message) {\n\t\t var url = \"\";\n\t\t if (errorInfoSlug !== null) {\n\t\t url = \"\" + formlyErrorAndWarningsUrlPrefix + \"\" + errorInfoSlug;\n\t\t }\n\t\t return \"Formly Error: \" + message + \". \" + url;\n\t\t }\n\t\n\t\t function checkWrapper(wrapper) {\n\t\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyWrapperType, wrapper, {\n\t\t prefix: \"formlyConfig.setWrapper\",\n\t\t urlSuffix: \"setwrapper-validation-failed\"\n\t\t });\n\t\t }\n\t\n\t\t function checkWrapperTemplate(template, additionalInfo) {\n\t\t var formlyTransclude = \" \";\n\t\t if (template.indexOf(formlyTransclude) === -1) {\n\t\t throw getFormlyError(\"Template wrapper templates must use \\\"\" + formlyTransclude + \"\\\" somewhere in them. \" + (\"This one does not have \\\" \\\" in it: \" + template) + \"\\n\" + (\"Additional information: \" + JSON.stringify(additionalInfo)));\n\t\t }\n\t\t }\n\t\t}\n\t\tformlyUsability.$inject = [\"formlyApiCheck\", \"formlyErrorAndWarningsUrlPrefix\"];\n\t\n\t/***/ },\n\t/* 5 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(15));\n\t\n\t\tvar utils = _interopRequire(__webpack_require__(18));\n\t\n\t\tmodule.exports = formlyConfig;\n\t\n\t\t// @ngInject\n\t\tfunction formlyConfig(formlyUsabilityProvider, formlyApiCheck) {\n\t\t var _this2 = this;\n\t\n\t\t var typeMap = {};\n\t\t var templateWrappersMap = {};\n\t\t var defaultWrapperName = \"default\";\n\t\t var _this = this;\n\t\t var getError = formlyUsabilityProvider.getFormlyError;\n\t\n\t\t angular.extend(this, {\n\t\t setType: setType,\n\t\t getType: getType,\n\t\t setWrapper: setWrapper,\n\t\t getWrapper: getWrapper,\n\t\t getWrapperByType: getWrapperByType,\n\t\t removeWrapperByName: removeWrapperByName,\n\t\t removeWrappersForType: removeWrappersForType,\n\t\t disableWarnings: false,\n\t\t extras: {\n\t\t disableNgModelAttrsManipulator: false,\n\t\t ngModelAttrsManipulatorPreferUnbound: false,\n\t\t removeChromeAutoComplete: false,\n\t\t defaultHideDirective: \"ng-if\",\n\t\t getFieldId: null\n\t\t },\n\t\t templateManipulators: {\n\t\t preWrapper: [],\n\t\t postWrapper: []\n\t\t },\n\t\t $get: function () {\n\t\t return _this2;\n\t\t }\n\t\t });\n\t\n\t\t function setType(options) {\n\t\t if (angular.isArray(options)) {\n\t\t angular.forEach(options, setType);\n\t\t } else if (angular.isObject(options)) {\n\t\t checkType(options);\n\t\t if (options[\"extends\"]) {\n\t\t extendTypeOptions(options);\n\t\t }\n\t\t typeMap[options.name] = options;\n\t\t } else {\n\t\t throw getError(\"You must provide an object or array for setType. You provided: \" + JSON.stringify(arguments));\n\t\t }\n\t\t }\n\t\n\t\t function checkType(options) {\n\t\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyTypeOptions, options, {\n\t\t prefix: \"formlyConfig.setType\",\n\t\t url: \"settype-validation-failed\"\n\t\t });\n\t\t if (!options.overwriteOk) {\n\t\t checkOverwrite(options.name, typeMap, options, \"types\");\n\t\t } else {\n\t\t options.overwriteOk = undefined;\n\t\t }\n\t\t }\n\t\n\t\t function extendTypeOptions(options) {\n\t\t var extendsType = getType(options[\"extends\"], true, options);\n\t\t extendTypeControllerFunction(options, extendsType);\n\t\t extendTypeLinkFunction(options, extendsType);\n\t\t extendTypeValidateOptionsFunction(options, extendsType);\n\t\t extendTypeDefaultOptions(options, extendsType);\n\t\t utils.reverseDeepMerge(options, extendsType);\n\t\t extendTemplate(options, extendsType);\n\t\t }\n\t\n\t\t function extendTemplate(options, extendsType) {\n\t\t if (options.template && extendsType.templateUrl) {\n\t\t delete options.templateUrl;\n\t\t } else if (options.templateUrl && extendsType.template) {\n\t\t delete options.template;\n\t\t }\n\t\t }\n\t\n\t\t function extendTypeControllerFunction(options, extendsType) {\n\t\t var extendsCtrl = extendsType.controller;\n\t\t if (!angular.isDefined(extendsCtrl)) {\n\t\t return;\n\t\t }\n\t\t var optionsCtrl = options.controller;\n\t\t if (angular.isDefined(optionsCtrl)) {\n\t\t options.controller = function ($scope, $controller) {\n\t\t $controller(extendsCtrl, { $scope: $scope });\n\t\t $controller(optionsCtrl, { $scope: $scope });\n\t\t };\n\t\t options.controller.$inject = [\"$scope\", \"$controller\"];\n\t\t } else {\n\t\t options.controller = extendsCtrl;\n\t\t }\n\t\t }\n\t\n\t\t function extendTypeLinkFunction(options, extendsType) {\n\t\t var extendsFn = extendsType.link;\n\t\t if (!angular.isDefined(extendsFn)) {\n\t\t return;\n\t\t }\n\t\t var optionsFn = options.link;\n\t\t if (angular.isDefined(optionsFn)) {\n\t\t options.link = function () {\n\t\t extendsFn.apply(undefined, arguments);\n\t\t optionsFn.apply(undefined, arguments);\n\t\t };\n\t\t } else {\n\t\t options.link = extendsFn;\n\t\t }\n\t\t }\n\t\n\t\t function extendTypeValidateOptionsFunction(options, extendsType) {\n\t\t var extendsFn = extendsType.validateOptions;\n\t\t if (!angular.isDefined(extendsFn)) {\n\t\t return;\n\t\t }\n\t\t var optionsFn = options.validateOptions;\n\t\t var originalDefaultOptions = options.defaultOptions;\n\t\t if (angular.isDefined(optionsFn)) {\n\t\t options.validateOptions = function (options) {\n\t\t optionsFn(options);\n\t\t var mergedOptions = angular.copy(options);\n\t\t var defaultOptions = originalDefaultOptions;\n\t\t if (defaultOptions) {\n\t\t if (angular.isFunction(defaultOptions)) {\n\t\t defaultOptions = defaultOptions(mergedOptions);\n\t\t }\n\t\t utils.reverseDeepMerge(mergedOptions, defaultOptions);\n\t\t }\n\t\t extendsFn(mergedOptions);\n\t\t };\n\t\t } else {\n\t\t options.validateOptions = extendsFn;\n\t\t }\n\t\t }\n\t\n\t\t function extendTypeDefaultOptions(options, extendsType) {\n\t\t var extendsDO = extendsType.defaultOptions;\n\t\t if (!angular.isDefined(extendsDO)) {\n\t\t return;\n\t\t }\n\t\t var optionsDO = options.defaultOptions;\n\t\t var optionsDOIsFn = angular.isFunction(optionsDO);\n\t\t var extendsDOIsFn = angular.isFunction(extendsDO);\n\t\t if (extendsDOIsFn) {\n\t\t options.defaultOptions = function defaultOptions(options) {\n\t\t var extendsDefaultOptions = extendsDO(options);\n\t\t var mergedDefaultOptions = {};\n\t\t utils.reverseDeepMerge(mergedDefaultOptions, options, extendsDefaultOptions);\n\t\t var extenderOptionsDefaultOptions = optionsDO;\n\t\t if (optionsDOIsFn) {\n\t\t extenderOptionsDefaultOptions = extenderOptionsDefaultOptions(mergedDefaultOptions);\n\t\t }\n\t\t utils.reverseDeepMerge(extendsDefaultOptions, extenderOptionsDefaultOptions);\n\t\t return extendsDefaultOptions;\n\t\t };\n\t\t } else if (optionsDOIsFn) {\n\t\t options.defaultOptions = function defaultOptions(options) {\n\t\t var newDefaultOptions = {};\n\t\t utils.reverseDeepMerge(newDefaultOptions, options, extendsDO);\n\t\t return optionsDO(newDefaultOptions);\n\t\t };\n\t\t }\n\t\t }\n\t\n\t\t function getType(name, throwError, errorContext) {\n\t\t if (!name) {\n\t\t return undefined;\n\t\t }\n\t\t var type = typeMap[name];\n\t\t if (!type && throwError === true) {\n\t\t throw getError(\"There is no type by the name of \\\"\" + name + \"\\\": \" + JSON.stringify(errorContext));\n\t\t } else {\n\t\t return type;\n\t\t }\n\t\t }\n\t\n\t\t function setWrapper(_x, _x2) {\n\t\t var _again = true;\n\t\n\t\t _function: while (_again) {\n\t\t _again = false;\n\t\t var options = _x,\n\t\t name = _x2;\n\t\n\t\t if (angular.isArray(options)) {\n\t\t return options.map(function (wrapperOptions) {\n\t\t return setWrapper(wrapperOptions);\n\t\t });\n\t\t } else if (angular.isObject(options)) {\n\t\t options.types = getOptionsTypes(options);\n\t\t options.name = getOptionsName(options, name);\n\t\t checkWrapperAPI(options);\n\t\t templateWrappersMap[options.name] = options;\n\t\t return options;\n\t\t } else if (angular.isString(options)) {\n\t\t _x = {\n\t\t template: options,\n\t\t name: name\n\t\t };\n\t\t _again = true;\n\t\t continue _function;\n\t\t }\n\t\t }\n\t\t }\n\t\n\t\t function getOptionsTypes(options) {\n\t\t if (angular.isString(options.types)) {\n\t\t return [options.types];\n\t\t }\n\t\t if (!angular.isDefined(options.types)) {\n\t\t return [];\n\t\t } else {\n\t\t return options.types;\n\t\t }\n\t\t }\n\t\n\t\t function getOptionsName(options, name) {\n\t\t return options.name || name || options.types.join(\" \") || defaultWrapperName;\n\t\t }\n\t\n\t\t function checkWrapperAPI(options) {\n\t\t formlyUsabilityProvider.checkWrapper(options);\n\t\t if (options.template) {\n\t\t formlyUsabilityProvider.checkWrapperTemplate(options.template, options);\n\t\t }\n\t\t if (!options.overwriteOk) {\n\t\t checkOverwrite(options.name, templateWrappersMap, options, \"templateWrappers\");\n\t\t } else {\n\t\t delete options.overwriteOk;\n\t\t }\n\t\t checkWrapperTypes(options);\n\t\t }\n\t\n\t\t function checkWrapperTypes(options) {\n\t\t var shouldThrow = !angular.isArray(options.types) || !options.types.every(angular.isString);\n\t\t if (shouldThrow) {\n\t\t throw getError(\"Attempted to create a template wrapper with types that is not a string or an array of strings\");\n\t\t }\n\t\t }\n\t\n\t\t function checkOverwrite(property, object, newValue, objectName) {\n\t\t if (object.hasOwnProperty(property)) {\n\t\t warn([\"Attempting to overwrite \" + property + \" on \" + objectName + \" which is currently\", \"\" + JSON.stringify(object[property]) + \" with \" + JSON.stringify(newValue), \"To supress this warning, specify the property \\\"overwriteOk: true\\\"\"].join(\" \"));\n\t\t }\n\t\t }\n\t\n\t\t function getWrapper(name) {\n\t\t return templateWrappersMap[name || defaultWrapperName];\n\t\t }\n\t\n\t\t function getWrapperByType(type) {\n\t\t /* jshint maxcomplexity:6 */\n\t\t var wrappers = [];\n\t\t for (var name in templateWrappersMap) {\n\t\t if (templateWrappersMap.hasOwnProperty(name)) {\n\t\t if (templateWrappersMap[name].types && templateWrappersMap[name].types.indexOf(type) !== -1) {\n\t\t wrappers.push(templateWrappersMap[name]);\n\t\t }\n\t\t }\n\t\t }\n\t\t return wrappers;\n\t\t }\n\t\n\t\t function removeWrapperByName(name) {\n\t\t var wrapper = templateWrappersMap[name];\n\t\t delete templateWrappersMap[name];\n\t\t return wrapper;\n\t\t }\n\t\n\t\t function removeWrappersForType(type) {\n\t\t var wrappers = getWrapperByType(type);\n\t\t if (!wrappers) {\n\t\t return;\n\t\t }\n\t\t if (!angular.isArray(wrappers)) {\n\t\t return removeWrapperByName(wrappers.name);\n\t\t } else {\n\t\t wrappers.forEach(function (wrapper) {\n\t\t return removeWrapperByName(wrapper.name);\n\t\t });\n\t\t return wrappers;\n\t\t }\n\t\t }\n\t\n\t\t function warn() {\n\t\t if (!_this.disableWarnings) {\n\t\t console.warn.apply(console, arguments);\n\t\t }\n\t\t }\n\t\t}\n\t\tformlyConfig.$inject = [\"formlyUsabilityProvider\", \"formlyApiCheck\"];\n\t\n\t/***/ },\n\t/* 6 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tmodule.exports = formlyValidationMessages;\n\t\n\t\t// @ngInject\n\t\tfunction formlyValidationMessages() {\n\t\n\t\t var validationMessages = {\n\t\t addTemplateOptionValueMessage: addTemplateOptionValueMessage,\n\t\t addStringMessage: addStringMessage,\n\t\t messages: {}\n\t\t };\n\t\n\t\t return validationMessages;\n\t\n\t\t function addTemplateOptionValueMessage(name, prop, prefix, suffix, alternate) {\n\t\t validationMessages.messages[name] = templateOptionValue(prop, prefix, suffix, alternate);\n\t\t }\n\t\n\t\t function addStringMessage(name, string) {\n\t\t validationMessages.messages[name] = function () {\n\t\t return string;\n\t\t };\n\t\t }\n\t\n\t\t function templateOptionValue(prop, prefix, suffix, alternate) {\n\t\t return function getValidationMessage(viewValue, modelValue, scope) {\n\t\t if (scope.options.templateOptions[prop]) {\n\t\t return \"\" + prefix + \" \" + scope.options.templateOptions[prop] + \" \" + suffix;\n\t\t } else {\n\t\t return alternate;\n\t\t }\n\t\t };\n\t\t }\n\t\t}\n\t\n\t/***/ },\n\t/* 7 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar utils = _interopRequire(__webpack_require__(18));\n\t\n\t\tmodule.exports = formlyUtil;\n\t\n\t\t// @ngInject\n\t\tfunction formlyUtil() {\n\t\t return utils;\n\t\t}\n\t\n\t/***/ },\n\t/* 8 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\t\n\t\tmodule.exports = formlyWarn;\n\t\n\t\t// @ngInject\n\t\tfunction formlyWarn(formlyConfig, formlyErrorAndWarningsUrlPrefix, $log) {\n\t\t return function warn() {\n\t\t if (!formlyConfig.disableWarnings) {\n\t\t var args = Array.prototype.slice.call(arguments);\n\t\t var warnInfoSlug = args.shift();\n\t\t args.unshift(\"Formly Warning:\");\n\t\t args.push(\"\" + formlyErrorAndWarningsUrlPrefix + \"\" + warnInfoSlug);\n\t\t $log.warn.apply($log, _toConsumableArray(args));\n\t\t }\n\t\t };\n\t\t}\n\t\tformlyWarn.$inject = [\"formlyConfig\", \"formlyErrorAndWarningsUrlPrefix\", \"$log\"];\n\t\n\t/***/ },\n\t/* 9 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tmodule.exports = formlyCustomValidation;\n\t\n\t\t// @ngInject\n\t\tfunction formlyCustomValidation(formlyUtil, $q) {\n\t\t return {\n\t\t restrict: \"A\",\n\t\t require: \"ngModel\",\n\t\t link: function formlyCustomValidationLink(scope, el, attrs, ctrl) {\n\t\t var opts = scope.options;\n\t\t if (opts.validators) {\n\t\t checkValidators(opts.validators);\n\t\t }\n\t\t opts.validation.messages = opts.validation.messages || {};\n\t\t angular.forEach(opts.validation.messages, function (message, key) {\n\t\t opts.validation.messages[key] = function () {\n\t\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t\t };\n\t\t });\n\t\n\t\t var useNewValidatorsApi = ctrl.hasOwnProperty(\"$validators\") && !attrs.hasOwnProperty(\"useParsers\");\n\t\t angular.forEach(opts.validators, function addValidatorToPipeline(validator, name) {\n\t\t var message = validator.message;\n\t\t if (message) {\n\t\t opts.validation.messages[name] = function () {\n\t\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t\t };\n\t\t }\n\t\t validator = angular.isObject(validator) ? validator.expression : validator;\n\t\t var isPossiblyAsync = !angular.isString(validator);\n\t\t if (useNewValidatorsApi) {\n\t\t setupWithValidators();\n\t\t } else {\n\t\t setupWithParsers();\n\t\t }\n\t\n\t\t function setupWithValidators() {\n\t\t var validatorCollection = isPossiblyAsync ? \"$asyncValidators\" : \"$validators\";\n\t\t ctrl[validatorCollection][name] = function evalValidity(modelValue, viewValue) {\n\t\t var value = formlyUtil.formlyEval(scope, validator, modelValue, viewValue);\n\t\t if (isPossiblyAsync) {\n\t\t return isPromiseLike(value) ? value : value ? $q.when(value) : $q.reject(value);\n\t\t } else {\n\t\t return value;\n\t\t }\n\t\t };\n\t\t }\n\t\n\t\t function setupWithParsers() {\n\t\t var inFlightValidator = undefined;\n\t\t ctrl.$parsers.unshift(function evalValidityOfParser(viewValue) {\n\t\t var isValid = formlyUtil.formlyEval(scope, validator, ctrl.$modelValue, viewValue);\n\t\t if (isPromiseLike(isValid)) {\n\t\t ctrl.$pending = ctrl.$pending || {};\n\t\t ctrl.$pending[name] = true;\n\t\t inFlightValidator = isValid;\n\t\t isValid.then(function () {\n\t\t if (inFlightValidator === isValid) {\n\t\t ctrl.$setValidity(name, true);\n\t\t }\n\t\t })[\"catch\"](function () {\n\t\t if (inFlightValidator === isValid) {\n\t\t ctrl.$setValidity(name, false);\n\t\t }\n\t\t })[\"finally\"](function () {\n\t\t if (Object.keys(ctrl.$pending).length === 1) {\n\t\t delete ctrl.$pending;\n\t\t } else {\n\t\t delete ctrl.$pending[name];\n\t\t }\n\t\t });\n\t\t } else {\n\t\t ctrl.$setValidity(name, isValid);\n\t\t }\n\t\t return viewValue;\n\t\t });\n\t\t }\n\t\t });\n\t\t }\n\t\t };\n\t\n\t\t function isPromiseLike(obj) {\n\t\t return obj && angular.isFunction(obj.then);\n\t\t }\n\t\n\t\t function checkValidators(validators) {\n\t\t var allowedProperties = [\"expression\", \"message\"];\n\t\t var validatorsWithExtraProps = {};\n\t\t angular.forEach(validators, function (validator, name) {\n\t\t if (angular.isString(validator)) {\n\t\t return;\n\t\t }\n\t\t var extraProps = [];\n\t\t angular.forEach(validator, function (v, key) {\n\t\t if (allowedProperties.indexOf(key) === -1) {\n\t\t extraProps.push(key);\n\t\t }\n\t\t });\n\t\t if (extraProps.length) {\n\t\t validatorsWithExtraProps[name] = extraProps;\n\t\t }\n\t\t });\n\t\t if (Object.keys(validatorsWithExtraProps).length) {\n\t\t throw new Error([\"Validators are only allowed to be functions or objects that have \" + allowedProperties.join(\", \") + \".\", \"You provided some extra properties: \" + JSON.stringify(validatorsWithExtraProps)].join(\" \"));\n\t\t }\n\t\t }\n\t\t}\n\t\tformlyCustomValidation.$inject = [\"formlyUtil\", \"$q\"];\n\t\n\t/***/ },\n\t/* 10 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(15));\n\t\n\t\tmodule.exports = formlyField;\n\t\n\t\t/**\n\t\t * @ngdoc directive\n\t\t * @name formlyField\n\t\t * @restrict AE\n\t\t */\n\t\t// @ngInject\n\t\tfunction formlyField($http, $q, $compile, $templateCache, formlyConfig, formlyValidationMessages, formlyApiCheck, formlyUtil, formlyUsability, formlyWarn) {\n\t\t var arrayify = formlyUtil.arrayify;\n\t\n\t\t FormlyFieldController.$inject = [\"$scope\", \"$timeout\", \"$parse\", \"$controller\"];\n\t\t return {\n\t\t restrict: \"AE\",\n\t\t transclude: true,\n\t\t scope: {\n\t\t options: \"=\",\n\t\t model: \"=\",\n\t\t formId: \"@\", // TODO remove formId in a breaking release\n\t\t index: \"=?\",\n\t\t fields: \"=?\",\n\t\t formState: \"=?\",\n\t\t form: \"=?\" // TODO require form in a breaking release\n\t\t },\n\t\t controller: FormlyFieldController,\n\t\t link: fieldLink\n\t\t };\n\t\n\t\t // @ngInject\n\t\t function FormlyFieldController($scope, $timeout, $parse, $controller) {\n\t\t /* jshint maxstatements:31 */\n\t\t if ($scope.options.fieldGroup) {\n\t\t setupFieldGroup();\n\t\t return;\n\t\t }\n\t\n\t\t var fieldType = getFieldType($scope.options);\n\t\t simplifyLife($scope.options);\n\t\t mergeFieldOptionsWithTypeDefaults($scope.options, fieldType);\n\t\t extendOptionsWithDefaults($scope.options, $scope.index);\n\t\t checkApi($scope.options);\n\t\t // set field id to link labels and fields\n\t\n\t\t // initalization\n\t\t setFieldId();\n\t\t setDefaultValue();\n\t\t setInitialValue();\n\t\t runExpressions();\n\t\t addModelWatcher($scope, $scope.options);\n\t\t addValidationMessages($scope.options);\n\t\t invokeControllers($scope, $scope.options, fieldType);\n\t\n\t\t // function definitions\n\t\t function runExpressions() {\n\t\t // must run on next tick to make sure that the current value is correct.\n\t\t $timeout(function runExpressionsOnNextTick() {\n\t\t var field = $scope.options;\n\t\t var currentValue = valueGetterSetter();\n\t\t angular.forEach(field.expressionProperties, function runExpression(expression, prop) {\n\t\t var setter = $parse(prop).assign;\n\t\t var promise = $q.when(formlyUtil.formlyEval($scope, expression, currentValue));\n\t\t promise.then(function setFieldValue(value) {\n\t\t setter(field, value);\n\t\t });\n\t\t });\n\t\t });\n\t\t }\n\t\n\t\t function valueGetterSetter(newVal) {\n\t\t if (!$scope.model || !$scope.options.key) {\n\t\t return;\n\t\t }\n\t\t if (angular.isDefined(newVal)) {\n\t\t $scope.model[$scope.options.key] = newVal;\n\t\t }\n\t\t return $scope.model[$scope.options.key];\n\t\t }\n\t\n\t\t function simplifyLife(options) {\n\t\t // add a few empty objects (if they don't already exist) so you don't have to undefined check everywhere\n\t\t formlyUtil.reverseDeepMerge(options, {\n\t\t data: {},\n\t\t templateOptions: {},\n\t\t validation: {}\n\t\t });\n\t\t // create $scope.to so template authors can reference to instead of $scope.options.templateOptions\n\t\t $scope.to = $scope.options.templateOptions;\n\t\t }\n\t\n\t\t function setFieldId() {\n\t\t if (angular.isFunction(formlyConfig.extras.getFieldId)) {\n\t\t $scope.id = formlyConfig.extras.getFieldId($scope.options, $scope.model, $scope);\n\t\t } else {\n\t\t var formName = $scope.form && $scope.form.$name || $scope.formId;\n\t\t $scope.id = formlyUtil.getFieldId(formName, $scope.options, $scope.index);\n\t\t }\n\t\t $scope.options.id = $scope.id;\n\t\t }\n\t\n\t\t function setDefaultValue() {\n\t\t if (angular.isDefined($scope.options.defaultValue) && !angular.isDefined($scope.model[$scope.options.key])) {\n\t\t $scope.model[$scope.options.key] = $scope.options.defaultValue;\n\t\t }\n\t\t }\n\t\n\t\t function setInitialValue() {\n\t\t $scope.options.initialValue = $scope.model && $scope.model[$scope.options.key];\n\t\t }\n\t\n\t\t function mergeFieldOptionsWithTypeDefaults(options, type) {\n\t\t if (type) {\n\t\t mergeOptions(options, type.defaultOptions);\n\t\t }\n\t\t var properOrder = arrayify(options.optionsTypes).reverse(); // so the right things are overridden\n\t\t angular.forEach(properOrder, function (typeName) {\n\t\t mergeOptions(options, formlyConfig.getType(typeName, true, options).defaultOptions);\n\t\t });\n\t\t }\n\t\n\t\t function mergeOptions(options, extraOptions) {\n\t\t if (extraOptions) {\n\t\t if (angular.isFunction(extraOptions)) {\n\t\t extraOptions = extraOptions(options);\n\t\t }\n\t\t formlyUtil.reverseDeepMerge(options, extraOptions);\n\t\t }\n\t\t }\n\t\n\t\t function extendOptionsWithDefaults(options, index) {\n\t\t var key = options.key || index || 0;\n\t\t angular.extend(options, {\n\t\t // attach the key in case the formly-field directive is used directly\n\t\t key: key,\n\t\t value: valueGetterSetter,\n\t\t runExpressions: runExpressions,\n\t\t resetModel: resetModel,\n\t\t updateInitialValue: updateInitialValue\n\t\t });\n\t\t }\n\t\n\t\t // initialization functions\n\t\t function addModelWatcher(scope, options) {\n\t\t if (options.model) {\n\t\t scope.$watch(\"options.model\", runExpressions, true);\n\t\t }\n\t\t }\n\t\n\t\t function resetModel() {\n\t\t $scope.model[$scope.options.key] = $scope.options.initialValue;\n\t\t if ($scope.options.formControl) {\n\t\t $scope.options.formControl.$setViewValue($scope.model[$scope.options.key]);\n\t\t $scope.options.formControl.$render();\n\t\t $scope.options.formControl.$setUntouched();\n\t\t $scope.options.formControl.$setPristine();\n\t\t }\n\t\t }\n\t\n\t\t function updateInitialValue() {\n\t\t $scope.options.initialValue = $scope.model[$scope.options.key];\n\t\t }\n\t\n\t\t function addValidationMessages(options) {\n\t\t options.validation.messages = options.validation.messages || {};\n\t\t angular.forEach(formlyValidationMessages.messages, function createFunctionForMessage(expression, name) {\n\t\t if (!options.validation.messages[name]) {\n\t\t options.validation.messages[name] = function evaluateMessage(viewValue, modelValue, scope) {\n\t\t return formlyUtil.formlyEval(scope, expression, modelValue, viewValue);\n\t\t };\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function invokeControllers(scope) {\n\t\t var options = arguments[1] === undefined ? {} : arguments[1];\n\t\t var type = arguments[2] === undefined ? {} : arguments[2];\n\t\n\t\t angular.forEach([type.controller, options.controller], function (controller) {\n\t\t if (controller) {\n\t\t $controller(controller, { $scope: scope });\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function setupFieldGroup() {\n\t\t $scope.options.options = $scope.options.options || {};\n\t\t $scope.options.options.formState = $scope.formState;\n\t\t }\n\t\t }\n\t\n\t\t // link function\n\t\t function fieldLink(scope, el) {\n\t\t if (scope.options.fieldGroup) {\n\t\t setFieldGroupTemplate();\n\t\t return;\n\t\t }\n\t\n\t\t addAttributes();\n\t\t addClasses();\n\t\n\t\t var type = getFieldType(scope.options);\n\t\t var args = arguments;\n\t\t var thusly = this;\n\t\t getFieldTemplate(scope.options).then(runManipulators(formlyConfig.templateManipulators.preWrapper)).then(transcludeInWrappers(scope.options)).then(runManipulators(formlyConfig.templateManipulators.postWrapper)).then(setElementTemplate).then(watchFormControl).then(callLinkFunctions)[\"catch\"](function (error) {\n\t\t formlyWarn(\"there-was-a-problem-setting-the-template-for-this-field\", \"There was a problem setting the template for this field \", scope.options, error);\n\t\t });\n\t\n\t\t function setFieldGroupTemplate() {\n\t\t checkFieldGroupApi(scope.options);\n\t\t el.addClass(\"formly-field-group\");\n\t\t var extraAttributes = \"\";\n\t\t if (scope.options.elementAttributes) {\n\t\t extraAttributes = Object.keys(scope.options.elementAttributes).map(function (key) {\n\t\t return \"\" + key + \"=\\\"\" + scope.options.elementAttributes[key] + \"\\\"\";\n\t\t }).join(\" \");\n\t\t }\n\t\t setElementTemplate(\"\\n \\n \\n \");\n\t\t }\n\t\n\t\t function addAttributes() {\n\t\t if (scope.options.elementAttributes) {\n\t\t el.attr(scope.options.elementAttributes);\n\t\t }\n\t\t }\n\t\n\t\t function addClasses() {\n\t\t if (scope.options.className) {\n\t\t el.addClass(scope.options.className);\n\t\t }\n\t\t if (scope.options.type) {\n\t\t el.addClass(\"formly-field-\" + scope.options.type);\n\t\t }\n\t\t }\n\t\n\t\t function setElementTemplate(templateString) {\n\t\t el.html(asHtml(templateString));\n\t\t $compile(el.contents())(scope);\n\t\t return templateString;\n\t\t }\n\t\n\t\t function watchFormControl(templateString) {\n\t\t var stopWatchingField = angular.noop;\n\t\t var stopWatchingShowError = angular.noop;\n\t\t if (scope.options.noFormControl) {\n\t\t return;\n\t\t }\n\t\t var templateEl = angular.element(\"\" + templateString + \"
\");\n\t\t var ngModelNode = templateEl[0].querySelector(\"[ng-model],[data-ng-model]\");\n\t\t if (ngModelNode && ngModelNode.getAttribute(\"name\")) {\n\t\t watchFieldNameOrExistence(ngModelNode.getAttribute(\"name\"));\n\t\t }\n\t\n\t\t function watchFieldNameOrExistence(name) {\n\t\t var nameExpressionRegex = /\\{\\{(.*?)}}/;\n\t\t var nameExpression = nameExpressionRegex.exec(name);\n\t\t if (nameExpression) {\n\t\t watchFieldName(nameExpression[1]);\n\t\t } else {\n\t\t watchFieldExistence(name);\n\t\t }\n\t\t }\n\t\n\t\t function watchFieldName(expression) {\n\t\t scope.$watch(expression, function oneFieldNameChange(name) {\n\t\t if (name) {\n\t\t stopWatchingField();\n\t\t watchFieldExistence(name);\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function watchFieldExistence(name) {\n\t\t stopWatchingField = scope.$watch(\"form[\\\"\" + name + \"\\\"]\", function formControlChange(formControl) {\n\t\t if (formControl) {\n\t\t scope.fc = formControl; // shortcut for template authors\n\t\t scope.options.formControl = formControl;\n\t\t stopWatchingShowError();\n\t\t addShowMessagesWatcher();\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function addShowMessagesWatcher() {\n\t\t stopWatchingShowError = scope.$watch(function watchShowValidationChange() {\n\t\t var customExpression = formlyConfig.extras.errorExistsAndShouldBeVisibleExpression;\n\t\t var options = scope.options;\n\t\t var fc = scope.fc;\n\t\n\t\t if (!fc.$invalid) {\n\t\t return false;\n\t\t } else if (typeof options.validation.show === \"boolean\") {\n\t\t return options.validation.show;\n\t\t } else if (customExpression) {\n\t\t return formlyUtil.formlyEval(scope, customExpression, fc.$modelValue, fc.$viewValue);\n\t\t } else {\n\t\t var noTouchedButDirty = angular.isUndefined(fc.$touched) && fc.$dirty;\n\t\t return scope.fc.$touched || noTouchedButDirty;\n\t\t }\n\t\t }, function onShowValidationChange(show) {\n\t\t scope.options.validation.errorExistsAndShouldBeVisible = show;\n\t\t scope.showError = show; // shortcut for template authors\n\t\t });\n\t\t }\n\t\t }\n\t\n\t\t function callLinkFunctions() {\n\t\t if (type && type.link) {\n\t\t type.link.apply(thusly, args);\n\t\t }\n\t\t if (scope.options.link) {\n\t\t scope.options.link.apply(thusly, args);\n\t\t }\n\t\t }\n\t\n\t\t function runManipulators(manipulators) {\n\t\t return function runManipulatorsOnTemplate(template) {\n\t\t var chain = $q.when(template);\n\t\t angular.forEach(manipulators, function (manipulator) {\n\t\t chain = chain.then(function (template) {\n\t\t return $q.when(manipulator(template, scope.options, scope)).then(function (newTemplate) {\n\t\t return angular.isString(newTemplate) ? newTemplate : asHtml(newTemplate);\n\t\t });\n\t\t });\n\t\t });\n\t\t return chain;\n\t\t };\n\t\t }\n\t\t }\n\t\n\t\t // stateless util functions\n\t\t function asHtml(el) {\n\t\t var wrapper = angular.element(\" \");\n\t\t return wrapper.append(el).html();\n\t\t }\n\t\n\t\t function getFieldType(options) {\n\t\t return options.type && formlyConfig.getType(options.type);\n\t\t }\n\t\n\t\t function getFieldTemplate(options) {\n\t\t function fromOptionsOrType(key, type) {\n\t\t if (angular.isDefined(options[key])) {\n\t\t return options[key];\n\t\t } else if (type && angular.isDefined(type[key])) {\n\t\t return type[key];\n\t\t }\n\t\t }\n\t\n\t\t var type = formlyConfig.getType(options.type, true, options);\n\t\t var template = fromOptionsOrType(\"template\", type);\n\t\t var templateUrl = fromOptionsOrType(\"templateUrl\", type);\n\t\t if (angular.isUndefined(template) && !templateUrl) {\n\t\t throw formlyUsability.getFieldError(\"type-type-has-no-template\", \"Type '\" + options.type + \"' has not template. On element:\", options);\n\t\t }\n\t\n\t\t return getTemplate(templateUrl || template, angular.isUndefined(template), options);\n\t\t }\n\t\n\t\t function getTemplate(template, isUrl, options) {\n\t\t var templatePromise = undefined;\n\t\t if (angular.isFunction(template)) {\n\t\t templatePromise = $q.when(template(options));\n\t\t } else {\n\t\t templatePromise = $q.when(template);\n\t\t }\n\t\n\t\t if (!isUrl) {\n\t\t return templatePromise;\n\t\t } else {\n\t\t var _ret = (function () {\n\t\t var httpOptions = { cache: $templateCache };\n\t\t return {\n\t\t v: templatePromise.then(function (url) {\n\t\t return $http.get(url, httpOptions);\n\t\t }).then(function (response) {\n\t\t return response.data;\n\t\t })[\"catch\"](function handleErrorGettingATemplate(error) {\n\t\t formlyWarn(\"problem-loading-template-for-templateurl\", \"Problem loading template for \" + template, error);\n\t\t })\n\t\t };\n\t\t })();\n\t\n\t\t if (typeof _ret === \"object\") {\n\t\t return _ret.v;\n\t\t }\n\t\t }\n\t\t }\n\t\n\t\t function transcludeInWrappers(options) {\n\t\t var wrapper = getWrapperOption(options);\n\t\n\t\t return function transcludeTemplate(template) {\n\t\t if (!wrapper.length) {\n\t\t return $q.when(template);\n\t\t }\n\t\n\t\t wrapper.forEach(function (wrapper) {\n\t\t formlyUsability.checkWrapper(wrapper, options);\n\t\t wrapper.validateOptions && wrapper.validateOptions(options);\n\t\t runApiCheck(wrapper, options);\n\t\t });\n\t\t var promises = wrapper.map(function (w) {\n\t\t return getTemplate(w.template || w.templateUrl, !w.template);\n\t\t });\n\t\t return $q.all(promises).then(function (wrappersTemplates) {\n\t\t wrappersTemplates.forEach(function (wrapperTemplate, index) {\n\t\t formlyUsability.checkWrapperTemplate(wrapperTemplate, wrapper[index]);\n\t\t });\n\t\t wrappersTemplates.reverse(); // wrapper 0 is wrapped in wrapper 1 and so on...\n\t\t var totalWrapper = wrappersTemplates.shift();\n\t\t wrappersTemplates.forEach(function (wrapperTemplate) {\n\t\t totalWrapper = doTransclusion(totalWrapper, wrapperTemplate);\n\t\t });\n\t\t return doTransclusion(totalWrapper, template);\n\t\t });\n\t\t };\n\t\t }\n\t\n\t\t function doTransclusion(wrapper, template) {\n\t\t var superWrapper = angular.element(\" \"); // this allows people not have to have a single root in wrappers\n\t\t superWrapper.append(wrapper);\n\t\t var transcludeEl = superWrapper.find(\"formly-transclude\");\n\t\t if (!transcludeEl.length) {\n\t\t //try it using our custom find function\n\t\t transcludeEl = formlyUtil.findByNodeName(superWrapper, \"formly-transclude\");\n\t\t }\n\t\t transcludeEl.replaceWith(template);\n\t\t return superWrapper.html();\n\t\t }\n\t\n\t\t function getWrapperOption(options) {\n\t\t var wrapper = options.wrapper;\n\t\t // explicit null means no wrapper\n\t\t if (wrapper === null) {\n\t\t return [];\n\t\t }\n\t\n\t\t // nothing specified means use the default wrapper for the type\n\t\t if (!wrapper) {\n\t\t // get all wrappers that specify they apply to this type\n\t\t wrapper = arrayify(formlyConfig.getWrapperByType(options.type));\n\t\t } else {\n\t\t wrapper = arrayify(wrapper).map(formlyConfig.getWrapper);\n\t\t }\n\t\n\t\t // get all wrappers for that this type specified that it uses.\n\t\t var type = formlyConfig.getType(options.type, true, options);\n\t\t if (type && type.wrapper) {\n\t\t var typeWrappers = arrayify(type.wrapper).map(formlyConfig.getWrapper);\n\t\t wrapper = wrapper.concat(typeWrappers);\n\t\t }\n\t\n\t\t // add the default wrapper last\n\t\t var defaultWrapper = formlyConfig.getWrapper();\n\t\t if (defaultWrapper) {\n\t\t wrapper.push(defaultWrapper);\n\t\t }\n\t\t return wrapper;\n\t\t }\n\t\n\t\t function checkApi(options) {\n\t\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyFieldOptions, options, {\n\t\t prefix: \"formly-field directive\",\n\t\t url: \"formly-field-directive-validation-failed\"\n\t\t });\n\t\t // validate with the type\n\t\t var type = options.type && formlyConfig.getType(options.type);\n\t\t if (type) {\n\t\t if (type.validateOptions) {\n\t\t type.validateOptions(options);\n\t\t }\n\t\t runApiCheck(type, options);\n\t\t }\n\t\t }\n\t\n\t\t function checkFieldGroupApi(options) {\n\t\t formlyApiCheck[\"throw\"](formlyApiCheck.fieldGroup, options, {\n\t\t prefix: \"formly-field directive\",\n\t\t url: \"formly-field-directive-validation-failed\"\n\t\t });\n\t\t }\n\t\n\t\t function runApiCheck(_ref, options) {\n\t\t var apiCheck = _ref.apiCheck;\n\t\t var apiCheckInstance = _ref.apiCheckInstance;\n\t\t var apiCheckFunction = _ref.apiCheckFunction;\n\t\t var apiCheckOptions = _ref.apiCheckOptions;\n\t\n\t\t if (!apiCheck) {\n\t\t return;\n\t\t }\n\t\t var instance = apiCheckInstance || formlyApiCheck;\n\t\t var fn = apiCheckFunction || \"warn\";\n\t\t var shape = instance.shape(apiCheck);\n\t\t instance[fn](shape, options, apiCheckOptions || {\n\t\t prefix: \"formly-field \" + name,\n\t\t url: formlyApiCheck.config.output.docsBaseUrl + \"formly-field-type-apicheck-failed\"\n\t\t });\n\t\t }\n\t\t}\n\t\tformlyField.$inject = [\"$http\", \"$q\", \"$compile\", \"$templateCache\", \"formlyConfig\", \"formlyValidationMessages\", \"formlyApiCheck\", \"formlyUtil\", \"formlyUsability\", \"formlyWarn\"];\n\t\n\t/***/ },\n\t/* 11 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tmodule.exports = formlyFocus;\n\t\n\t\t// @ngInject\n\t\tfunction formlyFocus($timeout, $document) {\n\t\t /* jshint -W052 */\n\t\t return {\n\t\t restrict: \"A\",\n\t\t link: function formlyFocusLink(scope, element, attrs) {\n\t\t var previousEl = null;\n\t\t var el = element[0];\n\t\t var doc = $document[0];\n\t\t attrs.$observe(\"formlyFocus\", function respondToFocusExpressionChange(value) {\n\t\t if (value === \"true\") {\n\t\t $timeout(function setElementFocus() {\n\t\t previousEl = doc.activeElement;\n\t\t el.focus();\n\t\t }, ~ ~attrs.focusWait);\n\t\t } else if (value === \"false\") {\n\t\t if (doc.activeElement === el) {\n\t\t el.blur();\n\t\t if (attrs.hasOwnProperty(\"refocus\") && previousEl) {\n\t\t previousEl.focus();\n\t\t }\n\t\t }\n\t\t }\n\t\t });\n\t\t }\n\t\t };\n\t\t}\n\t\tformlyFocus.$inject = [\"$timeout\", \"$document\"];\n\t\n\t/***/ },\n\t/* 12 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\t\n\t\tvar _slice = Array.prototype.slice;\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(15));\n\t\n\t\tmodule.exports = formlyForm;\n\t\n\t\t/**\n\t\t * @ngdoc directive\n\t\t * @name formlyForm\n\t\t * @restrict E\n\t\t */\n\t\t// @ngInject\n\t\tfunction formlyForm(formlyUsability, $parse, formlyApiCheck, formlyConfig) {\n\t\t var currentFormId = 1;\n\t\t return {\n\t\t restrict: \"E\",\n\t\t template: function formlyFormGetTemplate(el, attrs) {\n\t\t /* jshint -W033 */ // this because jshint is broken I guess...\n\t\t var rootEl = getRootEl();\n\t\t var fieldRootEl = getFieldRootEl();\n\t\t var formId = \"formly_\" + currentFormId++;\n\t\t var parentFormAttributes = \"\";\n\t\t if (attrs.hasOwnProperty(\"isFieldGroup\") && el.parent().parent().hasClass(\"formly\")) {\n\t\t parentFormAttributes = copyAttributes(el.parent().parent()[0].attributes);\n\t\t }\n\t\t return \"\\n <\" + rootEl + \" class=\\\"formly\\\"\\n name=\\\"\" + getFormName() + \"\\\"\\n role=\\\"form\\\" \" + parentFormAttributes + \">\\n <\" + fieldRootEl + \" formly-field\\n ng-repeat=\\\"field in fields \" + getTrackBy() + \"\\\"\\n \" + getHideDirective() + \"=\\\"!field.hide\\\"\\n class=\\\"formly-field\\\"\\n options=\\\"field\\\"\\n model=\\\"field.model || model\\\"\\n fields=\\\"fields\\\"\\n form=\\\"theFormlyForm\\\"\\n form-id=\\\"\" + getFormName() + \"\\\"\\n form-state=\\\"options.formState\\\"\\n index=\\\"$index\\\">\\n \" + fieldRootEl + \">\\n
\\n \" + rootEl + \">\\n \";\n\t\n\t\t function getRootEl() {\n\t\t return attrs.rootEl || \"ng-form\";\n\t\t }\n\t\n\t\t function getFieldRootEl() {\n\t\t return attrs.fieldRootEl || \"div\";\n\t\t }\n\t\n\t\t function getHideDirective() {\n\t\t return attrs.hideDirective || formlyConfig.extras.defaultHideDirective || \"ng-if\";\n\t\t }\n\t\n\t\t function getTrackBy() {\n\t\t if (!attrs.trackBy) {\n\t\t return \"\";\n\t\t } else {\n\t\t return \"track by \" + attrs.trackBy;\n\t\t }\n\t\t }\n\t\n\t\t function getFormName() {\n\t\t var formName = formId;\n\t\t var bindName = attrs.bindName;\n\t\t if (bindName) {\n\t\t if (angular.version.minor < 3) {\n\t\t throw formlyUsability.getFormlyError(\"bind-name attribute on formly-form not allowed in > angular 1.3\");\n\t\t }\n\t\t // we can do a one-time binding here because we know we're in 1.3.x territory\n\t\t formName = \"{{::'formly_' + \" + bindName + \"}}\";\n\t\t }\n\t\t return formName;\n\t\t }\n\t\n\t\t function copyAttributes(attributes) {\n\t\t var excluded = [\"model\", \"form\", \"fields\", \"options\", \"name\", \"role\", \"class\"];\n\t\t var arrayAttrs = [];\n\t\t angular.forEach(attributes, function (_ref) {\n\t\t var nodeName = _ref.nodeName;\n\t\t var nodeValue = _ref.nodeValue;\n\t\n\t\t if (nodeName !== \"undefined\" && excluded.indexOf(nodeName) === -1) {\n\t\t arrayAttrs.push(\"\" + toKebabCase(nodeName) + \"=\\\"\" + nodeValue + \"\\\"\");\n\t\t }\n\t\t });\n\t\t return arrayAttrs.join(\" \");\n\t\t }\n\t\n\t\t function toKebabCase(string) {\n\t\t if (string) {\n\t\t return string.replace(/([A-Z])/g, function ($1) {\n\t\t return \"-\" + $1.toLowerCase();\n\t\t });\n\t\t } else {\n\t\t return \"\";\n\t\t }\n\t\t }\n\t\t },\n\t\t replace: true,\n\t\t transclude: true,\n\t\t scope: {\n\t\t fields: \"=\",\n\t\t model: \"=\",\n\t\t form: \"=?\",\n\t\t options: \"=?\"\n\t\t },\n\t\t controller: /* @ngInject */[\"$scope\", \"formlyUtil\", function FormlyFormController($scope, formlyUtil) {\n\t\t setupOptions();\n\t\t $scope.model = $scope.model || {};\n\t\t $scope.fields = $scope.fields || [];\n\t\n\t\t angular.forEach($scope.fields, initModel); // initializes the model property if set to 'formState'\n\t\t angular.forEach($scope.fields, attachKey); // attaches a key based on the index if a key isn't specified\n\t\t angular.forEach($scope.fields, setupWatchers); // setup watchers for all fields\n\t\n\t\t // watch the model and evaluate watch expressions that depend on it.\n\t\t $scope.$watch(\"model\", onModelOrFormStateChange, true);\n\t\t if ($scope.options.formState) {\n\t\t $scope.$watch(\"options.formState\", onModelOrFormStateChange, true);\n\t\t }\n\t\n\t\t function onModelOrFormStateChange() {\n\t\t angular.forEach($scope.fields, function runFieldExpressionProperties(field, index) {\n\t\t /*jshint -W030 */\n\t\t var model = field.model || $scope.model;\n\t\t field.runExpressions && field.runExpressions(model);\n\t\t if (field.hideExpression) {\n\t\t // can't use hide with expressionProperties reliably\n\t\t var val = model[field.key];\n\t\t // this makes it closer to what a regular expressionProperty would be\n\t\t var extraLocals = {\n\t\t options: field,\n\t\t index: index,\n\t\t formState: $scope.options.formState,\n\t\t formId: $scope.formId\n\t\t };\n\t\t field.hide = formlyUtil.formlyEval($scope, field.hideExpression, val, val, extraLocals);\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function setupOptions() {\n\t\t formlyApiCheck[\"throw\"]([formlyApiCheck.formOptionsApi.optional], [$scope.options], { prefix: \"formly-form options check\" });\n\t\t $scope.options = $scope.options || {};\n\t\t $scope.options.formState = $scope.options.formState || {};\n\t\n\t\t angular.extend($scope.options, {\n\t\t updateInitialValue: updateInitialValue,\n\t\t resetModel: resetModel\n\t\t });\n\t\t }\n\t\n\t\t function updateInitialValue() {\n\t\t angular.forEach($scope.fields, function (field) {\n\t\t if (isFieldGroup(field)) {\n\t\t field.options.updateInitialValue();\n\t\t } else {\n\t\t field.updateInitialValue();\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function resetModel() {\n\t\t angular.forEach($scope.fields, function (field) {\n\t\t if (isFieldGroup(field)) {\n\t\t field.options.resetModel();\n\t\t } else {\n\t\t field.resetModel();\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function initModel(field) {\n\t\t if (field.model && field.model === \"formState\") {\n\t\t field.model = $scope.options.formState;\n\t\t }\n\t\t }\n\t\n\t\t function attachKey(field, index) {\n\t\t if (!isFieldGroup(field)) {\n\t\t field.key = field.key || index || 0;\n\t\t }\n\t\t }\n\t\n\t\t function setupWatchers(field, index) {\n\t\t if (isFieldGroup(field) || !angular.isDefined(field.watcher)) {\n\t\t return;\n\t\t }\n\t\t var watchers = field.watcher;\n\t\t if (!angular.isArray(watchers)) {\n\t\t watchers = [watchers];\n\t\t }\n\t\t angular.forEach(watchers, function setupWatcher(watcher) {\n\t\t if (!angular.isDefined(watcher.listener)) {\n\t\t throw formlyUsability.getFieldError(\"all-field-watchers-must-have-a-listener\", \"All field watchers must have a listener\", field);\n\t\t }\n\t\t var watchExpression = getWatchExpression(watcher, field, index);\n\t\t var watchListener = getWatchListener(watcher, field, index);\n\t\n\t\t var type = watcher.type || \"$watch\";\n\t\t watcher.stopWatching = $scope[type](watchExpression, watchListener, watcher.watchDeep);\n\t\t });\n\t\t }\n\t\n\t\t function getWatchExpression(watcher, field, index) {\n\t\t var watchExpression = watcher.expression || \"model['\" + field.key + \"']\";\n\t\t if (angular.isFunction(watchExpression)) {\n\t\t // wrap the field's watch expression so we can call it with the field as the first arg\n\t\t // and the stop function as the last arg as a helper\n\t\t var originalExpression = watchExpression;\n\t\t watchExpression = function formlyWatchExpression() {\n\t\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t\t return originalExpression.apply(undefined, _toConsumableArray(args));\n\t\t };\n\t\t watchExpression.displayName = \"Formly Watch Expression for field for \" + field.key;\n\t\t }\n\t\t return watchExpression;\n\t\t }\n\t\n\t\t function getWatchListener(watcher, field, index) {\n\t\t var watchListener = watcher.listener;\n\t\t if (angular.isFunction(watchListener)) {\n\t\t // wrap the field's watch listener so we can call it with the field as the first arg\n\t\t // and the stop function as the last arg as a helper\n\t\t var originalListener = watchListener;\n\t\t watchListener = function formlyWatchListener() {\n\t\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t\t return originalListener.apply(undefined, _toConsumableArray(args));\n\t\t };\n\t\t watchListener.displayName = \"Formly Watch Listener for field for \" + field.key;\n\t\t }\n\t\t return watchListener;\n\t\t }\n\t\n\t\t function modifyArgs(watcher, index) {\n\t\t for (var _len = arguments.length, originalArgs = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n\t\t originalArgs[_key - 2] = arguments[_key];\n\t\t }\n\t\n\t\t return [$scope.fields[index]].concat(originalArgs, [watcher.stopWatching]);\n\t\t }\n\t\n\t\t function isFieldGroup(field) {\n\t\t return field && !!field.fieldGroup;\n\t\t }\n\t\t }],\n\t\t link: function link(scope, el, attrs) {\n\t\t var formId = attrs.name;\n\t\t scope.formId = formId;\n\t\t scope.theFormlyForm = scope[formId];\n\t\t if (attrs.form) {\n\t\t $parse(attrs.form).assign(scope.$parent, scope[formId]);\n\t\t }\n\t\n\t\t // chrome autocomplete lameness\n\t\t // see https://code.google.com/p/chromium/issues/detail?id=468153#c14\n\t\t // ლ(ಠ益ಠლ) (╯°□°)╯︵ ┻━┻ (◞‸◟;)\n\t\t var global = formlyConfig.extras.removeChromeAutoComplete === true;\n\t\t var offInstance = scope.options && scope.options.removeChromeAutoComplete === false;\n\t\t var onInstance = scope.options && scope.options.removeChromeAutoComplete === true;\n\t\t if (global && !offInstance || onInstance) {\n\t\t var input = document.createElement(\"input\");\n\t\t input.setAttribute(\"autocomplete\", \"address-level4\");\n\t\t input.setAttribute(\"hidden\", true);\n\t\t el[0].appendChild(input);\n\t\t }\n\t\t }\n\t\t };\n\t\t}\n\t\tformlyForm.$inject = [\"formlyUsability\", \"$parse\", \"formlyApiCheck\", \"formlyConfig\"];\n\t\n\t/***/ },\n\t/* 13 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(15));\n\t\n\t\tmodule.exports = addFormlyNgModelAttrsManipulator;\n\t\n\t\t// @ngInject\n\t\tfunction addFormlyNgModelAttrsManipulator(formlyConfig) {\n\t\t if (formlyConfig.extras.disableNgModelAttrsManipulator) {\n\t\t return;\n\t\t }\n\t\t formlyConfig.templateManipulators.preWrapper.push(ngModelAttrsManipulator);\n\t\n\t\t function ngModelAttrsManipulator(template, options, scope) {\n\t\t /* jshint maxcomplexity:6 */\n\t\t var el = document.createElement(\"div\");\n\t\t var data = options.data;\n\t\t if (data.skipNgModelAttrsManipulator === true) {\n\t\t return template;\n\t\t }\n\t\t el.innerHTML = template;\n\t\t var modelNodes = el.querySelectorAll(\"[ng-model], [data-ng-model]\");\n\t\t if (!modelNodes || !modelNodes.length) {\n\t\t return template;\n\t\t }\n\t\n\t\t addIfNotPresent(modelNodes, \"id\", scope.id);\n\t\t addIfNotPresent(modelNodes, \"name\", scope.id);\n\t\n\t\t addValidation();\n\t\t addModelOptions();\n\t\t addTemplateOptionsAttrs();\n\t\n\t\t return el.innerHTML;\n\t\n\t\t function addValidation() {\n\t\t if (angular.isDefined(options.validators) || angular.isDefined(options.validation.messages)) {\n\t\t addIfNotPresent(modelNodes, \"formly-custom-validation\", \"\");\n\t\t }\n\t\t }\n\t\n\t\t function addModelOptions() {\n\t\t if (angular.isDefined(options.modelOptions)) {\n\t\t addIfNotPresent(modelNodes, \"ng-model-options\", \"options.modelOptions\");\n\t\t if (options.modelOptions.getterSetter) {\n\t\t angular.forEach(modelNodes, function (node) {\n\t\t node.setAttribute(\"ng-model\", \"options.value\");\n\t\t });\n\t\t }\n\t\t }\n\t\t }\n\t\n\t\t function addTemplateOptionsAttrs() {\n\t\t if (!options.templateOptions && !options.expressionProperties) {\n\t\t // no need to run these if there are no templateOptions or expressionProperties\n\t\t return;\n\t\t }\n\t\t var to = options.templateOptions || {};\n\t\t var ep = options.expressionProperties || {};\n\t\n\t\t var ngModelAttributes = getBuiltInAttributes();\n\t\n\t\t // extend with the user's specifications winning\n\t\t angular.extend(ngModelAttributes, options.ngModelAttrs);\n\t\n\t\t // Feel free to make this more simple :-)\n\t\t angular.forEach(ngModelAttributes, function (val, name) {\n\t\t /* jshint maxcomplexity:14 */\n\t\t var attrVal = undefined;\n\t\t var attrName = undefined;\n\t\t var ref = \"options.templateOptions['\" + name + \"']\";\n\t\t var toVal = to[name];\n\t\t var epVal = getEpValue(ep, name);\n\t\n\t\t var inTo = angular.isDefined(toVal);\n\t\t var inEp = angular.isDefined(epVal);\n\t\t if (val.value) {\n\t\t // I realize this looks backwards, but it's right, trust me...\n\t\t attrName = val.value;\n\t\t attrVal = name;\n\t\t } else if (val.expression && inTo) {\n\t\t attrName = val.expression;\n\t\t if (angular.isString(to[name])) {\n\t\t attrVal = \"$eval(\" + ref + \")\";\n\t\t } else if (angular.isFunction(to[name])) {\n\t\t attrVal = \"\" + ref + \"(model[options.key], options, this, $event)\";\n\t\t } else {\n\t\t throw new Error(\"options.templateOptions.\" + name + \" must be a string or function: \" + JSON.stringify(options));\n\t\t }\n\t\t } else if (val.bound && inEp) {\n\t\t attrName = val.bound;\n\t\t attrVal = ref;\n\t\t } else if ((val.attribute || val.boolean) && inEp) {\n\t\t attrName = val.attribute || val.boolean;\n\t\t attrVal = \"{{\" + ref + \"}}\";\n\t\t } else if (val.attribute && inTo) {\n\t\t attrName = val.attribute;\n\t\t attrVal = toVal;\n\t\t } else if (val.boolean) {\n\t\t if (inTo && !inEp && toVal) {\n\t\t attrName = val.boolean;\n\t\t attrVal = true;\n\t\t } else {}\n\t\t } else if (val.bound && inTo) {\n\t\t attrName = val.bound;\n\t\t attrVal = ref;\n\t\t }\n\t\n\t\t if (angular.isDefined(attrName) && angular.isDefined(attrVal)) {\n\t\t addIfNotPresent(modelNodes, attrName, attrVal);\n\t\t }\n\t\t });\n\t\t }\n\t\t }\n\t\n\t\t // Utility functions\n\t\t function getBuiltInAttributes() {\n\t\t var ngModelAttributes = {\n\t\t focus: {\n\t\t attribute: \"formly-focus\"\n\t\t }\n\t\t };\n\t\t var boundOnly = [];\n\t\t var bothBooleanAndBound = [\"required\", \"disabled\"];\n\t\t var bothAttributeAndBound = [\"pattern\", \"minlength\"];\n\t\t var expressionOnly = [\"change\", \"keydown\", \"keyup\", \"keypress\", \"click\", \"focus\", \"blur\"];\n\t\t var attributeOnly = [\"placeholder\", \"min\", \"max\", \"tabindex\", \"type\"];\n\t\t if (formlyConfig.extras.ngModelAttrsManipulatorPreferUnbound) {\n\t\t bothAttributeAndBound.push(\"maxlength\");\n\t\t } else {\n\t\t boundOnly.push(\"maxlength\");\n\t\t }\n\t\n\t\t angular.forEach(boundOnly, function (item) {\n\t\t ngModelAttributes[item] = { bound: \"ng-\" + item };\n\t\t });\n\t\n\t\t angular.forEach(bothBooleanAndBound, function (item) {\n\t\t ngModelAttributes[item] = { boolean: item, bound: \"ng-\" + item };\n\t\t });\n\t\n\t\t angular.forEach(bothAttributeAndBound, function (item) {\n\t\t ngModelAttributes[item] = { attribute: item, bound: \"ng-\" + item };\n\t\t });\n\t\n\t\t angular.forEach(expressionOnly, function (item) {\n\t\t var propName = \"on\" + item.substr(0, 1).toUpperCase() + item.substr(1);\n\t\t ngModelAttributes[propName] = { expression: \"ng-\" + item };\n\t\t });\n\t\n\t\t angular.forEach(attributeOnly, function (item) {\n\t\t ngModelAttributes[item] = { attribute: item };\n\t\t });\n\t\t return ngModelAttributes;\n\t\t }\n\t\n\t\t function getEpValue(ep, name) {\n\t\t return ep[\"templateOptions.\" + name] || ep[\"templateOptions['\" + name + \"']\"] || ep[\"templateOptions[\\\"\" + name + \"\\\"]\"];\n\t\t }\n\t\n\t\t function addIfNotPresent(nodes, attr, val) {\n\t\t angular.forEach(nodes, function (node) {\n\t\t if (!node.getAttribute(attr)) {\n\t\t node.setAttribute(attr, val);\n\t\t }\n\t\t });\n\t\t }\n\t\t}\n\t\taddFormlyNgModelAttrsManipulator.$inject = [\"formlyConfig\"];\n\t\n\t\t// jshint -W035\n\t\t// empty to illustrate that a boolean will not be added via val.bound\n\t\t// if you want it added via val.bound, then put it in expressionProperties\n\t\n\t/***/ },\n\t/* 14 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tmodule.exports = addCustomTags;\n\t\n\t\t// @ngInject\n\t\tfunction addCustomTags($document) {\n\t\t if ($document && $document.get) {\n\t\t (function () {\n\t\t //IE8 check ->\n\t\t // http://stackoverflow.com/questions/10964966/detect-ie-version-prior-to-v9-in-javascript/10965203#10965203\n\t\t var document = $document.get(0);\n\t\t var div = document.createElement(\"div\");\n\t\t div.innerHTML = \"\";\n\t\t var isIeLessThan9 = div.getElementsByTagName(\"i\").length === 1;\n\t\n\t\t if (isIeLessThan9) {\n\t\t //add the custom elements that we need for formly\n\t\t var customElements = [\"formly-field\", \"formly-form\", \"formly-custom-validation\", \"formly-focus\", \"formly-transpose\"];\n\t\t angular.forEach(customElements, function (el) {\n\t\t document.createElement(el);\n\t\t });\n\t\t }\n\t\t })();\n\t\t }\n\t\t}\n\t\taddCustomTags.$inject = [\"$document\"];\n\t\n\t/***/ },\n\t/* 15 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\t// some versions of angular don't export the angular module properly,\n\t\t// so we get it from window in this case.\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(17));\n\t\n\t\tif (!angular.version) {\n\t\t angular = window.angular;\n\t\t}\n\t\tmodule.exports = angular;\n\t\n\t/***/ },\n\t/* 16 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_16__;\n\t\n\t/***/ },\n\t/* 17 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_17__;\n\t\n\t/***/ },\n\t/* 18 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(15));\n\t\n\t\tmodule.exports = { formlyEval: formlyEval, getFieldId: getFieldId, reverseDeepMerge: reverseDeepMerge, findByNodeName: findByNodeName, arrayify: arrayify, extendFunction: extendFunction };\n\t\n\t\tfunction formlyEval(scope, expression, $modelValue, $viewValue, extraLocals) {\n\t\t if (angular.isFunction(expression)) {\n\t\t return expression($viewValue, $modelValue, scope, extraLocals);\n\t\t } else {\n\t\t return scope.$eval(expression, angular.extend({ $viewValue: $viewValue, $modelValue: $modelValue }, extraLocals));\n\t\t }\n\t\t}\n\t\n\t\tfunction getFieldId(formId, options, index) {\n\t\t if (options.id) {\n\t\t return options.id;\n\t\t }\n\t\t var type = options.type;\n\t\t if (!type && options.template) {\n\t\t type = \"template\";\n\t\t } else if (!type && options.templateUrl) {\n\t\t type = \"templateUrl\";\n\t\t }\n\t\n\t\t return [formId, type, options.key, index].join(\"_\");\n\t\t}\n\t\n\t\tfunction reverseDeepMerge(dest) {\n\t\t angular.forEach(arguments, function (src, index) {\n\t\t if (!index) {\n\t\t return;\n\t\t }\n\t\t angular.forEach(src, function (val, prop) {\n\t\t if (!angular.isDefined(dest[prop])) {\n\t\t dest[prop] = angular.copy(val);\n\t\t } else if (objAndSameType(dest[prop], val)) {\n\t\t reverseDeepMerge(dest[prop], val);\n\t\t }\n\t\t });\n\t\t });\n\t\t}\n\t\n\t\tfunction objAndSameType(obj1, obj2) {\n\t\t return angular.isObject(obj1) && angular.isObject(obj2) && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2);\n\t\t}\n\t\n\t\t//recurse down a node tree to find a node with matching nodeName, for custom tags jQuery.find doesn't work in IE8\n\t\tfunction findByNodeName(el, nodeName) {\n\t\t if (!el.prop) {\n\t\t // not a jQuery or jqLite object -> wrap it\n\t\t el = angular.element(el);\n\t\t }\n\t\n\t\t if (el.prop(\"nodeName\") === nodeName.toUpperCase()) {\n\t\t return el;\n\t\t }\n\t\n\t\t var c = el.children();\n\t\t for (var i = 0; c && i < c.length; i++) {\n\t\t var node = findByNodeName(c[i], nodeName);\n\t\t if (node) {\n\t\t return node;\n\t\t }\n\t\t }\n\t\t}\n\t\n\t\tfunction arrayify(obj) {\n\t\t if (obj && !angular.isArray(obj)) {\n\t\t obj = [obj];\n\t\t } else if (!obj) {\n\t\t obj = [];\n\t\t }\n\t\t return obj;\n\t\t}\n\t\n\t\tfunction extendFunction() {\n\t\t for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t fns[_key] = arguments[_key];\n\t\t }\n\t\n\t\t return function extendedFunction() {\n\t\t var args = arguments;\n\t\t fns.forEach(function (fn) {\n\t\t return fn.apply(null, args);\n\t\t });\n\t\t };\n\t\t}\n\t\n\t/***/ }\n\t/******/ ])\n\t});\n\t;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\tmodule.exports = angular;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// angular-formly-templates-bootstrap version 4.3.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\t\n\t(function webpackUniversalModuleDefinition(root, factory) {\n\t\tif(true)\n\t\t\tmodule.exports = factory(__webpack_require__(3), __webpack_require__(2), __webpack_require__(4));\n\t\telse if(typeof define === 'function' && define.amd)\n\t\t\tdefine([\"angular-formly\", \"api-check\", \"angular\"], factory);\n\t\telse if(typeof exports === 'object')\n\t\t\texports[\"ngFormlyTemplatesBootstrap\"] = factory(require(\"angular-formly\"), require(\"api-check\"), require(\"angular\"));\n\t\telse\n\t\t\troot[\"ngFormlyTemplatesBootstrap\"] = factory(root[\"ngFormly\"], root[\"apiCheck\"], root[\"angular\"]);\n\t})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_8__) {\n\treturn /******/ (function(modules) { // webpackBootstrap\n\t/******/ \t// The module cache\n\t/******/ \tvar installedModules = {};\n\t/******/\n\t/******/ \t// The require function\n\t/******/ \tfunction __webpack_require__(moduleId) {\n\t/******/\n\t/******/ \t\t// Check if module is in cache\n\t/******/ \t\tif(installedModules[moduleId])\n\t/******/ \t\t\treturn installedModules[moduleId].exports;\n\t/******/\n\t/******/ \t\t// Create a new module (and put it into the cache)\n\t/******/ \t\tvar module = installedModules[moduleId] = {\n\t/******/ \t\t\texports: {},\n\t/******/ \t\t\tid: moduleId,\n\t/******/ \t\t\tloaded: false\n\t/******/ \t\t};\n\t/******/\n\t/******/ \t\t// Execute the module function\n\t/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t/******/\n\t/******/ \t\t// Flag the module as loaded\n\t/******/ \t\tmodule.loaded = true;\n\t/******/\n\t/******/ \t\t// Return the exports of the module\n\t/******/ \t\treturn module.exports;\n\t/******/ \t}\n\t/******/\n\t/******/\n\t/******/ \t// expose the modules object (__webpack_modules__)\n\t/******/ \t__webpack_require__.m = modules;\n\t/******/\n\t/******/ \t// expose the module cache\n\t/******/ \t__webpack_require__.c = installedModules;\n\t/******/\n\t/******/ \t// __webpack_public_path__\n\t/******/ \t__webpack_require__.p = \"\";\n\t/******/\n\t/******/ \t// Load entry module and return exports\n\t/******/ \treturn __webpack_require__(0);\n\t/******/ })\n\t/************************************************************************/\n\t/******/ ([\n\t/* 0 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tmodule.exports = __webpack_require__(11);\n\t\n\t/***/ },\n\t/* 1 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.config(addCheckboxType);\n\t\t\n\t\t function addCheckboxType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t\t var c = formlyBootstrapApiCheck;\n\t\t formlyConfigProvider.setType({\n\t\t name: 'multiCheckbox',\n\t\t template: __webpack_require__(21),\n\t\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t\t apiCheck: {\n\t\t templateOptions: c.shape({\n\t\t options: c.arrayOf(c.object),\n\t\t labelProp: c.string.optional,\n\t\t valueProp: c.string.optional\n\t\t })\n\t\t },\n\t\t defaultOptions: {\n\t\t noFormControl: false,\n\t\t ngModelAttrs: {\n\t\t required: {\n\t\t attribute: '',\n\t\t bound: ''\n\t\t }\n\t\t }\n\t\t },\n\t\t apiCheckInstance: c,\n\t\t controller: /* @ngInject */[\"$scope\", function controller($scope) {\n\t\t var to = $scope.to;\n\t\t var opts = $scope.options;\n\t\t $scope.multiCheckbox = {\n\t\t checked: [],\n\t\t change: setModel\n\t\t };\n\t\t\n\t\t // initialize the checkboxes check property\n\t\t var modelValue = $scope.model[opts.key];\n\t\t if (angular.isArray(modelValue)) {\n\t\t (function () {\n\t\t var valueProp = to.valueProp || 'value';\n\t\t angular.forEach(to.options, function (v, index) {\n\t\t $scope.multiCheckbox.checked[index] = modelValue.indexOf(v[valueProp]) !== -1;\n\t\t });\n\t\t })();\n\t\t }\n\t\t\n\t\t function checkValidity(expressionValue) {\n\t\t var valid = angular.isArray($scope.model[opts.key]) && $scope.model[opts.key].length > 0 && expressionValue;\n\t\t\n\t\t $scope.fc.$setValidity('required', valid);\n\t\t }\n\t\t\n\t\t function setModel() {\n\t\t $scope.model[opts.key] = [];\n\t\t angular.forEach($scope.multiCheckbox.checked, function (checkbox, index) {\n\t\t if (checkbox) {\n\t\t $scope.model[opts.key].push(to.options[index][to.valueProp || 'value']);\n\t\t }\n\t\t });\n\t\t\n\t\t // Must make sure we mark as touched because only the last checkbox due to a bug in angular.\n\t\t $scope.fc.$setTouched();\n\t\t checkValidity(true);\n\t\t }\n\t\t\n\t\t if (opts.expressionProperties && opts.expressionProperties.required) {\n\t\t $scope.$watch($scope.options.expressionProperties.required, function (newValue) {\n\t\t checkValidity(newValue);\n\t\t });\n\t\t }\n\t\t\n\t\t if ($scope.to.required) {\n\t\t var unwatchFormControl = $scope.$watch('fc', function (newValue) {\n\t\t if (!newValue) {\n\t\t return;\n\t\t }\n\t\t checkValidity(true);\n\t\t unwatchFormControl;\n\t\t });\n\t\t }\n\t\t }]\n\t\t });\n\t\t }\n\t\t addCheckboxType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 2 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\t\n\t/***/ },\n\t/* 3 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\t\n\t/***/ },\n\t/* 4 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t// some versions of angular don't export the angular module properly,\n\t\t// so we get it from window in this case.\n\t\t'use strict';\n\t\t\n\t\tvar angular = __webpack_require__(8);\n\t\tif (!angular.version) {\n\t\t angular = window.angular;\n\t\t}\n\t\tmodule.exports = angular;\n\t\n\t/***/ },\n\t/* 5 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.config(addWrappers);\n\t\t\n\t\t function addWrappers(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t\t var c = formlyBootstrapApiCheck;\n\t\t formlyConfigProvider.setWrapper([{\n\t\t name: 'bootstrapLabel',\n\t\t template: __webpack_require__(17),\n\t\t apiCheck: {\n\t\t templateOptions: c.shape({\n\t\t label: c.string,\n\t\t required: c.bool.optional\n\t\t })\n\t\t },\n\t\t apiCheckInstance: c\n\t\t }, { name: 'bootstrapHasError', template: __webpack_require__(18) }]);\n\t\t }\n\t\t addWrappers.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 6 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t __webpack_require__(10)(ngModule);\n\t\t __webpack_require__(1)(ngModule);\n\t\t __webpack_require__(12)(ngModule);\n\t\t __webpack_require__(9)(ngModule);\n\t\t __webpack_require__(13)(ngModule);\n\t\t __webpack_require__(14)(ngModule);\n\t\t};\n\t\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 7 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\t\n\t\tvar _addons = __webpack_require__(15);\n\t\t\n\t\tvar _addons2 = _interopRequireDefault(_addons);\n\t\t\n\t\tvar _description = __webpack_require__(16);\n\t\t\n\t\tvar _description2 = _interopRequireDefault(_description);\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t (0, _addons2['default'])(ngModule);\n\t\t (0, _description2['default'])(ngModule);\n\t\t};\n\t\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 8 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_8__;\n\t\n\t/***/ },\n\t/* 9 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.config(addRadioType);\n\t\t\n\t\t function addRadioType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t\t var c = formlyBootstrapApiCheck;\n\t\t formlyConfigProvider.setType({\n\t\t name: 'radio',\n\t\t template: __webpack_require__(19),\n\t\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t\t defaultOptions: {\n\t\t noFormControl: false\n\t\t },\n\t\t apiCheck: {\n\t\t templateOptions: c.shape({\n\t\t options: c.arrayOf(c.object),\n\t\t labelProp: c.string.optional,\n\t\t valueProp: c.string.optional\n\t\t })\n\t\t },\n\t\t apiCheckInstance: c\n\t\t });\n\t\t }\n\t\t addRadioType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 10 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.config(addCheckboxType);\n\t\t\n\t\t function addCheckboxType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t\t var c = formlyBootstrapApiCheck;\n\t\t formlyConfigProvider.setType({\n\t\t name: 'checkbox',\n\t\t template: __webpack_require__(20),\n\t\t wrapper: ['bootstrapHasError'],\n\t\t apiCheck: {\n\t\t templateOptions: c.shape({\n\t\t label: c.string\n\t\t })\n\t\t },\n\t\t apiCheckInstance: c\n\t\t });\n\t\t }\n\t\t addCheckboxType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 11 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\tvar ngModuleName = 'formlyBootstrap';\n\t\tvar angular = __webpack_require__(4);\n\t\tvar ngModule = angular.module(ngModuleName, [__webpack_require__(2)]);\n\t\tngModule.constant('formlyBootstrapApiCheck', __webpack_require__(3)({\n\t\t output: {\n\t\t prefix: 'angular-formly-bootstrap'\n\t\t }\n\t\t}));\n\t\tngModule.constant('formlyBootstrapVersion', (\"4.3.2\"));\n\t\t\n\t\t__webpack_require__(5)(ngModule);\n\t\t__webpack_require__(6)(ngModule);\n\t\t__webpack_require__(7)(ngModule);\n\t\t\n\t\texports['default'] = ngModuleName;\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 12 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.config(addInputType);\n\t\t\n\t\t function addInputType(formlyConfigProvider) {\n\t\t formlyConfigProvider.setType({\n\t\t name: 'input',\n\t\t template: ' ',\n\t\t wrapper: ['bootstrapLabel', 'bootstrapHasError']\n\t\t });\n\t\t }\n\t\t addInputType.$inject = [\"formlyConfigProvider\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 13 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\tfunction _defineProperty(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); }\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.config(addSelectType);\n\t\t\n\t\t var template = ' ';\n\t\t\n\t\t function addSelectType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t\t var c = formlyBootstrapApiCheck;\n\t\t formlyConfigProvider.setType({\n\t\t name: 'select',\n\t\t template: template,\n\t\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t\t defaultOptions: function defaultOptions(options) {\n\t\t /* jshint maxlen:195 */\n\t\t var ngOptions = options.templateOptions.ngOptions || 'option[to.valueProp || \\'value\\'] as option[to.labelProp || \\'name\\'] group by option[to.groupProp || \\'group\\'] for option in to.options';\n\t\t return {\n\t\t ngModelAttrs: _defineProperty({}, ngOptions, {\n\t\t value: 'ng-options'\n\t\t })\n\t\t };\n\t\t },\n\t\t apiCheck: {\n\t\t templateOptions: c.shape({\n\t\t options: c.arrayOf(c.object),\n\t\t labelProp: c.string.optional,\n\t\t valueProp: c.string.optional,\n\t\t groupProp: c.string.optional\n\t\t })\n\t\t },\n\t\t apiCheckInstance: c\n\t\t });\n\t\t }\n\t\t addSelectType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 14 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.config(addTextareaType);\n\t\t\n\t\t function addTextareaType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t\t var c = formlyBootstrapApiCheck;\n\t\t formlyConfigProvider.setType({\n\t\t name: 'textarea',\n\t\t template: '',\n\t\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t\t defaultOptions: {\n\t\t ngModelAttrs: {\n\t\t rows: { attribute: 'rows' },\n\t\t cols: { attribute: 'cols' }\n\t\t }\n\t\t },\n\t\t apiCheck: {\n\t\t templateOptions: c.shape({\n\t\t rows: c.number.optional,\n\t\t cols: c.number.optional\n\t\t })\n\t\t },\n\t\t apiCheckInstance: c\n\t\t });\n\t\t }\n\t\t addTextareaType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 15 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.run(addAddonsManipulator);\n\t\t\n\t\t function addAddonsManipulator(formlyConfig, formlyBootstrapApiCheck) {\n\t\t var addonTemplate = __webpack_require__(22);\n\t\t var addonChecker = formlyBootstrapApiCheck.shape({\n\t\t 'class': formlyBootstrapApiCheck.string.optional,\n\t\t text: formlyBootstrapApiCheck.string.optional,\n\t\t onClick: formlyBootstrapApiCheck.func.optional\n\t\t }).strict.optional;\n\t\t var api = formlyBootstrapApiCheck.shape({\n\t\t templateOptions: formlyBootstrapApiCheck.shape({\n\t\t addonLeft: addonChecker,\n\t\t addonRight: addonChecker\n\t\t })\n\t\t });\n\t\t formlyConfig.templateManipulators.preWrapper.push(function (template, options) {\n\t\t if (!options.templateOptions.addonLeft && !options.templateOptions.addonRight) {\n\t\t return template;\n\t\t }\n\t\t formlyBootstrapApiCheck.warn([api], [options]);\n\t\t return addonTemplate.replace(' ', template);\n\t\t });\n\t\t }\n\t\t addAddonsManipulator.$inject = [\"formlyConfig\", \"formlyBootstrapApiCheck\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 16 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.run(addDescriptionManipulator);\n\t\t\n\t\t function addDescriptionManipulator(formlyConfig) {\n\t\t formlyConfig.templateManipulators.preWrapper.push(function ariaDescribedBy(template, options, scope) {\n\t\t if (angular.isDefined(options.templateOptions.description)) {\n\t\t var el = document.createElement('div');\n\t\t el.appendChild(angular.element(template)[0]);\n\t\t el.appendChild(angular.element('' + '{{to.description}}' + '
')[0]);\n\t\t var modelEls = angular.element(el.querySelectorAll('[ng-model]'));\n\t\t if (modelEls) {\n\t\t modelEls.attr('aria-describedby', scope.id + '_description');\n\t\t }\n\t\t return el.innerHTML;\n\t\t } else {\n\t\t return template;\n\t\t }\n\t\t });\n\t\t }\n\t\t addDescriptionManipulator.$inject = [\"formlyConfig\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 17 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = \"\\n \\n {{to.label}}\\n {{to.required ? '*' : ''}}\\n \\n \\n
\\n\"\n\t\n\t/***/ },\n\t/* 18 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = \"\\n \\n
\\n\"\n\t\n\t/***/ },\n\t/* 19 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = \"\\n
\\n \\n \\n {{option[to.labelProp || 'name']}}\\n \\n
\\n
\\n\"\n\t\n\t/***/ },\n\t/* 20 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = \"\\n\\t\\n\\t\\t \\n\\t\\t{{to.label}}\\n\\t\\t{{to.required ? '*' : ''}}\\n\\t \\n
\\n\"\n\t\n\t/***/ },\n\t/* 21 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = \"\\n
\\n \\n \\n {{option[to.labelProp || 'name']}}\\n \\n
\\n
\\n\"\n\t\n\t/***/ },\n\t/* 22 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = \"\\n
\\n \\n {{to.addonLeft.text}} \\n
\\n
\\n
\\n \\n {{to.addonRight.text}} \\n
\\n
\\n\"\n\t\n\t/***/ }\n\t/******/ ])\n\t});\n\t;\n\t//# sourceMappingURL=angular-formly-templates-bootstrap.js.map\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ },\n/* 7 */,\n/* 8 */,\n/* 9 */,\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _edaDragDropWayFormlyConfig = __webpack_require__(11);\n\t\n\tvar _edaDragDropWayFormlyConfig2 = _interopRequireDefault(_edaDragDropWayFormlyConfig);\n\t\n\tvar _edaDragDropWayDragDropConfig = __webpack_require__(12);\n\t\n\tvar _edaDragDropWayDragDropConfig2 = _interopRequireDefault(_edaDragDropWayDragDropConfig);\n\t\n\tvar _edaDragDropWayCore = __webpack_require__(14);\n\t\n\tvar _edaDragDropWayCore2 = _interopRequireDefault(_edaDragDropWayCore);\n\t\n\tvar _edaDragDropWayLeftPanel = __webpack_require__(15);\n\t\n\tvar _edaDragDropWayLeftPanel2 = _interopRequireDefault(_edaDragDropWayLeftPanel);\n\t\n\tvar _edaDragDropWayFormlyProxyFormFieldManage = __webpack_require__(49);\n\t\n\tvar _edaDragDropWayFormlyProxyFormFieldManage2 = _interopRequireDefault(_edaDragDropWayFormlyProxyFormFieldManage);\n\t\n\tvar _edaDragDropWayDragdrop = __webpack_require__(53);\n\t\n\tvar _edaDragDropWayDragdrop2 = _interopRequireDefault(_edaDragDropWayDragdrop);\n\t\n\tvar _edaDragDropWayRightClick = __webpack_require__(67);\n\t\n\tvar _edaDragDropWayRightClick2 = _interopRequireDefault(_edaDragDropWayRightClick);\n\t\n\tvar _edaDragDropWayConfigurationModelProxy = __webpack_require__(70);\n\t\n\tvar _edaDragDropWayConfigurationModelProxy2 = _interopRequireDefault(_edaDragDropWayConfigurationModelProxy);\n\t\n\tvar _dragAndDropList = __webpack_require__(72);\n\t\n\tvar _dragAndDropList2 = _interopRequireDefault(_dragAndDropList);\n\t\n\tvar _pageslide = __webpack_require__(75);\n\t\n\tvar _pageslide2 = _interopRequireDefault(_pageslide);\n\t\n\tvar _edaDragDropWayEdaDragdropWayEasyFormGen = __webpack_require__(77);\n\t\n\tvar _edaDragDropWayEdaDragdropWayEasyFormGen2 = _interopRequireDefault(_edaDragDropWayEdaDragdropWayEasyFormGen);\n\t\n\tvar _edaDragDropWayTrustThis = __webpack_require__(84);\n\t\n\tvar _edaDragDropWayTrustThis2 = _interopRequireDefault(_edaDragDropWayTrustThis);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar DRAG_DROP_WAY_MODULE_NAME = 'eda.easyformGen.dragDropWay';\n\t\n\tvar DRAG_DROP_MODULES_INJECT = [_edaDragDropWayCore2.default.name, _edaDragDropWayConfigurationModelProxy2.default.name, _edaDragDropWayTrustThis2.default.name, _edaDragDropWayLeftPanel2.default.name, _edaDragDropWayFormlyProxyFormFieldManage2.default.name, _edaDragDropWayDragdrop2.default.name, _edaDragDropWayEdaDragdropWayEasyFormGen2.default.name, _edaDragDropWayRightClick2.default.name, _dragAndDropList2.default.name, _pageslide2.default.name];\n\t\n\tvar mainModule = angular.module(DRAG_DROP_WAY_MODULE_NAME, DRAG_DROP_MODULES_INJECT).config(_edaDragDropWayDragDropConfig2.default).config(_edaDragDropWayFormlyConfig2.default).value(_edaDragDropWayDragDropConfig.EASY_FORM_DD_VERSION_NAME, _edaDragDropWayDragDropConfig.EASY_FORM_DD_VERSION_VALUE);\n\t\n\texports.default = mainModule;\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tfunction formlyConfig(formlyConfigProvider, EasyFormGenFormlyBindingModelsProvider, easyFormDragWayConfigProvider) {\n\t\n\t formlyConfigProvider.setType({\n\t name: 'blank',\n\t template: '
'\n\t });\n\t\n\t EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n\t id: 'empty',\n\t name: 'no control',\n\t subtitle: 'no control',\n\t group: 'Blank',\n\t formlyType: 'blank',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: []\n\t });\n\t\n\t easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n\t label: '',\n\t control: 'empty',\n\t cssClass: 'col-xs-12'\n\t }, {\n\t addToGroupCtrl: 'blank'\n\t });\n\t\n\t EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n\t id: 'Header',\n\t name: 'Header',\n\t subtitle: 'no control',\n\t group: 'Decoration',\n\t formlyType: 'header',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: []\n\t });\n\t\n\t easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n\t label: [''].join(''),\n\t control: 'Header',\n\t cssClass: 'col-xs-12'\n\t }, {\n\t addToGroupCtrl: 'headers'\n\t });\n\t\n\t var subTitleTemplate = '\\n \\n
\\n
{{options.templateOptions.placeholder}}\\n \\n \\n
';\n\t\n\t formlyConfigProvider.setType({\n\t name: 'subTitle',\n\t template: subTitleTemplate\n\t });\n\t\n\t EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n\t id: 'Subtitle',\n\t name: 'Subtitle',\n\t subtitle: 'no control',\n\t group: 'Decoration',\n\t formlyType: 'subTitle',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: []\n\t });\n\t\n\t easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n\t 'label': '',\n\t 'control': 'Subtitle',\n\t 'cssClass': 'col-xs-12'\n\t }, {\n\t addToGroupCtrl: 'headers'\n\t });\n\t\n\t EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n\t id: 'TextInput',\n\t name: 'Text input',\n\t subtitle: 'Text input',\n\t group: 'input',\n\t formlyType: 'input',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: []\n\t });\n\t\n\t /**\n\t * drag and drop text input (basic) control template\n\t *\n\t *\n\t * @PARAM 1 : control template object (drag an drop)\n\t * @PARAM 2 : object to indicates in which group of control it will be inserted\n\t * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n\t */\n\t easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n\t 'label': '',\n\t 'control': 'TextInput',\n\t 'cssClass': 'col-xs-12'\n\t }, {\n\t addToGroupCtrl: 'inputs'\n\t });\n\t\n\t /**\n\t * Add text input (Password)\n\t *\n\t * note : formly template already exists\n\t * no need to create a custom one\n\t *\n\t * just declare in EasyFormGenFormlyBindingModelsProvider\n\t */\n\t EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n\t id: 'Password',\n\t name: 'Password',\n\t subtitle: 'Password',\n\t group: 'input',\n\t formlyType: 'input',\n\t formlySubtype: 'password',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: []\n\t });\n\t /**\n\t * drag and drop text input — password —control template\n\t *\n\t *\n\t * @PARAM 1 : control template object (drag an drop)\n\t * @PARAM 2 : object to indicates in which group of control it will be inserted\n\t * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n\t */\n\t easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n\t 'label': '',\n\t 'control': 'Password',\n\t 'cssClass': 'col-xs-12'\n\t }, {\n\t addToGroupCtrl: 'inputs'\n\t });\n\t\n\t /**\n\t * Add angular UI date picker\n\t *\n\t * thx Kent C. Dodds for formly config template (since it was a huge config)\n\t */\n\t var attributes = ['date-disabled', 'custom-class', 'show-weeks', 'starting-day', 'init-date', 'min-mode', 'max-mode', 'format-day', 'format-month', 'format-year', 'format-day-header', 'format-day-title', 'format-month-title', 'year-range', 'shortcut-propagation', 'uib-datepicker-popup', 'show-button-bar', 'current-text', 'clear-text', 'close-text', 'close-on-date-selection', 'datepicker-append-to-body'];\n\t\n\t var bindings = ['datepicker-mode', 'min-date', 'max-date'];\n\t\n\t var ngModelAttrs = {};\n\t\n\t angular.forEach(attributes, function (attr) {\n\t return ngModelAttrs[camelize(attr)] = { attribute: attr };\n\t });\n\t angular.forEach(bindings, function (binding) {\n\t return ngModelAttrs[camelize(binding)] = { bound: binding };\n\t });\n\t\n\t function camelize(string) {\n\t string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n\t return chr ? chr.toUpperCase() : '';\n\t });\n\t // Ensure 1st char is always lowercase\n\t return string.replace(/^([A-Z])/, function (match, chr) {\n\t return chr ? chr.toLowerCase() : '';\n\t });\n\t }\n\t\n\t var angularUIDatePickerTemplate = '\\n ';\n\t\n\t formlyConfigProvider.setType({\n\t name: 'datepicker',\n\t template: angularUIDatePickerTemplate,\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t controller: ['$scope', function ($scope) {\n\t $scope.open = function ($event) {\n\t $event.preventDefault();\n\t $event.stopPropagation();\n\t $scope.opened = true;\n\t };\n\t }],\n\t defaultOptions: {\n\t ngModelAttrs: ngModelAttrs,\n\t templateOptions: {\n\t addonLeft: {\n\t class: 'glyphicon glyphicon-calendar',\n\t onClick: function onClick(options) {\n\t return options.templateOptions.isOpen = !options.templateOptions.isOpen;\n\t }\n\t },\n\t onFocus: function onFocus($viewValue, $modelValue, scope) {\n\t return scope.to.isOpen = !scope.to.isOpen;\n\t },\n\t datepickerOptions: {}\n\t }\n\t }\n\t });\n\t\n\t EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n\t id: 'Date',\n\t name: 'Date',\n\t subtitle: 'Date',\n\t group: 'input',\n\t formlyType: 'datepicker',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: [],\n\t datepickerPopup: 'dd-MMMM-yyyy'\n\t });\n\t /**\n\t * drag and drop text input — date — control template (using angular UI datepicker)\n\t *\n\t *\n\t * @PARAM 1 : control template object (drag an drop)\n\t * @PARAM 2 : object to indicates in which group of control it will be inserted\n\t * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n\t */\n\t easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n\t label: '\\n ',\n\t control: 'Date',\n\t cssClass: 'col-xs-12'\n\t }, {\n\t addToGroupCtrl: 'inputs'\n\t });\n\t\n\t /**\n\t * Add textarea\n\t *\n\t * note : formly template already exists\n\t * no need to create a custom one\n\t *\n\t * just declare in EasyFormGenFormlyBindingModelsProvider\n\t */\n\t EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n\t id: 'Texarea',\n\t name: 'Textarea',\n\t subtitle: 'Textarea',\n\t group: 'Textarea',\n\t formlyType: 'textarea',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: []\n\t });\n\t /**\n\t * drag and drop textarea control template\n\t *\n\t *\n\t * @PARAM 1 : control template object (drag an drop)\n\t * @PARAM 2 : object to indicates in which group of control it will be inserted\n\t * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n\t */\n\t easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n\t 'label': '\\n ',\n\t 'control': 'Texarea',\n\t 'cssClass': 'col-xs-12'\n\t }, {\n\t addToGroupCtrl: 'textareas'\n\t });\n\t\n\t /**\n\t * Add rich text editor control (using textAngular)\n\t *\n\t */\n\t var richTexEditorTemplate = '\\n \\n ';\n\t\n\t formlyConfigProvider.setType({\n\t name: 'richEditor',\n\t template: richTexEditorTemplate\n\t });\n\t\n\t EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n\t id: 'RichTextEditor',\n\t name: 'RichTextEditor',\n\t subtitle: 'RichTextEditor',\n\t group: 'Textarea',\n\t formlyType: 'richEditor',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: []\n\t });\n\t /**\n\t * drag and drop rich text editor control template (using textAngular)\n\t *\n\t *\n\t * @PARAM 1 : control template object (drag an drop)\n\t * @PARAM 2 : object to indicates in which group of control it will be inserted\n\t * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n\t */\n\t easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n\t label: '\\n ',\n\t control: 'RichTextEditor',\n\t cssClass: 'col-xs-12'\n\t }, {\n\t addToGroupCtrl: 'textareas'\n\t });\n\t\n\t /**\n\t * Add radio\n\t *\n\t * note : formly template already exists\n\t * no need to create a custom one\n\t *\n\t * just declare in EasyFormGenFormlyBindingModelsProvider\n\t */\n\t EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n\t id: 'Radio',\n\t name: 'Radio',\n\t subtitle: 'Radio',\n\t options: [],\n\t group: 'Radio',\n\t formlyType: 'radio',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: []\n\t });\n\t /**\n\t * drag and drop radio control template (using textAngular)\n\t *\n\t *\n\t * @PARAM 1 : control template object (drag an drop)\n\t * @PARAM 2 : object to indicates in which group of control it will be inserted\n\t * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n\t */\n\t easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n\t 'label': '\\n ',\n\t 'control': 'Radio',\n\t 'cssClass': 'col-xs-12'\n\t }, {\n\t addToGroupCtrl: 'radios'\n\t });\n\t\n\t /**\n\t * Add checkbox\n\t *\n\t * note : formly template already exists\n\t * no need to create a custom one\n\t *\n\t * just declare in EasyFormGenFormlyBindingModelsProvider\n\t */\n\t EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n\t id: 'Checkbox',\n\t name: 'Checkbox',\n\t subtitle: 'Checkbox',\n\t group: 'Checkbox',\n\t formlyType: 'checkbox',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: []\n\t });\n\t /**\n\t * drag and drop checkbox control template (using textAngular)\n\t *\n\t *\n\t * @PARAM 1 : control template object (drag an drop)\n\t * @PARAM 2 : object to indicates in which group of control it will be inserted\n\t * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n\t */\n\t easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n\t label: '\\n \\n
\\n \\n \\n \\t\\tlabel for checkbox \\n \\t\\t* \\n \\n
\\n
description
\\n
',\n\t control: 'Checkbox',\n\t cssClass: 'col-xs-12'\n\t }, {\n\t addToGroupCtrl: 'checkboxes'\n\t });\n\t\n\t /**\n\t * Add basic Select control\n\t *\n\t * using nya-bs-select\n\t */\n\t var basicSelectTemplate = '\\n \\n \\n {{option.name}} \\n \\n ';\n\t\n\t formlyConfigProvider.setType({\n\t name: 'basicSelect',\n\t template: basicSelectTemplate\n\t });\n\t\n\t EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n\t id: 'BasicSelect',\n\t name: 'Basic select',\n\t subtitle: 'Basic select',\n\t options: [],\n\t group: 'Select',\n\t formlyType: 'basicSelect',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: []\n\t });\n\t\n\t /**\n\t * drag and drop basic select control template (using textAngular)\n\t *\n\t *\n\t * @PARAM 1 : control template object (drag an drop)\n\t * @PARAM 2 : object to indicates in which group of control it will be inserted\n\t * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n\t */\n\t easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n\t label: '\\n \\n
',\n\t control: 'BasicSelect',\n\t cssClass: 'col-xs-12'\n\t }, {\n\t addToGroupCtrl: 'selects'\n\t });\n\t\n\t /**\n\t * Add Grouped Select control\n\t *\n\t * using nya-bs-select\n\t */\n\t var groupedSelectTemplate = '\\n
\\n \\n \\n \\n {{option.name}} \\n \\n \\n \\n ';\n\t\n\t formlyConfigProvider.setType({\n\t name: 'groupedSelect',\n\t template: groupedSelectTemplate\n\t });\n\t\n\t EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n\t id: 'GroupedSelect',\n\t name: 'Grouped Select',\n\t subtitle: 'Grouped Select',\n\t options: [],\n\t group: 'Select',\n\t formlyType: 'groupedSelect',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: []\n\t });\n\t /**\n\t * drag and drop grouped select control template (using textAngular)\n\t *\n\t *\n\t * @PARAM 1 : control template object (drag an drop)\n\t * @PARAM 2 : object to indicates in which group of control it will be inserted\n\t * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n\t */\n\t easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n\t label: '\\n
\\n
',\n\t control: 'GroupedSelect',\n\t cssClass: 'col-xs-12'\n\t }, {\n\t addToGroupCtrl: 'selects'\n\t });\n\t}\n\t\n\tformlyConfig.$inject = ['formlyConfigProvider', 'EasyFormGenFormlyBindingModelsProvider', 'easyFormDragWayConfigProvider'];\n\t\n\texports.default = formlyConfig;\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.EASY_FORM_DD_VERSION_VALUE = exports.EASY_FORM_DD_VERSION_NAME = undefined;\n\t\n\tvar _easyFormConfig = __webpack_require__(13);\n\t\n\tvar _easyFormConfig2 = _interopRequireDefault(_easyFormConfig);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar EASY_FORM_DD_VERSION_NAME = 'easyFormGenVersion';\n\tvar EASY_FORM_DD_VERSION_VALUE = _easyFormConfig2.default.dragdropway.version;\n\t\n\tfunction dragDropConfigFunct(easyFormDragWayConfigProvider) {\n\t easyFormDragWayConfigProvider.setItemsNotTocount({\n\t //placeholder : '',\n\t itemBeingDragged: 'dndDraggingSource'\n\t });\n\t}\n\t\n\tdragDropConfigFunct.$inject = ['easyFormDragWayConfigProvider'];\n\t\n\texports.default = dragDropConfigFunct;\n\texports.EASY_FORM_DD_VERSION_NAME = EASY_FORM_DD_VERSION_NAME;\n\texports.EASY_FORM_DD_VERSION_VALUE = EASY_FORM_DD_VERSION_VALUE;\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t\t\"stepway\": {\n\t\t\t\"version\": \"2.1.4\"\n\t\t},\n\t\t\"dragdropway\": {\n\t\t\t\"version\": \"2.1.4\"\n\t\t},\n\t\t\"formviewer\": {\n\t\t\t\"version\": \"2.1.4\"\n\t\t}\n\t};\n\n/***/ },\n/* 14 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar CORE_MODULES = ['textAngular', 'textAngularSetup', 'ngAnimate', 'toaster', 'formly', 'formlyBootstrap', 'ui.bootstrap', 'nya.bootstrap.select', 'mgcrea.ngStrap.affix'\n\t// 'pascalprecht.translate'\t\n\t];\n\t\n\texports.default = angular.module('easyFormGen.dragDropWay.core', CORE_MODULES);\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _edaDragDropWayLeftPanel = __webpack_require__(16);\n\t\n\tvar _edaDragDropWayLeftPanel2 = _interopRequireDefault(_edaDragDropWayLeftPanel);\n\t\n\tvar _edaDragDropWayLeftPanel3 = __webpack_require__(18);\n\t\n\tvar _edaDragDropWayLeftPanel4 = _interopRequireDefault(_edaDragDropWayLeftPanel3);\n\t\n\tvar _edaDragDropWayLeftPanelSelectOptionManage = __webpack_require__(20);\n\t\n\tvar _edaDragDropWayLeftPanelSelectOptionManage2 = _interopRequireDefault(_edaDragDropWayLeftPanelSelectOptionManage);\n\t\n\tvar _edaDragDropWayLeftPanelControllerModalProxy = __webpack_require__(22);\n\t\n\tvar _edaDragDropWayLeftPanelControllerModalProxy2 = _interopRequireDefault(_edaDragDropWayLeftPanelControllerModalProxy);\n\t\n\tvar _edaDragDropWayLeftpanelValidEditFooter = __webpack_require__(23);\n\t\n\tvar _edaDragDropWayLeftpanelValidEditFooter2 = _interopRequireDefault(_edaDragDropWayLeftpanelValidEditFooter);\n\t\n\tvar _edaDragDropWayLeftpanelTextInputControl = __webpack_require__(25);\n\t\n\tvar _edaDragDropWayLeftpanelTextInputControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelTextInputControl);\n\t\n\tvar _edaDragDropWayLeftpanelTextareaControl = __webpack_require__(27);\n\t\n\tvar _edaDragDropWayLeftpanelTextareaControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelTextareaControl);\n\t\n\tvar _edaDragDropWayLeftpanelSubtitleControl = __webpack_require__(29);\n\t\n\tvar _edaDragDropWayLeftpanelSubtitleControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelSubtitleControl);\n\t\n\tvar _edaDragDropWayLeftpanelRichTextEditorControl = __webpack_require__(31);\n\t\n\tvar _edaDragDropWayLeftpanelRichTextEditorControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelRichTextEditorControl);\n\t\n\tvar _edaDragDropWayLeftpanelRadioControl = __webpack_require__(33);\n\t\n\tvar _edaDragDropWayLeftpanelRadioControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelRadioControl);\n\t\n\tvar _edaDragDropWayLeftpanelPasswordControl = __webpack_require__(35);\n\t\n\tvar _edaDragDropWayLeftpanelPasswordControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelPasswordControl);\n\t\n\tvar _edaDragDropWayLeftpanelHeaderControl = __webpack_require__(37);\n\t\n\tvar _edaDragDropWayLeftpanelHeaderControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelHeaderControl);\n\t\n\tvar _edaDragDropWayLeftpanelGroupedSelectControl = __webpack_require__(39);\n\t\n\tvar _edaDragDropWayLeftpanelGroupedSelectControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelGroupedSelectControl);\n\t\n\tvar _edaDragDropWayLeftpanelDateControl = __webpack_require__(41);\n\t\n\tvar _edaDragDropWayLeftpanelDateControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelDateControl);\n\t\n\tvar _edaDragDropWayLeftpanelCheckBoxControl = __webpack_require__(43);\n\t\n\tvar _edaDragDropWayLeftpanelCheckBoxControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelCheckBoxControl);\n\t\n\tvar _edaDragDropWayLeftpanelBlankControl = __webpack_require__(45);\n\t\n\tvar _edaDragDropWayLeftpanelBlankControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelBlankControl);\n\t\n\tvar _edaDragDropWayLeftpanelBasicSelectControl = __webpack_require__(47);\n\t\n\tvar _edaDragDropWayLeftpanelBasicSelectControl2 = _interopRequireDefault(_edaDragDropWayLeftpanelBasicSelectControl);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_MODULE = 'edaDragDropWay.leftPanel.module'; /* global angular */\n\texports.default = angular.module(LEFT_PANEL_MODULE, []).directive(_edaDragDropWayLeftPanel3.LEFT_PANEL_DIRECTIVE, _edaDragDropWayLeftPanel4.default).controller(_edaDragDropWayLeftPanel.LEFT_PANEL_CONTROLLER, _edaDragDropWayLeftPanel2.default).service(_edaDragDropWayLeftPanelSelectOptionManage.LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE, _edaDragDropWayLeftPanelSelectOptionManage2.default).service(_edaDragDropWayLeftPanelControllerModalProxy.CONTROLLER_MODAL_PROXY, _edaDragDropWayLeftPanelControllerModalProxy2.default).directive(_edaDragDropWayLeftpanelValidEditFooter.LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE, _edaDragDropWayLeftpanelValidEditFooter2.default).directive(_edaDragDropWayLeftpanelTextInputControl.LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelTextInputControl2.default).directive(_edaDragDropWayLeftpanelTextareaControl.LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelTextareaControl2.default).directive(_edaDragDropWayLeftpanelSubtitleControl.LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelSubtitleControl2.default).directive(_edaDragDropWayLeftpanelRichTextEditorControl.LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelRichTextEditorControl2.default).directive(_edaDragDropWayLeftpanelRadioControl.LEFT_PANEL_RADIO_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelRadioControl2.default).directive(_edaDragDropWayLeftpanelPasswordControl.LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelPasswordControl2.default).directive(_edaDragDropWayLeftpanelHeaderControl.LEFT_PANEL_HEADER_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelHeaderControl2.default).directive(_edaDragDropWayLeftpanelGroupedSelectControl.LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelGroupedSelectControl2.default).directive(_edaDragDropWayLeftpanelDateControl.LEFT_PANEL_DATE_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelDateControl2.default).directive(_edaDragDropWayLeftpanelCheckBoxControl.LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelCheckBoxControl2.default).directive(_edaDragDropWayLeftpanelBlankControl.LEFT_PANEL_BLANK_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelBlankControl2.default).directive(_edaDragDropWayLeftpanelBasicSelectControl.LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE, _edaDragDropWayLeftpanelBasicSelectControl2.default);\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.LEFT_PANEL_CONTROLLERAS = exports.LEFT_PANEL_CONTROLLER = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _edaDragDropWayLeftPanelController = __webpack_require__(17);\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar LEFT_PANEL_CONTROLLER = 'leftPanelController';\n\tvar LEFT_PANEL_CONTROLLERAS = 'leftPanelCtrl';\n\t\n\tvar leftPanelController = function () {\n\t\tfunction leftPanelController(toaster, $timeout, $selectOptionMange, controllerModalProxy) {\n\t\t\t_classCallCheck(this, leftPanelController);\n\t\n\t\t\tthis.toaster = toaster;\n\t\t\tthis.$timeout = $timeout;\n\t\t\tthis.$selectOptionMange = $selectOptionMange;\n\t\t\tthis.controllerModalProxy = controllerModalProxy;\n\t\n\t\t\tthis.init();\n\t\t}\n\t\n\t\t_createClass(leftPanelController, [{\n\t\t\tkey: 'init',\n\t\t\tvalue: function init() {\n\t\t\t\tthis.proxyModel = this.controllerModalProxy.proxyModel;\n\t\t\t\tthis.proxyModel.selectedControl = this.proxyModel.temporyConfig.selectedControl;\n\t\t\t\tthis.basicSelectRowCollection = this.controllerModalProxy.basicSelectRowCollection;\n\t\t\t\tthis.newOptionBasicSelect = this.controllerModalProxy.newOptionBasicSelect;\n\t\n\t\t\t\tthis.groupedSelectRowCollection = this.controllerModalProxy.groupedSelectRowCollection;\n\t\t\t\tthis.newOptionGroupedSelect = this.controllerModalProxy.newOptionGroupedSelect;\n\t\t\t\tthis.GroupedSelectGroups = this.controllerModalProxy.GroupedSelectGroups;\n\t\t\t\tthis.newGroupGroupedSelect = this.controllerModalProxy.newGroupGroupedSelect;\n\t\t\t\tthis.groupSelectGroupClick = this.controllerModalProxy.groupSelectGroupClick;\n\t\n\t\t\t\tthis.radioRowCollection = this.controllerModalProxy.radioRowCollection;\n\t\t\t\tthis.newOptionRadio = this.controllerModalProxy.newOptionRadio;\n\t\n\t\t\t\tthis.demodt = {};\n\t\t\t\tthis.demodt.formats = _edaDragDropWayLeftPanelController.dateFormats;\n\t\t\t\tthis.dateOptions = this.getDateOptions();\n\t\n\t\t\t\t// this.controllerModalProxy.resetAllTemporyModels();\n\t\t\t\tthis.initNyaSelectConformingSelectedControl();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'getDateOptions',\n\t\t\tvalue: function getDateOptions() {\n\t\t\t\tvar dateOptions = {\n\t\t\t\t\tformatYear: 'yy',\n\t\t\t\t\tstartingDay: 1,\n\t\t\t\t\tshowWeeks: true,\n\t\t\t\t\tinitDate: null\n\t\t\t\t};\n\t\t\t\treturn dateOptions;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'initNyaSelectConformingSelectedControl',\n\t\t\tvalue: function initNyaSelectConformingSelectedControl() {\n\t\t\t\t//place proxyModel to selection if not none :\n\t\t\t\tif (this.proxyModel.temporyConfig.selectedControl !== 'none') {\n\t\t\t\t\tfor (var i = this.proxyModel.controls.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (this.proxyModel.controls[i].id === this.proxyModel.temporyConfig.selectedControl) this.modelproxyModel = this.proxyModel.controls[i];\n\t\t\t\t\t}\n\t\t\t\t\tif (this.proxyModel.temporyConfig.selectedControl === 'BasicSelect') this.controllerModalProxy.bindBasicSelectFromProxyModel(self.basicSelectRowCollection);\n\t\t\t\t\tif (this.proxyModel.temporyConfig.selectedControl === 'GroupedSelect') this.controllerModalProxy.bindGroupedSelectFromProxyModel(this.groupedSelectRowCollection, this.GroupedSelectGroups);\n\t\t\t\t\tif (this.proxyModel.temporyConfig.selectedControl === 'Radio') this.controllerModalProxy.bindRadioFromProxyModel(this.radioRowCollection);\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'updateSpecialControl',\n\t\t\tvalue: function updateSpecialControl() {\n\t\t\t\t//refresh service data for particular controls as selects and radio\n\t\t\t\tthis.proxyModel.basicSelectRowCollection = this.basicSelectRowCollection;\n\t\t\t\tthis.proxyModel.newOptionBasicSelect = this.newOptionBasicSelect;\n\t\t\t\tthis.proxyModel.groupedSelectRowCollection = this.groupedSelectRowCollection;\n\t\t\t\tthis.proxyModel.newOptionGroupedSelect = this.newOptionGroupedSelect;\n\t\t\t\tthis.proxyModel.GroupedSelectGroups = this.GroupedSelectGroups;\n\t\t\t\tthis.proxyModel.newGroupGroupedSelect = this.newGroupGroupedSelect;\n\t\t\t\tthis.proxyModel.groupSelectGroupClick = this.groupSelectGroupClick;\n\t\t\t\tthis.proxyModel.radioRowCollection = this.radioRowCollection;\n\t\t\t\tthis.proxyModel.newOptionRadio = this.newOptionRadio;\n\t\t\t\t//force apply update proxyModel\n\t\t\t\tthis.controllerModalProxy.bindSpecialCtrlTemporyModelsToProxyModel();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'resetTemporyConfig',\n\t\t\tvalue: function resetTemporyConfig() {\n\t\t\t\tthis.proxyModel.temporyConfig = {\n\t\t\t\t\tformlyLabel: '',\n\t\t\t\t\tformlyRequired: false,\n\t\t\t\t\tformlyPlaceholder: '',\n\t\t\t\t\tformlyDescription: '',\n\t\t\t\t\tformlyOptions: []\n\t\t\t\t};\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'resetControl',\n\t\t\tvalue: function resetControl() {\n\t\t\t\tthis.proxyModel.temporyConfig.formlyLabel = '';\n\t\t\t\tthis.proxyModel.temporyConfig.formlyRequired = false;\n\t\t\t\tthis.proxyModel.temporyConfig.formlyPlaceholder = '';\n\t\t\t\tthis.proxyModel.temporyConfig.formlyDescription = '';\n\t\t\t\tthis.proxyModel.temporyConfig.formlyOptions = [];\n\t\t\t\tthis.proxyModel.temporyConfig.datepickerPopup = this.initDatePicker();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'initDatePicker',\n\t\t\tvalue: function initDatePicker() {\n\t\t\t\tthis.proxyModel.temporyConfig.datepickerPopup = this.demodt.formats[0];\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'selectThisControl',\n\t\t\tvalue: function selectThisControl(controlName) {\n\t\t\t\tthis.proxyModel.selectedControl = 'none';\n\t\t\t\tthis.resetTemporyConfig();\n\t\t\t\tfor (var i = this.proxyModel.controls.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (this.proxyModel.controls[i].id === controlName) {\n\t\t\t\t\t\tthis.proxyModel.selectedControl = this.proxyModel.controls[i].id;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.proxyModel.selectedControl === 'Date') this.initDatePicker();\n\t\t\t}\n\t\n\t\t\t/**\n\t \t* ==============================================================\n\t \t* specific controls management\n\t \t* (display, properties.... : ex : grouped Select)\n\t \t* ==============================================================\n\t \t*/\n\t\n\t\t}, {\n\t\t\tkey: 'addNewOptionRadio',\n\t\t\tvalue: function addNewOptionRadio() {\n\t\t\t\tvar result = this.$selectOptionMange.addNewOptionRadio(this.radioRowCollection, this.newOptionRadio.saisie);\n\t\t\t\tif (result.resultFlag === false) {\n\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\ttitle: result.details,\n\t\t\t\t\t\tbody: '\\'' + this.newOptionRadio.saisie + '\\' cannot be added.',\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t//reset input\n\t\t\t\tthis.newOptionRadio = { saisie: '' };\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'removeRadioRow',\n\t\t\tvalue: function removeRadioRow(index) {\n\t\t\t\tvar result = this.$selectOptionMange.removeOption(this.radioRowCollection, index);\n\t\t\t\tif (result.resultFlag === false) {\n\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\ttitle: result.details,\n\t\t\t\t\t\tbody: 'Delete was cancelled.',\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'upThisRadioRow',\n\t\t\tvalue: function upThisRadioRow(index) {\n\t\t\t\tvar result = this.$selectOptionMange.upthisOption(this.radioRowCollection, index);\n\t\t\t\tif (result.resultFlag === false) {\n\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\ttitle: result.details,\n\t\t\t\t\t\tbody: 'Operation cancelled.',\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'downThisRadioRow',\n\t\t\tvalue: function downThisRadioRow(index) {\n\t\t\t\tvar result = this.$selectOptionMange.downthisOption(this.radioRowCollection, index);\n\t\t\t\tif (result.resultFlag === false) {\n\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\ttitle: result.details,\n\t\t\t\t\t\tbody: 'Operation cancelled.',\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'addNewOptionBasicSelect',\n\t\t\tvalue: function addNewOptionBasicSelect() {\n\t\t\t\tvar result = this.$selectOptionMange.addNewOptionBasicSelect(this.basicSelectRowCollection, this.newOptionBasicSelect.saisie);\n\t\t\t\tif (result.resultFlag === false) {\n\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\ttitle: result.details,\n\t\t\t\t\t\tbody: '\\'' + this.newOptionBasicSelect.saisie + '\\' cannot be added.',\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.newOptionBasicSelect = { saisie: '' }; //reset input\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'removeRow',\n\t\t\tvalue: function removeRow(index) {\n\t\t\t\tvar result = this.$selectOptionMange.removeOption(this.basicSelectRowCollection, index);\n\t\t\t\tif (result.resultFlag === false) {\n\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\ttitle: result.details,\n\t\t\t\t\t\tbody: 'Delete was cancelled.',\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'upThisRow',\n\t\t\tvalue: function upThisRow(index) {\n\t\t\t\tvar result = this.$selectOptionMange.upthisOption(this.basicSelectRowCollection, index);\n\t\t\t\tif (result.resultFlag === false) {\n\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\ttitle: result.details,\n\t\t\t\t\t\tbody: 'Operation cancelled.',\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'downThisRow',\n\t\t\tvalue: function downThisRow(index) {\n\t\t\t\tvar result = this.$selectOptionMange.downthisOption(this.basicSelectRowCollection, index);\n\t\t\t\tif (result.resultFlag === false) {\n\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\ttitle: result.details,\n\t\t\t\t\t\tbody: 'Operation cancelled.',\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'showGroupListToChoose',\n\t\t\tvalue: function showGroupListToChoose() {\n\t\t\t\tthis.groupSelectGroupClick.showList = !this.groupSelectGroupClick.showList;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'addNewGroupToGroupedSelect',\n\t\t\tvalue: function addNewGroupToGroupedSelect() {\n\t\t\t\tif (this.newGroupGroupedSelect.saisie !== '') {\n\t\t\t\t\tfor (var i = this.GroupedSelectGroups.list.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (this.GroupedSelectGroups.list[i] === this.newGroupGroupedSelect.saisie) {\n\t\t\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\t\t\ttitle: 'Group already exists',\n\t\t\t\t\t\t\t\tbody: 'No group added.',\n\t\t\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.GroupedSelectGroups.list.push(this.newGroupGroupedSelect.saisie);\n\t\t\t\t} else {\n\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\ttitle: 'Not a valid group to add',\n\t\t\t\t\t\tbody: 'No group added.',\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.newGroupGroupedSelect.saisie = '';\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'addNewOptionGroupedSelect',\n\t\t\tvalue: function addNewOptionGroupedSelect() {\n\t\t\t\tvar result = this.$selectOptionMange.addNewOptionGroupedSelect(this.groupedSelectRowCollection, this.newOptionGroupedSelect.saisie, '');\n\t\t\t\tif (result.resultFlag === false) {\n\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\ttitle: result.details,\n\t\t\t\t\t\tbody: '\\'' + this.newOptionGroupedSelect.saisie + '\\' cannot be added.',\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t//bind nya : dont bind here $apply is not done fast enough\n\t\t\t\t//bindGroupedSelectToNya();\n\t\t\t\t//reset input\n\t\t\t\tthis.newOptionGroupedSelect = { saisie: '' };\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'removeGroupedSelectRow',\n\t\t\tvalue: function removeGroupedSelectRow(index) {\n\t\t\t\tvar result = this.$selectOptionMange.removeOption(this.groupedSelectRowCollection, index);\n\t\t\t\tif (result.resultFlag === false) {\n\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\ttitle: result.details,\n\t\t\t\t\t\tbody: 'Delete was cancelled.',\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'upThisGroupedSelectRow',\n\t\t\tvalue: function upThisGroupedSelectRow(index) {\n\t\t\t\tvar result = this.$selectOptionMange.upthisOption(this.groupedSelectRowCollection, index);\n\t\t\t\tif (result.resultFlag === false) {\n\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\ttitle: result.details,\n\t\t\t\t\t\tbody: 'Operation cancelled.',\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'downThisGroupedSelectRow',\n\t\t\tvalue: function downThisGroupedSelectRow(index) {\n\t\t\t\tvar result = this.$selectOptionMange.downthisOption(this.groupedSelectRowCollection, index);\n\t\t\t\tif (result.resultFlag === false) {\n\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype: 'warning',\n\t\t\t\t\t\ttimeout: 2000,\n\t\t\t\t\t\ttitle: result.details,\n\t\t\t\t\t\tbody: 'Operation cancelled.',\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'today',\n\t\t\tvalue: function today() {\n\t\t\t\t(0, _edaDragDropWayLeftPanelController.setToday)(this.demodt);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'clear',\n\t\t\tvalue: function clear() {\n\t\t\t\t(0, _edaDragDropWayLeftPanelController.clearDateTime)(this.demodt);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'open',\n\t\t\tvalue: function open($event) {\n\t\t\t\t$event.preventDefault();\n\t\t\t\t$event.stopPropagation();\n\t\t\t\tthis.demodt.opened = true;\n\t\t\t}\n\t\t}]);\n\t\n\t\treturn leftPanelController;\n\t}();\n\t\n\tleftPanelController.$inject = ['toaster', '$timeout', '$selectOptionMange', 'controllerModalProxy'];\n\t\n\texports.default = leftPanelController;\n\texports.LEFT_PANEL_CONTROLLER = LEFT_PANEL_CONTROLLER;\n\texports.LEFT_PANEL_CONTROLLERAS = LEFT_PANEL_CONTROLLERAS;\n\n/***/ },\n/* 17 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar dateFormats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];\n\t\n\tvar setToday = function setToday(datetimePickerModel) {\n\t\tdatetimePickerModel.dt = new Date();\n\t};\n\t\n\tvar clearDateTime = function clearDateTime(datetimePickerModel) {\n\t\tdatetimePickerModel.dt = new Date();\n\t};\n\t\n\texports.dateFormats = dateFormats;\n\texports.setToday = setToday;\n\texports.clearDateTime = clearDateTime;\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.LEFT_PANEL_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayLeftPanel = __webpack_require__(16);\n\t\n\tvar _edaDragDropWayLeftPanelTemplate = __webpack_require__(19);\n\t\n\tvar _edaDragDropWayLeftPanelTemplate2 = _interopRequireDefault(_edaDragDropWayLeftPanelTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_DIRECTIVE = 'leftPanel';\n\t\n\tfunction leftPanel() {\n\t\tvar directive = {\n\t\t\trestrict: 'E',\n\t\t\ttemplate: _edaDragDropWayLeftPanelTemplate2.default,\n\t\t\tscope: {},\n\t\t\tcontroller: _edaDragDropWayLeftPanel.LEFT_PANEL_CONTROLLER,\n\t\t\tcontrollerAs: _edaDragDropWayLeftPanel.LEFT_PANEL_CONTROLLERAS,\n\t\t\tbindToController: {\n\t\t\t\tcloseEditPanel: '&',\n\t\t\t\tselectedControl: '&',\n\t\t\t\tsaveFromEditPanel: '&'\n\t\t\t}\n\t\t};\n\t\treturn directive;\n\t}\n\t\n\tleftPanel.$inject = [];\n\t\n\texports.default = leftPanel;\n\texports.LEFT_PANEL_DIRECTIVE = LEFT_PANEL_DIRECTIVE;\n\n/***/ },\n/* 19 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n ×\\n \\n\\t\\t \\n\\t
\\n\\t
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n \\n \\n Select a control\\n \\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t
\\n\\t
\\n Close\\n \\n
\\n\"\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* global angular */\n\t\n\t\n\tvar _edaDragDropWayLeftPanelSelectOptionManageService = __webpack_require__(21);\n\t\n\tvar helpers = _interopRequireWildcard(_edaDragDropWayLeftPanelSelectOptionManageService);\n\t\n\tfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE = '$selectOptionMange';\n\t\n\tvar selectOptionMange = function () {\n\t function selectOptionMange() {\n\t _classCallCheck(this, selectOptionMange);\n\t\n\t this.init();\n\t }\n\t\n\t _createClass(selectOptionMange, [{\n\t key: 'init',\n\t value: function init() {}\n\t }, {\n\t key: 'initModel',\n\t value: function initModel(selectObj) {\n\t helpers.resetModel(selectObj);\n\t }\n\t }, {\n\t key: 'isOptionUnique',\n\t value: function isOptionUnique(selectObj, textValue) {\n\t for (var i = selectObj.rows.length - 1; i >= 0; i--) {\n\t if (selectObj.rows[i].option === textValue) return false;\n\t }\n\t return true;\n\t }\n\t }, {\n\t key: 'isOptionValidFormat',\n\t value: function isOptionValidFormat(textValue) {\n\t if (textValue !== '') return true;\n\t return false;\n\t }\n\t }, {\n\t key: 'addNewOptionRadio',\n\t value: function addNewOptionRadio(selectObj, newOptionText) {\n\t var fullResponse = {\n\t resultFlag: false,\n\t details: ''\n\t };\n\t var checkResult = helpers.validOption(selectObj, newOptionText);\n\t if (checkResult.resultFlag === true) {\n\t var newOption = {\n\t option: newOptionText,\n\t order: selectObj.rows.length\n\t };\n\t selectObj.rows.push(newOption);\n\t fullResponse.resultFlag = true;\n\t fullResponse.details = '';\n\t return fullResponse;\n\t } else {\n\t angular.copy(checkResult, fullResponse);\n\t return fullResponse;\n\t }\n\t }\n\t }, {\n\t key: 'addNewOptionBasicSelect',\n\t value: function addNewOptionBasicSelect(selectObj, newOptionText) {\n\t var fullResponse = {\n\t resultFlag: false,\n\t details: ''\n\t };\n\t var checkResult = helpers.validOption(selectObj, newOptionText);\n\t if (checkResult.resultFlag === true) {\n\t var newOption = {\n\t option: newOptionText,\n\t order: selectObj.rows.length\n\t };\n\t selectObj.rows.push(newOption);\n\t fullResponse.resultFlag = true;\n\t fullResponse.details = '';\n\t return fullResponse;\n\t } else {\n\t angular.copy(checkResult, fullResponse);\n\t return fullResponse;\n\t }\n\t }\n\t }, {\n\t key: 'addNewOptionGroupedSelect',\n\t value: function addNewOptionGroupedSelect(selectObj, newOptionText, newOptionGroup) {\n\t var fullResponse = {\n\t resultFlag: false,\n\t details: ''\n\t };\n\t var checkResult = helpers.validOption(selectObj, newOptionText);\n\t if (checkResult.resultFlag === true) {\n\t var newOption = {\n\t option: newOptionText,\n\t group: newOptionGroup,\n\t order: selectObj.rows.length\n\t };\n\t selectObj.rows.push(newOption);\n\t fullResponse.resultFlag = true;\n\t fullResponse.details = '';\n\t return fullResponse;\n\t } else {\n\t angular.copy(checkResult, fullResponse);\n\t return fullResponse;\n\t }\n\t }\n\t }, {\n\t key: 'removeOption',\n\t value: function removeOption(selectObj, AtIndex) {\n\t var fullResponse = {\n\t resultFlag: false,\n\t details: ''\n\t };\n\t if (AtIndex !== -1) {\n\t selectObj.rows.splice(AtIndex, 1);\n\t fullResponse.resultFlag = true;\n\t fullResponse.details = '';\n\t return fullResponse;\n\t } else {\n\t fullResponse.resultFlag = false;\n\t fullResponse.details = 'Option index not valid';\n\t return fullResponse;\n\t }\n\t }\n\t }, {\n\t key: 'upthisOption',\n\t value: function upthisOption(selectObj, indexOption) {\n\t var fullResponse = {\n\t resultFlag: false,\n\t details: ''\n\t };\n\t if (indexOption > -1) {\n\t if (indexOption > 0) {\n\t if (selectObj.rows[indexOption - 1]) {\n\t var currentOption = selectObj.rows[indexOption];\n\t selectObj.rows.splice(indexOption, 1);\n\t selectObj.rows.splice(indexOption - 1, 0, currentOption);\n\t fullResponse.resultFlag = true;\n\t fullResponse.details = '';\n\t return fullResponse;\n\t } else {\n\t fullResponse.resultFlag = false;\n\t fullResponse.details = 'Can\\'t retreive option from option index';\n\t return fullResponse;\n\t }\n\t } else {\n\t fullResponse.resultFlag = true;\n\t fullResponse.details = '';\n\t return fullResponse;\n\t }\n\t } else {\n\t fullResponse.resultFlag = false;\n\t fullResponse.details = 'Option index not valid';\n\t return fullResponse;\n\t }\n\t }\n\t }, {\n\t key: 'downthisOption',\n\t value: function downthisOption(selectObj, indexOption) {\n\t var fullResponse = {\n\t resultFlag: false,\n\t details: ''\n\t };\n\t if (indexOption > -1) {\n\t if (indexOption < selectObj.rows.length - 1) {\n\t if (selectObj.rows[indexOption + 1]) {\n\t var currentOption = selectObj.rows[indexOption];\n\t selectObj.rows.splice(indexOption, 1);\n\t selectObj.rows.splice(indexOption + 1, 0, currentOption);\n\t fullResponse.resultFlag = true;\n\t fullResponse.details = '';\n\t return fullResponse;\n\t } else {\n\t fullResponse.resultFlag = false;\n\t fullResponse.details = 'Can\\'t retreive option from option index';\n\t return fullResponse;\n\t }\n\t } else {\n\t fullResponse.resultFlag = true;\n\t fullResponse.details = '';\n\t return fullResponse;\n\t }\n\t } else {\n\t fullResponse.resultFlag = false;\n\t fullResponse.details = 'Option index not valid';\n\t return fullResponse;\n\t }\n\t }\n\t }]);\n\t\n\t return selectOptionMange;\n\t}();\n\t\n\tselectOptionMange.$inject = [];\n\t\n\texports.default = selectOptionMange;\n\texports.LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE = LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE;\n\n/***/ },\n/* 21 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t/* global angular */\n\tvar resetModel = function resetModel(selectObj) {\n\t var zeroModel = { rows: [] };\n\t angular.copy(zeroModel, selectObj);\n\t};\n\t\n\tvar validOption = function validOption(selectObj, newOptionText) {\n\t var fullResponse = {\n\t resultFlag: false,\n\t details: ''\n\t };\n\t if (typeof newOptionText === 'undefined') {\n\t fullResponse.resultFlag = false;\n\t fullResponse.details = 'Entered option is empty';\n\t return fullResponse;\n\t }\n\t if (newOptionText !== '') {\n\t for (var i = selectObj.rows.length - 1; i >= 0; i--) {\n\t if (selectObj.rows[i].option === newOptionText) {\n\t fullResponse.resultFlag = false;\n\t fullResponse.details = 'Entered option is not unique';\n\t return fullResponse;\n\t }\n\t }\n\t fullResponse.resultFlag = true;\n\t fullResponse.details = '';\n\t return fullResponse;\n\t }\n\t fullResponse.resultFlag = false;\n\t fullResponse.details = 'Entered option is empty';\n\t return fullResponse;\n\t};\n\t\n\texports.resetModel = resetModel;\n\texports.validOption = validOption;\n\n/***/ },\n/* 22 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t///
\n\t///
\n\t\n\t/**\n\t * TODO :\n\t * - clean deprecated functions\n\t * - method 'resetAllTemporyModels' -> remove no use angular.copy to optimize\n\t */\n\t\n\tvar CONTROLLER_MODAL_PROXY = 'controllerModalProxy';\n\tvar INIT_OPTION_MODEL = { rows: [] };\n\t\n\tvar controllerModalProxy = function () {\n\t function controllerModalProxy(EasyFormGenFormlyBindingModels) {\n\t _classCallCheck(this, controllerModalProxy);\n\t\n\t this.EasyFormGenFormlyBindingModels = EasyFormGenFormlyBindingModels;\n\t this.init();\n\t }\n\t\n\t _createClass(controllerModalProxy, [{\n\t key: 'init',\n\t value: function init() {\n\t this.proxyModel = {};\n\t this.resetProxyModel();\n\t this.editPanelModel = {\n\t toggle: false,\n\t lineIndex: -1,\n\t columnIndex: -1,\n\t control: {}\n\t };\n\t this.basicSelectRowCollection = angular.copy(INIT_OPTION_MODEL);\n\t this.newOptionBasicSelect = angular.copy({ saisie: '' });\n\t\n\t this.groupedSelectRowCollection = angular.copy(INIT_OPTION_MODEL);\n\t this.newOptionGroupedSelect = angular.copy({ saisie: '' });\n\t this.GroupedSelectGroups = angular.copy({ list: [] });\n\t this.newGroupGroupedSelect = angular.copy({ saisie: '' });\n\t this.groupSelectGroupClick = angular.copy({ showList: false });\n\t\n\t this.radioRowCollection = angular.copy(INIT_OPTION_MODEL);\n\t this.newOptionRadio = angular.copy({ saisie: '' });\n\t }\n\t\n\t // deprecated in drag and drop version, use initProxyModel insead\n\t\n\t }, {\n\t key: 'initNyaSelect',\n\t value: function initNyaSelect(nyaSelectObj) {\n\t return this.resetNyaSelect(nyaSelectObj);\n\t }\n\t }, {\n\t key: 'initProxyModel',\n\t value: function initProxyModel(thisProxyModelToInit) {\n\t return this.resetProxyModel(thisProxyModelToInit);\n\t }\n\t\n\t // deprecated : in drag and drop version, use \"resetProxyModel()\"\"\n\t\n\t }, {\n\t key: 'resetNyaSelect',\n\t value: function resetNyaSelect(nyaSelectObj) {\n\t var newNyaSelectObj = this.EasyFormGenFormlyBindingModels.getEasyFormListControls();\n\t angular.copy(newNyaSelectObj, nyaSelectObj);\n\t return true;\n\t }\n\t }, {\n\t key: 'resetProxyModel',\n\t value: function resetProxyModel() {\n\t var newProxyModel = this.EasyFormGenFormlyBindingModels.getEasyFormListControls();\n\t this.proxyModel = angular.copy(newProxyModel);\n\t return true;\n\t }\n\t }, {\n\t key: 'returnControlFromAddCtrlModalModel',\n\t value: function returnControlFromAddCtrlModalModel(CtrlModalModel) {\n\t var modelToReturn = {\n\t selectedControl: 'none',\n\t formlyType: 'none',\n\t formlySubtype: 'none',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyPlaceholder: '',\n\t formlyOptions: []\n\t };\n\t for (var i = CtrlModalModel.controls.length - 1; i >= 0; i--) {\n\t if (CtrlModalModel.selectedControl === CtrlModalModel.controls[i].id) {\n\t\n\t modelToReturn.selectedControl = CtrlModalModel.selectedControl;\n\t modelToReturn.formlyType = CtrlModalModel.controls[i].formlyType;\n\t modelToReturn.formlySubtype = CtrlModalModel.controls[i].formlySubtype;\n\t modelToReturn.formlyLabel = CtrlModalModel.controls[i].formlyLabel;\n\t modelToReturn.formlyRequired = CtrlModalModel.controls[i].formlyRequired;\n\t modelToReturn.formlyDescription = CtrlModalModel.controls[i].formlyDescription;\n\t modelToReturn.formlyPlaceholder = CtrlModalModel.controls[i].formlyPlaceholder;\n\t modelToReturn.formlyOptions = CtrlModalModel.controls[i].formlyOptions;\n\t // particular properties, here ; datetpicker format\n\t if (CtrlModalModel.controls[i].formlyType === 'datepicker') modelToReturn.datepickerPopup = CtrlModalModel.controls[i].datepickerPopup;\n\t }\n\t }\n\t return modelToReturn;\n\t }\n\t }, {\n\t key: 'validKeyUniqueness',\n\t value: function validKeyUniqueness(thisKey, configurationObj) {\n\t var isUnique = true;\n\t for (var i = configurationObj.lines.length - 1; i >= 0; i--) {\n\t for (var j = configurationObj.lines[i].columns.length - 1; j >= 0; j--) {\n\t if (configurationObj.lines[i].columns[j].control.key === thisKey) {\n\t isUnique = false;\n\t }\n\t }\n\t }\n\t return isUnique;\n\t }\n\t }, {\n\t key: 'getSelectedProxyModel',\n\t value: function getSelectedProxyModel(configurationSelectedCtrl) {\n\t var selectedProxyModelControl = 'none';\n\t var listProxyModelCTRL = angular.copy(this.EasyFormGenFormlyBindingModels.getEasyFormListControls().controls);\n\t\n\t listProxyModelCTRL.forEach(function (control) {\n\t if (control.formlyType === configurationSelectedCtrl.type && control.formlySubtype === configurationSelectedCtrl.subtype) {\n\t selectedProxyModelControl = control.id;\n\t return selectedProxyModelControl;\n\t }\n\t });\n\t return selectedProxyModelControl;\n\t }\n\t\n\t // to refresh configuration model from edit panel\n\t\n\t }, {\n\t key: 'bindConfigurationModelFromProxyModel',\n\t value: function bindConfigurationModelFromProxyModel(indexLine, numcolumn, configurationObj) {\n\t var extractedProps = angular.copy(this.proxyModel.temporyConfig);\n\t\n\t configurationObj.lines[indexLine].columns[numcolumn].control.selectedControl = extractedProps.selectedControl;\n\t configurationObj.lines[indexLine].columns[numcolumn].control.type = extractedProps.formlyType;\n\t configurationObj.lines[indexLine].columns[numcolumn].control.subtype = extractedProps.formlySubtype;\n\t // templateOptions\n\t configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions = {\n\t label: '',\n\t required: false,\n\t description: '',\n\t placeholder: '',\n\t options: []\n\t };\n\t // then bind template option\n\t configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label = extractedProps.formlyLabel;\n\t configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required = extractedProps.formlyRequired;\n\t configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description = extractedProps.formlyDescription;\n\t configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder = extractedProps.formlyPlaceholder;\n\t configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options = extractedProps.formlyOptions;\n\t // add additionnal — particular — properties : -> datepicker : datepickerPopup\n\t if (configurationObj.lines[indexLine].columns[numcolumn].control.type === 'datepicker') {\n\t configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup = extractedProps.datepickerPopup;\n\t }\n\t // unique key (set only first time) in this model is formly control type + Date.now();\n\t var newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();\n\t\n\t if (this.validKeyUniqueness(newKey, configurationObj) === true) {\n\t configurationObj.lines[indexLine].columns[numcolumn].control.key = newKey;\n\t } else {\n\t newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();\n\t if (this.validKeyUniqueness(newKey, configurationObj) === true) {\n\t configurationObj.lines[indexLine].columns[numcolumn].control.key = newKey;\n\t } else {\n\t newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();\n\t }\n\t }\n\t configurationObj.lines[indexLine].columns[numcolumn].control.edited = true;\n\t }\n\t\n\t /**\n\t * set local proxyModel from Selected control in configuration model\n\t *\n\t * replace deprecated \"getNyASelectFromSelectedLineColumn\"\n\t * -model is now named \"proxyModel\"\n\t * -model is stored in this service\n\t *\n\t * -> it has just more sence!\n\t */\n\t\n\t }, {\n\t key: 'setProxyModelFromConfigurationSelection',\n\t value: function setProxyModelFromConfigurationSelection(configurationObj, indexLine, numcolumn) {\n\t // data send to modal controller\n\t if (typeof configurationObj.lines[indexLine].columns[numcolumn].control != 'undefined') {\n\t // determine selected control from indexes and control.type and control.subtype in configuration model\n\t this.proxyModel.selectedControl = typeof configurationObj.lines[indexLine].columns[numcolumn].control.type != 'undefined' ? this.getSelectedProxyModel(configurationObj.lines[indexLine].columns[numcolumn].control) : 'none';\n\t this.proxyModel.temporyConfig.selectedControl = typeof configurationObj.lines[indexLine].columns[numcolumn].control.type != 'undefined' ? this.getSelectedProxyModel(configurationObj.lines[indexLine].columns[numcolumn].control) : 'none';\n\t this.proxyModel.temporyConfig.formlyType = typeof configurationObj.lines[indexLine].columns[numcolumn].control.type != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.type : 'none';\n\t this.proxyModel.temporyConfig.formlySubtype = typeof configurationObj.lines[indexLine].columns[numcolumn].control.subtype != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.subtype : 'none';\n\t this.proxyModel.temporyConfig.formlyLabel = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label : '';\n\t this.proxyModel.temporyConfig.formlyRequired = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required : '';\n\t this.proxyModel.temporyConfig.formlyDescription = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description : '';\n\t this.proxyModel.temporyConfig.formlyPlaceholder = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder : '';\n\t this.proxyModel.temporyConfig.formlyOptions = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options : '';\n\t // particular case : datepicker\n\t if (this.proxyModel.temporyConfig.selectedControl === 'Date') {\n\t this.proxyModel.temporyConfig.datepickerPopup = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup : '';\n\t }\n\t // console.info('debug setProxyModelFromConfigurationSelection');\n\t // console.dir({\n\t // selectedControl : angular.copy(this.proxyModel.selectedControl ),\n\t // temporyConfig : angular.copy(this.proxyModel.temporyConfig)\n\t // });\n\t }\n\t return this.proxyModel;\n\t }\n\t }, {\n\t key: 'getProxyModel',\n\t value: function getProxyModel() {\n\t return this.proxyModel;\n\t }\n\t\n\t /**\n\t * ============================================================\n\t * following methods for \"editPanelModel\"\n\t *\n\t * Note this model :\n\t * - to manage side edit control panel\n\t * ============================================================\n\t */\n\t\n\t // getter : editPanelModel (whole model => type = object)\n\t\n\t }, {\n\t key: 'getEditPanelModelAllModel',\n\t value: function getEditPanelModelAllModel() {\n\t return this.editPanelModel;\n\t }\n\t\n\t // setter : editPanelModel (whole model => type = object)\n\t\n\t }, {\n\t key: 'setEditPanelModelControl',\n\t value: function setEditPanelModelControl(newEditPanelModel) {\n\t var successfullDone = false;\n\t if (typeof newEditPanelModel !== 'undefined') {\n\t angular.merge(this.editPanelModel, newEditPanelModel);\n\t successfullDone = true;\n\t }\n\t return successfullDone;\n\t }\n\t\n\t // getter : editPanelModel.columnIndex\n\t\n\t }, {\n\t key: 'getEditPanelModelColumnIndex',\n\t value: function getEditPanelModelColumnIndex() {\n\t return this.editPanelModel.columnIndex;\n\t }\n\t\n\t // setter : editPanelModel.columnIndex\n\t\n\t }, {\n\t key: 'setEditPanelModelColumnIndex',\n\t value: function setEditPanelModelColumnIndex(newColumnIndex) {\n\t var successfullDone = false;\n\t if (typeof newColumnIndex !== 'undefined') {\n\t this.editPanelModel.columnIndex = newColumnIndex;\n\t successfullDone = true;\n\t }\n\t return successfullDone;\n\t }\n\t\n\t // getter : editPanelModel.lineIndex\n\t\n\t }, {\n\t key: 'getEditPanelModelLineIndex',\n\t value: function getEditPanelModelLineIndex() {\n\t return this.editPanelModel.lineIndex;\n\t }\n\t\n\t // setter : editPanelModel.lineIndex\n\t\n\t }, {\n\t key: 'setEditPanelModelLineIndex',\n\t value: function setEditPanelModelLineIndex(newLineIndex) {\n\t var successfullDone = false;\n\t if (typeof newLineIndex !== 'undefined') {\n\t this.editPanelModel.lineIndex = newLineIndex;\n\t successfullDone = true;\n\t }\n\t return successfullDone;\n\t }\n\t\n\t // getter : editPanelModel.control\n\t\n\t }, {\n\t key: 'getEditPanelModelControl',\n\t value: function getEditPanelModelControl() {\n\t return this.editPanelModel.control;\n\t }\n\t\n\t // getter : editPanelModel.toggle\n\t\n\t }, {\n\t key: 'getEditPanelModelToggle',\n\t value: function getEditPanelModelToggle() {\n\t return this.editPanelModel.toggle;\n\t }\n\t\n\t // setter : editPanelModel.toggle\n\t\n\t }, {\n\t key: 'setEditPanelModelToggle',\n\t value: function setEditPanelModelToggle(newToggleValue) {\n\t var successfullDone = false;\n\t if (typeof newToggleValue !== 'undefined') {\n\t this.editPanelModel.toggle = newToggleValue;\n\t successfullDone = true;\n\t }\n\t return successfullDone;\n\t }\n\t }, {\n\t key: 'resetAllTemporyModels',\n\t value: function resetAllTemporyModels() {\n\t this.basicSelectRowCollection = angular.copy(INIT_OPTION_MODEL);\n\t this.newOptionBasicSelect = angular.copy({ saisie: '' });\n\t\n\t this.groupedSelectRowCollection = angular.copy(INIT_OPTION_MODEL);\n\t this.newOptionGroupedSelect = angular.copy({ saisie: '' });\n\t this.GroupedSelectGroups = angular.copy({ list: [] });\n\t this.newGroupGroupedSelect = angular.copy({ saisie: '' });\n\t this.groupSelectGroupClick = angular.copy({ showList: false });\n\t\n\t this.radioRowCollection = angular.copy(INIT_OPTION_MODEL);\n\t this.newOptionRadio = angular.copy({ saisie: '' });\n\t return true;\n\t }\n\t\n\t /**\n\t * bindSpecialCtrlTemporyModelsToProxyModel: needed when validating after editing a control\n\t * tempory models applied to proxyModel if control is one of these\n\t *\n\t * example : if selected control is a basic select options\n\t * -> so its tempory models are bound to proxyModel\n\t */\n\t\n\t }, {\n\t key: 'bindSpecialCtrlTemporyModelsToProxyModel',\n\t value: function bindSpecialCtrlTemporyModelsToProxyModel() {\n\t if (this.proxyModel.selectedControl === 'BasicSelect') {\n\t this.bindBasicSelectToProxyModel(this.basicSelectRowCollection);\n\t }\n\t if (this.proxyModel.selectedControl === 'GroupedSelect') {\n\t this.bindGroupedSelectToProxyModel(this.groupedSelectRowCollection);\n\t }\n\t if (this.proxyModel.selectedControl === 'Radio') {\n\t this.bindRadioToProxyModel(this.radioRowCollection);\n\t }\n\t }\n\t\n\t // basic select\n\t\n\t }, {\n\t key: 'bindBasicSelectFromProxyModel',\n\t value: function bindBasicSelectFromProxyModel(basicSelectRowCollection) {\n\t if (this.proxyModel.temporyConfig.formlyOptions.length > 0) {\n\t for (var i = 0; i <= this.proxyModel.temporyConfig.formlyOptions.length - 1; i++) {\n\t var newOption = {\n\t 'option': this.proxyModel.temporyConfig.formlyOptions[i].name,\n\t 'order': i,\n\t 'group': ''\n\t };\n\t basicSelectRowCollection.rows.push(newOption);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'bindBasicSelectToProxyModel',\n\t value: function bindBasicSelectToProxyModel(basicSelectRowCollection) {\n\t var resetNyASelectOptions = [];\n\t this.proxyModel.temporyConfig.formlyOptions = resetNyASelectOptions;\n\t if (basicSelectRowCollection.rows.length > 0) {\n\t for (var i = 0; i <= basicSelectRowCollection.rows.length - 1; i++) {\n\t var newOption = {\n\t 'name': basicSelectRowCollection.rows[i].option,\n\t 'value': i,\n\t 'group': ''\n\t };\n\t this.proxyModel.temporyConfig.formlyOptions.push(newOption);\n\t }\n\t }\n\t }\n\t\n\t //* grouped select\n\t\n\t }, {\n\t key: 'bindGroupedSelectFromProxyModel',\n\t value: function bindGroupedSelectFromProxyModel(groupedSelectRowCollection, GroupedSelectGroups) {\n\t if (this.proxyModel.temporyConfig.formlyOptions.length > 0) {\n\t for (var i = 0; i <= this.proxyModel.temporyConfig.formlyOptions.length - 1; i++) {\n\t var newOption = {\n\t 'option': this.proxyModel.temporyConfig.formlyOptions[i].name,\n\t 'order': i,\n\t 'group': this.proxyModel.temporyConfig.formlyOptions[i].group\n\t };\n\t groupedSelectRowCollection.rows.push(newOption);\n\t }\n\t //grouplist : thx to lodash it is easy\n\t var filteredgroup = _.uniq(_.pluck(groupedSelectRowCollection.rows, 'group'));\n\t angular.copy(filteredgroup, GroupedSelectGroups.list);\n\t }\n\t }\n\t }, {\n\t key: 'bindGroupedSelectToProxyModel',\n\t value: function bindGroupedSelectToProxyModel(groupedSelectRowCollection) {\n\t this.proxyModel.temporyConfig.formlyOptions = [];\n\t for (var i = 0; i <= groupedSelectRowCollection.rows.length - 1; i++) {\n\t var newOption = {\n\t 'name': groupedSelectRowCollection.rows[i].option,\n\t 'value': i,\n\t 'group': groupedSelectRowCollection.rows[i].group\n\t };\n\t this.proxyModel.temporyConfig.formlyOptions.push(newOption);\n\t }\n\t }\n\t\n\t // radio\n\t\n\t }, {\n\t key: 'bindRadioFromProxyModel',\n\t value: function bindRadioFromProxyModel(radioRowCollection) {\n\t if (this.proxyModel.temporyConfig.formlyOptions.length > 0) {\n\t for (var i = 0; i <= this.proxyModel.temporyConfig.formlyOptions.length - 1; i++) {\n\t var newOption = {\n\t 'option': this.proxyModel.temporyConfig.formlyOptions[i].name,\n\t 'order': i,\n\t 'group': ''\n\t };\n\t radioRowCollection.rows.push(newOption);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'bindRadioToProxyModel',\n\t value: function bindRadioToProxyModel(radioRowCollection) {\n\t var resetproxyModelOptions = [];\n\t this.proxyModel.temporyConfig.formlyOptions = resetproxyModelOptions;\n\t if (radioRowCollection.rows.length > 0) {\n\t for (var i = 0; i <= radioRowCollection.rows.length - 1; i++) {\n\t var newOption = {\n\t 'name': radioRowCollection.rows[i].option,\n\t 'value': i,\n\t 'group': ''\n\t };\n\t this.proxyModel.temporyConfig.formlyOptions.push(newOption);\n\t }\n\t }\n\t }\n\t }]);\n\t\n\t return controllerModalProxy;\n\t}();\n\t\n\tcontrollerModalProxy.$inject = ['EasyFormGenFormlyBindingModels'];\n\t\n\texports.default = controllerModalProxy;\n\texports.CONTROLLER_MODAL_PROXY = CONTROLLER_MODAL_PROXY;\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayLeftpanelValidEditFooterTemplate = __webpack_require__(24);\n\t\n\tvar _edaDragDropWayLeftpanelValidEditFooterTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelValidEditFooterTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE = 'leftPanelValidEditFooter';\n\t\n\tfunction leftPanelValidEditFooter() {\n\t var directive = {\n\t restrict: 'E',\n\t template: _edaDragDropWayLeftpanelValidEditFooterTemplate2.default\n\t };\n\t return directive;\n\t}\n\t\n\tleftPanelValidEditFooter.$inject = [];\n\t\n\texports.default = leftPanelValidEditFooter;\n\texports.LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE = LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE;\n\n/***/ },\n/* 24 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n\"\n\n/***/ },\n/* 25 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayLeftpanelTextInputControlTemplate = __webpack_require__(26);\n\t\n\tvar _edaDragDropWayLeftpanelTextInputControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelTextInputControlTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE = 'leftPanelTextInputControl';\n\t\n\tfunction leftPanelTextInputControl() {\n\t var directive = {\n\t restrict: 'E',\n\t template: _edaDragDropWayLeftpanelTextInputControlTemplate2.default\n\t };\n\t return directive;\n\t}\n\t\n\tleftPanelTextInputControl.$inject = [];\n\t\n\texports.default = leftPanelTextInputControl;\n\texports.LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE = LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE;\n\n/***/ },\n/* 26 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayLeftpanelTextareaControlTemplate = __webpack_require__(28);\n\t\n\tvar _edaDragDropWayLeftpanelTextareaControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelTextareaControlTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE = 'leftPanelTextareaControl';\n\t\n\tfunction leftPanelTextareaControl() {\n\t var directive = {\n\t restrict: 'E',\n\t template: _edaDragDropWayLeftpanelTextareaControlTemplate2.default\n\t };\n\t return directive;\n\t}\n\t\n\tleftPanelTextareaControl.$inject = [];\n\t\n\texports.default = leftPanelTextareaControl;\n\texports.LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE = LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE;\n\n/***/ },\n/* 28 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayLeftpanelSubtitleControlTemplate = __webpack_require__(30);\n\t\n\tvar _edaDragDropWayLeftpanelSubtitleControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelSubtitleControlTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE = 'leftPanelSubtitleControl';\n\t\n\tfunction leftPanelSubtitleControl() {\n\t var directive = {\n\t restrict: 'E',\n\t template: _edaDragDropWayLeftpanelSubtitleControlTemplate2.default\n\t };\n\t return directive;\n\t}\n\t\n\tleftPanelSubtitleControl.$inject = [];\n\t\n\texports.default = leftPanelSubtitleControl;\n\texports.LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE = LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE;\n\n/***/ },\n/* 30 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayLeftpanelRichTextEditorControlTemplate = __webpack_require__(32);\n\t\n\tvar _edaDragDropWayLeftpanelRichTextEditorControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelRichTextEditorControlTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE = 'leftPanelRichTextEditorControl';\n\t\n\tfunction leftPanelRichTextEditorControl() {\n\t var directive = {\n\t restrict: 'E',\n\t template: _edaDragDropWayLeftpanelRichTextEditorControlTemplate2.default\n\t };\n\t return directive;\n\t}\n\t\n\tleftPanelRichTextEditorControl.$inject = [];\n\t\n\texports.default = leftPanelRichTextEditorControl;\n\texports.LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE = LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE;\n\n/***/ },\n/* 32 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n
\\n
\\n
\\n
\\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.LEFT_PANEL_RADIO_CONTROL_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayLeftpanelRadioControlTemplate = __webpack_require__(34);\n\t\n\tvar _edaDragDropWayLeftpanelRadioControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelRadioControlTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_RADIO_CONTROL_DIRECTIVE = 'leftPanelRadioControl';\n\t\n\tfunction leftPanelRadioControl() {\n\t var directive = {\n\t restrict: 'E',\n\t template: _edaDragDropWayLeftpanelRadioControlTemplate2.default\n\t };\n\t return directive;\n\t}\n\t\n\tleftPanelRadioControl.$inject = [];\n\t\n\texports.default = leftPanelRadioControl;\n\texports.LEFT_PANEL_RADIO_CONTROL_DIRECTIVE = LEFT_PANEL_RADIO_CONTROL_DIRECTIVE;\n\n/***/ },\n/* 34 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n \\n Add new radio :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n Edit/Remove radio :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayLeftpanelPasswordControlTemplate = __webpack_require__(36);\n\t\n\tvar _edaDragDropWayLeftpanelPasswordControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelPasswordControlTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE = 'leftPanelPasswordControl';\n\t\n\tfunction leftPanelPasswordControl() {\n\t var directive = {\n\t restrict: 'E',\n\t template: _edaDragDropWayLeftpanelPasswordControlTemplate2.default\n\t };\n\t return directive;\n\t}\n\t\n\tleftPanelPasswordControl.$inject = [];\n\t\n\texports.default = leftPanelPasswordControl;\n\texports.LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE = LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE;\n\n/***/ },\n/* 36 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 37 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.LEFT_PANEL_HEADER_CONTROL_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayLeftpanelHeaderControlTemplate = __webpack_require__(38);\n\t\n\tvar _edaDragDropWayLeftpanelHeaderControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelHeaderControlTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_HEADER_CONTROL_DIRECTIVE = 'leftPanelHeaderControl';\n\t\n\tfunction leftPanelHeaderControl() {\n\t var directive = {\n\t restrict: 'E',\n\t template: _edaDragDropWayLeftpanelHeaderControlTemplate2.default\n\t };\n\t return directive;\n\t}\n\t\n\tleftPanelHeaderControl.$inject = [];\n\t\n\texports.default = leftPanelHeaderControl;\n\texports.LEFT_PANEL_HEADER_CONTROL_DIRECTIVE = LEFT_PANEL_HEADER_CONTROL_DIRECTIVE;\n\n/***/ },\n/* 38 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 39 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayLeftpanelGroupedSelectControlTemplate = __webpack_require__(40);\n\t\n\tvar _edaDragDropWayLeftpanelGroupedSelectControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelGroupedSelectControlTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE = 'leftPanelGroupedSelectControl';\n\t\n\tfunction leftPanelGroupedSelectControl() {\n\t var directive = {\n\t restrict: 'E',\n\t template: _edaDragDropWayLeftpanelGroupedSelectControlTemplate2.default\n\t };\n\t return directive;\n\t}\n\t\n\tleftPanelGroupedSelectControl.$inject = [];\n\t\n\texports.default = leftPanelGroupedSelectControl;\n\texports.LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE = LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE;\n\n/***/ },\n/* 40 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n \\n Add new options :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n Add new groups :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n Edit/Remove options/groups:\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 41 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.LEFT_PANEL_DATE_CONTROL_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayLeftpanelDateControlTemplate = __webpack_require__(42);\n\t\n\tvar _edaDragDropWayLeftpanelDateControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelDateControlTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_DATE_CONTROL_DIRECTIVE = 'leftPanelDateControl';\n\t\n\tfunction leftPanelDateControl() {\n\t var directive = {\n\t restrict: 'E',\n\t template: _edaDragDropWayLeftpanelDateControlTemplate2.default\n\t };\n\t return directive;\n\t}\n\t\n\tleftPanelDateControl.$inject = [];\n\t\n\texports.default = leftPanelDateControl;\n\texports.LEFT_PANEL_DATE_CONTROL_DIRECTIVE = LEFT_PANEL_DATE_CONTROL_DIRECTIVE;\n\n/***/ },\n/* 42 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n Date format :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 43 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayLeftpanelCheckBoxControlTemplate = __webpack_require__(44);\n\t\n\tvar _edaDragDropWayLeftpanelCheckBoxControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelCheckBoxControlTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE = 'leftPanelCheckBoxControl';\n\t\n\tfunction leftPanelCheckBoxControl() {\n\t var directive = {\n\t restrict: 'E',\n\t template: _edaDragDropWayLeftpanelCheckBoxControlTemplate2.default\n\t };\n\t return directive;\n\t}\n\t\n\tleftPanelCheckBoxControl.$inject = [];\n\t\n\texports.default = leftPanelCheckBoxControl;\n\texports.LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE = LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE;\n\n/***/ },\n/* 44 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 45 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.LEFT_PANEL_BLANK_CONTROL_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayLeftpanelBlankControlTemplate = __webpack_require__(46);\n\t\n\tvar _edaDragDropWayLeftpanelBlankControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelBlankControlTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_BLANK_CONTROL_DIRECTIVE = 'leftPanelBlankControl';\n\t\n\tfunction leftPanelBlankControl() {\n\t var directive = {\n\t restrict: 'E',\n\t template: _edaDragDropWayLeftpanelBlankControlTemplate2.default\n\t };\n\t return directive;\n\t}\n\t\n\tleftPanelBlankControl.$inject = [];\n\t\n\texports.default = leftPanelBlankControl;\n\texports.LEFT_PANEL_BLANK_CONTROL_DIRECTIVE = LEFT_PANEL_BLANK_CONTROL_DIRECTIVE;\n\n/***/ },\n/* 46 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit :\\n \\n \\n
\\n
\\n
\\n
\\n Column will be blank\\n \\n \\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 47 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayLeftpanelBasicSelectControlTemplate = __webpack_require__(48);\n\t\n\tvar _edaDragDropWayLeftpanelBasicSelectControlTemplate2 = _interopRequireDefault(_edaDragDropWayLeftpanelBasicSelectControlTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE = 'leftPanelBasicSelectControl';\n\t\n\tfunction leftPanelBasicSelectControl() {\n\t var directive = {\n\t restrict: 'E',\n\t template: _edaDragDropWayLeftpanelBasicSelectControlTemplate2.default\n\t };\n\t return directive;\n\t}\n\t\n\tleftPanelBasicSelectControl.$inject = [];\n\t\n\texports.default = leftPanelBasicSelectControl;\n\texports.LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE = LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE;\n\n/***/ },\n/* 48 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n \\n Add new options :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n Edit/Remove options :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 49 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _edaDragDropWayFormlyProxyFormFieldManage = __webpack_require__(50);\n\t\n\tvar _edaDragDropWayFormlyProxyFormFieldManage2 = _interopRequireDefault(_edaDragDropWayFormlyProxyFormFieldManage);\n\t\n\tvar _edaDragDropWayFormlyProxyFormFieldManage3 = __webpack_require__(51);\n\t\n\tvar _edaDragDropWayFormlyProxyFormFieldManage4 = _interopRequireDefault(_edaDragDropWayFormlyProxyFormFieldManage3);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar FORMLY_PROXY_MODULE = '';\n\t\n\texports.default = angular.module(FORMLY_PROXY_MODULE, []).service(_edaDragDropWayFormlyProxyFormFieldManage.FORM_FIELD_MANAGE_SERVICE, _edaDragDropWayFormlyProxyFormFieldManage2.default).provider(_edaDragDropWayFormlyProxyFormFieldManage3.EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER, _edaDragDropWayFormlyProxyFormFieldManage4.default);\n\n/***/ },\n/* 50 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar FORM_FIELD_MANAGE_SERVICE = 'formFieldManage';\n\t\n\tvar formFieldManage = function () {\n\t function formFieldManage(EasyFormGenFormlyBindingModels) {\n\t _classCallCheck(this, formFieldManage);\n\t\n\t this.EasyFormGenFormlyBindingModels = EasyFormGenFormlyBindingModels;\n\t this.init();\n\t }\n\t\n\t _createClass(formFieldManage, [{\n\t key: 'init',\n\t value: function init() {}\n\t\n\t /**\n\t * At initial state : configuration model will contain 1 line, since :\n\t * -> it is non sense to create a form without a single line (no line = no form at all)\n\t * -> so it is non sense to force user to add a first line\n\t *\n\t * PLEASE NOTE columns array contains objects that look like formly fields one\n\t */\n\t\n\t }, {\n\t key: 'initConfigurationEditFromScratch',\n\t value: function initConfigurationEditFromScratch(configurationModel, addStepWayProperties) {\n\t var configurationModelInit = this.EasyFormGenFormlyBindingModels.getEasyFormInitialStateConfigurationModel(addStepWayProperties);\n\t angular.copy(configurationModelInit, configurationModel);\n\t }\n\t\n\t /**\n\t * Get an configuration empty (no init line) then empty it with lines array provided in param\n\t * @param object - configurationModel [configuration model]\n\t * @param array - lines [an array : lines to apply to an empty configuration model]\n\t * @param bool - addStepWayProperties [description]\n\t * @return {object message} [give details on how it happened to caller]\n\t */\n\t\n\t }, {\n\t key: 'bindConfigurationLines',\n\t value: function bindConfigurationLines(configurationModel, lines, addStepWayProperties) {\n\t if (Object.prototype.toString.call(lines) === '[object Array]') {\n\t var configurationModelResult = this.EasyFormGenFormlyBindingModels.getEasyFormReloadConfigurationModel(addStepWayProperties);\n\t configurationModelResult.lines = [].concat(lines);\n\t angular.copy(configurationModelResult, configurationModel);\n\t return this.getMessageObject('configuration model is bound', 'lines are bound to configuration model.');\n\t } else {\n\t return this.getErrorObject('lines is not an array', 'Checks lines type, it is not an array.');\n\t }\n\t }\n\t\n\t /**\n\t * applyConfigurationToformlyModel :\n\t * - bind configuration model into formly field model\n\t * - reset dataModel (formlyfield may have changed so previous dataModel would be false)\n\t * @param configurationModel\n\t * @param formlyModel\n\t * @param formlyDataModel\n\t */\n\t\n\t }, {\n\t key: 'applyConfigurationToformlyModel',\n\t value: function applyConfigurationToformlyModel(configurationModel, formlyModel, formlyDataModel) {\n\t this.resetFormlyModel(formlyModel);\n\t this.resetDataModel(formlyDataModel);\n\t var lineNumber = configurationModel.lines.length;\n\t for (var i = 0; i < lineNumber; i++) {\n\t this.AddNColumnControl(formlyModel, configurationModel, i);\n\t }\n\t }\n\t }, {\n\t key: 'resetFormlyModel',\n\t value: function resetFormlyModel(formlyModel) {\n\t var resetformly = [];\n\t angular.copy(resetformly, formlyModel);\n\t }\n\t }, {\n\t key: 'AddNColumnControl',\n\t value: function AddNColumnControl(formlyModel, configurationModel, lineIndex) {\n\t var _this = this;\n\t\n\t var numberOfColumns = configurationModel.lines[lineIndex].columns.length;\n\t /**\n\t * push formly model\n\t * here : only className and empty fieldGroup (controls != header)\n\t * if header will be reset to set a template (at least we have now indexFormlyModel)\n\t */\n\t var rawFormlyModel = {\n\t className: 'row',\n\t fieldGroup: []\n\t };\n\t //get index formlyModel for this line :\n\t var indexFormlyModel = formlyModel.push(rawFormlyModel) - 1;\n\t\n\t // iterates through controls in the line\n\t configurationModel.lines[lineIndex].columns.forEach(function (column) {\n\t var controlTemplate = {};\n\t if (typeof controlTemplate !== 'undefined' &&\n\t // column.control.type !== 'header' &&\n\t // column.control.type !== 'subTitle' &&\n\t column.control.type !== 'none') {\n\t /**\n\t * controls : getFormlyControlTemplateForNcolumnLine()\n\t *\n\t * @PARAM numberOfColumns : integer to deduce cssClss to apply\n\t * @PARAM column.control.type : to add if needed specific properties (example : datepicker)\n\t */\n\t if (column.control.type === 'header' || column.control.type === 'subTitle') {\n\t var headerTextContent = column.control.templateOptions.description;\n\t controlTemplate.template = _this.EasyFormGenFormlyBindingModels.getHeaderTemplateForNcolumnLine(numberOfColumns, headerTextContent).template;\n\t controlTemplate.className = _this.EasyFormGenFormlyBindingModels.getRawHeaderTemplates().selectedClass;\n\t } else {\n\t controlTemplate = _this.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(numberOfColumns, column.control.type);\n\t /**\n\t * NEED REFACTOR HERE\n\t * should bind properties dynamically\n\t *\n\t * TODO need to validate all controls (datepicker may not work)\n\t * need to refactor\n\t */\n\t controlTemplate.className = column.control.className;\n\t controlTemplate.type = column.control.type;\n\t controlTemplate.key = column.control.key;\n\t controlTemplate.templateOptions.type = column.control.templateOptions.type;\n\t controlTemplate.templateOptions.label = column.control.templateOptions.label;\n\t controlTemplate.templateOptions.required = column.control.templateOptions.required;\n\t controlTemplate.templateOptions.placeholder = column.control.templateOptions.placeholder;\n\t controlTemplate.templateOptions.description = column.control.templateOptions.description;\n\t controlTemplate.templateOptions.options = [].concat(column.control.templateOptions.options);\n\t\n\t if (typeof controlTemplate.templateOptions.datepickerPopup !== 'undefined') column.control.templateOptions.datepickerPopup = controlTemplate.templateOptions.datepickerPopup;\n\t }\n\t /**\n\t * popuplate properties\n\t */\n\t\n\t /**\n\t * push control into formly model in its group\n\t */\n\t\n\t /**\n\t * need to catch this random error\n\t */\n\t formlyModel[indexFormlyModel].fieldGroup.push(controlTemplate);\n\t }\n\t });\n\t }\n\t }, {\n\t key: 'isTemplateOptionDefined',\n\t value: function isTemplateOptionDefined(obj) {\n\t return typeof obj.templateOptions !== 'undefined' ? true : false;\n\t }\n\t }, {\n\t key: 'extractTemplateOptionLabel',\n\t value: function extractTemplateOptionLabel(obj) {\n\t return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.label !== 'undefined' ? obj.templateOptions.label : '' : '';\n\t }\n\t }, {\n\t key: 'extractTemplateOptionDatepickerPopup',\n\t value: function extractTemplateOptionDatepickerPopup(obj) {\n\t return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.datepickerPopup !== 'undefined' ? obj.templateOptions.datepickerPopup : '' : '';\n\t }\n\t }, {\n\t key: 'extractTemplateOptionRequired',\n\t value: function extractTemplateOptionRequired(obj) {\n\t return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.required !== 'undefined' ? obj.templateOptions.required : '' : '';\n\t }\n\t //radio and select\n\t\n\t }, {\n\t key: 'extractTemplateOptionOptions',\n\t value: function extractTemplateOptionOptions(obj) {\n\t return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.options !== 'undefined' ? obj.templateOptions.options : '' : '';\n\t }\n\t }, {\n\t key: 'extractTemplateOptionType',\n\t value: function extractTemplateOptionType(obj) {\n\t return typeof obj.subtype !== 'undefined' ? obj.subtype : '';\n\t }\n\t }, {\n\t key: 'extractTemplateOptionPlaceholder',\n\t value: function extractTemplateOptionPlaceholder(obj) {\n\t return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.placeholder !== 'undefined' ? obj.templateOptions.placeholder : '' : '';\n\t }\n\t }, {\n\t key: 'extractTemplateOptionDescription',\n\t value: function extractTemplateOptionDescription(obj) {\n\t return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.description !== 'undefined' ? obj.templateOptions.description : '' : '';\n\t }\n\t\n\t // formly model functions\n\t\n\t }, {\n\t key: 'resetDataModel',\n\t value: function resetDataModel(obj) {\n\t var emptyDataModel = {};\n\t angular.copy(emptyDataModel, obj);\n\t return true;\n\t }\n\t\n\t // custom errors\n\t\n\t }, {\n\t key: 'getErrorObject',\n\t value: function getErrorObject(errorTitle, errorMessage) {\n\t var messageObj = {\n\t noError: false,\n\t title: '',\n\t Message: ''\n\t };\n\t messageObj.noError = false;\n\t messageObj.title = errorTitle;\n\t messageObj.Message = errorMessage;\n\t return messageObj;\n\t }\n\t }, {\n\t key: 'getMessageObject',\n\t value: function getMessageObject(messageTitle, messageBody) {\n\t var messageObj = {\n\t noError: false,\n\t title: '',\n\t Message: ''\n\t };\n\t messageObj.noError = true;\n\t messageObj.title = messageTitle;\n\t messageObj.Message = messageBody;\n\t return messageObj;\n\t }\n\t }]);\n\t\n\t return formFieldManage;\n\t}();\n\t\n\tformFieldManage.$inject = ['EasyFormGenFormlyBindingModels'];\n\t\n\texports.default = formFieldManage;\n\texports.FORM_FIELD_MANAGE_SERVICE = FORM_FIELD_MANAGE_SERVICE;\n\n/***/ },\n/* 51 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER = undefined;\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tvar _edaDragDropWayFormlyProxyFormFieldManageProvider = __webpack_require__(52);\n\t\n\tvar helpers = _interopRequireWildcard(_edaDragDropWayFormlyProxyFormFieldManageProvider);\n\t\n\tfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\t\n\tvar EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER = 'EasyFormGenFormlyBindingModels';\n\t\n\tfunction EasyFormGenFormlyBindingModels() {\n\t\n\t var _easyFormListControls = helpers.initEasyFormListControls();\n\t var _easyFormEmptyConfigurationLineModel = helpers.initEasyFormEmptyConfigurationLineModel();\n\t var _emptyControlFieldModel = helpers.initEmptyControlFieldModel();\n\t var _easyFormInitialStateConfigurationModel = helpers.initEasyFormInitialStateConfigurationModel(_easyFormEmptyConfigurationLineModel);\n\t var _easyFormInitialStateConfigurationModelAddOnForStepWay = helpers.initEasyFormInitialStateConfigurationModelAddOnForStepWay();\n\t var _easyFormReloadConfigurationModel = helpers.initEasyFormReloadConfigurationModel();\n\t var _headerTemplates = helpers.initHeaderTemplates();\n\t var _formlyControlTemplates = helpers.initFormlyControlTemplates();\n\t var _particularControlProperties = helpers.initParticularControlProperties();\n\t\n\t this.getAllParticularControlProperties = getAllParticularControlProperties;\n\t this.addParticularControlProperties = addParticularControlProperties;\n\t this.getEasyFormListControls = getEasyFormListControls;\n\t this.addEasyFormControlToList = addEasyFormControlToList;\n\t this.getHeaderTemplates = getHeaderTemplates;\n\t this.addHeaderTemplateCssClass = addHeaderTemplateCssClass;\n\t this.getFormlyControlTemplate = getFormlyControlTemplate;\n\t this.addformlyControlTemplatesCssClass = addformlyControlTemplatesCssClass;\n\t this.setFormlyControlTemplate = setFormlyControlTemplate;\n\t this.$get = getFct;\n\t\n\t function getAllParticularControlProperties() {\n\t return _particularControlProperties;\n\t }\n\t\n\t function addParticularControlProperties(newParticularControlProperty) {\n\t // test object param has waited properties\n\t if ('controlType' in newParticularControlProperty && 'properties' in newParticularControlProperty) {\n\t var isAnUpdate = false;\n\t if (_particularControlProperties.length > 0) {\n\t _particularControlProperties.forEach(function (controlProp) {\n\t if (controlProp.controlType === newParticularControlProperty.controlType) {\n\t controlProp.properties = [].concat(newParticularControlProperty.properties);\n\t isAnUpdate = true;\n\t }\n\t });\n\t }\n\t if (!isAnUpdate) {\n\t _particularControlProperties.push(newParticularControlProperty);\n\t }\n\t }\n\t return _particularControlProperties;\n\t }\n\t\n\t function getEasyFormListControls() {\n\t return _easyFormListControls;\n\t }\n\t\n\t function addEasyFormControlToList(controlDeclaration) {\n\t if (typeof controlDeclaration !== 'undefined') {\n\t _easyFormListControls.controls.push(controlDeclaration);\n\t }\n\t }\n\t\n\t function getHeaderTemplates() {\n\t return _headerTemplates;\n\t }\n\t\n\t function addHeaderTemplateCssClass(cssClassToAdd) {\n\t if (typeof cssClassToAdd !== 'undefined') {\n\t _headerTemplates.cssClass.push(cssClassToAdd);\n\t }\n\t }\n\t\n\t function getFormlyControlTemplate() {\n\t return _formlyControlTemplates;\n\t }\n\t\n\t function addformlyControlTemplatesCssClass(cssClassToAdd) {\n\t if (typeof cssClassToAdd !== 'undefined') {\n\t _formlyControlTemplates.className.push(cssClassToAdd);\n\t }\n\t }\n\t\n\t function setFormlyControlTemplate(newFormlyControlTemplate) {\n\t if ('className' in newFormlyControlTemplate && 'type' in newFormlyControlTemplate && 'key' in newFormlyControlTemplate && 'templateOptions' in newFormlyControlTemplate) {\n\t _formlyControlTemplates = angular.copy(newFormlyControlTemplate);\n\t }\n\t return true;\n\t }\n\t\n\t getFct.$inject = [];\n\t function getFct() {\n\t var service = {\n\t getEasyFormListControls: getEasyFormListControlsFct,\n\t getEasyFormInitialStateConfigurationModel: getEasyFormInitialStateConfigurationModel,\n\t getEasyFormReloadConfigurationModel: getEasyFormReloadConfigurationModel,\n\t getEasyFormEmptyConfigurationLineModel: getEasyFormEmptyConfigurationLineModel,\n\t getEasyFormConfigurationEmptyControlModel: getEasyFormConfigurationEmptyControlModel,\n\t getRawHeaderTemplates: getRawHeaderTemplates,\n\t getHeaderTemplateForNcolumnLine: getHeaderTemplateForNcolumnLine,\n\t getRawFormlyControlTemplates: getRawFormlyControlTemplates,\n\t getFormlyControlTemplateForNcolumnLine: getFormlyControlTemplateForNcolumnLine\n\t };\n\t return service;\n\t\n\t function getEasyFormListControlsFct() {\n\t return _easyFormListControls;\n\t }\n\t\n\t function getEasyFormInitialStateConfigurationModel(addStepWayProperties) {\n\t var initialConfigurationModel = angular.copy(_easyFormInitialStateConfigurationModel);\n\t if (typeof addStepWayProperties !== 'undefined') {\n\t if (addStepWayProperties) {\n\t // add properties specific to step way\n\t angular.extend(initialConfigurationModel, _easyFormInitialStateConfigurationModelAddOnForStepWay);\n\t }\n\t }\n\t return initialConfigurationModel;\n\t }\n\t\n\t function getEasyFormReloadConfigurationModel(addStepWayProperties) {\n\t var initialConfigurationModel = angular.copy(_easyFormReloadConfigurationModel);\n\t if (typeof addStepWayProperties !== 'undefined') {\n\t if (addStepWayProperties) {\n\t // add properties specific to step way\n\t angular.extend(initialConfigurationModel, _easyFormInitialStateConfigurationModelAddOnForStepWay);\n\t }\n\t }\n\t return initialConfigurationModel;\n\t }\n\t\n\t function getEasyFormEmptyConfigurationLineModel() {\n\t return _easyFormEmptyConfigurationLineModel;\n\t }\n\t\n\t function getEasyFormConfigurationEmptyControlModel() {\n\t return _emptyControlFieldModel;\n\t }\n\t\n\t function getRawHeaderTemplates() {\n\t return _headerTemplates;\n\t }\n\t\n\t function getHeaderTemplateForNcolumnLine(nbColInLines, textContent) {\n\t if (typeof nbColInLines !== 'undefined' && typeof textContent !== 'undefined') {\n\t if (nbColInLines === parseInt(nbColInLines, 10)) {\n\t if (nbColInLines <= _headerTemplates.cssClass.length) {\n\t var headerToReturn = {};\n\t headerToReturn.className = _headerTemplates.cssClass[nbColInLines - 1];\n\t // header html property depends this property dont forget to set it before reading html property\n\t _headerTemplates.textContent = textContent;\n\t _headerTemplates.selectedClass = headerToReturn.className;\n\t headerToReturn.template = [_headerTemplates.simpleHtml1, textContent, _headerTemplates.simpleHtml2].join('');\n\t return headerToReturn;\n\t }\n\t }\n\t }\n\t }\n\t\n\t function getRawFormlyControlTemplates() {\n\t return _formlyControlTemplates;\n\t }\n\t\n\t function getFormlyControlTemplateForNcolumnLine(nbColInLines, controlType) {\n\t if (typeof nbColInLines !== 'undefined') {\n\t if (nbColInLines === parseInt(nbColInLines, 10)) {\n\t if (nbColInLines <= _formlyControlTemplates.className.length) {\n\t var _ret = function () {\n\t var controlToReturn = angular.copy(_formlyControlTemplates);\n\t controlToReturn.className = _formlyControlTemplates.className[nbColInLines - 1];\n\t // throw `it should have a bug upper line`;\n\t /* eslint no-console:0 */\n\t console.warn('it should have a bug upper line');\n\t /**\n\t * check controlType: it may require another particular property\n\t */\n\t if (typeof controlType !== 'undefined') {\n\t _particularControlProperties.forEach(function (controlProp) {\n\t if (controlProp.controlType === controlType) {\n\t /**\n\t * add all properties this controlType has\n\t * \n\t * NOTE : dot expression and bracket expression to access object property\n\t * http://www.ecma-international.org/ecma-262/5.1/#sec-11.2.1\n\t */\n\t controlProp.properties.forEach(function (aPropToAdd) {\n\t if (aPropToAdd.isRoot) controlToReturn[aPropToAdd.value] = '';\n\t if (aPropToAdd.isTemplateOptions) controlToReturn.templateOptions[aPropToAdd.value] = '';\n\t });\n\t }\n\t });\n\t }\n\t return {\n\t v: controlToReturn\n\t };\n\t }();\n\t\n\t if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t}\n\t\n\tEasyFormGenFormlyBindingModels.$inject = [];\n\t\n\texports.default = EasyFormGenFormlyBindingModels;\n\texports.EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER = EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER;\n\n/***/ },\n/* 52 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar initEasyFormListControls = exports.initEasyFormListControls = function initEasyFormListControls() {\n\t return {\n\t controls: [],\n\t selectedControl: 'none',\n\t temporyConfig: {\n\t selectedControl: 'none',\n\t formlyLabel: 'label',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyPlaceholder: '',\n\t formlyOptions: []\n\t }\n\t };\n\t};\n\t\n\tvar initEasyFormEmptyConfigurationLineModel = exports.initEasyFormEmptyConfigurationLineModel = function initEasyFormEmptyConfigurationLineModel() {\n\t return {\n\t line: 1,\n\t activeColumn: 1,\n\t columns: [{\n\t numColumn: 1,\n\t exist: true,\n\t control: {\n\t type: 'none',\n\t key: 'none'\n\t }\n\t }]\n\t };\n\t};\n\t\n\tvar initEmptyControlFieldModel = exports.initEmptyControlFieldModel = function initEmptyControlFieldModel() {\n\t return {\n\t 'control': {\n\t 'type': 'none',\n\t 'key': 'none'\n\t }\n\t };\n\t};\n\t\n\tvar initEasyFormInitialStateConfigurationModel = exports.initEasyFormInitialStateConfigurationModel = function initEasyFormInitialStateConfigurationModel(_easyFormEmptyConfigurationLineModel) {\n\t // commun all easy form generator ways\n\t return {\n\t submitButtonText: 'submit',\n\t cancelButtonText: 'cancel',\n\t lines: [].concat(_easyFormEmptyConfigurationLineModel)\n\t };\n\t};\n\t\n\tvar initEasyFormInitialStateConfigurationModelAddOnForStepWay = exports.initEasyFormInitialStateConfigurationModelAddOnForStepWay = function initEasyFormInitialStateConfigurationModelAddOnForStepWay() {\n\t // specific easy form generator — step way — (not drag and drop way), needed for wizard management\n\t return {\n\t activeLine: 1,\n\t listConfigStep: ['init', 'first', 'second', 'third'],\n\t stepIndicators: [true, false, false, false],\n\t configStepCounter: 0\n\t };\n\t};\n\t\n\tvar initEasyFormReloadConfigurationModel = exports.initEasyFormReloadConfigurationModel = function initEasyFormReloadConfigurationModel() {\n\t var reloadConfigModel = initEasyFormInitialStateConfigurationModel();\n\t reloadConfigModel.lines = [];\n\t return reloadConfigModel;\n\t};\n\t\n\t// can't use arrow function here -> 'this' would be bound to caller rather than expected current returned object... \n\tvar initHeaderTemplates = exports.initHeaderTemplates = function initHeaderTemplates() {\n\t var headerTemplate = {\n\t cssClass: ['col-xs-12', 'col-xs-6', 'col-xs-4'],\n\t textContent: '',\n\t html_part1: ['
', '
'].join(''),\n\t html_part3: this.textContent,\n\t html_part4: [' ', ' ', ' '].join(''),\n\t simpleHtml1: ['
'].join(''),\n\t simpleHtml2: [' ', ' '].join('')\n\t };\n\t return headerTemplate;\n\t};\n\t\n\tvar initFormlyControlTemplates = exports.initFormlyControlTemplates = function initFormlyControlTemplates() {\n\t return {\n\t className: ['col-xs-12', 'col-xs-6', 'col-xs-4'],\n\t type: '',\n\t key: '',\n\t templateOptions: {\n\t type: '',\n\t label: '',\n\t required: '',\n\t placeholder: '',\n\t description: '',\n\t options: ''\n\t }\n\t };\n\t};\n\t\n\tvar initParticularControlProperties = exports.initParticularControlProperties = function initParticularControlProperties() {\n\t return [{\n\t controlType: 'datepicker',\n\t properties: [{\n\t isRoot: false,\n\t isTemplateOptions: true,\n\t value: 'datepickerPopup'\n\t }]\n\t }];\n\t};\n\n/***/ },\n/* 53 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _edaDragDropWayDragdropDdContentCounter = __webpack_require__(54);\n\t\n\tvar _edaDragDropWayDragdropDdContentCounter2 = _interopRequireDefault(_edaDragDropWayDragdropDdContentCounter);\n\t\n\tvar _edaDragDropWayDragdropDdContentCounter3 = __webpack_require__(55);\n\t\n\tvar _edaDragDropWayDragdropDdContentCounter4 = _interopRequireDefault(_edaDragDropWayDragdropDdContentCounter3);\n\t\n\tvar _edaDragDropWayDragdropDdDecorContainer = __webpack_require__(56);\n\t\n\tvar _edaDragDropWayDragdropDdDecorContainer2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorContainer);\n\t\n\tvar _edaDragDropWayDragdropDdDecorContainer3 = __webpack_require__(58);\n\t\n\tvar _edaDragDropWayDragdropDdDecorContainer4 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorContainer3);\n\t\n\tvar _edaDragDropWayDragdropDdDecorDropZone = __webpack_require__(59);\n\t\n\tvar _edaDragDropWayDragdropDdDecorDropZone2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorDropZone);\n\t\n\tvar _edaDragDropWayDragdropDdDecorItem = __webpack_require__(61);\n\t\n\tvar _edaDragDropWayDragdropDdDecorItem2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorItem);\n\t\n\tvar _edaDragDropWayDragdropDdDecorItem3 = __webpack_require__(63);\n\t\n\tvar _edaDragDropWayDragdropDdDecorItem4 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorItem3);\n\t\n\tvar _edaDragDropWayDragdropDdDecorLine = __webpack_require__(64);\n\t\n\tvar _edaDragDropWayDragdropDdDecorLine2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorLine);\n\t\n\tvar _edaDragDropWayDragdropDdNoEditableControl = __webpack_require__(66);\n\t\n\tvar _edaDragDropWayDragdropDdNoEditableControl2 = _interopRequireDefault(_edaDragDropWayDragdropDdNoEditableControl);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar DRAGDROP_MODULE = 'edaDragDropWay.dragdrop.module'; /* global angular */\n\texports.default = angular.module(DRAGDROP_MODULE, []).directive(_edaDragDropWayDragdropDdContentCounter.DD_CONTENT_COUNTER_DIRECTIVE, _edaDragDropWayDragdropDdContentCounter2.default).controller(_edaDragDropWayDragdropDdDecorContainer3.DD_DECOR_CONTAINER_CONTROLLER_NAME, _edaDragDropWayDragdropDdDecorContainer4.default).directive(_edaDragDropWayDragdropDdDecorContainer.DD_DECOR_CONTAINER_DIRECTIVE, _edaDragDropWayDragdropDdDecorContainer2.default).directive(_edaDragDropWayDragdropDdDecorDropZone.DD_DECOR_DROPZONE_DIRECTIVE, _edaDragDropWayDragdropDdDecorDropZone2.default).directive(_edaDragDropWayDragdropDdDecorItem.DRAG_DROP_DECOR_ITEM, _edaDragDropWayDragdropDdDecorItem2.default).service(_edaDragDropWayDragdropDdDecorItem3.DRAG_DROP_ITEM_DECOR_SERVICE, _edaDragDropWayDragdropDdDecorItem4.default).directive(_edaDragDropWayDragdropDdNoEditableControl.DRAG_DROP_NO_EDITABLE_CONTROL, _edaDragDropWayDragdropDdNoEditableControl2.default).service(_edaDragDropWayDragdropDdContentCounter3.DRAG_DROP_ITEM_COUNTER_SERVICE, _edaDragDropWayDragdropDdContentCounter4.default).directive(_edaDragDropWayDragdropDdDecorLine.DRAG_DROP_DECOR_LINE, _edaDragDropWayDragdropDdDecorLine2.default);\n\n/***/ },\n/* 54 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar DD_CONTENT_COUNTER_DIRECTIVE = 'ddContentCounter';\n\t\n\tfunction ddContentCounter(dragDropItemCounterService, $timeout) {\n\t\tvar directive = {\n\t\t\trestrict: 'A',\n\t\t\tscope: {\n\t\t\t\tvalueWhenPlaceholder: '@ddValueWhenPlaceholder',\n\t\t\t\tvalueWhendragging: '@ddValueWhenDragging',\n\t\t\t\tfullModel: '=ddFullModel',\n\t\t\t\tcurrentIndex: '@ddContentCounterCurrentIndex',\n\t\t\t\tparentIndex: '@ddContentCounterParentIndex',\n\t\t\t\tforceRefresh: '=ddContentCounterForceCssRefresh'\n\t\t\t},\n\t\t\tlink: linkfct\n\t\t};\n\t\treturn directive;\n\t\n\t\tfunction linkfct($scope, element) {\n\t\t\tvar timer = void 0;\n\t\t\t// watch children length change : to update css item class\n\t\t\t$scope.$watch(function () {\n\t\t\t\treturn element[0].children.length;\n\t\t\t}, function (newValue, oldValue) {\n\t\t\t\tif (newValue !== oldValue) {\n\t\t\t\t\t(function () {\n\t\t\t\t\t\tvar newRealCount = 0;\n\t\t\t\t\t\tvar listClassForThisRow = [];\n\t\t\t\t\t\tfor (var i = element[0].children.length - 1; i >= 0; i--) {\n\t\t\t\t\t\t\tif (dragDropItemCounterService.isHtmlElementToCount(element[0].children[i].classList)) {\n\t\t\t\t\t\t\t\tnewRealCount++;\n\t\t\t\t\t\t\t\tlistClassForThisRow.push({ item: i, isReal: true });\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlistClassForThisRow.push({ item: i, isReal: false });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$scope.contentRealCount = newRealCount;\n\t\t\t\t\t\t// a timer otherwise won't refresh everytime\n\t\t\t\t\t\ttimer = $timeout(function () {\n\t\t\t\t\t\t\tdragDropItemCounterService.updateLineItemCss($scope.fullModel, listClassForThisRow, $scope.parentIndex, $scope.currentIndex, newRealCount);\n\t\t\t\t\t\t}, 20);\n\t\t\t\t\t})();\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\t$scope.$on('$destroy', function () {\n\t\t\t\t$timeout.cancel(timer);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tddContentCounter.$inject = ['dragDropItemCounterService', '$timeout'];\n\t\n\texports.default = ddContentCounter;\n\texports.DD_CONTENT_COUNTER_DIRECTIVE = DD_CONTENT_COUNTER_DIRECTIVE;\n\n/***/ },\n/* 55 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar DRAG_DROP_ITEM_COUNTER_SERVICE = 'dragDropItemCounterService';\n\t\n\tvar dragDropItemCounterService = function () {\n\t\tfunction dragDropItemCounterService(easyFormDragWayConfig) {\n\t\t\t_classCallCheck(this, dragDropItemCounterService);\n\t\n\t\t\tthis.easyFormDragWayConfig = easyFormDragWayConfig;\n\t\t\tthis.init();\n\t\t}\n\t\n\t\t_createClass(dragDropItemCounterService, [{\n\t\t\tkey: 'init',\n\t\t\tvalue: function init() {\n\t\t\t\tthis._modelItemRealCounter = [];\n\t\t\t\tthis._itemsNotToCount = angular.copy(this.easyFormDragWayConfig.getItemsNotToCount());\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'getItemsNotToCount',\n\t\t\tvalue: function getItemsNotToCount() {\n\t\t\t\treturn this._itemsNotToCount;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'getModelItemsRealCounter',\n\t\t\tvalue: function getModelItemsRealCounter() {\n\t\t\t\treturn this._modelItemRealCounter;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'isHtmlElementToCount',\n\t\t\tvalue: function isHtmlElementToCount(htmlvalue) {\n\t\t\t\tvar isToCount = true;\n\t\t\t\tif (htmlvalue.length > 0) {\n\t\t\t\t\tangular.forEach(this._itemsNotToCount, function (value) {\n\t\t\t\t\t\tfor (var classes = htmlvalue.length - 1; classes >= 0; classes--) {\n\t\t\t\t\t\t\tif (htmlvalue[classes] === value) isToCount = isToCount && false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn isToCount;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'updateLineItemCss',\n\t\t\tvalue: function updateLineItemCss(fullModel, listCssToApply, columIndex, lineIndex, realCount) {\n\t\t\t\tif (typeof fullModel !== 'undefined' && typeof listCssToApply !== 'undefined' && typeof columIndex !== 'undefined' && typeof lineIndex !== 'undefined' && typeof realCount !== 'undefined') {\n\t\t\t\t\tfor (var i = fullModel[columIndex][lineIndex].length - 1; i >= 0; i--) {\n\t\t\t\t\t\tfor (var j = 0; j < listCssToApply.length; j++) {\n\t\t\t\t\t\t\tif (listCssToApply[j].item === i && listCssToApply[j].isReal === true) {\n\t\t\t\t\t\t\t\tfullModel[columIndex][lineIndex][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(realCount);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}]);\n\t\n\t\treturn dragDropItemCounterService;\n\t}();\n\t\n\tdragDropItemCounterService.$inject = ['easyFormDragWayConfig'];\n\t\n\texports.default = dragDropItemCounterService;\n\texports.DRAG_DROP_ITEM_COUNTER_SERVICE = DRAG_DROP_ITEM_COUNTER_SERVICE;\n\n/***/ },\n/* 56 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.DD_DECOR_CONTAINER_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayDragdropDdDecorContainerTemplate = __webpack_require__(57);\n\t\n\tvar _edaDragDropWayDragdropDdDecorContainerTemplate2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorContainerTemplate);\n\t\n\tvar _edaDragDropWayDragdropDdDecorContainer = __webpack_require__(58);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t/* global angular */\n\tvar DD_DECOR_CONTAINER_DIRECTIVE = 'ddDecorContainer';\n\t\n\tfunction ddDecorContainer() {\n\t\tvar directive = {\n\t\t\trestrict: 'A',\n\t\t\ttemplate: _edaDragDropWayDragdropDdDecorContainerTemplate2.default,\n\t\t\tscope: {},\n\t\t\tcontroller: _edaDragDropWayDragdropDdDecorContainer.DD_DECOR_CONTAINER_CONTROLLER_NAME,\n\t\t\tcontrollerAs: _edaDragDropWayDragdropDdDecorContainer.DD_DECOR_CONTAINER_CONTROLLERAS_NAME,\n\t\t\tbindToController: {\n\t\t\t\t'styleParam': '=ddContainerProperties',\n\t\t\t\t'isStillCollapsed': '=ddContainerIsCollpased',\n\t\t\t\t'verboseMode': '@ddContainerVerboseMode',\n\t\t\t\t'currentIndex': '@ddContainerCurrentIndex',\n\t\t\t\t'collpaseAll': '&ddCollapseAll'\n\t\t\t},\n\t\t\ttransclude: true,\n\t\t\tlink: linkFct\n\t\t};\n\t\treturn directive;\n\t\n\t\tfunction linkFct($scope, element, attrs, ctrl, transclude) {\n\t\t\tvar verboseModeActive = $scope.ddDecorContainerCtrl.verboseMode;\n\t\t\tvar currentIndex = $scope.ddDecorContainerCtrl.currentIndex;\n\t\t\t$scope.ddDecorContainerCtrl.isCollapsed = false;\n\t\t\t$scope.ddDecorContainerCtrl.config.isEnabled = false;\n\t\t\t/**\n\t \t* forceCollapse when :\n\t \t* dragDropConfigModel.containerConfig.decoration.isCollapsed changed (here bound to $scope.isStillCollapsed)\n\t \t*/\n\t\t\t$scope.$watch(function () {\n\t\t\t\treturn $scope.ddDecorContainerCtrl.isStillCollapsed;\n\t\t\t}, function (newVal, oldVal) {\n\t\t\t\tif (newVal !== oldVal) {\n\t\t\t\t\tif ($scope.$parent.$parent.$index === 0) $scope.ddDecorContainerCtrl.isCollapsed = newVal;\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\t/**\n\t \t* verbose mode for developments only\n\t \t*/\n\t\t\tif (verboseModeActive !== '') {\n\t\t\t\tvar verbose = angular.lowercase(verboseModeActive);\n\t\t\t\tif (verbose === 'true' || verbose === '1') {\n\t\t\t\t\t/* eslint no-console:0 */\n\t\t\t\t\tconsole.dir({\n\t\t\t\t\t\twhoAmI: 'I am verbose from ddDecorContainer link',\n\t\t\t\t\t\tverbodeMode: verbose,\n\t\t\t\t\t\tParentParentIndex: $scope.$parent.$parent.$index,\n\t\t\t\t\t\tParentIndex: $scope.$parent.$index,\n\t\t\t\t\t\tcurrentIndex: currentIndex,\n\t\t\t\t\t\tstyleParam: $scope.ddDecorContainerCtrl.styleParam,\n\t\t\t\t\t\tcolumnindex: $scope.$parent.$parent.$parent.$parent.$index\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/**\n\t \t* no header (no title, no collapse....)\n\t \t*/\n\t\t\t//$scope.ddDecorContainerCtrl.config.isEnabled\n\t\t\tif (typeof currentIndex !== 'undefined') {\n\t\t\t\tif (currentIndex !== '') {\n\t\t\t\t\t/**\n\t \t* specific 1st column\n\t \t*/\n\t\t\t\t\tif (currentIndex === '0') {\n\t\t\t\t\t\t/**\n\t \t* apply title\n\t \t*/\n\t\t\t\t\t\tif (typeof $scope.ddDecorContainerCtrl.styleParam.title !== 'undefined') {\n\t\t\t\t\t\t\t$scope.ddDecorContainerCtrl.currentTitle = $scope.ddDecorContainerCtrl.styleParam.title;\n\t\t\t\t\t\t\t$scope.ddDecorContainerCtrl.config.isEnabled = true;\n\t\t\t\t\t\t\t$scope.ddDecorContainerCtrl.isCollapsed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/**\n\t \t* prevent transclusion creating child scope\n\t \t* want to know more about what I'm talking about : check this nice tip on the subject :\n\t \t* http://angular-tips.com/blog/2014/03/transclusion-and-scopes/\n\t \t*/\n\t\t\ttransclude($scope.$parent, function (contentClone) {\n\t\t\t\t/**\n\t \t* transclusion will append content to '
'\n\t \t*/\n\t\t\t\tvar childDiv = angular.element(element.children()[1]);\n\t\t\t\tchildDiv.append(contentClone);\n\t\t\t});\n\t\t}\n\t}\n\t\n\texports.default = ddDecorContainer;\n\texports.DD_DECOR_CONTAINER_DIRECTIVE = DD_DECOR_CONTAINER_DIRECTIVE;\n\n/***/ },\n/* 57 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n
\\n \\n \\n \\n \\n {{ddDecorContainerCtrl.currentTitle}}\\n \\n\\n\\n\"\n\n/***/ },\n/* 58 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t/* global angular */\n\tvar DD_DECOR_CONTAINER_CONTROLLER_NAME = 'ddDecorContainerController';\n\tvar DD_DECOR_CONTAINER_CONTROLLERAS_NAME = 'ddDecorContainerCtrl';\n\t\n\tvar ddDecorContainerController = function () {\n\t\tfunction ddDecorContainerController() {\n\t\t\t_classCallCheck(this, ddDecorContainerController);\n\t\n\t\t\tthis.init();\n\t\t}\n\t\n\t\t_createClass(ddDecorContainerController, [{\n\t\t\tkey: 'init',\n\t\t\tvalue: function init() {\n\t\t\t\tthis.config = angular.extend({}, { isEnabled: false });\n\t\t\t\t/**\n\t \t* TODO (low priority) : make icon css configurable (provider)\n\t \t*/\n\t\t\t\tthis.icons = angular.extend({}, {\n\t\t\t\t\tclosedClass: 'glyphicon glyphicon-eye-open',\n\t\t\t\t\topened: 'glyphicon glyphicon-eye-close'\n\t\t\t\t});\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'collapseFct',\n\t\t\tvalue: function collapseFct() {\n\t\t\t\tthis.collpaseAll({ exceptThisOne: this.styleParam.WhenIndex }); //note : collpaseAll function is boundToController from directive attribute : 'collpaseAll' : '&ddCollapseAll'\n\t\t\t\tthis.isCollapsed = !this.isCollapsed;\n\t\t\t\tthis.isStillCollapsed = this.isCollapsed; //note : isStillCollapsed is boundToController from directive attribute : 'isStillCollapsed' : '=ddContainerIsCollpased',\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'currentIconClass',\n\t\t\tvalue: function currentIconClass() {\n\t\t\t\tif (this.isCollapsed) {\n\t\t\t\t\treturn this.icons.closedClass;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.icons.opened;\n\t\t\t\t}\n\t\t\t}\n\t\t}]);\n\t\n\t\treturn ddDecorContainerController;\n\t}();\n\t\n\texports.default = ddDecorContainerController;\n\texports.DD_DECOR_CONTAINER_CONTROLLER_NAME = DD_DECOR_CONTAINER_CONTROLLER_NAME;\n\texports.DD_DECOR_CONTAINER_CONTROLLERAS_NAME = DD_DECOR_CONTAINER_CONTROLLERAS_NAME;\n\n/***/ },\n/* 59 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.DD_DECOR_DROPZONE_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayDragdropDdDecorDropZoneTemplate = __webpack_require__(60);\n\t\n\tvar _edaDragDropWayDragdropDdDecorDropZoneTemplate2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorDropZoneTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar DD_DECOR_DROPZONE_DIRECTIVE = 'ddDecorDropZone'; /* global angular */\n\t\n\t\n\tfunction ddDecorDropZone() {\n\t\tvar directive = {\n\t\t\trestrict: 'A',\n\t\t\ttemplate: _edaDragDropWayDragdropDdDecorDropZoneTemplate2.default,\n\t\t\tscope: {\n\t\t\t\t'styleParam': '=ddDropZoneProperties',\n\t\t\t\t'verboseMode': '@ddDropZoneVerboseMode',\n\t\t\t\t'currentIndex': '@ddDropZoneCurrentIndex',\n\t\t\t\t'addNewLineFct': '&ddDropZoneAddNewLine'\n\t\t\t},\n\t\t\ttransclude: true,\n\t\t\tlink: linkfct\n\t\t};\n\t\treturn directive;\n\t\n\t\tfunction linkfct($scope) {\n\t\n\t\t\tvar verboseModeActive = $scope.verboseMode;\n\t\t\tvar currentIndex = $scope.currentIndex;\n\t\n\t\t\t$scope.headerConfig = {\n\t\t\t\tHeaderButtonVisible: false,\n\t\t\t\taffixAttr: 'bs-affix',\n\t\t\t\taffixEnabled: false\n\t\t\t};\n\t\t\t/**\n\t \t* verbose mode : just for dev\n\t \t*/\n\t\t\tif (verboseModeActive !== '') {\n\t\t\t\tvar verbose = angular.lowercase(verboseModeActive);\n\t\t\t\tif (verbose === 'true' || verbose === '1') {\n\t\t\t\t\t/* eslint no-console:0 */\n\t\t\t\t\tconsole.dir({\n\t\t\t\t\t\twhoAmI: 'I am verbose from ddDecorDropZone link',\n\t\t\t\t\t\tverbodeMode: verbose,\n\t\t\t\t\t\tParentParentIndex: $scope.$parent.$parent.$index,\n\t\t\t\t\t\tParentIndex: $scope.$parent.$index,\n\t\t\t\t\t\tcurrentIndex: currentIndex,\n\t\t\t\t\t\tstyleParam: $scope.styleParam\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (typeof currentIndex !== 'undefined') {\n\t\t\t\tif (currentIndex !== '') {\n\t\t\t\t\t// apply title\n\t\t\t\t\tif (typeof $scope.styleParam.title !== 'undefined') $scope.currentTitle = $scope.styleParam.title;\n\t\t\t\t\t//apply font-awesome\n\t\t\t\t\tif (typeof $scope.styleParam.fontAwesomeIcon !== 'undefined') $scope.currentFontAwesome = $scope.styleParam.fontAwesomeIcon;\n\t\t\t\t\t//show add new line button\n\t\t\t\t\tif (currentIndex === '1') $scope.headerConfig.HeaderButtonVisible = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tddDecorDropZone.$inject = [];\n\t\n\texports.default = ddDecorDropZone;\n\texports.DD_DECOR_DROPZONE_DIRECTIVE = DD_DECOR_DROPZONE_DIRECTIVE;\n\n/***/ },\n/* 60 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n
\\n
\\n
\\n
\\n \\n {{currentTitle}}\\n \\n \\n \\n \\n add new line\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 61 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.DRAG_DROP_DECOR_ITEM = undefined;\n\t\n\tvar _edaDragDropWayDragdropDdDecorItemTemplate = __webpack_require__(62);\n\t\n\tvar _edaDragDropWayDragdropDdDecorItemTemplate2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorItemTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar DRAG_DROP_DECOR_ITEM = 'ddDecorItem';\n\t\n\tfunction ddDecorItem(easyFormDragWayConfig) {\n\t\tvar directive = {\n\t\t\trestrict: 'A',\n\t\t\tscope: {\n\t\t\t\t'verboseMode': '@ddItemVerboseMode',\n\t\t\t\t'currentIndex': '@ddItemCurrentIndex',\n\t\t\t\t'parentIndex': '@ddItemParentIndex',\n\t\t\t\t'parentParentIndex': '@ddItemParentParentIndex',\n\t\t\t\t'lineItemsCount': '@ddItemsCount',\n\t\t\t\t'cssClass': '@ddItemCssClass'\n\t\t\t},\n\t\t\ttemplate: _edaDragDropWayDragdropDdDecorItemTemplate2.default,\n\t\t\ttransclude: true,\n\t\t\tlink: linkfct\n\t\t};\n\t\treturn directive;\n\t\n\t\tfunction linkfct($scope, element, attrs, ctrl, transclude) {\n\t\t\tvar verboseModeActive = $scope.verboseMode;\n\t\t\tvar currentIndex = $scope.currentIndex;\n\t\t\tvar parentIndex = $scope.parentIndex;\n\t\t\tvar listClass = easyFormDragWayConfig.getDistinctItemCssClass();\n\t\n\t\t\t/**\n\t \t* init css class\n\t \t*/\n\t\t\tangular.forEach(listClass, function (css) {\n\t\t\t\treturn element.removeClass(css);\n\t\t\t});\n\t\t\telement.addClass($scope.cssClass);\n\t\t\t/**\n\t \t* update css class\n\t \t*/\n\t\t\t$scope.$watch('cssClass', function (newValue, oldValue) {\n\t\t\t\tif (newValue !== oldValue) {\n\t\t\t\t\t/**\n\t \t* update css class\n\t \t*/\n\t\t\t\t\tangular.forEach(listClass, function (css) {\n\t\t\t\t\t\treturn element.removeClass(css);\n\t\t\t\t\t});\n\t\t\t\t\telement.addClass(newValue);\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\t/**\n\t \t* verbose mode : just for dev \n\t \t*/\n\t\t\tif (verboseModeActive !== '') {\n\t\t\t\tvar verbose = angular.lowercase(verboseModeActive);\n\t\t\t\tif (verbose === 'true' || verbose === '1') {\n\t\t\t\t\t/* eslint no-console:0 */\n\t\t\t\t\tconsole.dir({\n\t\t\t\t\t\twhoAmI: 'I am verbose from ddDecorItem directive link',\n\t\t\t\t\t\tverbodeMode: verbose,\n\t\t\t\t\t\tParentParentIndex: $scope.$parent.$parent.$index,\n\t\t\t\t\t\tParentIndex: parentIndex,\n\t\t\t\t\t\tparentParentIndex: $scope.parentParentIndex,\n\t\t\t\t\t\tcurrentIndex: currentIndex,\n\t\t\t\t\t\tlineItemsCount: $scope.lineItemsCount\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t \t* control column : apply css class to item\n\t \t*/\n\t\t\tif ($scope.parentParentIndex === '0') element.addClass(listClass[0]);\n\t\t\t/**\n\t \t* prevent transclusion creating child scope \n\t \t*\n\t \t*\n\t \t* NOTE :if you want to know more about what I'm saying : check this nice tip on the subject : \n\t \t* http://angular-tips.com/blog/2014/03/transclusion-and-scopes/ \n\t \t*/\n\t\t\ttransclude($scope.$parent, function (contentClone) {\n\t\t\t\t/**\n\t \t* transclusion will append content to '
' \n\t \t*/\n\t\t\t\tvar childDiv = angular.element(element.children()[0]);\n\t\t\t\tchildDiv.append(contentClone);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tddDecorItem.$inject = ['easyFormDragWayConfig'];\n\t\n\texports.default = ddDecorItem;\n\texports.DRAG_DROP_DECOR_ITEM = DRAG_DROP_DECOR_ITEM;\n\n/***/ },\n/* 62 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n\"\n\n/***/ },\n/* 63 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar DRAG_DROP_ITEM_DECOR_SERVICE = 'dragDropItemDecorationService';\n\t\n\tvar dragDropItemDecorationService = function () {\n\t\tfunction dragDropItemDecorationService(easyFormDragWayConfig) {\n\t\t\t_classCallCheck(this, dragDropItemDecorationService);\n\t\n\t\t\tthis.easyFormDragWayConfig = easyFormDragWayConfig;\n\t\t\tthis.init();\n\t\t}\n\t\n\t\t_createClass(dragDropItemDecorationService, [{\n\t\t\tkey: 'init',\n\t\t\tvalue: function init() {\n\t\t\t\tthis._listItemClass = [].concat(this.easyFormDragWayConfig.getListItemCssClass());\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'getListClass',\n\t\t\tvalue: function getListClass() {\n\t\t\t\treturn this._listItemClass;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'getCssClassWhenNumberItemsInRowIs',\n\t\t\tvalue: function getCssClassWhenNumberItemsInRowIs(thisNumber) {\n\t\t\t\treturn this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(thisNumber);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'applyCssClassWholeLine',\n\t\t\tvalue: function applyCssClassWholeLine(model, indexColumn, indexLine, numberItems, restrictToThisIndexColumn) {\n\t\t\t\tif (typeof numberItems !== 'undefined' && typeof indexLine !== 'undefined' && typeof indexColumn !== 'undefined' && typeof model !== 'undefined' && typeof restrictToThisIndexColumn !== 'undefined') {\n\t\t\t\t\tif (indexColumn === restrictToThisIndexColumn) {\n\t\t\t\t\t\tfor (var i = model[indexColumn][indexLine].length - 1; i >= 0; i--) {\n\t\t\t\t\t\t\tmodel[indexColumn][indexLine][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(numberItems);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'updateCssClassWholeColumn',\n\t\t\tvalue: function updateCssClassWholeColumn(model, indexColumn) {\n\t\t\t\tif (typeof indexColumn !== 'undefined' && typeof model !== 'undefined') {\n\t\t\t\t\tfor (var cpt = model[indexColumn].length - 1; cpt >= 0; cpt--) {\n\t\t\t\t\t\tfor (var i = model[indexColumn][cpt].length - 1; i >= 0; i--) {\n\t\t\t\t\t\t\tmodel[indexColumn][cpt][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(model[indexColumn][cpt].length);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}]);\n\t\n\t\treturn dragDropItemDecorationService;\n\t}();\n\t\n\tdragDropItemDecorationService.$inject = ['easyFormDragWayConfig'];\n\t\n\texports.default = dragDropItemDecorationService;\n\texports.DRAG_DROP_ITEM_DECOR_SERVICE = DRAG_DROP_ITEM_DECOR_SERVICE;\n\n/***/ },\n/* 64 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.DRAG_DROP_DECOR_LINE = undefined;\n\t\n\tvar _edaDragDropWayDragdropDdDecorLineTemplate = __webpack_require__(65);\n\t\n\tvar _edaDragDropWayDragdropDdDecorLineTemplate2 = _interopRequireDefault(_edaDragDropWayDragdropDdDecorLineTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar DRAG_DROP_DECOR_LINE = 'ddDecorLine'; /* global angular */\n\t\n\t\n\tfunction ddDecorLine($timeout) {\n\t\tvar directive = {\n\t\t\trestrict: 'A',\n\t\t\tscope: {\n\t\t\t\t'verboseMode': '@ddLineVerboseMode',\n\t\t\t\t'currentIndex': '@ddLineCurrentIndex',\n\t\t\t\t'parentIndex': '@ddLineParentIndex',\n\t\t\t\t'removeLine': '&ddRemoveLine'\n\t\t\t},\n\t\t\ttemplate: _edaDragDropWayDragdropDdDecorLineTemplate2.default,\n\t\t\ttransclude: true,\n\t\t\tlink: linkfct\n\t\t};\n\t\treturn directive;\n\t\n\t\tfunction linkfct($scope, element, attrs, ctrl, transclude) {\n\t\t\tvar verboseModeActive = $scope.verboseMode;\n\t\t\tvar currentIndex = $scope.currentIndex;\n\t\t\tvar parentIndex = $scope.parentIndex;\n\t\t\t$scope.deleteLine = {};\n\t\t\t$scope.deleteLine.readyToDelete = false;\n\t\t\t$scope.deleteLine.dblClickCount = 0;\n\t\t\t$scope.isCollapsed = false;\n\t\t\tvar timer = void 0;\n\t\n\t\t\t// verbose mode : just for dev \n\t\t\tif (verboseModeActive !== '') {\n\t\t\t\tvar verbose = angular.lowercase(verboseModeActive);\n\t\t\t\tif (verbose === 'true' || verbose === '1') {\n\t\t\t\t\t/* eslint no-console:0 */\n\t\t\t\t\tconsole.dir({\n\t\t\t\t\t\twhoAmI: 'I am verbose from ddDecorLine directive link',\n\t\t\t\t\t\tverbodeMode: verbose,\n\t\t\t\t\t\tParentParentIndex: $scope.$parent.$parent.$index,\n\t\t\t\t\t\tParentIndex: parentIndex,\n\t\t\t\t\t\tcurrentIndex: currentIndex\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/**\n\t \t* removeMe is function related to twice double click sequence to delete a line\n\t \t*\n\t \t* - addClass / remove/class ; will make line in a shake movement\n\t \t* - call \"removeLine function to delete the line (if it was rwice double clicked)\n\t \t*/\n\t\t\t$scope.removeMe = function (event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\n\t\t\t\tif ($scope.parentIndex === '1') {\n\t\t\t\t\t//2nd dbl click : if is shaking so it is confirmation to delete\n\t\t\t\t\tif ($scope.deleteLine.dblClickCount === 1) {\n\t\t\t\t\t\t$scope.deleteLine.dblClickCount = 0;\n\t\t\t\t\t\t$scope.deleteLine.readyToDelete = false;\n\t\t\t\t\t\t/**\n\t \t* NOTE : trick in calling parent controller function with input param when directive with isolate scope\n\t \t* see : https://thinkster.io/egghead/isolate-scope-am\n\t \t*\n\t \t* Here should be:\n\t \t* \n\t \t*-> in html : dd-remove-line=\"removeThisLine(indexToDelete)\n\t \t*-> in controller : $scope.removeThisLine = function(lineIndex){\n\t \t*-> so in directive call it : $scope.removeLine({indexToDelete: currentIndex});\n\t \t*\n\t \t*\n\t \t* BUT in this case (repeats, ul> li.... complicated) \n\t \t* => works better (if shaking a lot of line in a row it won't mess up)\n\t \t*\n\t \t*-> in html : dd-remove-line=\"removeThisLine($index)\n\t \t*-> in controller : $scope.removeThisLine = function(lineIndex){\n\t \t*-> so in directive call it : $scope.removeLine();\n\t \t*/\n\t\t\t\t\t\t//$scope.removeLine({indexToDelete: currentIndex});\n\t\t\t\t\t\t$scope.removeLine();\n\t\t\t\t\t\t//console.warn('force timer destruction after delete!');\n\t\t\t\t\t\t$timeout.cancel(timer);\n\t\t\t\t\t}\n\t\n\t\t\t\t\t//1st dbl click : make it shake so ready to delete\n\t\t\t\t\tif ($scope.deleteLine.dblClickCount === 0) {\n\t\t\t\t\t\t$scope.deleteLine.dblClickCount = $scope.deleteLine.dblClickCount + 1;\n\t\t\t\t\t\t$scope.deleteLine.readyToDelete = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t\t/**\n\t \t* signle event will ever occur\n\t \t*\n\t \t* to prevent it to interfere with double click sequence \n\t \t* -> set a time out (shaking line to delete will automaticallly end shaking after timeout : 2 seconds)\n\t \t*/\n\t\t\t$scope.cancelDelete = function () {\n\t\t\t\t//event.preventDefault();\n\t\t\t\t//event.stopPropagation();\n\t\t\t\ttimer = $timeout(function () {\n\t\t\t\t\t$scope.deleteLine.dblClickCount = 0;\n\t\t\t\t\t$scope.deleteLine.readyToDelete = false;\n\t\t\t\t}, 500);\n\t\n\t\t\t\t/**\n\t \t* debug\n\t \t*/\n\t\t\t\t// timer.then(\n\t\t\t\t// () =>{\n\t\t\t\t// console.log( 'Timer resolved!', Date.now() );\n\t\t\t\t// },\n\t\t\t\t// () =>{\n\t\t\t\t// console.log( 'Timer rejected!', Date.now() );\n\t\t\t\t// }\n\t\t\t\t// );\n\t\t\t};\n\t\n\t\t\t/**\n\t \t* timer destruction to prevent from bad UI experience\n\t \t*/\n\t\t\t$scope.$on('$destroy', function () {\n\t\t\t\treturn $timeout.cancel(timer);\n\t\t\t});\n\t\n\t\t\t/**\n\t \t* prevent transclusion creating child scope \n\t \t*\n\t \t*\n\t \t* NOTE :if you want to know more about what I'm saying : check this nice tip on the subject : \n\t \t* http://angular-tips.com/blog/2014/03/transclusion-and-scopes/ \n\t \t*/\n\t\t\ttransclude($scope.$parent, function (contentClone) {\n\t\t\t\t//transclusion will append content to '
'\n\t\t\t\tvar childDiv = angular.element(element.children()[0]);\n\t\t\t\tchildDiv.append(contentClone);\n\t\t\t});\n\t\t}\n\t}\n\t\n\tddDecorLine.$inject = ['$timeout'];\n\t\n\texports.default = ddDecorLine;\n\texports.DRAG_DROP_DECOR_LINE = DRAG_DROP_DECOR_LINE;\n\n/***/ },\n/* 65 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n \\n \\n \\n \\n
\\n
\\n\"\n\n/***/ },\n/* 66 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar DRAG_DROP_NO_EDITABLE_CONTROL = 'ddNoEditableControl';\n\t\n\tfunction ddNoEditableControl() {\n\t\tvar directive = {\n\t\t\trestrict: 'A',\n\t\t\tlink: linkfct\n\t\t};\n\t\treturn directive;\n\t\n\t\tfunction linkfct($scope, element) {\n\t\t\telement.on('click', function (event) {\n\t\t\t\treturn event.preventDefault();\n\t\t\t});\n\t\t}\n\t}\n\t\n\tddNoEditableControl.$inject = [];\n\t\n\texports.default = ddNoEditableControl;\n\texports.DRAG_DROP_NO_EDITABLE_CONTROL = DRAG_DROP_NO_EDITABLE_CONTROL;\n\n/***/ },\n/* 67 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _edaDragDropWayRightClick = __webpack_require__(68);\n\t\n\tvar _edaDragDropWayRightClick2 = _interopRequireDefault(_edaDragDropWayRightClick);\n\t\n\tvar _edaDragDropWayRightClick3 = __webpack_require__(69);\n\t\n\tvar _edaDragDropWayRightClick4 = _interopRequireDefault(_edaDragDropWayRightClick3);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar EDA_RIGHT_CLICK_MODULE = 'eda.right.click.module';\n\t\n\texports.default = angular.module(EDA_RIGHT_CLICK_MODULE, []).directive(_edaDragDropWayRightClick.EDA_RIGHT_CLICK_DIRECTIVE, _edaDragDropWayRightClick2.default).service(_edaDragDropWayRightClick3.EDA_RIGHT_CLICKED_MANAGER_SERVICE, _edaDragDropWayRightClick4.default);\n\n/***/ },\n/* 68 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar EDA_RIGHT_CLICK_DIRECTIVE = 'edaRightClick';\n\t\n\tfunction edaRightClick($parse) {\n\t\n\t var directive = {\n\t restrict: 'A',\n\t link: linkFct\n\t };\n\t return directive;\n\t\n\t function linkFct(scope, element, attrs) {\n\t var fn = $parse(attrs.edaRightClick);\n\t var columnIndex = $parse(attrs.edaRightClickColIndex);\n\t var fctSetRightclicked = $parse(attrs.edaSetRightClicked);\n\t /**\n\t * on right click event manage\n\t * - open edit panel through attrs.edaRightClick function\n\t * - set rightCliked attribute (to true) to control (in dragDropModel)\n\t */\n\t element.on('contextmenu', function (event) {\n\t scope.$apply(function () {\n\t event.preventDefault();\n\t if (columnIndex(scope) === 1) fctSetRightclicked(scope, {}); //right click limited to template column (index = 1)\n\t if (columnIndex(scope) === 1) fn(scope, { $event: event }); //right click limited to template column (index = 1)\n\t });\n\t });\n\t }\n\t}\n\t\n\tedaRightClick.$inject = ['$parse'];\n\t\n\texports.default = edaRightClick;\n\texports.EDA_RIGHT_CLICK_DIRECTIVE = EDA_RIGHT_CLICK_DIRECTIVE;\n\n/***/ },\n/* 69 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDA_RIGHT_CLICKED_MANAGER_SERVICE = 'ddItemRightClickedManager';\n\t\n\tvar ddItemRightClickedManager = function () {\n\t\tfunction ddItemRightClickedManager() {\n\t\t\t_classCallCheck(this, ddItemRightClickedManager);\n\t\n\t\t\tthis.init();\n\t\t}\n\t\n\t\t_createClass(ddItemRightClickedManager, [{\n\t\t\tkey: 'init',\n\t\t\tvalue: function init() {}\n\t\n\t\t\t/**\n\t \t* setUnRightClicked \n\t \t* set unSelected (see edaRightClick directive)\n\t \t*\n\t \t* used in edaEditcontroller when droping control\n\t \t*/\n\t\n\t\t}, {\n\t\t\tkey: 'setUnRightClicked',\n\t\t\tvalue: function setUnRightClicked(dragDropModelItem) {\n\t\t\t\tdragDropModelItem.rightCliked = false;\n\t\t\t}\n\t\n\t\t\t/**\n\t \t* resetAllDragDropItemSelectedState\n\t \t*\n\t \t* simply reset (=set to false) all item.rightCliked \n\t \t* in edit column (dragable column)\n\t \t*\n\t \t* used in edaEditPanel when closeEditPanel() called\n\t \t*/\n\t\n\t\t}, {\n\t\t\tkey: 'resetAllDragDropItemSelectedState',\n\t\t\tvalue: function resetAllDragDropItemSelectedState(dragDropModel) {\n\t\t\t\tangular.forEach(dragDropModel[1], function (line) {\n\t\t\t\t\tangular.forEach(line, function (item) {\n\t\t\t\t\t\treturn item.rightCliked = false;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}]);\n\t\n\t\treturn ddItemRightClickedManager;\n\t}();\n\t\n\tddItemRightClickedManager.$inject = [];\n\t\n\texports.default = ddItemRightClickedManager;\n\texports.EDA_RIGHT_CLICKED_MANAGER_SERVICE = EDA_RIGHT_CLICKED_MANAGER_SERVICE;\n\n/***/ },\n/* 70 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _edaDragDropWayConfigurationModelProxy = __webpack_require__(71);\n\t\n\tvar _edaDragDropWayConfigurationModelProxy2 = _interopRequireDefault(_edaDragDropWayConfigurationModelProxy);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar EDA_CONFIG_PROXY_MODULE = 'eda.config.proxy.module';\n\t\n\texports.default = angular.module(EDA_CONFIG_PROXY_MODULE, []).service(_edaDragDropWayConfigurationModelProxy.DRAG_DROP_CONFIG_PROXY_SERVICE, _edaDragDropWayConfigurationModelProxy2.default);\n\n/***/ },\n/* 71 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar DRAG_DROP_CONFIG_PROXY_SERVICE = 'ddModelConfModelProxyService';\n\t\n\tvar ddModelConfModelProxyService = function () {\n\t function ddModelConfModelProxyService(EasyFormGenFormlyBindingModels,\n\t // controllerModalProxy, \n\t // dragDropConfig, \n\t easyFormDragWayConfig, $parse) {\n\t _classCallCheck(this, ddModelConfModelProxyService);\n\t\n\t this.EasyFormGenFormlyBindingModels = EasyFormGenFormlyBindingModels;\n\t // this.controllerModalProxy = controllerModalProxy;\n\t // this.dragDropConfig = dragDropConfig;\n\t this.easyFormDragWayConfig = easyFormDragWayConfig;\n\t this.$parse = $parse;\n\t this.init();\n\t }\n\t\n\t _createClass(ddModelConfModelProxyService, [{\n\t key: 'init',\n\t value: function init() {}\n\t }, {\n\t key: 'refreshAllConfigurationFromDragAndDropModel',\n\t value: function refreshAllConfigurationFromDragAndDropModel(configModel, ddModel) {\n\t var _this = this;\n\t\n\t /**\n\t * TODO : prevent reset already set props\n\t * \n\t * previousConfigurationModel = a backup of configuration model 'configModel 'before resetting it\n\t * -> dragDrop model contains unique keys of already existing controls : these controls must not be reset / overwritten \n\t */\n\t // let previousConfigurationModel = angular.copy(configModel); \n\t configModel.lines = [];\n\t // iterates line config model\n\t angular.forEach(ddModel[1], function (lineValue, keyValue) {\n\t // add empty line 1st - if line is empty -> it will be enough \n\t configModel.lines.push(angular.copy(_this.EasyFormGenFormlyBindingModels.getEasyFormEmptyConfigurationLineModel()));\n\t // update line value field\n\t _this.applyThisLine(keyValue + 1, keyValue, configModel);\n\t // iterate through columns and add them if control exists\t\n\t angular.forEach(lineValue, function (colValue, colIndex) {\n\t // push an empty control model but relative to dradrop : model control type - (if datepicker so additionnal properties are added) \t\n\t var controlToBind = {\n\t control: angular.copy(_this.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(lineValue.length, _this.getFormlyDetailedControlModelFromDragDropObject(lineValue[colIndex]).formlyType))\n\t };\n\t var formlyDetailedControlModel = _this.getFormlyDetailedControlModelFromDragDropObject(lineValue[colIndex]);\n\t // controls alreadys existed so do not reset it - control to bind is the previous one\t\t\n\t if (typeof colValue.key !== 'undefined') {\n\t //console.warn('debug dragdropModel show this control key : ' + colValue.key);\n\t controlToBind.control = angular.copy(colValue.configModelControl);\n\t //update cssClass depending new position:\n\t var newClassName = _this.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(lineValue.length, _this.getFormlyDetailedControlModelFromDragDropObject(lineValue[colIndex]).formlyType);\n\t controlToBind.control.className = newClassName.className;\n\t //test if header nee this one\n\t controlToBind.control.cssClass = newClassName.className;\n\t // get control details for this key in backup : previousConfigurationModel\n\t } else {\n\t // controls did not exists before : control to bind is a new one\n\t // bind dragdrop control properties to configuration model through controlToBind var\n\t _this.bindConfigCtrlModelFromFormlyDetailedCtrlModel(formlyDetailedControlModel, controlToBind, configModel);\n\t }\n\t // apply controlToBind var to configuration model control\n\t if (typeof configModel.lines[keyValue].columns[colIndex] === 'undefined') configModel.lines[keyValue].columns.push(angular.copy(_this.EasyFormGenFormlyBindingModels.getEasyFormConfigurationEmptyControlModel()));\n\t configModel.lines[keyValue].columns[colIndex].control = angular.copy(controlToBind.control);\n\t configModel.lines[keyValue].columns[colIndex].numColumn = colIndex + 1;\n\t configModel.lines[keyValue].columns[colIndex].exist = true;\n\t });\n\t });\n\t return configModel;\n\t }\n\t }, {\n\t key: 'refreshControlsKeys',\n\t value: function refreshControlsKeys(configModel, dragDropModel) {\n\t angular.forEach(configModel.lines, function (aConfigLine, aConfigLineIndex) {\n\t angular.forEach(aConfigLine.columns, function (aConfigControl, aConfigControlIndex) {\n\t //if last control removed from line - and dragDrop model did not already removed this line\n\t if (typeof dragDropModel[1][aConfigLineIndex] !== 'undefined') {\n\t if (dragDropModel[1][aConfigLineIndex].length > 0) {\n\t dragDropModel[1][aConfigLineIndex][aConfigControlIndex].key = aConfigControl.control.key;\n\t //need to save all in dragdropModel as it is a reference\n\t //configModel still needed \n\t // -> to keep coherence (same back model) between all version of easyForm Generator\n\t // -> is the back model (can be saved to dataBase)\n\t dragDropModel[1][aConfigLineIndex][aConfigControlIndex].configModelControl = angular.copy(aConfigControl.control);\n\t }\n\t }\n\t });\n\t });\n\t }\n\t\n\t /**\n\t * drag drop model\n\t * -> will be used to bind configuration model\n\t * \tof no key saved, configuration model controls would be reset each drop events\n\t * \n\t * -> matching key : will prevent to reset existing control\n\t */\n\t\n\t }, {\n\t key: 'loadDragDropModelFromConfigurationModel',\n\t value: function loadDragDropModelFromConfigurationModel(configModel, dragDropModel) {\n\t var _this2 = this;\n\t\n\t //reset dragdrop fields model NOT all dragDropModel!\n\t dragDropModel[1] = [];\n\t angular.forEach(configModel.lines, function (aConfigLine, aConfigLineIndex) {\n\t //add new line\n\t dragDropModel[1].push([]);\n\t angular.forEach(aConfigLine.columns, function (aConfigControl) {\n\t // get control type from configuration.control.selectedControl\n\t var dragdropControlRef = {\n\t control: 'empty',\n\t cssClass: 'col-xs-12',\n\t label: ''\n\t };\n\t angular.forEach(dragDropModel[0], function (groupOfCtrlRef) {\n\t angular.forEach(groupOfCtrlRef, function (aCtrlref) {\n\t if (aCtrlref.control === aConfigControl.control.selectedControl) dragdropControlRef = angular.copy(aCtrlref);\n\t });\n\t });\n\t dragDropModel[1][aConfigLineIndex].push(dragdropControlRef);\n\t //update class depending number of control per line\n\t var cssClassToApply = _this2.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(dragDropModel[1][aConfigLineIndex].length);\n\t angular.forEach(dragDropModel[1][aConfigLineIndex], function (ddControlToUpdate) {\n\t return ddControlToUpdate.cssClass = cssClassToApply;\n\t });\n\t });\n\t });\n\t // console.info('bindDragDropModelFromConfigurationModel');\n\t // console.dir(\t\n\t // \t\t\t\t\t\t\t{\n\t // \t\t\t\t\t\t\t\t\t'when' \t\t\t\t\t\t\t: 'starting',\n\t // \t\t\t\t\t\t\t\t\t'configModel is ' \t: angular.copy(configModel),\n\t // \t\t\t\t\t\t\t\t\t'dragDropModel is ' : angular.copy(dragDropModel)\n\t // \t\t\t\t\t\t\t}\n\t // \t\t\t\t\t\t); \n\t }\n\t\n\t /**\n\t * returns a control model that is more formly detailed\n\t * (more formly detailed : see controls property in EasyFormGenFormlyBindingModels._easyFormListControls)\n\t */\n\t\n\t }, {\n\t key: 'getFormlyDetailedControlModelFromDragDropObject',\n\t value: function getFormlyDetailedControlModelFromDragDropObject(dragDrapCtrlModel) {\n\t var controlModel = {};\n\t var listControl = this.EasyFormGenFormlyBindingModels.getEasyFormListControls();\n\t var controlsListGetter = this.$parse('controls');\n\t\n\t angular.forEach(controlsListGetter(listControl), function (ctrlListValue) {\n\t if (ctrlListValue.id === dragDrapCtrlModel.control) controlModel = ctrlListValue;\n\t });\n\t return controlModel;\n\t }\n\t\n\t /**\n\t * valid a control key is unique\n\t *\n\t * yes... function name already told us that, \n\t * -> it's just confirmation and to see if\n\t * you keep focus while reading it ^^\n\t */\n\t\n\t }, {\n\t key: 'validKeyUniqueness',\n\t value: function validKeyUniqueness(thisKey, configurationObj) {\n\t var isUnique = true;\n\t for (var i = configurationObj.lines.length - 1; i >= 0; i--) {\n\t for (var j = configurationObj.lines[i].columns.length - 1; j >= 0; j--) {\n\t if (typeof configurationObj.lines[i].columns[j].control !== 'undefined') {\n\t if (configurationObj.lines[i].columns[j].control.key === thisKey) {\n\t isUnique = false;\n\t }\n\t }\n\t }\n\t }\n\t return isUnique;\n\t }\n\t }, {\n\t key: 'createUniqueKey',\n\t value: function createUniqueKey(baseKeyValue, configurationObj) {\n\t // unique key (set only first time) in this model is formly control type + Date.now(); \n\t var newKey = baseKeyValue + '-' + Date.now();\n\t if (this.validKeyUniqueness(newKey, configurationObj) === true) {\n\t return newKey;\n\t } else {\n\t newKey = baseKeyValue + '-' + Date.now();\n\t if (this.validKeyUniqueness(newKey, configurationObj) === true) {\n\t return newKey;\n\t } else {\n\t newKey = baseKeyValue + '-' + Date.now();\n\t return newKey;\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'applyThisLine',\n\t value: function applyThisLine(linevalue, lineIndex, configModel) {\n\t angular.forEach(configModel.lines, function (aLineValue, aLineKey) {\n\t if (aLineKey === lineIndex) aLineValue.line = linevalue;\n\t });\n\t }\n\t\n\t /**\n\t * bind formly detailed model to configuration control model\n\t */\n\t\n\t }, {\n\t key: 'bindConfigCtrlModelFromFormlyDetailedCtrlModel',\n\t value: function bindConfigCtrlModelFromFormlyDetailedCtrlModel(formlyDetailCtrlModel, configurationCtrlModel, configModel) {\n\t /**\n\t * TODO :properties should be served by provider \n\t * more configurable without pain\n\t */\n\t //set selected control :\n\t this.$parse('control.selectedControl').assign(configurationCtrlModel, this.$parse('selectedControl')(formlyDetailCtrlModel));\n\t //set type :\t\n\t this.$parse('control.type').assign(configurationCtrlModel, this.$parse('formlyType')(formlyDetailCtrlModel));\n\t //set key :\t\n\t this.$parse('control.key').assign(configurationCtrlModel, this.createUniqueKey(this.$parse('control.type')(configurationCtrlModel), configModel));\n\t //set subtype :\t\n\t this.$parse('control.subtype').assign(configurationCtrlModel, this.$parse('formlySubtype')(formlyDetailCtrlModel));\n\t //set templateOptions.label :\t\n\t this.$parse('control.templateOptions.label').assign(configurationCtrlModel, this.$parse('formlyLabel')(formlyDetailCtrlModel));\n\t //set templateOptions.required :\t\n\t this.$parse('control.templateOptions.required').assign(configurationCtrlModel, this.$parse('formlyRequired')(formlyDetailCtrlModel));\n\t //set templateOptions.required :\t\n\t this.$parse('control.templateOptions.description').assign(configurationCtrlModel, this.$parse('formlyDescription')(formlyDetailCtrlModel));\n\t //set templateOptions.required :\t\n\t this.$parse('control.templateOptions.placeholder').assign(configurationCtrlModel, this.$parse('formlyPlaceholder')(formlyDetailCtrlModel));\n\t //set templateOptions.required :\t\n\t this.$parse('control.templateOptions.options').assign(configurationCtrlModel, this.$parse('formlyOptions')(formlyDetailCtrlModel));\n\t\n\t if (this.$parse('control.type')(configurationCtrlModel) === 'datepicker') {\n\t this.$parse('control.templateOptions.datepickerPopup').assign(configurationCtrlModel, this.$parse('datepickerPopup')(formlyDetailCtrlModel));\n\t }\n\t }\n\t }]);\n\t\n\t return ddModelConfModelProxyService;\n\t}();\n\t\n\tddModelConfModelProxyService.$inject = ['EasyFormGenFormlyBindingModels',\n\t// 'controllerModalProxy',\n\t// 'dragDropConfig',\n\t'easyFormDragWayConfig', '$parse'];\n\t\n\texports.default = ddModelConfModelProxyService;\n\texports.DRAG_DROP_CONFIG_PROXY_SERVICE = DRAG_DROP_CONFIG_PROXY_SERVICE;\n\n/***/ },\n/* 72 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _dragAndDropListDndlist = __webpack_require__(73);\n\t\n\tvar _dragAndDropListDndlist2 = _interopRequireDefault(_dragAndDropListDndlist);\n\t\n\tvar _dragAndDropListDndDraggable = __webpack_require__(74);\n\t\n\tvar _dragAndDropListDndDraggable2 = _interopRequireDefault(_dragAndDropListDndDraggable);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar DRAG_DROP_LIST_MODULE = 'dndLists.module';\n\t\n\texports.default = angular.module(DRAG_DROP_LIST_MODULE, []).directive(_dragAndDropListDndlist.DNDLIST_DIRECTIVE, _dragAndDropListDndlist2.default).directive(_dragAndDropListDndDraggable.DNDDRAGGABLE_DIRECTIVE, _dragAndDropListDndDraggable2.default).factory('dndDragTypeWorkaround', function () {\n\t return {};\n\t}).factory('dndDropEffectWorkaround', function () {\n\t return {};\n\t});\n\n/***/ },\n/* 73 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar DNDLIST_DIRECTIVE = 'dndList';\n\t\n\tfunction dndList($parse, $timeout, dndDropEffectWorkaround, dndDragTypeWorkaround) {\n\t var directive = {\n\t link: linkFct\n\t };\n\t return directive;\n\t\n\t function linkFct(scope, element, attr) {\n\t // While an element is dragged over the list, this placeholder element is inserted\n\t // at the location where the element would be inserted after dropping\n\t var placeholder = angular.element('');\n\t var placeholderNode = placeholder[0];\n\t var listNode = element[0];\n\t var horizontal = attr.dndHorizontalList && scope.$eval(attr.dndHorizontalList);\n\t var externalSources = attr.dndExternalSources && scope.$eval(attr.dndExternalSources);\n\t\n\t /**\n\t * The dragover event is triggered \"every few hundred milliseconds\" while an element\n\t * is being dragged over our list, or over an child element.\n\t */\n\t element.on('dragover', function (event) {\n\t event = event.originalEvent || event;\n\t if (!isDropAllowed(event)) return true;\n\t // First of all, make sure that the placeholder is shown\n\t // This is especially important if the list is empty\n\t if (placeholderNode.parentNode != listNode) {\n\t element.append(placeholder);\n\t }\n\t if (event.target !== listNode) {\n\t // Try to find the node direct directly below the list node.\n\t var listItemNode = event.target;\n\t while (listItemNode.parentNode !== listNode && listItemNode.parentNode) {\n\t listItemNode = listItemNode.parentNode;\n\t }\n\t if (listItemNode.parentNode === listNode && listItemNode !== placeholderNode) {\n\t // If the mouse pointer is in the upper half of the child element,\n\t // we place it before the child element, otherwise below it.\n\t if (isMouseInFirstHalf(event, listItemNode)) {\n\t listNode.insertBefore(placeholderNode, listItemNode);\n\t } else {\n\t listNode.insertBefore(placeholderNode, listItemNode.nextSibling);\n\t }\n\t }\n\t } else {\n\t // This branch is reached when we are dragging directly over the list element.\n\t // Usually we wouldn't need to do anything here, but the IE does not fire it's\n\t // events for the child element, only for the list directly. Therefore we repeat\n\t // the positioning algorithm for IE here.\n\t if (isMouseInFirstHalf(event, placeholderNode, true)) {\n\t // Check if we should move the placeholder element one spot towards the top.\n\t // Note that display none elements will have offsetTop and offsetHeight set to\n\t // zero, therefore we need a special check for them.\n\t while (placeholderNode.previousElementSibling && (isMouseInFirstHalf(event, placeholderNode.previousElementSibling, true) || placeholderNode.previousElementSibling.offsetHeight === 0)) {\n\t listNode.insertBefore(placeholderNode, placeholderNode.previousElementSibling);\n\t }\n\t } else {\n\t // Check if we should move the placeholder element one spot towards the bottom\n\t while (placeholderNode.nextElementSibling && !isMouseInFirstHalf(event, placeholderNode.nextElementSibling, true)) {\n\t listNode.insertBefore(placeholderNode, placeholderNode.nextElementSibling.nextElementSibling);\n\t }\n\t }\n\t }\n\t\n\t // At this point we invoke the callback, which still can disallow the drop.\n\t // We can't do this earlier because we want to pass the index of the placeholder.\n\t if (attr.dndDragover && !invokeCallback(attr.dndDragover, event)) {\n\t return stopDragover();\n\t }\n\t element.addClass('dndDragover');\n\t event.preventDefault();\n\t event.stopPropagation();\n\t return false;\n\t });\n\t\n\t /**\n\t * When the element is dropped, we use the position of the placeholder element as the\n\t * position where we insert the transferred data. This assumes that the list has exactly\n\t * one child element per array element.\n\t */\n\t element.on('drop', function (event) {\n\t event = event.originalEvent || event;\n\t if (!isDropAllowed(event)) return true;\n\t // The default behavior in Firefox is to interpret the dropped element as URL and\n\t // forward to it. We want to prevent that even if our drop is aborted.\n\t event.preventDefault();\n\t // Unserialize the data that was serialized in dragstart. According to the HTML5 specs,\n\t // the \"Text\" drag type will be converted to text/plain, but IE does not do that.\n\t var data = event.dataTransfer.getData('Text') || event.dataTransfer.getData('text/plain');\n\t var transferredObject;\n\t try {\n\t transferredObject = JSON.parse(data);\n\t } catch (e) {\n\t return stopDragover();\n\t }\n\t // Invoke the callback, which can transform the transferredObject and even abort the drop.\n\t if (attr.dndDrop) {\n\t transferredObject = invokeCallback(attr.dndDrop, event, transferredObject);\n\t if (!transferredObject) {\n\t return stopDragover();\n\t }\n\t }\n\t // Retrieve the JSON array and insert the transferred object into it.\n\t var targetArray = scope.$eval(attr.dndList);\n\t scope.$apply(function () {\n\t targetArray.splice(getPlaceholderIndex(), 0, transferredObject);\n\t });\n\t // In Chrome on Windows the dropEffect will always be none...\n\t // We have to determine the actual effect manually from the allowed effects\n\t if (event.dataTransfer.dropEffect === 'none') {\n\t if (event.dataTransfer.effectAllowed === 'copy' || event.dataTransfer.effectAllowed === 'move') {\n\t dndDropEffectWorkaround.dropEffect = event.dataTransfer.effectAllowed;\n\t } else {\n\t dndDropEffectWorkaround.dropEffect = event.ctrlKey ? 'copy' : 'move';\n\t }\n\t } else {\n\t dndDropEffectWorkaround.dropEffect = event.dataTransfer.dropEffect;\n\t }\n\t // Clean up\n\t stopDragover();\n\t event.stopPropagation();\n\t return false;\n\t });\n\t\n\t /**\n\t * We have to remove the placeholder when the element is no longer dragged over our list. The\n\t * problem is that the dragleave event is not only fired when the element leaves our list,\n\t * but also when it leaves a child element -- so practically it's fired all the time. As a\n\t * workaround we wait a few milliseconds and then check if the dndDragover class was added\n\t * again. If it is there, dragover must have been called in the meantime, i.e. the element\n\t * is still dragging over the list. If you know a better way of doing this, please tell me!\n\t */\n\t element.on('dragleave', function (event) {\n\t event = event.originalEvent || event;\n\t\n\t element.removeClass('dndDragover');\n\t $timeout(function () {\n\t if (!element.hasClass('dndDragover')) {\n\t placeholder.remove();\n\t }\n\t }, 100);\n\t });\n\t\n\t /**\n\t * Checks whether the mouse pointer is in the first half of the given target element.\n\t *\n\t * In Chrome we can just use offsetY, but in Firefox we have to use layerY, which only\n\t * works if the child element has position relative. In IE the events are only triggered\n\t * on the listNode instead of the listNodeItem, therefore the mouse positions are\n\t * relative to the parent element of targetNode.\n\t */\n\t function isMouseInFirstHalf(event, targetNode, relativeToParent) {\n\t var mousePointer = horizontal ? event.offsetX || event.layerX : event.offsetY || event.layerY;\n\t var targetSize = horizontal ? targetNode.offsetWidth : targetNode.offsetHeight;\n\t var targetPosition = horizontal ? targetNode.offsetLeft : targetNode.offsetTop;\n\t targetPosition = relativeToParent ? targetPosition : 0;\n\t return mousePointer < targetPosition + targetSize / 2;\n\t }\n\t\n\t /**\n\t * We use the position of the placeholder node to determine at which position of the array the\n\t * object needs to be inserted\n\t */\n\t function getPlaceholderIndex() {\n\t return Array.prototype.indexOf.call(listNode.children, placeholderNode);\n\t }\n\t\n\t /**\n\t * Checks various conditions that must be fulfilled for a drop to be allowed\n\t */\n\t function isDropAllowed(event) {\n\t // Disallow drop from external source unless it's allowed explicitly.\n\t if (!dndDragTypeWorkaround.isDragging && !externalSources) return false;\n\t // Check mimetype. Usually we would use a custom drag type instead of Text, but IE doesn't\n\t // support that.\n\t if (!hasTextMimetype(event.dataTransfer.types)) return false;\n\t // Now check the dnd-allowed-types against the type of the incoming element. For drops from\n\t // external sources we don't know the type, so it will need to be checked via dnd-drop.\n\t if (attr.dndAllowedTypes && dndDragTypeWorkaround.isDragging) {\n\t var allowed = scope.$eval(attr.dndAllowedTypes);\n\t if (angular.isArray(allowed) && allowed.indexOf(dndDragTypeWorkaround.dragType) === -1) {\n\t return false;\n\t }\n\t }\n\t // Check whether droping is disabled completely\n\t if (attr.dndDisableIf && scope.$eval(attr.dndDisableIf)) return false;\n\t return true;\n\t }\n\t\n\t /**\n\t * Small helper function that cleans up if we aborted a drop.\n\t */\n\t function stopDragover() {\n\t placeholder.remove();\n\t element.removeClass('dndDragover');\n\t return true;\n\t }\n\t\n\t /**\n\t * Invokes a callback with some interesting parameters and returns the callbacks return value.\n\t */\n\t function invokeCallback(expression, event, item) {\n\t return $parse(expression)(scope, {\n\t event: event,\n\t index: getPlaceholderIndex(),\n\t item: item || undefined,\n\t external: !dndDragTypeWorkaround.isDragging,\n\t type: dndDragTypeWorkaround.isDragging ? dndDragTypeWorkaround.dragType : undefined\n\t });\n\t }\n\t\n\t /**\n\t * Check if the dataTransfer object contains a drag type that we can handle. In old versions\n\t * of IE the types collection will not even be there, so we just assume a drop is possible.\n\t */\n\t function hasTextMimetype(types) {\n\t if (!types) return true;\n\t for (var i = 0; i < types.length; i++) {\n\t if (types[i] === 'Text' || types[i] === 'text/plain') return true;\n\t }\n\t return false;\n\t }\n\t }\n\t}\n\t\n\tvar TO_INJECT = ['$parse', '$timeout', 'dndDropEffectWorkaround', 'dndDragTypeWorkaround'];\n\t\n\tdndList.$inject = TO_INJECT;\n\t\n\texports.default = dndList;\n\texports.DNDLIST_DIRECTIVE = DNDLIST_DIRECTIVE;\n\n/***/ },\n/* 74 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar DNDDRAGGABLE_DIRECTIVE = 'dndDraggable';\n\t\n\tfunction dndDraggable($parse, $timeout, dndDropEffectWorkaround, dndDragTypeWorkaround) {\n\t var directive = {\n\t link: linkFct\n\t };\n\t return directive;\n\t\n\t function linkFct(scope, element, attr) {\n\t var _this = this;\n\t\n\t // Set the HTML5 draggable attribute on the element\n\t element.attr('draggable', 'true');\n\t\n\t // If the dnd-disable-if attribute is set, we have to watch that\n\t if (attr.dndDisableIf) {\n\t scope.$watch(attr.dndDisableIf, function (disabled) {\n\t return element.attr('draggable', !disabled);\n\t });\n\t }\n\t\n\t /**\n\t * When the drag operation is started we have to prepare the dataTransfer object,\n\t * which is the primary way we communicate with the target element\n\t */\n\t element.on('dragstart', function (event) {\n\t event = event.originalEvent || event;\n\t // Serialize the data associated with this element. IE only supports the Text drag type\n\t event.dataTransfer.setData('Text', angular.toJson(scope.$eval(attr.dndDraggable)));\n\t // Only allow actions specified in dnd-effect-allowed attribute\n\t event.dataTransfer.effectAllowed = attr.dndEffectAllowed || 'move';\n\t // Add CSS classes. See documentation above\n\t element.addClass('dndDragging');\n\t $timeout(function () {\n\t element.addClass('dndDraggingSource');\n\t }, 0);\n\t // Workarounds for stupid browsers, see description below\n\t dndDropEffectWorkaround.dropEffect = 'none';\n\t dndDragTypeWorkaround.isDragging = true;\n\t // Save type of item in global state. Usually, this would go into the dataTransfer\n\t // typename, but we have to use \"Text\" there to support IE\n\t dndDragTypeWorkaround.dragType = attr.dndType ? scope.$eval(attr.dndType) : undefined;\n\t // Invoke callback\n\t $parse(attr.dndDragstart)(scope, { event: event });\n\t event.stopPropagation();\n\t });\n\t\n\t /**\n\t * The dragend event is triggered when the element was dropped or when the drag\n\t * operation was aborted (e.g. hit escape button). Depending on the executed action\n\t * we will invoke the callbacks specified with the dnd-moved or dnd-copied attribute.\n\t */\n\t element.on('dragend', function (event) {\n\t event = event.originalEvent || event;\n\t\n\t // Invoke callbacks. Usually we would use event.dataTransfer.dropEffect to determine\n\t // the used effect, but Chrome has not implemented that field correctly. On Windows\n\t // it always sets it to 'none', while Chrome on Linux sometimes sets it to something\n\t // else when it's supposed to send 'none' (drag operation aborted).\n\t var dropEffect = dndDropEffectWorkaround.dropEffect;\n\t scope.$apply(function () {\n\t switch (dropEffect) {\n\t case 'move':\n\t $parse(attr.dndMoved)(scope, { event: event });\n\t break;\n\t\n\t case 'copy':\n\t $parse(attr.dndCopied)(scope, { event: event });\n\t break;\n\t }\n\t });\n\t\n\t // Clean up\n\t element.removeClass('dndDragging');\n\t element.removeClass('dndDraggingSource');\n\t dndDragTypeWorkaround.isDragging = false;\n\t event.stopPropagation();\n\t });\n\t\n\t /**\n\t * When the element is clicked we invoke the callback function\n\t * specified with the dnd-selected attribute.\n\t */\n\t element.on('click', function (event) {\n\t event = event.originalEvent || event;\n\t scope.$apply(function () {\n\t return $parse(attr.dndSelected)(scope, { event: event });\n\t });\n\t event.stopPropagation();\n\t });\n\t\n\t /**\n\t * Workaround to make element draggable in IE9\n\t */\n\t element.on('selectstart', function () {\n\t if (_this.dragDrop) _this.dragDrop();\n\t return false;\n\t });\n\t }\n\t}\n\t\n\tvar TO_INJECT = ['$parse', '$timeout', 'dndDropEffectWorkaround', 'dndDragTypeWorkaround'];\n\t\n\tdndDraggable.$inject = TO_INJECT;\n\t\n\texports.default = dndDraggable;\n\texports.DNDDRAGGABLE_DIRECTIVE = DNDDRAGGABLE_DIRECTIVE;\n\n/***/ },\n/* 75 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _pageslide = __webpack_require__(76);\n\t\n\tvar _pageslide2 = _interopRequireDefault(_pageslide);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar PAGE_SLIDE_MODULE = 'pageslide.module';\n\t\n\texports.default = angular.module(PAGE_SLIDE_MODULE, []).directive(_pageslide.PAGE_SLIDE_DIRECTIVE, _pageslide2.default);\n\n/***/ },\n/* 76 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar PAGE_SLIDE_DIRECTIVE = 'pageslide';\n\t\n\tfunction pageslide() {\n\t var directive = {\n\t restrict: 'EAC',\n\t transclude: false,\n\t scope: {\n\t psOpen: '=?',\n\t psAutoClose: '=?',\n\t psSide: '@',\n\t psSpeed: '@',\n\t psClass: '@',\n\t psSize: '@',\n\t psSqueeze: '@',\n\t psCloak: '@',\n\t psPush: '@',\n\t psContainer: '@'\n\t },\n\t link: linkFct\n\t };\n\t return directive;\n\t\n\t function linkFct($scope, el, attrs) {\n\t /* Inspect */\n\t //console.log($scope);\n\t //console.log(el);\n\t //console.log(attrs);\n\t\n\t /* Parameters */\n\t var param = {};\n\t\n\t param.side = $scope.psSide || 'right';\n\t param.speed = $scope.psSpeed || '0.5';\n\t param.size = $scope.psSize || '300px';\n\t param.zindex = 1000; // Override with custom CSS\n\t param.className = $scope.psClass || 'ng-pageslide';\n\t param.cloak = $scope.psCloak && $scope.psCloak.toLowerCase() == 'false' ? false : true;\n\t param.squeeze = Boolean($scope.psSqueeze) || false;\n\t param.push = Boolean($scope.psPush) || false;\n\t param.container = $scope.psContainer || false;\n\t\n\t // Apply Class\n\t el.addClass(param.className);\n\t\n\t /* DOM manipulation */\n\t var content = null;\n\t var slider = null;\n\t var body = param.container ? document.getElementById(param.container) : document.body;\n\t\n\t slider = el[0];\n\t\n\t // Check for div tag\n\t if (slider.tagName.toLowerCase() !== 'div' && slider.tagName.toLowerCase() !== 'pageslide') throw new Error('Pageslide can only be applied to
or
elements');\n\t\n\t // Check for content\n\t if (slider.children.length === 0) throw new Error('You have to content inside the ');\n\t\n\t content = angular.element(slider.children);\n\t\n\t /* Append */\n\t body.appendChild(slider);\n\t\n\t /* Style setup */\n\t slider.style.zIndex = param.zindex;\n\t slider.style.position = param.container !== false ? 'absolute' : 'fixed';\n\t slider.style.width = 0;\n\t slider.style.height = 0;\n\t slider.style.overflow = 'hidden';\n\t slider.style.transitionDuration = param.speed + 's';\n\t slider.style.webkitTransitionDuration = param.speed + 's';\n\t slider.style.transitionProperty = 'width, height';\n\t if (param.squeeze) {\n\t body.style.position = 'absolute';\n\t body.style.transitionDuration = param.speed + 's';\n\t body.style.webkitTransitionDuration = param.speed + 's';\n\t body.style.transitionProperty = 'top, bottom, left, right';\n\t }\n\t\n\t switch (param.side) {\n\t case 'right':\n\t slider.style.height = attrs.psCustomHeight || '100%';\n\t slider.style.top = attrs.psCustomTop || '0px';\n\t slider.style.bottom = attrs.psCustomBottom || '0px';\n\t slider.style.right = attrs.psCustomRight || '0px';\n\t break;\n\t case 'left':\n\t slider.style.height = attrs.psCustomHeight || '100%';\n\t slider.style.top = attrs.psCustomTop || '0px';\n\t slider.style.bottom = attrs.psCustomBottom || '0px';\n\t slider.style.left = attrs.psCustomLeft || '0px';\n\t break;\n\t case 'top':\n\t slider.style.width = attrs.psCustomWidth || '100%';\n\t slider.style.left = attrs.psCustomLeft || '0px';\n\t slider.style.top = attrs.psCustomTop || '0px';\n\t slider.style.right = attrs.psCustomRight || '0px';\n\t break;\n\t case 'bottom':\n\t slider.style.width = attrs.psCustomWidth || '100%';\n\t slider.style.bottom = attrs.psCustomBottom || '0px';\n\t slider.style.left = attrs.psCustomLeft || '0px';\n\t slider.style.right = attrs.psCustomRight || '0px';\n\t break;\n\t }\n\t\n\t /* Closed */\n\t function psClose(slider, param) {\n\t if (slider && slider.style.width !== 0 && slider.style.width !== 0) {\n\t if (param.cloak) content.css('display', 'none');\n\t switch (param.side) {\n\t case 'right':\n\t slider.style.width = '0px';\n\t if (param.squeeze) body.style.right = '0px';\n\t if (param.push) {\n\t body.style.right = '0px';\n\t body.style.left = '0px';\n\t }\n\t break;\n\t case 'left':\n\t slider.style.width = '0px';\n\t if (param.squeeze) body.style.left = '0px';\n\t if (param.push) {\n\t body.style.left = '0px';\n\t body.style.right = '0px';\n\t }\n\t break;\n\t case 'top':\n\t slider.style.height = '0px';\n\t if (param.squeeze) body.style.top = '0px';\n\t if (param.push) {\n\t body.style.top = '0px';\n\t body.style.bottom = '0px';\n\t }\n\t break;\n\t case 'bottom':\n\t slider.style.height = '0px';\n\t if (param.squeeze) body.style.bottom = '0px';\n\t if (param.push) {\n\t body.style.bottom = '0px';\n\t body.style.top = '0px';\n\t }\n\t break;\n\t }\n\t }\n\t $scope.psOpen = false;\n\t }\n\t\n\t /* Open */\n\t function psOpen(slider, param) {\n\t if (slider.style.width !== 0 && slider.style.width !== 0) {\n\t switch (param.side) {\n\t case 'right':\n\t slider.style.width = param.size;\n\t if (param.squeeze) body.style.right = param.size;\n\t if (param.push) {\n\t body.style.right = param.size;\n\t body.style.left = '-' + param.size;\n\t }\n\t break;\n\t case 'left':\n\t slider.style.width = param.size;\n\t if (param.squeeze) body.style.left = param.size;\n\t if (param.push) {\n\t body.style.left = param.size;\n\t body.style.right = '-' + param.size;\n\t }\n\t break;\n\t case 'top':\n\t slider.style.height = param.size;\n\t if (param.squeeze) body.style.top = param.size;\n\t if (param.push) {\n\t body.style.top = param.size;\n\t body.style.bottom = '-' + param.size;\n\t }\n\t break;\n\t case 'bottom':\n\t slider.style.height = param.size;\n\t if (param.squeeze) body.style.bottom = param.size;\n\t if (param.push) {\n\t body.style.bottom = param.size;\n\t body.style.top = '-' + param.size;\n\t }\n\t break;\n\t }\n\t setTimeout(function () {\n\t if (param.cloak) content.css('display', 'block');\n\t }, param.speed * 1000);\n\t }\n\t }\n\t\n\t // function isFunction(functionToCheck) {\n\t // var getType = {};\n\t // return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n\t // }\n\t\n\t /*\n\t * Watchers\n\t * */\n\t\n\t $scope.$watch('psOpen', function (value) {\n\t /* eslint no-extra-boolean-cast:0 */\n\t if (!!value) {\n\t // Open\n\t psOpen(slider, param);\n\t } else {\n\t // Close\n\t psClose(slider, param);\n\t }\n\t });\n\t\n\t /*\n\t * Events\n\t * */\n\t\n\t $scope.$on('$destroy', function () {\n\t return body.removeChild(slider);\n\t });\n\t\n\t if ($scope.psAutoClose) {\n\t $scope.$on('$locationChangeStart', function () {\n\t return psClose(slider, param);\n\t });\n\t $scope.$on('$stateChangeStart', function () {\n\t return psClose(slider, param);\n\t });\n\t }\n\t }\n\t}\n\t\n\tpageslide.$inject = [];\n\t\n\texports.default = pageslide;\n\texports.PAGE_SLIDE_DIRECTIVE = PAGE_SLIDE_DIRECTIVE;\n\n/***/ },\n/* 77 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _edaDragDropWayEdaDragdropWayEasyFormGen = __webpack_require__(78);\n\t\n\tvar _edaDragDropWayEdaDragdropWayEasyFormGen2 = _interopRequireDefault(_edaDragDropWayEdaDragdropWayEasyFormGen);\n\t\n\tvar _edaDragDropWayEdaDragdropWayEasyFormGen3 = __webpack_require__(80);\n\t\n\tvar _edaDragDropWayEdaDragdropWayEasyFormGen4 = _interopRequireDefault(_edaDragDropWayEdaDragdropWayEasyFormGen3);\n\t\n\tvar _edaDragDropWayEdaDragdropWayEasyFormGen5 = __webpack_require__(82);\n\t\n\tvar _edaDragDropWayEdaDragdropWayEasyFormGen6 = _interopRequireDefault(_edaDragDropWayEdaDragdropWayEasyFormGen5);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar DRAGDROP_MODULE = 'edaDragDropWay.main.module'; /* global angular */\n\t\n\texports.default = angular.module(DRAGDROP_MODULE, []).provider(_edaDragDropWayEdaDragdropWayEasyFormGen.EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME, _edaDragDropWayEdaDragdropWayEasyFormGen2.default).controller(_edaDragDropWayEdaDragdropWayEasyFormGen3.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER, _edaDragDropWayEdaDragdropWayEasyFormGen4.default).directive(_edaDragDropWayEdaDragdropWayEasyFormGen5.EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE, _edaDragDropWayEdaDragdropWayEasyFormGen6.default);\n\n/***/ },\n/* 78 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME = undefined;\n\t\n\tvar _edaDragDropWayEdaDragdropWayEasyFormGenProvider = __webpack_require__(79);\n\t\n\tvar EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME = 'easyFormDragWayConfig'; // TODO : Add here configs from ES5 dragDropConfigProvider\n\t\n\tfunction easyFormDragWayConfig() {\n\t\n\t\tvar _listDragDropItemCssClasses = [].concat(_edaDragDropWayEdaDragdropWayEasyFormGenProvider.LIST_DRAG_DROP_ITEM_CSS_CLASSES);\n\t\tvar _dragDropConfigModel = angular.copy(_edaDragDropWayEdaDragdropWayEasyFormGenProvider.DRAG_DROP_CONFIG_MODEL);\n\t\tvar _dragDropPresentationModel = [].concat(_edaDragDropWayEdaDragdropWayEasyFormGenProvider.DRAG_DROP_PRESENTATION_MODEL);\n\t\tvar _itemsNotToCountFoReal = angular.copy(_edaDragDropWayEdaDragdropWayEasyFormGenProvider.ITEMS_NOT_TO_COUNT_FOR_REAL);\n\t\n\t\tvar _configuration = defaultConfig();\n\t\tvar _controlsList = controlsList();\n\t\t// let _defaultLanguage\t\t= getDefaultLanguage();\n\t\t// let _currentLanguage\t\t= initDefaultLanguage();\n\t\tvar _showPreviewPanel = getDefaultshowPreviewPanel();\n\t\tvar _showPreviewModels = getDefaultShowPreviewModel();\n\t\t/* jshint validthis:true */\n\t\tthis.$get = easyFormDragDropWayConfigGET;\n\t\tthis.setModalAnimation = setModalAnimation;\n\t\tthis.getModalAnimation = getModalAnimation;\n\t\tthis.configuration = _configuration;\n\t\tthis.getEnabledControls = getEnabledControls;\n\t\tthis.disableControl = disableControl;\n\t\tthis.enableControl = enableControl;\n\t\t// this.setLanguage\t\t\t\t= setLanguage;\n\t\t// this.getCurrentLanguage\t= getCurrentLanguage;\n\t\tthis.showPreviewPanel = showPreviewPanel;\n\t\tthis.showPreviewModels = showPreviewModels;\n\t\n\t\tthis.setListItemCssClass = setListItemCssClass;\n\t\tthis.getItemsNotTocount = getItemsNotTocount;\n\t\tthis.setItemsNotTocount = setItemsNotTocount;\n\t\tthis.addControlToDragDropPresentationModel = addControlToDragDropPresentationModel;\n\t\tthis.getDragDropPresentationModel = getDragDropPresentationModel;\n\t\n\t\tfunction setListItemCssClass(fromConfig) {\n\t\t\t_listDragDropItemCssClasses = [].concat(fromConfig);\n\t\t}\n\t\n\t\tfunction getItemsNotTocount() {\n\t\t\treturn _itemsNotToCountFoReal;\n\t\t}\n\t\n\t\tfunction setItemsNotTocount(fromConfig) {\n\t\t\t_itemsNotToCountFoReal = angular.copy(fromConfig);\n\t\t}\n\t\n\t\t//set default config\n\t\tfunction defaultConfig() {\n\t\t\tvar _defaultConfiguration = {\n\t\t\t\tmodalAnimated: false\n\t\t\t};\n\t\t\treturn _defaultConfiguration;\n\t\t}\n\t\n\t\tfunction addControlToDragDropPresentationModel(controlToAdd, groupToAdd) {\n\t\t\tif (typeof controlToAdd !== 'undefined' && typeof groupToAdd !== 'undefined') {\n\t\t\t\taddToGroupControl(controlToAdd, groupToAdd);\n\t\t\t}\n\t\t}\n\t\n\t\tfunction getDragDropPresentationModel() {\n\t\t\treturn _dragDropPresentationModel;\n\t\t}\n\t\n\t\t//show preview panel by default\n\t\tfunction getDefaultshowPreviewPanel() {\n\t\t\treturn true;\n\t\t}\n\t\n\t\t//show preview data, fields models in preview panel\n\t\tfunction getDefaultShowPreviewModel() {\n\t\t\treturn true;\n\t\t}\n\t\n\t\t// function getCurrentLanguage(){\n\t\t// \t\treturn _currentLanguage;\n\t\t// }\t\n\t\n\t\t//list of controls\n\t\tfunction controlsList() {\n\t\t\tvar controls = [{ name: 'empty', enabled: true }, { name: 'Header', enabled: true }, { name: 'Subtitle', enabled: true }, { name: 'TextInput', enabled: true }, { name: 'Password', enabled: true }, { name: 'Email', enabled: true }, { name: 'Date', enabled: true }, { name: 'Texarea', enabled: true }, { name: 'RichTextEditor', enabled: true }, { name: 'Radio', enabled: true }, { name: 'Checkbox', enabled: true }, { name: 'BasicSelect', enabled: true }, { name: 'GroupedSelect', enabled: true }];\n\t\t\treturn controls;\n\t\t}\n\t\n\t\tfunction showPreviewPanel(wantToShow) {\n\t\t\tif (angular.isDefined(wantToShow)) {\n\t\t\t\tif (wantToShow === true) _showPreviewPanel = true;\n\t\t\t\tif (wantToShow === false) _showPreviewPanel = false;\n\t\t\t}\n\t\t}\n\t\n\t\tfunction showPreviewModels(wantToShow) {\n\t\t\tif (angular.isDefined(wantToShow)) {\n\t\t\t\tif (wantToShow === true) _showPreviewModels = true;\n\t\t\t\tif (wantToShow === false) _showPreviewModels = false;\n\t\t\t}\n\t\t}\n\t\n\t\t// //language : set default to english\n\t\t// function getDefaultLanguage(){\n\t\t// \tlet lang = 'en';\n\t\t// \treturn lang;\n\t\t// }\n\t\n\t\t// function setDefaultLanguage(){\n\t\t// \t_currentLanguage = _defaultLanguage;\n\t\t// \t$translateProvider.preferredLanguage(_currentLanguage);\n\t\t// \treturn _currentLanguage;\n\t\t// }\t\n\t\n\t\t// function setLanguage(language){\t\t\t\t\n\t\t// \tif (angular.isString(language)) {\n\t\t// \t\t_currentLanguage = language;\n\t\t// \t\t$translateProvider.preferredLanguage(language);\n\t\t// \t}else{\n\t\t// \t\tsetDefaultLanguage();\n\t\t// \t}\n\t\t// }\n\t\n\t\t// function initDefaultLanguage(){\n\t\t// \t$translateProvider.useSanitizeValueStrategy('escape'); \t//security : Enable escaping of HTML\n\t\t// \t$translateProvider.fallbackLanguage(_defaultLanguage);\t//fallback language to default language\n\t\t// \t$translateProvider.preferredLanguage(_defaultLanguage);\n\t\t// \treturn _defaultLanguage;\n\t\t// }\n\t\n\t\tfunction getEnabledControls() {\n\t\t\treturn _controlsList;\n\t\t}\n\t\n\t\tfunction disableControl(controlName) {\n\t\t\tif (angular.isString(controlName)) {\n\t\t\t\tangular.forEach(_controlsList, function (aControl) {\n\t\t\t\t\tif (aControl.name === controlName) aControl.enabled = false;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\n\t\tfunction enableControl(controlName) {\n\t\t\tif (angular.isString(controlName)) {\n\t\t\t\tangular.forEach(_controlsList, function (aControl) {\n\t\t\t\t\tif (aControl.name === controlName) aControl.enabled = true;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\n\t\tfunction setModalAnimation(flagConfig) {\n\t\t\tvar valueToApply = flagConfig === true ? flagConfig : flagConfig === false ? flagConfig : _configuration.modalAnimated;\n\t\n\t\t\t_configuration.modalAnimated = valueToApply;\n\t\t}\n\t\n\t\tfunction getModalAnimation() {\n\t\t\treturn _configuration.modalAnimated;\n\t\t}\n\t\n\t\t//$get implementation :\n\t\t// easyFormDragDropWayConfigGET.$inject = ['$translate'];\n\t\t// function easyFormDragDropWayConfigGET($translate){\n\t\teasyFormDragDropWayConfigGET.$inject = [];\n\t\tfunction easyFormDragDropWayConfigGET() {\n\t\n\t\t\tvar service = {\n\t\t\t\tsetModalAnimation: setModalAnimationFct,\n\t\t\t\tgetModalAnimationValue: getModalAnimationValue,\n\t\t\t\tgetListEnabledControl: getListEnabledControl,\n\t\t\t\t// setLanguage \t\t\t\t\t\t\t\t\t\t\t: switchLanguage,\n\t\t\t\t// getCurrentLanguage\t\t\t\t\t\t\t\t: getCurrentLanguage,\n\t\t\t\tisPreviewPanelVisible: isPreviewPanelVisible,\n\t\t\t\tarePreviewModelsVisible: arePreviewModelsVisible,\n\t\n\t\t\t\tgetListItemCssClass: getListItemCssClass,\n\t\t\t\tgetItemsNotToCount: getItemsNotToCount,\n\t\t\t\tgetItemCssDependingNumberItemsInRow: getItemCssDependingNumberItemsInRow,\n\t\t\t\tgetDistinctItemCssClass: getDistinctItemCssClass,\n\t\t\t\tgetDragDropConfigModel: getDragDropConfigModel,\n\t\t\t\tgetDragDropPresentationModel: getDragDropPresentationModel,\n\t\t\t\tsetDragDropConfigContainerDecorationCollapse: setDragDropConfigContainerDecorationCollapse\n\t\t\t};\n\t\t\treturn service;\n\t\n\t\t\tfunction getDragDropPresentationModel() {\n\t\t\t\treturn _dragDropPresentationModel;\n\t\t\t}\n\t\n\t\t\tfunction setDragDropConfigContainerDecorationCollapse(dragDropConfigModel, indexValue, isCollapsedBool) {\n\t\t\t\tif (typeof indexValue !== 'undefined' && typeof isCollapsedBool !== 'undefined') {\n\t\t\t\t\tif (indexValue === parseInt(indexValue, 10)) {\n\t\t\t\t\t\tdragDropConfigModel.containerConfig.decoration[indexValue].isCollapsed = isCollapsedBool;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\n\t\t\tfunction getDragDropConfigModel() {\n\t\t\t\treturn _dragDropConfigModel;\n\t\t\t}\n\t\n\t\t\tfunction getDistinctItemCssClass() {\n\t\t\t\tvar distinctCssClass = [];\n\t\t\t\tangular.forEach(_listDragDropItemCssClasses, function (valueRef) {\n\t\n\t\t\t\t\tvar cssClassRef = valueRef.cssClass;\n\t\n\t\t\t\t\tif (distinctCssClass.length === 0) {\n\t\t\t\t\t\tdistinctCssClass.push(cssClassRef);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar canAdd = true;\n\t\t\t\t\t\tangular.forEach(distinctCssClass, function (valueProc) {\n\t\t\t\t\t\t\tvar cssClassProc = valueProc;\n\t\t\t\t\t\t\tif (cssClassRef === cssClassProc) {\n\t\t\t\t\t\t\t\tcanAdd = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (canAdd) distinctCssClass.push(cssClassRef);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn distinctCssClass;\n\t\t\t}\n\t\n\t\t\tfunction getItemCssDependingNumberItemsInRow(numberOfItems) {\n\t\t\t\tif (typeof numberOfItems !== 'undefined') {\n\t\t\t\t\tvar classToReturn = '';\n\t\t\t\t\tfor (var i = _listDragDropItemCssClasses.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (_listDragDropItemCssClasses[i].numberItemPerRow === numberOfItems) {\n\t\t\t\t\t\t\tclassToReturn = _listDragDropItemCssClasses[i].cssClass;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn classToReturn;\n\t\t\t\t} else {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfunction getListItemCssClass() {\n\t\t\t\treturn _listDragDropItemCssClasses;\n\t\t\t}\n\t\n\t\t\tfunction getItemsNotToCount() {\n\t\t\t\treturn _itemsNotToCountFoReal;\n\t\t\t}\n\t\n\t\t\tfunction getModalAnimationValue() {\n\t\t\t\treturn _configuration.modalAnimated;\n\t\t\t}\n\t\n\t\t\tfunction setModalAnimationFct(value) {\n\t\t\t\tsetModalAnimation(value);\n\t\t\t}\n\t\n\t\t\tfunction getListEnabledControl() {\n\t\t\t\treturn angular.copy(_controlsList);\n\t\t\t}\n\t\n\t\t\t// function switchLanguage(language){\n\t\t\t// \tif (angular.isString(language)) {\n\t\t\t// \t\t_currentLanguage = language;\n\t\t\t// \t\t$translate.use(language);\n\t\t\t// \t}else{\n\t\t\t// \t\tsetDefaultLanguage();\n\t\t\t// \t}\n\t\t\t// }\t\t\t\t\t\n\t\n\t\t\tfunction isPreviewPanelVisible() {\n\t\t\t\treturn _showPreviewPanel;\n\t\t\t}\n\t\n\t\t\tfunction arePreviewModelsVisible() {\n\t\t\t\treturn _showPreviewModels;\n\t\t\t}\n\t\t}\n\t\n\t\t/**\n\t * addToGroupControl : add control to _dragDropPresentationModel\n\t * @param {[type]} thisControl : control to add\n\t * @param {[type]} thisGroup : groupId wher this control should be added\n\t *\n\t * NOTE : if _dragDropPresentationModel wrong initialized it will create list of group conforming to \n\t * configModel\n\t */\n\t\tfunction addToGroupControl(thisControl, thisGroup) {\n\t\t\t/**\n\t * search group if already exists\n\t */\n\t\t\tif (_dragDropPresentationModel[0].length > 0) {\n\t\t\t\t/**\n\t * case when _dragDropConfigModel.containerConfig.decoration.length is > to _dragDropPresentationModel[0].length\n\t *\n\t * for instance : initialization _dragDropPresentationModel[0] in between\n\t */\n\t\t\t\tif (_dragDropPresentationModel[0].length < _dragDropConfigModel.containerConfig.decoration.length) {\n\t\t\t\t\tvar missingGroupNumber = _dragDropConfigModel.containerConfig.decoration.length - _dragDropPresentationModel[0].length;\n\t\n\t\t\t\t\tfor (var i = 0; i < missingGroupNumber; i++) {\n\t\t\t\t\t\t_dragDropPresentationModel[0].push([]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t/**\n\t * push control to right index \n\t * (deduced by _dragDropConfigModel.containerConfig.decoration.WhenIndex value for groupId === thisGroup)\n\t */\n\t\t\t\t_dragDropConfigModel.containerConfig.decoration.forEach(function (groupConfig) {\n\t\t\t\t\tif (thisGroup.addToGroupCtrl === groupConfig.groupId) {\n\t\t\t\t\t\t_dragDropPresentationModel[0][groupConfig.WhenIndex].push(thisControl);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t/**\n\t * no group no control\n\t *\n\t * initialize _dragDropConfigModel.containerConfig.decoration list\n\t */\n\t\t\t\t_dragDropConfigModel.containerConfig.decoration.forEach(function () {\n\t\t\t\t\treturn _dragDropPresentationModel[0].push([]);\n\t\t\t\t});\n\t\t\t\t/**\n\t * push control to right index \n\t * (deduced by _dragDropConfigModel.containerConfig.decoration.WhenIndex value for groupId === thisGroup)\n\t */\n\t\t\t\t_dragDropConfigModel.containerConfig.decoration.forEach(function (groupConfig) {\n\t\t\t\t\tif (thisGroup.addToGroupCtrl === groupConfig.groupId) {\n\t\t\t\t\t\t_dragDropPresentationModel[0][groupConfig.WhenIndex].push(thisControl);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\t// easyFormDragWayConfig.$inject = ['$translateProvider'];\n\t\n\teasyFormDragWayConfig.$inject = [];\n\t\n\texports.default = easyFormDragWayConfig;\n\texports.EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME = EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME;\n\n/***/ },\n/* 79 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar LIST_DRAG_DROP_ITEM_CSS_CLASSES = [{\n\t cssClass: 'col-md-12',\n\t numberItemPerRow: 0\n\t}, {\n\t cssClass: 'col-md-12',\n\t numberItemPerRow: 1\n\t}, {\n\t cssClass: 'col-md-6',\n\t numberItemPerRow: 2\n\t}, {\n\t cssClass: 'col-md-4',\n\t numberItemPerRow: 3\n\t}];\n\t\n\tvar DRAG_DROP_CONFIG_MODEL = {\n\t dropZoneConfig: {\n\t decoration: [{\n\t WhenIndex: 0,\n\t ApplycssClass: 'col-md-4',\n\t fontAwesomeIcon: 'fa fa-level-up',\n\t title: 'Drag control from here : '\n\t }, {\n\t WhenIndex: 1,\n\t ApplycssClass: 'col-md-8',\n\t fontAwesomeIcon: 'fa fa-level-down',\n\t title: 'Drop control into here : '\n\t }],\n\t verboseMode: false\n\t },\n\t containerConfig: {\n\t decoration: [{\n\t WhenIndex: 0,\n\t ApplycssClass: 'col-md-12',\n\t title: 'Blank : ',\n\t groupId: 'blank',\n\t isCollapsed: true\n\t }, {\n\t WhenIndex: 1,\n\t ApplycssClass: 'col-md-12',\n\t title: 'Headers : ',\n\t groupId: 'headers',\n\t isCollapsed: true\n\t }, {\n\t WhenIndex: 2,\n\t ApplycssClass: 'col-md-12',\n\t title: 'Text inputs : ',\n\t groupId: 'inputs',\n\t isCollapsed: true\n\t }, {\n\t WhenIndex: 3,\n\t ApplycssClass: 'col-md-12',\n\t title: 'Textareas : ',\n\t groupId: 'textareas',\n\t isCollapsed: true\n\t }, {\n\t WhenIndex: 4,\n\t ApplycssClass: 'col-md-12',\n\t title: 'Radios : ',\n\t groupId: 'radios',\n\t isCollapsed: true\n\t }, {\n\t WhenIndex: 5,\n\t ApplycssClass: 'col-md-12',\n\t title: 'Checkboxes : ',\n\t groupId: 'checkboxes',\n\t isCollapsed: true\n\t }, {\n\t WhenIndex: 6,\n\t ApplycssClass: 'col-md-12',\n\t title: 'Selects : ',\n\t groupId: 'selects',\n\t isCollapsed: true\n\t }],\n\t verboseMode: false,\n\t collapseEnabled: true,\n\t collapseCtrl: [{\n\t atIndex: 0,\n\t collapse: true\n\t }, {\n\t atIndex: 1,\n\t collapse: true\n\t }]\n\t },\n\t itemConfig: {\n\t verboseMode: false\n\t }\n\t};\n\t\n\tvar DRAG_DROP_PRESENTATION_MODEL = [\n\t//1 column here is control selection column\n\t[], [\n\t//empty 1st line at initialisation\n\t[]]];\n\t\n\tvar ITEMS_NOT_TO_COUNT_FOR_REAL = {\n\t //placeholder : '',\n\t itemBeingDragged: ''\n\t};\n\t\n\texports.LIST_DRAG_DROP_ITEM_CSS_CLASSES = LIST_DRAG_DROP_ITEM_CSS_CLASSES;\n\texports.DRAG_DROP_CONFIG_MODEL = DRAG_DROP_CONFIG_MODEL;\n\texports.DRAG_DROP_PRESENTATION_MODEL = DRAG_DROP_PRESENTATION_MODEL;\n\texports.ITEMS_NOT_TO_COUNT_FOR_REAL = ITEMS_NOT_TO_COUNT_FOR_REAL;\n\n/***/ },\n/* 80 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS = exports.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* global angular */\n\t\n\t///////////////////////////////////////////////////////////////////////\n\t// TODO :\n\t// - check no use methods that come from step way and delete if not needed\n\t// - check other TODO (a lot of fixes are needed)\n\t///////////////////////////////////////////////////////////////////////\n\t\n\tvar _edaDragDropWayEdaDragdropWayEasyFormGenControllerHelpers = __webpack_require__(81);\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER = 'edaDragDropWayEasyFormGenCtrl';\n\tvar DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS = 'vm';\n\t\n\tvar edaDragDropWayEasyFormGenCtrl = function () {\n\t function edaDragDropWayEasyFormGenCtrl($scope, easyFormGenVersion, $filter, $anchorScroll, toaster, $timeout, $log, formFieldManage, controllerModalProxy, dragDropItemDecorationService, ddModelConfModelProxyService, ddItemRightClickedManager, easyFormDragWayConfig) {\n\t _classCallCheck(this, edaDragDropWayEasyFormGenCtrl);\n\t\n\t this.$scope = $scope;\n\t this.easyFormGenVersion = easyFormGenVersion;\n\t this.$filter = $filter;\n\t this.$anchorScroll = $anchorScroll;\n\t this.toaster = toaster;\n\t this.$timeout = $timeout;\n\t this.$log = $log;\n\t this.formFieldManage = formFieldManage;\n\t this.controllerModalProxy = controllerModalProxy;\n\t this.dragDropItemDecorationService = dragDropItemDecorationService;\n\t // this.dragDropConfig = dragDropConfig;\n\t this.ddModelConfModelProxyService = ddModelConfModelProxyService;\n\t this.ddItemRightClickedManager = ddItemRightClickedManager;\n\t this.easyFormDragWayConfig = easyFormDragWayConfig;\n\t\n\t this.init();\n\t }\n\t\n\t _createClass(edaDragDropWayEasyFormGenCtrl, [{\n\t key: 'init',\n\t value: function init() {\n\t this.easyFormGeneratorVERSION = this.easyFormGenVersion;\n\t this.tab = (0, _edaDragDropWayEdaDragdropWayEasyFormGenControllerHelpers.initTabModel)(this.easyFormDragWayConfig.isPreviewPanelVisible(), this.easyFormDragWayConfig.arePreviewModelsVisible());\n\t this.returnSaveEvent = false;\n\t this.dataModel = {}; //was vm.model in ES5 version\n\t this.wfFormFields = [];\n\t this.wfFormFieldsOnlyNeededProperties = [];\n\t this.ihm = (0, _edaDragDropWayEdaDragdropWayEasyFormGenControllerHelpers.initIhmModel)();\n\t this.easyFormDragDropProperties = this.easyFormDragWayConfig.getDragDropConfigModel();\n\t this.dragDropModel = [].concat(this.easyFormDragWayConfig.getDragDropPresentationModel());\n\t this.numberOfColumns = 1;\n\t this.MaxNumberOfColumns = 3;\n\t this.MinNumberOfColumns = 1;\n\t this.configuration = {};\n\t this.animationsEnabled = this.easyFormDragWayConfig.getModalAnimationValue();\n\t this.editPanelModel = { toggle: false };\n\t this.debugProxyModel = this.controllerModalProxy.ProxyModel;\n\t this.model = [];\n\t\n\t this.formFieldManage.initConfigurationEditFromScratch(this.configuration, false);\n\t this.controllerModalProxy.initProxyModel();\n\t }\n\t }, {\n\t key: 'collapseAllGroupControl',\n\t value: function collapseAllGroupControl(allExceptThisGroupIndex) {\n\t var _this = this;\n\t\n\t angular.forEach(this.easyFormDragDropProperties.containerConfig.decoration, function (value) {\n\t if (value.WhenIndex !== allExceptThisGroupIndex) _this.easyFormDragWayConfig.setDragDropConfigContainerDecorationCollapse(_this.easyFormDragDropProperties, value.WhenIndex, true);\n\t });\n\t }\n\t }, {\n\t key: 'onSubmit',\n\t value: function onSubmit() {\n\t this.toaster.pop({\n\t type: 'info',\n\t timeout: 2000,\n\t title: 'should save data model if it were not a static example',\n\t body: 'data :' + this.$filter('json')(this.dataModel, 4),\n\t showCloseButton: true\n\t });\n\t }\n\t }, {\n\t key: 'resetToZeroModel',\n\t value: function resetToZeroModel() {\n\t this.configuration.activeLine = 1;\n\t if (this.configuration.lines.length > 1) this.configuration.lines.splice(1, this.configuration.lines.length - 2);\n\t return this.countConfigurationModelLines();\n\t }\n\t\n\t //TO CHECK if does not come from step way :\n\t\n\t }, {\n\t key: 'countConfigurationModelLines',\n\t value: function countConfigurationModelLines() {\n\t return this.configuration.lines.length;\n\t }\n\t\n\t // //TO CHECK THEN TO DELETE : should come from step way...\n\t // setActiveLineNumber(lineNumber){\n\t // if (lineNumber <= this.countConfigurationModelLines()) this.configuration.activeLine = lineNumber;\n\t // }\n\t\n\t // //TO CHECK THEN TO DELETE : should come from step way...\n\t // upThisLine(indexLine){\n\t // if (indexLine > -1) {\n\t // if (this.configuration.lines[indexLine - 1]) {\n\t // let currentLineObj = this.configuration.lines[indexLine];\n\t // this.configuration.lines.splice(indexLine , 1);\n\t // this.configuration.lines.splice((indexLine - 1), 0, currentLineObj);\n\t // this.configuration.activeLine = 1;\n\t // }\n\t // }\n\t //\n\t // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n\t // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n\t // }\n\t\n\t // //TO CHECK THEN TO DELETE : should come from step way...\n\t // downThisLine(indexLine){\n\t // if (indexLine > -1) {\n\t // if (this.configuration.lines[indexLine + 1]) {\n\t // let currentLineObj = this.configuration.lines[indexLine];\n\t // this.configuration.lines.splice(indexLine , 1);\n\t // this.configuration.lines.splice((indexLine + 1), 0, currentLineObj);\n\t // this.configuration.activeLine = 1;\n\t // }\n\t // }\n\t // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n\t // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n\t // }\n\t\n\t // //TO CHECK THEN TO DELETE : should come from step way...\n\t // removeThisLine(index){\n\t // if (index > -1) {\n\t // if (this.configuration.lines.length > 1) {\n\t // if (this.configuration.activeLine === index + 1) this.configuration.activeLine = 1;\n\t // this.configuration.lines.splice(index, 1);\n\t // }else{\n\t // this.$timeout(()=>{\n\t // this.toaster.pop({\n\t // type : 'warning',\n\t // title : 'Last line' ,\n\t // body : 'Can\\'t delete the last line',\n\t // showCloseButton : true\n\t // });\n\t // }, 100);\n\t // }\n\t // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n\t // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n\t // }\n\t // }\n\t\n\t // //TO CHECK THEN TO DELETE : should come from step way...\n\t // increaseNumberOfColumns(){\n\t // if (this.configuration.lines[this.configuration.activeLine -1].columns.length < this.MaxNumberOfColumns) {\n\t // let newNumberOfColumns = this.configuration.lines[this.configuration.activeLine -1].columns.push(initColumnTemplate());\n\t // this.configuration.lines[this.configuration.activeLine -1].columns[newNumberOfColumns - 1].numColumn = newNumberOfColumns;\n\t // }\n\t // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n\t // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n\t // }\n\t\n\t // //TO CHECK THEN TO DELETE : should come from step way...\n\t // decreaseNumberOfColumns(indexLine, indexColumn){\n\t // if (this.configuration.lines[this.configuration.activeLine -1].columns.length > 1) {\n\t // this.configuration.lines[this.configuration.activeLine -1].columns.splice(this.configuration.lines[this.configuration.activeLine -1].columns.length -1, 1);\n\t // }\n\t // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n\t // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n\t // }\n\t\n\t }, {\n\t key: 'saveThisForm',\n\t value: function saveThisForm() {\n\t if (typeof this.configuration.formName === 'undefined') {\n\t this.toaster.pop({\n\t type: 'warning',\n\t timeout: 2000,\n\t title: 'Form name is undefined',\n\t body: 'Form has not been saved.',\n\t showCloseButton: true\n\t });\n\t return false;\n\t }\n\t if (this.configuration.formName === '') {\n\t this.toaster.pop({\n\t type: 'warning',\n\t timeout: 2000,\n\t title: 'Form name is required',\n\t body: 'Form has not been saved.',\n\t showCloseButton: true\n\t });\n\t return false;\n\t }\n\t this.toaster.pop({\n\t type: 'wait',\n\t timeout: 10000,\n\t title: 'Form is being saved',\n\t body: 'Wait.',\n\t showCloseButton: true\n\t });\n\t this.toaster.clear();\n\t this.returnSaveEvent = true;\n\t return true;\n\t }\n\t }, {\n\t key: 'dragoverCallbackContainer',\n\t value: function dragoverCallbackContainer(parentparentIndex, parentIndex, index) {\n\t //prevent container in layout column to be drag to control select contianer\n\t if (index === 0) return false;\n\t return true;\n\t }\n\t }, {\n\t key: 'dropCallback',\n\t value: function dropCallback(event, index, item, external, type, allowedType) {\n\t var _this2 = this;\n\t\n\t if (external) {\n\t if (allowedType === 'itemType' && !item.label) return false;\n\t if (allowedType === 'containerType' && !angular.isArray(item)) return false;\n\t }\n\t //set a timeout befire binding since ddModel may not be called when already full updated\n\t var timerRefreshDDToConfig = this.$timeout(function () {\n\t _this2.configuration = angular.copy(_this2.ddModelConfModelProxyService.refreshAllConfigurationFromDragAndDropModel(_this2.configuration, _this2.dragDropModel));\n\t _this2.formFieldManage.applyConfigurationToformlyModel(_this2.configuration, _this2.wfFormFields, _this2.dataModel);\n\t _this2.wfFormFieldsOnlyNeededProperties = angular.copy(_this2.wfFormFields);\n\t _this2.ddModelConfModelProxyService.refreshControlsKeys(_this2.configuration, _this2.dragDropModel);\n\t }, 200);\n\t this.$scope.$on('$destroy', function () {\n\t return _this2.$timeout.cancel(timerRefreshDDToConfig);\n\t });\n\t return item;\n\t }\n\t }, {\n\t key: 'dndItemMoved',\n\t value: function dndItemMoved(parentParentIndex, parentIndex, itemIndex) {\n\t //prevent item from first container to disapear when dropped on other container\n\t if (parentParentIndex > 0) this.dragDropModel[parentParentIndex][parentIndex].splice(itemIndex, 1);\n\t }\n\t }, {\n\t key: 'dragoverCallbackItems',\n\t value: function dragoverCallbackItems(ParentParentIndex, parentIndex) {\n\t //prevent items in layout column to be drag to control select\n\t if (parentIndex === 0) return false;\n\t return true;\n\t }\n\t\n\t //TODO : will replace in html : dnd-disable-if=\"items.length > 2\"\n\t\n\t }, {\n\t key: 'disableItemDropIf',\n\t value: function disableItemDropIf() {}\n\t }, {\n\t key: 'dropCallbackItems',\n\t value: function dropCallbackItems(event, index, realIndex, parentIndex, parentParentIndex, parentParentParentIndex, item, external, type, allowedType) {\n\t var _this3 = this;\n\t\n\t if (external) {\n\t if (allowedType === 'itemType' && !item.label) return false;\n\t if (allowedType === 'containerType' && !angular.isArray(item)) return false;\n\t }\n\t //set a timeout before binding since ddModel may not be called when already full updated\n\t var timerRefreshDDToConfig = this.$timeout(function () {\n\t _this3.configuration = angular.copy(_this3.ddModelConfModelProxyService.refreshAllConfigurationFromDragAndDropModel(_this3.configuration, _this3.dragDropModel));\n\t _this3.formFieldManage.applyConfigurationToformlyModel(_this3.configuration, _this3.wfFormFields, _this3.dataModel);\n\t _this3.wfFormFieldsOnlyNeededProperties = angular.copy(_this3.wfFormFields);\n\t // refresh controls key in dragDrop Model to persist already exists controls between refreshes when item drop events\n\t _this3.ddModelConfModelProxyService.refreshControlsKeys(_this3.configuration, _this3.dragDropModel);\n\t }, 200);\n\t // add/set rightCliked property to false (will help edaRightClick directive)\n\t this.ddItemRightClickedManager.setUnRightClicked(item);\n\t // timerRefreshDDToConfig timer destruction\n\t this.$scope.$on('$destroy', function () {\n\t return _this3.$timeout.cancel(timerRefreshDDToConfig);\n\t });\n\t return item;\n\t }\n\t }, {\n\t key: 'saveFromEditPanel',\n\t value: function saveFromEditPanel() {\n\t /**\n\t * TODO :\n\t * should be called from edit panel\n\t *\n\t * AND\n\t *\n\t * should call all these methods\n\t *\n\t * need to get :\n\t *\n\t * - line index\n\t * - column index\n\t * - basicSelectRowCollection (from edpitpanelcontroller) --> maybe in controllerModalProxy service\n\t * - groupedSelectRowCollection (from edpitpanelcontroller) --> maybe in controllerModalProxy service\n\t * - radioRowCollection (from edpitpanelcontroller) --> maybe in controllerModalProxy service\n\t */\n\t this.controllerModalProxy.bindSpecialCtrlTemporyModelsToProxyModel();\n\t //save config to control\n\t //controllerModalProxy.applyConfigToSelectedControl(self.proxyModel);\n\t //return current model to parent controller :\n\t\n\t //update configuration model and formly model\n\t this.controllerModalProxy.bindConfigurationModelFromProxyModel(this.controllerModalProxy.getEditPanelModelLineIndex(), this.controllerModalProxy.getEditPanelModelColumnIndex(), this.configuration);\n\t this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n\t this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n\t this.ddModelConfModelProxyService.refreshControlsKeys(this.configuration, this.dragDropModel);\n\t this.controllerModalProxy.setEditPanelModelToggle(false);\n\t this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();\n\t this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel);\n\t }\n\t }, {\n\t key: 'closeEditPanel',\n\t value: function closeEditPanel() {\n\t // reset all rightClicked control properties to false\n\t this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel);\n\t\n\t /**\n\t * TODO : refresh configuration model\n\t * uncomment after update these next 3 lines\n\t *\n\t * NOTE : indexLine AND numcolumn should be stored in service and\n\t * updated when togle sidepanel\n\t */\n\t //this.controllerModalProxy.bindConfigurationModelFromProxyModel(indexLine, numcolumn, modalAddCtrlModel, this.configuration);\n\t //this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n\t //this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n\t\n\t this.controllerModalProxy.setEditPanelModelToggle(false);\n\t this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();\n\t }\n\t }, {\n\t key: 'setRightClicked',\n\t value: function setRightClicked(previousState, item) {\n\t item.rightCliked = true;\n\t }\n\t }, {\n\t key: 'toggleEditPanel',\n\t value: function toggleEditPanel(event, lineIndex, colIndex, item) {\n\t var _this4 = this;\n\t\n\t this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel);\n\t // already opened (could be another control edit)\n\t if (this.controllerModalProxy.getEditPanelModelToggle()) {\n\t // -> immediate close and refresh configuration model + formly model\n\t this.controllerModalProxy.setEditPanelModelToggle(false);\n\t this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();\n\t\n\t //TODO : for refreshing\n\t //this.controllerModalProxy.bindConfigurationModelFromProxyModel(indexLine, numcolumn, modalAddCtrlModel, this.configuration);\n\t //this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n\t //this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n\t\n\t // check if new control right clicked otherwise just toggle side panel\n\t if (typeof this.controllerModalProxy.getEditPanelModelLineIndex() !== 'undefined' && typeof this.controllerModalProxy.getEditPanelModelColumnIndex() !== 'undefined' && typeof this.controllerModalProxy.getEditPanelModelControl() !== 'undefined') {\n\t if (this.controllerModalProxy.getEditPanelModelLineIndex() === lineIndex && this.controllerModalProxy.getEditPanelModelColumnIndex() === colIndex && angular.equals(this.controllerModalProxy.getEditPanelModelControl(), item)) {\n\t //console.info('already opened for SAME ctrl : so close - no re-open');\n\t } else {\n\t (function () {\n\t //console.info('already opened for DIFFERENT ctrl : so re-open');\n\t item.rightCliked = true;\n\t // set a timeout before re-opening, 500ms is ok for a ps-size=\"400px\"\n\t var timerCloseOpenedEditPanel = _this4.$timeout(function () {\n\t _this4.controllerModalProxy.setEditPanelModelLineIndex(lineIndex);\n\t _this4.controllerModalProxy.setEditPanelModelColumnIndex(colIndex);\n\t _this4.controllerModalProxy.setEditPanelModelControl(item);\n\t // control model passed to Service : controllerModalProxy\n\t _this4.controllerModalProxy.setProxyModelFromConfigurationSelection(_this4.configuration, lineIndex, colIndex);\n\t _this4.controllerModalProxy.setEditPanelModelToggle(true);\n\t _this4.$scope.editPanelModel.toggle = _this4.controllerModalProxy.getEditPanelModelToggle();\n\t }, 200);\n\t _this4.$scope.$on('$destroy', function () {\n\t return _this4.$timeout.cancel(timerCloseOpenedEditPanel);\n\t });\n\t })();\n\t }\n\t }\n\t } else {\n\t // previous state = closed = immediate open\n\t // console.info('NOT already opened : so open');\n\t item.rightCliked = true;\n\t\n\t this.controllerModalProxy.setEditPanelModelLineIndex(lineIndex);\n\t this.controllerModalProxy.setEditPanelModelColumnIndex(colIndex);\n\t this.controllerModalProxy.setEditPanelModelControl(item);\n\t // control model passed to Service : controllerModalProxy\n\t this.controllerModalProxy.setProxyModelFromConfigurationSelection(this.configuration, lineIndex, colIndex);\n\t this.controllerModalProxy.setEditPanelModelToggle(true);\n\t this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();\n\t }\n\t\n\t // console.info('after toggleLeftPanel check :');\n\t // console.dir({\n\t // 'this.editPanelModel' : angular.copy(this.editPanelModel),\n\t // 'controllerModalProxy.editPanelModel' : angular.copy(this.controllerModalProxy.editPanelModel)\n\t // });\n\t }\n\t\n\t // // refreshModels : to call after drag and drop events\n\t // refreshModels(){\n\t // this.$timeout(()=>{\n\t // console.info('refreshing models');\n\t // formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n\t // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n\t // }, 10);\n\t // }\n\t\n\t\n\t }, {\n\t key: 'removeThisLine',\n\t value: function removeThisLine(lineIndex) {\n\t this.dragDropModel[1].splice(lineIndex, 1);\n\t }\n\t\n\t //TODO : to fix\n\t\n\t }, {\n\t key: 'addNewline',\n\t value: function addNewline() {\n\t // re-render formfield\n\t // TODO : to fix\n\t this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n\t this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n\t }\n\t }, {\n\t key: 'insertNewLine',\n\t value: function insertNewLine() {\n\t this.addNewline();\n\t this.dragDropModel[1].push([]);\n\t }\n\t }]);\n\t\n\t return edaDragDropWayEasyFormGenCtrl;\n\t}();\n\t\n\tedaDragDropWayEasyFormGenCtrl.$inject = ['$scope', 'easyFormGenVersion', '$filter', '$anchorScroll', 'toaster', '$timeout', '$log', 'formFieldManage', 'controllerModalProxy', 'dragDropItemDecorationService', 'ddModelConfModelProxyService', 'ddItemRightClickedManager', 'easyFormDragWayConfig'];\n\t\n\texports.default = edaDragDropWayEasyFormGenCtrl;\n\texports.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER = DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER;\n\texports.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS = DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS;\n\n/***/ },\n/* 81 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t/* global angular */\n\tvar DEBUG_MODEL = {\n\t\tshowDebug: false,\n\t\tconfigurationModelNumberofLines: 1\n\t};\n\tvar initDebugModel = function initDebugModel() {\n\t\treturn angular.copy(DEBUG_MODEL);\n\t};\n\t\n\tvar DEFAULT_TAB_MODEL = {\n\t\teditTab: {\n\t\t\tactive: true\n\t\t},\n\t\tpreviewTab: {\n\t\t\tactive: false,\n\t\t\ttabVisible: true,\n\t\t\tmodelsVisible: true\n\t\t}\n\t};\n\t\n\tvar initTabModel = function initTabModel(isPreviewPanelVisible, arePreviewModelsVisible) {\n\t\tvar _tabModel = angular.copy(DEFAULT_TAB_MODEL);\n\t\tangular.extend(_tabModel.previewTab, {\n\t\t\ttabVisible: isPreviewPanelVisible,\n\t\t\tmodelsVisible: arePreviewModelsVisible\n\t\t});\n\t\treturn _tabModel;\n\t};\n\t\n\tvar COLUMN_TEMPLATE = {\n\t\tnumColumn: -1,\n\t\texist: true,\n\t\tcontrol: {\n\t\t\ttype: 'none',\n\t\t\tkey: 'none',\n\t\t\tsubtype: 'none'\n\t\t\t// templateOptions: {\n\t\t\t// label: 'none',\n\t\t\t// placeholder: 'none',\n\t\t\t// required: false,\n\t\t\t// description: 'Descriptive text'\n\t\t\t// }\n\t\t}\n\t};\n\tvar initColumnTemplate = function initColumnTemplate() {\n\t\treturn angular.copy(COLUMN_TEMPLATE);\n\t};\n\t\n\tvar LINE_TEMPLATE = {\n\t\tline: -1,\n\t\tactiveColumn: 1,\n\t\tcolumns: [{\n\t\t\tnumColumn: 1,\n\t\t\texist: true,\n\t\t\tcontrol: {\n\t\t\t\ttype: 'none',\n\t\t\t\tkey: 'none'\n\t\t\t\t// templateOptions: {\n\t\t\t\t// label: 'none',\n\t\t\t\t// placeholder: 'none',\n\t\t\t\t// required: false,\n\t\t\t\t// description: 'Descriptive text'\n\t\t\t\t// }\n\t\t\t}\n\t\t}]\n\t};\n\tvar initLineTemplate = function initLineTemplate() {\n\t\treturn angular.copy(LINE_TEMPLATE);\n\t};\n\t\n\tvar DEFAULT_IHM_MODEL = {\n\t\tpreview: {\n\t\t\tformlyModelViewExpanded: true,\n\t\t\tformlyFieldsViewExpanded: true,\n\t\t\tcustomizeFormButtonsExpanded: true,\n\t\t\tsaveThisFormExpanded: true\n\t\t}\n\t};\n\t\n\tvar initIhmModel = function initIhmModel() {\n\t\treturn angular.copy(DEFAULT_IHM_MODEL);\n\t};\n\t\n\texports.initDebugModel = initDebugModel;\n\texports.initTabModel = initTabModel;\n\texports.initColumnTemplate = initColumnTemplate;\n\texports.initLineTemplate = initLineTemplate;\n\texports.initIhmModel = initIhmModel;\n\n/***/ },\n/* 82 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE = undefined;\n\t\n\tvar _edaDragDropWayEdaDragdropWayEasyFormGenTemplate = __webpack_require__(83);\n\t\n\tvar _edaDragDropWayEdaDragdropWayEasyFormGenTemplate2 = _interopRequireDefault(_edaDragDropWayEdaDragdropWayEasyFormGenTemplate);\n\t\n\tvar _edaDragDropWayEdaDragdropWayEasyFormGen = __webpack_require__(80);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t/* global angular */\n\t\n\t//TODO : to bindToController\n\t//-> then angular 1.4+ will be required...\n\t//-> check methot to refactor inside rag drop way then common step way and drag drop way\n\t\n\tvar EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE = 'edaDragdropWayEasyFormGen';\n\t\n\tfunction edaDragdropWayEasyFormGen($timeout, formFieldManage, ddModelConfModelProxyService,\n\t// dragDropConfig,\n\teasyFormDragWayConfig) {\n\t\n\t\tvar directive = {\n\t\t\trestrict: 'E',\n\t\t\ttemplate: _edaDragDropWayEdaDragdropWayEasyFormGenTemplate2.default,\n\t\t\tscope: {\n\t\t\t\tedaEasyFormGeneratorModel: '=',\n\t\t\t\tedaSaveFormEvent: '&edaSaveFormEvent'\n\t\t\t},\n\t\t\tcontroller: _edaDragDropWayEdaDragdropWayEasyFormGen.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER,\n\t\t\tcontrollerAs: _edaDragDropWayEdaDragdropWayEasyFormGen.DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS,\n\t\t\treplace: false,\n\t\t\tlink: linkFct\n\t\t};\n\t\treturn directive;\n\t\n\t\tfunction linkFct(scope) {\n\t\t\t// watch \"scope.easyFormGeneratorModel\"\n\t\t\tscope.$watch(function () {\n\t\t\t\treturn scope.edaEasyFormGeneratorModel;\n\t\t\t}, function () {\n\t\t\t\treturn loadExistingConfigurationModel();\n\t\t\t}, true);\n\t\n\t\t\t// watch \"scope.returnSaveEvent\"\" = catch saving form event \n\t\t\tscope.$watch(function () {\n\t\t\t\treturn scope.returnSaveEvent;\n\t\t\t}, function (newValue) {\n\t\t\t\tif (newValue === true) {\n\t\t\t\t\tvar _easyFormGeneratorModel = {\n\t\t\t\t\t\tformName: scope.vm.configuration.formName,\n\t\t\t\t\t\tbtnSubmitText: scope.vm.configuration.submitButtonText,\n\t\t\t\t\t\tbtnCancelText: scope.vm.configuration.cancelButtonText,\n\t\t\t\t\t\tedaFieldsModel: scope.vm.configuration.lines,\n\t\t\t\t\t\t//just as test\n\t\t\t\t\t\tedaFieldsModelStringified: angular.toJson(scope.vm.configuration.lines),\n\t\t\t\t\t\tformlyFieldsModel: scope.vm.wfFormFieldsOnlyNeededProperties,\n\t\t\t\t\t\tdataModel: scope.vm.dataModel\n\t\t\t\t\t};\n\t\t\t\t\tscope.edaSaveFormEvent({\n\t\t\t\t\t\tedaEasyFormGeneratorModel: _easyFormGeneratorModel\n\t\t\t\t\t});\n\t\t\t\t\t//back to false, waiting next save event\n\t\t\t\t\tscope.returnSaveEvent = false;\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\tfunction returnAttributeConfigurationLinesIfNotEmpty() {\n\t\t\t\tvar edaEasyFormGeneratorModelToReturn = angular.isArray(scope.edaEasyFormGeneratorModel.edaFieldsModel) ? scope.edaEasyFormGeneratorModel.edaFieldsModel.length > 0 ? scope.edaEasyFormGeneratorModel.edaFieldsModel : emptyEdaFieldsModel() : emptyEdaFieldsModel();\n\t\t\t\treturn edaEasyFormGeneratorModelToReturn;\n\t\t\t}\n\t\n\t\t\t/**\n\t \t* empty fields model : to display at least an empty line\n\t \t* otherwise would look like ugly empty line like it were a bug\n\t \t*/\n\t\t\tfunction emptyEdaFieldsModel() {\n\t\t\t\tvar emptyModel = [{\n\t\t\t\t\t'line': 1,\n\t\t\t\t\t'activeColumn': 1,\n\t\t\t\t\t'columns': [{\n\t\t\t\t\t\t'numColumn': 1,\n\t\t\t\t\t\t'exist': true,\n\t\t\t\t\t\t'control': {\n\t\t\t\t\t\t\t'type': 'none',\n\t\t\t\t\t\t\t'key': 'none'\n\t\t\t\t\t\t}\n\t\t\t\t\t}]\n\t\t\t\t}];\n\t\t\t\treturn emptyModel;\n\t\t\t}\n\t\n\t\t\tfunction returnAttributeDataModelIfNotEmpty() {\n\t\t\t\tvar dataModelToReturn = angular.isArray(scope.edaEasyFormGeneratorModel.dataModel) ? scope.edaEasyFormGeneratorModel.dataModel.length > 0 ? scope.edaEasyFormGeneratorModel.dataModel : [] : [];\n\t\t\t\treturn dataModelToReturn;\n\t\t\t}\n\t\n\t\t\tfunction loadExistingConfigurationModel() {\n\t\t\t\tif (angular.isDefined(scope.edaEasyFormGeneratorModel)) {\n\t\t\t\t\tvar configlines = returnAttributeConfigurationLinesIfNotEmpty();\n\t\t\t\t\tscope.vm.configurationLoaded = {};\n\t\t\t\t\tformFieldManage.bindConfigurationLines(scope.vm.configurationLoaded, configlines, false);\n\t\t\t\t\t//apply configuration model\n\t\t\t\t\tscope.vm.configuration = angular.copy(scope.vm.configurationLoaded);\n\t\t\t\t\t//apply ddModel\n\t\t\t\t\tddModelConfModelProxyService.loadDragDropModelFromConfigurationModel(scope.vm.configuration, scope.vm.dragDropModel);\n\t\t\t\t\tupdateConfigurationClassName(scope.vm.configuration);\n\t\t\t\t\tddModelConfModelProxyService.refreshControlsKeys(scope.vm.configuration, scope.vm.dragDropModel);\n\t\t\t\t\t//apply formly model\n\t\t\t\t\tformFieldManage.applyConfigurationToformlyModel(scope.vm.configuration, scope.vm.wfFormFields, scope.vm.dataModel);\n\t\t\t\t\tscope.vm.wfFormFieldsOnlyNeededProperties = angular.copy(scope.vm.wfFormFields);\n\t\t\t\t\tscope.vm.dataModel = returnAttributeDataModelIfNotEmpty();\n\t\t\t\t\tscope.vm.configuration.formName = angular.isString(scope.edaEasyFormGeneratorModel.formName) ? scope.edaEasyFormGeneratorModel.formName : '';\n\t\t\t\t\tscope.vm.configuration.submitButtonText = angular.isString(scope.edaEasyFormGeneratorModel.btnSubmitText) ? scope.edaEasyFormGeneratorModel.btnSubmitText : 'Submit';\n\t\t\t\t\tscope.vm.configuration.cancelButtonText = angular.isString(scope.edaEasyFormGeneratorModel.btnCancelText) ? scope.edaEasyFormGeneratorModel.btnCancelText : 'Cancel';\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfunction updateConfigurationClassName(configModel) {\n\t\t\t\tangular.forEach(configModel.lines, function (aline) {\n\t\t\t\t\tvar cssClassToApply = easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(aline.columns.length);\n\t\t\t\t\tangular.forEach(aline.columns, function (aControl) {\n\t\t\t\t\t\treturn aControl.control.className = cssClassToApply;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t\n\tedaDragdropWayEasyFormGen.$inject = ['$timeout', 'formFieldManage', 'ddModelConfModelProxyService',\n\t// 'dragDropConfig',\n\t'easyFormDragWayConfig'];\n\t\n\texports.default = edaDragdropWayEasyFormGen;\n\texports.EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE = EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE;\n\n/***/ },\n/* 83 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n \\n
\\n
\\n \\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
2\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdnd-dragover=\\\"vm.dragoverCallbackItems($parent.$parent.$index, $parent.$index, $index, external);\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdnd-drop=\\\"vm.dropCallbackItems(event, index, $index,$parent.$index, $parent.$parent.$index, $parent.$parent.$parent.$index, item, external, type, 'itemType');\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclass=\\\"itemlist\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-content-counter\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-value-when-placeholder=\\\"dndPlaceholder\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-value-when-dragging=\\\"dndDraggingSource\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-full-model = \\\"vm.dragDropModel\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-content-counter-current-index=\\\"{{$index}}\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-content-counter-parent-index=\\\"{{$parent.$index}}\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-content-counter-force-css-refresh = \\\"command.forceRefresh\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tCustomize form buttons\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tDATA MODEL\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{vm.model | json}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tFIELDS MODEL (ready to save to database one)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{vm.wfFormFieldsOnlyNeededProperties | json}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tSave this form\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tsave this form\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t \\n\\t\\t\\t
\\n\\t\\t\\t
\\n \\n Easy form generator : {{vm.easyFormGeneratorVERSION}} — Erwan DATIN (MacKentoch)\\n \\n\\t\\t\\t \\n
\\n
\\n \\n\"\n\n/***/ },\n/* 84 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _edaDragDropWayTrustThis = __webpack_require__(85);\n\t\n\tvar _edaDragDropWayTrustThis2 = _interopRequireDefault(_edaDragDropWayTrustThis);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar TRUST_THIS_FILTER_MODULE = 'edaDragDropWay.trustThis.filter';\n\t\n\texports.default = angular.module(TRUST_THIS_FILTER_MODULE, []).filter(_edaDragDropWayTrustThis.TRUST_THIS_FILTER_NAME, _edaDragDropWayTrustThis2.default);\n\n/***/ },\n/* 85 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar TRUST_THIS_FILTER_NAME = 'trustThis';\n\t\n\tfunction trustThis($sce) {\n\t return function (value, type) {\n\t return $sce.trustAs(type || 'html', value);\n\t };\n\t}\n\t\n\ttrustThis.$inject = ['$sce'];\n\t\n\texports.default = trustThis;\n\texports.TRUST_THIS_FILTER_NAME = TRUST_THIS_FILTER_NAME;\n\n/***/ }\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// eda.dragdropway.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap dc87e9d16275571fdf62","import './vendors';\nimport './style/drag_and_drop.scss';\nimport './main';\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/index.js","import 'api-check'; // NOTE: always imported before angular-formly!\nimport 'angular-formly';\nimport 'angular-formly-templates-bootstrap';\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/vendors.js","//! api-check version 7.5.5 built with ♥ by Kent C. Dodds (http://kent.doddsfamily.us) (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apiCheck\"] = factory();\n\telse\n\t\troot[\"apiCheck\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n\tvar _apiCheck = __webpack_require__(1);\n\n\tvar _apiCheck2 = _interopRequireDefault(_apiCheck);\n\n\texports['default'] = _apiCheck2['default'];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar stringify = __webpack_require__(2);\n\tvar apiCheckUtil = __webpack_require__(3);\n\tvar each = apiCheckUtil.each;\n\tvar isError = apiCheckUtil.isError;\n\tvar t = apiCheckUtil.t;\n\tvar arrayify = apiCheckUtil.arrayify;\n\tvar getCheckerDisplay = apiCheckUtil.getCheckerDisplay;\n\tvar typeOf = apiCheckUtil.typeOf;\n\tvar getError = apiCheckUtil.getError;\n\n\tvar checkers = __webpack_require__(4);\n\tvar apiCheckApis = getApiCheckApis();\n\n\tmodule.exports = getApiCheckInstance;\n\tmodule.exports.VERSION = (\"7.5.5\");\n\tmodule.exports.utils = apiCheckUtil;\n\tmodule.exports.globalConfig = {\n\t verbose: false,\n\t disabled: false\n\t};\n\n\tvar apiCheckApiCheck = getApiCheckInstance({\n\t output: { prefix: 'apiCheck' }\n\t});\n\tmodule.exports.internalChecker = apiCheckApiCheck;\n\n\teach(checkers, function (checker, name) {\n\t return module.exports[name] = checker;\n\t});\n\n\tfunction getApiCheckInstance() {\n\t var config = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t var extraCheckers = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n\t /* eslint complexity:[2, 6] */\n\t if (apiCheckApiCheck && arguments.length) {\n\t apiCheckApiCheck['throw'](apiCheckApis.getApiCheckInstanceCheckers, arguments, {\n\t prefix: 'creating an apiCheck instance'\n\t });\n\t }\n\n\t var additionalProperties = {\n\t 'throw': getApiCheck(true),\n\t warn: getApiCheck(false),\n\t getErrorMessage: getErrorMessage,\n\t handleErrorMessage: handleErrorMessage,\n\t config: {\n\t output: config.output || {\n\t prefix: '',\n\t suffix: '',\n\t docsBaseUrl: ''\n\t },\n\t verbose: config.verbose || false,\n\t disabled: config.disabled || false\n\t },\n\t utils: apiCheckUtil\n\t };\n\n\t each(additionalProperties, function (wrapper, name) {\n\t return apiCheck[name] = wrapper;\n\t });\n\n\t var disabled = apiCheck.disabled || module.exports.globalConfig.disabled;\n\t each(checkers.getCheckers(disabled), function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\t each(extraCheckers, function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\n\t return apiCheck;\n\n\t /**\n\t * This is the instance function. Other things are attached to this see additional properties above.\n\t * @param {Array} api - the checkers to check with\n\t * @param {Array} args - the args to check\n\t * @param {Object} output - output options\n\t * @returns {Object} - if this has a failed = true property, then it failed\n\t */\n\t function apiCheck(api, args, output) {\n\t /* eslint complexity:[2, 8] */\n\t if (apiCheck.config.disabled || module.exports.globalConfig.disabled) {\n\t return {\n\t apiTypes: {}, argTypes: {},\n\t passed: true, message: '',\n\t failed: false\n\t }; // empty version of what is normally returned\n\t }\n\t checkApiCheckApi(arguments);\n\t if (!Array.isArray(api)) {\n\t api = [api];\n\t args = [args];\n\t } else {\n\t // turn arguments into an array\n\t args = Array.prototype.slice.call(args);\n\t }\n\t var messages = checkEnoughArgs(api, args);\n\t if (!messages.length) {\n\t // this is where we actually go perform the checks.\n\t messages = checkApiWithArgs(api, args);\n\t }\n\n\t var returnObject = getTypes(api, args);\n\t returnObject.args = args;\n\t if (messages.length) {\n\t returnObject.message = apiCheck.getErrorMessage(api, args, messages, output);\n\t returnObject.failed = true;\n\t returnObject.passed = false;\n\t } else {\n\t returnObject.message = '';\n\t returnObject.failed = false;\n\t returnObject.passed = true;\n\t }\n\t return returnObject;\n\t }\n\n\t /**\n\t * checkApiCheckApi, should be read like: check apiCheck api. As in, check the api for apiCheck :-)\n\t * @param {Array} checkApiArgs - args provided to apiCheck function\n\t */\n\t function checkApiCheckApi(checkApiArgs) {\n\t var api = checkApiArgs[0];\n\t var args = checkApiArgs[1];\n\t var isArrayOrArgs = Array.isArray(args) || args && typeof args === 'object' && typeof args.length === 'number';\n\n\t if (Array.isArray(api) && !isArrayOrArgs) {\n\t throw new Error(getErrorMessage(api, [args], ['If an array is provided for the api, an array must be provided for the args as well.'], { prefix: 'apiCheck' }));\n\t }\n\t // dog fooding here\n\t var errors = checkApiWithArgs(apiCheckApis.checkApiCheckApi, checkApiArgs);\n\t if (errors.length) {\n\t var message = apiCheck.getErrorMessage(apiCheckApis.checkApiCheckApi, checkApiArgs, errors, {\n\t prefix: 'apiCheck'\n\t });\n\t apiCheck.handleErrorMessage(message, true);\n\t }\n\t }\n\n\t function getApiCheck(shouldThrow) {\n\t return function apiCheckWrapper(api, args, output) {\n\t var result = apiCheck(api, args, output);\n\t apiCheck.handleErrorMessage(result.message, shouldThrow);\n\t return result; // wont get here if an error is thrown\n\t };\n\t }\n\n\t function handleErrorMessage(message, shouldThrow) {\n\t if (shouldThrow && message) {\n\t throw new Error(message);\n\t } else if (message) {\n\t /* eslint no-console:0 */\n\t console.warn(message);\n\t }\n\t }\n\n\t function getErrorMessage(api, args) {\n\t var messages = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];\n\t var output = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];\n\n\t var gOut = apiCheck.config.output || {};\n\t var prefix = getPrefix();\n\t var suffix = getSuffix();\n\t var url = getUrl();\n\t var message = 'apiCheck failed! ' + messages.join(', ');\n\t var passedAndShouldHavePassed = '\\n\\n' + buildMessageFromApiAndArgs(api, args);\n\t return (prefix + ' ' + message + ' ' + suffix + ' ' + (url || '') + passedAndShouldHavePassed).trim();\n\n\t function getPrefix() {\n\t var p = output.onlyPrefix;\n\t if (!p) {\n\t p = ((gOut.prefix || '') + ' ' + (output.prefix || '')).trim();\n\t }\n\t return p;\n\t }\n\n\t function getSuffix() {\n\t var s = output.onlySuffix;\n\t if (!s) {\n\t s = ((output.suffix || '') + ' ' + (gOut.suffix || '')).trim();\n\t }\n\t return s;\n\t }\n\n\t function getUrl() {\n\t var u = output.url;\n\t if (!u) {\n\t u = gOut.docsBaseUrl && output.urlSuffix && ('' + gOut.docsBaseUrl + output.urlSuffix).trim();\n\t }\n\t return u;\n\t }\n\t }\n\n\t function buildMessageFromApiAndArgs(api, args) {\n\t var _getTypes = getTypes(api, args);\n\n\t var apiTypes = _getTypes.apiTypes;\n\t var argTypes = _getTypes.argTypes;\n\n\t var copy = Array.prototype.slice.call(args || []);\n\t var replacedItems = [];\n\t replaceFunctionWithName(copy);\n\t var passedArgs = getObjectString(copy);\n\t argTypes = getObjectString(argTypes);\n\t apiTypes = getObjectString(apiTypes);\n\n\t return generateMessage();\n\n\t // functions\n\n\t function replaceFunctionWithName(obj) {\n\t each(obj, function (val, name) {\n\t /* eslint complexity:[2, 6] */\n\t if (replacedItems.indexOf(val) === -1) {\n\t // avoid recursive problems\n\t replacedItems.push(val);\n\t if (typeof val === 'object') {\n\t replaceFunctionWithName(obj);\n\t } else if (typeof val === 'function') {\n\t obj[name] = val.displayName || val.name || 'anonymous function';\n\t }\n\t }\n\t });\n\t }\n\n\t function getObjectString(types) {\n\t if (!types || !types.length) {\n\t return 'nothing';\n\t } else if (types && types.length === 1) {\n\t types = types[0];\n\t }\n\t return stringify(types, null, 2);\n\t }\n\n\t function generateMessage() {\n\t var n = '\\n';\n\t var useS = true;\n\t if (args && args.length === 1) {\n\t if (typeof args[0] === 'object' && args[0] !== null) {\n\t useS = !!Object.keys(args[0]).length;\n\t } else {\n\t useS = false;\n\t }\n\t }\n\t var types = 'type' + (useS ? 's' : '');\n\t var newLine = n + n;\n\t return 'You passed:' + n + passedArgs + newLine + ('With the ' + types + ':' + n + argTypes + newLine) + ('The API calls for:' + n + apiTypes);\n\t }\n\t }\n\n\t function getTypes(api, args) {\n\t api = arrayify(api);\n\t args = arrayify(args);\n\t var apiTypes = api.map(function (checker, index) {\n\t var specified = module.exports.globalConfig.hasOwnProperty('verbose');\n\t return getCheckerDisplay(checker, {\n\t terse: specified ? !module.exports.globalConfig.verbose : !apiCheck.config.verbose,\n\t obj: args[index],\n\t addHelpers: true\n\t });\n\t });\n\t var argTypes = args.map(function (arg) {\n\t return getArgDisplay(arg, []);\n\t });\n\t return { argTypes: argTypes, apiTypes: apiTypes };\n\t }\n\t}\n\n\t// STATELESS FUNCTIONS\n\n\t/**\n\t * This is where the magic happens for actually checking the arguments with the api.\n\t * @param {Array} api - checkers\n\t * @param {Array} args - and arguments object\n\t * @returns {Array} - the error messages\n\t */\n\tfunction checkApiWithArgs(api, args) {\n\t /* eslint complexity:[2, 7] */\n\t var messages = [];\n\t var failed = false;\n\t var checkerIndex = 0;\n\t var argIndex = 0;\n\t var arg = undefined,\n\t checker = undefined,\n\t res = undefined,\n\t lastChecker = undefined,\n\t argName = undefined,\n\t argFailed = undefined,\n\t skipPreviousChecker = undefined;\n\t /* jshint -W084 */\n\t while ((checker = api[checkerIndex++]) && argIndex < args.length) {\n\t arg = args[argIndex++];\n\t argName = 'Argument ' + argIndex + (checker.isOptional ? ' (optional)' : '');\n\t res = checker(arg, 'value', argName);\n\t argFailed = isError(res);\n\t lastChecker = checkerIndex >= api.length;\n\t skipPreviousChecker = checkerIndex > 1 && api[checkerIndex - 1].isOptional;\n\t if (argFailed && lastChecker || argFailed && !lastChecker && !checker.isOptional && !skipPreviousChecker) {\n\t failed = true;\n\t messages.push(getCheckerErrorMessage(res, checker, arg));\n\t } else if (argFailed && checker.isOptional) {\n\t argIndex--;\n\t } else {\n\t messages.push(t(argName) + ' passed');\n\t }\n\t }\n\t return failed ? messages : [];\n\t}\n\n\tcheckerTypeType.type = 'function with __apiCheckData property and `${function.type}` property';\n\tfunction checkerTypeType(checkerType, name, location) {\n\t var apiCheckDataChecker = checkers.shape({\n\t type: checkers.string,\n\t optional: checkers.bool\n\t });\n\t var asFunc = checkers.func.withProperties({ __apiCheckData: apiCheckDataChecker });\n\t var asShape = checkers.shape({ __apiCheckData: apiCheckDataChecker });\n\t var wrongShape = checkers.oneOfType([asFunc, asShape])(checkerType, name, location);\n\t if (isError(wrongShape)) {\n\t return wrongShape;\n\t }\n\t if (typeof checkerType !== 'function' && !checkerType.hasOwnProperty(checkerType.__apiCheckData.type)) {\n\t return getError(name, location, checkerTypeType.type);\n\t }\n\t}\n\n\tfunction getCheckerErrorMessage(res, checker, val) {\n\t var checkerHelp = getCheckerHelp(checker, val);\n\t checkerHelp = checkerHelp ? ' - ' + checkerHelp : '';\n\t return res.message + checkerHelp;\n\t}\n\n\tfunction getCheckerHelp(_ref, val) {\n\t var help = _ref.help;\n\n\t if (!help) {\n\t return '';\n\t }\n\t if (typeof help === 'function') {\n\t help = help(val);\n\t }\n\t return help;\n\t}\n\n\tfunction checkEnoughArgs(api, args) {\n\t var requiredArgs = api.filter(function (a) {\n\t return !a.isOptional;\n\t });\n\t if (args.length < requiredArgs.length) {\n\t return ['Not enough arguments specified. Requires `' + requiredArgs.length + '`, you passed `' + args.length + '`'];\n\t } else {\n\t return [];\n\t }\n\t}\n\n\tfunction getArgDisplay(arg, gottenArgs) {\n\t /* eslint complexity:[2, 7] */\n\t var cName = arg && arg.constructor && arg.constructor.name;\n\t var type = typeOf(arg);\n\t if (type === 'function') {\n\t if (hasKeys()) {\n\t var properties = stringify(getDisplayIfNotGotten());\n\t return cName + ' (with properties: ' + properties + ')';\n\t }\n\t return cName;\n\t }\n\n\t if (arg === null) {\n\t return 'null';\n\t }\n\n\t if (type !== 'array' && type !== 'object') {\n\t return type;\n\t }\n\n\t if (hasKeys()) {\n\t return getDisplayIfNotGotten();\n\t }\n\n\t return cName;\n\n\t // utility functions\n\t function hasKeys() {\n\t return arg && Object.keys(arg).length;\n\t }\n\n\t function getDisplayIfNotGotten() {\n\t if (gottenArgs.indexOf(arg) !== -1) {\n\t return '[Circular]';\n\t }\n\t gottenArgs.push(arg);\n\t return getDisplay(arg, gottenArgs);\n\t }\n\t}\n\n\tfunction getDisplay(obj, gottenArgs) {\n\t var argDisplay = {};\n\t each(obj, function (v, k) {\n\t return argDisplay[k] = getArgDisplay(v, gottenArgs);\n\t });\n\t return argDisplay;\n\t}\n\n\tfunction getApiCheckApis() {\n\t var os = checkers.string.optional;\n\n\t var checkerFnChecker = checkers.func.withProperties({\n\t type: checkers.oneOfType([checkers.string, checkerTypeType]).optional,\n\t displayName: checkers.string.optional,\n\t shortType: checkers.string.optional,\n\t notOptional: checkers.bool.optional,\n\t notRequired: checkers.bool.optional\n\t });\n\n\t var getApiCheckInstanceCheckers = [checkers.shape({\n\t output: checkers.shape({\n\t prefix: checkers.string.optional,\n\t suffix: checkers.string.optional,\n\t docsBaseUrl: checkers.string.optional\n\t }).strict.optional,\n\t verbose: checkers.bool.optional,\n\t disabled: checkers.bool.optional\n\t }).strict.optional, checkers.objectOf(checkerFnChecker).optional];\n\n\t var checkApiCheckApi = [checkers.typeOrArrayOf(checkerFnChecker), checkers.any.optional, checkers.shape({\n\t prefix: os, suffix: os, urlSuffix: os, // appended case\n\t onlyPrefix: os, onlySuffix: os, url: os // override case\n\t }).strict.optional];\n\n\t return {\n\t checkerFnChecker: checkerFnChecker,\n\t getApiCheckInstanceCheckers: getApiCheckInstanceCheckers,\n\t checkApiCheckApi: checkApiCheckApi\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = stringify;\n\n\tfunction getSerialize (fn, decycle) {\n\t var seen = [], keys = [];\n\t decycle = decycle || function(key, value) {\n\t return '[Circular ' + getPath(value, seen, keys) + ']'\n\t };\n\t return function(key, value) {\n\t var ret = value;\n\t if (typeof value === 'object' && value) {\n\t if (seen.indexOf(value) !== -1)\n\t ret = decycle(key, value);\n\t else {\n\t seen.push(value);\n\t keys.push(key);\n\t }\n\t }\n\t if (fn) ret = fn(key, ret);\n\t return ret;\n\t }\n\t}\n\n\tfunction getPath (value, seen, keys) {\n\t var index = seen.indexOf(value);\n\t var path = [ keys[index] ];\n\t for (index--; index >= 0; index--) {\n\t if (seen[index][ path[0] ] === value) {\n\t value = seen[index];\n\t path.unshift(keys[index]);\n\t }\n\t }\n\t return '~' + path.join('.');\n\t}\n\n\tfunction stringify(obj, fn, spaces, decycle) {\n\t return JSON.stringify(obj, getSerialize(fn, decycle), spaces);\n\t}\n\n\tstringify.getSerialize = getSerialize;\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\tvar stringify = __webpack_require__(2);\n\tvar checkerHelpers = {\n\t addOptional: addOptional, getRequiredVersion: getRequiredVersion, setupChecker: setupChecker, addNullable: addNullable\n\t};\n\n\tmodule.exports = {\n\t each: each, copy: copy, typeOf: typeOf, arrayify: arrayify, getCheckerDisplay: getCheckerDisplay,\n\t isError: isError, list: list, getError: getError, nAtL: nAtL, t: t, undef: undef, checkerHelpers: checkerHelpers,\n\t noop: noop\n\t};\n\n\tfunction copy(obj) {\n\t var type = typeOf(obj);\n\t var daCopy = undefined;\n\t if (type === 'array') {\n\t daCopy = [];\n\t } else if (type === 'object') {\n\t daCopy = {};\n\t } else {\n\t return obj;\n\t }\n\t each(obj, function (val, key) {\n\t daCopy[key] = val; // cannot single-line this because we don't want to abort the each\n\t });\n\t return daCopy;\n\t}\n\n\tfunction typeOf(obj) {\n\t if (Array.isArray(obj)) {\n\t return 'array';\n\t } else if (obj instanceof RegExp) {\n\t return 'object';\n\t } else {\n\t return typeof obj;\n\t }\n\t}\n\n\tfunction getCheckerDisplay(checker, options) {\n\t /* eslint complexity:[2, 7] */\n\t var display = undefined;\n\t var short = options && options.short;\n\t if (short && checker.shortType) {\n\t display = checker.shortType;\n\t } else if (!short && typeof checker.type === 'object' || checker.type === 'function') {\n\t display = getCheckerType(checker, options);\n\t } else {\n\t display = getCheckerType(checker, options) || checker.displayName || checker.name;\n\t }\n\t return display;\n\t}\n\n\tfunction getCheckerType(_ref, options) {\n\t var type = _ref.type;\n\n\t if (typeof type === 'function') {\n\t var __apiCheckData = type.__apiCheckData;\n\t var typeTypes = type(options);\n\t type = _defineProperty({\n\t __apiCheckData: __apiCheckData\n\t }, __apiCheckData.type, typeTypes);\n\t }\n\t return type;\n\t}\n\n\tfunction arrayify(obj) {\n\t if (!obj) {\n\t return [];\n\t } else if (Array.isArray(obj)) {\n\t return obj;\n\t } else {\n\t return [obj];\n\t }\n\t}\n\n\tfunction each(obj, iterator, context) {\n\t if (Array.isArray(obj)) {\n\t return eachArry(obj, iterator, context);\n\t } else {\n\t return eachObj(obj, iterator, context);\n\t }\n\t}\n\n\tfunction eachObj(obj, iterator, context) {\n\t var ret = undefined;\n\t var hasOwn = Object.prototype.hasOwnProperty;\n\t /* eslint prefer-const:0 */ // some weird eslint bug?\n\t for (var key in obj) {\n\t if (hasOwn.call(obj, key)) {\n\t ret = iterator.call(context, obj[key], key, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t }\n\t return true;\n\t}\n\n\tfunction eachArry(obj, iterator, context) {\n\t var ret = undefined;\n\t var length = obj.length;\n\t for (var i = 0; i < length; i++) {\n\t ret = iterator.call(context, obj[i], i, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t return true;\n\t}\n\n\tfunction isError(obj) {\n\t return obj instanceof Error;\n\t}\n\n\tfunction list(arry, join, finalJoin) {\n\t arry = arrayify(arry);\n\t var copy = arry.slice();\n\t var last = copy.pop();\n\t if (copy.length === 1) {\n\t join = ' ';\n\t }\n\t return copy.join(join) + ('' + (copy.length ? join + finalJoin : '') + last);\n\t}\n\n\tfunction getError(name, location, checkerType) {\n\t if (typeof checkerType === 'function') {\n\t checkerType = checkerType({ short: true });\n\t }\n\t var stringType = typeof checkerType !== 'object' ? checkerType : stringify(checkerType);\n\t return new Error(nAtL(name, location) + ' must be ' + t(stringType));\n\t}\n\n\tfunction nAtL(name, location) {\n\t var tName = t(name || 'value');\n\t var tLocation = !location ? '' : ' at ' + t(location);\n\t return '' + tName + tLocation;\n\t}\n\n\tfunction t(thing) {\n\t return '`' + thing + '`';\n\t}\n\n\tfunction undef(thing) {\n\t return typeof thing === 'undefined';\n\t}\n\n\t/**\n\t * This will set up the checker with all of the defaults that most checkers want like required by default and an\n\t * optional version\n\t *\n\t * @param {Function} checker - the checker to setup with properties\n\t * @param {Object} properties - properties to add to the checker\n\t * @param {boolean} disabled - when set to true, this will set the checker to a no-op function\n\t * @returns {Function} checker - the setup checker\n\t */\n\tfunction setupChecker(checker, properties, disabled) {\n\t /* eslint complexity:[2, 9] */\n\t if (disabled) {\n\t // swap out the checker for its own copy of noop\n\t checker = getNoop();\n\t checker.isNoop = true;\n\t }\n\n\t if (typeof checker.type === 'string') {\n\t checker.shortType = checker.type;\n\t }\n\n\t // assign all properties given\n\t each(properties, function (prop, name) {\n\t return checker[name] = prop;\n\t });\n\n\t if (!checker.displayName) {\n\t checker.displayName = 'apiCheck ' + t(checker.shortType || checker.type || checker.name) + ' type checker';\n\t }\n\n\t if (!checker.notRequired) {\n\t checker = getRequiredVersion(checker, disabled);\n\t }\n\n\t if (!checker.notNullable) {\n\t addNullable(checker, disabled);\n\t }\n\n\t if (!checker.notOptional) {\n\t addOptional(checker, disabled);\n\t }\n\n\t return checker;\n\t}\n\n\tfunction getRequiredVersion(checker, disabled) {\n\t var requiredChecker = disabled ? getNoop() : function requiredChecker(val, name, location, obj) {\n\t if (undef(val) && !checker.isOptional) {\n\t var tLocation = location ? ' in ' + t(location) : '';\n\t var type = getCheckerDisplay(checker, { short: true });\n\t var stringType = typeof type !== 'object' ? type : stringify(type);\n\t return new Error('Required ' + t(name) + ' not specified' + tLocation + '. Must be ' + t(stringType));\n\t } else {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t copyProps(checker, requiredChecker);\n\t requiredChecker.originalChecker = checker;\n\t return requiredChecker;\n\t}\n\n\tfunction addOptional(checker, disabled) {\n\t var optionalCheck = disabled ? getNoop() : function optionalCheck(val, name, location, obj) {\n\t if (!undef(val)) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, optionalCheck);\n\n\t optionalCheck.isOptional = true;\n\t optionalCheck.displayName = checker.displayName + ' (optional)';\n\t optionalCheck.originalChecker = checker;\n\n\t // the magic line that allows you to add .optional to the end of the checkers\n\t checker.optional = optionalCheck;\n\n\t fixType(checker, checker.optional);\n\t}\n\n\tfunction addNullable(checker, disabled) {\n\t var nullableCheck = disabled ? getNoop() : function nullableCheck(val, name, location, obj) {\n\t if (val !== null) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, nullableCheck);\n\n\t nullableCheck.isNullable = true;\n\t nullableCheck.displayName = checker.displayName + ' (nullable)';\n\t nullableCheck.originalChecker = checker;\n\n\t // the magic line that allows you to add .nullable to the end of the checkers\n\t checker.nullable = nullableCheck;\n\n\t fixType(checker, checker.nullable);\n\t if (!checker.notOptional) {\n\t addOptional(checker.nullable, disabled);\n\t }\n\t}\n\n\tfunction fixType(checker, checkerCopy) {\n\t // fix type, because it's not a straight copy...\n\t // the reason is we need to specify type.__apiCheckData.optional as true for the terse/verbose option.\n\t // we also want to add \"(optional)\" to the types with a string\n\t if (typeof checkerCopy.type === 'object') {\n\t checkerCopy.type = copy(checkerCopy.type); // make our own copy of this\n\t } else if (typeof checkerCopy.type === 'function') {\n\t checkerCopy.type = function () {\n\t return checker.type.apply(checker, arguments);\n\t };\n\t } else {\n\t checkerCopy.type += ' (optional)';\n\t return;\n\t }\n\t checkerCopy.type.__apiCheckData = copy(checker.type.__apiCheckData) || {}; // and this\n\t checkerCopy.type.__apiCheckData.optional = true;\n\t}\n\n\t// UTILS\n\n\tfunction copyProps(src, dest) {\n\t each(Object.keys(src), function (key) {\n\t return dest[key] = src[key];\n\t });\n\t}\n\n\tfunction noop() {}\n\n\tfunction getNoop() {\n\t /* eslint no-shadow:0 */\n\t /* istanbul ignore next */\n\t return function noop() {};\n\t}\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar stringify = __webpack_require__(2);\n\n\tvar _require = __webpack_require__(3);\n\n\tvar typeOf = _require.typeOf;\n\tvar each = _require.each;\n\tvar copy = _require.copy;\n\tvar getCheckerDisplay = _require.getCheckerDisplay;\n\tvar isError = _require.isError;\n\tvar arrayify = _require.arrayify;\n\tvar list = _require.list;\n\tvar getError = _require.getError;\n\tvar nAtL = _require.nAtL;\n\tvar t = _require.t;\n\tvar checkerHelpers = _require.checkerHelpers;\n\tvar undef = _require.undef;\n\tvar setupChecker = checkerHelpers.setupChecker;\n\n\tvar checkers = module.exports = getCheckers();\n\tmodule.exports.getCheckers = getCheckers;\n\n\tfunction getCheckers(disabled) {\n\t return {\n\t array: typeOfCheckGetter('Array'),\n\t bool: typeOfCheckGetter('Boolean'),\n\t number: typeOfCheckGetter('Number'),\n\t string: typeOfCheckGetter('String'),\n\t func: funcCheckGetter(),\n\t object: objectCheckGetter(),\n\n\t emptyObject: emptyObjectCheckGetter(),\n\n\t instanceOf: instanceCheckGetter,\n\t oneOf: oneOfCheckGetter,\n\t oneOfType: oneOfTypeCheckGetter,\n\n\t arrayOf: arrayOfCheckGetter,\n\t objectOf: objectOfCheckGetter,\n\t typeOrArrayOf: typeOrArrayOfCheckGetter,\n\n\t range: rangeCheckGetter,\n\t lessThan: lessThanCheckGetter,\n\t greaterThan: greaterThanCheckGetter,\n\n\t shape: getShapeCheckGetter(),\n\t args: argumentsCheckerGetter(),\n\n\t any: anyCheckGetter(),\n\t 'null': nullCheckGetter()\n\n\t };\n\n\t function typeOfCheckGetter(type) {\n\t var lType = type.toLowerCase();\n\t return setupChecker(function typeOfCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== lType) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function funcCheckGetter() {\n\t var type = 'Function';\n\t var functionChecker = setupChecker(function functionCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== 'function') {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\n\t functionChecker.withProperties = function getWithPropertiesChecker(properties) {\n\t var apiError = checkers.objectOf(checkers.func)(properties, 'properties', 'apiCheck.func.withProperties');\n\t if (isError(apiError)) {\n\t throw apiError;\n\t }\n\t var shapeChecker = checkers.shape(properties, true);\n\t shapeChecker.type.__apiCheckData.type = 'func.withProperties';\n\n\t return setupChecker(function functionWithPropertiesChecker(val, name, location) {\n\t var notFunction = checkers.func(val, name, location);\n\t if (isError(notFunction)) {\n\t return notFunction;\n\t }\n\t return shapeChecker(val, name, location);\n\t }, { type: shapeChecker.type, shortType: 'func.withProperties' }, disabled);\n\t };\n\t return functionChecker;\n\t }\n\n\t function objectCheckGetter() {\n\t var type = 'Object';\n\t var nullType = 'Object (null ok)';\n\t var objectNullOkChecker = setupChecker(function objectNullOkCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== 'object') {\n\t return getError(name, location, nullType);\n\t }\n\t }, { type: nullType }, disabled);\n\n\t var objectChecker = setupChecker(function objectCheckerDefinition(val, name, location) {\n\t if (val === null || isError(objectNullOkChecker(val, name, location))) {\n\t return getError(name, location, objectChecker.type);\n\t }\n\t }, { type: type, nullOk: objectNullOkChecker }, disabled);\n\n\t return objectChecker;\n\t }\n\n\t function instanceCheckGetter(classToCheck) {\n\t return setupChecker(function instanceCheckerDefinition(val, name, location) {\n\t if (!(val instanceof classToCheck)) {\n\t return getError(name, location, classToCheck.name);\n\t }\n\t }, { type: classToCheck.name }, disabled);\n\t }\n\n\t function oneOfCheckGetter(enums) {\n\t var type = {\n\t __apiCheckData: { optional: false, type: 'enum' },\n\t 'enum': enums\n\t };\n\t var shortType = 'oneOf[' + enums.map(function (enm) {\n\t return stringify(enm);\n\t }).join(', ') + ']';\n\t return setupChecker(function oneOfCheckerDefinition(val, name, location) {\n\t if (!enums.some(function (enm) {\n\t return enm === val;\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function oneOfTypeCheckGetter(typeCheckers) {\n\t var checkersDisplay = typeCheckers.map(function (checker) {\n\t return getCheckerDisplay(checker, { short: true });\n\t });\n\t var shortType = 'oneOfType[' + checkersDisplay.join(', ') + ']';\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return typeCheckers.map(function (checker) {\n\t return getCheckerDisplay(checker, options);\n\t });\n\t }\n\t type.__apiCheckData = { optional: false, type: 'oneOfType' };\n\t return setupChecker(function oneOfTypeCheckerDefinition(val, name, location) {\n\t if (!typeCheckers.some(function (checker) {\n\t return !isError(checker(val, name, location));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function arrayOfCheckGetter(checker) {\n\t var shortCheckerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'arrayOf[' + shortCheckerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'arrayOf' };\n\n\t return setupChecker(function arrayOfCheckerDefinition(val, name, location) {\n\t if (isError(checkers.array(val)) || !val.every(function (item) {\n\t return !isError(checker(item));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function objectOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'objectOf[' + checkerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'objectOf' };\n\n\t return setupChecker(function objectOfCheckerDefinition(val, name, location) {\n\t var notObject = checkers.object(val, name, location);\n\t if (isError(notObject)) {\n\t return notObject;\n\t }\n\t var allTypesSuccess = each(val, function (item, key) {\n\t if (isError(checker(item, key, name))) {\n\t return false;\n\t }\n\t });\n\t if (!allTypesSuccess) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function typeOrArrayOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'typeOrArrayOf[' + checkerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\n\t type.__apiCheckData = { optional: false, type: 'typeOrArrayOf' };\n\t return setupChecker(function typeOrArrayOfDefinition(val, name, location, obj) {\n\t if (isError(checkers.oneOfType([checker, checkers.arrayOf(checker)])(val, name, location, obj))) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function getShapeCheckGetter() {\n\t function shapeCheckGetter(shape, nonObject) {\n\t var shapeTypes = {};\n\t each(shape, function (checker, prop) {\n\t shapeTypes[prop] = getCheckerDisplay(checker);\n\t });\n\t function type() {\n\t var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n\t var ret = {};\n\t var terse = options.terse;\n\t var obj = options.obj;\n\t var addHelpers = options.addHelpers;\n\n\t var parentRequired = options.required;\n\t each(shape, function (checker, prop) {\n\t /* eslint complexity:[2, 6] */\n\t var specified = obj && obj.hasOwnProperty(prop);\n\t var required = undef(parentRequired) ? !checker.isOptional : parentRequired;\n\t if (!terse || (specified || !checker.isOptional)) {\n\t ret[prop] = getCheckerDisplay(checker, { terse: terse, obj: obj && obj[prop], required: required, addHelpers: addHelpers });\n\t }\n\t if (addHelpers) {\n\t modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required);\n\t }\n\t });\n\t return ret;\n\n\t function modifyTypeDisplayToHelpOut(theRet, prop, specified, checker, required) {\n\t if (!specified && required && !checker.isOptional) {\n\t var item = 'ITEM';\n\t if (checker.type && checker.type.__apiCheckData) {\n\t item = checker.type.__apiCheckData.type.toUpperCase();\n\t }\n\t addHelper('missing', 'MISSING THIS ' + item, ' <-- YOU ARE MISSING THIS');\n\t } else if (specified) {\n\t var error = checker(obj[prop], prop, null, obj);\n\t if (isError(error)) {\n\t addHelper('error', 'THIS IS THE PROBLEM: ' + error.message, ' <-- THIS IS THE PROBLEM: ' + error.message);\n\t }\n\t }\n\n\t function addHelper(property, objectMessage, stringMessage) {\n\t if (typeof theRet[prop] === 'string') {\n\t theRet[prop] += stringMessage;\n\t } else {\n\t theRet[prop].__apiCheckData[property] = objectMessage;\n\t }\n\t }\n\t }\n\t }\n\n\t type.__apiCheckData = { strict: false, optional: false, type: 'shape' };\n\t var shapeChecker = setupChecker(function shapeCheckerDefinition(val, name, location) {\n\t /* eslint complexity:[2, 6] */\n\t var isObject = !nonObject && checkers.object(val, name, location);\n\t if (isError(isObject)) {\n\t return isObject;\n\t }\n\t var shapePropError = undefined;\n\t location = location ? location + (name ? '/' : '') : '';\n\t name = name || '';\n\t each(shape, function (checker, prop) {\n\t if (val.hasOwnProperty(prop) || !checker.isOptional) {\n\t shapePropError = checker(val[prop], prop, '' + location + name, val);\n\t return !isError(shapePropError);\n\t }\n\t });\n\t if (isError(shapePropError)) {\n\t return shapePropError;\n\t }\n\t }, { type: type, shortType: 'shape' }, disabled);\n\n\t function strictType() {\n\t return type.apply(undefined, arguments);\n\t }\n\n\t strictType.__apiCheckData = copy(shapeChecker.type.__apiCheckData);\n\t strictType.__apiCheckData.strict = true;\n\t shapeChecker.strict = setupChecker(function strictShapeCheckerDefinition(val, name, location) {\n\t var shapeError = shapeChecker(val, name, location);\n\t if (isError(shapeError)) {\n\t return shapeError;\n\t }\n\t var allowedProperties = Object.keys(shape);\n\t var extraProps = Object.keys(val).filter(function (prop) {\n\t return allowedProperties.indexOf(prop) === -1;\n\t });\n\t if (extraProps.length) {\n\t return new Error(nAtL(name, location) + ' cannot have extra properties: ' + t(extraProps.join('`, `')) + '.' + ('It is limited to ' + t(allowedProperties.join('`, `'))));\n\t }\n\t }, { type: strictType, shortType: 'strict shape' }, disabled);\n\n\t return shapeChecker;\n\t }\n\n\t shapeCheckGetter.ifNot = function ifNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = 'specified only if ' + otherProps[0] + ' is not specified';\n\t } else {\n\t description = 'specified only if none of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t }\n\t var shortType = 'ifNot[' + otherProps.join(', ') + ']';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function ifNotChecker(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (propExists === otherPropsExist) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { notRequired: true, type: type, shortType: shortType }, disabled);\n\t };\n\n\t shapeCheckGetter.onlyIf = function onlyIf(otherProps, propChecker) {\n\t otherProps = arrayify(otherProps);\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = 'specified only if ' + otherProps[0] + ' is also specified';\n\t } else {\n\t description = 'specified only if all of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t }\n\t var shortType = 'onlyIf[' + otherProps.join(', ') + ']';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function onlyIfCheckerDefinition(prop, propName, location, obj) {\n\t var othersPresent = otherProps.every(function (property) {\n\t return obj.hasOwnProperty(property);\n\t });\n\t if (!othersPresent) {\n\t return getError(propName, location, type);\n\t } else {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t };\n\n\t shapeCheckGetter.requiredIfNot = function shapeRequiredIfNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t return getRequiredIfNotChecker(false, otherProps, propChecker);\n\t };\n\n\t shapeCheckGetter.requiredIfNot.all = function shapeRequiredIfNotAll(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t throw new Error('requiredIfNot.all must be passed an array');\n\t }\n\t return getRequiredIfNotChecker(true, otherProps, propChecker);\n\t };\n\n\t function getRequiredIfNotChecker(all, otherProps, propChecker) {\n\t var props = t(otherProps.join(', '));\n\t var ifProps = 'if ' + (all ? 'all of' : 'at least one of');\n\t var description = 'specified ' + ifProps + ' these are not specified: ' + props + ' (otherwise it\\'s optional)';\n\t var shortType = 'requiredIfNot' + (all ? '.all' : '') + '[' + otherProps.join(', ') + '}]';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var iteration = all ? 'every' : 'some';\n\t var otherPropsExist = otherProps[iteration](function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (!otherPropsExist && !propExists) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, notRequired: true }, disabled);\n\t }\n\n\t return shapeCheckGetter;\n\n\t function getTypeForShapeChild(propChecker, description, shortType) {\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(propChecker);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'ifNot', description: description };\n\t return type;\n\t }\n\t }\n\n\t function argumentsCheckerGetter() {\n\t var type = 'function arguments';\n\t return setupChecker(function argsCheckerDefinition(val, name, location) {\n\t if (Array.isArray(val) || isError(checkers.object(val)) || isError(checkers.number(val.length))) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function anyCheckGetter() {\n\t return setupChecker(function anyCheckerDefinition() {\n\t // don't do anything\n\t }, { type: 'any' }, disabled);\n\t }\n\n\t function nullCheckGetter() {\n\t var type = 'null';\n\t return setupChecker(function nullChecker(val, name, location) {\n\t if (val !== null) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function rangeCheckGetter(min, max) {\n\t var type = 'Range (' + min + ' - ' + max + ')';\n\t return setupChecker(function rangeChecker(val, name, location) {\n\t if (typeof val !== 'number' || val < min || val > max) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function lessThanCheckGetter(min) {\n\t var type = 'lessThan[' + min + ']';\n\t return setupChecker(function lessThanChecker(val, name, location) {\n\t if (typeof val !== 'number' || val > min) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function greaterThanCheckGetter(max) {\n\t var type = 'greaterThan[' + max + ']';\n\t return setupChecker(function greaterThanChecker(val, name, location) {\n\t if (typeof val !== 'number' || val < max) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function emptyObjectCheckGetter() {\n\t var type = 'empty object';\n\t return setupChecker(function emptyObjectChecker(val, name, location) {\n\t if (typeOf(val) !== 'object' || val === null || Object.keys(val).length) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t}\n\n/***/ }\n/******/ ])\n});\n;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/api-check/dist/api-check.js\n// module id = 2\n// module chunks = 0","// angular-formly version 6.8.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"api-check\"), require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"api-check\", \"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ngFormly\"] = factory(require(\"api-check\"), require(\"angular\"));\n\telse\n\t\troot[\"ngFormly\"] = factory(root[\"apiCheck\"], root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_16__, __WEBPACK_EXTERNAL_MODULE_17__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar index = _interopRequire(__webpack_require__(1));\n\n\tmodule.exports = index;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tvar formlyApiCheck = _interopRequire(__webpack_require__(2));\n\n\tvar formlyErrorAndWarningsUrlPrefix = _interopRequire(__webpack_require__(3));\n\n\tvar formlyUsability = _interopRequire(__webpack_require__(4));\n\n\tvar formlyConfig = _interopRequire(__webpack_require__(5));\n\n\tvar formlyValidationMessages = _interopRequire(__webpack_require__(6));\n\n\tvar formlyUtil = _interopRequire(__webpack_require__(7));\n\n\tvar formlyWarn = _interopRequire(__webpack_require__(8));\n\n\tvar formlyCustomValidation = _interopRequire(__webpack_require__(9));\n\n\tvar formlyField = _interopRequire(__webpack_require__(10));\n\n\tvar formlyFocus = _interopRequire(__webpack_require__(11));\n\n\tvar formlyForm = _interopRequire(__webpack_require__(12));\n\n\tvar formlyNgModelAttrsManipulator = _interopRequire(__webpack_require__(13));\n\n\tvar formlyCustomTags = _interopRequire(__webpack_require__(14));\n\n\tvar ngModuleName = \"formly\";\n\n\tmodule.exports = ngModuleName;\n\n\tvar ngModule = angular.module(ngModuleName, []);\n\n\tngModule.constant(\"formlyApiCheck\", formlyApiCheck);\n\tngModule.constant(\"formlyErrorAndWarningsUrlPrefix\", formlyErrorAndWarningsUrlPrefix);\n\tngModule.constant(\"formlyVersion\", (\"6.8.2\")); // <-- webpack variable\n\n\tngModule.provider(\"formlyUsability\", formlyUsability);\n\tngModule.provider(\"formlyConfig\", formlyConfig);\n\n\tngModule.factory(\"formlyValidationMessages\", formlyValidationMessages);\n\tngModule.factory(\"formlyUtil\", formlyUtil);\n\tngModule.factory(\"formlyWarn\", formlyWarn);\n\n\tngModule.directive(\"formlyCustomValidation\", formlyCustomValidation);\n\tngModule.directive(\"formlyField\", formlyField);\n\tngModule.directive(\"formlyFocus\", formlyFocus);\n\tngModule.directive(\"formlyForm\", formlyForm);\n\n\tngModule.run(formlyNgModelAttrsManipulator);\n\tngModule.run(formlyCustomTags);\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar apiCheckFactory = _interopRequire(__webpack_require__(16));\n\n\tvar apiCheck = apiCheckFactory({\n\t output: {\n\t prefix: \"angular-formly:\",\n\t docsBaseUrl: __webpack_require__(3)\n\t }\n\t});\n\n\tfunction shapeRequiredIfNot(otherProps, propChecker) {\n\t if (!angular.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t var type = \"specified if these are not specified: `\" + otherProps.join(\", \") + \"` (otherwise it's optional)\";\n\t function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (!otherPropsExist && !propExists) {\n\t return apiCheck.utils.getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }\n\t shapeRequiredIfNotDefinition.type = type;\n\t return apiCheck.utils.checkerHelpers.setupChecker(shapeRequiredIfNotDefinition);\n\t}\n\n\tvar formlyExpression = apiCheck.oneOfType([apiCheck.string, apiCheck.func]);\n\tvar specifyWrapperType = apiCheck.oneOfType([apiCheck.oneOf([null]), apiCheck.typeOrArrayOf(apiCheck.string)]);\n\n\tvar apiCheckProperty = apiCheck.objectOf(apiCheck.func);\n\n\tvar apiCheckInstanceProperty = apiCheck.shape.onlyIf(\"apiCheck\", apiCheck.func.withProperties({\n\t warn: apiCheck.func,\n\t \"throw\": apiCheck.func,\n\t shape: apiCheck.func\n\t}));\n\n\tvar apiCheckFunctionProperty = apiCheck.shape.onlyIf(\"apiCheck\", apiCheck.oneOf([\"throw\", \"warn\"]));\n\n\tvar formlyWrapperType = apiCheck.shape({\n\t name: shapeRequiredIfNot(\"types\", apiCheck.string).optional,\n\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.string).optional,\n\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.string).optional,\n\t types: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t overwriteOk: apiCheck.bool.optional,\n\t validateOptions: apiCheck.func.optional,\n\t apiCheck: apiCheckProperty.optional,\n\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t apiCheckOptions: apiCheck.object.optional\n\t}).strict;\n\n\tvar expressionProperties = apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t expression: formlyExpression,\n\t message: formlyExpression.optional\n\t}).strict]));\n\n\tvar modelChecker = apiCheck.oneOfType([apiCheck.oneOf([\"formState\"]), apiCheck.object]);\n\n\tvar fieldOptionsApiShape = {\n\t $$hashKey: apiCheck.any.optional,\n\t type: apiCheck.shape.ifNot([\"template\", \"templateUrl\"], apiCheck.string).optional,\n\t template: apiCheck.shape.ifNot([\"type\", \"templateUrl\"], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t templateUrl: apiCheck.shape.ifNot([\"type\", \"template\"], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t key: apiCheck.oneOfType([apiCheck.string, apiCheck.number]).optional,\n\t model: modelChecker.optional,\n\t className: apiCheck.string.optional,\n\t id: apiCheck.string.optional,\n\t expressionProperties: expressionProperties.optional,\n\t data: apiCheck.object.optional,\n\t templateOptions: apiCheck.object.optional,\n\t wrapper: specifyWrapperType.optional,\n\t modelOptions: apiCheck.shape({\n\t updateOn: apiCheck.string.optional,\n\t debounce: apiCheck.oneOfType([apiCheck.objectOf(apiCheck.number), apiCheck.number]).optional,\n\t allowInvalid: apiCheck.bool.optional,\n\t getterSetter: apiCheck.bool.optional,\n\t timezone: apiCheck.string.optional\n\t }).optional,\n\t watcher: apiCheck.typeOrArrayOf(apiCheck.shape({\n\t expression: formlyExpression.optional,\n\t listener: formlyExpression\n\t })).optional,\n\t validators: apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t expression: formlyExpression,\n\t message: formlyExpression.optional\n\t }).strict])).optional,\n\t noFormControl: apiCheck.bool.optional,\n\t hide: apiCheck.bool.optional,\n\t hideExpression: formlyExpression.optional,\n\t ngModelAttrs: apiCheck.objectOf(apiCheck.shape({\n\t expression: apiCheck.shape.ifNot([\"value\", \"attribute\", \"bound\"], apiCheck.any).optional,\n\t value: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional,\n\t attribute: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional,\n\t bound: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional\n\t }).strict).optional,\n\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional,\n\t optionsTypes: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t link: apiCheck.func.optional,\n\t controller: apiCheck.oneOfType([apiCheck.string, apiCheck.func, apiCheck.array]).optional,\n\t validation: apiCheck.shape({\n\t show: apiCheck.oneOfType([apiCheck.bool, apiCheck.oneOf([null])]).optional,\n\t messages: apiCheck.objectOf(formlyExpression).optional,\n\t errorExistsAndShouldBeVisible: apiCheck.bool.optional\n\t }).optional,\n\t formControl: apiCheck.object.optional,\n\t value: apiCheck.func.optional,\n\t runExpressions: apiCheck.func.optional,\n\t resetModel: apiCheck.func.optional,\n\t updateInitialValue: apiCheck.func.optional,\n\t initialValue: apiCheck.any.optional,\n\t defaultValue: apiCheck.any.optional\n\t};\n\n\tvar formlyFieldOptions = apiCheck.shape(fieldOptionsApiShape).strict;\n\n\tvar formOptionsApi = apiCheck.shape({\n\t formState: apiCheck.object.optional,\n\t resetModel: apiCheck.func.optional,\n\t updateInitialValue: apiCheck.func.optional,\n\t removeChromeAutoComplete: apiCheck.bool.optional\n\t}).strict;\n\n\tvar fieldGroup = apiCheck.shape({\n\t $$hashKey: apiCheck.any.optional,\n\t // danger. Nested field groups wont get api-checked...\n\t fieldGroup: apiCheck.arrayOf(apiCheck.oneOfType([formlyFieldOptions, apiCheck.object])),\n\t className: apiCheck.string.optional,\n\t options: formOptionsApi.optional,\n\t hide: apiCheck.bool.optional,\n\t hideExpression: formlyExpression.optional,\n\t model: modelChecker.optional,\n\t form: apiCheck.object.optional,\n\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional\n\t}).strict;\n\n\tvar typeOptionsDefaultOptions = angular.copy(fieldOptionsApiShape);\n\ttypeOptionsDefaultOptions.key = apiCheck.string.optional;\n\n\tvar formlyTypeOptions = apiCheck.shape({\n\t name: apiCheck.string,\n\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t controller: apiCheck.oneOfType([apiCheck.func, apiCheck.string, apiCheck.array]).optional,\n\t link: apiCheck.func.optional,\n\t defaultOptions: apiCheck.oneOfType([apiCheck.func, apiCheck.shape(typeOptionsDefaultOptions)]).optional,\n\t \"extends\": apiCheck.string.optional,\n\t wrapper: specifyWrapperType.optional,\n\t data: apiCheck.object.optional,\n\t validateOptions: apiCheck.func.optional,\n\t apiCheck: apiCheckProperty.optional,\n\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t apiCheckOptions: apiCheck.object.optional,\n\t overwriteOk: apiCheck.bool.optional\n\t}).strict;\n\tangular.extend(apiCheck, {\n\t formlyTypeOptions: formlyTypeOptions, formlyFieldOptions: formlyFieldOptions, formlyExpression: formlyExpression, formlyWrapperType: formlyWrapperType, fieldGroup: fieldGroup, formOptionsApi: formOptionsApi\n\t});\n\n\tmodule.exports = apiCheck;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = \"https://github.com/formly-js/angular-formly/blob/\" + (\"6.8.2\") + \"/other/ERRORS_AND_WARNINGS.md#\";\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyUsability;\n\n\t// @ngInject\n\tfunction formlyUsability(formlyApiCheck, formlyErrorAndWarningsUrlPrefix) {\n\t var _this = this;\n\n\t angular.extend(this, {\n\t getFormlyError: getFormlyError,\n\t getFieldError: getFieldError,\n\t checkWrapper: checkWrapper,\n\t checkWrapperTemplate: checkWrapperTemplate,\n\t $get: function () {\n\t return _this;\n\t }\n\t });\n\n\t function getFieldError(errorInfoSlug, message, field) {\n\t if (arguments.length < 3) {\n\t field = message;\n\t message = errorInfoSlug;\n\t errorInfoSlug = null;\n\t }\n\t return new Error(getErrorMessage(errorInfoSlug, message) + (\" Field definition: \" + angular.toJson(field)));\n\t }\n\n\t function getFormlyError(errorInfoSlug, message) {\n\t if (!message) {\n\t message = errorInfoSlug;\n\t errorInfoSlug = null;\n\t }\n\t return new Error(getErrorMessage(errorInfoSlug, message));\n\t }\n\n\t function getErrorMessage(errorInfoSlug, message) {\n\t var url = \"\";\n\t if (errorInfoSlug !== null) {\n\t url = \"\" + formlyErrorAndWarningsUrlPrefix + \"\" + errorInfoSlug;\n\t }\n\t return \"Formly Error: \" + message + \". \" + url;\n\t }\n\n\t function checkWrapper(wrapper) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyWrapperType, wrapper, {\n\t prefix: \"formlyConfig.setWrapper\",\n\t urlSuffix: \"setwrapper-validation-failed\"\n\t });\n\t }\n\n\t function checkWrapperTemplate(template, additionalInfo) {\n\t var formlyTransclude = \" \";\n\t if (template.indexOf(formlyTransclude) === -1) {\n\t throw getFormlyError(\"Template wrapper templates must use \\\"\" + formlyTransclude + \"\\\" somewhere in them. \" + (\"This one does not have \\\" \\\" in it: \" + template) + \"\\n\" + (\"Additional information: \" + JSON.stringify(additionalInfo)));\n\t }\n\t }\n\t}\n\tformlyUsability.$inject = [\"formlyApiCheck\", \"formlyErrorAndWarningsUrlPrefix\"];\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tvar utils = _interopRequire(__webpack_require__(18));\n\n\tmodule.exports = formlyConfig;\n\n\t// @ngInject\n\tfunction formlyConfig(formlyUsabilityProvider, formlyApiCheck) {\n\t var _this2 = this;\n\n\t var typeMap = {};\n\t var templateWrappersMap = {};\n\t var defaultWrapperName = \"default\";\n\t var _this = this;\n\t var getError = formlyUsabilityProvider.getFormlyError;\n\n\t angular.extend(this, {\n\t setType: setType,\n\t getType: getType,\n\t setWrapper: setWrapper,\n\t getWrapper: getWrapper,\n\t getWrapperByType: getWrapperByType,\n\t removeWrapperByName: removeWrapperByName,\n\t removeWrappersForType: removeWrappersForType,\n\t disableWarnings: false,\n\t extras: {\n\t disableNgModelAttrsManipulator: false,\n\t ngModelAttrsManipulatorPreferUnbound: false,\n\t removeChromeAutoComplete: false,\n\t defaultHideDirective: \"ng-if\",\n\t getFieldId: null\n\t },\n\t templateManipulators: {\n\t preWrapper: [],\n\t postWrapper: []\n\t },\n\t $get: function () {\n\t return _this2;\n\t }\n\t });\n\n\t function setType(options) {\n\t if (angular.isArray(options)) {\n\t angular.forEach(options, setType);\n\t } else if (angular.isObject(options)) {\n\t checkType(options);\n\t if (options[\"extends\"]) {\n\t extendTypeOptions(options);\n\t }\n\t typeMap[options.name] = options;\n\t } else {\n\t throw getError(\"You must provide an object or array for setType. You provided: \" + JSON.stringify(arguments));\n\t }\n\t }\n\n\t function checkType(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyTypeOptions, options, {\n\t prefix: \"formlyConfig.setType\",\n\t url: \"settype-validation-failed\"\n\t });\n\t if (!options.overwriteOk) {\n\t checkOverwrite(options.name, typeMap, options, \"types\");\n\t } else {\n\t options.overwriteOk = undefined;\n\t }\n\t }\n\n\t function extendTypeOptions(options) {\n\t var extendsType = getType(options[\"extends\"], true, options);\n\t extendTypeControllerFunction(options, extendsType);\n\t extendTypeLinkFunction(options, extendsType);\n\t extendTypeValidateOptionsFunction(options, extendsType);\n\t extendTypeDefaultOptions(options, extendsType);\n\t utils.reverseDeepMerge(options, extendsType);\n\t extendTemplate(options, extendsType);\n\t }\n\n\t function extendTemplate(options, extendsType) {\n\t if (options.template && extendsType.templateUrl) {\n\t delete options.templateUrl;\n\t } else if (options.templateUrl && extendsType.template) {\n\t delete options.template;\n\t }\n\t }\n\n\t function extendTypeControllerFunction(options, extendsType) {\n\t var extendsCtrl = extendsType.controller;\n\t if (!angular.isDefined(extendsCtrl)) {\n\t return;\n\t }\n\t var optionsCtrl = options.controller;\n\t if (angular.isDefined(optionsCtrl)) {\n\t options.controller = function ($scope, $controller) {\n\t $controller(extendsCtrl, { $scope: $scope });\n\t $controller(optionsCtrl, { $scope: $scope });\n\t };\n\t options.controller.$inject = [\"$scope\", \"$controller\"];\n\t } else {\n\t options.controller = extendsCtrl;\n\t }\n\t }\n\n\t function extendTypeLinkFunction(options, extendsType) {\n\t var extendsFn = extendsType.link;\n\t if (!angular.isDefined(extendsFn)) {\n\t return;\n\t }\n\t var optionsFn = options.link;\n\t if (angular.isDefined(optionsFn)) {\n\t options.link = function () {\n\t extendsFn.apply(undefined, arguments);\n\t optionsFn.apply(undefined, arguments);\n\t };\n\t } else {\n\t options.link = extendsFn;\n\t }\n\t }\n\n\t function extendTypeValidateOptionsFunction(options, extendsType) {\n\t var extendsFn = extendsType.validateOptions;\n\t if (!angular.isDefined(extendsFn)) {\n\t return;\n\t }\n\t var optionsFn = options.validateOptions;\n\t var originalDefaultOptions = options.defaultOptions;\n\t if (angular.isDefined(optionsFn)) {\n\t options.validateOptions = function (options) {\n\t optionsFn(options);\n\t var mergedOptions = angular.copy(options);\n\t var defaultOptions = originalDefaultOptions;\n\t if (defaultOptions) {\n\t if (angular.isFunction(defaultOptions)) {\n\t defaultOptions = defaultOptions(mergedOptions);\n\t }\n\t utils.reverseDeepMerge(mergedOptions, defaultOptions);\n\t }\n\t extendsFn(mergedOptions);\n\t };\n\t } else {\n\t options.validateOptions = extendsFn;\n\t }\n\t }\n\n\t function extendTypeDefaultOptions(options, extendsType) {\n\t var extendsDO = extendsType.defaultOptions;\n\t if (!angular.isDefined(extendsDO)) {\n\t return;\n\t }\n\t var optionsDO = options.defaultOptions;\n\t var optionsDOIsFn = angular.isFunction(optionsDO);\n\t var extendsDOIsFn = angular.isFunction(extendsDO);\n\t if (extendsDOIsFn) {\n\t options.defaultOptions = function defaultOptions(options) {\n\t var extendsDefaultOptions = extendsDO(options);\n\t var mergedDefaultOptions = {};\n\t utils.reverseDeepMerge(mergedDefaultOptions, options, extendsDefaultOptions);\n\t var extenderOptionsDefaultOptions = optionsDO;\n\t if (optionsDOIsFn) {\n\t extenderOptionsDefaultOptions = extenderOptionsDefaultOptions(mergedDefaultOptions);\n\t }\n\t utils.reverseDeepMerge(extendsDefaultOptions, extenderOptionsDefaultOptions);\n\t return extendsDefaultOptions;\n\t };\n\t } else if (optionsDOIsFn) {\n\t options.defaultOptions = function defaultOptions(options) {\n\t var newDefaultOptions = {};\n\t utils.reverseDeepMerge(newDefaultOptions, options, extendsDO);\n\t return optionsDO(newDefaultOptions);\n\t };\n\t }\n\t }\n\n\t function getType(name, throwError, errorContext) {\n\t if (!name) {\n\t return undefined;\n\t }\n\t var type = typeMap[name];\n\t if (!type && throwError === true) {\n\t throw getError(\"There is no type by the name of \\\"\" + name + \"\\\": \" + JSON.stringify(errorContext));\n\t } else {\n\t return type;\n\t }\n\t }\n\n\t function setWrapper(_x, _x2) {\n\t var _again = true;\n\n\t _function: while (_again) {\n\t _again = false;\n\t var options = _x,\n\t name = _x2;\n\n\t if (angular.isArray(options)) {\n\t return options.map(function (wrapperOptions) {\n\t return setWrapper(wrapperOptions);\n\t });\n\t } else if (angular.isObject(options)) {\n\t options.types = getOptionsTypes(options);\n\t options.name = getOptionsName(options, name);\n\t checkWrapperAPI(options);\n\t templateWrappersMap[options.name] = options;\n\t return options;\n\t } else if (angular.isString(options)) {\n\t _x = {\n\t template: options,\n\t name: name\n\t };\n\t _again = true;\n\t continue _function;\n\t }\n\t }\n\t }\n\n\t function getOptionsTypes(options) {\n\t if (angular.isString(options.types)) {\n\t return [options.types];\n\t }\n\t if (!angular.isDefined(options.types)) {\n\t return [];\n\t } else {\n\t return options.types;\n\t }\n\t }\n\n\t function getOptionsName(options, name) {\n\t return options.name || name || options.types.join(\" \") || defaultWrapperName;\n\t }\n\n\t function checkWrapperAPI(options) {\n\t formlyUsabilityProvider.checkWrapper(options);\n\t if (options.template) {\n\t formlyUsabilityProvider.checkWrapperTemplate(options.template, options);\n\t }\n\t if (!options.overwriteOk) {\n\t checkOverwrite(options.name, templateWrappersMap, options, \"templateWrappers\");\n\t } else {\n\t delete options.overwriteOk;\n\t }\n\t checkWrapperTypes(options);\n\t }\n\n\t function checkWrapperTypes(options) {\n\t var shouldThrow = !angular.isArray(options.types) || !options.types.every(angular.isString);\n\t if (shouldThrow) {\n\t throw getError(\"Attempted to create a template wrapper with types that is not a string or an array of strings\");\n\t }\n\t }\n\n\t function checkOverwrite(property, object, newValue, objectName) {\n\t if (object.hasOwnProperty(property)) {\n\t warn([\"Attempting to overwrite \" + property + \" on \" + objectName + \" which is currently\", \"\" + JSON.stringify(object[property]) + \" with \" + JSON.stringify(newValue), \"To supress this warning, specify the property \\\"overwriteOk: true\\\"\"].join(\" \"));\n\t }\n\t }\n\n\t function getWrapper(name) {\n\t return templateWrappersMap[name || defaultWrapperName];\n\t }\n\n\t function getWrapperByType(type) {\n\t /* jshint maxcomplexity:6 */\n\t var wrappers = [];\n\t for (var name in templateWrappersMap) {\n\t if (templateWrappersMap.hasOwnProperty(name)) {\n\t if (templateWrappersMap[name].types && templateWrappersMap[name].types.indexOf(type) !== -1) {\n\t wrappers.push(templateWrappersMap[name]);\n\t }\n\t }\n\t }\n\t return wrappers;\n\t }\n\n\t function removeWrapperByName(name) {\n\t var wrapper = templateWrappersMap[name];\n\t delete templateWrappersMap[name];\n\t return wrapper;\n\t }\n\n\t function removeWrappersForType(type) {\n\t var wrappers = getWrapperByType(type);\n\t if (!wrappers) {\n\t return;\n\t }\n\t if (!angular.isArray(wrappers)) {\n\t return removeWrapperByName(wrappers.name);\n\t } else {\n\t wrappers.forEach(function (wrapper) {\n\t return removeWrapperByName(wrapper.name);\n\t });\n\t return wrappers;\n\t }\n\t }\n\n\t function warn() {\n\t if (!_this.disableWarnings) {\n\t console.warn.apply(console, arguments);\n\t }\n\t }\n\t}\n\tformlyConfig.$inject = [\"formlyUsabilityProvider\", \"formlyApiCheck\"];\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyValidationMessages;\n\n\t// @ngInject\n\tfunction formlyValidationMessages() {\n\n\t var validationMessages = {\n\t addTemplateOptionValueMessage: addTemplateOptionValueMessage,\n\t addStringMessage: addStringMessage,\n\t messages: {}\n\t };\n\n\t return validationMessages;\n\n\t function addTemplateOptionValueMessage(name, prop, prefix, suffix, alternate) {\n\t validationMessages.messages[name] = templateOptionValue(prop, prefix, suffix, alternate);\n\t }\n\n\t function addStringMessage(name, string) {\n\t validationMessages.messages[name] = function () {\n\t return string;\n\t };\n\t }\n\n\t function templateOptionValue(prop, prefix, suffix, alternate) {\n\t return function getValidationMessage(viewValue, modelValue, scope) {\n\t if (scope.options.templateOptions[prop]) {\n\t return \"\" + prefix + \" \" + scope.options.templateOptions[prop] + \" \" + suffix;\n\t } else {\n\t return alternate;\n\t }\n\t };\n\t }\n\t}\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar utils = _interopRequire(__webpack_require__(18));\n\n\tmodule.exports = formlyUtil;\n\n\t// @ngInject\n\tfunction formlyUtil() {\n\t return utils;\n\t}\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\n\tmodule.exports = formlyWarn;\n\n\t// @ngInject\n\tfunction formlyWarn(formlyConfig, formlyErrorAndWarningsUrlPrefix, $log) {\n\t return function warn() {\n\t if (!formlyConfig.disableWarnings) {\n\t var args = Array.prototype.slice.call(arguments);\n\t var warnInfoSlug = args.shift();\n\t args.unshift(\"Formly Warning:\");\n\t args.push(\"\" + formlyErrorAndWarningsUrlPrefix + \"\" + warnInfoSlug);\n\t $log.warn.apply($log, _toConsumableArray(args));\n\t }\n\t };\n\t}\n\tformlyWarn.$inject = [\"formlyConfig\", \"formlyErrorAndWarningsUrlPrefix\", \"$log\"];\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyCustomValidation;\n\n\t// @ngInject\n\tfunction formlyCustomValidation(formlyUtil, $q) {\n\t return {\n\t restrict: \"A\",\n\t require: \"ngModel\",\n\t link: function formlyCustomValidationLink(scope, el, attrs, ctrl) {\n\t var opts = scope.options;\n\t if (opts.validators) {\n\t checkValidators(opts.validators);\n\t }\n\t opts.validation.messages = opts.validation.messages || {};\n\t angular.forEach(opts.validation.messages, function (message, key) {\n\t opts.validation.messages[key] = function () {\n\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t };\n\t });\n\n\t var useNewValidatorsApi = ctrl.hasOwnProperty(\"$validators\") && !attrs.hasOwnProperty(\"useParsers\");\n\t angular.forEach(opts.validators, function addValidatorToPipeline(validator, name) {\n\t var message = validator.message;\n\t if (message) {\n\t opts.validation.messages[name] = function () {\n\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t };\n\t }\n\t validator = angular.isObject(validator) ? validator.expression : validator;\n\t var isPossiblyAsync = !angular.isString(validator);\n\t if (useNewValidatorsApi) {\n\t setupWithValidators();\n\t } else {\n\t setupWithParsers();\n\t }\n\n\t function setupWithValidators() {\n\t var validatorCollection = isPossiblyAsync ? \"$asyncValidators\" : \"$validators\";\n\t ctrl[validatorCollection][name] = function evalValidity(modelValue, viewValue) {\n\t var value = formlyUtil.formlyEval(scope, validator, modelValue, viewValue);\n\t if (isPossiblyAsync) {\n\t return isPromiseLike(value) ? value : value ? $q.when(value) : $q.reject(value);\n\t } else {\n\t return value;\n\t }\n\t };\n\t }\n\n\t function setupWithParsers() {\n\t var inFlightValidator = undefined;\n\t ctrl.$parsers.unshift(function evalValidityOfParser(viewValue) {\n\t var isValid = formlyUtil.formlyEval(scope, validator, ctrl.$modelValue, viewValue);\n\t if (isPromiseLike(isValid)) {\n\t ctrl.$pending = ctrl.$pending || {};\n\t ctrl.$pending[name] = true;\n\t inFlightValidator = isValid;\n\t isValid.then(function () {\n\t if (inFlightValidator === isValid) {\n\t ctrl.$setValidity(name, true);\n\t }\n\t })[\"catch\"](function () {\n\t if (inFlightValidator === isValid) {\n\t ctrl.$setValidity(name, false);\n\t }\n\t })[\"finally\"](function () {\n\t if (Object.keys(ctrl.$pending).length === 1) {\n\t delete ctrl.$pending;\n\t } else {\n\t delete ctrl.$pending[name];\n\t }\n\t });\n\t } else {\n\t ctrl.$setValidity(name, isValid);\n\t }\n\t return viewValue;\n\t });\n\t }\n\t });\n\t }\n\t };\n\n\t function isPromiseLike(obj) {\n\t return obj && angular.isFunction(obj.then);\n\t }\n\n\t function checkValidators(validators) {\n\t var allowedProperties = [\"expression\", \"message\"];\n\t var validatorsWithExtraProps = {};\n\t angular.forEach(validators, function (validator, name) {\n\t if (angular.isString(validator)) {\n\t return;\n\t }\n\t var extraProps = [];\n\t angular.forEach(validator, function (v, key) {\n\t if (allowedProperties.indexOf(key) === -1) {\n\t extraProps.push(key);\n\t }\n\t });\n\t if (extraProps.length) {\n\t validatorsWithExtraProps[name] = extraProps;\n\t }\n\t });\n\t if (Object.keys(validatorsWithExtraProps).length) {\n\t throw new Error([\"Validators are only allowed to be functions or objects that have \" + allowedProperties.join(\", \") + \".\", \"You provided some extra properties: \" + JSON.stringify(validatorsWithExtraProps)].join(\" \"));\n\t }\n\t }\n\t}\n\tformlyCustomValidation.$inject = [\"formlyUtil\", \"$q\"];\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyField;\n\n\t/**\n\t * @ngdoc directive\n\t * @name formlyField\n\t * @restrict AE\n\t */\n\t// @ngInject\n\tfunction formlyField($http, $q, $compile, $templateCache, formlyConfig, formlyValidationMessages, formlyApiCheck, formlyUtil, formlyUsability, formlyWarn) {\n\t var arrayify = formlyUtil.arrayify;\n\n\t FormlyFieldController.$inject = [\"$scope\", \"$timeout\", \"$parse\", \"$controller\"];\n\t return {\n\t restrict: \"AE\",\n\t transclude: true,\n\t scope: {\n\t options: \"=\",\n\t model: \"=\",\n\t formId: \"@\", // TODO remove formId in a breaking release\n\t index: \"=?\",\n\t fields: \"=?\",\n\t formState: \"=?\",\n\t form: \"=?\" // TODO require form in a breaking release\n\t },\n\t controller: FormlyFieldController,\n\t link: fieldLink\n\t };\n\n\t // @ngInject\n\t function FormlyFieldController($scope, $timeout, $parse, $controller) {\n\t /* jshint maxstatements:31 */\n\t if ($scope.options.fieldGroup) {\n\t setupFieldGroup();\n\t return;\n\t }\n\n\t var fieldType = getFieldType($scope.options);\n\t simplifyLife($scope.options);\n\t mergeFieldOptionsWithTypeDefaults($scope.options, fieldType);\n\t extendOptionsWithDefaults($scope.options, $scope.index);\n\t checkApi($scope.options);\n\t // set field id to link labels and fields\n\n\t // initalization\n\t setFieldId();\n\t setDefaultValue();\n\t setInitialValue();\n\t runExpressions();\n\t addModelWatcher($scope, $scope.options);\n\t addValidationMessages($scope.options);\n\t invokeControllers($scope, $scope.options, fieldType);\n\n\t // function definitions\n\t function runExpressions() {\n\t // must run on next tick to make sure that the current value is correct.\n\t $timeout(function runExpressionsOnNextTick() {\n\t var field = $scope.options;\n\t var currentValue = valueGetterSetter();\n\t angular.forEach(field.expressionProperties, function runExpression(expression, prop) {\n\t var setter = $parse(prop).assign;\n\t var promise = $q.when(formlyUtil.formlyEval($scope, expression, currentValue));\n\t promise.then(function setFieldValue(value) {\n\t setter(field, value);\n\t });\n\t });\n\t });\n\t }\n\n\t function valueGetterSetter(newVal) {\n\t if (!$scope.model || !$scope.options.key) {\n\t return;\n\t }\n\t if (angular.isDefined(newVal)) {\n\t $scope.model[$scope.options.key] = newVal;\n\t }\n\t return $scope.model[$scope.options.key];\n\t }\n\n\t function simplifyLife(options) {\n\t // add a few empty objects (if they don't already exist) so you don't have to undefined check everywhere\n\t formlyUtil.reverseDeepMerge(options, {\n\t data: {},\n\t templateOptions: {},\n\t validation: {}\n\t });\n\t // create $scope.to so template authors can reference to instead of $scope.options.templateOptions\n\t $scope.to = $scope.options.templateOptions;\n\t }\n\n\t function setFieldId() {\n\t if (angular.isFunction(formlyConfig.extras.getFieldId)) {\n\t $scope.id = formlyConfig.extras.getFieldId($scope.options, $scope.model, $scope);\n\t } else {\n\t var formName = $scope.form && $scope.form.$name || $scope.formId;\n\t $scope.id = formlyUtil.getFieldId(formName, $scope.options, $scope.index);\n\t }\n\t $scope.options.id = $scope.id;\n\t }\n\n\t function setDefaultValue() {\n\t if (angular.isDefined($scope.options.defaultValue) && !angular.isDefined($scope.model[$scope.options.key])) {\n\t $scope.model[$scope.options.key] = $scope.options.defaultValue;\n\t }\n\t }\n\n\t function setInitialValue() {\n\t $scope.options.initialValue = $scope.model && $scope.model[$scope.options.key];\n\t }\n\n\t function mergeFieldOptionsWithTypeDefaults(options, type) {\n\t if (type) {\n\t mergeOptions(options, type.defaultOptions);\n\t }\n\t var properOrder = arrayify(options.optionsTypes).reverse(); // so the right things are overridden\n\t angular.forEach(properOrder, function (typeName) {\n\t mergeOptions(options, formlyConfig.getType(typeName, true, options).defaultOptions);\n\t });\n\t }\n\n\t function mergeOptions(options, extraOptions) {\n\t if (extraOptions) {\n\t if (angular.isFunction(extraOptions)) {\n\t extraOptions = extraOptions(options);\n\t }\n\t formlyUtil.reverseDeepMerge(options, extraOptions);\n\t }\n\t }\n\n\t function extendOptionsWithDefaults(options, index) {\n\t var key = options.key || index || 0;\n\t angular.extend(options, {\n\t // attach the key in case the formly-field directive is used directly\n\t key: key,\n\t value: valueGetterSetter,\n\t runExpressions: runExpressions,\n\t resetModel: resetModel,\n\t updateInitialValue: updateInitialValue\n\t });\n\t }\n\n\t // initialization functions\n\t function addModelWatcher(scope, options) {\n\t if (options.model) {\n\t scope.$watch(\"options.model\", runExpressions, true);\n\t }\n\t }\n\n\t function resetModel() {\n\t $scope.model[$scope.options.key] = $scope.options.initialValue;\n\t if ($scope.options.formControl) {\n\t $scope.options.formControl.$setViewValue($scope.model[$scope.options.key]);\n\t $scope.options.formControl.$render();\n\t $scope.options.formControl.$setUntouched();\n\t $scope.options.formControl.$setPristine();\n\t }\n\t }\n\n\t function updateInitialValue() {\n\t $scope.options.initialValue = $scope.model[$scope.options.key];\n\t }\n\n\t function addValidationMessages(options) {\n\t options.validation.messages = options.validation.messages || {};\n\t angular.forEach(formlyValidationMessages.messages, function createFunctionForMessage(expression, name) {\n\t if (!options.validation.messages[name]) {\n\t options.validation.messages[name] = function evaluateMessage(viewValue, modelValue, scope) {\n\t return formlyUtil.formlyEval(scope, expression, modelValue, viewValue);\n\t };\n\t }\n\t });\n\t }\n\n\t function invokeControllers(scope) {\n\t var options = arguments[1] === undefined ? {} : arguments[1];\n\t var type = arguments[2] === undefined ? {} : arguments[2];\n\n\t angular.forEach([type.controller, options.controller], function (controller) {\n\t if (controller) {\n\t $controller(controller, { $scope: scope });\n\t }\n\t });\n\t }\n\n\t function setupFieldGroup() {\n\t $scope.options.options = $scope.options.options || {};\n\t $scope.options.options.formState = $scope.formState;\n\t }\n\t }\n\n\t // link function\n\t function fieldLink(scope, el) {\n\t if (scope.options.fieldGroup) {\n\t setFieldGroupTemplate();\n\t return;\n\t }\n\n\t addAttributes();\n\t addClasses();\n\n\t var type = getFieldType(scope.options);\n\t var args = arguments;\n\t var thusly = this;\n\t getFieldTemplate(scope.options).then(runManipulators(formlyConfig.templateManipulators.preWrapper)).then(transcludeInWrappers(scope.options)).then(runManipulators(formlyConfig.templateManipulators.postWrapper)).then(setElementTemplate).then(watchFormControl).then(callLinkFunctions)[\"catch\"](function (error) {\n\t formlyWarn(\"there-was-a-problem-setting-the-template-for-this-field\", \"There was a problem setting the template for this field \", scope.options, error);\n\t });\n\n\t function setFieldGroupTemplate() {\n\t checkFieldGroupApi(scope.options);\n\t el.addClass(\"formly-field-group\");\n\t var extraAttributes = \"\";\n\t if (scope.options.elementAttributes) {\n\t extraAttributes = Object.keys(scope.options.elementAttributes).map(function (key) {\n\t return \"\" + key + \"=\\\"\" + scope.options.elementAttributes[key] + \"\\\"\";\n\t }).join(\" \");\n\t }\n\t setElementTemplate(\"\\n \\n \\n \");\n\t }\n\n\t function addAttributes() {\n\t if (scope.options.elementAttributes) {\n\t el.attr(scope.options.elementAttributes);\n\t }\n\t }\n\n\t function addClasses() {\n\t if (scope.options.className) {\n\t el.addClass(scope.options.className);\n\t }\n\t if (scope.options.type) {\n\t el.addClass(\"formly-field-\" + scope.options.type);\n\t }\n\t }\n\n\t function setElementTemplate(templateString) {\n\t el.html(asHtml(templateString));\n\t $compile(el.contents())(scope);\n\t return templateString;\n\t }\n\n\t function watchFormControl(templateString) {\n\t var stopWatchingField = angular.noop;\n\t var stopWatchingShowError = angular.noop;\n\t if (scope.options.noFormControl) {\n\t return;\n\t }\n\t var templateEl = angular.element(\"\" + templateString + \"
\");\n\t var ngModelNode = templateEl[0].querySelector(\"[ng-model],[data-ng-model]\");\n\t if (ngModelNode && ngModelNode.getAttribute(\"name\")) {\n\t watchFieldNameOrExistence(ngModelNode.getAttribute(\"name\"));\n\t }\n\n\t function watchFieldNameOrExistence(name) {\n\t var nameExpressionRegex = /\\{\\{(.*?)}}/;\n\t var nameExpression = nameExpressionRegex.exec(name);\n\t if (nameExpression) {\n\t watchFieldName(nameExpression[1]);\n\t } else {\n\t watchFieldExistence(name);\n\t }\n\t }\n\n\t function watchFieldName(expression) {\n\t scope.$watch(expression, function oneFieldNameChange(name) {\n\t if (name) {\n\t stopWatchingField();\n\t watchFieldExistence(name);\n\t }\n\t });\n\t }\n\n\t function watchFieldExistence(name) {\n\t stopWatchingField = scope.$watch(\"form[\\\"\" + name + \"\\\"]\", function formControlChange(formControl) {\n\t if (formControl) {\n\t scope.fc = formControl; // shortcut for template authors\n\t scope.options.formControl = formControl;\n\t stopWatchingShowError();\n\t addShowMessagesWatcher();\n\t }\n\t });\n\t }\n\n\t function addShowMessagesWatcher() {\n\t stopWatchingShowError = scope.$watch(function watchShowValidationChange() {\n\t var customExpression = formlyConfig.extras.errorExistsAndShouldBeVisibleExpression;\n\t var options = scope.options;\n\t var fc = scope.fc;\n\n\t if (!fc.$invalid) {\n\t return false;\n\t } else if (typeof options.validation.show === \"boolean\") {\n\t return options.validation.show;\n\t } else if (customExpression) {\n\t return formlyUtil.formlyEval(scope, customExpression, fc.$modelValue, fc.$viewValue);\n\t } else {\n\t var noTouchedButDirty = angular.isUndefined(fc.$touched) && fc.$dirty;\n\t return scope.fc.$touched || noTouchedButDirty;\n\t }\n\t }, function onShowValidationChange(show) {\n\t scope.options.validation.errorExistsAndShouldBeVisible = show;\n\t scope.showError = show; // shortcut for template authors\n\t });\n\t }\n\t }\n\n\t function callLinkFunctions() {\n\t if (type && type.link) {\n\t type.link.apply(thusly, args);\n\t }\n\t if (scope.options.link) {\n\t scope.options.link.apply(thusly, args);\n\t }\n\t }\n\n\t function runManipulators(manipulators) {\n\t return function runManipulatorsOnTemplate(template) {\n\t var chain = $q.when(template);\n\t angular.forEach(manipulators, function (manipulator) {\n\t chain = chain.then(function (template) {\n\t return $q.when(manipulator(template, scope.options, scope)).then(function (newTemplate) {\n\t return angular.isString(newTemplate) ? newTemplate : asHtml(newTemplate);\n\t });\n\t });\n\t });\n\t return chain;\n\t };\n\t }\n\t }\n\n\t // stateless util functions\n\t function asHtml(el) {\n\t var wrapper = angular.element(\" \");\n\t return wrapper.append(el).html();\n\t }\n\n\t function getFieldType(options) {\n\t return options.type && formlyConfig.getType(options.type);\n\t }\n\n\t function getFieldTemplate(options) {\n\t function fromOptionsOrType(key, type) {\n\t if (angular.isDefined(options[key])) {\n\t return options[key];\n\t } else if (type && angular.isDefined(type[key])) {\n\t return type[key];\n\t }\n\t }\n\n\t var type = formlyConfig.getType(options.type, true, options);\n\t var template = fromOptionsOrType(\"template\", type);\n\t var templateUrl = fromOptionsOrType(\"templateUrl\", type);\n\t if (angular.isUndefined(template) && !templateUrl) {\n\t throw formlyUsability.getFieldError(\"type-type-has-no-template\", \"Type '\" + options.type + \"' has not template. On element:\", options);\n\t }\n\n\t return getTemplate(templateUrl || template, angular.isUndefined(template), options);\n\t }\n\n\t function getTemplate(template, isUrl, options) {\n\t var templatePromise = undefined;\n\t if (angular.isFunction(template)) {\n\t templatePromise = $q.when(template(options));\n\t } else {\n\t templatePromise = $q.when(template);\n\t }\n\n\t if (!isUrl) {\n\t return templatePromise;\n\t } else {\n\t var _ret = (function () {\n\t var httpOptions = { cache: $templateCache };\n\t return {\n\t v: templatePromise.then(function (url) {\n\t return $http.get(url, httpOptions);\n\t }).then(function (response) {\n\t return response.data;\n\t })[\"catch\"](function handleErrorGettingATemplate(error) {\n\t formlyWarn(\"problem-loading-template-for-templateurl\", \"Problem loading template for \" + template, error);\n\t })\n\t };\n\t })();\n\n\t if (typeof _ret === \"object\") {\n\t return _ret.v;\n\t }\n\t }\n\t }\n\n\t function transcludeInWrappers(options) {\n\t var wrapper = getWrapperOption(options);\n\n\t return function transcludeTemplate(template) {\n\t if (!wrapper.length) {\n\t return $q.when(template);\n\t }\n\n\t wrapper.forEach(function (wrapper) {\n\t formlyUsability.checkWrapper(wrapper, options);\n\t wrapper.validateOptions && wrapper.validateOptions(options);\n\t runApiCheck(wrapper, options);\n\t });\n\t var promises = wrapper.map(function (w) {\n\t return getTemplate(w.template || w.templateUrl, !w.template);\n\t });\n\t return $q.all(promises).then(function (wrappersTemplates) {\n\t wrappersTemplates.forEach(function (wrapperTemplate, index) {\n\t formlyUsability.checkWrapperTemplate(wrapperTemplate, wrapper[index]);\n\t });\n\t wrappersTemplates.reverse(); // wrapper 0 is wrapped in wrapper 1 and so on...\n\t var totalWrapper = wrappersTemplates.shift();\n\t wrappersTemplates.forEach(function (wrapperTemplate) {\n\t totalWrapper = doTransclusion(totalWrapper, wrapperTemplate);\n\t });\n\t return doTransclusion(totalWrapper, template);\n\t });\n\t };\n\t }\n\n\t function doTransclusion(wrapper, template) {\n\t var superWrapper = angular.element(\" \"); // this allows people not have to have a single root in wrappers\n\t superWrapper.append(wrapper);\n\t var transcludeEl = superWrapper.find(\"formly-transclude\");\n\t if (!transcludeEl.length) {\n\t //try it using our custom find function\n\t transcludeEl = formlyUtil.findByNodeName(superWrapper, \"formly-transclude\");\n\t }\n\t transcludeEl.replaceWith(template);\n\t return superWrapper.html();\n\t }\n\n\t function getWrapperOption(options) {\n\t var wrapper = options.wrapper;\n\t // explicit null means no wrapper\n\t if (wrapper === null) {\n\t return [];\n\t }\n\n\t // nothing specified means use the default wrapper for the type\n\t if (!wrapper) {\n\t // get all wrappers that specify they apply to this type\n\t wrapper = arrayify(formlyConfig.getWrapperByType(options.type));\n\t } else {\n\t wrapper = arrayify(wrapper).map(formlyConfig.getWrapper);\n\t }\n\n\t // get all wrappers for that this type specified that it uses.\n\t var type = formlyConfig.getType(options.type, true, options);\n\t if (type && type.wrapper) {\n\t var typeWrappers = arrayify(type.wrapper).map(formlyConfig.getWrapper);\n\t wrapper = wrapper.concat(typeWrappers);\n\t }\n\n\t // add the default wrapper last\n\t var defaultWrapper = formlyConfig.getWrapper();\n\t if (defaultWrapper) {\n\t wrapper.push(defaultWrapper);\n\t }\n\t return wrapper;\n\t }\n\n\t function checkApi(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyFieldOptions, options, {\n\t prefix: \"formly-field directive\",\n\t url: \"formly-field-directive-validation-failed\"\n\t });\n\t // validate with the type\n\t var type = options.type && formlyConfig.getType(options.type);\n\t if (type) {\n\t if (type.validateOptions) {\n\t type.validateOptions(options);\n\t }\n\t runApiCheck(type, options);\n\t }\n\t }\n\n\t function checkFieldGroupApi(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.fieldGroup, options, {\n\t prefix: \"formly-field directive\",\n\t url: \"formly-field-directive-validation-failed\"\n\t });\n\t }\n\n\t function runApiCheck(_ref, options) {\n\t var apiCheck = _ref.apiCheck;\n\t var apiCheckInstance = _ref.apiCheckInstance;\n\t var apiCheckFunction = _ref.apiCheckFunction;\n\t var apiCheckOptions = _ref.apiCheckOptions;\n\n\t if (!apiCheck) {\n\t return;\n\t }\n\t var instance = apiCheckInstance || formlyApiCheck;\n\t var fn = apiCheckFunction || \"warn\";\n\t var shape = instance.shape(apiCheck);\n\t instance[fn](shape, options, apiCheckOptions || {\n\t prefix: \"formly-field \" + name,\n\t url: formlyApiCheck.config.output.docsBaseUrl + \"formly-field-type-apicheck-failed\"\n\t });\n\t }\n\t}\n\tformlyField.$inject = [\"$http\", \"$q\", \"$compile\", \"$templateCache\", \"formlyConfig\", \"formlyValidationMessages\", \"formlyApiCheck\", \"formlyUtil\", \"formlyUsability\", \"formlyWarn\"];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyFocus;\n\n\t// @ngInject\n\tfunction formlyFocus($timeout, $document) {\n\t /* jshint -W052 */\n\t return {\n\t restrict: \"A\",\n\t link: function formlyFocusLink(scope, element, attrs) {\n\t var previousEl = null;\n\t var el = element[0];\n\t var doc = $document[0];\n\t attrs.$observe(\"formlyFocus\", function respondToFocusExpressionChange(value) {\n\t if (value === \"true\") {\n\t $timeout(function setElementFocus() {\n\t previousEl = doc.activeElement;\n\t el.focus();\n\t }, ~ ~attrs.focusWait);\n\t } else if (value === \"false\") {\n\t if (doc.activeElement === el) {\n\t el.blur();\n\t if (attrs.hasOwnProperty(\"refocus\") && previousEl) {\n\t previousEl.focus();\n\t }\n\t }\n\t }\n\t });\n\t }\n\t };\n\t}\n\tformlyFocus.$inject = [\"$timeout\", \"$document\"];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\n\tvar _slice = Array.prototype.slice;\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyForm;\n\n\t/**\n\t * @ngdoc directive\n\t * @name formlyForm\n\t * @restrict E\n\t */\n\t// @ngInject\n\tfunction formlyForm(formlyUsability, $parse, formlyApiCheck, formlyConfig) {\n\t var currentFormId = 1;\n\t return {\n\t restrict: \"E\",\n\t template: function formlyFormGetTemplate(el, attrs) {\n\t /* jshint -W033 */ // this because jshint is broken I guess...\n\t var rootEl = getRootEl();\n\t var fieldRootEl = getFieldRootEl();\n\t var formId = \"formly_\" + currentFormId++;\n\t var parentFormAttributes = \"\";\n\t if (attrs.hasOwnProperty(\"isFieldGroup\") && el.parent().parent().hasClass(\"formly\")) {\n\t parentFormAttributes = copyAttributes(el.parent().parent()[0].attributes);\n\t }\n\t return \"\\n <\" + rootEl + \" class=\\\"formly\\\"\\n name=\\\"\" + getFormName() + \"\\\"\\n role=\\\"form\\\" \" + parentFormAttributes + \">\\n <\" + fieldRootEl + \" formly-field\\n ng-repeat=\\\"field in fields \" + getTrackBy() + \"\\\"\\n \" + getHideDirective() + \"=\\\"!field.hide\\\"\\n class=\\\"formly-field\\\"\\n options=\\\"field\\\"\\n model=\\\"field.model || model\\\"\\n fields=\\\"fields\\\"\\n form=\\\"theFormlyForm\\\"\\n form-id=\\\"\" + getFormName() + \"\\\"\\n form-state=\\\"options.formState\\\"\\n index=\\\"$index\\\">\\n \" + fieldRootEl + \">\\n
\\n \" + rootEl + \">\\n \";\n\n\t function getRootEl() {\n\t return attrs.rootEl || \"ng-form\";\n\t }\n\n\t function getFieldRootEl() {\n\t return attrs.fieldRootEl || \"div\";\n\t }\n\n\t function getHideDirective() {\n\t return attrs.hideDirective || formlyConfig.extras.defaultHideDirective || \"ng-if\";\n\t }\n\n\t function getTrackBy() {\n\t if (!attrs.trackBy) {\n\t return \"\";\n\t } else {\n\t return \"track by \" + attrs.trackBy;\n\t }\n\t }\n\n\t function getFormName() {\n\t var formName = formId;\n\t var bindName = attrs.bindName;\n\t if (bindName) {\n\t if (angular.version.minor < 3) {\n\t throw formlyUsability.getFormlyError(\"bind-name attribute on formly-form not allowed in > angular 1.3\");\n\t }\n\t // we can do a one-time binding here because we know we're in 1.3.x territory\n\t formName = \"{{::'formly_' + \" + bindName + \"}}\";\n\t }\n\t return formName;\n\t }\n\n\t function copyAttributes(attributes) {\n\t var excluded = [\"model\", \"form\", \"fields\", \"options\", \"name\", \"role\", \"class\"];\n\t var arrayAttrs = [];\n\t angular.forEach(attributes, function (_ref) {\n\t var nodeName = _ref.nodeName;\n\t var nodeValue = _ref.nodeValue;\n\n\t if (nodeName !== \"undefined\" && excluded.indexOf(nodeName) === -1) {\n\t arrayAttrs.push(\"\" + toKebabCase(nodeName) + \"=\\\"\" + nodeValue + \"\\\"\");\n\t }\n\t });\n\t return arrayAttrs.join(\" \");\n\t }\n\n\t function toKebabCase(string) {\n\t if (string) {\n\t return string.replace(/([A-Z])/g, function ($1) {\n\t return \"-\" + $1.toLowerCase();\n\t });\n\t } else {\n\t return \"\";\n\t }\n\t }\n\t },\n\t replace: true,\n\t transclude: true,\n\t scope: {\n\t fields: \"=\",\n\t model: \"=\",\n\t form: \"=?\",\n\t options: \"=?\"\n\t },\n\t controller: /* @ngInject */[\"$scope\", \"formlyUtil\", function FormlyFormController($scope, formlyUtil) {\n\t setupOptions();\n\t $scope.model = $scope.model || {};\n\t $scope.fields = $scope.fields || [];\n\n\t angular.forEach($scope.fields, initModel); // initializes the model property if set to 'formState'\n\t angular.forEach($scope.fields, attachKey); // attaches a key based on the index if a key isn't specified\n\t angular.forEach($scope.fields, setupWatchers); // setup watchers for all fields\n\n\t // watch the model and evaluate watch expressions that depend on it.\n\t $scope.$watch(\"model\", onModelOrFormStateChange, true);\n\t if ($scope.options.formState) {\n\t $scope.$watch(\"options.formState\", onModelOrFormStateChange, true);\n\t }\n\n\t function onModelOrFormStateChange() {\n\t angular.forEach($scope.fields, function runFieldExpressionProperties(field, index) {\n\t /*jshint -W030 */\n\t var model = field.model || $scope.model;\n\t field.runExpressions && field.runExpressions(model);\n\t if (field.hideExpression) {\n\t // can't use hide with expressionProperties reliably\n\t var val = model[field.key];\n\t // this makes it closer to what a regular expressionProperty would be\n\t var extraLocals = {\n\t options: field,\n\t index: index,\n\t formState: $scope.options.formState,\n\t formId: $scope.formId\n\t };\n\t field.hide = formlyUtil.formlyEval($scope, field.hideExpression, val, val, extraLocals);\n\t }\n\t });\n\t }\n\n\t function setupOptions() {\n\t formlyApiCheck[\"throw\"]([formlyApiCheck.formOptionsApi.optional], [$scope.options], { prefix: \"formly-form options check\" });\n\t $scope.options = $scope.options || {};\n\t $scope.options.formState = $scope.options.formState || {};\n\n\t angular.extend($scope.options, {\n\t updateInitialValue: updateInitialValue,\n\t resetModel: resetModel\n\t });\n\t }\n\n\t function updateInitialValue() {\n\t angular.forEach($scope.fields, function (field) {\n\t if (isFieldGroup(field)) {\n\t field.options.updateInitialValue();\n\t } else {\n\t field.updateInitialValue();\n\t }\n\t });\n\t }\n\n\t function resetModel() {\n\t angular.forEach($scope.fields, function (field) {\n\t if (isFieldGroup(field)) {\n\t field.options.resetModel();\n\t } else {\n\t field.resetModel();\n\t }\n\t });\n\t }\n\n\t function initModel(field) {\n\t if (field.model && field.model === \"formState\") {\n\t field.model = $scope.options.formState;\n\t }\n\t }\n\n\t function attachKey(field, index) {\n\t if (!isFieldGroup(field)) {\n\t field.key = field.key || index || 0;\n\t }\n\t }\n\n\t function setupWatchers(field, index) {\n\t if (isFieldGroup(field) || !angular.isDefined(field.watcher)) {\n\t return;\n\t }\n\t var watchers = field.watcher;\n\t if (!angular.isArray(watchers)) {\n\t watchers = [watchers];\n\t }\n\t angular.forEach(watchers, function setupWatcher(watcher) {\n\t if (!angular.isDefined(watcher.listener)) {\n\t throw formlyUsability.getFieldError(\"all-field-watchers-must-have-a-listener\", \"All field watchers must have a listener\", field);\n\t }\n\t var watchExpression = getWatchExpression(watcher, field, index);\n\t var watchListener = getWatchListener(watcher, field, index);\n\n\t var type = watcher.type || \"$watch\";\n\t watcher.stopWatching = $scope[type](watchExpression, watchListener, watcher.watchDeep);\n\t });\n\t }\n\n\t function getWatchExpression(watcher, field, index) {\n\t var watchExpression = watcher.expression || \"model['\" + field.key + \"']\";\n\t if (angular.isFunction(watchExpression)) {\n\t // wrap the field's watch expression so we can call it with the field as the first arg\n\t // and the stop function as the last arg as a helper\n\t var originalExpression = watchExpression;\n\t watchExpression = function formlyWatchExpression() {\n\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t return originalExpression.apply(undefined, _toConsumableArray(args));\n\t };\n\t watchExpression.displayName = \"Formly Watch Expression for field for \" + field.key;\n\t }\n\t return watchExpression;\n\t }\n\n\t function getWatchListener(watcher, field, index) {\n\t var watchListener = watcher.listener;\n\t if (angular.isFunction(watchListener)) {\n\t // wrap the field's watch listener so we can call it with the field as the first arg\n\t // and the stop function as the last arg as a helper\n\t var originalListener = watchListener;\n\t watchListener = function formlyWatchListener() {\n\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t return originalListener.apply(undefined, _toConsumableArray(args));\n\t };\n\t watchListener.displayName = \"Formly Watch Listener for field for \" + field.key;\n\t }\n\t return watchListener;\n\t }\n\n\t function modifyArgs(watcher, index) {\n\t for (var _len = arguments.length, originalArgs = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n\t originalArgs[_key - 2] = arguments[_key];\n\t }\n\n\t return [$scope.fields[index]].concat(originalArgs, [watcher.stopWatching]);\n\t }\n\n\t function isFieldGroup(field) {\n\t return field && !!field.fieldGroup;\n\t }\n\t }],\n\t link: function link(scope, el, attrs) {\n\t var formId = attrs.name;\n\t scope.formId = formId;\n\t scope.theFormlyForm = scope[formId];\n\t if (attrs.form) {\n\t $parse(attrs.form).assign(scope.$parent, scope[formId]);\n\t }\n\n\t // chrome autocomplete lameness\n\t // see https://code.google.com/p/chromium/issues/detail?id=468153#c14\n\t // ლ(ಠ益ಠლ) (╯°□°)╯︵ ┻━┻ (◞‸◟;)\n\t var global = formlyConfig.extras.removeChromeAutoComplete === true;\n\t var offInstance = scope.options && scope.options.removeChromeAutoComplete === false;\n\t var onInstance = scope.options && scope.options.removeChromeAutoComplete === true;\n\t if (global && !offInstance || onInstance) {\n\t var input = document.createElement(\"input\");\n\t input.setAttribute(\"autocomplete\", \"address-level4\");\n\t input.setAttribute(\"hidden\", true);\n\t el[0].appendChild(input);\n\t }\n\t }\n\t };\n\t}\n\tformlyForm.$inject = [\"formlyUsability\", \"$parse\", \"formlyApiCheck\", \"formlyConfig\"];\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = addFormlyNgModelAttrsManipulator;\n\n\t// @ngInject\n\tfunction addFormlyNgModelAttrsManipulator(formlyConfig) {\n\t if (formlyConfig.extras.disableNgModelAttrsManipulator) {\n\t return;\n\t }\n\t formlyConfig.templateManipulators.preWrapper.push(ngModelAttrsManipulator);\n\n\t function ngModelAttrsManipulator(template, options, scope) {\n\t /* jshint maxcomplexity:6 */\n\t var el = document.createElement(\"div\");\n\t var data = options.data;\n\t if (data.skipNgModelAttrsManipulator === true) {\n\t return template;\n\t }\n\t el.innerHTML = template;\n\t var modelNodes = el.querySelectorAll(\"[ng-model], [data-ng-model]\");\n\t if (!modelNodes || !modelNodes.length) {\n\t return template;\n\t }\n\n\t addIfNotPresent(modelNodes, \"id\", scope.id);\n\t addIfNotPresent(modelNodes, \"name\", scope.id);\n\n\t addValidation();\n\t addModelOptions();\n\t addTemplateOptionsAttrs();\n\n\t return el.innerHTML;\n\n\t function addValidation() {\n\t if (angular.isDefined(options.validators) || angular.isDefined(options.validation.messages)) {\n\t addIfNotPresent(modelNodes, \"formly-custom-validation\", \"\");\n\t }\n\t }\n\n\t function addModelOptions() {\n\t if (angular.isDefined(options.modelOptions)) {\n\t addIfNotPresent(modelNodes, \"ng-model-options\", \"options.modelOptions\");\n\t if (options.modelOptions.getterSetter) {\n\t angular.forEach(modelNodes, function (node) {\n\t node.setAttribute(\"ng-model\", \"options.value\");\n\t });\n\t }\n\t }\n\t }\n\n\t function addTemplateOptionsAttrs() {\n\t if (!options.templateOptions && !options.expressionProperties) {\n\t // no need to run these if there are no templateOptions or expressionProperties\n\t return;\n\t }\n\t var to = options.templateOptions || {};\n\t var ep = options.expressionProperties || {};\n\n\t var ngModelAttributes = getBuiltInAttributes();\n\n\t // extend with the user's specifications winning\n\t angular.extend(ngModelAttributes, options.ngModelAttrs);\n\n\t // Feel free to make this more simple :-)\n\t angular.forEach(ngModelAttributes, function (val, name) {\n\t /* jshint maxcomplexity:14 */\n\t var attrVal = undefined;\n\t var attrName = undefined;\n\t var ref = \"options.templateOptions['\" + name + \"']\";\n\t var toVal = to[name];\n\t var epVal = getEpValue(ep, name);\n\n\t var inTo = angular.isDefined(toVal);\n\t var inEp = angular.isDefined(epVal);\n\t if (val.value) {\n\t // I realize this looks backwards, but it's right, trust me...\n\t attrName = val.value;\n\t attrVal = name;\n\t } else if (val.expression && inTo) {\n\t attrName = val.expression;\n\t if (angular.isString(to[name])) {\n\t attrVal = \"$eval(\" + ref + \")\";\n\t } else if (angular.isFunction(to[name])) {\n\t attrVal = \"\" + ref + \"(model[options.key], options, this, $event)\";\n\t } else {\n\t throw new Error(\"options.templateOptions.\" + name + \" must be a string or function: \" + JSON.stringify(options));\n\t }\n\t } else if (val.bound && inEp) {\n\t attrName = val.bound;\n\t attrVal = ref;\n\t } else if ((val.attribute || val.boolean) && inEp) {\n\t attrName = val.attribute || val.boolean;\n\t attrVal = \"{{\" + ref + \"}}\";\n\t } else if (val.attribute && inTo) {\n\t attrName = val.attribute;\n\t attrVal = toVal;\n\t } else if (val.boolean) {\n\t if (inTo && !inEp && toVal) {\n\t attrName = val.boolean;\n\t attrVal = true;\n\t } else {}\n\t } else if (val.bound && inTo) {\n\t attrName = val.bound;\n\t attrVal = ref;\n\t }\n\n\t if (angular.isDefined(attrName) && angular.isDefined(attrVal)) {\n\t addIfNotPresent(modelNodes, attrName, attrVal);\n\t }\n\t });\n\t }\n\t }\n\n\t // Utility functions\n\t function getBuiltInAttributes() {\n\t var ngModelAttributes = {\n\t focus: {\n\t attribute: \"formly-focus\"\n\t }\n\t };\n\t var boundOnly = [];\n\t var bothBooleanAndBound = [\"required\", \"disabled\"];\n\t var bothAttributeAndBound = [\"pattern\", \"minlength\"];\n\t var expressionOnly = [\"change\", \"keydown\", \"keyup\", \"keypress\", \"click\", \"focus\", \"blur\"];\n\t var attributeOnly = [\"placeholder\", \"min\", \"max\", \"tabindex\", \"type\"];\n\t if (formlyConfig.extras.ngModelAttrsManipulatorPreferUnbound) {\n\t bothAttributeAndBound.push(\"maxlength\");\n\t } else {\n\t boundOnly.push(\"maxlength\");\n\t }\n\n\t angular.forEach(boundOnly, function (item) {\n\t ngModelAttributes[item] = { bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(bothBooleanAndBound, function (item) {\n\t ngModelAttributes[item] = { boolean: item, bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(bothAttributeAndBound, function (item) {\n\t ngModelAttributes[item] = { attribute: item, bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(expressionOnly, function (item) {\n\t var propName = \"on\" + item.substr(0, 1).toUpperCase() + item.substr(1);\n\t ngModelAttributes[propName] = { expression: \"ng-\" + item };\n\t });\n\n\t angular.forEach(attributeOnly, function (item) {\n\t ngModelAttributes[item] = { attribute: item };\n\t });\n\t return ngModelAttributes;\n\t }\n\n\t function getEpValue(ep, name) {\n\t return ep[\"templateOptions.\" + name] || ep[\"templateOptions['\" + name + \"']\"] || ep[\"templateOptions[\\\"\" + name + \"\\\"]\"];\n\t }\n\n\t function addIfNotPresent(nodes, attr, val) {\n\t angular.forEach(nodes, function (node) {\n\t if (!node.getAttribute(attr)) {\n\t node.setAttribute(attr, val);\n\t }\n\t });\n\t }\n\t}\n\taddFormlyNgModelAttrsManipulator.$inject = [\"formlyConfig\"];\n\n\t// jshint -W035\n\t// empty to illustrate that a boolean will not be added via val.bound\n\t// if you want it added via val.bound, then put it in expressionProperties\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = addCustomTags;\n\n\t// @ngInject\n\tfunction addCustomTags($document) {\n\t if ($document && $document.get) {\n\t (function () {\n\t //IE8 check ->\n\t // http://stackoverflow.com/questions/10964966/detect-ie-version-prior-to-v9-in-javascript/10965203#10965203\n\t var document = $document.get(0);\n\t var div = document.createElement(\"div\");\n\t div.innerHTML = \"\";\n\t var isIeLessThan9 = div.getElementsByTagName(\"i\").length === 1;\n\n\t if (isIeLessThan9) {\n\t //add the custom elements that we need for formly\n\t var customElements = [\"formly-field\", \"formly-form\", \"formly-custom-validation\", \"formly-focus\", \"formly-transpose\"];\n\t angular.forEach(customElements, function (el) {\n\t document.createElement(el);\n\t });\n\t }\n\t })();\n\t }\n\t}\n\taddCustomTags.$inject = [\"$document\"];\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\t// some versions of angular don't export the angular module properly,\n\t// so we get it from window in this case.\n\n\tvar angular = _interopRequire(__webpack_require__(17));\n\n\tif (!angular.version) {\n\t angular = window.angular;\n\t}\n\tmodule.exports = angular;\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_16__;\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_17__;\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = { formlyEval: formlyEval, getFieldId: getFieldId, reverseDeepMerge: reverseDeepMerge, findByNodeName: findByNodeName, arrayify: arrayify, extendFunction: extendFunction };\n\n\tfunction formlyEval(scope, expression, $modelValue, $viewValue, extraLocals) {\n\t if (angular.isFunction(expression)) {\n\t return expression($viewValue, $modelValue, scope, extraLocals);\n\t } else {\n\t return scope.$eval(expression, angular.extend({ $viewValue: $viewValue, $modelValue: $modelValue }, extraLocals));\n\t }\n\t}\n\n\tfunction getFieldId(formId, options, index) {\n\t if (options.id) {\n\t return options.id;\n\t }\n\t var type = options.type;\n\t if (!type && options.template) {\n\t type = \"template\";\n\t } else if (!type && options.templateUrl) {\n\t type = \"templateUrl\";\n\t }\n\n\t return [formId, type, options.key, index].join(\"_\");\n\t}\n\n\tfunction reverseDeepMerge(dest) {\n\t angular.forEach(arguments, function (src, index) {\n\t if (!index) {\n\t return;\n\t }\n\t angular.forEach(src, function (val, prop) {\n\t if (!angular.isDefined(dest[prop])) {\n\t dest[prop] = angular.copy(val);\n\t } else if (objAndSameType(dest[prop], val)) {\n\t reverseDeepMerge(dest[prop], val);\n\t }\n\t });\n\t });\n\t}\n\n\tfunction objAndSameType(obj1, obj2) {\n\t return angular.isObject(obj1) && angular.isObject(obj2) && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2);\n\t}\n\n\t//recurse down a node tree to find a node with matching nodeName, for custom tags jQuery.find doesn't work in IE8\n\tfunction findByNodeName(el, nodeName) {\n\t if (!el.prop) {\n\t // not a jQuery or jqLite object -> wrap it\n\t el = angular.element(el);\n\t }\n\n\t if (el.prop(\"nodeName\") === nodeName.toUpperCase()) {\n\t return el;\n\t }\n\n\t var c = el.children();\n\t for (var i = 0; c && i < c.length; i++) {\n\t var node = findByNodeName(c[i], nodeName);\n\t if (node) {\n\t return node;\n\t }\n\t }\n\t}\n\n\tfunction arrayify(obj) {\n\t if (obj && !angular.isArray(obj)) {\n\t obj = [obj];\n\t } else if (!obj) {\n\t obj = [];\n\t }\n\t return obj;\n\t}\n\n\tfunction extendFunction() {\n\t for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n\t fns[_key] = arguments[_key];\n\t }\n\n\t return function extendedFunction() {\n\t var args = arguments;\n\t fns.forEach(function (fn) {\n\t return fn.apply(null, args);\n\t });\n\t };\n\t}\n\n/***/ }\n/******/ ])\n});\n;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/angular-formly/dist/formly.js\n// module id = 3\n// module chunks = 0","module.exports = angular;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"angular\"\n// module id = 4\n// module chunks = 0","// angular-formly-templates-bootstrap version 4.3.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular-formly\"), require(\"api-check\"), require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular-formly\", \"api-check\", \"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ngFormlyTemplatesBootstrap\"] = factory(require(\"angular-formly\"), require(\"api-check\"), require(\"angular\"));\n\telse\n\t\troot[\"ngFormlyTemplatesBootstrap\"] = factory(root[\"ngFormly\"], root[\"apiCheck\"], root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_8__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(11);\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addCheckboxType);\n\t\n\t function addCheckboxType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'multiCheckbox',\n\t template: __webpack_require__(21),\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional\n\t })\n\t },\n\t defaultOptions: {\n\t noFormControl: false,\n\t ngModelAttrs: {\n\t required: {\n\t attribute: '',\n\t bound: ''\n\t }\n\t }\n\t },\n\t apiCheckInstance: c,\n\t controller: /* @ngInject */[\"$scope\", function controller($scope) {\n\t var to = $scope.to;\n\t var opts = $scope.options;\n\t $scope.multiCheckbox = {\n\t checked: [],\n\t change: setModel\n\t };\n\t\n\t // initialize the checkboxes check property\n\t var modelValue = $scope.model[opts.key];\n\t if (angular.isArray(modelValue)) {\n\t (function () {\n\t var valueProp = to.valueProp || 'value';\n\t angular.forEach(to.options, function (v, index) {\n\t $scope.multiCheckbox.checked[index] = modelValue.indexOf(v[valueProp]) !== -1;\n\t });\n\t })();\n\t }\n\t\n\t function checkValidity(expressionValue) {\n\t var valid = angular.isArray($scope.model[opts.key]) && $scope.model[opts.key].length > 0 && expressionValue;\n\t\n\t $scope.fc.$setValidity('required', valid);\n\t }\n\t\n\t function setModel() {\n\t $scope.model[opts.key] = [];\n\t angular.forEach($scope.multiCheckbox.checked, function (checkbox, index) {\n\t if (checkbox) {\n\t $scope.model[opts.key].push(to.options[index][to.valueProp || 'value']);\n\t }\n\t });\n\t\n\t // Must make sure we mark as touched because only the last checkbox due to a bug in angular.\n\t $scope.fc.$setTouched();\n\t checkValidity(true);\n\t }\n\t\n\t if (opts.expressionProperties && opts.expressionProperties.required) {\n\t $scope.$watch($scope.options.expressionProperties.required, function (newValue) {\n\t checkValidity(newValue);\n\t });\n\t }\n\t\n\t if ($scope.to.required) {\n\t var unwatchFormControl = $scope.$watch('fc', function (newValue) {\n\t if (!newValue) {\n\t return;\n\t }\n\t checkValidity(true);\n\t unwatchFormControl;\n\t });\n\t }\n\t }]\n\t });\n\t }\n\t addCheckboxType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// some versions of angular don't export the angular module properly,\n\t// so we get it from window in this case.\n\t'use strict';\n\t\n\tvar angular = __webpack_require__(8);\n\tif (!angular.version) {\n\t angular = window.angular;\n\t}\n\tmodule.exports = angular;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addWrappers);\n\t\n\t function addWrappers(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setWrapper([{\n\t name: 'bootstrapLabel',\n\t template: __webpack_require__(17),\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t label: c.string,\n\t required: c.bool.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t }, { name: 'bootstrapHasError', template: __webpack_require__(18) }]);\n\t }\n\t addWrappers.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t __webpack_require__(10)(ngModule);\n\t __webpack_require__(1)(ngModule);\n\t __webpack_require__(12)(ngModule);\n\t __webpack_require__(9)(ngModule);\n\t __webpack_require__(13)(ngModule);\n\t __webpack_require__(14)(ngModule);\n\t};\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _addons = __webpack_require__(15);\n\t\n\tvar _addons2 = _interopRequireDefault(_addons);\n\t\n\tvar _description = __webpack_require__(16);\n\t\n\tvar _description2 = _interopRequireDefault(_description);\n\t\n\texports['default'] = function (ngModule) {\n\t (0, _addons2['default'])(ngModule);\n\t (0, _description2['default'])(ngModule);\n\t};\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_8__;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addRadioType);\n\t\n\t function addRadioType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'radio',\n\t template: __webpack_require__(19),\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: {\n\t noFormControl: false\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addRadioType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addCheckboxType);\n\t\n\t function addCheckboxType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'checkbox',\n\t template: __webpack_require__(20),\n\t wrapper: ['bootstrapHasError'],\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t label: c.string\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addCheckboxType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\tvar ngModuleName = 'formlyBootstrap';\n\tvar angular = __webpack_require__(4);\n\tvar ngModule = angular.module(ngModuleName, [__webpack_require__(2)]);\n\tngModule.constant('formlyBootstrapApiCheck', __webpack_require__(3)({\n\t output: {\n\t prefix: 'angular-formly-bootstrap'\n\t }\n\t}));\n\tngModule.constant('formlyBootstrapVersion', (\"4.3.2\"));\n\t\n\t__webpack_require__(5)(ngModule);\n\t__webpack_require__(6)(ngModule);\n\t__webpack_require__(7)(ngModule);\n\t\n\texports['default'] = ngModuleName;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addInputType);\n\t\n\t function addInputType(formlyConfigProvider) {\n\t formlyConfigProvider.setType({\n\t name: 'input',\n\t template: ' ',\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError']\n\t });\n\t }\n\t addInputType.$inject = [\"formlyConfigProvider\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _defineProperty(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); }\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addSelectType);\n\t\n\t var template = ' ';\n\t\n\t function addSelectType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'select',\n\t template: template,\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: function defaultOptions(options) {\n\t /* jshint maxlen:195 */\n\t var ngOptions = options.templateOptions.ngOptions || 'option[to.valueProp || \\'value\\'] as option[to.labelProp || \\'name\\'] group by option[to.groupProp || \\'group\\'] for option in to.options';\n\t return {\n\t ngModelAttrs: _defineProperty({}, ngOptions, {\n\t value: 'ng-options'\n\t })\n\t };\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional,\n\t groupProp: c.string.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addSelectType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addTextareaType);\n\t\n\t function addTextareaType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'textarea',\n\t template: '',\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: {\n\t ngModelAttrs: {\n\t rows: { attribute: 'rows' },\n\t cols: { attribute: 'cols' }\n\t }\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t rows: c.number.optional,\n\t cols: c.number.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addTextareaType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.run(addAddonsManipulator);\n\t\n\t function addAddonsManipulator(formlyConfig, formlyBootstrapApiCheck) {\n\t var addonTemplate = __webpack_require__(22);\n\t var addonChecker = formlyBootstrapApiCheck.shape({\n\t 'class': formlyBootstrapApiCheck.string.optional,\n\t text: formlyBootstrapApiCheck.string.optional,\n\t onClick: formlyBootstrapApiCheck.func.optional\n\t }).strict.optional;\n\t var api = formlyBootstrapApiCheck.shape({\n\t templateOptions: formlyBootstrapApiCheck.shape({\n\t addonLeft: addonChecker,\n\t addonRight: addonChecker\n\t })\n\t });\n\t formlyConfig.templateManipulators.preWrapper.push(function (template, options) {\n\t if (!options.templateOptions.addonLeft && !options.templateOptions.addonRight) {\n\t return template;\n\t }\n\t formlyBootstrapApiCheck.warn([api], [options]);\n\t return addonTemplate.replace(' ', template);\n\t });\n\t }\n\t addAddonsManipulator.$inject = [\"formlyConfig\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.run(addDescriptionManipulator);\n\t\n\t function addDescriptionManipulator(formlyConfig) {\n\t formlyConfig.templateManipulators.preWrapper.push(function ariaDescribedBy(template, options, scope) {\n\t if (angular.isDefined(options.templateOptions.description)) {\n\t var el = document.createElement('div');\n\t el.appendChild(angular.element(template)[0]);\n\t el.appendChild(angular.element('' + '{{to.description}}' + '
')[0]);\n\t var modelEls = angular.element(el.querySelectorAll('[ng-model]'));\n\t if (modelEls) {\n\t modelEls.attr('aria-describedby', scope.id + '_description');\n\t }\n\t return el.innerHTML;\n\t } else {\n\t return template;\n\t }\n\t });\n\t }\n\t addDescriptionManipulator.$inject = [\"formlyConfig\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n \\n {{to.label}}\\n {{to.required ? '*' : ''}}\\n \\n \\n
\\n\"\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n \\n
\\n\"\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n \\n {{option[to.labelProp || 'name']}}\\n \\n
\\n
\\n\"\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n\\t\\n\\t\\t \\n\\t\\t{{to.label}}\\n\\t\\t{{to.required ? '*' : ''}}\\n\\t \\n
\\n\"\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n \\n {{option[to.labelProp || 'name']}}\\n \\n
\\n
\\n\"\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n {{to.addonLeft.text}} \\n
\\n
\\n
\\n \\n {{to.addonRight.text}} \\n
\\n
\\n\"\n\n/***/ }\n/******/ ])\n});\n;\n//# sourceMappingURL=angular-formly-templates-bootstrap.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/angular-formly-templates-bootstrap/dist/angular-formly-templates-bootstrap.js\n// module id = 5\n// module chunks = 0","import formlyConfigFunct from './config/edaDragDropWay.formlyConfig.config';\nimport dragDropConfigFunt, {\n EASY_FORM_DD_VERSION_NAME,\n EASY_FORM_DD_VERSION_VALUE\n} from './config/edaDragDropWay.dragDropConfig.config';\nimport coreModule from './core/edaDragDropWay.core.module';\nimport leftPanelModule from './components/leftPanel/edaDragDropWay.leftPanel.module';\nimport formlyProxyModule from './components/formlyProxy/edaDragDropWay.formlyProxy.formFieldManage.module';\nimport dragdropModule from './components/dragdrop/edaDragDropWay.dragdrop.module';\nimport rightClickModule from './components/common/rightclick/edaDragDropWay.rightClick.module';\nimport configProxyModule from './components/configurationModelProxy/edaDragDropWay.configurationModelProxy.module';\n\nimport dragAndDropListModule from './components/common/dragAndDropList/dragAndDropList.module';\nimport pageSlideModule from './components/common/pageslide/pageslide.module';\n\nimport easyFormDragDropModule from './components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.module';\nimport trustThisFilterModule from './components/common/edaTrustThisFilter/edaDragDropWay.trustThis.module';\n\nconst DRAG_DROP_WAY_MODULE_NAME = 'eda.easyformGen.dragDropWay';\n\nconst DRAG_DROP_MODULES_INJECT = [\n coreModule.name,\n configProxyModule.name,\n trustThisFilterModule.name,\n leftPanelModule.name,\n formlyProxyModule.name,\n dragdropModule.name,\n easyFormDragDropModule.name,\n rightClickModule.name,\n dragAndDropListModule.name,\n pageSlideModule.name\n];\n\nconst mainModule = angular\n .module(DRAG_DROP_WAY_MODULE_NAME, DRAG_DROP_MODULES_INJECT)\n .config(dragDropConfigFunt)\n .config(formlyConfigFunct)\n .value(EASY_FORM_DD_VERSION_NAME, EASY_FORM_DD_VERSION_VALUE);\n\nexport default mainModule;\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/main.js","function formlyConfig(formlyConfigProvider, EasyFormGenFormlyBindingModelsProvider, easyFormDragWayConfigProvider) {\n\n formlyConfigProvider.setType({\n name \t\t: 'blank',\n template \t: '
'\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id \t\t\t\t\t\t\t\t: 'empty',\n name \t\t\t\t\t\t\t: 'no control',\n subtitle \t\t\t\t\t: 'no control',\n group \t\t\t\t\t\t: 'Blank',\n formlyType \t\t\t\t: 'blank',\n formlySubtype \t\t: '',\n formlyLabel \t\t\t: '',\n formlyRequired \t\t: false,\n formlyDescription \t: '',\n formlyOptions \t\t: []\n });\n\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n label \t:\n ``,\n control : 'empty',\n cssClass: 'col-xs-12'\n },\n {\n addToGroupCtrl : 'blank'\n });\n\n\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id \t\t\t\t\t\t\t\t: 'Header',\n name \t\t\t\t\t\t\t: 'Header',\n subtitle \t\t\t\t\t: 'no control',\n group \t\t\t\t\t\t: 'Decoration',\n formlyType \t\t\t\t: 'header',\n formlySubtype \t\t: '',\n formlyLabel \t\t\t: '',\n formlyRequired \t\t: false,\n formlyDescription \t: '',\n formlyOptions \t\t: []\n });\n\n\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n label \t: [\n ``\n ].join(''),\n control : 'Header',\n cssClass: 'col-xs-12'\n },\n {\n addToGroupCtrl : 'headers'\n });\n\n\n const subTitleTemplate = `\n \n
\n
{{options.templateOptions.placeholder}}\n \n \n
`;\n\n formlyConfigProvider.setType({\n name \t\t\t: 'subTitle',\n template \t: subTitleTemplate\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id \t\t\t\t\t\t\t\t: 'Subtitle',\n name \t\t\t\t\t\t\t: 'Subtitle',\n subtitle \t\t\t\t\t: 'no control',\n group \t\t\t\t\t\t: 'Decoration',\n formlyType \t\t\t\t: 'subTitle',\n formlySubtype \t\t: '',\n formlyLabel \t\t\t: '',\n formlyRequired \t\t: false,\n formlyDescription \t: '',\n formlyOptions \t\t: []\n });\n\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n 'label' \t:\n ``,\n 'control'\t: 'Subtitle',\n 'cssClass': 'col-xs-12'\n },\n {\n addToGroupCtrl : 'headers'\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id \t\t\t\t\t\t\t\t: 'TextInput',\n name \t\t\t\t\t\t\t: 'Text input',\n subtitle \t\t\t\t\t: 'Text input',\n group \t\t\t\t\t\t: 'input',\n formlyType \t\t\t\t: 'input',\n formlySubtype \t\t: '',\n formlyLabel \t\t\t: '',\n formlyRequired \t\t: false,\n formlyDescription \t: '',\n formlyOptions \t\t: []\n });\n\n\n /**\n * drag and drop text input (basic) control template\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n 'label' \t:\n ``,\n 'control'\t: 'TextInput',\n 'cssClass': 'col-xs-12'\n },\n {\n addToGroupCtrl : 'inputs'\n }\n );\n\n /**\n * Add text input (Password)\n *\n * note : formly template already exists\n * no need to create a custom one\n *\n * just declare in EasyFormGenFormlyBindingModelsProvider\n */\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id \t\t\t\t\t\t\t\t: 'Password',\n name \t\t\t\t\t\t\t: 'Password',\n subtitle \t\t\t\t\t: 'Password',\n group \t\t\t\t\t\t: 'input',\n formlyType \t\t\t\t: 'input',\n formlySubtype \t\t: 'password',\n formlyLabel \t\t\t: '',\n formlyRequired \t\t: false,\n formlyDescription \t: '',\n formlyOptions \t\t: []\n }\n );\n /**\n * drag and drop text input — password —control template\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n 'label' \t:\n ``,\n 'control'\t: 'Password',\n 'cssClass': 'col-xs-12'\n },\n {\n addToGroupCtrl : 'inputs'\n }\n );\n\n /**\n * Add angular UI date picker\n *\n * thx Kent C. Dodds for formly config template (since it was a huge config)\n */\n const attributes =\t[\n 'date-disabled',\n 'custom-class',\n 'show-weeks',\n 'starting-day',\n 'init-date',\n 'min-mode',\n 'max-mode',\n 'format-day',\n 'format-month',\n 'format-year',\n 'format-day-header',\n 'format-day-title',\n 'format-month-title',\n 'year-range',\n 'shortcut-propagation',\n 'uib-datepicker-popup',\n 'show-button-bar',\n 'current-text',\n 'clear-text',\n 'close-text',\n 'close-on-date-selection',\n 'datepicker-append-to-body'\n ];\n\n const bindings =\t[\n 'datepicker-mode',\n 'min-date',\n 'max-date'\n ];\n\n let ngModelAttrs = {};\n\n angular.forEach(attributes, (attr) => ngModelAttrs[camelize(attr)] = {attribute: attr});\n angular.forEach(bindings, (binding) => ngModelAttrs[camelize(binding)] = {bound: binding});\n\n function camelize(string) {\n string = string.replace(/[\\-_\\s]+(.)?/g, (match, chr) => chr ? chr.toUpperCase() : '');\n // Ensure 1st char is always lowercase\n return string.replace(/^([A-Z])/, (match, chr) => chr ? chr.toLowerCase() : '');\n }\n\n const angularUIDatePickerTemplate =\t`\n `;\n\n formlyConfigProvider.setType({\n name \t\t\t\t: 'datepicker',\n template \t\t: angularUIDatePickerTemplate,\n wrapper \t\t: ['bootstrapLabel', 'bootstrapHasError'],\n controller \t: [\t'$scope', ($scope) => {\n $scope.open = $event => {\n $event.preventDefault();\n $event.stopPropagation();\n $scope.opened = true;\n };\n }\n ],\n defaultOptions : {\n ngModelAttrs \t\t: ngModelAttrs,\n templateOptions : {\n addonLeft: {\n class : 'glyphicon glyphicon-calendar',\n onClick : (options) => options.templateOptions.isOpen = !options.templateOptions.isOpen\n },\n onFocus : ($viewValue, $modelValue, scope) => scope.to.isOpen = !scope.to.isOpen,\n datepickerOptions: {}\n }\n }\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id \t\t\t\t\t\t\t\t: 'Date',\n name \t\t\t\t\t\t\t: 'Date',\n subtitle \t\t\t\t\t: 'Date',\n group \t\t\t\t\t\t: 'input',\n formlyType \t\t\t\t: 'datepicker',\n formlySubtype \t\t: '',\n formlyLabel \t\t\t: '',\n formlyRequired \t\t: false,\n formlyDescription \t: '',\n formlyOptions \t\t: [],\n datepickerPopup \t: 'dd-MMMM-yyyy'\n }\n );\n /**\n * drag and drop text input — date — control template (using angular UI datepicker)\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n label \t:`\n `,\n control\t: 'Date',\n cssClass: 'col-xs-12'\n },\n {\n addToGroupCtrl : 'inputs'\n });\n\n /**\n * Add textarea\n *\n * note : formly template already exists\n * no need to create a custom one\n *\n * just declare in EasyFormGenFormlyBindingModelsProvider\n */\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id \t\t\t\t\t\t\t\t: 'Texarea',\n name \t\t\t\t\t\t\t: 'Textarea',\n subtitle \t\t\t\t\t: 'Textarea',\n group \t\t\t\t\t\t: 'Textarea',\n formlyType \t\t\t\t: 'textarea',\n formlySubtype \t\t: '',\n formlyLabel \t\t\t: '',\n formlyRequired \t\t: false,\n formlyDescription \t: '',\n formlyOptions \t\t: []\n });\n /**\n * drag and drop textarea control template\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n 'label' \t: `\n `,\n 'control'\t: 'Texarea',\n 'cssClass': 'col-xs-12'\n },\n {\n addToGroupCtrl : 'textareas'\n });\n\n /**\n * Add rich text editor control (using textAngular)\n *\n */\n let richTexEditorTemplate =`\n \n `;\n\n formlyConfigProvider.setType({\n name \t: 'richEditor',\n template \t: richTexEditorTemplate\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id \t\t\t\t\t\t\t\t: 'RichTextEditor',\n name \t\t\t\t\t\t\t: 'RichTextEditor',\n subtitle \t\t\t\t\t: 'RichTextEditor',\n group \t\t\t\t\t\t: 'Textarea',\n formlyType \t\t\t\t: 'richEditor',\n formlySubtype \t\t: '',\n formlyLabel \t\t\t: '',\n formlyRequired \t\t: false,\n formlyDescription \t: '',\n formlyOptions \t\t: []\n });\n /**\n * drag and drop rich text editor control template (using textAngular)\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n label \t: `\n `,\n control\t: 'RichTextEditor',\n cssClass: 'col-xs-12'\n },\n {\n addToGroupCtrl : 'textareas'\n });\n\n /**\n * Add radio\n *\n * note : formly template already exists\n * no need to create a custom one\n *\n * just declare in EasyFormGenFormlyBindingModelsProvider\n */\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id \t\t\t\t\t\t\t\t: 'Radio',\n name \t\t\t\t\t\t\t: 'Radio',\n subtitle \t\t\t\t\t: 'Radio',\n options \t\t\t\t\t: [],\n group \t\t\t\t\t\t: 'Radio',\n formlyType \t\t\t\t: 'radio',\n formlySubtype \t\t: '',\n formlyLabel \t\t\t: '',\n formlyRequired \t\t: false,\n formlyDescription \t: '' ,\n formlyOptions \t\t: []\n });\n /**\n * drag and drop radio control template (using textAngular)\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n 'label' \t: `\n `,\n 'control'\t: 'Radio',\n 'cssClass': 'col-xs-12'\n },\n {\n addToGroupCtrl : 'radios'\n });\n\n /**\n * Add checkbox\n *\n * note : formly template already exists\n * no need to create a custom one\n *\n * just declare in EasyFormGenFormlyBindingModelsProvider\n */\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id \t\t\t\t\t\t\t\t: 'Checkbox',\n name \t\t\t\t\t\t\t: 'Checkbox',\n subtitle \t\t\t\t\t: 'Checkbox',\n group \t\t\t\t\t\t: 'Checkbox',\n formlyType \t\t\t\t: 'checkbox',\n formlySubtype \t\t: '',\n formlyLabel \t\t\t: '',\n formlyRequired \t\t: false,\n formlyDescription \t: '',\n formlyOptions \t\t: []\n });\n /**\n * drag and drop checkbox control template (using textAngular)\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n label \t: `\n \n
\n \n \n \t\tlabel for checkbox \n \t\t* \n \n
\n
description
\n
`,\n control\t: 'Checkbox',\n cssClass: 'col-xs-12'\n },\n {\n addToGroupCtrl : 'checkboxes'\n });\n\n /**\n * Add basic Select control\n *\n * using nya-bs-select\n */\n let basicSelectTemplate =\t`\n \n \n {{option.name}} \n \n `;\n\n formlyConfigProvider.setType({\n name \t\t\t: 'basicSelect',\n template \t: basicSelectTemplate\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id \t\t\t\t\t\t\t\t: 'BasicSelect',\n name \t\t\t\t\t\t\t: 'Basic select',\n subtitle \t\t\t\t\t: 'Basic select',\n options \t\t\t\t\t: [],\n group \t\t\t\t\t\t: 'Select',\n formlyType \t\t\t\t: 'basicSelect',\n formlySubtype \t\t: '',\n formlyLabel \t\t\t: '',\n formlyRequired \t\t: false,\n formlyDescription \t: '',\n formlyOptions \t\t: []\n });\n\n /**\n * drag and drop basic select control template (using textAngular)\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel(\n {\n label \t: `\n \n
`,\n control\t: 'BasicSelect',\n cssClass: 'col-xs-12'\n },\n {\n addToGroupCtrl : 'selects'\n });\n\n /**\n * Add Grouped Select control\n *\n * using nya-bs-select\n */\n let groupedSelectTemplate =\t`\n
\n \n \n \n {{option.name}} \n \n \n \n `;\n\n formlyConfigProvider.setType({\n name \t\t: 'groupedSelect',\n template \t: groupedSelectTemplate\n });\n\n EasyFormGenFormlyBindingModelsProvider.addEasyFormControlToList({\n id \t\t\t\t\t\t\t\t: 'GroupedSelect',\n name \t\t\t\t\t\t\t: 'Grouped Select',\n subtitle \t\t\t\t\t: 'Grouped Select',\n options \t\t\t\t\t: [],\n group \t\t\t\t\t\t: 'Select',\n formlyType \t\t\t\t: 'groupedSelect',\n formlySubtype \t\t: '',\n formlyLabel \t\t\t: '',\n formlyRequired \t\t: false,\n formlyDescription \t: '',\n formlyOptions \t\t: []\n });\n /**\n * drag and drop grouped select control template (using textAngular)\n *\n *\n * @PARAM 1 : control template object (drag an drop)\n * @PARAM 2 : object to indicates in which group of control it will be inserted\n * \t\t\t\t\t(related to _dragDropConfigModel.containerConfig.decoration in dragDropConfig provider)\n */\n easyFormDragWayConfigProvider.addControlToDragDropPresentationModel({\n label \t: `\n
\n
`,\n control\t: 'GroupedSelect',\n cssClass: 'col-xs-12'\n },\n {\n addToGroupCtrl : 'selects'\n });\n\n\n}\n\nformlyConfig.$inject = [\n 'formlyConfigProvider',\n 'EasyFormGenFormlyBindingModelsProvider',\n 'easyFormDragWayConfigProvider'\n];\n\nexport default formlyConfig;\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/config/edaDragDropWay.formlyConfig.config.js","import easyFormConfig from '../../easyFormConfig.json';\n\nconst EASY_FORM_DD_VERSION_NAME = 'easyFormGenVersion';\nlet EASY_FORM_DD_VERSION_VALUE = easyFormConfig.dragdropway.version;\n\nfunction dragDropConfigFunct(easyFormDragWayConfigProvider) {\n easyFormDragWayConfigProvider.setItemsNotTocount({\n //placeholder : '',\n itemBeingDragged : 'dndDraggingSource' \n });\n}\n\ndragDropConfigFunct.$inject = [\n 'easyFormDragWayConfigProvider'\n];\n\nexport default dragDropConfigFunct; \n\nexport {\n EASY_FORM_DD_VERSION_NAME, \n EASY_FORM_DD_VERSION_VALUE\n};\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/config/edaDragDropWay.dragDropConfig.config.js","module.exports = {\n\t\"stepway\": {\n\t\t\"version\": \"2.1.4\"\n\t},\n\t\"dragdropway\": {\n\t\t\"version\": \"2.1.4\"\n\t},\n\t\"formviewer\": {\n\t\t\"version\": \"2.1.4\"\n\t}\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/easyFormConfig.json\n// module id = 13\n// module chunks = 0","const CORE_MODULES = [\t\n\t'textAngular',\n\t'textAngularSetup',\n\t'ngAnimate',\n\t'toaster',\t\t\t\t\t\t\t\t\t\t\t\n\t'formly', \n\t'formlyBootstrap',\n\t'ui.bootstrap',\n\t'nya.bootstrap.select',\n\t'mgcrea.ngStrap.affix'\n\t// 'pascalprecht.translate'\t\n];\n\nexport default angular\n\t\t\t\t\t\t\t\t.module('easyFormGen.dragDropWay.core', CORE_MODULES);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/core/edaDragDropWay.core.module.js","/* global angular */\nimport leftPanelController, {\n\tLEFT_PANEL_CONTROLLER\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './edaDragDropWay.leftPanel.controller';\nimport leftPanel, {\n\tLEFT_PANEL_DIRECTIVE\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './edaDragDropWay.leftPanel.directive';\nimport selectOptionMange, {\n LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE\n} from './edaDragDropWay.leftPanel.selectOptionManage.service';\nimport controllerModalProxy, {\n CONTROLLER_MODAL_PROXY\n} from './edaDragDropWay.leftPanel.controllerModalProxy.service';\nimport leftPanelValidEditFooter, {\n LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE\n} from './validEditFooter/edaDragDropWay.leftpanel.validEditFooter.directive';\nimport leftPanelTextInputControl, {\n LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE\n} from './TextInputControl/edaDragDropWay.leftpanel.textInputControl.directive';\nimport leftPanelTextareaControl, {\n LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE\n} from './TextAreaControl/edaDragDropWay.leftpanel.textareaControl.directive';\nimport leftPanelSubtitleControl, {\n LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE\n} from './SubTitleControl/edaDragDropWay.leftpanel.subtitleControl.directive';\nimport leftPanelRichTextEditorControl, {\n LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE\n} from './RichTextEditorControl/edaDragDropWay.leftpanel.richTextEditorControl.directive';\nimport leftPanelRadioControl, {\n LEFT_PANEL_RADIO_CONTROL_DIRECTIVE\n} from './RadioControl/edaDragDropWay.leftpanel.radioControl.directive';\nimport leftPanelPasswordControl, {\n LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE\n} from './PasswordControl/edaDragDropWay.leftpanel.passwordControl.directive';\nimport leftPanelHeaderControl, {\n LEFT_PANEL_HEADER_CONTROL_DIRECTIVE\n} from './HeaderControl/edaDragDropWay.leftpanel.headerControl.directive';\nimport leftPanelGroupedSelectControl, {\n LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE\n} from './GroupedSelectControl/edaDragDropWay.leftpanel.groupedSelectControl.directive';\nimport leftPanelDateControl, {\n LEFT_PANEL_DATE_CONTROL_DIRECTIVE\n} from './DateControl/edaDragDropWay.leftpanel.dateControl.directive';\nimport leftPanelCheckBoxControl, {\n LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE\n} from './CheckBoxControl/edaDragDropWay.leftpanel.checkBoxControl.directive';\nimport leftPanelBlankControl, {\n LEFT_PANEL_BLANK_CONTROL_DIRECTIVE\n} from './BlankControl/edaDragDropWay.leftpanel.blankControl.directive';\nimport leftPanelBasicSelectControl, {\n LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE\n} from './BasicSelectControl/edaDragDropWay.leftpanel.basicSelectControl.directive';\n\n\nconst LEFT_PANEL_MODULE = 'edaDragDropWay.leftPanel.module';\n\nexport default angular\n\t\t\t\t\t\t\t\t.module(LEFT_PANEL_MODULE, [])\n\t\t\t\t\t\t\t\t.directive(LEFT_PANEL_DIRECTIVE, leftPanel)\n\t\t\t\t\t\t\t\t.controller(LEFT_PANEL_CONTROLLER, leftPanelController)\n .service(LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE, selectOptionMange)\n .service(CONTROLLER_MODAL_PROXY, controllerModalProxy)\n .directive(LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE, leftPanelValidEditFooter)\n .directive(LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE, leftPanelTextInputControl)\n .directive(LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE, leftPanelTextareaControl)\n .directive(LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE, leftPanelSubtitleControl)\n .directive(LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE, leftPanelRichTextEditorControl)\n .directive(LEFT_PANEL_RADIO_CONTROL_DIRECTIVE, leftPanelRadioControl)\n .directive(LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE, leftPanelPasswordControl)\n .directive(LEFT_PANEL_HEADER_CONTROL_DIRECTIVE, leftPanelHeaderControl)\n .directive(LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE, leftPanelGroupedSelectControl)\n .directive(LEFT_PANEL_DATE_CONTROL_DIRECTIVE, leftPanelDateControl)\n .directive(LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE, leftPanelCheckBoxControl)\n .directive(LEFT_PANEL_BLANK_CONTROL_DIRECTIVE, leftPanelBlankControl)\n .directive(LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE, leftPanelBasicSelectControl);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.module.js","import {\n\tdateFormats,\n\tsetToday,\n\tclearDateTime\n} \t\t\t\t\t\t\t\t\tfrom './edaDragDropWay.leftPanel.controller.helpers';\n\nconst LEFT_PANEL_CONTROLLER \t=\t'leftPanelController';\nconst LEFT_PANEL_CONTROLLERAS\t= 'leftPanelCtrl';\n\nclass leftPanelController{\n\tconstructor(toaster,\n\t\t\t\t\t\t\t$timeout,\n\t\t\t\t\t\t\t$selectOptionMange,\n\t\t\t\t\t\t\tcontrollerModalProxy){\n\n\t\tthis.toaster \t\t\t\t\t\t= toaster;\n\t\tthis.$timeout \t\t\t\t\t\t= $timeout;\n\t\tthis.$selectOptionMange \t= $selectOptionMange;\n\t\tthis.controllerModalProxy = controllerModalProxy;\n\n\t\tthis.init();\n\t}\n\n\tinit() {\n\t\tthis.proxyModel \t\t\t\t\t\t\t\t= this.controllerModalProxy.proxyModel;\n\t\tthis.proxyModel.selectedControl = this.proxyModel.temporyConfig.selectedControl;\n\t\tthis.basicSelectRowCollection \t= this.controllerModalProxy.basicSelectRowCollection;\n\t\tthis.newOptionBasicSelect \t\t\t= this.controllerModalProxy.newOptionBasicSelect;\n\n\t\tthis.groupedSelectRowCollection = this.controllerModalProxy.groupedSelectRowCollection;\n\t\tthis.newOptionGroupedSelect \t\t= this.controllerModalProxy.newOptionGroupedSelect;\n\t\tthis.GroupedSelectGroups \t\t\t\t= this.controllerModalProxy.GroupedSelectGroups;\n\t\tthis.newGroupGroupedSelect \t\t\t= this.controllerModalProxy.newGroupGroupedSelect;\n\t\tthis.groupSelectGroupClick \t\t\t= this.controllerModalProxy.groupSelectGroupClick;\n\n\t\tthis.radioRowCollection \t\t\t\t= this.controllerModalProxy.radioRowCollection;\n\t\tthis.newOptionRadio \t\t\t\t\t\t= this.controllerModalProxy.newOptionRadio;\n\n\t\tthis.demodt \t\t\t\t\t\t\t\t\t\t= {};\n\t\tthis.demodt.formats\t\t\t\t\t\t\t= dateFormats;\n\t\tthis.dateOptions\t\t\t\t\t\t\t\t= this.getDateOptions();\n\n\t\t// this.controllerModalProxy.resetAllTemporyModels();\n this.initNyaSelectConformingSelectedControl();\n\t}\n\n\tgetDateOptions() {\n\t\tlet dateOptions = {\n\t\t\tformatYear\t: 'yy',\n\t\t\tstartingDay\t: 1,\n\t\t\tshowWeeks\t\t: true,\n\t\t\tinitDate\t\t: null\n\t\t};\n\t\treturn dateOptions;\n\t}\n\n\tinitNyaSelectConformingSelectedControl() {\n\t\t//place proxyModel to selection if not none :\n\t\tif (this.proxyModel.temporyConfig.selectedControl !== 'none') {\n\t\t\tfor (let i = this.proxyModel.controls.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (this.proxyModel.controls[i].id === this.proxyModel.temporyConfig.selectedControl) this.modelproxyModel = this.proxyModel.controls[i];\n\t\t\t}\n\t\t\tif (this.proxyModel.temporyConfig.selectedControl === 'BasicSelect') this.controllerModalProxy.bindBasicSelectFromProxyModel(self.basicSelectRowCollection);\n\t\t\tif (this.proxyModel.temporyConfig.selectedControl === 'GroupedSelect') this.controllerModalProxy.bindGroupedSelectFromProxyModel(this.groupedSelectRowCollection, this.GroupedSelectGroups);\n\t\t\tif (this.proxyModel.temporyConfig.selectedControl === 'Radio') this.controllerModalProxy.bindRadioFromProxyModel(this.radioRowCollection);\n\t\t}\n\t}\n\n\tupdateSpecialControl() {\n\t\t//refresh service data for particular controls as selects and radio\n\t\tthis.proxyModel.basicSelectRowCollection \t\t= this.basicSelectRowCollection;\n\t\tthis.proxyModel.newOptionBasicSelect \t\t\t\t= this.newOptionBasicSelect;\n\t\tthis.proxyModel.groupedSelectRowCollection \t= this.groupedSelectRowCollection;\n\t\tthis.proxyModel.newOptionGroupedSelect \t\t\t= this.newOptionGroupedSelect;\n\t\tthis.proxyModel.GroupedSelectGroups \t\t\t\t= this.GroupedSelectGroups;\n\t\tthis.proxyModel.newGroupGroupedSelect \t\t\t= this.newGroupGroupedSelect;\n\t\tthis.proxyModel.groupSelectGroupClick \t\t\t= this.groupSelectGroupClick;\n\t\tthis.proxyModel.radioRowCollection \t\t\t\t\t= this.radioRowCollection;\n\t\tthis.proxyModel.newOptionRadio \t\t\t\t\t\t\t= this.newOptionRadio;\n\t\t//force apply update proxyModel\n\t\tthis.controllerModalProxy.bindSpecialCtrlTemporyModelsToProxyModel();\n\t\treturn true;\n\t}\n\n\tresetTemporyConfig() {\n\t\tthis.proxyModel.temporyConfig = {\n\t\t\tformlyLabel\t\t\t\t: '',\n\t\t\tformlyRequired\t\t: false,\n\t\t\tformlyPlaceholder\t: '',\n\t\t\tformlyDescription\t: '',\n\t\t\tformlyOptions\t\t\t: []\n\t\t};\n\t}\n\n\tresetControl() {\n\t\tthis.proxyModel.temporyConfig.formlyLabel \t\t\t= '';\n\t\tthis.proxyModel.temporyConfig.formlyRequired \t\t= false;\n\t\tthis.proxyModel.temporyConfig.formlyPlaceholder\t= '';\n\t\tthis.proxyModel.temporyConfig.formlyDescription \t= '';\n\t\tthis.proxyModel.temporyConfig.formlyOptions \t\t= [];\n\t\tthis.proxyModel.temporyConfig.datepickerPopup = this.initDatePicker();\n\t}\n\n\tinitDatePicker() {\n\t\tthis.proxyModel.temporyConfig.datepickerPopup = this.demodt.formats[0];\n\t}\n\n\tselectThisControl(controlName){\n\t\tthis.proxyModel.selectedControl = 'none';\n\t\tthis.resetTemporyConfig();\n\t\tfor (let i = this.proxyModel.controls.length - 1; i >= 0; i--) {\n\t\t\tif (this.proxyModel.controls[i].id === controlName) {\n\t\t\t\tthis.proxyModel.selectedControl = this.proxyModel.controls[i].id;\n\t\t\t}\n\t\t}\n\t\tif (this.proxyModel.selectedControl === 'Date') this.initDatePicker();\n\t}\n\n\n\t/**\n\t\t* ==============================================================\n\t\t* specific controls management\n\t\t* (display, properties.... : ex : grouped Select)\n\t\t* ==============================================================\n\t\t*/\n\t\taddNewOptionRadio(){\n\t\t\tlet result = this.$selectOptionMange.addNewOptionRadio(this.radioRowCollection, this.newOptionRadio.saisie);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype\t\t: 'warning',\n\t\t\t\t\t\ttimeout\t: 2000,\n\t\t\t\t\t\ttitle\t\t: result.details,\n\t\t\t\t\t\tbody\t\t: `'${this.newOptionRadio.saisie}' cannot be added.`,\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t}\n\t\t\t//reset input\n\t\t\tthis.newOptionRadio = {saisie: ''};\n\t\t}\n\n\t\tremoveRadioRow(index) {\n\t\t\tlet result = this.$selectOptionMange.removeOption(this.radioRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype\t\t\t: 'warning',\n\t\t\t\t\ttimeout\t\t: 2000,\n\t\t\t\t\ttitle\t\t\t: result.details,\n\t\t\t\t\tbody\t\t\t: 'Delete was cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tupThisRadioRow(index){\n\t\t\tlet result = this.$selectOptionMange.upthisOption(this.radioRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype\t\t: 'warning',\n\t\t\t\t\ttimeout\t: 2000,\n\t\t\t\t\ttitle\t\t: result.details,\n\t\t\t\t\tbody\t\t: 'Operation cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tdownThisRadioRow(index){\n\t\t\tlet result = this.$selectOptionMange.downthisOption(this.radioRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype\t\t: 'warning',\n\t\t\t\t\ttimeout\t: 2000,\n\t\t\t\t\ttitle\t\t: result.details,\n\t\t\t\t\tbody\t\t: 'Operation cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\taddNewOptionBasicSelect(){\n\t\t\tlet result = this.$selectOptionMange.addNewOptionBasicSelect(this.basicSelectRowCollection, this.newOptionBasicSelect.saisie);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype\t\t\t: 'warning',\n\t\t\t\t\ttimeout\t\t: 2000,\n\t\t\t\t\ttitle\t\t\t: result.details,\n\t\t\t\t\tbody\t\t\t: `'${this.newOptionBasicSelect.saisie}' cannot be added.`,\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.newOptionBasicSelect = {saisie: ''}; //reset input\n\t\t}\n\n\t\tremoveRow(index) {\n\t\t\tlet result = this.$selectOptionMange.removeOption(this.basicSelectRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype\t\t: 'warning',\n\t\t\t\t\ttimeout\t: 2000,\n\t\t\t\t\ttitle\t\t: result.details,\n\t\t\t\t\tbody\t\t: 'Delete was cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tupThisRow(index){\n\t\t\t\tlet result = this.$selectOptionMange.upthisOption(this.basicSelectRowCollection, index);\n\t\t\t\tif (result.resultFlag === false) {\n\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\ttype\t\t: 'warning',\n\t\t\t\t\t\ttimeout\t: 2000,\n\t\t\t\t\t\ttitle\t\t: result.details,\n\t\t\t\t\t\tbody\t\t: 'Operation cancelled.',\n\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\n\t\tdownThisRow(index){\n\t\t\tlet result = this.$selectOptionMange.downthisOption(this.basicSelectRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype\t\t: 'warning',\n\t\t\t\t\ttimeout\t: 2000,\n\t\t\t\t\ttitle\t\t: result.details,\n\t\t\t\t\tbody\t\t: 'Operation cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tshowGroupListToChoose(){\n\t\t\tthis.groupSelectGroupClick.showList = !this.groupSelectGroupClick.showList;\n\t\t}\n\n\t\taddNewGroupToGroupedSelect(){\n\t\t\tif (this.newGroupGroupedSelect.saisie !== '') {\n\t\t\t\tfor (let i = this.GroupedSelectGroups.list.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (this.GroupedSelectGroups.list[i] === this.newGroupGroupedSelect.saisie) {\n\t\t\t\t\t\tthis.toaster.pop({\n\t\t\t\t\t\t\ttype\t\t\t: 'warning',\n\t\t\t\t\t\t\ttimeout\t\t: 2000,\n\t\t\t\t\t\t\ttitle\t\t\t: 'Group already exists',\n\t\t\t\t\t\t\tbody\t\t\t: 'No group added.',\n\t\t\t\t\t\t\tshowCloseButton: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.GroupedSelectGroups.list.push(this.newGroupGroupedSelect.saisie);\n\t\t\t}else{\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype\t\t\t: 'warning',\n\t\t\t\t\ttimeout\t\t: 2000,\n\t\t\t\t\ttitle\t\t\t: 'Not a valid group to add',\n\t\t\t\t\tbody\t\t\t: 'No group added.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.newGroupGroupedSelect.saisie = '';\n\t\t}\n\n\n\t\taddNewOptionGroupedSelect(){\n\t\t\tlet result = this.$selectOptionMange.addNewOptionGroupedSelect(this.groupedSelectRowCollection, this.newOptionGroupedSelect.saisie, '');\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype\t\t\t: 'warning',\n\t\t\t\t\ttimeout\t\t: 2000,\n\t\t\t\t\ttitle\t\t\t: result.details,\n\t\t\t\t\tbody\t\t\t: `'${this.newOptionGroupedSelect.saisie}' cannot be added.`,\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t\t//bind nya : dont bind here $apply is not done fast enough\n\t\t\t//bindGroupedSelectToNya();\n\t\t\t//reset input\n\t\t\tthis.newOptionGroupedSelect = {saisie: ''};\n\t\t}\n\n\n\t\tremoveGroupedSelectRow(index) {\n\t\t\tlet result = this.$selectOptionMange.removeOption(this.groupedSelectRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype\t\t: 'warning',\n\t\t\t\t\ttimeout\t: 2000,\n\t\t\t\t\ttitle\t\t: result.details,\n\t\t\t\t\tbody\t\t: 'Delete was cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\tupThisGroupedSelectRow(index){\n\t\tlet result = this.$selectOptionMange.upthisOption(this.groupedSelectRowCollection, index);\n\t\tif (result.resultFlag === false) {\n\t\t\tthis.toaster.pop({\n\t\t\t\ttype\t\t: 'warning',\n\t\t\t\ttimeout\t: 2000,\n\t\t\t\ttitle\t\t: result.details,\n\t\t\t\tbody\t\t: 'Operation cancelled.',\n\t\t\t\tshowCloseButton: true\n\t\t\t});\n\t\t}\n\t}\n\n\n\tdownThisGroupedSelectRow(index){\n\t\t\tlet result = this.$selectOptionMange.downthisOption(this.groupedSelectRowCollection, index);\n\t\t\tif (result.resultFlag === false) {\n\t\t\t\tthis.toaster.pop({\n\t\t\t\t\ttype\t\t: 'warning',\n\t\t\t\t\ttimeout\t: 2000,\n\t\t\t\t\ttitle\t\t: result.details,\n\t\t\t\t\tbody\t\t: 'Operation cancelled.',\n\t\t\t\t\tshowCloseButton: true\n\t\t\t\t});\n\t\t\t}\n\t}\n\n\n\ttoday(){\n\t\tsetToday(this.demodt);\n\t}\n\n\n\tclear(){\n\t\tclearDateTime(this.demodt);\n\t}\n\n\n\topen($event) {\n\t\t$event.preventDefault();\n\t\t$event.stopPropagation();\n\t\tthis.demodt.opened = true;\n\t}\n\n\n\n}\n\nleftPanelController.$inject = [\n\t'toaster',\n\t'$timeout',\n\t'$selectOptionMange',\n\t'controllerModalProxy'\n];\n\nexport default leftPanelController;\n\nexport {\n\tLEFT_PANEL_CONTROLLER,\n\tLEFT_PANEL_CONTROLLERAS\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.controller.js","const dateFormats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];\n\nconst setToday = (datetimePickerModel)=>{\n\tdatetimePickerModel.dt = new Date();\n};\n\nconst clearDateTime = (datetimePickerModel)=>{\n\tdatetimePickerModel.dt = new Date();\n};\n\nexport {\n\tdateFormats,\n\tsetToday,\n\tclearDateTime\n};\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.controller.helpers.js","import {\n\tLEFT_PANEL_CONTROLLER,\n\tLEFT_PANEL_CONTROLLERAS\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './edaDragDropWay.leftPanel.controller';\n\nimport leftPanelTemplate from './edaDragDropWay.leftPanel.template.html';\n\nconst LEFT_PANEL_DIRECTIVE = 'leftPanel';\n\n\nfunction leftPanel(){\n\tlet directive = {\n\t\trestrict \t\t\t\t\t: 'E',\n\t\ttemplate\t\t\t\t\t: leftPanelTemplate,\n\t\tscope\t\t\t\t\t\t\t: {},\n\t\tcontroller\t\t\t\t:\tLEFT_PANEL_CONTROLLER,\n\t\tcontrollerAs\t\t\t: LEFT_PANEL_CONTROLLERAS,\n\t\tbindToController\t: {\n\t\t\tcloseEditPanel : '&',\n selectedControl : '&',\n saveFromEditPanel : '&'\n\t\t}\n\t};\n\treturn directive;\n}\n\nleftPanel.$inject = [];\n\nexport default leftPanel;\n\nexport {\n\tLEFT_PANEL_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.directive.js","module.exports = \"
\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n ×\\n \\n\\t\\t \\n\\t
\\n\\t
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n \\n \\n Select a control\\n \\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t \\n\\t\\t
\\n\\t
\\n\\t
\\n Close\\n \\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.template.html\n// module id = 19\n// module chunks = 0","/* global angular */\nimport * as helpers from './edaDragDropWay.leftPanel.selectOptionManage.service.helpers';\n\nconst LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE = '$selectOptionMange';\n\n\nclass selectOptionMange{\n \n constructor(){\n this.init();\n }\n \n init(){\n \n }\n \n initModel(selectObj){\n helpers.resetModel(selectObj);\n }\n \n isOptionUnique(selectObj, textValue){\n for (let i = selectObj.rows.length - 1; i >= 0; i--) {\n if (selectObj.rows[i].option === textValue) return false;\n }\n return true;\n }\n \n isOptionValidFormat(textValue){\n if (textValue !== '') return true;\n return false; \n }\n\n addNewOptionRadio(selectObj, newOptionText){\n let fullResponse = {\n resultFlag : false,\n details : ''\n };\n let checkResult = helpers.validOption(selectObj, newOptionText); \n if (checkResult.resultFlag === true){\n let newOption = {\n option : newOptionText,\n order : selectObj.rows.length\n };\n selectObj.rows.push(newOption);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n }else{\n angular.copy(checkResult, fullResponse); \n return fullResponse; \n }\n }\n \n addNewOptionBasicSelect(selectObj, newOptionText){\n let fullResponse = {\n resultFlag : false,\n details : ''\n };\n let checkResult = helpers.validOption(selectObj, newOptionText); \n if (checkResult.resultFlag === true){\n let newOption = {\n option : newOptionText,\n order : selectObj.rows.length\n };\n selectObj.rows.push(newOption);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n }else{\n angular.copy(checkResult, fullResponse); \n return fullResponse; \n }\n }\n \n addNewOptionGroupedSelect(selectObj, newOptionText, newOptionGroup){\n let fullResponse = {\n resultFlag : false,\n details : ''\n };\n let checkResult = helpers.validOption(selectObj, newOptionText); \n if (checkResult.resultFlag === true){\n let newOption = {\n option : newOptionText,\n group : newOptionGroup,\n order : selectObj.rows.length\n };\n selectObj.rows.push(newOption);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n }else{\n angular.copy(checkResult, fullResponse); \n return fullResponse; \n }\n } \n \n removeOption(selectObj, AtIndex) {\n let fullResponse = {\n resultFlag : false,\n details : ''\n };\n if (AtIndex !== -1) {\n selectObj.rows.splice(AtIndex, 1);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n }else{\n fullResponse.resultFlag = false;\n fullResponse.details = 'Option index not valid';\n return fullResponse;\n }\n }\n \n upthisOption(selectObj, indexOption){\n let fullResponse = {\n resultFlag : false,\n details : ''\n };\n if (indexOption > -1) {\n if (indexOption > 0) {\n if (selectObj.rows[indexOption - 1]) {\n let currentOption = selectObj.rows[indexOption];\n selectObj.rows.splice(indexOption , 1);\n selectObj.rows.splice((indexOption - 1), 0, currentOption); \n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n }else{\n fullResponse.resultFlag = false;\n fullResponse.details = `Can't retreive option from option index`;\n return fullResponse;\n }\n }else{\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n } \n }else{\n fullResponse.resultFlag = false;\n fullResponse.details = 'Option index not valid';\n return fullResponse;\n }\n }\n \n downthisOption(selectObj, indexOption){\n let fullResponse = {\n resultFlag : false,\n details : ''\n };\n if (indexOption > -1) {\n if (indexOption < selectObj.rows.length - 1){\n if (selectObj.rows[indexOption + 1]) {\n let currentOption = selectObj.rows[indexOption];\n selectObj.rows.splice(indexOption , 1);\n selectObj.rows.splice((indexOption + 1), 0, currentOption); \n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n }else{\n fullResponse.resultFlag = false;\n fullResponse.details = `Can't retreive option from option index`;\n return fullResponse;\n }\n }else{ \n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n }\n }else{\n fullResponse.resultFlag = false;\n fullResponse.details = 'Option index not valid';\n return fullResponse;\n }\n } \n \n \n \n}\n\nselectOptionMange.$inject = [];\n\nexport default selectOptionMange;\n\nexport {\n LEFT_PANEL_SELECT_OPTION_MANAGE_SERVICE\n};\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.selectOptionManage.service.js","/* global angular */\nconst resetModel = (selectObj) => {\n let zeroModel = { rows:[] };\n angular.copy(zeroModel, selectObj);\n};\n\n\nconst validOption = (selectObj, newOptionText) => {\n let fullResponse = {\n resultFlag : false,\n details : ''\n };\n if (typeof newOptionText === 'undefined') {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Entered option is empty';\n return fullResponse;\n }\n if (newOptionText !== '') {\n for (var i = selectObj.rows.length - 1; i >= 0; i--) {\n if (selectObj.rows[i].option === newOptionText) {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Entered option is not unique';\n return fullResponse;\n }\n }\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n }\n fullResponse.resultFlag = false; \n fullResponse.details = 'Entered option is empty';\n return fullResponse;\n};\n\nexport {\n resetModel,\n validOption\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.selectOptionManage.service.helpers.js","///
\n///
\n\n/**\n * TODO :\n * - clean deprecated functions\n * - method 'resetAllTemporyModels' -> remove no use angular.copy to optimize\n */\n\nconst CONTROLLER_MODAL_PROXY = 'controllerModalProxy';\nconst INIT_OPTION_MODEL = { rows : [] };\n\nclass controllerModalProxy{\n\n constructor(EasyFormGenFormlyBindingModels){\n this.EasyFormGenFormlyBindingModels = EasyFormGenFormlyBindingModels;\n this.init();\n }\n\n init(){\n this.proxyModel = {};\n this.resetProxyModel();\n this.editPanelModel = {\n toggle : false,\n lineIndex : -1,\n columnIndex : -1,\n control : {}\n };\n this.basicSelectRowCollection = angular.copy(INIT_OPTION_MODEL);\n\t\tthis.newOptionBasicSelect \t\t\t= angular.copy({ saisie: '' });\n\n\t\tthis.groupedSelectRowCollection = angular.copy(INIT_OPTION_MODEL);\n\t\tthis.newOptionGroupedSelect \t\t= angular.copy({ saisie: '' });\n\t\tthis.GroupedSelectGroups \t\t\t\t= angular.copy({ list:[] });\n\t\tthis.newGroupGroupedSelect \t\t\t= angular.copy({ saisie: '' });\n\t\tthis.groupSelectGroupClick \t\t\t= angular.copy({ showList : false });\n\n\t\tthis.radioRowCollection \t\t\t\t= angular.copy(INIT_OPTION_MODEL);\n\t\tthis.newOptionRadio \t\t\t\t\t\t= angular.copy({ saisie: '' });\n }\n\n\n // deprecated in drag and drop version, use initProxyModel insead\n initNyaSelect(nyaSelectObj){\n return this.resetNyaSelect(nyaSelectObj);\n }\n\n\n initProxyModel(thisProxyModelToInit){\n return this.resetProxyModel(thisProxyModelToInit);\n }\n\n\n // deprecated : in drag and drop version, use \"resetProxyModel()\"\"\n resetNyaSelect(nyaSelectObj){\n let newNyaSelectObj = this.EasyFormGenFormlyBindingModels.getEasyFormListControls();\n angular.copy(newNyaSelectObj, nyaSelectObj);\n return true;\n }\n\n\n resetProxyModel(){\n let newProxyModel = this.EasyFormGenFormlyBindingModels.getEasyFormListControls();\n this.proxyModel = angular.copy(newProxyModel);\n return true;\n }\n\n\n returnControlFromAddCtrlModalModel(CtrlModalModel){\n let modelToReturn = {\n selectedControl\t\t: 'none',\n formlyType \t\t\t\t: 'none',\n formlySubtype\t\t\t: 'none',\n formlyLabel\t\t\t\t: '',\n formlyRequired \t\t: false,\n formlyDescription\t: '',\n formlyPlaceholder\t: '',\n formlyOptions\t\t\t: []\n };\n for (let i = CtrlModalModel.controls.length - 1; i >= 0; i--) {\n if (CtrlModalModel.selectedControl === CtrlModalModel.controls[i].id) {\n\n modelToReturn.selectedControl \t= CtrlModalModel.selectedControl;\n modelToReturn.formlyType \t\t\t\t= CtrlModalModel.controls[i].formlyType;\n modelToReturn.formlySubtype \t\t= CtrlModalModel.controls[i].formlySubtype;\n modelToReturn.formlyLabel \t\t\t= CtrlModalModel.controls[i].formlyLabel;\n modelToReturn.formlyRequired \t\t= CtrlModalModel.controls[i].formlyRequired;\n modelToReturn.formlyDescription \t= CtrlModalModel.controls[i].formlyDescription;\n modelToReturn.formlyPlaceholder = CtrlModalModel.controls[i].formlyPlaceholder;\n modelToReturn.formlyOptions \t\t= CtrlModalModel.controls[i].formlyOptions;\n // particular properties, here ; datetpicker format\n if (CtrlModalModel.controls[i].formlyType === 'datepicker') modelToReturn.datepickerPopup = CtrlModalModel.controls[i].datepickerPopup;\n }\n }\n return modelToReturn;\n }\n\n\n validKeyUniqueness(thisKey, configurationObj){\n let isUnique = true;\n for (let i = configurationObj.lines.length - 1; i >= 0; i--) {\n for (let j = configurationObj.lines[i].columns.length - 1; j >= 0; j--) {\n if (configurationObj.lines[i].columns[j].control.key === thisKey) {\n isUnique = false;\n }\n }\n }\n return isUnique;\n }\n\n\n getSelectedProxyModel(configurationSelectedCtrl){\n var selectedProxyModelControl = 'none';\n var listProxyModelCTRL = angular.copy(this.EasyFormGenFormlyBindingModels.getEasyFormListControls().controls);\n\n listProxyModelCTRL.forEach(function(control){\n if (control.formlyType \t\t=== configurationSelectedCtrl.type &&\n control.formlySubtype === configurationSelectedCtrl.subtype) {\n selectedProxyModelControl = control.id;\n return selectedProxyModelControl;\n }\n });\n return selectedProxyModelControl;\n }\n\n\n // to refresh configuration model from edit panel\n bindConfigurationModelFromProxyModel(indexLine, numcolumn, configurationObj){\n let extractedProps = angular.copy(this.proxyModel.temporyConfig);\n\n configurationObj.lines[indexLine].columns[numcolumn].control.selectedControl \t= extractedProps.selectedControl;\n configurationObj.lines[indexLine].columns[numcolumn].control.type \t\t\t\t\t\t= extractedProps.formlyType;\n configurationObj.lines[indexLine].columns[numcolumn].control.subtype \t\t\t\t\t= extractedProps.formlySubtype;\n // templateOptions\n configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions = {\n label\t\t\t\t: '',\n required\t\t: false,\n description\t: '',\n placeholder\t: '',\n options\t\t\t: []\n };\n // then bind template option\n configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label \t\t\t\t= extractedProps.formlyLabel;\n configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required \t\t= extractedProps.formlyRequired;\n configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description \t= extractedProps.formlyDescription;\n configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder \t= extractedProps.formlyPlaceholder;\n configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options \t\t\t= extractedProps.formlyOptions;\n // add additionnal — particular — properties : -> datepicker : datepickerPopup\n if (configurationObj.lines[indexLine].columns[numcolumn].control.type === 'datepicker') {\n configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup = extractedProps.datepickerPopup;\n }\n // unique key (set only first time) in this model is formly control type + Date.now();\n let newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();\n\n if (this.validKeyUniqueness(newKey, configurationObj) === true){\n configurationObj.lines[indexLine].columns[numcolumn].control.key = newKey;\n }else{\n newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();\n if (this.validKeyUniqueness(newKey, configurationObj) === true){\n configurationObj.lines[indexLine].columns[numcolumn].control.key = newKey;\n }else{\n newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();\n }\n }\n configurationObj.lines[indexLine].columns[numcolumn].control.edited = true;\n }\n\n\n /**\n * set local proxyModel from Selected control in configuration model\n *\n * replace deprecated \"getNyASelectFromSelectedLineColumn\"\n * -model is now named \"proxyModel\"\n * -model is stored in this service\n *\n * -> it has just more sence!\n */\n setProxyModelFromConfigurationSelection(configurationObj, indexLine, numcolumn){\n // data send to modal controller\n if (typeof configurationObj.lines[indexLine].columns[numcolumn].control != 'undefined') {\n // determine selected control from indexes and control.type and control.subtype in configuration model\n this.proxyModel.selectedControl \t\t\t\t\t\t\t\t\t= typeof configurationObj.lines[indexLine].columns[numcolumn].control.type != 'undefined' ? this.getSelectedProxyModel(configurationObj.lines[indexLine].columns[numcolumn].control) : 'none';\n this.proxyModel.temporyConfig.selectedControl \t\t= typeof configurationObj.lines[indexLine].columns[numcolumn].control.type != 'undefined' ? this.getSelectedProxyModel(configurationObj.lines[indexLine].columns[numcolumn].control) : 'none';\n this.proxyModel.temporyConfig.formlyType \t\t\t\t = typeof configurationObj.lines[indexLine].columns[numcolumn].control.type != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.type: 'none';\n this.proxyModel.temporyConfig.formlySubtype \t\t\t= typeof configurationObj.lines[indexLine].columns[numcolumn].control.subtype != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.subtype : 'none';\n this.proxyModel.temporyConfig.formlyLabel \t\t\t\t= typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label : '';\n this.proxyModel.temporyConfig.formlyRequired\t \t\t= typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required : '';\n this.proxyModel.temporyConfig.formlyDescription \t = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description : '';\n this.proxyModel.temporyConfig.formlyPlaceholder \t= typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder : '';\n this.proxyModel.temporyConfig.formlyOptions \t\t\t= typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options : '';\n // particular case : datepicker\n if (this.proxyModel.temporyConfig.selectedControl === 'Date') {\n this.proxyModel.temporyConfig.datepickerPopup = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup : '';\n }\n // console.info('debug setProxyModelFromConfigurationSelection');\n // console.dir({\n // selectedControl : angular.copy(this.proxyModel.selectedControl ),\n // temporyConfig : angular.copy(this.proxyModel.temporyConfig)\n // });\n }\n return this.proxyModel;\n }\n\n\n\tgetProxyModel(){\n return this.proxyModel;\n }\n\n\n /**\n * ============================================================\n * following methods for \"editPanelModel\"\n *\n * Note this model :\n * - to manage side edit control panel\n * ============================================================\n */\n\n // getter : editPanelModel (whole model => type = object)\n getEditPanelModelAllModel(){\n return this.editPanelModel;\n }\n\n // setter : editPanelModel (whole model => type = object)\n setEditPanelModelControl(newEditPanelModel){\n let successfullDone = false;\n if (typeof newEditPanelModel !== 'undefined') {\n angular.merge(this.editPanelModel, newEditPanelModel);\n successfullDone = true;\n }\n return successfullDone;\n }\n\n\n // getter : editPanelModel.columnIndex\n getEditPanelModelColumnIndex(){\n return this.editPanelModel.columnIndex;\n }\n\n // setter : editPanelModel.columnIndex\n setEditPanelModelColumnIndex(newColumnIndex){\n let successfullDone = false;\n if (typeof newColumnIndex !== 'undefined') {\n this.editPanelModel.columnIndex = newColumnIndex;\n successfullDone = true;\n }\n return successfullDone;\n }\n\n\n // getter : editPanelModel.lineIndex\n getEditPanelModelLineIndex() {\n return this.editPanelModel.lineIndex;\n }\n\n\n // setter : editPanelModel.lineIndex\n setEditPanelModelLineIndex(newLineIndex) {\n let successfullDone = false;\n if (typeof newLineIndex !== 'undefined') {\n this.editPanelModel.lineIndex = newLineIndex;\n successfullDone = true;\n }\n return successfullDone;\n }\n\n // getter : editPanelModel.control\n getEditPanelModelControl(){\n return this.editPanelModel.control;\n }\n\n // getter : editPanelModel.toggle\n getEditPanelModelToggle(){\n return this.editPanelModel.toggle;\n }\n\n // setter : editPanelModel.toggle\n setEditPanelModelToggle(newToggleValue){\n let successfullDone = false;\n if (typeof newToggleValue !== 'undefined') {\n this.editPanelModel.toggle = newToggleValue;\n successfullDone = true;\n }\n return successfullDone;\n }\n\n resetAllTemporyModels(){\n this.basicSelectRowCollection \t= angular.copy(INIT_OPTION_MODEL);\n this.newOptionBasicSelect \t\t\t= angular.copy({ saisie: '' });\n\n this.groupedSelectRowCollection = angular.copy(INIT_OPTION_MODEL);\n this.newOptionGroupedSelect \t\t= angular.copy({ saisie: '' });\n this.GroupedSelectGroups \t\t\t\t= angular.copy({ list:[] });\n this.newGroupGroupedSelect \t\t\t= angular.copy({ saisie: '' });\n this.groupSelectGroupClick \t\t\t= angular.copy({ showList : false });\n\n this.radioRowCollection \t\t\t\t= angular.copy(INIT_OPTION_MODEL);\n this.newOptionRadio \t\t\t\t\t\t= angular.copy({ saisie: '' });\n return true;\n }\n\n\t/**\n\t * bindSpecialCtrlTemporyModelsToProxyModel: needed when validating after editing a control\n\t * tempory models applied to proxyModel if control is one of these\n\t *\n\t * example : if selected control is a basic select options\n\t * -> so its tempory models are bound to proxyModel\n\t */\n\tbindSpecialCtrlTemporyModelsToProxyModel() {\n\t\tif (this.proxyModel.selectedControl === 'BasicSelect') {\n this.bindBasicSelectToProxyModel(this.basicSelectRowCollection);\n }\n\t\tif (this.proxyModel.selectedControl === 'GroupedSelect') {\n this.bindGroupedSelectToProxyModel(this.groupedSelectRowCollection);\n }\n\t\tif (this.proxyModel.selectedControl === 'Radio') {\n this.bindRadioToProxyModel(this.radioRowCollection);\n }\n\t}\n\n // basic select\n bindBasicSelectFromProxyModel(basicSelectRowCollection){\n if (this.proxyModel.temporyConfig.formlyOptions.length > 0) {\n for (let i = 0; i <= this.proxyModel.temporyConfig.formlyOptions.length-1; i++){\n let newOption = {\n 'option' \t: this.proxyModel.temporyConfig.formlyOptions[i].name,\n 'order' \t: i,\n 'group' \t: ''\n };\n basicSelectRowCollection.rows.push(newOption);\n }\n }\n }\n\n bindBasicSelectToProxyModel(basicSelectRowCollection){\n let resetNyASelectOptions = [];\n this.proxyModel.temporyConfig.formlyOptions = resetNyASelectOptions;\n if (basicSelectRowCollection.rows.length > 0) {\n for (let i = 0; i <= basicSelectRowCollection.rows.length - 1; i++){\n let newOption = {\n 'name' : basicSelectRowCollection.rows[i].option,\n 'value': i,\n 'group': ''\n };\n this.proxyModel.temporyConfig.formlyOptions.push(newOption);\n }\n }\n }\n\n //* grouped select\n bindGroupedSelectFromProxyModel(groupedSelectRowCollection, GroupedSelectGroups){\n if (this.proxyModel.temporyConfig.formlyOptions.length > 0) {\n for (let i = 0; i <= this.proxyModel.temporyConfig.formlyOptions.length-1; i++){\n let newOption = {\n 'option' \t: this.proxyModel.temporyConfig.formlyOptions[i].name,\n 'order'\t\t: i,\n 'group'\t\t: this.proxyModel.temporyConfig.formlyOptions[i].group\n };\n groupedSelectRowCollection.rows.push(newOption);\n }\n //grouplist : thx to lodash it is easy\n let filteredgroup = _.uniq(_.pluck(groupedSelectRowCollection.rows, 'group'));\n angular.copy(filteredgroup, GroupedSelectGroups.list);\n }\n }\n\n\n bindGroupedSelectToProxyModel(groupedSelectRowCollection){\n this.proxyModel.temporyConfig.formlyOptions = [];\n for (let i = 0; i <= groupedSelectRowCollection.rows.length - 1; i++){\n let newOption = {\n 'name' \t: groupedSelectRowCollection.rows[i].option,\n 'value'\t: i,\n 'group'\t: groupedSelectRowCollection.rows[i].group\n };\n this.proxyModel.temporyConfig.formlyOptions.push(newOption);\n }\n }\n\n // radio\n\tbindRadioFromProxyModel(radioRowCollection){\n if (this.proxyModel.temporyConfig.formlyOptions.length > 0) {\n for (let i = 0; i <= this.proxyModel.temporyConfig.formlyOptions.length-1; i++){\n let newOption = {\n 'option'\t: this.proxyModel.temporyConfig.formlyOptions[i].name,\n 'order'\t\t: i,\n 'group'\t\t: ''\n };\n radioRowCollection.rows.push(newOption);\n }\n }\n\t}\n\n bindRadioToProxyModel(radioRowCollection){\n let resetproxyModelOptions = [];\n this.proxyModel.temporyConfig.formlyOptions = resetproxyModelOptions;\n if (radioRowCollection.rows.length > 0) {\n for (let i = 0; i <= radioRowCollection.rows.length - 1; i++){\n let newOption = {\n 'name'\t\t: radioRowCollection.rows[i].option,\n 'value'\t\t: i,\n 'group'\t\t: ''\n };\n this.proxyModel.temporyConfig.formlyOptions.push(newOption);\n }\n }\n }\n\n\n\n\n\n}\n\ncontrollerModalProxy.$inject = [\n 'EasyFormGenFormlyBindingModels'\n];\n\nexport default controllerModalProxy;\n\nexport {\n CONTROLLER_MODAL_PROXY\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/edaDragDropWay.leftPanel.controllerModalProxy.service.js","import leftPanelValidEditFooterTemplate from './edaDragDropWay.leftpanel.validEditFooter.template.html';\n\nconst LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE = 'leftPanelValidEditFooter';\n\nfunction leftPanelValidEditFooter() {\n let directive = {\n restrict : 'E',\n template : leftPanelValidEditFooterTemplate\n };\n return directive;\n}\n\nleftPanelValidEditFooter.$inject = [];\n\nexport default leftPanelValidEditFooter;\n\nexport {\n LEFT_PANEL_VALID_EDIT_FOOTER_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/validEditFooter/edaDragDropWay.leftpanel.validEditFooter.directive.js","module.exports = \"\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/leftPanel/validEditFooter/edaDragDropWay.leftpanel.validEditFooter.template.html\n// module id = 24\n// module chunks = 0","\nimport leftPanelTextInputControlTemplate from './edaDragDropWay.leftpanel.textInputControl.template.html';\n\nconst LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE = 'leftPanelTextInputControl';\n\nfunction leftPanelTextInputControl() {\n let directive = {\n restrict : 'E',\n template : leftPanelTextInputControlTemplate\n };\n return directive;\n}\n\nleftPanelTextInputControl.$inject = [];\n\nexport default leftPanelTextInputControl;\n\nexport {\n LEFT_PANEL_TEXT_INPUT_CONTROL_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/TextInputControl/edaDragDropWay.leftpanel.textInputControl.directive.js","module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/leftPanel/TextInputControl/edaDragDropWay.leftpanel.textInputControl.template.html\n// module id = 26\n// module chunks = 0","\nimport leftPanelTextareaControlTemplate from './edaDragDropWay.leftpanel.textareaControl.template.html';\n\nconst LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE = 'leftPanelTextareaControl';\n\nfunction leftPanelTextareaControl() {\n let directive = {\n restrict : 'E',\n template : leftPanelTextareaControlTemplate\n };\n return directive;\n}\n\nleftPanelTextareaControl.$inject = [];\n\nexport default leftPanelTextareaControl;\n\nexport {\n LEFT_PANEL_TEXTAREA_CONTROL_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/TextAreaControl/edaDragDropWay.leftpanel.textareaControl.directive.js","module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/leftPanel/TextAreaControl/edaDragDropWay.leftpanel.textareaControl.template.html\n// module id = 28\n// module chunks = 0","import leftPanelSubtitleControlTemplate from './edaDragDropWay.leftpanel.subtitleControl.template.html';\n\nconst LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE = 'leftPanelSubtitleControl';\n\nfunction leftPanelSubtitleControl() {\n let directive = {\n restrict : 'E',\n template : leftPanelSubtitleControlTemplate\n };\n return directive;\n}\n\nleftPanelSubtitleControl.$inject = [];\n\nexport default leftPanelSubtitleControl;\n\nexport {\n LEFT_PANEL_SUBTITLE_CONTROL_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/SubTitleControl/edaDragDropWay.leftpanel.subtitleControl.directive.js","module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/leftPanel/SubTitleControl/edaDragDropWay.leftpanel.subtitleControl.template.html\n// module id = 30\n// module chunks = 0","\nimport leftPanelRichTextEditorControlTemplate from './edaDragDropWay.leftpanel.richTextEditorControl.template.html';\n\nconst LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE = 'leftPanelRichTextEditorControl';\n\nfunction leftPanelRichTextEditorControl() {\n let directive = {\n restrict : 'E',\n template : leftPanelRichTextEditorControlTemplate\n };\n return directive;\n}\n\nleftPanelRichTextEditorControl.$inject = [];\n\nexport default leftPanelRichTextEditorControl;\n\nexport {\n LEFT_PANEL_RICH_TEXT_EDITOR_CONTROL_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/RichTextEditorControl/edaDragDropWay.leftpanel.richTextEditorControl.directive.js","module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/leftPanel/RichTextEditorControl/edaDragDropWay.leftpanel.richTextEditorControl.template.html\n// module id = 32\n// module chunks = 0","\nimport leftPanelRadioControlTemplate from './edaDragDropWay.leftpanel.radioControl.template.html';\n\nconst LEFT_PANEL_RADIO_CONTROL_DIRECTIVE = 'leftPanelRadioControl';\n\nfunction leftPanelRadioControl() {\n let directive = {\n restrict : 'E',\n template : leftPanelRadioControlTemplate\n };\n return directive;\n}\n\nleftPanelRadioControl.$inject = [];\n\nexport default leftPanelRadioControl;\n\nexport {\n LEFT_PANEL_RADIO_CONTROL_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/RadioControl/edaDragDropWay.leftpanel.radioControl.directive.js","module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n \\n Add new radio :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n Edit/Remove radio :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/leftPanel/RadioControl/edaDragDropWay.leftpanel.radioControl.template.html\n// module id = 34\n// module chunks = 0","\nimport leftPanelPasswordControlTemplate from './edaDragDropWay.leftpanel.passwordControl.template.html';\n\nconst LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE = 'leftPanelPasswordControl';\n\nfunction leftPanelPasswordControl() {\n let directive = {\n restrict : 'E',\n template : leftPanelPasswordControlTemplate\n };\n return directive;\n}\n\nleftPanelPasswordControl.$inject = [];\n\nexport default leftPanelPasswordControl;\n\nexport {\n LEFT_PANEL_PASSWORD_CONTROL_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/PasswordControl/edaDragDropWay.leftpanel.passwordControl.directive.js","module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/leftPanel/PasswordControl/edaDragDropWay.leftpanel.passwordControl.template.html\n// module id = 36\n// module chunks = 0","import leftPanelHeaderControlTemplate from './edaDragDropWay.leftpanel.headerControl.template.html';\n\nconst LEFT_PANEL_HEADER_CONTROL_DIRECTIVE = 'leftPanelHeaderControl';\n\nfunction leftPanelHeaderControl() { \n let directive = {\n restrict : 'E',\n template : leftPanelHeaderControlTemplate\n };\n return directive;\n\n}\n\nleftPanelHeaderControl.$inject = [];\n\nexport default leftPanelHeaderControl;\n\nexport {\n LEFT_PANEL_HEADER_CONTROL_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/HeaderControl/edaDragDropWay.leftpanel.headerControl.directive.js","module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/leftPanel/HeaderControl/edaDragDropWay.leftpanel.headerControl.template.html\n// module id = 38\n// module chunks = 0","\nimport leftPanelGroupedSelectControlTemplate from './edaDragDropWay.leftpanel.groupedSelectControl.template.html';\n\nconst LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE = 'leftPanelGroupedSelectControl';\n\nfunction leftPanelGroupedSelectControl() {\n let directive = {\n restrict : 'E',\n template : leftPanelGroupedSelectControlTemplate\n };\n return directive;\n}\n\nleftPanelGroupedSelectControl.$inject = [];\n\nexport default leftPanelGroupedSelectControl;\n\nexport {\n LEFT_PANEL_GROUPED_SELECT_CONTROL_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/GroupedSelectControl/edaDragDropWay.leftpanel.groupedSelectControl.directive.js","module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n \\n Add new options :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n Add new groups :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n Edit/Remove options/groups:\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/leftPanel/GroupedSelectControl/edaDragDropWay.leftpanel.groupedSelectControl.template.html\n// module id = 40\n// module chunks = 0","\nimport leftPanelDateControlTemplate from './edaDragDropWay.leftpanel.dateControl.template.html';\n\nconst LEFT_PANEL_DATE_CONTROL_DIRECTIVE = 'leftPanelDateControl';\n\nfunction leftPanelDateControl() {\n let directive = {\n restrict : 'E',\n template : leftPanelDateControlTemplate\n };\n return directive;\n}\n\nleftPanelDateControl.$inject = [];\n\nexport default leftPanelDateControl;\n\nexport {\n LEFT_PANEL_DATE_CONTROL_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/DateControl/edaDragDropWay.leftpanel.dateControl.directive.js","module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n Date format :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/leftPanel/DateControl/edaDragDropWay.leftpanel.dateControl.template.html\n// module id = 42\n// module chunks = 0","\nimport leftPanelCheckBoxControlTemplate from './edaDragDropWay.leftpanel.checkBoxControl.template.html';\n\nconst LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE = 'leftPanelCheckBoxControl';\n\nfunction leftPanelCheckBoxControl() {\n let directive = {\n restrict : 'E',\n template : leftPanelCheckBoxControlTemplate\n };\n return directive;\n}\n\nleftPanelCheckBoxControl.$inject = [];\n\nexport default leftPanelCheckBoxControl;\n\nexport {\n LEFT_PANEL_CHECKBOX_CONTROL_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/CheckBoxControl/edaDragDropWay.leftpanel.checkBoxControl.directive.js","module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/leftPanel/CheckBoxControl/edaDragDropWay.leftpanel.checkBoxControl.template.html\n// module id = 44\n// module chunks = 0","import leftPanelBlankControlTemplate from './edaDragDropWay.leftpanel.blankControl.template.html';\n\nconst LEFT_PANEL_BLANK_CONTROL_DIRECTIVE = 'leftPanelBlankControl';\n\nfunction leftPanelBlankControl() {\n let directive = {\n restrict : 'E',\n template : leftPanelBlankControlTemplate\n };\n return directive;\n}\n\nleftPanelBlankControl.$inject = [];\n\nexport default leftPanelBlankControl;\n\nexport {\n LEFT_PANEL_BLANK_CONTROL_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/BlankControl/edaDragDropWay.leftpanel.blankControl.directive.js","module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit :\\n \\n \\n
\\n
\\n
\\n
\\n Column will be blank\\n \\n \\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/leftPanel/BlankControl/edaDragDropWay.leftpanel.blankControl.template.html\n// module id = 46\n// module chunks = 0","import leftPanelBasicSelectControlTemplate from './edaDragDropWay.leftpanel.basicSelectControl.template.html';\n\nconst LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE = 'leftPanelBasicSelectControl';\n\nfunction leftPanelBasicSelectControl() {\n let directive = {\n restrict : 'E',\n template : leftPanelBasicSelectControlTemplate\n };\n return directive;\n}\n\nleftPanelBasicSelectControl.$inject = [];\n\nexport default leftPanelBasicSelectControl;\n\nexport {\n LEFT_PANEL_BASIC_SELECT_CONTROL_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/leftPanel/BasicSelectControl/edaDragDropWay.leftpanel.basicSelectControl.directive.js","module.exports = \"
\\n
\\n
\\n
\\n
\\n \\n \\n Edit properties :\\n \\n \\n
\\n
\\n
\\n
\\n \\n Add new options :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n Edit/Remove options :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/leftPanel/BasicSelectControl/edaDragDropWay.leftpanel.basicSelectControl.template.html\n// module id = 48\n// module chunks = 0","import formFieldManage, {\n FORM_FIELD_MANAGE_SERVICE\n} from './edaDragDropWay.formlyProxy.formFieldManage.service';\n\nimport EasyFormGenFormlyBindingModels, {\n EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER\n} from './edaDragDropWay.formlyProxy.formFieldManage.provider';\n\n\n\nconst FORMLY_PROXY_MODULE = '';\n\nexport default angular\n .module(FORMLY_PROXY_MODULE, [])\n .service(FORM_FIELD_MANAGE_SERVICE, formFieldManage)\n .provider(EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER, EasyFormGenFormlyBindingModels);\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/formlyProxy/edaDragDropWay.formlyProxy.formFieldManage.module.js","const FORM_FIELD_MANAGE_SERVICE = 'formFieldManage';\n\nclass formFieldManage{\n\n constructor(EasyFormGenFormlyBindingModels) {\n this.EasyFormGenFormlyBindingModels = EasyFormGenFormlyBindingModels;\n this.init();\n }\n\n init() {\n\n }\n\n /**\n * At initial state : configuration model will contain 1 line, since :\n * -> it is non sense to create a form without a single line (no line = no form at all)\n * -> so it is non sense to force user to add a first line\n *\n * PLEASE NOTE columns array contains objects that look like formly fields one\n */\n initConfigurationEditFromScratch(configurationModel, addStepWayProperties) {\n let configurationModelInit = this.EasyFormGenFormlyBindingModels.getEasyFormInitialStateConfigurationModel(addStepWayProperties);\n angular.copy(configurationModelInit, configurationModel);\n }\n\n /**\n * Get an configuration empty (no init line) then empty it with lines array provided in param\n * @param object - configurationModel [configuration model]\n * @param array - lines [an array : lines to apply to an empty configuration model]\n * @param bool - addStepWayProperties [description]\n * @return {object message} [give details on how it happened to caller]\n */\n bindConfigurationLines(configurationModel, lines, addStepWayProperties){\n if( Object.prototype.toString.call(lines) === '[object Array]' ) {\n let configurationModelResult = this.EasyFormGenFormlyBindingModels.getEasyFormReloadConfigurationModel(addStepWayProperties);\n configurationModelResult.lines = [].concat(lines);\n angular.copy(configurationModelResult, configurationModel);\n return this.getMessageObject('configuration model is bound','lines are bound to configuration model.');\n }else{\n return this.getErrorObject('lines is not an array', 'Checks lines type, it is not an array.');\n }\n }\n\n\n /**\n * applyConfigurationToformlyModel :\n * - bind configuration model into formly field model\n * - reset dataModel (formlyfield may have changed so previous dataModel would be false)\n * @param configurationModel\n * @param formlyModel\n * @param formlyDataModel\n */\n applyConfigurationToformlyModel(configurationModel, formlyModel, formlyDataModel){\n this.resetFormlyModel(formlyModel);\n this.resetDataModel(formlyDataModel);\n let lineNumber = configurationModel.lines.length;\n for (let i = 0; i < lineNumber; i++) {\n this.AddNColumnControl(formlyModel, configurationModel, i);\n }\n }\n\n\n resetFormlyModel(formlyModel){\n let resetformly = [];\n angular.copy(resetformly, formlyModel);\n }\n\n\n AddNColumnControl(formlyModel, configurationModel, lineIndex){\n\n let numberOfColumns = configurationModel.lines[lineIndex].columns.length;\n /**\n * push formly model\n * here : only className and empty fieldGroup (controls != header)\n * if header will be reset to set a template (at least we have now indexFormlyModel)\n */\n let rawFormlyModel = {\n className : 'row',\n fieldGroup : []\n };\n //get index formlyModel for this line :\n let indexFormlyModel = formlyModel.push(rawFormlyModel) - 1 ;\n\n // iterates through controls in the line\n configurationModel.lines[lineIndex].columns.forEach( (column) => {\n let controlTemplate = {};\n if (typeof controlTemplate !== 'undefined' &&\n // column.control.type !== 'header' &&\n // column.control.type !== 'subTitle' &&\n column.control.type !== 'none') {\n /**\n * controls : getFormlyControlTemplateForNcolumnLine()\n *\n * @PARAM numberOfColumns : integer to deduce cssClss to apply\n * @PARAM column.control.type : to add if needed specific properties (example : datepicker)\n */\n if(column.control.type === 'header' ||\n column.control.type === 'subTitle'){\n let headerTextContent = column.control.templateOptions.description;\n controlTemplate.template = this.EasyFormGenFormlyBindingModels.getHeaderTemplateForNcolumnLine(numberOfColumns, headerTextContent).template;\n controlTemplate.className = this.EasyFormGenFormlyBindingModels.getRawHeaderTemplates().selectedClass;\n } else {\n controlTemplate = this.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(numberOfColumns, column.control.type);\n /**\n * NEED REFACTOR HERE\n * should bind properties dynamically\n *\n * TODO need to validate all controls (datepicker may not work)\n * need to refactor\n */\n controlTemplate.className = column.control.className;\n controlTemplate.type = column.control.type;\n controlTemplate.key = column.control.key;\n controlTemplate.templateOptions.type = column.control.templateOptions.type;\n controlTemplate.templateOptions.label = column.control.templateOptions.label;\n controlTemplate.templateOptions.required = column.control.templateOptions.required;\n controlTemplate.templateOptions.placeholder = column.control.templateOptions.placeholder;\n controlTemplate.templateOptions.description = column.control.templateOptions.description;\n controlTemplate.templateOptions.options = [].concat(column.control.templateOptions.options);\n\n if (typeof controlTemplate.templateOptions.datepickerPopup !== 'undefined') column.control.templateOptions.datepickerPopup = controlTemplate.templateOptions.datepickerPopup ;\n }\n /**\n * popuplate properties\n */\n\n /**\n * push control into formly model in its group\n */\n\n /**\n * need to catch this random error\n */\n formlyModel[indexFormlyModel].fieldGroup.push(controlTemplate);\n }\n }\n );\n }\n\n isTemplateOptionDefined(obj){\n return typeof obj.templateOptions !== 'undefined' ? true : false;\n }\n\n extractTemplateOptionLabel(obj){\n return typeof obj.templateOptions !== 'undefined' ? (typeof obj.templateOptions.label !== 'undefined'? obj.templateOptions.label: '') : '';\n }\n\n extractTemplateOptionDatepickerPopup(obj){\n return typeof obj.templateOptions !== 'undefined' ? (typeof obj.templateOptions.datepickerPopup !== 'undefined'? obj.templateOptions.datepickerPopup: '') : '';\n }\n\n extractTemplateOptionRequired(obj){\n return typeof obj.templateOptions !== 'undefined' ? (typeof obj.templateOptions.required !== 'undefined'? obj.templateOptions.required: '') : '';\n }\n //radio and select\n extractTemplateOptionOptions(obj){\n return typeof obj.templateOptions !== 'undefined' ? (typeof obj.templateOptions.options !== 'undefined'? obj.templateOptions.options: '') : '';\n }\n\n extractTemplateOptionType(obj){\n return typeof obj.subtype !== 'undefined'? obj.subtype: '';\n }\n\n extractTemplateOptionPlaceholder(obj){\n return typeof obj.templateOptions !== 'undefined' ? (typeof obj.templateOptions.placeholder !== 'undefined'? obj.templateOptions.placeholder: '') : '';\n }\n\n extractTemplateOptionDescription(obj){\n return typeof obj.templateOptions !== 'undefined' ? (typeof obj.templateOptions.description !== 'undefined'? obj.templateOptions.description: '') : '';\n }\n\n // formly model functions\n resetDataModel(obj){\n let emptyDataModel = {};\n angular.copy(emptyDataModel, obj);\n return true;\n }\n\n // custom errors\n getErrorObject(errorTitle, errorMessage){\n let messageObj = {\n noError : false,\n title : '',\n Message : ''\n };\n messageObj.noError = false;\n messageObj.title = errorTitle;\n messageObj.Message = errorMessage;\n return messageObj;\n }\n\n getMessageObject(messageTitle, messageBody){\n let messageObj = {\n noError : false,\n title : '',\n Message : ''\n };\n messageObj.noError = true;\n messageObj.title = messageTitle;\n messageObj.Message = messageBody;\n return messageObj;\n }\n\n}\n\nformFieldManage.$inject = [\n 'EasyFormGenFormlyBindingModels'\n];\n\nexport default formFieldManage;\n\nexport {\n FORM_FIELD_MANAGE_SERVICE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/formlyProxy/edaDragDropWay.formlyProxy.formFieldManage.service.js","import * as helpers from './edaDragDropWay.formlyProxy.formFieldManage.provider.helpers';\n\nconst EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER = 'EasyFormGenFormlyBindingModels';\n\nfunction EasyFormGenFormlyBindingModels(){\n\n let _easyFormListControls =\thelpers.initEasyFormListControls();\n let _easyFormEmptyConfigurationLineModel = helpers.initEasyFormEmptyConfigurationLineModel();\n let _emptyControlFieldModel = helpers.initEmptyControlFieldModel();\n let _easyFormInitialStateConfigurationModel = helpers.initEasyFormInitialStateConfigurationModel(_easyFormEmptyConfigurationLineModel);\n let _easyFormInitialStateConfigurationModelAddOnForStepWay = helpers.initEasyFormInitialStateConfigurationModelAddOnForStepWay();\n let _easyFormReloadConfigurationModel = helpers.initEasyFormReloadConfigurationModel();\n let _headerTemplates = helpers.initHeaderTemplates(); \n let _formlyControlTemplates = helpers.initFormlyControlTemplates(); \n let _particularControlProperties = helpers.initParticularControlProperties(); \n \n this.getAllParticularControlProperties = getAllParticularControlProperties;\n this.addParticularControlProperties = addParticularControlProperties;\n this.getEasyFormListControls = getEasyFormListControls;\n this.addEasyFormControlToList = addEasyFormControlToList;\n this.getHeaderTemplates = getHeaderTemplates;\n this.addHeaderTemplateCssClass = addHeaderTemplateCssClass;\n this.getFormlyControlTemplate = getFormlyControlTemplate;\n this.addformlyControlTemplatesCssClass = addformlyControlTemplatesCssClass;\n this.setFormlyControlTemplate = setFormlyControlTemplate;\n this.$get = getFct;\n \n function getAllParticularControlProperties(){\n return _particularControlProperties;\n } \n \n function addParticularControlProperties(newParticularControlProperty){\n // test object param has waited properties\n if (('controlType' \tin newParticularControlProperty) &&\n ('properties' \tin newParticularControlProperty)) {\n let isAnUpdate = false;\n if ( _particularControlProperties.length > 0 ) {\n _particularControlProperties.forEach(function(controlProp){\n if (controlProp.controlType === newParticularControlProperty.controlType) {\n controlProp.properties = [].concat(newParticularControlProperty.properties);\n isAnUpdate = true;\n }\t\n });\n }\n if (!isAnUpdate) {\n _particularControlProperties.push(newParticularControlProperty);\n }\n }\n return _particularControlProperties;\t\t\t\n } \n\n function getEasyFormListControls() {\n return _easyFormListControls;\n }\n \n function addEasyFormControlToList(controlDeclaration) {\n if (typeof controlDeclaration !== 'undefined'){\n _easyFormListControls.controls.push(controlDeclaration);\n }\n }\n \n function getHeaderTemplates() {\n return _headerTemplates;\n }\n \n function addHeaderTemplateCssClass(cssClassToAdd){\n if (typeof cssClassToAdd !== 'undefined') {\n _headerTemplates.cssClass.push(cssClassToAdd);\n }\n }\n \n function getFormlyControlTemplate() {\n return _formlyControlTemplates;\n }\n \n function addformlyControlTemplatesCssClass(cssClassToAdd){\n if (typeof cssClassToAdd !== 'undefined') {\n _formlyControlTemplates.className.push(cssClassToAdd);\n }\n } \n \n function setFormlyControlTemplate(newFormlyControlTemplate) {\n if (('className'\t\t\t\tin newFormlyControlTemplate) &&\n ('type' \t\t\t\t\t\tin newFormlyControlTemplate) &&\n ('key' \t\t\t\t\t\t\tin newFormlyControlTemplate) &&\n ('templateOptions') in newFormlyControlTemplate) {\n _formlyControlTemplates = angular.copy(newFormlyControlTemplate);\n }\n return true;\n } \n \n getFct.$inject = [];\n function getFct(){\n let service = {\n getEasyFormListControls : getEasyFormListControlsFct,\n getEasyFormInitialStateConfigurationModel : getEasyFormInitialStateConfigurationModel,\n getEasyFormReloadConfigurationModel : getEasyFormReloadConfigurationModel,\n getEasyFormEmptyConfigurationLineModel : getEasyFormEmptyConfigurationLineModel,\n getEasyFormConfigurationEmptyControlModel : getEasyFormConfigurationEmptyControlModel,\n getRawHeaderTemplates : getRawHeaderTemplates,\n getHeaderTemplateForNcolumnLine : getHeaderTemplateForNcolumnLine,\n getRawFormlyControlTemplates : getRawFormlyControlTemplates,\n getFormlyControlTemplateForNcolumnLine : getFormlyControlTemplateForNcolumnLine\n };\n return service;\n \n function getEasyFormListControlsFct() {\n return _easyFormListControls;\n }\n \n function getEasyFormInitialStateConfigurationModel(addStepWayProperties) {\n let initialConfigurationModel = angular.copy(_easyFormInitialStateConfigurationModel);\n if (typeof addStepWayProperties !== 'undefined') {\n if (addStepWayProperties) {\n // add properties specific to step way\n angular.extend(initialConfigurationModel, _easyFormInitialStateConfigurationModelAddOnForStepWay);\n }\n }\n return initialConfigurationModel; \n }\n \n function getEasyFormReloadConfigurationModel(addStepWayProperties) {\n let initialConfigurationModel = angular.copy(_easyFormReloadConfigurationModel);\n if (typeof addStepWayProperties !== 'undefined') {\n if (addStepWayProperties) {\n // add properties specific to step way\n angular.extend(initialConfigurationModel, _easyFormInitialStateConfigurationModelAddOnForStepWay);\n }\n }\n return initialConfigurationModel; \n }\n \n function getEasyFormEmptyConfigurationLineModel() {\n return _easyFormEmptyConfigurationLineModel; \n }\n \n function getEasyFormConfigurationEmptyControlModel() {\n return _emptyControlFieldModel; \n }\n \n function getRawHeaderTemplates() {\n return _headerTemplates;\n }\n \n function getHeaderTemplateForNcolumnLine(nbColInLines, textContent) {\n if (typeof nbColInLines !== 'undefined' &&\n typeof textContent \t!== 'undefined') {\n if (nbColInLines === parseInt(nbColInLines, 10)) {\n if (nbColInLines <= _headerTemplates.cssClass.length) {\n let headerToReturn = {};\n headerToReturn.className = _headerTemplates.cssClass[nbColInLines - 1];\n // header html property depends this property dont forget to set it before reading html property\n _headerTemplates.textContent = textContent;\n _headerTemplates.selectedClass = headerToReturn.className;\n headerToReturn.template = [\n _headerTemplates.simpleHtml1,\n textContent,\n _headerTemplates.simpleHtml2\n ].join('');\n return headerToReturn;\n }\n }\n } \n }\n \n function getRawFormlyControlTemplates() {\n return _formlyControlTemplates;\n } \n \n \n function getFormlyControlTemplateForNcolumnLine(nbColInLines, controlType) {\n if (typeof nbColInLines !== 'undefined') {\n if (nbColInLines === parseInt(nbColInLines, 10)) {\n if (nbColInLines <= _formlyControlTemplates.className.length) {\n let controlToReturn = angular.copy(_formlyControlTemplates);\n controlToReturn.className = _formlyControlTemplates.className[nbColInLines - 1];\n // throw `it should have a bug upper line`;\n /* eslint no-console:0 */\n console.warn(`it should have a bug upper line`);\n /**\n * check controlType: it may require another particular property\n */\n if (typeof controlType !== 'undefined') {\n _particularControlProperties.forEach((controlProp)=>{\n if (controlProp.controlType === controlType) {\n /**\n * add all properties this controlType has\n * \n * NOTE : dot expression and bracket expression to access object property\n * http://www.ecma-international.org/ecma-262/5.1/#sec-11.2.1\n */\t\t\t\t\t\t\t\t\t\t\n controlProp.properties.forEach((aPropToAdd)=>{\n if (aPropToAdd.isRoot) controlToReturn[aPropToAdd.value] = '';\n if (aPropToAdd.isTemplateOptions) controlToReturn.templateOptions[aPropToAdd.value] = '';\n });\n }\t\n });\n }\n return controlToReturn;\n }\n }\n }\n } \n \n \n }\n \n \n}\n\n\nEasyFormGenFormlyBindingModels.$inject = [];\n\nexport default EasyFormGenFormlyBindingModels;\n\nexport {\n EASY_FORM_FORMLY_BINDING_MODEL_PROVIDER\n};\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/formlyProxy/edaDragDropWay.formlyProxy.formFieldManage.provider.js"," export const initEasyFormListControls = () => {\n return {\t\t\t\t\t\t\t\t\t\t\t\n controls : [],\n selectedControl : 'none' ,\n temporyConfig : {\n selectedControl\t\t: 'none',\n formlyLabel\t\t\t\t: 'label', \n formlyRequired\t\t: false, \n formlyDescription\t: '',\n formlyPlaceholder\t: '',\n formlyOptions \t\t: []\n } \n };\n};\n \nexport const initEasyFormEmptyConfigurationLineModel = () => {\n return {\n line \t\t\t\t\t: 1, \n activeColumn \t: 1,\n columns \t\t\t: [{ \n numColumn \t: 1,\n exist \t\t\t:true, \n control \t\t: {\n type:'none',\n key: 'none'\n }\n }]\n }; \n};\n \nexport const initEmptyControlFieldModel = () => {\n return {\n 'control' \t\t: {\n 'type' : 'none',\n 'key' : 'none'\n }\t\n }; \n};\n \nexport const initEasyFormInitialStateConfigurationModel = (_easyFormEmptyConfigurationLineModel) => {\n // commun all easy form generator ways\n return { \n submitButtonText \t: 'submit',\n cancelButtonText \t: 'cancel',\n lines : [].concat(_easyFormEmptyConfigurationLineModel)\n }; \n};\n\nexport const initEasyFormInitialStateConfigurationModelAddOnForStepWay = () => {\n // specific easy form generator — step way — (not drag and drop way), needed for wizard management\n return {\n activeLine \t\t\t: 1, \n listConfigStep \t: [\n 'init',\n 'first',\n 'second',\n 'third'\n ],\n stepIndicators \t: [\n true,\n false,\n false,\n false\n ], \n configStepCounter : 0 \t\n };\n};\n \nexport const initEasyFormReloadConfigurationModel = () => {\n let reloadConfigModel = initEasyFormInitialStateConfigurationModel();\n reloadConfigModel.lines = [];\n return reloadConfigModel;\n};\n \n// can't use arrow function here -> 'this' would be bound to caller rather than expected current returned object... \nexport const initHeaderTemplates = function() {\n let headerTemplate = {\n cssClass \t\t: ['col-xs-12', 'col-xs-6', 'col-xs-4'],\n textContent : '',\n html_part1 \t: [\n '
',\n '
'\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n ].join(''),\t\t\t\t\t\t\t \n html_part3 : this.textContent, \n html_part4 \t: [ \n ' ',\n ' ',\n ' '\n ].join(''), \n simpleHtml1 : \t[\n '
'\n ].join(''),\n simpleHtml2 : \t[\n ' ',\n ' '\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n ].join('')\t\t\t\t\t\t \n }; \n return headerTemplate; \n};\n \n \nexport const initFormlyControlTemplates = () => {\n return {\n className : ['col-xs-12', 'col-xs-6', 'col-xs-4'],\n type : '',\n key : '',\n templateOptions: {\n type : '',\n label : '',\n required : '',\n placeholder : '',\n description : '',\n options : '' \n }\n };\n};\n \nexport const initParticularControlProperties = () => {\n return [\n {\n controlType \t: 'datepicker',\n properties \t\t: [\t\n {\t\n isRoot \t\t\t\t\t: false, \n isTemplateOptions : true, \n value \t\t\t\t\t\t: 'datepickerPopup'\n }\n ]\n }\n ];\n};\n \n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/formlyProxy/edaDragDropWay.formlyProxy.formFieldManage.provider.helpers.js","/* global angular */\nimport ddContentCounter, {\n DD_CONTENT_COUNTER_DIRECTIVE\t\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './ddContentCounter/edaDragDropWay.dragdrop.ddContentCounter.directive';\nimport dragDropItemCounterService, {\n\tDRAG_DROP_ITEM_COUNTER_SERVICE\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './ddContentCounter/edaDragDropWay.dragdrop.ddContentCounter.service';\nimport ddDecorContainerDirective, {\n\tDD_DECOR_CONTAINER_DIRECTIVE\n} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './ddDecorContainer/edaDragDropWay.dragdrop.ddDecorContainer.directive';\nimport ddDecorContainerController, {\n\tDD_DECOR_CONTAINER_CONTROLLER_NAME\n} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './ddDecorContainer/edaDragDropWay.dragdrop.ddDecorContainer.controller';\nimport ddDecorDropZone, {\n\tDD_DECOR_DROPZONE_DIRECTIVE\n} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './ddDecorDropZone/edaDragDropWay.dragdrop.ddDecorDropZone.directive';\nimport ddDecorItem, {\n\tDRAG_DROP_DECOR_ITEM\n} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './ddDecorItem/edaDragDropWay.dragdrop.ddDecorItem.directive';\nimport dragDropItemDecorationService, {\n\tDRAG_DROP_ITEM_DECOR_SERVICE\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './ddDecorItem/edaDragDropWay.dragdrop.ddDecorItem.service';\nimport ddDecorLine, {\n\tDRAG_DROP_DECOR_LINE\n} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './ddDecorLine/edaDragDropWay.dragdrop.ddDecorLine.directive';\n\nimport ddNoEditableControl, {\n\tDRAG_DROP_NO_EDITABLE_CONTROL\n} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './ddNoEditableControl/edaDragDropWay.dragdrop.ddNoEditableControl.directive';\n\n\nconst DRAGDROP_MODULE = 'edaDragDropWay.dragdrop.module';\n\nexport default angular\n\t\t\t\t\t\t\t\t.module(DRAGDROP_MODULE, [])\n\t\t\t\t\t\t\t\t.directive(DD_CONTENT_COUNTER_DIRECTIVE, ddContentCounter)\n\t\t\t\t\t\t\t\t.controller(DD_DECOR_CONTAINER_CONTROLLER_NAME, ddDecorContainerController)\n\t\t\t\t\t\t\t\t.directive(DD_DECOR_CONTAINER_DIRECTIVE, ddDecorContainerDirective)\n\t\t\t\t\t\t\t\t.directive(DD_DECOR_DROPZONE_DIRECTIVE, ddDecorDropZone)\n\t\t\t\t\t\t\t\t.directive(DRAG_DROP_DECOR_ITEM, ddDecorItem)\n\t\t\t\t\t\t\t\t.service(DRAG_DROP_ITEM_DECOR_SERVICE, dragDropItemDecorationService)\n\t\t\t\t\t\t\t\t.directive(DRAG_DROP_NO_EDITABLE_CONTROL, ddNoEditableControl)\n\t\t\t\t\t\t\t\t.service(DRAG_DROP_ITEM_COUNTER_SERVICE, dragDropItemCounterService)\n\t\t\t\t\t\t\t\t.directive(DRAG_DROP_DECOR_LINE, ddDecorLine)\n\t\t\t\t\t\t\t;\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/dragdrop/edaDragDropWay.dragdrop.module.js","const DD_CONTENT_COUNTER_DIRECTIVE = 'ddContentCounter';\n\nfunction ddContentCounter(dragDropItemCounterService, $timeout){\n\t\tlet directive ={\n\t\t\trestrict\t: 'A',\n\t\t\tscope \t\t: {\n\t\t\t\tvalueWhenPlaceholder\t: '@ddValueWhenPlaceholder',\n\t\t\t\tvalueWhendragging\t\t\t: '@ddValueWhenDragging',\n\t\t\t\tfullModel \t\t\t\t\t\t: '=ddFullModel',\n\t\t\t\tcurrentIndex \t\t\t\t\t: '@ddContentCounterCurrentIndex',\n\t\t\t\tparentIndex \t\t\t\t\t: '@ddContentCounterParentIndex',\n\t\t\t\tforceRefresh\t\t\t\t\t: '=ddContentCounterForceCssRefresh'\t\t\t\t\n\t\t\t},\n\t\t\tlink\t\t\t: linkfct\n\t\t};\n\t\treturn directive;\n\t\t\n\t\tfunction linkfct($scope, element){\n\t\t\tlet timer;\n\t\t\t// watch children length change : to update css item class\n\t\t\t$scope.$watch(()=>element[0].children.length,(newValue, oldValue)=>{\n\t\t\t\tif (newValue !== oldValue) {\n\t\t\t\t\tlet newRealCount \t\t\t\t= 0;\n\t\t\t\t\tlet listClassForThisRow = [];\n\t\t\t\t\tfor (let i = element[0].children.length - 1; i >= 0; i--) {\t\t\t\t\t\t\n\t\t\t\t\t\tif(dragDropItemCounterService.isHtmlElementToCount(element[0].children[i].classList)){\n\t\t\t\t\t\t\tnewRealCount++;\n\t\t\t\t\t\t\tlistClassForThisRow.push( {item: i, isReal : true} );\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tlistClassForThisRow.push( {item: i, isReal : false} );\n\t\t\t\t\t\t} \n\t\t\t\t\t}\n\t\t\t\t\t$scope.contentRealCount = newRealCount;\n\t\t\t\t\t// a timer otherwise won't refresh everytime\n\t\t\t\t\ttimer = $timeout(() => {\n\t\t\t\t\t\tdragDropItemCounterService.updateLineItemCss($scope.fullModel, listClassForThisRow, $scope.parentIndex, $scope.currentIndex, newRealCount);\t\t\t\t \t\n\t\t\t\t\t}, 20);\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\n\t\t\t$scope.$on('$destroy', ()=>{\n\t\t\t\t$timeout.cancel(timer);}\n\t\t\t);\n\t\t}\n\t\t\n}\n\nddContentCounter.$inject = [\n\t'dragDropItemCounterService',\n\t'$timeout'\n];\n\nexport default ddContentCounter;\n\nexport {\n\tDD_CONTENT_COUNTER_DIRECTIVE\n};\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/dragdrop/ddContentCounter/edaDragDropWay.dragdrop.ddContentCounter.directive.js","const DRAG_DROP_ITEM_COUNTER_SERVICE = 'dragDropItemCounterService';\n\nclass dragDropItemCounterService{\n\t\n\tconstructor(easyFormDragWayConfig){\n\t\tthis.easyFormDragWayConfig = easyFormDragWayConfig;\n\t\tthis.init();\n\t}\n\t\n\tinit(){\n\t\tthis._modelItemRealCounter = [];\n\t\tthis._itemsNotToCount = angular.copy(this.easyFormDragWayConfig.getItemsNotToCount());\n\t}\n\t\t\n\tgetItemsNotToCount(){\n\t\treturn this._itemsNotToCount;\n\t} \t\n\n\tgetModelItemsRealCounter(){\n\t\treturn this._modelItemRealCounter;\n\t}\n\t\n\tisHtmlElementToCount(htmlvalue){\n\t\tlet isToCount = true;\n\t\tif (htmlvalue.length > 0) {\n\t\t\tangular.forEach(this._itemsNotToCount, (value)=>{\n\t\t\t\tfor (let classes = htmlvalue.length - 1; classes >= 0; classes--) {\n\t\t\t\t\tif (htmlvalue[classes] === value) isToCount = isToCount && false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn isToCount;\t\n\t}\n\t\n\tupdateLineItemCss(fullModel, listCssToApply, columIndex, lineIndex, realCount){\n\t\tif (typeof fullModel \t\t!== \t\t'undefined' &&\n\t\t\ttypeof listCssToApply !== \t\t'undefined' &&\n\t\t\ttypeof columIndex \t\t!== \t\t'undefined' &&\n\t\t\ttypeof lineIndex \t\t\t!== \t\t'undefined' &&\n\t\t\ttypeof realCount \t\t\t!== \t\t'undefined') {\n\t\t\tfor (let i = fullModel[columIndex][lineIndex].length - 1; i >= 0; i--) {\n\t\t\t\tfor (let j = 0; j < listCssToApply.length; j++) {\n\t\t\t\t\tif(\tlistCssToApply[j].item \t\t=== i &&\n\t\t\t\t\t\t\tlistCssToApply[j].isReal \t=== true){\n\t\t\t\t\t\tfullModel[columIndex][lineIndex][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(realCount);\n\t\t\t\t\t} \t\n\t\t\t\t}\n\t\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\treturn true;\n\t\t}\n\t}\t\t\n\t\n\t\n}\n\ndragDropItemCounterService.$inject = [\n\t'easyFormDragWayConfig'\n];\n\nexport default dragDropItemCounterService;\n\nexport {\n\tDRAG_DROP_ITEM_COUNTER_SERVICE\n};\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/dragdrop/ddContentCounter/edaDragDropWay.dragdrop.ddContentCounter.service.js","/* global angular */\nimport ddDecorContainerTemplate \t\t\tfrom './edaDragDropWay.dragdrop.ddDecorContainer.template.html';\nimport {\n\tDD_DECOR_CONTAINER_CONTROLLER_NAME,\n\tDD_DECOR_CONTAINER_CONTROLLERAS_NAME\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './edaDragDropWay.dragdrop.ddDecorContainer.controller';\n\n\nconst DD_DECOR_CONTAINER_DIRECTIVE = 'ddDecorContainer';\n\n\nfunction ddDecorContainer(){\n\tlet directive = {\n\t\trestrict\t\t\t\t\t: 'A',\n\t\ttemplate\t\t\t\t\t: ddDecorContainerTemplate,\n\t\tscope \t\t\t\t\t\t: {},\n\t\tcontroller\t\t\t\t: DD_DECOR_CONTAINER_CONTROLLER_NAME,\n controllerAs\t\t\t: DD_DECOR_CONTAINER_CONTROLLERAS_NAME,\n bindToController\t: {\n\t\t\t'styleParam' : '=ddContainerProperties',\n\t\t\t'isStillCollapsed' : '=ddContainerIsCollpased',\n\t\t\t'verboseMode' : '@ddContainerVerboseMode',\n\t\t\t'currentIndex' : '@ddContainerCurrentIndex',\n\t\t\t'collpaseAll' : '&ddCollapseAll'\n },\n\t\ttransclude\t\t\t\t: true,\n\t\tlink \t\t\t\t\t\t\t:\tlinkFct\n\t};\n\treturn directive;\n\n\tfunction linkFct($scope, element, attrs, ctrl, transclude){\n\t\tlet verboseModeActive \t\t\t\t\t\t\t\t\t\t\t= $scope.ddDecorContainerCtrl.verboseMode;\n\t\tlet currentIndex \t\t\t\t\t\t\t\t\t\t\t= $scope.ddDecorContainerCtrl.currentIndex;\n\t\t$scope.ddDecorContainerCtrl.isCollapsed\t\t\t\t= false;\n\t\t$scope.ddDecorContainerCtrl.config.isEnabled\t= false;\n\t\t/**\n\t\t\t* forceCollapse when :\n\t\t\t* dragDropConfigModel.containerConfig.decoration.isCollapsed changed (here bound to $scope.isStillCollapsed)\n\t\t\t*/\n\t\t$scope.$watch(()=> $scope.ddDecorContainerCtrl.isStillCollapsed,(newVal, oldVal)=>{\n\t\t\tif (newVal !== oldVal) {\n\t\t\t\tif ($scope.$parent.$parent.$index === 0) $scope.ddDecorContainerCtrl.isCollapsed = newVal;\n\t\t\t}\n\t\t});\n\n\n\t\t/**\n\t\t\t* verbose mode for developments only\n\t\t\t*/\n\t\tif (verboseModeActive !== '') {\n\t\t\tvar verbose = angular.lowercase(verboseModeActive);\n\t\t\tif (verbose === 'true' || verbose === '1') {\n\t\t\t\t/* eslint no-console:0 */\n\t\t\t\tconsole.dir({\n\t\t\t\t\twhoAmI : 'I am verbose from ddDecorContainer link',\n\t\t\t\t\tverbodeMode : verbose,\n\t\t\t\t\tParentParentIndex : $scope.$parent.$parent.$index,\n\t\t\t\t\tParentIndex : $scope.$parent.$index,\n\t\t\t\t\tcurrentIndex : currentIndex,\n\t\t\t\t\tstyleParam : $scope.ddDecorContainerCtrl.styleParam,\n\t\t\t\t\tcolumnindex : $scope.$parent.$parent.$parent.$parent.$index\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t\t* no header (no title, no collapse....)\n\t\t\t*/\n\t\t//$scope.ddDecorContainerCtrl.config.isEnabled\n\t\tif (typeof currentIndex !== 'undefined') {\n\t\t\tif (currentIndex !== '') {\n\t\t\t\t/**\n\t\t\t\t\t* specific 1st column\n\t\t\t\t\t*/\n\t\t\t\tif (currentIndex === '0') {\n\t\t\t\t\t/**\n\t\t\t\t\t\t* apply title\n\t\t\t\t\t\t*/\n\t\t\t\t\tif (typeof $scope.ddDecorContainerCtrl.styleParam.title !== 'undefined') {\n\t\t\t\t\t\t\t$scope.ddDecorContainerCtrl.currentTitle \t= $scope.ddDecorContainerCtrl.styleParam.title;\n\t\t\t\t\t\t\t$scope.ddDecorContainerCtrl.config.isEnabled\t= true;\n\t\t\t\t\t\t\t$scope.ddDecorContainerCtrl.isCollapsed \t= true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t\t/**\n\t\t\t* prevent transclusion creating child scope\n\t\t\t* want to know more about what I'm talking about : check this nice tip on the subject :\n\t\t\t* http://angular-tips.com/blog/2014/03/transclusion-and-scopes/\n\t\t\t*/\n\t\ttransclude($scope.$parent, function(contentClone){\n\t\t\t\t/**\n\t\t\t\t\t* transclusion will append content to '
'\n\t\t\t\t\t*/\n\t\t\t\tvar childDiv = angular.element(element.children()[1]);\n\t\t\t\tchildDiv.append(contentClone);\n\t\t});\n\n\n\n\t}\n\n}\n\n\nexport default ddDecorContainer;\n\nexport {\n\tDD_DECOR_CONTAINER_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/dragdrop/ddDecorContainer/edaDragDropWay.dragdrop.ddDecorContainer.directive.js","module.exports = \"\\n
\\n \\n \\n \\n \\n {{ddDecorContainerCtrl.currentTitle}}\\n \\n\\n\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/dragdrop/ddDecorContainer/edaDragDropWay.dragdrop.ddDecorContainer.template.html\n// module id = 57\n// module chunks = 0","/* global angular */\nconst DD_DECOR_CONTAINER_CONTROLLER_NAME \t\t= 'ddDecorContainerController';\nconst DD_DECOR_CONTAINER_CONTROLLERAS_NAME\t= 'ddDecorContainerCtrl';\n\nclass ddDecorContainerController{\n\t\n\tconstructor(){\n\t\tthis.init();\n\t}\n\t\n\tinit(){\n\t\tthis.config = angular.extend({}, { isEnabled : false });\n\t\t/**\n\t\t\t* TODO (low priority) : make icon css configurable (provider)\n\t\t\t*/\t\t\n\t\tthis.icons = angular.extend({}, {\n\t\t\tclosedClass\t: 'glyphicon glyphicon-eye-open',\n\t\t\topened\t\t\t: 'glyphicon glyphicon-eye-close'\t\t\t\n\t\t});\n\t}\n\t\n\tcollapseFct(){\n\t\tthis.collpaseAll({exceptThisOne: this.styleParam.WhenIndex}); //note : collpaseAll function is boundToController from directive attribute : 'collpaseAll' : '&ddCollapseAll'\n\t\tthis.isCollapsed \t\t\t= !this.isCollapsed;\n\t\tthis.isStillCollapsed\t= this.isCollapsed; //note : isStillCollapsed is boundToController from directive attribute : 'isStillCollapsed' : '=ddContainerIsCollpased',\n\t}\t\n\t\n\tcurrentIconClass(){\n\t\tif (this.isCollapsed) {\n\t\t\treturn this.icons.closedClass;\n\t\t}else{\n\t\t\treturn this.icons.opened;\n\t\t}\n\t}\t\n\t\n}\n\nexport default ddDecorContainerController;\n\nexport {\n\tDD_DECOR_CONTAINER_CONTROLLER_NAME,\n\tDD_DECOR_CONTAINER_CONTROLLERAS_NAME\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/dragdrop/ddDecorContainer/edaDragDropWay.dragdrop.ddDecorContainer.controller.js","/* global angular */\nimport ddDecorDropZoneTemplate from './edaDragDropWay.dragdrop.ddDecorDropZone.template.html';\n\nconst DD_DECOR_DROPZONE_DIRECTIVE = 'ddDecorDropZone';\n\nfunction ddDecorDropZone(){\n\tlet directive = {\n\t\trestrict \t: 'A',\n\t\ttemplate \t: ddDecorDropZoneTemplate,\n\t\tscope\t\t\t:\t{\n\t\t\t'styleParam' : '=ddDropZoneProperties',\n\t\t\t'verboseMode' : '@ddDropZoneVerboseMode',\n\t\t\t'currentIndex' : '@ddDropZoneCurrentIndex',\n\t\t\t'addNewLineFct' : '&ddDropZoneAddNewLine'\n\t\t},\n\t\ttransclude\t: true,\n\t\tlink\t\t\t\t: linkfct\n\t};\n\treturn directive;\n\n\tfunction linkfct($scope){\n\n\t\tlet verboseModeActive = $scope.verboseMode;\n\t\tlet currentIndex = $scope.currentIndex;\n\n\t\t$scope.headerConfig = {\n\t\t\tHeaderButtonVisible : false,\n\t\t\taffixAttr : 'bs-affix',\n\t\t\taffixEnabled : false\n\t\t};\n\t\t/**\n\t\t\t* verbose mode : just for dev\n\t\t\t*/\n\t\tif (verboseModeActive !== '') {\n\t\t\tlet verbose = angular.lowercase(verboseModeActive);\n\t\t\tif (verbose === 'true' || verbose === '1') {\n\t\t\t\t/* eslint no-console:0 */\n\t\t\t\tconsole.dir({\n\t\t\t\t\twhoAmI : 'I am verbose from ddDecorDropZone link',\n\t\t\t\t\tverbodeMode : verbose,\n\t\t\t\t\tParentParentIndex : $scope.$parent.$parent.$index,\n\t\t\t\t\tParentIndex : $scope.$parent.$index,\n\t\t\t\t\tcurrentIndex : currentIndex,\n\t\t\t\t\tstyleParam : $scope.styleParam\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\n\t\tif (typeof currentIndex !== 'undefined') {\n\t\t\tif (currentIndex !== '') {\n\t\t\t\t// apply title\n\t\t\t\tif (typeof $scope.styleParam.title !== 'undefined') $scope.currentTitle = $scope.styleParam.title;\n\t\t\t\t//apply font-awesome\n\t\t\t\tif (typeof $scope.styleParam.fontAwesomeIcon !== 'undefined') $scope.currentFontAwesome = $scope.styleParam.fontAwesomeIcon;\n\t\t\t\t//show add new line button\n\t\t\t\tif (currentIndex === '1') $scope.headerConfig.HeaderButtonVisible = true;\n\t\t\t}\n\t\t}\n\n\t}\n\n}\n\n\nddDecorDropZone.$inject = [];\n\nexport default ddDecorDropZone;\n\nexport {\n\tDD_DECOR_DROPZONE_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/dragdrop/ddDecorDropZone/edaDragDropWay.dragdrop.ddDecorDropZone.directive.js","module.exports = \"\\n
\\n
\\n
\\n
\\n \\n {{currentTitle}}\\n \\n \\n \\n \\n add new line\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/dragdrop/ddDecorDropZone/edaDragDropWay.dragdrop.ddDecorDropZone.template.html\n// module id = 60\n// module chunks = 0","\nimport dragdropItemTemplate from './edaDragDropWay.dragdrop.ddDecorItem.template.html';\n\nconst DRAG_DROP_DECOR_ITEM = 'ddDecorItem';\n\nfunction ddDecorItem(easyFormDragWayConfig){\n\tlet directive = {\n\t\trestrict\t\t\t: 'A',\n\t\tscope\t\t\t\t\t: {\n\t\t\t'verboseMode' \t\t\t: '@ddItemVerboseMode',\n\t\t\t'currentIndex' \t\t\t: '@ddItemCurrentIndex',\n\t\t\t'parentIndex'\t\t\t\t: '@ddItemParentIndex',\n\t\t\t'parentParentIndex'\t: '@ddItemParentParentIndex', \n\t\t\t'lineItemsCount' \t\t: '@ddItemsCount',\n\t\t\t'cssClass'\t\t\t\t\t: '@ddItemCssClass'\n\t\t},\n\t\ttemplate\t\t: dragdropItemTemplate,\n\t\ttransclude\t: true,\t\n\t\tlink\t\t\t\t: linkfct\t\n\t};\n\treturn directive;\n\t\n\tfunction linkfct($scope, element, attrs, ctrl, transclude){\n\t\tlet verboseModeActive = $scope.verboseMode;\n\t\tlet currentIndex = $scope.currentIndex;\n\t\tlet parentIndex = $scope.parentIndex;\n\t\tlet listClass = easyFormDragWayConfig.getDistinctItemCssClass();\n\t\n\t\n\t\t/**\n\t\t\t* init css class\n\t\t\t*/\n\t\tangular.forEach(listClass, (css)=>element.removeClass(css));\n\t\telement.addClass($scope.cssClass); \n\t\t/**\n\t\t\t* update css class\n\t\t\t*/\n\t\t$scope.$watch('cssClass', (newValue, oldValue)=>{\n\t\t\tif(newValue !== oldValue){\n\t\t\t\t/**\n\t\t\t\t\t* update css class\n\t\t\t\t\t*/\n\t\t\t\tangular.forEach(listClass, (css)=>element.removeClass(css));\n\t\t\t\telement.addClass(newValue); \n\t\t\t}\t\n\t\t});\n\t\n\t\t/**\n\t\t\t* verbose mode : just for dev \n\t\t\t*/\n\t\tif (verboseModeActive !== '') {\n\t\t\tlet verbose = angular.lowercase(verboseModeActive);\n\t\t\tif (verbose === 'true' || verbose === '1') {\n\t\t\t\t/* eslint no-console:0 */\n\t\t\t\tconsole.dir({\n\t\t\t\t\twhoAmI : 'I am verbose from ddDecorItem directive link',\n\t\t\t\t\tverbodeMode : verbose,\n\t\t\t\t\tParentParentIndex : $scope.$parent.$parent.$index,\n\t\t\t\t\tParentIndex : parentIndex,\n\t\t\t\t\tparentParentIndex : $scope.parentParentIndex,\n\t\t\t\t\tcurrentIndex : currentIndex,\n\t\t\t\t\tlineItemsCount : $scope.lineItemsCount\n\t\t\t\t});\n\t\t\t} \n\t\t}\n\t\t/**\n\t\t\t* control column : apply css class to item\n\t\t\t*/\n\t\tif ($scope.parentParentIndex === '0') element.addClass(listClass[0]);\n\t\t/**\n\t\t\t* prevent transclusion creating child scope \n\t\t\t*\n\t\t\t*\n\t\t\t* NOTE :if you want to know more about what I'm saying : check this nice tip on the subject : \n\t\t\t* http://angular-tips.com/blog/2014/03/transclusion-and-scopes/ \n\t\t\t*/\n\t\ttransclude($scope.$parent, (contentClone)=>{\n\t\t\t\t/**\n\t\t\t\t\t* transclusion will append content to '
' \n\t\t\t\t\t*/\n\t\t\t\tlet childDiv = angular.element(element.children()[0]); \n\t\t\t\tchildDiv.append(contentClone);\n\t\t}); \t\t\n\t}\n\t\n}\n\n\nddDecorItem.$inject = [\n\t'easyFormDragWayConfig'\n];\n\nexport default ddDecorItem;\n\nexport {\n\tDRAG_DROP_DECOR_ITEM\n};\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/dragdrop/ddDecorItem/edaDragDropWay.dragdrop.ddDecorItem.directive.js","module.exports = \"\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/dragdrop/ddDecorItem/edaDragDropWay.dragdrop.ddDecorItem.template.html\n// module id = 62\n// module chunks = 0","const DRAG_DROP_ITEM_DECOR_SERVICE = 'dragDropItemDecorationService';\n\nclass dragDropItemDecorationService {\n\t\n\tconstructor(easyFormDragWayConfig){\n\t\tthis.easyFormDragWayConfig = easyFormDragWayConfig;\n\t\tthis.init();\n\t}\n\t\n\tinit(){\n\t\tthis._listItemClass = [].concat(this.easyFormDragWayConfig.getListItemCssClass());\n\t}\n\t\n\tgetListClass(){\n\t\treturn this._listItemClass;\n\t}\t\n\t\n\tgetCssClassWhenNumberItemsInRowIs(thisNumber){\n\t\treturn this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(thisNumber);\n\t}\n\t\n\tapplyCssClassWholeLine(model, indexColumn, indexLine, numberItems, restrictToThisIndexColumn){\n\t\tif (typeof numberItems !== 'undefined' &&\n\t\t\t\ttypeof indexLine !== 'undefined' &&\n\t\t\t\ttypeof indexColumn !== 'undefined' &&\n\t\t\t\ttypeof model !== 'undefined' &&\n\t\t\t\ttypeof restrictToThisIndexColumn !== 'undefined') {\n\t\t\tif (indexColumn === restrictToThisIndexColumn) {\n\t\t\t\tfor (let i = model[indexColumn][indexLine].length - 1; i >= 0; i--) {\n\t\t\t\t\t\tmodel[indexColumn][indexLine][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(numberItems);\n\t\t\t\t}\n\t\t\t} \n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tupdateCssClassWholeColumn(model, indexColumn){\n\t\tif (typeof indexColumn !== 'undefined' &&\n\t\t\t\ttypeof model !== 'undefined') {\n\t\t\tfor (let cpt = model[indexColumn].length - 1; cpt >= 0; cpt--) {\n\t\t\t\tfor (let i = model[indexColumn][cpt].length - 1; i >= 0; i--) {\n\t\t\t\t\t\tmodel[indexColumn][cpt][i].cssClass = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(model[indexColumn][cpt].length);\n\t\t\t\t}\n\t\t\t}\t\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\t\n\t\t\n\t\n}\n\ndragDropItemDecorationService.$inject = [\n\t'easyFormDragWayConfig'\n];\n\nexport default dragDropItemDecorationService;\n\nexport {\n\tDRAG_DROP_ITEM_DECOR_SERVICE\n};\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/dragdrop/ddDecorItem/edaDragDropWay.dragdrop.ddDecorItem.service.js","/* global angular */\nimport ddDecorLineTemplate from './edaDragDropWay.dragdrop.ddDecorLine.template.html';\n\nconst DRAG_DROP_DECOR_LINE = 'ddDecorLine';\n\n\nfunction ddDecorLine($timeout){\n\tlet directive = {\n\t\trestrict\t\t:\t'A',\n\t\tscope\t\t\t\t: {\n\t\t\t'verboseMode' : '@ddLineVerboseMode',\n\t\t\t'currentIndex' : '@ddLineCurrentIndex',\n\t\t\t'parentIndex' : '@ddLineParentIndex',\n\t\t\t'removeLine' : '&ddRemoveLine'\n\t\t},\t\t\n\t\ttemplate\t\t: ddDecorLineTemplate,\n\t\ttransclude\t: true,\n\t\tlink\t\t\t\t: linkfct\t\t\n\t};\n\treturn directive;\n\t\n\t\n\tfunction linkfct($scope, element, attrs, ctrl, transclude){\n\t\tlet verboseModeActive\t\t\t\t\t\t= $scope.verboseMode;\n\t\tlet currentIndex \t\t\t\t\t= $scope.currentIndex;\n\t\tlet parentIndex \t\t\t\t\t= $scope.parentIndex;\n\t\t$scope.deleteLine \t\t\t\t\t\t\t= {};\n\t\t$scope.deleteLine.readyToDelete = false;\n\t\t$scope.deleteLine.dblClickCount = 0;\n\t\t$scope.isCollapsed \t\t\t\t\t\t\t= false;\n\t\tlet timer;\n\t\t\n\n\t\t// verbose mode : just for dev \n\t\tif (verboseModeActive !== '') {\n\t\t\tlet verbose = angular.lowercase(verboseModeActive);\n\t\t\tif (verbose === 'true' || verbose === '1') {\n\t\t\t\t/* eslint no-console:0 */\n\t\t\t\tconsole.dir({\n\t\t\t\t\twhoAmI : 'I am verbose from ddDecorLine directive link',\n\t\t\t\t\tverbodeMode : verbose,\n\t\t\t\t\tParentParentIndex : $scope.$parent.$parent.$index,\n\t\t\t\t\tParentIndex : parentIndex,\n\t\t\t\t\tcurrentIndex : currentIndex\n\t\t\t\t});\n\t\t\t} \n\t\t}\n\t\t\n\n\t\t/**\n\t\t\t* removeMe is function related to twice double click sequence to delete a line\n\t\t\t*\n\t\t\t* - addClass / remove/class ; will make line in a shake movement\n\t\t\t* - call \"removeLine function to delete the line (if it was rwice double clicked)\n\t\t\t*/\n\t$scope.removeMe = (event)=>{\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tif ($scope.parentIndex === '1') {\n\t\t\t//2nd dbl click : if is shaking so it is confirmation to delete\n\t\t\tif ($scope.deleteLine.dblClickCount === 1){\n\t\t\t\t$scope.deleteLine.dblClickCount = 0;\n\t\t\t\t$scope.deleteLine.readyToDelete = false;\n\t\t\t\t/**\n\t\t\t\t\t* NOTE : trick in calling parent controller function with input param when directive with isolate scope\n\t\t\t\t\t* see : https://thinkster.io/egghead/isolate-scope-am\n\t\t\t\t\t*\n\t\t\t\t\t* Here should be:\n\t\t\t\t\t* \n\t\t\t\t\t*-> in html : dd-remove-line=\"removeThisLine(indexToDelete)\n\t\t\t\t\t*-> in controller : $scope.removeThisLine = function(lineIndex){\n\t\t\t\t\t*-> so in directive call it : $scope.removeLine({indexToDelete: currentIndex});\n\t\t\t\t\t*\n\t\t\t\t\t*\n\t\t\t\t\t* BUT in this case (repeats, ul> li.... complicated) \n\t\t\t\t\t* => works better (if shaking a lot of line in a row it won't mess up)\n\t\t\t\t\t*\n\t\t\t\t\t*-> in html : dd-remove-line=\"removeThisLine($index)\n\t\t\t\t\t*-> in controller : $scope.removeThisLine = function(lineIndex){\n\t\t\t\t\t*-> so in directive call it : $scope.removeLine();\n\t\t\t\t\t*/ \n\t\t\t\t//$scope.removeLine({indexToDelete: currentIndex});\n\t\t\t\t$scope.removeLine();\n\t\t\t\t//console.warn('force timer destruction after delete!');\n\t\t\t\t$timeout.cancel(timer);\n\t\t\t}\n\t\t\n\t\t\t//1st dbl click : make it shake so ready to delete\n\t\t\tif ($scope.deleteLine.dblClickCount === 0) {\n\t\t\t\t$scope.deleteLine.dblClickCount = $scope.deleteLine.dblClickCount + 1;\n\t\t\t\t$scope.deleteLine.readyToDelete = true;\n\t\t\t}\n\t\n\t\t}\n\t};\t\t\n\t\n\t\n\t\n\t\t/**\n\t\t\t* signle event will ever occur\n\t\t\t*\n\t\t\t* to prevent it to interfere with double click sequence \n\t\t\t* -> set a time out (shaking line to delete will automaticallly end shaking after timeout : 2 seconds)\n\t\t\t*/\n\t\t$scope.cancelDelete = ()=>{\n\t\t\t//event.preventDefault();\n\t\t\t//event.stopPropagation();\n\t\t\ttimer = $timeout(()=>{\n\t\t\t\t$scope.deleteLine.dblClickCount = 0;\n\t\t\t\t$scope.deleteLine.readyToDelete = false; \t\t\t\t\t\t\t\n\t\t\t}, 500);\n\t\t\t\n\t\t\t/**\n\t\t\t\t* debug\n\t\t\t\t*/\n\t\t\t// timer.then(\n\t\t\t// () =>{\n\t\t\t// console.log( 'Timer resolved!', Date.now() );\n\t\t\t// },\n\t\t\t// () =>{\n\t\t\t// console.log( 'Timer rejected!', Date.now() );\n\t\t\t// }\n\t\t\t// );\n\t\t};\t\t\n\t\t\n\n\t\t/**\n\t\t\t* timer destruction to prevent from bad UI experience\n\t\t\t*/\n\t\t$scope.$on('$destroy', ()=>$timeout.cancel(timer)); \n\t\t\t\t\n\n\n\t\t/**\n\t\t\t* prevent transclusion creating child scope \n\t\t\t*\n\t\t\t*\n\t\t\t* NOTE :if you want to know more about what I'm saying : check this nice tip on the subject : \n\t\t\t* http://angular-tips.com/blog/2014/03/transclusion-and-scopes/ \n\t\t\t*/\n\t\ttransclude($scope.$parent, (contentClone)=>{\n\t\t\t//transclusion will append content to '
'\n\t\t\tlet childDiv = angular.element(element.children()[0]); \n\t\t\tchildDiv.append(contentClone);\n\t\t}); \n\n\n\t}\n\t\n}\n\nddDecorLine.$inject = [\n\t'$timeout'\n];\n\nexport default ddDecorLine;\n\nexport {\n\tDRAG_DROP_DECOR_LINE\n};\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/dragdrop/ddDecorLine/edaDragDropWay.dragdrop.ddDecorLine.directive.js","module.exports = \"\\n \\n \\n \\n \\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/dragdrop/ddDecorLine/edaDragDropWay.dragdrop.ddDecorLine.template.html\n// module id = 65\n// module chunks = 0","const DRAG_DROP_NO_EDITABLE_CONTROL = 'ddNoEditableControl';\n\nfunction ddNoEditableControl() {\n\tlet directive = {\n\t\trestrict\t: 'A',\n\t\tlink\t\t\t: linkfct\n\t};\n\treturn directive;\n\n\tfunction linkfct($scope, element) {\n\t\telement.on('click', (event)=>event.preventDefault());\n\t}\n}\n\nddNoEditableControl.$inject = [];\n\nexport default ddNoEditableControl;\n\nexport {\n\tDRAG_DROP_NO_EDITABLE_CONTROL\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/dragdrop/ddNoEditableControl/edaDragDropWay.dragdrop.ddNoEditableControl.directive.js","import edaRightClick, {\n\tEDA_RIGHT_CLICK_DIRECTIVE\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './edaDragDropWay.rightClick.directive';\n\nimport ddItemRightClickedManager, {\n\tEDA_RIGHT_CLICKED_MANAGER_SERVICE\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './edaDragDropWay.rightClick.service';\n\n\nconst EDA_RIGHT_CLICK_MODULE = 'eda.right.click.module';\n\n\nexport default angular\n\t\t\t\t\t\t\t\t.module(EDA_RIGHT_CLICK_MODULE, [])\n\t\t\t\t\t\t\t\t.directive(EDA_RIGHT_CLICK_DIRECTIVE, edaRightClick)\n\t\t\t\t\t\t\t\t.service(EDA_RIGHT_CLICKED_MANAGER_SERVICE, ddItemRightClickedManager);\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/common/rightclick/edaDragDropWay.rightClick.module.js","const EDA_RIGHT_CLICK_DIRECTIVE = 'edaRightClick';\n\nfunction edaRightClick($parse){\n \n\tlet directive = {\n restrict : 'A',\n link : linkFct\n };\n return directive;\n \n function linkFct(scope, element, attrs){\n let fn = $parse(attrs.edaRightClick);\n let columnIndex = $parse(attrs.edaRightClickColIndex);\n let fctSetRightclicked = $parse(attrs.edaSetRightClicked); \n /**\n * on right click event manage\n * - open edit panel through attrs.edaRightClick function\n * - set rightCliked attribute (to true) to control (in dragDropModel)\n */\n element.on('contextmenu', (event)=>{\n scope.$apply(() =>{\n event.preventDefault();\n if (columnIndex(scope) === 1) fctSetRightclicked(scope, {}); //right click limited to template column (index = 1)\n if (columnIndex(scope) === 1) fn(scope, {$event:event}); //right click limited to template column (index = 1)\n });\n });\t\n\n }\n \n}\n\nedaRightClick.$inject = [\n '$parse'\n];\n\nexport default edaRightClick;\n\n\nexport {\n EDA_RIGHT_CLICK_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/common/rightclick/edaDragDropWay.rightClick.directive.js","const EDA_RIGHT_CLICKED_MANAGER_SERVICE = 'ddItemRightClickedManager';\n\nclass ddItemRightClickedManager{\n\tconstructor(){\n\t\tthis.init();\t\n\t}\n\t\n\tinit(){\n\t\t\n\t}\n\t\n\t/**\n\t\t* setUnRightClicked \n\t\t* set unSelected (see edaRightClick directive)\n\t\t*\n\t\t* used in edaEditcontroller when droping control\n\t\t*/\t\n\tsetUnRightClicked(dragDropModelItem){\n\t\tdragDropModelItem.rightCliked = false;\n\t}\t\n\n\t/**\n\t\t* resetAllDragDropItemSelectedState\n\t\t*\n\t\t* simply reset (=set to false) all item.rightCliked \n\t\t* in edit column (dragable column)\n\t\t*\n\t\t* used in edaEditPanel when closeEditPanel() called\n\t\t*/\t\n\tresetAllDragDropItemSelectedState(dragDropModel){\n\t\tangular.forEach(dragDropModel[1] ,(line)=>{\n\t\t\tangular.forEach(line, (item)=>item.rightCliked = false);\n\t\t});\n\t\n\t}\t\n\t\n\t\n}\n\nddItemRightClickedManager.$inject = [];\n\nexport default ddItemRightClickedManager;\n\nexport {\n\tEDA_RIGHT_CLICKED_MANAGER_SERVICE\n};\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/common/rightclick/edaDragDropWay.rightClick.service.js","import ddModelConfModelProxyService, {\n\tDRAG_DROP_CONFIG_PROXY_SERVICE\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './edaDragDropWay.configurationModelProxy.service';\n\nconst EDA_CONFIG_PROXY_MODULE = 'eda.config.proxy.module';\n\nexport default angular\n\t\t\t\t\t\t\t\t.module(EDA_CONFIG_PROXY_MODULE, [])\n\t\t\t\t\t\t\t\t.service(DRAG_DROP_CONFIG_PROXY_SERVICE, ddModelConfModelProxyService);\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/configurationModelProxy/edaDragDropWay.configurationModelProxy.module.js","const DRAG_DROP_CONFIG_PROXY_SERVICE = 'ddModelConfModelProxyService';\n\nclass ddModelConfModelProxyService{\n \n constructor(\n EasyFormGenFormlyBindingModels, \n // controllerModalProxy, \n // dragDropConfig, \n easyFormDragWayConfig,\n $parse){\n this.EasyFormGenFormlyBindingModels = EasyFormGenFormlyBindingModels;\n // this.controllerModalProxy = controllerModalProxy;\n // this.dragDropConfig = dragDropConfig;\n this.easyFormDragWayConfig = easyFormDragWayConfig;\n this.$parse = $parse;\n this.init(); \n }\n \n init(){\n \n }\n\n refreshAllConfigurationFromDragAndDropModel(configModel, ddModel){\n /**\n * TODO : prevent reset already set props\n * \n * previousConfigurationModel = a backup of configuration model 'configModel 'before resetting it\n * -> dragDrop model contains unique keys of already existing controls : these controls must not be reset / overwritten \n */\n // let previousConfigurationModel = angular.copy(configModel); \n configModel.lines = [];\n // iterates line config model\n angular.forEach(ddModel[1], (lineValue, keyValue)=>{\n // add empty line 1st - if line is empty -> it will be enough \n configModel.lines.push(angular.copy(this.EasyFormGenFormlyBindingModels.getEasyFormEmptyConfigurationLineModel()));\n // update line value field\n this.applyThisLine(keyValue + 1, keyValue, configModel);\n // iterate through columns and add them if control exists\t\n angular.forEach(lineValue, (colValue, colIndex)=>{\n // push an empty control model but relative to dradrop : model control type - (if datepicker so additionnal properties are added) \t\n let controlToBind = {\n control : angular.copy(this.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(lineValue.length, this.getFormlyDetailedControlModelFromDragDropObject(lineValue[colIndex]).formlyType))\n };\n let formlyDetailedControlModel = this.getFormlyDetailedControlModelFromDragDropObject(lineValue[colIndex]);\n // controls alreadys existed so do not reset it - control to bind is the previous one\t\t\n if(typeof colValue.key !== 'undefined'){\n //console.warn('debug dragdropModel show this control key : ' + colValue.key);\n controlToBind.control = angular.copy(colValue.configModelControl);\n //update cssClass depending new position:\n var newClassName = this.EasyFormGenFormlyBindingModels.getFormlyControlTemplateForNcolumnLine(lineValue.length, this.getFormlyDetailedControlModelFromDragDropObject(lineValue[colIndex]).formlyType);\n controlToBind.control.className = newClassName.className;\n //test if header nee this one\n controlToBind.control.cssClass = newClassName.className;\n // get control details for this key in backup : previousConfigurationModel\n }else{\n // controls did not exists before : control to bind is a new one\n // bind dragdrop control properties to configuration model through controlToBind var\n this.bindConfigCtrlModelFromFormlyDetailedCtrlModel(formlyDetailedControlModel, controlToBind, configModel);\n }\t\n // apply controlToBind var to configuration model control\n if (typeof configModel.lines[keyValue].columns[colIndex] === 'undefined') configModel.lines[keyValue].columns.push(angular.copy(this.EasyFormGenFormlyBindingModels.getEasyFormConfigurationEmptyControlModel())); \n configModel.lines[keyValue].columns[colIndex].control \t= angular.copy(controlToBind.control);\n configModel.lines[keyValue].columns[colIndex].numColumn = colIndex + 1;\n configModel.lines[keyValue].columns[colIndex].exist \t\t= true;\n });\n });\n return configModel;\n } \n \n \n refreshControlsKeys(configModel, dragDropModel){\t\t\t\t\n angular.forEach(configModel.lines, (aConfigLine, aConfigLineIndex)=>{\t\t\t\t\t\t\n angular.forEach(aConfigLine.columns, (aConfigControl, aConfigControlIndex)=>{\n //if last control removed from line - and dragDrop model did not already removed this line\n if(typeof dragDropModel[1][aConfigLineIndex] !== 'undefined'){\n if(dragDropModel[1][aConfigLineIndex].length > 0){\n dragDropModel[1][aConfigLineIndex][aConfigControlIndex].key = aConfigControl.control.key;\n //need to save all in dragdropModel as it is a reference\n //configModel still needed \n // -> to keep coherence (same back model) between all version of easyForm Generator\n // -> is the back model (can be saved to dataBase)\n dragDropModel[1][aConfigLineIndex][aConfigControlIndex].configModelControl = angular.copy(aConfigControl.control);\t\t\t\t\t\t\t\t\t\t\n }\n }\n });\n }); \n }\n\n\n /**\n * drag drop model\n * -> will be used to bind configuration model\n * \tof no key saved, configuration model controls would be reset each drop events\n * \n * -> matching key : will prevent to reset existing control\n */\n loadDragDropModelFromConfigurationModel(configModel, dragDropModel){\t\t\t\t\n //reset dragdrop fields model NOT all dragDropModel!\n dragDropModel[1] = [];\n angular.forEach(configModel.lines, (aConfigLine, aConfigLineIndex)=>{\n //add new line\n dragDropModel[1].push([]);\n angular.forEach(aConfigLine.columns, (aConfigControl)=>{\n // get control type from configuration.control.selectedControl\n let dragdropControlRef = {\n control : 'empty',\n cssClass : 'col-xs-12',\n label : ''\n };\n angular.forEach(dragDropModel[0], (groupOfCtrlRef)=>{\n angular.forEach(groupOfCtrlRef, (aCtrlref)=>{\n if (aCtrlref.control === aConfigControl.control.selectedControl) dragdropControlRef = angular.copy(aCtrlref);\n });\n });\n dragDropModel[1][aConfigLineIndex].push(dragdropControlRef);\n //update class depending number of control per line\n let cssClassToApply = this.easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(dragDropModel[1][aConfigLineIndex].length);\n angular.forEach(dragDropModel[1][aConfigLineIndex], (ddControlToUpdate)=>ddControlToUpdate.cssClass = cssClassToApply);\n });\t \n });\n // console.info('bindDragDropModelFromConfigurationModel');\n // console.dir(\t\n // \t\t\t\t\t\t\t{\n // \t\t\t\t\t\t\t\t\t'when' \t\t\t\t\t\t\t: 'starting',\n // \t\t\t\t\t\t\t\t\t'configModel is ' \t: angular.copy(configModel),\n // \t\t\t\t\t\t\t\t\t'dragDropModel is ' : angular.copy(dragDropModel)\n // \t\t\t\t\t\t\t}\n // \t\t\t\t\t\t); \n }\n\n\n\n\n /**\n * returns a control model that is more formly detailed\n * (more formly detailed : see controls property in EasyFormGenFormlyBindingModels._easyFormListControls)\n */\n getFormlyDetailedControlModelFromDragDropObject(dragDrapCtrlModel){\n let controlModel = {};\n let listControl = this.EasyFormGenFormlyBindingModels.getEasyFormListControls();\n let controlsListGetter = this.$parse('controls');\n \n angular.forEach(controlsListGetter(listControl), (ctrlListValue)=>{\n if (ctrlListValue.id === dragDrapCtrlModel.control) controlModel = ctrlListValue;\n });\n return controlModel;\n }\n \n /**\n * valid a control key is unique\n *\n * yes... function name already told us that, \n * -> it's just confirmation and to see if\n * you keep focus while reading it ^^\n */\n validKeyUniqueness(thisKey, configurationObj){\n let isUnique = true;\n for (var i = configurationObj.lines.length - 1; i >= 0; i--) {\n for (var j = configurationObj.lines[i].columns.length - 1; j >= 0; j--) {\n if (typeof configurationObj.lines[i].columns[j].control !== 'undefined') {\n if (configurationObj.lines[i].columns[j].control.key === thisKey) {\n isUnique = false;\n }\t\t\t \t\t\n }\n } \n }\n return isUnique; \n } \n \n \n createUniqueKey(baseKeyValue, configurationObj){\n // unique key (set only first time) in this model is formly control type + Date.now(); \n let newKey = baseKeyValue + '-' + Date.now();\n if (this.validKeyUniqueness(newKey, configurationObj) === true){\n return newKey;\n }else{\n newKey = baseKeyValue + '-' + Date.now();\n if (this.validKeyUniqueness(newKey, configurationObj) === true){\n return newKey;\n }else{\n newKey = baseKeyValue + '-' + Date.now();\n return newKey;\n }\n } \n } \n \n\n applyThisLine(linevalue, lineIndex, configModel){\n angular.forEach(configModel.lines, (aLineValue, aLineKey)=>{\n if (aLineKey === lineIndex) aLineValue.line = linevalue;\n });\n } \n \n\n /**\n * bind formly detailed model to configuration control model\n */\n bindConfigCtrlModelFromFormlyDetailedCtrlModel(formlyDetailCtrlModel, configurationCtrlModel, configModel){\n /**\n * TODO :properties should be served by provider \n * more configurable without pain\n */\n //set selected control :\n this.$parse('control.selectedControl').assign(configurationCtrlModel, this.$parse('selectedControl')(formlyDetailCtrlModel));\n //set type :\t\n this.$parse('control.type').assign(configurationCtrlModel, this.$parse('formlyType')(formlyDetailCtrlModel));\n //set key :\t\n this.$parse('control.key').assign(configurationCtrlModel, this.createUniqueKey(this.$parse('control.type')(configurationCtrlModel), configModel));\n //set subtype :\t\n this.$parse('control.subtype').assign(configurationCtrlModel, this.$parse('formlySubtype')(formlyDetailCtrlModel));\n //set templateOptions.label :\t\n this.$parse('control.templateOptions.label').assign(configurationCtrlModel, this.$parse('formlyLabel')(formlyDetailCtrlModel));\t\t\t\t\t\n //set templateOptions.required :\t\n this.$parse('control.templateOptions.required').assign(configurationCtrlModel, this.$parse('formlyRequired')(formlyDetailCtrlModel));\t\n //set templateOptions.required :\t\n this.$parse('control.templateOptions.description').assign(configurationCtrlModel, this.$parse('formlyDescription')(formlyDetailCtrlModel));\t\n //set templateOptions.required :\t\n this.$parse('control.templateOptions.placeholder').assign(configurationCtrlModel, this.$parse('formlyPlaceholder')(formlyDetailCtrlModel));\n //set templateOptions.required :\t\n this.$parse('control.templateOptions.options').assign(configurationCtrlModel, this.$parse('formlyOptions')(formlyDetailCtrlModel));\n\n if (this.$parse('control.type')(configurationCtrlModel) === 'datepicker') {\n this.$parse('control.templateOptions.datepickerPopup').assign(configurationCtrlModel, this.$parse('datepickerPopup')(formlyDetailCtrlModel));\n } \n } \n \n \n}\n\nddModelConfModelProxyService.$inject = [\n 'EasyFormGenFormlyBindingModels',\n // 'controllerModalProxy',\n // 'dragDropConfig',\n 'easyFormDragWayConfig',\n '$parse' \n];\n\nexport default ddModelConfModelProxyService;\nexport {\n DRAG_DROP_CONFIG_PROXY_SERVICE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/configurationModelProxy/edaDragDropWay.configurationModelProxy.service.js","import dndList, {\n DNDLIST_DIRECTIVE\n} from './dragAndDropList.dndlist.directive';\n\nimport dndDraggable, {\n DNDDRAGGABLE_DIRECTIVE\n} from './dragAndDropList.dndDraggable.directive';\n\nconst DRAG_DROP_LIST_MODULE = 'dndLists.module';\n\nexport default angular\n .module(DRAG_DROP_LIST_MODULE, [])\n .directive(DNDLIST_DIRECTIVE, dndList)\n .directive(DNDDRAGGABLE_DIRECTIVE, dndDraggable)\n .factory('dndDragTypeWorkaround', function(){ return {}; })\n .factory('dndDropEffectWorkaround', function(){ return {}; });\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/common/dragAndDropList/dragAndDropList.module.js","const DNDLIST_DIRECTIVE = 'dndList';\n\nfunction dndList($parse, $timeout, dndDropEffectWorkaround, dndDragTypeWorkaround) {\n let directive = {\n link : linkFct\n };\n return directive;\n\n function linkFct(scope, element, attr) {\n // While an element is dragged over the list, this placeholder element is inserted\n // at the location where the element would be inserted after dropping\n let placeholder = angular.element('');\n let placeholderNode = placeholder[0];\n let listNode = element[0];\n let horizontal = attr.dndHorizontalList && scope.$eval(attr.dndHorizontalList);\n let externalSources = attr.dndExternalSources && scope.$eval(attr.dndExternalSources);\n\n /**\n * The dragover event is triggered \"every few hundred milliseconds\" while an element\n * is being dragged over our list, or over an child element.\n */\n element.on('dragover', (event) => {\n event = event.originalEvent || event;\n if (!isDropAllowed(event)) return true;\n // First of all, make sure that the placeholder is shown\n // This is especially important if the list is empty\n if (placeholderNode.parentNode != listNode) {\n element.append(placeholder);\n }\n if (event.target !== listNode) {\n // Try to find the node direct directly below the list node.\n var listItemNode = event.target;\n while (listItemNode.parentNode !== listNode && listItemNode.parentNode) {\n listItemNode = listItemNode.parentNode;\n }\n if (listItemNode.parentNode === listNode && listItemNode !== placeholderNode) {\n // If the mouse pointer is in the upper half of the child element,\n // we place it before the child element, otherwise below it.\n if (isMouseInFirstHalf(event, listItemNode)) {\n listNode.insertBefore(placeholderNode, listItemNode);\n } else {\n listNode.insertBefore(placeholderNode, listItemNode.nextSibling);\n }\n }\n } else {\n // This branch is reached when we are dragging directly over the list element.\n // Usually we wouldn't need to do anything here, but the IE does not fire it's\n // events for the child element, only for the list directly. Therefore we repeat\n // the positioning algorithm for IE here.\n if (isMouseInFirstHalf(event, placeholderNode, true)) {\n // Check if we should move the placeholder element one spot towards the top.\n // Note that display none elements will have offsetTop and offsetHeight set to\n // zero, therefore we need a special check for them.\n while (placeholderNode.previousElementSibling && (isMouseInFirstHalf(event, placeholderNode.previousElementSibling, true) || placeholderNode.previousElementSibling.offsetHeight === 0)) {\n listNode.insertBefore(placeholderNode, placeholderNode.previousElementSibling);\n }\n } else {\n // Check if we should move the placeholder element one spot towards the bottom\n while (placeholderNode.nextElementSibling &&\n !isMouseInFirstHalf(event, placeholderNode.nextElementSibling, true)) {\n listNode.insertBefore(placeholderNode,\n placeholderNode.nextElementSibling.nextElementSibling);\n }\n }\n }\n\n // At this point we invoke the callback, which still can disallow the drop.\n // We can't do this earlier because we want to pass the index of the placeholder.\n if (attr.dndDragover && !invokeCallback(attr.dndDragover, event)) {\n return stopDragover();\n }\n element.addClass('dndDragover');\n event.preventDefault();\n event.stopPropagation();\n return false;\n });\n\n /**\n * When the element is dropped, we use the position of the placeholder element as the\n * position where we insert the transferred data. This assumes that the list has exactly\n * one child element per array element.\n */\n element.on('drop', (event) => {\n event = event.originalEvent || event;\n if (!isDropAllowed(event)) return true;\n // The default behavior in Firefox is to interpret the dropped element as URL and\n // forward to it. We want to prevent that even if our drop is aborted.\n event.preventDefault();\n // Unserialize the data that was serialized in dragstart. According to the HTML5 specs,\n // the \"Text\" drag type will be converted to text/plain, but IE does not do that.\n var data = event.dataTransfer.getData('Text') || event.dataTransfer.getData('text/plain');\n var transferredObject;\n try {\n transferredObject = JSON.parse(data);\n } catch(e) {\n return stopDragover();\n }\n // Invoke the callback, which can transform the transferredObject and even abort the drop.\n if (attr.dndDrop) {\n transferredObject = invokeCallback(attr.dndDrop, event, transferredObject);\n if (!transferredObject) {\n return stopDragover();\n }\n }\n // Retrieve the JSON array and insert the transferred object into it.\n var targetArray = scope.$eval(attr.dndList);\n scope.$apply(() => {\n targetArray.splice(getPlaceholderIndex(), 0, transferredObject);\n });\n // In Chrome on Windows the dropEffect will always be none...\n // We have to determine the actual effect manually from the allowed effects\n if (event.dataTransfer.dropEffect === 'none') {\n if (event.dataTransfer.effectAllowed === 'copy' ||\n event.dataTransfer.effectAllowed === 'move') {\n dndDropEffectWorkaround.dropEffect = event.dataTransfer.effectAllowed;\n } else {\n dndDropEffectWorkaround.dropEffect = event.ctrlKey ? 'copy' : 'move';\n }\n } else {\n dndDropEffectWorkaround.dropEffect = event.dataTransfer.dropEffect;\n }\n // Clean up\n stopDragover();\n event.stopPropagation();\n return false;\n });\n\n /**\n * We have to remove the placeholder when the element is no longer dragged over our list. The\n * problem is that the dragleave event is not only fired when the element leaves our list,\n * but also when it leaves a child element -- so practically it's fired all the time. As a\n * workaround we wait a few milliseconds and then check if the dndDragover class was added\n * again. If it is there, dragover must have been called in the meantime, i.e. the element\n * is still dragging over the list. If you know a better way of doing this, please tell me!\n */\n element.on('dragleave', (event) => {\n event = event.originalEvent || event;\n\n element.removeClass('dndDragover');\n $timeout(() => {\n if (!element.hasClass('dndDragover')) {\n placeholder.remove();\n }\n }, 100);\n });\n\n /**\n * Checks whether the mouse pointer is in the first half of the given target element.\n *\n * In Chrome we can just use offsetY, but in Firefox we have to use layerY, which only\n * works if the child element has position relative. In IE the events are only triggered\n * on the listNode instead of the listNodeItem, therefore the mouse positions are\n * relative to the parent element of targetNode.\n */\n function isMouseInFirstHalf(event, targetNode, relativeToParent) {\n var mousePointer = horizontal ? (event.offsetX || event.layerX)\n : (event.offsetY || event.layerY);\n var targetSize = horizontal ? targetNode.offsetWidth : targetNode.offsetHeight;\n var targetPosition = horizontal ? targetNode.offsetLeft : targetNode.offsetTop;\n targetPosition = relativeToParent ? targetPosition : 0;\n return mousePointer < targetPosition + targetSize / 2;\n }\n\n /**\n * We use the position of the placeholder node to determine at which position of the array the\n * object needs to be inserted\n */\n function getPlaceholderIndex() {\n return Array.prototype.indexOf.call(listNode.children, placeholderNode);\n }\n\n /**\n * Checks various conditions that must be fulfilled for a drop to be allowed\n */\n function isDropAllowed(event) {\n // Disallow drop from external source unless it's allowed explicitly.\n if (!dndDragTypeWorkaround.isDragging && !externalSources) return false;\n // Check mimetype. Usually we would use a custom drag type instead of Text, but IE doesn't\n // support that.\n if (!hasTextMimetype(event.dataTransfer.types)) return false;\n // Now check the dnd-allowed-types against the type of the incoming element. For drops from\n // external sources we don't know the type, so it will need to be checked via dnd-drop.\n if (attr.dndAllowedTypes && dndDragTypeWorkaround.isDragging) {\n var allowed = scope.$eval(attr.dndAllowedTypes);\n if (angular.isArray(allowed) && allowed.indexOf(dndDragTypeWorkaround.dragType) === -1) {\n return false;\n }\n }\n // Check whether droping is disabled completely\n if (attr.dndDisableIf && scope.$eval(attr.dndDisableIf)) return false;\n return true;\n }\n\n /**\n * Small helper function that cleans up if we aborted a drop.\n */\n function stopDragover() {\n placeholder.remove();\n element.removeClass('dndDragover');\n return true;\n }\n\n /**\n * Invokes a callback with some interesting parameters and returns the callbacks return value.\n */\n function invokeCallback(expression, event, item) {\n return $parse(expression)(scope, {\n event : event,\n index : getPlaceholderIndex(),\n item : item || undefined,\n external: !dndDragTypeWorkaround.isDragging,\n type : dndDragTypeWorkaround.isDragging ? dndDragTypeWorkaround.dragType : undefined\n });\n }\n\n /**\n * Check if the dataTransfer object contains a drag type that we can handle. In old versions\n * of IE the types collection will not even be there, so we just assume a drop is possible.\n */\n function hasTextMimetype(types) {\n if (!types) return true;\n for (var i = 0; i < types.length; i++) {\n if (types[i] === 'Text' || types[i] === 'text/plain') return true;\n }\n return false;\n } \n }\n}\n\nconst TO_INJECT = [\n '$parse', \n '$timeout', \n 'dndDropEffectWorkaround', \n 'dndDragTypeWorkaround'\n];\n\ndndList.$inject = TO_INJECT;\n\nexport default dndList;\n\nexport {\n DNDLIST_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/common/dragAndDropList/dragAndDropList.dndlist.directive.js","const DNDDRAGGABLE_DIRECTIVE = 'dndDraggable';\n\nfunction dndDraggable($parse, $timeout, dndDropEffectWorkaround, dndDragTypeWorkaround) {\n let directive = {\n link : linkFct\n };\n return directive;\n\n function linkFct(scope, element, attr) {\n // Set the HTML5 draggable attribute on the element\n element.attr('draggable', 'true');\n\n // If the dnd-disable-if attribute is set, we have to watch that\n if (attr.dndDisableIf) {\n scope.$watch(attr.dndDisableIf, (disabled) => element.attr('draggable', !disabled));\n }\n\n /**\n * When the drag operation is started we have to prepare the dataTransfer object,\n * which is the primary way we communicate with the target element\n */\n element.on('dragstart', (event) => {\n event = event.originalEvent || event;\n // Serialize the data associated with this element. IE only supports the Text drag type\n event.dataTransfer.setData('Text', angular.toJson(scope.$eval(attr.dndDraggable)));\n // Only allow actions specified in dnd-effect-allowed attribute\n event.dataTransfer.effectAllowed = attr.dndEffectAllowed || 'move';\n // Add CSS classes. See documentation above\n element.addClass('dndDragging');\n $timeout(() => { element.addClass('dndDraggingSource'); }, 0);\n // Workarounds for stupid browsers, see description below\n dndDropEffectWorkaround.dropEffect = 'none';\n dndDragTypeWorkaround.isDragging = true;\n // Save type of item in global state. Usually, this would go into the dataTransfer\n // typename, but we have to use \"Text\" there to support IE\n dndDragTypeWorkaround.dragType = attr.dndType ? scope.$eval(attr.dndType) : undefined;\n // Invoke callback\n $parse(attr.dndDragstart)(scope, {event: event});\n event.stopPropagation();\n });\n\n /**\n * The dragend event is triggered when the element was dropped or when the drag\n * operation was aborted (e.g. hit escape button). Depending on the executed action\n * we will invoke the callbacks specified with the dnd-moved or dnd-copied attribute.\n */\n element.on('dragend', (event) => {\n event = event.originalEvent || event;\n\n // Invoke callbacks. Usually we would use event.dataTransfer.dropEffect to determine\n // the used effect, but Chrome has not implemented that field correctly. On Windows\n // it always sets it to 'none', while Chrome on Linux sometimes sets it to something\n // else when it's supposed to send 'none' (drag operation aborted).\n var dropEffect = dndDropEffectWorkaround.dropEffect;\n scope.$apply(() => {\n switch (dropEffect) {\n case 'move':\n $parse(attr.dndMoved)(scope, {event: event});\n break;\n\n case 'copy':\n $parse(attr.dndCopied)(scope, {event: event});\n break;\n }\n });\n\n // Clean up\n element.removeClass('dndDragging');\n element.removeClass('dndDraggingSource');\n dndDragTypeWorkaround.isDragging = false;\n event.stopPropagation();\n });\n\n /**\n * When the element is clicked we invoke the callback function\n * specified with the dnd-selected attribute.\n */\n element.on('click', (event) => {\n event = event.originalEvent || event;\n scope.$apply(() => $parse(attr.dndSelected)(scope, {event: event}));\n event.stopPropagation();\n });\n\n /**\n * Workaround to make element draggable in IE9\n */\n element.on('selectstart', () => {\n if (this.dragDrop) this.dragDrop();\n return false;\n });\n }\n}\n\n\nconst TO_INJECT = [\n '$parse', \n '$timeout', \n 'dndDropEffectWorkaround', \n 'dndDragTypeWorkaround'\n];\n\n\ndndDraggable.$inject = TO_INJECT;\n\nexport default dndDraggable;\n\nexport {\n DNDDRAGGABLE_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/common/dragAndDropList/dragAndDropList.dndDraggable.directive.js","import pageslide, {\n PAGE_SLIDE_DIRECTIVE\n} from './pageslide.directive';\n\n\nconst PAGE_SLIDE_MODULE = 'pageslide.module';\n\nexport default angular\n .module(PAGE_SLIDE_MODULE, [])\n .directive(PAGE_SLIDE_DIRECTIVE, pageslide);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/common/pageslide/pageslide.module.js","const PAGE_SLIDE_DIRECTIVE = 'pageslide';\n\nfunction pageslide() {\n let directive = {\n restrict : 'EAC',\n transclude : false,\n scope : {\n psOpen : '=?',\n psAutoClose : '=?',\n psSide : '@',\n psSpeed : '@',\n psClass : '@',\n psSize : '@',\n psSqueeze : '@',\n psCloak : '@',\n psPush : '@',\n psContainer : '@'\n },\n link : linkFct\n };\n return directive;\n\n function linkFct($scope, el, attrs) {\n /* Inspect */\n //console.log($scope);\n //console.log(el);\n //console.log(attrs);\n\n /* Parameters */\n var param = {};\n\n param.side = $scope.psSide || 'right';\n param.speed = $scope.psSpeed || '0.5';\n param.size = $scope.psSize || '300px';\n param.zindex = 1000; // Override with custom CSS\n param.className = $scope.psClass || 'ng-pageslide';\n param.cloak = $scope.psCloak && $scope.psCloak.toLowerCase() == 'false' ? false : true;\n param.squeeze = Boolean($scope.psSqueeze) || false;\n param.push = Boolean($scope.psPush) || false;\n param.container = $scope.psContainer || false; \n\n // Apply Class\n el.addClass(param.className);\n\n /* DOM manipulation */\n let content = null;\n let slider = null;\n let body = param.container ? document.getElementById(param.container) : document.body;\n\n slider = el[0];\n\n // Check for div tag\n if (slider.tagName.toLowerCase() !== 'div' &&\n slider.tagName.toLowerCase() !== 'pageslide')\n throw new Error('Pageslide can only be applied to
or
elements');\n\n // Check for content\n if (slider.children.length === 0)\n throw new Error('You have to content inside the ');\n\n content = angular.element(slider.children);\n\n /* Append */\n body.appendChild(slider);\n\n /* Style setup */\n slider.style.zIndex = param.zindex;\n slider.style.position = param.container !== false ? 'absolute' : 'fixed';\n slider.style.width = 0;\n slider.style.height = 0;\n slider.style.overflow = 'hidden';\n slider.style.transitionDuration = param.speed + 's';\n slider.style.webkitTransitionDuration = param.speed + 's';\n slider.style.transitionProperty = 'width, height';\n if (param.squeeze) {\n body.style.position = 'absolute';\n body.style.transitionDuration = param.speed + 's';\n body.style.webkitTransitionDuration = param.speed + 's';\n body.style.transitionProperty = 'top, bottom, left, right';\n }\n\n switch (param.side) {\n case 'right':\n slider.style.height = attrs.psCustomHeight || '100%';\n slider.style.top = attrs.psCustomTop || '0px';\n slider.style.bottom = attrs.psCustomBottom || '0px';\n slider.style.right = attrs.psCustomRight || '0px';\n break;\n case 'left':\n slider.style.height = attrs.psCustomHeight || '100%';\n slider.style.top = attrs.psCustomTop || '0px';\n slider.style.bottom = attrs.psCustomBottom || '0px';\n slider.style.left = attrs.psCustomLeft || '0px';\n break;\n case 'top':\n slider.style.width = attrs.psCustomWidth || '100%';\n slider.style.left = attrs.psCustomLeft || '0px';\n slider.style.top = attrs.psCustomTop || '0px';\n slider.style.right = attrs.psCustomRight || '0px';\n break;\n case 'bottom':\n slider.style.width = attrs.psCustomWidth || '100%';\n slider.style.bottom = attrs.psCustomBottom || '0px';\n slider.style.left = attrs.psCustomLeft || '0px';\n slider.style.right = attrs.psCustomRight || '0px';\n break;\n }\n\n\n /* Closed */\n function psClose(slider, param) {\n if (slider && slider.style.width !== 0 && slider.style.width !== 0) {\n if (param.cloak) content.css('display', 'none');\n switch (param.side) {\n case 'right':\n slider.style.width = '0px';\n if (param.squeeze) body.style.right = '0px';\n if (param.push) {\n body.style.right = '0px';\n body.style.left = '0px';\n }\n break;\n case 'left':\n slider.style.width = '0px';\n if (param.squeeze) body.style.left = '0px';\n if (param.push) {\n body.style.left = '0px';\n body.style.right = '0px';\n }\n break;\n case 'top':\n slider.style.height = '0px';\n if (param.squeeze) body.style.top = '0px';\n if (param.push) {\n body.style.top = '0px';\n body.style.bottom = '0px';\n }\n break;\n case 'bottom':\n slider.style.height = '0px';\n if (param.squeeze) body.style.bottom = '0px';\n if (param.push) {\n body.style.bottom = '0px'; \n body.style.top = '0px'; \n }\n break;\n }\n }\n $scope.psOpen = false;\n }\n\n /* Open */\n function psOpen(slider, param) {\n if (slider.style.width !== 0 && slider.style.width !== 0) {\n switch (param.side) {\n case 'right':\n slider.style.width = param.size;\n if (param.squeeze) body.style.right = param.size;\n if (param.push) {\n body.style.right = param.size;\n body.style.left = '-' + param.size;\n }\n break;\n case 'left':\n slider.style.width = param.size;\n if (param.squeeze) body.style.left = param.size;\n if (param.push) {\n body.style.left = param.size;\n body.style.right = '-' + param.size;\n }\n break;\n case 'top':\n slider.style.height = param.size;\n if (param.squeeze) body.style.top = param.size;\n if (param.push) {\n body.style.top = param.size;\n body.style.bottom = '-' + param.size;\n }\n break;\n case 'bottom':\n slider.style.height = param.size;\n if (param.squeeze) body.style.bottom = param.size;\n if (param.push) {\n body.style.bottom = param.size;\n body.style.top = '-' + param.size;\n }\n break;\n }\n setTimeout(() => {\n if (param.cloak) content.css('display', 'block');\n }, (param.speed * 1000));\n\n }\n }\n\n // function isFunction(functionToCheck) {\n // var getType = {};\n // return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n // }\n\n /*\n * Watchers\n * */\n\n $scope.$watch('psOpen', (value) => {\n /* eslint no-extra-boolean-cast:0 */\n if (!!value) {\n // Open\n psOpen(slider, param);\n } else {\n // Close\n psClose(slider, param);\n }\n });\n\n\n /*\n * Events\n * */\n\n $scope.$on('$destroy', () => body.removeChild(slider));\n\n if ($scope.psAutoClose) {\n $scope.$on('$locationChangeStart', () => psClose(slider, param));\n $scope.$on('$stateChangeStart', () => psClose(slider, param));\n }\n }\n\n}\n\npageslide.$inject = [];\n\nexport default pageslide;\n\nexport {\n PAGE_SLIDE_DIRECTIVE\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/common/pageslide/pageslide.directive.js","/* global angular */\n\nimport easyFormDragWayConfig, {\n\tEASY_FORM_DRAG_DROP_WAY_CONFIG_NAME\n} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './edaDragDropWay.edaDragdropWayEasyFormGen.provider';\nimport edaDragDropWayEasyFormGenCtrl, {\n\tDRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './edaDragDropWay.edaDragdropWayEasyFormGen.controller';\nimport edaDragdropWayEasyFormGen, {\n\tEDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './edaDragDropWay.edaDragdropWayEasyFormGen.directive';\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\nconst DRAGDROP_MODULE = 'edaDragDropWay.main.module';\n\nexport default angular\n\t\t\t\t\t\t\t\t.module(DRAGDROP_MODULE, [])\n\t\t\t\t\t\t\t\t.provider(EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME, easyFormDragWayConfig)\n\t\t\t\t\t\t\t\t.controller(DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER, edaDragDropWayEasyFormGenCtrl)\n\t\t\t\t\t\t\t\t.directive(EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE, edaDragdropWayEasyFormGen);\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.module.js","// TODO : Add here configs from ES5 dragDropConfigProvider\n\nimport {\n LIST_DRAG_DROP_ITEM_CSS_CLASSES,\n DRAG_DROP_CONFIG_MODEL,\n DRAG_DROP_PRESENTATION_MODEL,\n ITEMS_NOT_TO_COUNT_FOR_REAL\n} \tfrom './edaDragDropWay.edaDragdropWayEasyFormGen.provider.helpers';\n\nconst EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME = 'easyFormDragWayConfig';\n\nfunction easyFormDragWayConfig() {\n\n\tlet _listDragDropItemCssClasses \t\t\t\t\t\t= [].concat(LIST_DRAG_DROP_ITEM_CSS_CLASSES);\n\tlet _dragDropConfigModel \t\t\t\t\t\t\t\t\t\t= angular.copy(DRAG_DROP_CONFIG_MODEL);\n\tlet _dragDropPresentationModel \t\t\t\t\t\t\t= [].concat(DRAG_DROP_PRESENTATION_MODEL);\n\tlet _itemsNotToCountFoReal \t\t\t\t\t\t\t\t\t= angular.copy(ITEMS_NOT_TO_COUNT_FOR_REAL);\n\n\tlet _configuration \t\t\t\t\t\t\t\t\t\t\t\t\t= defaultConfig();\n\tlet _controlsList\t\t\t\t\t\t\t\t\t\t\t\t\t\t= controlsList();\n\t// let _defaultLanguage\t\t= getDefaultLanguage();\n\t// let _currentLanguage\t\t= initDefaultLanguage();\n\tlet _showPreviewPanel\t\t\t\t\t\t\t\t\t\t\t\t= getDefaultshowPreviewPanel();\n\tlet _showPreviewModels\t\t\t\t\t\t\t\t\t\t\t= getDefaultShowPreviewModel();\t\n\t/* jshint validthis:true */\n\tthis.$get \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t= easyFormDragDropWayConfigGET;\n\tthis.setModalAnimation \t\t\t\t\t\t\t\t\t\t\t= setModalAnimation;\n\tthis.getModalAnimation\t\t\t\t\t\t\t\t\t\t\t= getModalAnimation;\n\tthis.configuration\t\t\t\t\t\t\t\t\t\t\t\t\t= _configuration;\n\tthis.getEnabledControls \t\t\t\t\t\t\t\t\t\t= getEnabledControls;\n\tthis.disableControl\t\t\t\t\t\t\t\t\t\t\t\t\t= disableControl;\n\tthis.enableControl\t\t\t\t\t\t\t\t\t\t\t\t\t= enableControl;\n\t// this.setLanguage\t\t\t\t= setLanguage;\n\t// this.getCurrentLanguage\t= getCurrentLanguage;\n\tthis.showPreviewPanel\t\t\t\t\t\t\t\t\t\t\t\t= showPreviewPanel;\n\tthis.showPreviewModels\t\t\t\t\t\t\t\t\t\t\t= showPreviewModels;\t\n\n\tthis.setListItemCssClass \t\t\t\t\t\t\t\t\t\t= setListItemCssClass;\n\tthis.getItemsNotTocount\t \t\t\t\t\t\t\t\t\t\t= getItemsNotTocount;\n\tthis.setItemsNotTocount \t\t\t\t\t\t\t\t\t\t= setItemsNotTocount;\n\tthis.addControlToDragDropPresentationModel \t= addControlToDragDropPresentationModel;\n\tthis.getDragDropPresentationModel \t\t\t\t\t= getDragDropPresentationModel;\n\n\tfunction setListItemCssClass(fromConfig) {\n\t\t_listDragDropItemCssClasses = [].concat(fromConfig);\n\t}\n\n\tfunction getItemsNotTocount() {\n\t\treturn _itemsNotToCountFoReal;\n\t}\n\n\tfunction setItemsNotTocount(fromConfig) {\n\t\t_itemsNotToCountFoReal = angular.copy(fromConfig);\t\n\t}\n\n\t//set default config\n\tfunction defaultConfig() {\n\t\tlet _defaultConfiguration = {\n\t\t\tmodalAnimated : false\n\t\t};\n\t\treturn _defaultConfiguration;\n\t}\n\n\tfunction addControlToDragDropPresentationModel(controlToAdd, groupToAdd) {\n if (typeof controlToAdd !== 'undefined' &&\n typeof groupToAdd !== 'undefined') {\n addToGroupControl(controlToAdd, groupToAdd);\n }\t\t\n\t}\n\n function getDragDropPresentationModel(){\n return _dragDropPresentationModel;\n }\t\n\t\n\t//show preview panel by default\n\tfunction getDefaultshowPreviewPanel(){\n\t\treturn true;\n\t}\t\n\t\n\t//show preview data, fields models in preview panel\n\tfunction getDefaultShowPreviewModel(){\n\t\treturn true;\n\t}\t\n\t\n\t// function getCurrentLanguage(){\n\t// \t\treturn _currentLanguage;\n\t// }\t\n\t\n\t//list of controls\n\tfunction controlsList(){\n\t\tlet controls = [\n\t\t\t{name: 'empty', \t\t\t\t\tenabled: true},\n\t\t\t{name: 'Header', \t\t\t\t\tenabled: true},\n\t\t\t{name: 'Subtitle', \t\t\t\tenabled: true},\n\t\t\t{name: 'TextInput', \t\t\tenabled: true},\n\t\t\t{name: 'Password', \t\t\t\tenabled: true},\n\t\t\t{name: 'Email', \t\t\t\t\tenabled: true},\n\t\t\t{name: 'Date', \t\t\t\t\t\tenabled: true},\n\t\t\t{name: 'Texarea',\t \t\t\t\tenabled: true},\n\t\t\t{name: 'RichTextEditor', \tenabled: true},\n\t\t\t{name: 'Radio', \t\t\t\t\tenabled: true},\n\t\t\t{name: 'Checkbox', \t\t\t\tenabled: true},\n\t\t\t{name: 'BasicSelect', \t\tenabled: true},\n\t\t\t{name: 'GroupedSelect', \tenabled: true}\n\t\t];\n\t\treturn controls;\n\t}\n\t\n\tfunction showPreviewPanel(wantToShow){\n\t\tif (angular.isDefined(wantToShow)) {\n\t\t\tif(wantToShow === true) \t_showPreviewPanel \t= true;\n\t\t\tif(wantToShow === false) \t_showPreviewPanel \t= false;\n\t\t}\n\t}\n\t\n\tfunction showPreviewModels(wantToShow){\n\t\tif (angular.isDefined(wantToShow)) {\n\t\t\tif(wantToShow === true) \t_showPreviewModels \t= true;\n\t\t\tif(wantToShow === false) \t_showPreviewModels \t= false;\n\t\t}\t\t\t\t\n\t}\t\t\n\t\n\t// //language : set default to english\n\t// function getDefaultLanguage(){\n\t// \tlet lang = 'en';\n\t// \treturn lang;\n\t// }\n\t\n\t// function setDefaultLanguage(){\n\t// \t_currentLanguage = _defaultLanguage;\n\t// \t$translateProvider.preferredLanguage(_currentLanguage);\n\t// \treturn _currentLanguage;\n\t// }\t\n\t\n\t// function setLanguage(language){\t\t\t\t\n\t// \tif (angular.isString(language)) {\n\t// \t\t_currentLanguage = language;\n\t// \t\t$translateProvider.preferredLanguage(language);\n\t// \t}else{\n\t// \t\tsetDefaultLanguage();\n\t// \t}\n\t// }\n\t\n\t// function initDefaultLanguage(){\n\t// \t$translateProvider.useSanitizeValueStrategy('escape'); \t//security : Enable escaping of HTML\n\t// \t$translateProvider.fallbackLanguage(_defaultLanguage);\t//fallback language to default language\n\t// \t$translateProvider.preferredLanguage(_defaultLanguage);\n\t// \treturn _defaultLanguage;\n\t// }\n\t\n\tfunction getEnabledControls() {\n\t\treturn _controlsList;\n\t}\n\t\n\tfunction disableControl(controlName) {\n\t\tif (angular.isString(controlName)) {\n\t\t\tangular.forEach(_controlsList, (aControl) => {\n\t\t\t\tif (aControl.name === controlName) aControl.enabled = false;\n\t\t\t});\t\t\t\t\t\t\n\t\t}\n\t}\n\t\n\tfunction enableControl(controlName) {\n\t\tif (angular.isString(controlName)) {\n\t\t\tangular.forEach(_controlsList, (aControl) => {\n\t\t\t\tif (aControl.name === controlName) aControl.enabled = true;\n\t\t\t});\t\t\t\t\t\t\n\t\t}\t\t\t\t\n\t}\t\t\t\t\t\t\n\t\n\tfunction setModalAnimation(flagConfig) {\n\t\tlet valueToApply = (flagConfig === true) ? \n\t\t\t\t\t\t\t\t\t\t\t\t\tflagConfig \n\t\t\t\t\t\t\t\t\t\t\t\t: (flagConfig === false ? \n\t\t\t\t\t\t\t\t\t\t\t\t\t\tflagConfig \n\t\t\t\t\t\t\t\t\t\t\t\t\t: _configuration.modalAnimated);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t_configuration.modalAnimated = valueToApply;\n\t}\n\t\n\tfunction getModalAnimation() {\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\treturn _configuration.modalAnimated;\n\t}\t\t\n\t\n\t\n\t//$get implementation :\n\t// easyFormDragDropWayConfigGET.$inject = ['$translate'];\n\t// function easyFormDragDropWayConfigGET($translate){\n\teasyFormDragDropWayConfigGET.$inject = [];\n\tfunction easyFormDragDropWayConfigGET(){\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\tlet service = {\n\t\t\tsetModalAnimation \t\t\t\t\t\t\t\t\t: setModalAnimationFct,\n\t\t\tgetModalAnimationValue \t\t\t\t\t\t\t: getModalAnimationValue,\n\t\t\tgetListEnabledControl\t\t\t\t\t\t\t\t: getListEnabledControl,\n\t\t\t// setLanguage \t\t\t\t\t\t\t\t\t\t\t: switchLanguage,\n\t\t\t// getCurrentLanguage\t\t\t\t\t\t\t\t: getCurrentLanguage,\n\t\t\tisPreviewPanelVisible\t\t\t\t\t\t\t\t: isPreviewPanelVisible,\n\t\t\tarePreviewModelsVisible\t\t\t\t\t\t\t: arePreviewModelsVisible,\n\t\t\t\n\t\t\tgetListItemCssClass \t\t\t\t\t\t\t\t: getListItemCssClass,\n\t\t\tgetItemsNotToCount \t\t\t\t\t\t\t\t\t: getItemsNotToCount,\n\t\t\tgetItemCssDependingNumberItemsInRow : getItemCssDependingNumberItemsInRow,\n\t\t\tgetDistinctItemCssClass \t\t\t\t\t\t: getDistinctItemCssClass,\n\t\t\tgetDragDropConfigModel \t\t\t\t\t\t\t: getDragDropConfigModel,\n\t\t\tgetDragDropPresentationModel \t\t\t\t: getDragDropPresentationModel,\n\t\t\tsetDragDropConfigContainerDecorationCollapse : setDragDropConfigContainerDecorationCollapse\n\t\t};\n\t\treturn service;\n\t\t\n\t\tfunction getDragDropPresentationModel() {\n\t\t\treturn _dragDropPresentationModel;\n\t\t}\n\n\t\tfunction setDragDropConfigContainerDecorationCollapse(dragDropConfigModel, indexValue, isCollapsedBool) {\n if (typeof indexValue !== 'undefined' &&\n\t\t\t\t\ttypeof isCollapsedBool !== 'undefined') {\n if (indexValue === parseInt(indexValue, 10)) {\n dragDropConfigModel.containerConfig.decoration[indexValue].isCollapsed = isCollapsedBool;\n }\n }\n return true;\n\t\t}\n\t\n\n\t\tfunction getDragDropConfigModel() {\n\t\t\treturn _dragDropConfigModel;\n\t\t}\n\n\t\tfunction getDistinctItemCssClass() {\n let distinctCssClass = [];\n angular.forEach(_listDragDropItemCssClasses, (valueRef)=>{\n\n let cssClassRef = valueRef.cssClass;\n\n if (distinctCssClass.length === 0){\n distinctCssClass.push(cssClassRef);\n } else {\n let canAdd = true;\n angular.forEach(distinctCssClass, (valueProc)=>{\n let cssClassProc = valueProc;\n if (cssClassRef === cssClassProc) {\n canAdd = false;\n }\n });\n if (canAdd) distinctCssClass.push(cssClassRef);\n }\n });\n return distinctCssClass;\t\t\t\n\t\t}\n\n\t\tfunction getItemCssDependingNumberItemsInRow(numberOfItems) {\n if(typeof numberOfItems !== 'undefined'){\n let classToReturn = '';\n for (let i = _listDragDropItemCssClasses.length - 1; i >= 0; i--) {\n if (_listDragDropItemCssClasses[i].numberItemPerRow === numberOfItems) {\n classToReturn = _listDragDropItemCssClasses[i].cssClass; \n }\n }\n return classToReturn;\n }else{\n return '';\n }\t\t\t\n\t\t}\n\n\t\tfunction getListItemCssClass() {\n\t\t\treturn _listDragDropItemCssClasses;\t\n\t\t}\n\n\t\tfunction getItemsNotToCount() {\n\t\t\treturn _itemsNotToCountFoReal;\n\t\t}\n\n\t\tfunction getModalAnimationValue(){\n\t\t\treturn _configuration.modalAnimated;\n\t\t}\t\t\t\t\n\t\t\n\t\tfunction setModalAnimationFct(value){\n\t\t\tsetModalAnimation(value);\n\t\t}\n\t\t\n\t\tfunction getListEnabledControl(){\n\t\t\treturn angular.copy(_controlsList);\n\t\t}\n\t\t\n\t\t// function switchLanguage(language){\n\t\t// \tif (angular.isString(language)) {\n\t\t// \t\t_currentLanguage = language;\n\t\t// \t\t$translate.use(language);\n\t\t// \t}else{\n\t\t// \t\tsetDefaultLanguage();\n\t\t// \t}\n\t\t// }\t\t\t\t\t\n\n\t\tfunction isPreviewPanelVisible(){\n\t\t\treturn _showPreviewPanel;\n\t\t}\n\t\t\n\t\tfunction arePreviewModelsVisible(){\n\t\t\treturn _showPreviewModels;\n\t\t}\t\t\t\t\n\t}\n\n /**\n * addToGroupControl : add control to _dragDropPresentationModel\n * @param {[type]} thisControl : control to add\n * @param {[type]} thisGroup : groupId wher this control should be added\n *\n * NOTE : if _dragDropPresentationModel wrong initialized it will create list of group conforming to \n * configModel\n */\n function addToGroupControl(thisControl, thisGroup){\n /**\n * search group if already exists\n */\n if (_dragDropPresentationModel[0].length > 0) {\n /**\n * case when _dragDropConfigModel.containerConfig.decoration.length is > to _dragDropPresentationModel[0].length\n *\n * for instance : initialization _dragDropPresentationModel[0] in between\n */\n if (_dragDropPresentationModel[0].length < _dragDropConfigModel.containerConfig.decoration.length) {\n let missingGroupNumber = _dragDropConfigModel.containerConfig.decoration.length - _dragDropPresentationModel[0].length;\n\n for (let i = 0; i < missingGroupNumber; i++) {\n _dragDropPresentationModel[0].push([]);\n }\n }\n /**\n * push control to right index \n * (deduced by _dragDropConfigModel.containerConfig.decoration.WhenIndex value for groupId === thisGroup)\n */\n _dragDropConfigModel.containerConfig.decoration.forEach((groupConfig)=>{\n if (thisGroup.addToGroupCtrl === groupConfig.groupId) {\n _dragDropPresentationModel[0][groupConfig.WhenIndex].push(thisControl);\n }\n });\n }else{\n /**\n * no group no control\n *\n * initialize _dragDropConfigModel.containerConfig.decoration list\n */\n _dragDropConfigModel.containerConfig.decoration.forEach(()=>_dragDropPresentationModel[0].push([]));\n /**\n * push control to right index \n * (deduced by _dragDropConfigModel.containerConfig.decoration.WhenIndex value for groupId === thisGroup)\n */\n _dragDropConfigModel.containerConfig.decoration.forEach((groupConfig)=>{\n if (thisGroup.addToGroupCtrl === groupConfig.groupId) {\n _dragDropPresentationModel[0][groupConfig.WhenIndex].push(thisControl);\n }\n }); \n }\n } \t\n\n}\n\n// easyFormDragWayConfig.$inject = ['$translateProvider'];\n\neasyFormDragWayConfig.$inject = [];\n\nexport default easyFormDragWayConfig;\n\nexport {EASY_FORM_DRAG_DROP_WAY_CONFIG_NAME};\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.provider.js","const LIST_DRAG_DROP_ITEM_CSS_CLASSES = [\n {\n cssClass : 'col-md-12', \n numberItemPerRow: 0\n },\n {\n cssClass : 'col-md-12', \n numberItemPerRow: 1\n }, \n {\n cssClass : 'col-md-6', \n numberItemPerRow: 2\n },\n {\n cssClass : 'col-md-4', \n numberItemPerRow: 3\n }\n]; \n\nconst DRAG_DROP_CONFIG_MODEL = {\n dropZoneConfig : {\n decoration : [\n {\n WhenIndex: 0,\n ApplycssClass: 'col-md-4', \n fontAwesomeIcon: 'fa fa-level-up',\n title: 'Drag control from here : '\n },\n {\n WhenIndex: 1,\n ApplycssClass: 'col-md-8', \n fontAwesomeIcon: 'fa fa-level-down',\n title: 'Drop control into here : '\n }\n ],\n verboseMode : false\n},\n containerConfig : {\n decoration : [\n {\n WhenIndex : 0,\n ApplycssClass : 'col-md-12', \n title : 'Blank : ',\n groupId : 'blank',\n isCollapsed : true \n }, \n {\n WhenIndex : 1,\n ApplycssClass : 'col-md-12', \n title : 'Headers : ',\n groupId : 'headers',\n isCollapsed : true \n },\n {\n WhenIndex : 2,\n ApplycssClass : 'col-md-12', \n title : 'Text inputs : ',\n groupId : 'inputs' ,\n isCollapsed : true\n },\n {\n WhenIndex : 3,\n ApplycssClass : 'col-md-12',\n title : 'Textareas : ',\n groupId : 'textareas',\n isCollapsed : true \n },\n {\n WhenIndex : 4,\n ApplycssClass : 'col-md-12',\n title : 'Radios : ',\n groupId : 'radios',\n isCollapsed : true \n },\n {\n WhenIndex : 5,\n ApplycssClass : 'col-md-12',\n title : 'Checkboxes : ',\n groupId : 'checkboxes',\n isCollapsed : true \n },\n {\n WhenIndex : 6,\n ApplycssClass : 'col-md-12',\n title : 'Selects : ',\n groupId : 'selects',\n isCollapsed : true \n } \n ],\n verboseMode : false, \n collapseEnabled : true,\n collapseCtrl : [\n {\n atIndex : 0,\n collapse : true\n },\n {\n atIndex : 1,\n collapse : true\n }\n ] \n },\n itemConfig : {\n verboseMode : false\n } \n}; \n\nconst DRAG_DROP_PRESENTATION_MODEL = [\n //1 column here is control selection column\n [],\n [\n //empty 1st line at initialisation\n []\n ]\n];\n\nconst ITEMS_NOT_TO_COUNT_FOR_REAL = {\n //placeholder : '',\n itemBeingDragged : ''\n};\n\nexport {\n LIST_DRAG_DROP_ITEM_CSS_CLASSES,\n DRAG_DROP_CONFIG_MODEL,\n DRAG_DROP_PRESENTATION_MODEL,\n ITEMS_NOT_TO_COUNT_FOR_REAL\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.provider.helpers.js","/* global angular */\n\n ///////////////////////////////////////////////////////////////////////\n // TODO :\n // - check no use methods that come from step way and delete if not needed\n // - check other TODO (a lot of fixes are needed)\n ///////////////////////////////////////////////////////////////////////\n\nimport {\n initTabModel,\n initIhmModel\n} from './edaDragDropWay.edaDragdropWayEasyFormGen.controller.helpers.js';\n\nconst DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER = 'edaDragDropWayEasyFormGenCtrl';\nconst DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS = 'vm';\n\n\nclass edaDragDropWayEasyFormGenCtrl{\n\n constructor(\n $scope,\n easyFormGenVersion,\n $filter,\n $anchorScroll,\n toaster,\n $timeout,\n $log,\n formFieldManage,\n controllerModalProxy,\n dragDropItemDecorationService,\n ddModelConfModelProxyService,\n ddItemRightClickedManager,\n easyFormDragWayConfig\n ){\n this.$scope = $scope;\n this.easyFormGenVersion = easyFormGenVersion;\n this.$filter = $filter;\n this.$anchorScroll = $anchorScroll;\n this.toaster = toaster;\n this.$timeout = $timeout;\n this.$log = $log;\n this.formFieldManage = formFieldManage;\n this.controllerModalProxy = controllerModalProxy;\n this.dragDropItemDecorationService = dragDropItemDecorationService;\n // this.dragDropConfig = dragDropConfig;\n this.ddModelConfModelProxyService = ddModelConfModelProxyService;\n this.ddItemRightClickedManager = ddItemRightClickedManager;\n this.easyFormDragWayConfig = easyFormDragWayConfig;\n\n this.init();\n }\n\n\n init(){\n this.easyFormGeneratorVERSION = this.easyFormGenVersion;\n this.tab = initTabModel(this.easyFormDragWayConfig.isPreviewPanelVisible(), this.easyFormDragWayConfig.arePreviewModelsVisible());\n this.returnSaveEvent = false;\n this.dataModel = {}; //was vm.model in ES5 version\n this.wfFormFields = [];\n this.wfFormFieldsOnlyNeededProperties = [];\n this.ihm = initIhmModel();\n this.easyFormDragDropProperties = this.easyFormDragWayConfig.getDragDropConfigModel();\n this.dragDropModel = [].concat(this.easyFormDragWayConfig.getDragDropPresentationModel());\n this.numberOfColumns = 1;\n this.MaxNumberOfColumns = 3;\n this.MinNumberOfColumns = 1;\n this.configuration = {};\n this.animationsEnabled = this.easyFormDragWayConfig.getModalAnimationValue();\n this.editPanelModel = { toggle : false };\n this.debugProxyModel = this.controllerModalProxy.ProxyModel;\n this.model = [];\n\n this.formFieldManage.initConfigurationEditFromScratch(this.configuration , false);\n this.controllerModalProxy.initProxyModel();\n }\n\n\n collapseAllGroupControl(allExceptThisGroupIndex){\n angular.forEach(this.easyFormDragDropProperties.containerConfig.decoration, (value)=>{\n if (value.WhenIndex !== allExceptThisGroupIndex) this.easyFormDragWayConfig.setDragDropConfigContainerDecorationCollapse(this.easyFormDragDropProperties, value.WhenIndex, true);\n });\n }\n\n\n onSubmit() {\n this.toaster.pop({\n type : 'info',\n timeout : 2000,\n title : 'should save data model if it were not a static example',\n body : 'data :' + this.$filter('json')(this.dataModel, 4),\n showCloseButton : true\n });\n }\n\n\n resetToZeroModel(){\n this.configuration.activeLine = 1;\n if (this.configuration.lines.length > 1) this.configuration.lines.splice(1, this.configuration.lines.length - 2);\n return this.countConfigurationModelLines();\n }\n\n //TO CHECK if does not come from step way :\n countConfigurationModelLines(){\n return this.configuration.lines.length;\n }\n\n // //TO CHECK THEN TO DELETE : should come from step way...\n // setActiveLineNumber(lineNumber){\n // if (lineNumber <= this.countConfigurationModelLines()) this.configuration.activeLine = lineNumber;\n // }\n\n// //TO CHECK THEN TO DELETE : should come from step way...\n// upThisLine(indexLine){\n// if (indexLine > -1) {\n// if (this.configuration.lines[indexLine - 1]) {\n// let currentLineObj = this.configuration.lines[indexLine];\n// this.configuration.lines.splice(indexLine , 1);\n// this.configuration.lines.splice((indexLine - 1), 0, currentLineObj);\n// this.configuration.activeLine = 1;\n// }\n// }\n//\n// this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n// this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n// }\n\n // //TO CHECK THEN TO DELETE : should come from step way...\n // downThisLine(indexLine){\n // if (indexLine > -1) {\n // if (this.configuration.lines[indexLine + 1]) {\n // let currentLineObj = this.configuration.lines[indexLine];\n // this.configuration.lines.splice(indexLine , 1);\n // this.configuration.lines.splice((indexLine + 1), 0, currentLineObj);\n // this.configuration.activeLine = 1;\n // }\n // }\n // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n // }\n\n// //TO CHECK THEN TO DELETE : should come from step way...\n// removeThisLine(index){\n// if (index > -1) {\n// if (this.configuration.lines.length > 1) {\n// if (this.configuration.activeLine === index + 1) this.configuration.activeLine = 1;\n// this.configuration.lines.splice(index, 1);\n// }else{\n// this.$timeout(()=>{\n// this.toaster.pop({\n// type : 'warning',\n// title : 'Last line' ,\n// body : 'Can\\'t delete the last line',\n// showCloseButton : true\n// });\n// }, 100);\n// }\n// this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n// this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n// }\n// }\n\n // //TO CHECK THEN TO DELETE : should come from step way...\n // increaseNumberOfColumns(){\n // if (this.configuration.lines[this.configuration.activeLine -1].columns.length < this.MaxNumberOfColumns) {\n // let newNumberOfColumns = this.configuration.lines[this.configuration.activeLine -1].columns.push(initColumnTemplate());\n // this.configuration.lines[this.configuration.activeLine -1].columns[newNumberOfColumns - 1].numColumn = newNumberOfColumns;\n // }\n // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n // }\n\n // //TO CHECK THEN TO DELETE : should come from step way...\n // decreaseNumberOfColumns(indexLine, indexColumn){\n // if (this.configuration.lines[this.configuration.activeLine -1].columns.length > 1) {\n // this.configuration.lines[this.configuration.activeLine -1].columns.splice(this.configuration.lines[this.configuration.activeLine -1].columns.length -1, 1);\n // }\n // this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n // }\n\n saveThisForm() {\n if (typeof this.configuration.formName === 'undefined') {\n this.toaster.pop({\n type : 'warning',\n timeout : 2000,\n title : 'Form name is undefined',\n body : 'Form has not been saved.',\n showCloseButton : true\n });\n return false;\n }\n if (this.configuration.formName === '') {\n this.toaster.pop({\n type : 'warning',\n timeout : 2000,\n title : 'Form name is required',\n body : 'Form has not been saved.',\n showCloseButton : true\n });\n return false;\n }\n this.toaster.pop({\n type : 'wait',\n timeout : 10000,\n title : 'Form is being saved',\n body : 'Wait.',\n showCloseButton : true\n });\n this.toaster.clear();\n this.returnSaveEvent = true;\n return true;\n }\n\n\n dragoverCallbackContainer(parentparentIndex, parentIndex, index){\n //prevent container in layout column to be drag to control select contianer\n if (index === 0) return false;\n return true;\n }\n\n\n dropCallback(event, index, item, external, type, allowedType) {\n if (external) {\n if (allowedType === 'itemType' && !item.label) return false;\n if (allowedType === 'containerType' && !angular.isArray(item)) return false;\n }\n //set a timeout befire binding since ddModel may not be called when already full updated\n let timerRefreshDDToConfig = this.$timeout(()=>{\n this.configuration = angular.copy(this.ddModelConfModelProxyService.refreshAllConfigurationFromDragAndDropModel(this.configuration, this.dragDropModel));\n this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n this.ddModelConfModelProxyService.refreshControlsKeys(this.configuration, this.dragDropModel);\n }, 200);\n this.$scope.$on('$destroy', ()=>this.$timeout.cancel(timerRefreshDDToConfig));\n return item;\n }\n\n dndItemMoved(parentParentIndex, parentIndex, itemIndex){\n //prevent item from first container to disapear when dropped on other container\n if (parentParentIndex > 0) this.dragDropModel[parentParentIndex][parentIndex].splice(itemIndex, 1);\n }\n\n dragoverCallbackItems(ParentParentIndex, parentIndex){\n //prevent items in layout column to be drag to control select\n if (parentIndex === 0) return false;\n return true;\n }\n\n //TODO : will replace in html : dnd-disable-if=\"items.length > 2\"\n disableItemDropIf(){\n\n }\n\n dropCallbackItems(event, index, realIndex, parentIndex, parentParentIndex, parentParentParentIndex, item, external, type, allowedType){\n if (external) {\n if (allowedType === 'itemType' && !item.label) return false;\n if (allowedType === 'containerType' && !angular.isArray(item)) return false;\n }\n //set a timeout before binding since ddModel may not be called when already full updated\n let timerRefreshDDToConfig = this.$timeout(()=>{\n this.configuration = angular.copy(this.ddModelConfModelProxyService.refreshAllConfigurationFromDragAndDropModel(this.configuration, this.dragDropModel));\n this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n // refresh controls key in dragDrop Model to persist already exists controls between refreshes when item drop events\n this.ddModelConfModelProxyService.refreshControlsKeys(this.configuration, this.dragDropModel);\n }, 200);\n // add/set rightCliked property to false (will help edaRightClick directive)\n this.ddItemRightClickedManager.setUnRightClicked(item);\n // timerRefreshDDToConfig timer destruction\n this.$scope.$on('$destroy', ()=>this.$timeout.cancel(timerRefreshDDToConfig));\n return item;\n }\n\n\n saveFromEditPanel() {\n /**\n * TODO :\n * should be called from edit panel\n *\n * AND\n *\n * should call all these methods\n *\n * need to get :\n *\n * - line index\n * - column index\n * - basicSelectRowCollection (from edpitpanelcontroller) --> maybe in controllerModalProxy service\n * - groupedSelectRowCollection (from edpitpanelcontroller) --> maybe in controllerModalProxy service\n * - radioRowCollection (from edpitpanelcontroller) --> maybe in controllerModalProxy service\n */\n this.controllerModalProxy.bindSpecialCtrlTemporyModelsToProxyModel();\n //save config to control\n //controllerModalProxy.applyConfigToSelectedControl(self.proxyModel);\n //return current model to parent controller :\n\n //update configuration model and formly model\n this.controllerModalProxy.bindConfigurationModelFromProxyModel(this.controllerModalProxy.getEditPanelModelLineIndex(), this.controllerModalProxy.getEditPanelModelColumnIndex(), this.configuration);\n this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n this.ddModelConfModelProxyService.refreshControlsKeys(this.configuration, this.dragDropModel);\n this.controllerModalProxy.setEditPanelModelToggle(false);\n this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();\n this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel);\n }\n\n\n closeEditPanel(){\n // reset all rightClicked control properties to false\n this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel);\n\n /**\n * TODO : refresh configuration model\n * uncomment after update these next 3 lines\n *\n * NOTE : indexLine AND numcolumn should be stored in service and\n * updated when togle sidepanel\n */\n //this.controllerModalProxy.bindConfigurationModelFromProxyModel(indexLine, numcolumn, modalAddCtrlModel, this.configuration);\n //this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n //this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n\n this.controllerModalProxy.setEditPanelModelToggle(false);\n this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();\n }\n\n\n setRightClicked(previousState, item){\n item.rightCliked = true;\n }\n\n toggleEditPanel(event, lineIndex, colIndex, item){\n this.ddItemRightClickedManager.resetAllDragDropItemSelectedState(this.dragDropModel);\n // already opened (could be another control edit)\n if (this.controllerModalProxy.getEditPanelModelToggle()) {\n // -> immediate close and refresh configuration model + formly model\n this.controllerModalProxy.setEditPanelModelToggle(false);\n this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();\n\n //TODO : for refreshing\n //this.controllerModalProxy.bindConfigurationModelFromProxyModel(indexLine, numcolumn, modalAddCtrlModel, this.configuration);\n //this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n //this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n\n // check if new control right clicked otherwise just toggle side panel\n if (typeof this.controllerModalProxy.getEditPanelModelLineIndex() !== 'undefined' &&\n typeof this.controllerModalProxy.getEditPanelModelColumnIndex() !== 'undefined' &&\n typeof this.controllerModalProxy.getEditPanelModelControl() !== 'undefined') {\n if (this.controllerModalProxy.getEditPanelModelLineIndex() === lineIndex &&\n this.controllerModalProxy.getEditPanelModelColumnIndex() === colIndex &&\n angular.equals(this.controllerModalProxy.getEditPanelModelControl(), item)) {\n //console.info('already opened for SAME ctrl : so close - no re-open');\n } else {\n //console.info('already opened for DIFFERENT ctrl : so re-open');\n item.rightCliked = true;\n // set a timeout before re-opening, 500ms is ok for a ps-size=\"400px\"\n let timerCloseOpenedEditPanel = this.$timeout(()=>{\n this.controllerModalProxy.setEditPanelModelLineIndex(lineIndex);\n this.controllerModalProxy.setEditPanelModelColumnIndex(colIndex);\n this.controllerModalProxy.setEditPanelModelControl(item);\n // control model passed to Service : controllerModalProxy\n this.controllerModalProxy.setProxyModelFromConfigurationSelection(this.configuration, lineIndex, colIndex);\n this.controllerModalProxy.setEditPanelModelToggle(true);\n this.$scope.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();\n }, 200);\n this.$scope.$on('$destroy', ()=>this.$timeout.cancel(timerCloseOpenedEditPanel));\n }\n }\n } else {\n // previous state = closed = immediate open\n // console.info('NOT already opened : so open');\n item.rightCliked = true;\n\n this.controllerModalProxy.setEditPanelModelLineIndex(lineIndex);\n this.controllerModalProxy.setEditPanelModelColumnIndex(colIndex);\n this.controllerModalProxy.setEditPanelModelControl(item);\n // control model passed to Service : controllerModalProxy\n this.controllerModalProxy.setProxyModelFromConfigurationSelection(this.configuration, lineIndex, colIndex);\n this.controllerModalProxy.setEditPanelModelToggle(true);\n this.editPanelModel.toggle = this.controllerModalProxy.getEditPanelModelToggle();\n }\n\n // console.info('after toggleLeftPanel check :');\n // console.dir({\n // 'this.editPanelModel' : angular.copy(this.editPanelModel),\n // 'controllerModalProxy.editPanelModel' : angular.copy(this.controllerModalProxy.editPanelModel)\n // });\n }\n\n // // refreshModels : to call after drag and drop events\n // refreshModels(){\n // this.$timeout(()=>{\n // console.info('refreshing models');\n // formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n // }, 10);\n // }\n\n\n removeThisLine(lineIndex){\n this.dragDropModel[1].splice(lineIndex,1);\n }\n\n\n //TODO : to fix\n addNewline(){\n // re-render formfield\n // TODO : to fix\n this.formFieldManage.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n }\n\n insertNewLine(){\n this.addNewline();\n this.dragDropModel[1].push([]);\n }\n\n\n\n\n}\n\nedaDragDropWayEasyFormGenCtrl.$inject = [\n '$scope',\n 'easyFormGenVersion',\n '$filter',\n '$anchorScroll',\n 'toaster',\n '$timeout',\n '$log',\n 'formFieldManage',\n 'controllerModalProxy',\n 'dragDropItemDecorationService',\n 'ddModelConfModelProxyService',\n 'ddItemRightClickedManager' ,\n 'easyFormDragWayConfig'\n];\n\nexport default edaDragDropWayEasyFormGenCtrl;\n\nexport {\n DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER,\n DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.controller.js","/* global angular */\nconst DEBUG_MODEL = {\n\tshowDebug : false,\n\tconfigurationModelNumberofLines : 1 \n};\nconst initDebugModel = () => angular.copy(DEBUG_MODEL);\n\n\n\nconst DEFAULT_TAB_MODEL = {\n\teditTab\t\t\t: {\n\t\tactive : true\n\t},\n\tpreviewTab \t: {\n\t\tactive \t\t\t\t: false,\n\t\ttabVisible \t\t: true,\n\t\tmodelsVisible : true\n\t}\n};\n\nconst initTabModel = (isPreviewPanelVisible, arePreviewModelsVisible) => {\n\tlet _tabModel = angular.copy(DEFAULT_TAB_MODEL);\n\tangular.extend(_tabModel.previewTab, {\n\t\ttabVisible \t\t: isPreviewPanelVisible,\n\t\tmodelsVisible : arePreviewModelsVisible\t\t\n\t});\n\treturn _tabModel;\n};\n\n\nconst COLUMN_TEMPLATE = {\n\tnumColumn\t\t: -1,\n\texist\t\t\t\t:true, \n\tcontrol\t\t\t: {\n\t\ttype\t\t:'none',\n\t\tkey\t\t\t: 'none',\n\t\tsubtype\t: 'none'\n\t\t// templateOptions: {\n\t\t// label: 'none',\n\t\t// placeholder: 'none',\n\t\t// required: false,\n\t\t// description: 'Descriptive text'\n\t\t// }\n\t}\n}; \nconst initColumnTemplate = () => angular.copy(COLUMN_TEMPLATE);\n\n\nconst LINE_TEMPLATE = {\n\tline:-1, \n\tactiveColumn : 1,\n\tcolumns: [\n\t\t{ \n\t\t\tnumColumn: 1,\n\t\t\texist:true, \n\t\t\tcontrol: {\n\t\t\t\ttype:'none',\n\t\t\t\tkey: 'none'\n\t\t\t\t// templateOptions: {\n\t\t\t\t// label: 'none',\n\t\t\t\t// placeholder: 'none',\n\t\t\t\t// required: false,\n\t\t\t\t// description: 'Descriptive text'\n\t\t\t\t// }\n\t\t\t\t}\n\t\t\t}\n\t\t]\n};\nconst initLineTemplate = () => angular.copy(LINE_TEMPLATE);\n\n\nconst DEFAULT_IHM_MODEL = {\n\tpreview : {\n\t\t\tformlyModelViewExpanded \t\t\t: true,\n\t\t\tformlyFieldsViewExpanded \t\t\t: true,\n\t\t\tcustomizeFormButtonsExpanded \t: true,\n\t\t\tsaveThisFormExpanded \t\t\t\t\t: true \n\t}\n};\n\n\nconst initIhmModel = () => angular.copy(DEFAULT_IHM_MODEL);\n\nexport {\n\tinitDebugModel,\n\tinitTabModel,\n\tinitColumnTemplate,\n\tinitLineTemplate,\n\tinitIhmModel\n};\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.controller.helpers.js","/* global angular */\n\n\n//TODO : to bindToController\n//-> then angular 1.4+ will be required...\n//-> check methot to refactor inside rag drop way then common step way and drag drop way\n\nimport edaDragDropWayEasyFormGenDirectiveTemplate \tfrom './edaDragDropWay.edaDragdropWayEasyFormGen.template.html';\nimport {\n\tDRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER,\n\tDRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS\n} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './edaDragDropWay.edaDragdropWayEasyFormGen.controller';\n\n\nconst EDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE = 'edaDragdropWayEasyFormGen';\n\nfunction edaDragdropWayEasyFormGen(\n\t$timeout, \n\tformFieldManage,\n\tddModelConfModelProxyService,\n\t// dragDropConfig,\n\teasyFormDragWayConfig){\n\t\n\tlet directive = {\n\t\trestrict \t\t\t: 'E',\n\t\ttemplate\t\t\t: edaDragDropWayEasyFormGenDirectiveTemplate,\n\t\tscope \t\t\t\t: {\n\t\t\tedaEasyFormGeneratorModel : '=',\n\t\t\tedaSaveFormEvent : '&edaSaveFormEvent'\t\t\t\n\t\t},\n\t\tcontroller \t\t: DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLER,\n\t\tcontrollerAs \t: DRAG_DROP_WAY_EASY_FORM_GEN_CONTROLLERAS,\n\t\treplace \t\t\t: false,\t\t\n\t\tlink\t\t\t\t\t: linkFct\n\t};\n\treturn directive;\n\t\n\t\n\t\n\t\n\tfunction linkFct(scope){ \n\t\t// watch \"scope.easyFormGeneratorModel\"\n\t\tscope.$watch(()=>scope.edaEasyFormGeneratorModel, ()=>loadExistingConfigurationModel(), true);\n\n\t\t// watch \"scope.returnSaveEvent\"\" = catch saving form event \n\t\tscope.$watch(()=>scope.returnSaveEvent, (newValue)=>{\n\t\t\tif (newValue === true) {\n\t\t\t\tlet _easyFormGeneratorModel = {\n\t\t\t\t\tformName \t\t\t\t: scope.vm.configuration.formName,\n\t\t\t\t\tbtnSubmitText \t\t\t\t: scope.vm.configuration.submitButtonText,\n\t\t\t\t\tbtnCancelText \t\t\t\t: scope.vm.configuration.cancelButtonText,\n\t\t\t\t\tedaFieldsModel \t\t\t\t: scope.vm.configuration.lines,\n\t\t\t\t\t//just as test\n\t\t\t\t\tedaFieldsModelStringified : angular.toJson(scope.vm.configuration.lines),\n\t\t\t\t\tformlyFieldsModel \t\t\t\t: scope.vm.wfFormFieldsOnlyNeededProperties,\n\t\t\t\t\tdataModel \t\t\t\t: scope.vm.dataModel\n\t\t\t\t};\n\t\t\t\tscope.edaSaveFormEvent({\n\t\t\t\t\tedaEasyFormGeneratorModel : _easyFormGeneratorModel\n\t\t\t\t});\n\t\t\t\t//back to false, waiting next save event\n\t\t\t\tscope.returnSaveEvent = false;\n\t\t\t} \n\t\t});\t\n\n\n\t\tfunction returnAttributeConfigurationLinesIfNotEmpty(){\n\t\t\tlet edaEasyFormGeneratorModelToReturn = (\n\t\t\t\tangular.isArray(scope.edaEasyFormGeneratorModel.edaFieldsModel) ? ( \n\t\t\t\t\tscope.edaEasyFormGeneratorModel.edaFieldsModel.length > 0 ? \n\t\t\t\t\t\tscope.edaEasyFormGeneratorModel.edaFieldsModel \n\t\t\t\t\t: emptyEdaFieldsModel()\n\t\t\t\t\t) \n\t\t\t\t: emptyEdaFieldsModel()\n\t\t\t);\n\t\t\treturn edaEasyFormGeneratorModelToReturn; \n\t\t}\n \n\t\t/**\n\t\t\t* empty fields model : to display at least an empty line\n\t\t\t* otherwise would look like ugly empty line like it were a bug\n\t\t\t*/\n\t\tfunction emptyEdaFieldsModel(){\n\t\t\tlet emptyModel = [\n\t\t\t\t{\n\t\t\t\t\t'line'\t\t\t\t\t: 1,\n\t\t\t\t\t'activeColumn'\t: 1,\n\t\t\t\t\t'columns'\t\t\t\t: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'numColumn'\t: 1,\n\t\t\t\t\t\t\t'exist'\t\t\t: true,\n\t\t\t\t\t\t\t'control'\t\t: {\n\t\t\t\t\t\t\t\t'type'\t: 'none',\n\t\t\t\t\t\t\t\t'key'\t\t: 'none'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t];\n\t\t\treturn emptyModel;\n\t\t}\n\n\t\tfunction returnAttributeDataModelIfNotEmpty(){\n\t\t\tlet dataModelToReturn = (\n\t\t\t\tangular.isArray(scope.edaEasyFormGeneratorModel.dataModel) ? ( \n\t\t\t\t\tscope.edaEasyFormGeneratorModel.dataModel.length > 0 ? \n\t\t\t\t\tscope.edaEasyFormGeneratorModel.dataModel \n\t\t\t\t\t: []\n\t\t\t\t\t) \n\t\t\t\t: []\n\t\t\t);\n\t\t\treturn dataModelToReturn; \n\t\t} \n \n \n\t\tfunction loadExistingConfigurationModel(){\n\t\t\tif(angular.isDefined(scope.edaEasyFormGeneratorModel)){\n\t\t\t\tlet configlines = returnAttributeConfigurationLinesIfNotEmpty(); \n\t\t\t\tscope.vm.configurationLoaded = {};\n\t\t\t\tformFieldManage.bindConfigurationLines(scope.vm.configurationLoaded, configlines, false);\n\t\t\t\t//apply configuration model\n\t\t\t\tscope.vm.configuration = angular.copy(scope.vm.configurationLoaded);\n\t\t\t\t//apply ddModel\n\t\t\t\tddModelConfModelProxyService.loadDragDropModelFromConfigurationModel(scope.vm.configuration, scope.vm.dragDropModel); \n\t\t\t\tupdateConfigurationClassName(scope.vm.configuration);\n\t\t\t\tddModelConfModelProxyService.refreshControlsKeys(scope.vm.configuration, scope.vm.dragDropModel); \n\t\t\t\t//apply formly model\n\t\t\t\tformFieldManage.applyConfigurationToformlyModel(scope.vm.configuration, scope.vm.wfFormFields, scope.vm.dataModel); \n\t\t\t\tscope.vm.wfFormFieldsOnlyNeededProperties = angular.copy(scope.vm.wfFormFields);\n\t\t\t\tscope.vm.dataModel = returnAttributeDataModelIfNotEmpty(); \n\t\t\t\tscope.vm.configuration.formName = angular.isString(scope.edaEasyFormGeneratorModel.formName) ? scope.edaEasyFormGeneratorModel.formName : '';\n\t\t\t\tscope.vm.configuration.submitButtonText = angular.isString(scope.edaEasyFormGeneratorModel.btnSubmitText) ? scope.edaEasyFormGeneratorModel.btnSubmitText : 'Submit'; \n\t\t\t\tscope.vm.configuration.cancelButtonText = angular.isString(scope.edaEasyFormGeneratorModel.btnCancelText) ? scope.edaEasyFormGeneratorModel.btnCancelText : 'Cancel';\n\t\t\t} \n\t\t} \n \n \n\t\tfunction updateConfigurationClassName(configModel){\n\t\t\tangular.forEach(configModel.lines, (aline)=>{\n\t\t\t\tlet cssClassToApply = easyFormDragWayConfig.getItemCssDependingNumberItemsInRow(aline.columns.length);\n\t\t\t\tangular.forEach(aline.columns, (aControl)=> aControl.control.className = cssClassToApply); \n\t\t\t}); \n\t\t}\n\n}\t\n\t\n\t\n\t\n}\n\nedaDragdropWayEasyFormGen.$inject = [\n\t'$timeout', \n\t'formFieldManage',\n\t'ddModelConfModelProxyService',\n\t// 'dragDropConfig',\n\t'easyFormDragWayConfig'\t\n];\n\nexport default edaDragdropWayEasyFormGen;\n\nexport {\n\tEDA_DRAGDROP_WAY_EASY_FORM_GEN_DIRECTIVE\n};\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.directive.js","module.exports = \"\\n \\n
\\n
\\n \\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
2\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdnd-dragover=\\\"vm.dragoverCallbackItems($parent.$parent.$index, $parent.$index, $index, external);\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdnd-drop=\\\"vm.dropCallbackItems(event, index, $index,$parent.$index, $parent.$parent.$index, $parent.$parent.$parent.$index, item, external, type, 'itemType');\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclass=\\\"itemlist\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-content-counter\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-value-when-placeholder=\\\"dndPlaceholder\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-value-when-dragging=\\\"dndDraggingSource\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-full-model = \\\"vm.dragDropModel\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-content-counter-current-index=\\\"{{$index}}\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-content-counter-parent-index=\\\"{{$parent.$index}}\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdd-content-counter-force-css-refresh = \\\"command.forceRefresh\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tCustomize form buttons\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tDATA MODEL\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{vm.model | json}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tFIELDS MODEL (ready to save to database one)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{vm.wfFormFieldsOnlyNeededProperties | json}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tSave this form\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tsave this form\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t \\n\\t\\t\\t
\\n\\t\\t\\t
\\n \\n Easy form generator : {{vm.easyFormGeneratorVERSION}} — Erwan DATIN (MacKentoch)\\n \\n\\t\\t\\t \\n
\\n
\\n \\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/dragdropway/components/edaDragDropWayEasyFormGen/edaDragDropWay.edaDragdropWayEasyFormGen.template.html\n// module id = 83\n// module chunks = 0","import trustThis, {\n TRUST_THIS_FILTER_NAME\n} from './edaDragDropWay.trustThis.filter';\n\n\nconst TRUST_THIS_FILTER_MODULE = 'edaDragDropWay.trustThis.filter';\n\nexport default angular\n .module(TRUST_THIS_FILTER_MODULE, [])\n .filter(TRUST_THIS_FILTER_NAME, trustThis);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/common/edaTrustThisFilter/edaDragDropWay.trustThis.module.js","const TRUST_THIS_FILTER_NAME = 'trustThis';\n\nfunction trustThis($sce) {\n return (value, type) => $sce.trustAs(type || 'html', value);\n}\n\ntrustThis.$inject = [\n '$sce'\n];\n\nexport default trustThis;\n\nexport {\n TRUST_THIS_FILTER_NAME\n};\n\n\n// WEBPACK FOOTER //\n// ./src/app/dragdropway/components/common/edaTrustThisFilter/edaDragDropWay.trustThis.filter.js"],"sourceRoot":""}
\ No newline at end of file
diff --git a/static/js/eda.easyFormViewer.js b/static/js/eda.easyFormViewer.js
index 0325d19..af0ed9c 100644
--- a/static/js/eda.easyFormViewer.js
+++ b/static/js/eda.easyFormViewer.js
@@ -1,1536 +1,404 @@
-!function(e){function r(e,r,o){return 4===arguments.length?t.apply(this,arguments):void n(e,{declarative:!0,deps:r,declare:o})}function t(e,r,t,o){n(e,{declarative:!1,deps:r,executingRequire:t,execute:o})}function n(e,r){r.name=e,e in p||(p[e]=r),r.normalizedDeps=r.deps}function o(e,r){if(r[e.groupIndex]=r[e.groupIndex]||[],-1==v.call(r[e.groupIndex],e)){r[e.groupIndex].push(e);for(var t=0,n=e.normalizedDeps.length;n>t;t++){var a=e.normalizedDeps[t],u=p[a];if(u&&!u.evaluated){var d=e.groupIndex+(u.declarative!=e.declarative);if(void 0===u.groupIndex||u.groupIndex=0;a--){for(var u=t[a],i=0;ia;a++){var d=t.importers[a];if(!d.locked)for(var i=0;ia;a++){var l,s=r.normalizedDeps[a],c=p[s],v=x[s];v?l=v.exports:c&&!c.declarative?l=c.esModule:c?(d(c),v=c.module,l=v.exports):l=f(s),v&&v.importers?(v.importers.push(t),t.dependencies.push(v)):t.dependencies.push(null),t.setters[a]&&t.setters[a](l)}}}function i(e){var r,t=p[e];if(t)t.declarative?c(e,[]):t.evaluated||l(t),r=t.module.exports;else if(r=f(e),!r)throw new Error("Unable to load dependency "+e+".");return(!t||t.declarative)&&r&&r.__useDefault?r["default"]:r}function l(r){if(!r.module){var t={},n=r.module={exports:t,id:r.name};if(!r.executingRequire)for(var o=0,a=r.normalizedDeps.length;a>o;o++){var u=r.normalizedDeps[o],d=p[u];d&&l(d)}r.evaluated=!0;var c=r.execute.call(e,function(e){for(var t=0,n=r.deps.length;n>t;t++)if(r.deps[t]==e)return i(r.normalizedDeps[t]);throw new TypeError("Module "+e+" not declared as a dependency.")},t,n);c&&(n.exports=c),t=n.exports,t&&t.__esModule?r.esModule=t:r.esModule=s(t)}}function s(r){if(r===e)return r;var t={};if("object"==typeof r||"function"==typeof r)if(g){var n;for(var o in r)(n=Object.getOwnPropertyDescriptor(r,o))&&h(t,o,n)}else{var a=r&&r.hasOwnProperty;for(var o in r)(!a||r.hasOwnProperty(o))&&(t[o]=r[o])}return t["default"]=r,h(t,"__useDefault",{value:!0}),t}function c(r,t){var n=p[r];if(n&&!n.evaluated&&n.declarative){t.push(r);for(var o=0,a=n.normalizedDeps.length;a>o;o++){var u=n.normalizedDeps[o];-1==v.call(t,u)&&(p[u]?c(u,t):f(u))}n.evaluated||(n.evaluated=!0,n.module.execute.call(e))}}function f(e){if(D[e])return D[e];if("@node/"==e.substr(0,6))return y(e.substr(6));var r=p[e];if(!r)throw"Module "+e+" not present.";return a(e),c(e,[]),p[e]=void 0,r.declarative&&h(r.module.exports,"__esModule",{value:!0}),D[e]=r.declarative?r.module.exports:r.esModule}var p={},v=Array.prototype.indexOf||function(e){for(var r=0,t=this.length;t>r;r++)if(this[r]===e)return r;return-1},g=!0;try{Object.getOwnPropertyDescriptor({a:0},"a")}catch(m){g=!1}var h;!function(){try{Object.defineProperty({},"a",{})&&(h=Object.defineProperty)}catch(e){h=function(e,r,t){try{e[r]=t.value||t.get.call(e)}catch(n){}}}}();var x={},y="undefined"!=typeof System&&System._nodeRequire||"undefined"!=typeof require&&require.resolve&&"undefined"!=typeof process&&require,D={"@empty":{}};return function(e,n,o){return function(a){a(function(a){for(var u={_nodeRequire:y,register:r,registerDynamic:t,get:f,set:function(e,r){D[e]=r},newModule:function(e){return e}},d=0;d1)for(var d=1;d\n\t\n\t\n\n ";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('4', [], function (_export) {
- /* global angular */
-
- 'use strict';
-
- var EMPTY_FIELD_MODEL, emptyEdaFieldsModel, returnAttributeDataModelIfNotEmpty, returnAttributeConfigurationLinesIfNotEmpty;
- return {
- setters: [],
- execute: function () {
- EMPTY_FIELD_MODEL = [{
- 'line': 1,
- 'activeColumn': 1,
- 'columns': [{
- 'numColumn': 1,
- 'exist': true,
- 'control': {
- 'type': 'none',
- 'key': 'none'
- }
- }]
- }];
-
- /**
- * empty fields model : to display at least an empty line
- * otherwise would look like ugly empty line like it were a bug
- */
-
- emptyEdaFieldsModel = function emptyEdaFieldsModel() {
- return angular.copy(EMPTY_FIELD_MODEL);
- };
-
- returnAttributeDataModelIfNotEmpty = function returnAttributeDataModelIfNotEmpty(edaEasyFormGeneratorModel) {
- var dataModelToReturn = angular.isArray(edaEasyFormGeneratorModel.dataModel) ? edaEasyFormGeneratorModel.dataModel.length > 0 ? edaEasyFormGeneratorModel.dataModel : [] : [];
- return dataModelToReturn;
- };
-
- returnAttributeConfigurationLinesIfNotEmpty = function returnAttributeConfigurationLinesIfNotEmpty(loadedFieldModel) {
- var edaEasyFormGeneratorModelToReturn = angular.isArray(loadedFieldModel) ? loadedFieldModel.length > 0 ? loadedFieldModel : emptyEdaFieldsModel() : emptyEdaFieldsModel();
- return edaEasyFormGeneratorModelToReturn;
- };
-
- _export('emptyEdaFieldsModel', emptyEdaFieldsModel);
-
- _export('returnAttributeDataModelIfNotEmpty', returnAttributeDataModelIfNotEmpty);
-
- _export('returnAttributeConfigurationLinesIfNotEmpty', returnAttributeConfigurationLinesIfNotEmpty);
- }
- };
-});
-$__System.register('5', ['3', '4', '6'], function (_export) {
- /* global angular */
- 'use strict';
-
- var easyFormViewerTemplate, returnAttributeConfigurationLinesIfNotEmpty, EASY_FORM_VIEWER_CONTROLLER, EASY_FORM_VIEWER_CONTROLLERAS, EASY_FORM_VIEWER_DIRECTIVE_NAME;
-
- function edaFormViewerDirective($modelsTranslator) {
- var directive = {
- restrict: 'E',
- scope: {
- edaEasyFormViewerDataModel: '=?',
- edaEasyFormViewerEasyFormGeneratorFieldsModel: '=?',
- edaEasyFormViewerSubmitButtonText: '@?',
- edaEasyFormViewerCancelButtonText: '@?',
- edaEasyFormViewerSubmitFormEvent: '&?',
- edaEasyFormViewerCancelFormEvent: '&?'
- },
- replace: false,
- controller: EASY_FORM_VIEWER_CONTROLLER,
- controllerAs: EASY_FORM_VIEWER_CONTROLLERAS,
- template: easyFormViewerTemplate,
- link: linkFct
- };
- return directive;
-
- function linkFct(scope) {
-
- scope.vm.model = {};
- scope.vm.fields = loadFieldsModel();
- scope.vm.submitText = scope.edaEasyFormViewerSubmitButtonText || 'Submit';
- scope.vm.cancelText = scope.edaEasyFormViewerCancelButtonText || 'Cancel';
-
- scope.$watch(fieldsModelToWatch, fieldsModelWatcher, true);
- scope.$watch(dataModelToWatch, dataModelWatcher, true);
- scope.$watch(submitBtnTextToWatch, submitBtnTextWatcher);
- scope.$watch(cancelBtnTextToWatch, cancelBtnTextWatcher);
- scope.$watch(submitEventToWatch, submitEventWatcher);
- scope.$watch(cancelEventToWatch, cancelEventWatcher);
-
- function dataModelToWatch() {
- return scope.vm.model;
- }
-
- function fieldsModelToWatch() {
- return scope.edaEasyFormViewerEasyFormGeneratorFieldsModel;
- }
-
- function submitBtnTextToWatch() {
- return scope.edaEasyFormViewerSubmitButtonText;
- }
-
- function cancelBtnTextToWatch() {
- return scope.edaEasyFormViewerCancelButtonText;
- }
-
- function submitEventToWatch() {
- return scope.vm.hasJustSumitted;
- }
-
- function cancelEventToWatch() {
- return scope.vm.hasJustCancelled;
- }
-
- function fieldsModelWatcher(newFieldsModel) {
- scope.vm.fields = loadExistingConfigurationModel(newFieldsModel);
- }
-
- function submitBtnTextWatcher(newSubmitBtntext, oldSubmitBtntext) {
- if (newSubmitBtntext !== oldSubmitBtntext) {
- scope.vm.submitText = newSubmitBtntext || 'Submit';
- }
- }
-
- function cancelBtnTextWatcher(newCancelBtntext, oldCancelBtntext) {
- if (newCancelBtntext !== oldCancelBtntext) {
- scope.vm.cancelText = newCancelBtntext || 'Submit';
- }
- }
-
- function dataModelWatcher(newDataModel) {
- scope.edaEasyFormViewerDataModel = newDataModel;
- }
-
- function submitEventWatcher(newSubmitEvent) {
- if (newSubmitEvent === true) {
- if (angular.isFunction(scope.edaEasyFormViewerSubmitFormEvent)) {
- var _dataModelSubmitted = scope.vm.model;
- scope.edaEasyFormViewerSubmitFormEvent({ dataModelSubmitted: _dataModelSubmitted });
- }
- }
- scope.vm.hasJustSumitted = false;
- }
-
- function cancelEventWatcher(newCancelEvent) {
- if (newCancelEvent === true) {
- if (angular.isFunction(scope.edaEasyFormViewerCancelFormEvent)) {
- scope.edaEasyFormViewerCancelFormEvent();
- }
- }
- scope.vm.hasJustCancelled = false;
- }
-
- /**
- * TODO : check if formly or easy form generato fields model
- *
- * by default or if both -> easy for generator is chosen
- */
- function loadFieldsModel() {
-
- var initialFieldsModel = angular.isArray(scope.edaEasyFormViewerEasyFormGeneratorFieldsModel) ?
- //translate easy form generator to formly fields model
- loadExistingConfigurationModel(scope.edaEasyFormViewerEasyFormGeneratorFieldsModel) : {};
-
- return initialFieldsModel;
- }
-
- function loadExistingConfigurationModel(loadedFieldModel) {
-
- if (angular.isArray(loadedFieldModel)) {
- var configlines = returnAttributeConfigurationLinesIfNotEmpty(loadedFieldModel);
- var formlyFieldsModel = [];
-
- scope.configurationLoaded = {};
-
- $modelsTranslator.bindConfigurationLines(scope.configurationLoaded, configlines);
- /**
- * rebind special control properties :
- *
- * formly expression properties
- * Validators
- * Validation
- */
- $modelsTranslator.refreshControlFormlyExpressionProperties(scope.configurationLoaded);
- $modelsTranslator.refreshControlFormlyValidators(scope.configurationLoaded);
- $modelsTranslator.refreshControlFormlyValidation(scope.configurationLoaded);
-
- //apply configuration model
- scope.configuration = angular.copy(scope.configurationLoaded);
-
- //apply formly model
- $modelsTranslator.applyConfigurationToformlyModel(scope.configurationLoaded, formlyFieldsModel, scope.vm.model);
-
- return formlyFieldsModel;
- }
- }
- }
- }
-
- return {
- setters: [function (_) {
- easyFormViewerTemplate = _['default'];
- }, function (_2) {
- returnAttributeConfigurationLinesIfNotEmpty = _2.returnAttributeConfigurationLinesIfNotEmpty;
- }, function (_3) {
- EASY_FORM_VIEWER_CONTROLLER = _3.EASY_FORM_VIEWER_CONTROLLER;
- EASY_FORM_VIEWER_CONTROLLERAS = _3.EASY_FORM_VIEWER_CONTROLLERAS;
- }],
- execute: function () {
- EASY_FORM_VIEWER_DIRECTIVE_NAME = 'edaEasyFormViewer';
- edaFormViewerDirective.$inject = ['$modelsTranslator'];
-
- _export('default', edaFormViewerDirective);
-
- _export('EASY_FORM_VIEWER_DIRECTIVE_NAME', EASY_FORM_VIEWER_DIRECTIVE_NAME);
- }
- };
-});
-$__System.register('6', ['7', '8'], function (_export) {
- var _createClass, _classCallCheck, EASY_FORM_VIEWER_CONTROLLER, EASY_FORM_VIEWER_CONTROLLERAS, edaEasyFormViewerController;
-
- return {
- setters: [function (_) {
- _createClass = _['default'];
- }, function (_2) {
- _classCallCheck = _2['default'];
- }],
- execute: function () {
- 'use strict';
-
- EASY_FORM_VIEWER_CONTROLLER = 'edaEasyFormViewerCtrl';
- EASY_FORM_VIEWER_CONTROLLERAS = 'vm';
-
- edaEasyFormViewerController = (function () {
- function edaEasyFormViewerController() {
- _classCallCheck(this, edaEasyFormViewerController);
-
- this.init();
- }
-
- _createClass(edaEasyFormViewerController, [{
- key: 'init',
- value: function init() {
- this.model = {};
- this.fields = {};
- this.hasJustSumitted = false;
- this.hasJustCancelled = false;
- }
- }, {
- key: 'edaSubmitThisDataModel',
- value: function edaSubmitThisDataModel() {
- this.hasJustSumitted = true;
- }
- }, {
- key: 'edaCancelEvent',
- value: function edaCancelEvent() {
- this.hasJustCancelled = true;
- }
- }]);
-
- return edaEasyFormViewerController;
- })();
-
- edaEasyFormViewerController.$inject = [];
-
- _export('default', edaEasyFormViewerController);
-
- _export('EASY_FORM_VIEWER_CONTROLLER', EASY_FORM_VIEWER_CONTROLLER);
-
- _export('EASY_FORM_VIEWER_CONTROLLERAS', EASY_FORM_VIEWER_CONTROLLERAS);
- }
- };
-});
-$__System.register('9', ['5', '6'], function (_export) {
- /* global angular */
- 'use strict';
-
- var edaFormViewerDirective, EASY_FORM_VIEWER_DIRECTIVE_NAME, edaEasyFormViewerController, EASY_FORM_VIEWER_CONTROLLER, FORM_VIEWER_MAIN_MODULE_NAME;
- return {
- setters: [function (_) {
- edaFormViewerDirective = _['default'];
- EASY_FORM_VIEWER_DIRECTIVE_NAME = _.EASY_FORM_VIEWER_DIRECTIVE_NAME;
- }, function (_2) {
- edaEasyFormViewerController = _2['default'];
- EASY_FORM_VIEWER_CONTROLLER = _2.EASY_FORM_VIEWER_CONTROLLER;
- }],
- execute: function () {
- FORM_VIEWER_MAIN_MODULE_NAME = 'edaFormViewerMainModule';
-
- _export('default', angular.module(FORM_VIEWER_MAIN_MODULE_NAME, []).directive(EASY_FORM_VIEWER_DIRECTIVE_NAME, edaFormViewerDirective).controller(EASY_FORM_VIEWER_CONTROLLER, edaEasyFormViewerController));
- }
- };
-});
-$__System.register('a', [], function (_export) {
- 'use strict';
-
- var CORE_MODULES, FORMVIEWER_CORE_MODULE_NAME;
- return {
- setters: [],
- execute: function () {
- CORE_MODULES = ['textAngular', 'formly', 'ngAnimate', 'formlyBootstrap', 'ui.bootstrap', 'nya.bootstrap.select'];
- FORMVIEWER_CORE_MODULE_NAME = 'edaEasyFormViewerCore.module';
-
- _export('default', angular.module(FORMVIEWER_CORE_MODULE_NAME, CORE_MODULES));
- }
- };
-});
-$__System.registerDynamic("b", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- var $Object = Object;
- module.exports = {
- create: $Object.create,
- getProto: $Object.getPrototypeOf,
- isEnum: {}.propertyIsEnumerable,
- getDesc: $Object.getOwnPropertyDescriptor,
- setDesc: $Object.defineProperty,
- setDescs: $Object.defineProperties,
- getKeys: $Object.keys,
- getNames: $Object.getOwnPropertyNames,
- getSymbols: $Object.getOwnPropertySymbols,
- each: [].forEach
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("c", ["b"], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- var $ = $__require('b');
- module.exports = function defineProperty(it, key, desc) {
- return $.setDesc(it, key, desc);
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("d", ["c"], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = {
- "default": $__require('c'),
- __esModule: true
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("7", ["d"], true, function($__require, exports, module) {
- "use strict";
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- var _Object$defineProperty = $__require('d')["default"];
- exports["default"] = (function() {
- function defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor)
- descriptor.writable = true;
- _Object$defineProperty(target, descriptor.key, descriptor);
- }
- }
- return function(Constructor, protoProps, staticProps) {
- if (protoProps)
- defineProperties(Constructor.prototype, protoProps);
- if (staticProps)
- defineProperties(Constructor, staticProps);
- return Constructor;
- };
- })();
- exports.__esModule = true;
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("8", [], true, function($__require, exports, module) {
- "use strict";
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- exports["default"] = function(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
- };
- exports.__esModule = true;
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('e', [], function (_export) {
- /* global angular */
-
- 'use strict';
-
- var resetNyaSelect, getConfigurationModelInit, getEmptyConfigModelResult, resetDataModel, getErrorObject, getMessageObject, resetFormlyModel, extractTemplateOptionDescription, extractTemplateOptionPlaceholder, extractTemplateOptionType, extractTemplateOptionLabel, extractTemplateOptionDatepickerPopup, extractFormlyExpressionProperties, extractFormlyValidators, extractFormlyValidation, extractTemplateOptionRequired, extractTemplateOptionOptions, addDatepickerPopupProperty, addOneColumnHeader, addOneColumnControl, addTwoColumnControl, addThreeColumnControl;
- return {
- setters: [],
- execute: function () {
- resetNyaSelect = function resetNyaSelect(nyaSelectObj) {
-
- var newNyaSelectObj = {
- controls: [{
- id: 'empty',
- name: 'no control',
- subtitle: 'no control',
- group: 'Blank',
- formlyType: 'blank',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {}
- }, {
- id: 'Header',
- name: 'Header',
- subtitle: 'no control',
- group: 'Decoration',
- formlyType: 'header',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {}
- }, {
- id: 'Subtitle',
- name: 'Subtitle',
- subtitle: 'no control',
- group: 'Decoration',
- formlyType: 'subTitle',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {}
- }, {
- id: 'TextInput',
- name: 'Text input',
- subtitle: 'Text input',
- group: 'input',
- formlyType: 'input',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> '
is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Text input field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'Password',
- name: 'Password',
- subtitle: 'Password',
- group: 'input',
- formlyType: 'input',
- formlySubtype: 'password',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Password field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'Email',
- name: 'Email',
- subtitle: 'Email',
- group: 'input',
- formlyType: 'input',
- formlySubtype: 'email',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
-
- formlyValidators: {
- emailShape: {
- expression: function expression(viewValue, modelValue) {
- var value = modelValue || viewValue;
- return (/^[a-z]+[a-z0-9._]+@[a-z]+\.[a-z.]{2,5}$/.test(value)
- );
- },
- message: '$viewValue + \' is not a valid email\''
- }
- },
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Email field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- //check if validation is really dued to require validation
- //and not another validation like emailShape validator
- if (scope.to.required) return returnMsg;
- }
- }
- }
- }, {
- id: 'Date',
- name: 'Date',
- subtitle: 'Date',
- group: 'input',
- formlyType: 'datepicker',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- datepickerPopup: 'dd-MMMM-yyyy',
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Date field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'Texarea',
- name: 'Textarea',
- subtitle: 'Textarea',
- group: 'Textarea',
- formlyType: 'textarea',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Textarea field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'RichTextEditor',
- name: 'RichTextEditor',
- subtitle: 'RichTextEditor',
- group: 'Textarea',
- formlyType: 'richEditor',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this RichTextEditor field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'Radio',
- name: 'Radio',
- subtitle: 'Radio',
- options: [],
- group: 'Radio',
- formlyType: 'radio',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Password field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'Checkbox',
- name: 'Checkbox',
- subtitle: 'Checkbox',
- group: 'Checkbox',
- formlyType: 'checkbox',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Checkbox field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'BasicSelect',
- name: 'Basic select',
- subtitle: 'Basic select',
- options: [],
- group: 'Select',
- formlyType: 'basicSelect',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Basic select field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'GroupedSelect',
- name: 'Grouped Select',
- subtitle: 'Grouped Select',
- options: [],
- group: 'Select',
- formlyType: 'groupedSelect',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Grouped Select field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }],
- selectedControl: 'none',
- temporyConfig: {
- selectedControl: 'none',
- formlyLabel: 'label',
- formlyRequired: false,
- formlyDesciption: '',
- formlyPlaceholder: '',
- formlyOptions: [],
- //expressions/validation fields
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {}
- }
-
- };
-
- //reset
- angular.copy(newNyaSelectObj, nyaSelectObj);
- return true;
- };
-
- /**
- * equivalent to formFielManage service in easy form generator
- */
-
- getConfigurationModelInit = function getConfigurationModelInit() {
- var configurationModelInit = {
- activeLine: 1,
- listConfigStep: ['init', 'first', 'second', 'third'],
- stepIndicators: [true, false, false, false],
- configStepCounter: 0,
- submitButtonText: 'submit',
- cancelButtonText: 'cancel',
- lines: [{
- line: 1,
- activeColumn: 1,
- columns: [{
- numColumn: 1,
- exist: true,
- control: {
- type: 'none',
- key: 'none'
- // templateOptions: {
- // label: 'none',
- // placeholder: 'none',
- // required: false,
- // description: 'Descriptive text'
- // }
- }
- }]
- }]
- };
- return configurationModelInit;
- };
-
- getEmptyConfigModelResult = function getEmptyConfigModelResult() {
- var configurationModelResult = {
- activeLine: 1,
- listConfigStep: ['init', 'first', 'second', 'third'],
- stepIndicators: [true, false, false, false],
- configStepCounter: 0,
- submitButtonText: 'submit',
- cancelButtonText: 'cancel',
- lines: []
- };
- return angular.copy(configurationModelResult);
- };
-
- resetDataModel = function resetDataModel(obj) {
- var emptyDataModel = {};
- angular.copy(emptyDataModel, obj);
- return true;
- };
-
- getErrorObject = function getErrorObject(errorTitle, errorMessage) {
- var messageObj = {
- noError: false,
- title: '',
- Message: ''
- };
- messageObj.noError = false;
- messageObj.title = errorTitle;
- messageObj.Message = errorMessage;
- return messageObj;
- };
-
- getMessageObject = function getMessageObject(messageTitle, messageBody) {
- var messageObj = {
- noError: false,
- title: '',
- Message: ''
- };
- messageObj.noError = true;
- messageObj.title = messageTitle;
- messageObj.Message = messageBody;
- return messageObj;
- };
-
- resetFormlyModel = function resetFormlyModel(formlyModel) {
- var resetformly = [];
- angular.copy(resetformly, formlyModel);
- };
-
- extractTemplateOptionDescription = function extractTemplateOptionDescription(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.description !== 'undefined' ? obj.templateOptions.description : '' : '';
- };
-
- extractTemplateOptionPlaceholder = function extractTemplateOptionPlaceholder(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.placeholder !== 'undefined' ? obj.templateOptions.placeholder : '' : '';
- };
-
- extractTemplateOptionType = function extractTemplateOptionType(obj) {
- return typeof obj.subtype !== 'undefined' ? obj.subtype : '';
- };
-
- // const isTemplateOptionDefined = (obj) => typeof obj.templateOptions !== 'undefined' ? true : false;
-
- extractTemplateOptionLabel = function extractTemplateOptionLabel(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.label !== 'undefined' ? obj.templateOptions.label : '' : '';
- };
-
- extractTemplateOptionDatepickerPopup = function extractTemplateOptionDatepickerPopup(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.datepickerPopup !== 'undefined' ? obj.templateOptions.datepickerPopup : '' : '';
- };
-
- extractFormlyExpressionProperties = function extractFormlyExpressionProperties(obj) {
- return typeof obj.formlyExpressionProperties !== 'undefined' ? angular.copy(obj.formlyExpressionProperties) : {};
- };
-
- extractFormlyValidators = function extractFormlyValidators(obj) {
- return typeof obj.formlyValidators !== 'undefined' ? angular.copy(obj.formlyValidators) : {};
- };
-
- extractFormlyValidation = function extractFormlyValidation(obj) {
- return typeof obj.formlyValidation !== 'undefined' ? angular.copy(obj.formlyValidation) : {};
- };
-
- extractTemplateOptionRequired = function extractTemplateOptionRequired(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.required !== 'undefined' ? obj.templateOptions.required : '' : '';
- };
-
- extractTemplateOptionOptions = function extractTemplateOptionOptions(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.options !== 'undefined' ? obj.templateOptions.options : '' : '';
- };
-
- addDatepickerPopupProperty = function addDatepickerPopupProperty(fieldToPush, configurationModel, lineIndex) {
- return fieldToPush.templateOptions.datepickerPopup = extractTemplateOptionDatepickerPopup(configurationModel.lines[lineIndex].columns[0].control);
- };
-
- addOneColumnHeader = function addOneColumnHeader(formlyModel, configurationModel, lineIndex) {
- /**
- * text header is stored in "description" in templateOtion model
- */
- var headerTemplateCol0 = '
' + extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[0].control) + ' ';
- formlyModel.push({
- template: typeof configurationModel.lines[lineIndex].columns[0].control.type !== 'undefined' ? configurationModel.lines[lineIndex].columns[0].control.type === 'header' ? headerTemplateCol0 : '
' : '
'
- });
- };
-
- addOneColumnControl = function addOneColumnControl(formlyModel, configurationModel, lineIndex) {
- var fieldToPush = {
- className: 'col-xs-12',
- type: typeof configurationModel.lines[lineIndex].columns[0].control.type !== 'undefined' ? configurationModel.lines[lineIndex].columns[0].control.type === 'none' ? 'blank' : configurationModel.lines[lineIndex].columns[0].control.type : 'blank',
- key: typeof configurationModel.lines[lineIndex].columns[0].control.key !== 'undefined' ? configurationModel.lines[lineIndex].columns[0].control.key : 'blank' + Date.now(),
- templateOptions: {
- type: extractTemplateOptionType(configurationModel.lines[lineIndex].columns[0].control),
- label: extractTemplateOptionLabel(configurationModel.lines[lineIndex].columns[0].control),
- required: extractTemplateOptionRequired(configurationModel.lines[lineIndex].columns[0].control),
- placeholder: extractTemplateOptionPlaceholder(configurationModel.lines[lineIndex].columns[0].control),
- description: extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[0].control),
- options: extractTemplateOptionOptions(configurationModel.lines[lineIndex].columns[0].control)
- },
- expressionProperties: extractFormlyExpressionProperties(configurationModel.lines[lineIndex].columns[0].control),
- validators: extractFormlyValidators(configurationModel.lines[lineIndex].columns[0].control),
- validation: extractFormlyValidation(configurationModel.lines[lineIndex].columns[0].control)
- };
- //////////////////////////////////////////////
- //datepicker additionnal particular property
- //////////////////////////////////////////////
- if (configurationModel.lines[lineIndex].columns[0].control.type === 'datepicker') addDatepickerPopupProperty(fieldToPush, configurationModel, lineIndex);
-
- formlyModel.push(fieldToPush);
- };
-
- addTwoColumnControl = function addTwoColumnControl(formlyModel, configurationModel, lineIndex) {
-
- //text header is stored in "description" in templateOtion model
- var headerTemplateCol0 = {
- className: 'col-xs-6',
- template: '
' + extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[0].control) + ' '
- };
-
- var headerTemplateCol1 = {
- className: 'col-xs-6',
- template: '
' + extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[1].control) + ' '
- };
-
- var controlCol0 = {
- className: 'col-xs-6',
- type: typeof configurationModel.lines[lineIndex].columns[0].control.type !== 'undefined' ? configurationModel.lines[lineIndex].columns[0].control.type === 'none' ? 'blank' : configurationModel.lines[lineIndex].columns[0].control.type : 'blank',
- key: typeof configurationModel.lines[lineIndex].columns[0].control.key !== 'undefined' ? configurationModel.lines[lineIndex].columns[0].control.key : 'blank' + Date.now(),
- templateOptions: {
- type: extractTemplateOptionType(configurationModel.lines[lineIndex].columns[0].control),
- label: extractTemplateOptionLabel(configurationModel.lines[lineIndex].columns[0].control),
- required: extractTemplateOptionRequired(configurationModel.lines[lineIndex].columns[0].control),
- placeholder: extractTemplateOptionPlaceholder(configurationModel.lines[lineIndex].columns[0].control),
- description: extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[0].control),
- options: extractTemplateOptionOptions(configurationModel.lines[lineIndex].columns[0].control)
- },
- expressionProperties: extractFormlyExpressionProperties(configurationModel.lines[lineIndex].columns[0].control),
- validators: extractFormlyValidators(configurationModel.lines[lineIndex].columns[0].control),
- validation: extractFormlyValidation(configurationModel.lines[lineIndex].columns[0].control)
- };
- //////////////////////////////////////////////
- //datepicker additionnal particular property
- //////////////////////////////////////////////
- if (configurationModel.lines[lineIndex].columns[0].control.type === 'datepicker') addDatepickerPopupProperty(controlCol0, configurationModel, lineIndex);
-
- var controlCol1 = {
- className: 'col-xs-6',
- type: typeof configurationModel.lines[lineIndex].columns[1].control.type !== 'undefined' ? configurationModel.lines[lineIndex].columns[1].control.type === 'none' ? 'blank' : configurationModel.lines[lineIndex].columns[1].control.type : 'blank',
- key: typeof configurationModel.lines[lineIndex].columns[1].control.key !== 'undefined' ? configurationModel.lines[lineIndex].columns[1].control.key : 'blank' + Date.now(),
- templateOptions: {
- type: extractTemplateOptionType(configurationModel.lines[lineIndex].columns[1].control),
- label: extractTemplateOptionLabel(configurationModel.lines[lineIndex].columns[1].control),
- required: extractTemplateOptionRequired(configurationModel.lines[lineIndex].columns[1].control),
- placeholder: extractTemplateOptionPlaceholder(configurationModel.lines[lineIndex].columns[1].control),
- description: extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[1].control),
- options: extractTemplateOptionOptions(configurationModel.lines[lineIndex].columns[1].control)
- },
- expressionProperties: extractFormlyExpressionProperties(configurationModel.lines[lineIndex].columns[1].control),
- validators: extractFormlyValidators(configurationModel.lines[lineIndex].columns[1].control),
- validation: extractFormlyValidation(configurationModel.lines[lineIndex].columns[1].control)
- };
-
- //////////////////////////////////////////////
- //datepicker additionnal particular property
- //////////////////////////////////////////////
- if (configurationModel.lines[lineIndex].columns[1].control.type === 'datepicker') addDatepickerPopupProperty(controlCol1, configurationModel, lineIndex);
-
- var FieldGroup = [];
-
- if (configurationModel.lines[lineIndex].columns[0].control.type === 'header') {
- FieldGroup.push(headerTemplateCol0);
- } else {
- FieldGroup.push(controlCol0);
- }
-
- if (configurationModel.lines[lineIndex].columns[1].control.type === 'header') {
- FieldGroup.push(headerTemplateCol1);
- } else {
- FieldGroup.push(controlCol1);
- }
-
- formlyModel.push({
- className: 'row',
- fieldGroup: FieldGroup
- });
- };
-
- addThreeColumnControl = function addThreeColumnControl(formlyModel, configurationModel, lineIndex) {
- //text header is stored in "description" in templateOtion model
- var headerTemplateCol0 = {
- className: 'col-xs-4',
- template: '
' + extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[0].control) + ' '
- };
-
- var headerTemplateCol1 = {
- className: 'col-xs-4',
- template: '
' + extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[1].control) + ' '
- };
-
- var headerTemplateCol2 = {
- className: 'col-xs-4',
- template: '
' + extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[2].control) + ' '
- };
-
- var controlCol0 = {
- className: 'col-xs-4',
- type: typeof configurationModel.lines[lineIndex].columns[0].control.type !== 'undefined' ? configurationModel.lines[lineIndex].columns[0].control.type === 'none' ? 'blank' : configurationModel.lines[lineIndex].columns[0].control.type : 'blank',
- key: typeof configurationModel.lines[lineIndex].columns[0].control.key !== 'undefined' ? configurationModel.lines[lineIndex].columns[0].control.key : 'blank' + Date.now(),
- templateOptions: {
- type: extractTemplateOptionType(configurationModel.lines[lineIndex].columns[0].control),
- label: extractTemplateOptionLabel(configurationModel.lines[lineIndex].columns[0].control),
- required: extractTemplateOptionRequired(configurationModel.lines[lineIndex].columns[0].control),
- placeholder: extractTemplateOptionPlaceholder(configurationModel.lines[lineIndex].columns[0].control),
- description: extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[0].control),
- options: extractTemplateOptionOptions(configurationModel.lines[lineIndex].columns[0].control)
- },
- expressionProperties: extractFormlyExpressionProperties(configurationModel.lines[lineIndex].columns[0].control),
- validators: extractFormlyValidators(configurationModel.lines[lineIndex].columns[0].control),
- validation: extractFormlyValidation(configurationModel.lines[lineIndex].columns[0].control)
- };
- //////////////////////////////////////////////
- //datepicker additionnal particular property
- //////////////////////////////////////////////
- if (configurationModel.lines[lineIndex].columns[0].control.type === 'datepicker') addDatepickerPopupProperty(controlCol0, configurationModel, lineIndex);
-
- var controlCol1 = {
- className: 'col-xs-4',
- type: typeof configurationModel.lines[lineIndex].columns[1].control.type !== 'undefined' ? configurationModel.lines[lineIndex].columns[1].control.type === 'none' ? 'blank' : configurationModel.lines[lineIndex].columns[1].control.type : 'blank',
- key: typeof configurationModel.lines[lineIndex].columns[1].control.key !== 'undefined' ? configurationModel.lines[lineIndex].columns[1].control.key : 'blank' + Date.now(),
- templateOptions: {
- type: extractTemplateOptionType(configurationModel.lines[lineIndex].columns[1].control),
- label: extractTemplateOptionLabel(configurationModel.lines[lineIndex].columns[1].control),
- required: extractTemplateOptionRequired(configurationModel.lines[lineIndex].columns[1].control),
- placeholder: extractTemplateOptionPlaceholder(configurationModel.lines[lineIndex].columns[1].control),
- description: extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[1].control),
- options: extractTemplateOptionOptions(configurationModel.lines[lineIndex].columns[1].control)
- },
- expressionProperties: extractFormlyExpressionProperties(configurationModel.lines[lineIndex].columns[1].control),
- validators: extractFormlyValidators(configurationModel.lines[lineIndex].columns[1].control),
- validation: extractFormlyValidation(configurationModel.lines[lineIndex].columns[1].control)
- };
- //////////////////////////////////////////////
- //datepicker additionnal particular property
- //////////////////////////////////////////////
- if (configurationModel.lines[lineIndex].columns[1].control.type === 'datepicker') addDatepickerPopupProperty(controlCol1, configurationModel, lineIndex);
-
- var controlCol2 = {
- className: 'col-xs-4',
- type: typeof configurationModel.lines[lineIndex].columns[2].control.type !== 'undefined' ? configurationModel.lines[lineIndex].columns[2].control.type === 'none' ? 'blank' : configurationModel.lines[lineIndex].columns[2].control.type : 'blank',
- key: typeof configurationModel.lines[lineIndex].columns[2].control.key !== 'undefined' ? configurationModel.lines[lineIndex].columns[2].control.key : 'blank' + Date.now(),
- templateOptions: {
- type: extractTemplateOptionType(configurationModel.lines[lineIndex].columns[2].control),
- label: extractTemplateOptionLabel(configurationModel.lines[lineIndex].columns[2].control),
- required: extractTemplateOptionRequired(configurationModel.lines[lineIndex].columns[2].control),
- placeholder: extractTemplateOptionPlaceholder(configurationModel.lines[lineIndex].columns[2].control),
- description: extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[2].control),
- options: extractTemplateOptionOptions(configurationModel.lines[lineIndex].columns[2].control)
- },
- expressionProperties: extractFormlyExpressionProperties(configurationModel.lines[lineIndex].columns[2].control),
- validators: extractFormlyValidators(configurationModel.lines[lineIndex].columns[2].control),
- validation: extractFormlyValidation(configurationModel.lines[lineIndex].columns[2].control)
- };
- //////////////////////////////////////////////
- //datepicker additionnal particular property
- //////////////////////////////////////////////
- if (configurationModel.lines[lineIndex].columns[2].control.type === 'datepicker') addDatepickerPopupProperty(controlCol2, configurationModel, lineIndex);
-
- var FieldGroup = [];
-
- if (configurationModel.lines[lineIndex].columns[0].control.type === 'header') {
- FieldGroup.push(headerTemplateCol0);
- } else {
- FieldGroup.push(controlCol0);
- }
-
- if (configurationModel.lines[lineIndex].columns[1].control.type === 'header') {
- FieldGroup.push(headerTemplateCol1);
- } else {
- FieldGroup.push(controlCol1);
- }
-
- if (configurationModel.lines[lineIndex].columns[2].control.type === 'header') {
- FieldGroup.push(headerTemplateCol2);
- } else {
- FieldGroup.push(controlCol2);
- }
-
- formlyModel.push({
- className: 'row',
- fieldGroup: FieldGroup
- });
- };
-
- _export('resetNyaSelect', resetNyaSelect);
-
- _export('getConfigurationModelInit', getConfigurationModelInit);
-
- _export('getEmptyConfigModelResult', getEmptyConfigModelResult);
-
- _export('resetDataModel', resetDataModel);
-
- _export('getErrorObject', getErrorObject);
-
- _export('getMessageObject', getMessageObject);
-
- _export('resetFormlyModel', resetFormlyModel);
-
- _export('addOneColumnHeader', addOneColumnHeader);
-
- _export('addOneColumnControl', addOneColumnControl);
-
- _export('addTwoColumnControl', addTwoColumnControl);
-
- _export('addThreeColumnControl', addThreeColumnControl);
- }
- };
-});
-$__System.register('f', ['7', '8', 'e'], function (_export) {
- var _createClass, _classCallCheck, resetNyaSelect, getEmptyConfigModelResult, resetDataModel, getErrorObject, getMessageObject, resetFormlyModel, addOneColumnHeader, addOneColumnControl, addTwoColumnControl, addThreeColumnControl, MODEL_TRANSLATOR_SERVICE, $modelsTranslator;
-
- return {
- setters: [function (_) {
- _createClass = _['default'];
- }, function (_2) {
- _classCallCheck = _2['default'];
- }, function (_e) {
- resetNyaSelect = _e.resetNyaSelect;
- getEmptyConfigModelResult = _e.getEmptyConfigModelResult;
- resetDataModel = _e.resetDataModel;
- getErrorObject = _e.getErrorObject;
- getMessageObject = _e.getMessageObject;
- resetFormlyModel = _e.resetFormlyModel;
- addOneColumnHeader = _e.addOneColumnHeader;
- addOneColumnControl = _e.addOneColumnControl;
- addTwoColumnControl = _e.addTwoColumnControl;
- addThreeColumnControl = _e.addThreeColumnControl;
- }],
- execute: function () {
- /* global angular */
- 'use strict';
-
- MODEL_TRANSLATOR_SERVICE = '$modelsTranslator';
-
- $modelsTranslator = (function () {
- function $modelsTranslator() {
- _classCallCheck(this, $modelsTranslator);
- }
-
- _createClass($modelsTranslator, [{
- key: 'initNyaSelect',
- value: function initNyaSelect(nyaSelectObj) {
- return resetNyaSelect(nyaSelectObj);
- }
-
- /**
- * get all controls definition (nyaSelectObj)
- *
- * needed to bind these properties :
- *
- * formlyExpressionProperties: {},
- * formlyValidators: {},
- * formlyValidation
- */
- }, {
- key: 'getControlsDefinition',
- value: function getControlsDefinition() {
- var controls = {};
- resetNyaSelect(controls);
- return controls;
- }
-
- /**
- * loading forms will not be able to retrieve formlyExpressionProperties
- * -> here does the job
- */
- }, {
- key: 'refreshControlFormlyExpressionProperties',
- value: function refreshControlFormlyExpressionProperties(configurationModel) {
- var _this = this;
-
- if (angular.isObject(configurationModel)) {
- //iterates lines
- angular.forEach(configurationModel.lines, function (line) {
- angular.forEach(line.columns, function (column) {
- var _controlsDefinition = _this.getControlsDefinition();
- angular.forEach(_controlsDefinition.controls, function (aControl) {
- if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {
- //----> update control formlyExpressionProperties property
- column.control.formlyExpressionProperties = aControl.formlyExpressionProperties;
- }
- });
- });
- });
- }
- }
-
- /**
- * loading forms will not be able to retrieve formlyValidators
- * -> here does the job
- */
- }, {
- key: 'refreshControlFormlyValidators',
- value: function refreshControlFormlyValidators(configurationModel) {
- var _this2 = this;
-
- if (angular.isObject(configurationModel)) {
- //iterates lines
- angular.forEach(configurationModel.lines, function (line) {
- angular.forEach(line.columns, function (column) {
- var _controlsDefinition = _this2.getControlsDefinition();
- angular.forEach(_controlsDefinition.controls, function (aControl) {
- if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {
- //----> update control formlyValidators property
- column.control.formlyValidators = aControl.formlyValidators;
- }
- });
- });
- });
- }
- }
-
- /**
- * loading forms will not be able to retrieve formlyValidation
- * -> here does the job
- */
- }, {
- key: 'refreshControlFormlyValidation',
- value: function refreshControlFormlyValidation(configurationModel) {
- var _this3 = this;
-
- if (angular.isObject(configurationModel)) {
- //iterates lines
- angular.forEach(configurationModel.lines, function (line) {
- angular.forEach(line.columns, function (column) {
- var _controlsDefinition = _this3.getControlsDefinition();
- angular.forEach(_controlsDefinition.controls, function (aControl) {
- if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {
- //----> update control formlyValidation property
- column.control.formlyValidation = aControl.formlyValidation;
- }
- });
- });
- });
- }
- }
-
- // initConfigurationEditFromScratch(configurationModel) {
- // configurationModel = angular.copy(getConfigurationModelInit());
- // }
-
- }, {
- key: 'bindConfigurationLines',
- value: function bindConfigurationLines(configurationModel, lines) {
- if (angular.isArray(lines)) {
- var configurationModelResult = getEmptyConfigModelResult();
- configurationModelResult.lines = [].concat(lines);
- angular.copy(configurationModelResult, configurationModel);
- return getMessageObject('configuration model is bound', 'lines are bound to configuration model.');
- } else {
- return getErrorObject('lines is not an array', 'Checks lines type, it is not an array.');
- }
- }
- }, {
- key: 'applyConfigurationToformlyModel',
- value: function applyConfigurationToformlyModel(configurationModel, formlyModel, formlyDataModel) {
- resetFormlyModel(formlyModel);
- resetDataModel(formlyDataModel);
- /**
- * manage header here line0
- */
- var lineNumber = configurationModel.lines.length;
- for (var i = 0; i < lineNumber; i++) {
- //1 column line control
- if (configurationModel.lines[i].columns.length === 1) {
- //test if template control = header
- if (configurationModel.lines[i].columns[0].control.type === 'header') {
- addOneColumnHeader(formlyModel, configurationModel, i);
- } else {
- addOneColumnControl(formlyModel, configurationModel, i);
- }
- }
- if (configurationModel.lines[i].columns.length === 2) {
- addTwoColumnControl(formlyModel, configurationModel, i);
- }
- if (configurationModel.lines[i].columns.length === 3) {
- addThreeColumnControl(formlyModel, configurationModel, i);
- }
- }
- }
- }]);
-
- return $modelsTranslator;
- })();
-
- $modelsTranslator.$inject = [];
-
- _export('default', $modelsTranslator);
-
- _export('MODEL_TRANSLATOR_SERVICE', MODEL_TRANSLATOR_SERVICE);
- }
- };
-});
-
-// getConfigurationModelInit,
-$__System.register('10', ['f'], function (_export) {
- /* global angular */
- 'use strict';
-
- var $modelsTranslator, MODEL_TRANSLATOR_SERVICE, FORM_VIEWER_MODEL_TRANSLATOR_MODULE_NAME;
- return {
- setters: [function (_f) {
- $modelsTranslator = _f['default'];
- MODEL_TRANSLATOR_SERVICE = _f.MODEL_TRANSLATOR_SERVICE;
- }],
- execute: function () {
- FORM_VIEWER_MODEL_TRANSLATOR_MODULE_NAME = 'edaFormViewerModelTranslatorModule';
-
- _export('default', angular.module(FORM_VIEWER_MODEL_TRANSLATOR_MODULE_NAME, []).service(MODEL_TRANSLATOR_SERVICE, $modelsTranslator));
- }
- };
-});
-$__System.register("11", [], function (_export) {
- "use strict";
-
- var richTextTemplate, blankTemplate, subTitleTemplate, basicSelectTemplate, groupedSelectTemplate, datepickerTemplate, validationTemplate;
- return {
- setters: [],
- execute: function () {
- richTextTemplate = "\n\t\n\t ";
- blankTemplate = "
";
- subTitleTemplate = "\n\t\n\t\t
\n\t\t\t
\n\t\t\t{{options.templateOptions.placeholder}}\n\t\t\t \n\t\t \n\t
";
- basicSelectTemplate = " \n \n\t \n\t\t{{option.name}} \n\t \n ";
- groupedSelectTemplate = "\n\t\n\t\t\n\t\t\t \n\t\t\t\n\t\t\t\t{{option.name}} \n\t\t\t\t \n\t\t\t \n\t\t \n\t ";
- datepickerTemplate = "\t ";
- validationTemplate = "\n\t";
-
- _export("richTextTemplate", richTextTemplate);
-
- _export("blankTemplate", blankTemplate);
-
- _export("subTitleTemplate", subTitleTemplate);
-
- _export("basicSelectTemplate", basicSelectTemplate);
-
- _export("groupedSelectTemplate", groupedSelectTemplate);
-
- _export("datepickerTemplate", datepickerTemplate);
-
- _export("validationTemplate", validationTemplate);
- }
- };
-});
-$__System.register('12', ['11'], function (_export) {
- 'use strict';
-
- var richTextTemplate, blankTemplate, subTitleTemplate, basicSelectTemplate, groupedSelectTemplate, datepickerTemplate, validationTemplate;
-
- function edaEasyFormViewerConfig(formlyConfigProvider) {
-
- formlyConfigProvider.setType({
- name: 'richEditor',
- template: richTextTemplate,
- wrapper: ['bootstrapLabel', 'bootstrapHasError']
- });
-
- formlyConfigProvider.setType({
- name: 'blank',
- template: blankTemplate
- });
-
- formlyConfigProvider.setType({
- name: 'subTitle',
- template: subTitleTemplate
- });
-
- formlyConfigProvider.setType({
- name: 'basicSelect',
- template: basicSelectTemplate,
- wrapper: ['bootstrapLabel', 'bootstrapHasError']
- });
-
- formlyConfigProvider.setType({
- name: 'groupedSelect',
- template: groupedSelectTemplate,
- wrapper: ['bootstrapLabel', 'bootstrapHasError']
- });
-
- ////////////////////////////
- // angular UI date picker
- ////////////////////////////
- // thx Kent C. Dodds
-
- var attributes = ['date-disabled', 'custom-class', 'show-weeks', 'starting-day', 'init-date', 'min-mode', 'max-mode', 'format-day', 'format-month', 'format-year', 'format-day-header', 'format-day-title', 'format-month-title', 'year-range', 'shortcut-propagation', 'datepicker-popup', 'show-button-bar', 'current-text', 'clear-text', 'close-text', 'close-on-date-selection', 'datepicker-append-to-body'];
-
- var bindings = ['datepicker-mode', 'min-date', 'max-date'];
-
- var ngModelAttrs = {};
-
- angular.forEach(attributes, function (attr) {
- ngModelAttrs[camelize(attr)] = { attribute: attr };
- });
-
- angular.forEach(bindings, function (binding) {
- ngModelAttrs[camelize(binding)] = { bound: binding };
- });
-
- formlyConfigProvider.setType({
- name: 'datepicker',
- template: datepickerTemplate,
- wrapper: ['bootstrapLabel', 'bootstrapHasError'],
- controller: ['$scope', function ($scope) {
- $scope.open = function ($event) {
- $event.preventDefault();
- $event.stopPropagation();
- $scope.opened = true;
- };
- }],
- defaultOptions: {
- ngModelAttrs: ngModelAttrs,
- templateOptions: {
- addonLeft: {
- 'class': 'glyphicon glyphicon-calendar',
- onClick: function onClick(options) {
- return options.templateOptions.isOpen = !options.templateOptions.isOpen;
- }
- },
- onFocus: function onFocus($viewValue, $modelValue, scope) {
- return scope.to.isOpen = !scope.to.isOpen;
- },
- datepickerOptions: {}
- }
- }
-
- });
-
- /**
- * wrappers to show validation errors
- * without having to rewrite formly types
- */
- formlyConfigProvider.setWrapper([{
- template: validationTemplate
- }]);
-
- function camelize(string) {
- string = string.replace(/[\-_\s]+(.)?/g, function (match, chr) {
- return chr ? chr.toUpperCase() : '';
- });
- // Ensure 1st char is always lowercase
- return string.replace(/^([A-Z])/, function (match, chr) {
- return chr ? chr.toLowerCase() : '';
- });
- }
- }
-
- return {
- setters: [function (_) {
- richTextTemplate = _.richTextTemplate;
- blankTemplate = _.blankTemplate;
- subTitleTemplate = _.subTitleTemplate;
- basicSelectTemplate = _.basicSelectTemplate;
- groupedSelectTemplate = _.groupedSelectTemplate;
- datepickerTemplate = _.datepickerTemplate;
- validationTemplate = _.validationTemplate;
- }],
- execute: function () {
- edaEasyFormViewerConfig.$inject = ['formlyConfigProvider'];
-
- _export('default', edaEasyFormViewerConfig);
- }
- };
-});
-$__System.registerDynamic("13", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = {
- "stepway": {"version": "1.1.0"},
- "dragdropway": {"version": "1.1.0"},
- "formviewer": {"version": "1.1.0"}
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('1', ['2', '9', '10', '12', '13', 'a'], function (_export) {
- 'use strict';
-
- var edaFormViewerMainModule, edaFormViewerModelTranslatorModule, edaEasyFormViewerConfig, easyFormConfig, edaFormViewerCoreModule, DEP_TO_INJECT_IN_MAIN, EASY_FORM_VIEWER_VERSION_NAME, EASY_FORM_VIEWER_VERSION_VALUE, MAIN_MODULE_NAME, mainModule;
- return {
- setters: [function (_) {}, function (_2) {
- edaFormViewerMainModule = _2['default'];
- }, function (_3) {
- edaFormViewerModelTranslatorModule = _3['default'];
- }, function (_4) {
- edaEasyFormViewerConfig = _4['default'];
- }, function (_5) {
- easyFormConfig = _5['default'];
- }, function (_a) {
- edaFormViewerCoreModule = _a['default'];
- }],
- execute: function () {
- DEP_TO_INJECT_IN_MAIN = [edaFormViewerMainModule.name, edaFormViewerCoreModule.name, edaFormViewerModelTranslatorModule.name];
- EASY_FORM_VIEWER_VERSION_NAME = 'easyFormViewerVersion';
- EASY_FORM_VIEWER_VERSION_VALUE = easyFormConfig.formviewer.version;
- MAIN_MODULE_NAME = 'eda.easyFormViewer';
- mainModule = angular.module(MAIN_MODULE_NAME, DEP_TO_INJECT_IN_MAIN).config(edaEasyFormViewerConfig).value(EASY_FORM_VIEWER_VERSION_NAME, EASY_FORM_VIEWER_VERSION_VALUE);
-
- _export('default', mainModule);
- }
- };
-});
-})
-(function(factory) {
- factory();
-});
-//# sourceMappingURL=eda.easyFormViewer.js.map
\ No newline at end of file
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+
+
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "http://localhost:8080/";
+
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\n__webpack_require__(1);\n\n__webpack_require__(6);\n\n__webpack_require__(59);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Zvcm12aWV3ZXIvaW5kZXguanM/NzYxNCJdLCJuYW1lcyI6WyJyZXF1aXJlIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUVBOztBQURBLG1CQUFBQSxDQUFRLEVBQVIiLCJmaWxlIjoiMC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi92ZW5kb3JzJztcbnJlcXVpcmUoJy4vc3R5bGUvZm9ybXZpZXdlci5zY3NzJyk7XG5pbXBvcnQgJy4vbWFpbic7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2Zvcm12aWV3ZXIvaW5kZXguanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\n__webpack_require__(2);\n\n__webpack_require__(3);\n\n__webpack_require__(5);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Zvcm12aWV3ZXIvdmVuZG9ycy5qcz9mN2JlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBQ0E7O0FBQ0EiLCJmaWxlIjoiMS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnYXBpLWNoZWNrJzsgLy8gTk9URTogYWx3YXlzIGltcG9ydGVkIGJlZm9yZSBhbmd1bGFyLWZvcm1seSFcbmltcG9ydCAnYW5ndWxhci1mb3JtbHknO1xuaW1wb3J0ICdhbmd1bGFyLWZvcm1seS10ZW1wbGF0ZXMtYm9vdHN0cmFwJztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZm9ybXZpZXdlci92ZW5kb3JzLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 2 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("//! api-check version 7.5.5 built with ♥ by Kent C. Dodds (http://kent.doddsfamily.us) (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apiCheck\"] = factory();\n\telse\n\t\troot[\"apiCheck\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n\tvar _apiCheck = __webpack_require__(1);\n\n\tvar _apiCheck2 = _interopRequireDefault(_apiCheck);\n\n\texports['default'] = _apiCheck2['default'];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar stringify = __webpack_require__(2);\n\tvar apiCheckUtil = __webpack_require__(3);\n\tvar each = apiCheckUtil.each;\n\tvar isError = apiCheckUtil.isError;\n\tvar t = apiCheckUtil.t;\n\tvar arrayify = apiCheckUtil.arrayify;\n\tvar getCheckerDisplay = apiCheckUtil.getCheckerDisplay;\n\tvar typeOf = apiCheckUtil.typeOf;\n\tvar getError = apiCheckUtil.getError;\n\n\tvar checkers = __webpack_require__(4);\n\tvar apiCheckApis = getApiCheckApis();\n\n\tmodule.exports = getApiCheckInstance;\n\tmodule.exports.VERSION = (\"7.5.5\");\n\tmodule.exports.utils = apiCheckUtil;\n\tmodule.exports.globalConfig = {\n\t verbose: false,\n\t disabled: false\n\t};\n\n\tvar apiCheckApiCheck = getApiCheckInstance({\n\t output: { prefix: 'apiCheck' }\n\t});\n\tmodule.exports.internalChecker = apiCheckApiCheck;\n\n\teach(checkers, function (checker, name) {\n\t return module.exports[name] = checker;\n\t});\n\n\tfunction getApiCheckInstance() {\n\t var config = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t var extraCheckers = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n\t /* eslint complexity:[2, 6] */\n\t if (apiCheckApiCheck && arguments.length) {\n\t apiCheckApiCheck['throw'](apiCheckApis.getApiCheckInstanceCheckers, arguments, {\n\t prefix: 'creating an apiCheck instance'\n\t });\n\t }\n\n\t var additionalProperties = {\n\t 'throw': getApiCheck(true),\n\t warn: getApiCheck(false),\n\t getErrorMessage: getErrorMessage,\n\t handleErrorMessage: handleErrorMessage,\n\t config: {\n\t output: config.output || {\n\t prefix: '',\n\t suffix: '',\n\t docsBaseUrl: ''\n\t },\n\t verbose: config.verbose || false,\n\t disabled: config.disabled || false\n\t },\n\t utils: apiCheckUtil\n\t };\n\n\t each(additionalProperties, function (wrapper, name) {\n\t return apiCheck[name] = wrapper;\n\t });\n\n\t var disabled = apiCheck.disabled || module.exports.globalConfig.disabled;\n\t each(checkers.getCheckers(disabled), function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\t each(extraCheckers, function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\n\t return apiCheck;\n\n\t /**\n\t * This is the instance function. Other things are attached to this see additional properties above.\n\t * @param {Array} api - the checkers to check with\n\t * @param {Array} args - the args to check\n\t * @param {Object} output - output options\n\t * @returns {Object} - if this has a failed = true property, then it failed\n\t */\n\t function apiCheck(api, args, output) {\n\t /* eslint complexity:[2, 8] */\n\t if (apiCheck.config.disabled || module.exports.globalConfig.disabled) {\n\t return {\n\t apiTypes: {}, argTypes: {},\n\t passed: true, message: '',\n\t failed: false\n\t }; // empty version of what is normally returned\n\t }\n\t checkApiCheckApi(arguments);\n\t if (!Array.isArray(api)) {\n\t api = [api];\n\t args = [args];\n\t } else {\n\t // turn arguments into an array\n\t args = Array.prototype.slice.call(args);\n\t }\n\t var messages = checkEnoughArgs(api, args);\n\t if (!messages.length) {\n\t // this is where we actually go perform the checks.\n\t messages = checkApiWithArgs(api, args);\n\t }\n\n\t var returnObject = getTypes(api, args);\n\t returnObject.args = args;\n\t if (messages.length) {\n\t returnObject.message = apiCheck.getErrorMessage(api, args, messages, output);\n\t returnObject.failed = true;\n\t returnObject.passed = false;\n\t } else {\n\t returnObject.message = '';\n\t returnObject.failed = false;\n\t returnObject.passed = true;\n\t }\n\t return returnObject;\n\t }\n\n\t /**\n\t * checkApiCheckApi, should be read like: check apiCheck api. As in, check the api for apiCheck :-)\n\t * @param {Array} checkApiArgs - args provided to apiCheck function\n\t */\n\t function checkApiCheckApi(checkApiArgs) {\n\t var api = checkApiArgs[0];\n\t var args = checkApiArgs[1];\n\t var isArrayOrArgs = Array.isArray(args) || args && typeof args === 'object' && typeof args.length === 'number';\n\n\t if (Array.isArray(api) && !isArrayOrArgs) {\n\t throw new Error(getErrorMessage(api, [args], ['If an array is provided for the api, an array must be provided for the args as well.'], { prefix: 'apiCheck' }));\n\t }\n\t // dog fooding here\n\t var errors = checkApiWithArgs(apiCheckApis.checkApiCheckApi, checkApiArgs);\n\t if (errors.length) {\n\t var message = apiCheck.getErrorMessage(apiCheckApis.checkApiCheckApi, checkApiArgs, errors, {\n\t prefix: 'apiCheck'\n\t });\n\t apiCheck.handleErrorMessage(message, true);\n\t }\n\t }\n\n\t function getApiCheck(shouldThrow) {\n\t return function apiCheckWrapper(api, args, output) {\n\t var result = apiCheck(api, args, output);\n\t apiCheck.handleErrorMessage(result.message, shouldThrow);\n\t return result; // wont get here if an error is thrown\n\t };\n\t }\n\n\t function handleErrorMessage(message, shouldThrow) {\n\t if (shouldThrow && message) {\n\t throw new Error(message);\n\t } else if (message) {\n\t /* eslint no-console:0 */\n\t console.warn(message);\n\t }\n\t }\n\n\t function getErrorMessage(api, args) {\n\t var messages = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];\n\t var output = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];\n\n\t var gOut = apiCheck.config.output || {};\n\t var prefix = getPrefix();\n\t var suffix = getSuffix();\n\t var url = getUrl();\n\t var message = 'apiCheck failed! ' + messages.join(', ');\n\t var passedAndShouldHavePassed = '\\n\\n' + buildMessageFromApiAndArgs(api, args);\n\t return (prefix + ' ' + message + ' ' + suffix + ' ' + (url || '') + passedAndShouldHavePassed).trim();\n\n\t function getPrefix() {\n\t var p = output.onlyPrefix;\n\t if (!p) {\n\t p = ((gOut.prefix || '') + ' ' + (output.prefix || '')).trim();\n\t }\n\t return p;\n\t }\n\n\t function getSuffix() {\n\t var s = output.onlySuffix;\n\t if (!s) {\n\t s = ((output.suffix || '') + ' ' + (gOut.suffix || '')).trim();\n\t }\n\t return s;\n\t }\n\n\t function getUrl() {\n\t var u = output.url;\n\t if (!u) {\n\t u = gOut.docsBaseUrl && output.urlSuffix && ('' + gOut.docsBaseUrl + output.urlSuffix).trim();\n\t }\n\t return u;\n\t }\n\t }\n\n\t function buildMessageFromApiAndArgs(api, args) {\n\t var _getTypes = getTypes(api, args);\n\n\t var apiTypes = _getTypes.apiTypes;\n\t var argTypes = _getTypes.argTypes;\n\n\t var copy = Array.prototype.slice.call(args || []);\n\t var replacedItems = [];\n\t replaceFunctionWithName(copy);\n\t var passedArgs = getObjectString(copy);\n\t argTypes = getObjectString(argTypes);\n\t apiTypes = getObjectString(apiTypes);\n\n\t return generateMessage();\n\n\t // functions\n\n\t function replaceFunctionWithName(obj) {\n\t each(obj, function (val, name) {\n\t /* eslint complexity:[2, 6] */\n\t if (replacedItems.indexOf(val) === -1) {\n\t // avoid recursive problems\n\t replacedItems.push(val);\n\t if (typeof val === 'object') {\n\t replaceFunctionWithName(obj);\n\t } else if (typeof val === 'function') {\n\t obj[name] = val.displayName || val.name || 'anonymous function';\n\t }\n\t }\n\t });\n\t }\n\n\t function getObjectString(types) {\n\t if (!types || !types.length) {\n\t return 'nothing';\n\t } else if (types && types.length === 1) {\n\t types = types[0];\n\t }\n\t return stringify(types, null, 2);\n\t }\n\n\t function generateMessage() {\n\t var n = '\\n';\n\t var useS = true;\n\t if (args && args.length === 1) {\n\t if (typeof args[0] === 'object' && args[0] !== null) {\n\t useS = !!Object.keys(args[0]).length;\n\t } else {\n\t useS = false;\n\t }\n\t }\n\t var types = 'type' + (useS ? 's' : '');\n\t var newLine = n + n;\n\t return 'You passed:' + n + passedArgs + newLine + ('With the ' + types + ':' + n + argTypes + newLine) + ('The API calls for:' + n + apiTypes);\n\t }\n\t }\n\n\t function getTypes(api, args) {\n\t api = arrayify(api);\n\t args = arrayify(args);\n\t var apiTypes = api.map(function (checker, index) {\n\t var specified = module.exports.globalConfig.hasOwnProperty('verbose');\n\t return getCheckerDisplay(checker, {\n\t terse: specified ? !module.exports.globalConfig.verbose : !apiCheck.config.verbose,\n\t obj: args[index],\n\t addHelpers: true\n\t });\n\t });\n\t var argTypes = args.map(function (arg) {\n\t return getArgDisplay(arg, []);\n\t });\n\t return { argTypes: argTypes, apiTypes: apiTypes };\n\t }\n\t}\n\n\t// STATELESS FUNCTIONS\n\n\t/**\n\t * This is where the magic happens for actually checking the arguments with the api.\n\t * @param {Array} api - checkers\n\t * @param {Array} args - and arguments object\n\t * @returns {Array} - the error messages\n\t */\n\tfunction checkApiWithArgs(api, args) {\n\t /* eslint complexity:[2, 7] */\n\t var messages = [];\n\t var failed = false;\n\t var checkerIndex = 0;\n\t var argIndex = 0;\n\t var arg = undefined,\n\t checker = undefined,\n\t res = undefined,\n\t lastChecker = undefined,\n\t argName = undefined,\n\t argFailed = undefined,\n\t skipPreviousChecker = undefined;\n\t /* jshint -W084 */\n\t while ((checker = api[checkerIndex++]) && argIndex < args.length) {\n\t arg = args[argIndex++];\n\t argName = 'Argument ' + argIndex + (checker.isOptional ? ' (optional)' : '');\n\t res = checker(arg, 'value', argName);\n\t argFailed = isError(res);\n\t lastChecker = checkerIndex >= api.length;\n\t skipPreviousChecker = checkerIndex > 1 && api[checkerIndex - 1].isOptional;\n\t if (argFailed && lastChecker || argFailed && !lastChecker && !checker.isOptional && !skipPreviousChecker) {\n\t failed = true;\n\t messages.push(getCheckerErrorMessage(res, checker, arg));\n\t } else if (argFailed && checker.isOptional) {\n\t argIndex--;\n\t } else {\n\t messages.push(t(argName) + ' passed');\n\t }\n\t }\n\t return failed ? messages : [];\n\t}\n\n\tcheckerTypeType.type = 'function with __apiCheckData property and `${function.type}` property';\n\tfunction checkerTypeType(checkerType, name, location) {\n\t var apiCheckDataChecker = checkers.shape({\n\t type: checkers.string,\n\t optional: checkers.bool\n\t });\n\t var asFunc = checkers.func.withProperties({ __apiCheckData: apiCheckDataChecker });\n\t var asShape = checkers.shape({ __apiCheckData: apiCheckDataChecker });\n\t var wrongShape = checkers.oneOfType([asFunc, asShape])(checkerType, name, location);\n\t if (isError(wrongShape)) {\n\t return wrongShape;\n\t }\n\t if (typeof checkerType !== 'function' && !checkerType.hasOwnProperty(checkerType.__apiCheckData.type)) {\n\t return getError(name, location, checkerTypeType.type);\n\t }\n\t}\n\n\tfunction getCheckerErrorMessage(res, checker, val) {\n\t var checkerHelp = getCheckerHelp(checker, val);\n\t checkerHelp = checkerHelp ? ' - ' + checkerHelp : '';\n\t return res.message + checkerHelp;\n\t}\n\n\tfunction getCheckerHelp(_ref, val) {\n\t var help = _ref.help;\n\n\t if (!help) {\n\t return '';\n\t }\n\t if (typeof help === 'function') {\n\t help = help(val);\n\t }\n\t return help;\n\t}\n\n\tfunction checkEnoughArgs(api, args) {\n\t var requiredArgs = api.filter(function (a) {\n\t return !a.isOptional;\n\t });\n\t if (args.length < requiredArgs.length) {\n\t return ['Not enough arguments specified. Requires `' + requiredArgs.length + '`, you passed `' + args.length + '`'];\n\t } else {\n\t return [];\n\t }\n\t}\n\n\tfunction getArgDisplay(arg, gottenArgs) {\n\t /* eslint complexity:[2, 7] */\n\t var cName = arg && arg.constructor && arg.constructor.name;\n\t var type = typeOf(arg);\n\t if (type === 'function') {\n\t if (hasKeys()) {\n\t var properties = stringify(getDisplayIfNotGotten());\n\t return cName + ' (with properties: ' + properties + ')';\n\t }\n\t return cName;\n\t }\n\n\t if (arg === null) {\n\t return 'null';\n\t }\n\n\t if (type !== 'array' && type !== 'object') {\n\t return type;\n\t }\n\n\t if (hasKeys()) {\n\t return getDisplayIfNotGotten();\n\t }\n\n\t return cName;\n\n\t // utility functions\n\t function hasKeys() {\n\t return arg && Object.keys(arg).length;\n\t }\n\n\t function getDisplayIfNotGotten() {\n\t if (gottenArgs.indexOf(arg) !== -1) {\n\t return '[Circular]';\n\t }\n\t gottenArgs.push(arg);\n\t return getDisplay(arg, gottenArgs);\n\t }\n\t}\n\n\tfunction getDisplay(obj, gottenArgs) {\n\t var argDisplay = {};\n\t each(obj, function (v, k) {\n\t return argDisplay[k] = getArgDisplay(v, gottenArgs);\n\t });\n\t return argDisplay;\n\t}\n\n\tfunction getApiCheckApis() {\n\t var os = checkers.string.optional;\n\n\t var checkerFnChecker = checkers.func.withProperties({\n\t type: checkers.oneOfType([checkers.string, checkerTypeType]).optional,\n\t displayName: checkers.string.optional,\n\t shortType: checkers.string.optional,\n\t notOptional: checkers.bool.optional,\n\t notRequired: checkers.bool.optional\n\t });\n\n\t var getApiCheckInstanceCheckers = [checkers.shape({\n\t output: checkers.shape({\n\t prefix: checkers.string.optional,\n\t suffix: checkers.string.optional,\n\t docsBaseUrl: checkers.string.optional\n\t }).strict.optional,\n\t verbose: checkers.bool.optional,\n\t disabled: checkers.bool.optional\n\t }).strict.optional, checkers.objectOf(checkerFnChecker).optional];\n\n\t var checkApiCheckApi = [checkers.typeOrArrayOf(checkerFnChecker), checkers.any.optional, checkers.shape({\n\t prefix: os, suffix: os, urlSuffix: os, // appended case\n\t onlyPrefix: os, onlySuffix: os, url: os // override case\n\t }).strict.optional];\n\n\t return {\n\t checkerFnChecker: checkerFnChecker,\n\t getApiCheckInstanceCheckers: getApiCheckInstanceCheckers,\n\t checkApiCheckApi: checkApiCheckApi\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = stringify;\n\n\tfunction getSerialize (fn, decycle) {\n\t var seen = [], keys = [];\n\t decycle = decycle || function(key, value) {\n\t return '[Circular ' + getPath(value, seen, keys) + ']'\n\t };\n\t return function(key, value) {\n\t var ret = value;\n\t if (typeof value === 'object' && value) {\n\t if (seen.indexOf(value) !== -1)\n\t ret = decycle(key, value);\n\t else {\n\t seen.push(value);\n\t keys.push(key);\n\t }\n\t }\n\t if (fn) ret = fn(key, ret);\n\t return ret;\n\t }\n\t}\n\n\tfunction getPath (value, seen, keys) {\n\t var index = seen.indexOf(value);\n\t var path = [ keys[index] ];\n\t for (index--; index >= 0; index--) {\n\t if (seen[index][ path[0] ] === value) {\n\t value = seen[index];\n\t path.unshift(keys[index]);\n\t }\n\t }\n\t return '~' + path.join('.');\n\t}\n\n\tfunction stringify(obj, fn, spaces, decycle) {\n\t return JSON.stringify(obj, getSerialize(fn, decycle), spaces);\n\t}\n\n\tstringify.getSerialize = getSerialize;\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\tvar stringify = __webpack_require__(2);\n\tvar checkerHelpers = {\n\t addOptional: addOptional, getRequiredVersion: getRequiredVersion, setupChecker: setupChecker, addNullable: addNullable\n\t};\n\n\tmodule.exports = {\n\t each: each, copy: copy, typeOf: typeOf, arrayify: arrayify, getCheckerDisplay: getCheckerDisplay,\n\t isError: isError, list: list, getError: getError, nAtL: nAtL, t: t, undef: undef, checkerHelpers: checkerHelpers,\n\t noop: noop\n\t};\n\n\tfunction copy(obj) {\n\t var type = typeOf(obj);\n\t var daCopy = undefined;\n\t if (type === 'array') {\n\t daCopy = [];\n\t } else if (type === 'object') {\n\t daCopy = {};\n\t } else {\n\t return obj;\n\t }\n\t each(obj, function (val, key) {\n\t daCopy[key] = val; // cannot single-line this because we don't want to abort the each\n\t });\n\t return daCopy;\n\t}\n\n\tfunction typeOf(obj) {\n\t if (Array.isArray(obj)) {\n\t return 'array';\n\t } else if (obj instanceof RegExp) {\n\t return 'object';\n\t } else {\n\t return typeof obj;\n\t }\n\t}\n\n\tfunction getCheckerDisplay(checker, options) {\n\t /* eslint complexity:[2, 7] */\n\t var display = undefined;\n\t var short = options && options.short;\n\t if (short && checker.shortType) {\n\t display = checker.shortType;\n\t } else if (!short && typeof checker.type === 'object' || checker.type === 'function') {\n\t display = getCheckerType(checker, options);\n\t } else {\n\t display = getCheckerType(checker, options) || checker.displayName || checker.name;\n\t }\n\t return display;\n\t}\n\n\tfunction getCheckerType(_ref, options) {\n\t var type = _ref.type;\n\n\t if (typeof type === 'function') {\n\t var __apiCheckData = type.__apiCheckData;\n\t var typeTypes = type(options);\n\t type = _defineProperty({\n\t __apiCheckData: __apiCheckData\n\t }, __apiCheckData.type, typeTypes);\n\t }\n\t return type;\n\t}\n\n\tfunction arrayify(obj) {\n\t if (!obj) {\n\t return [];\n\t } else if (Array.isArray(obj)) {\n\t return obj;\n\t } else {\n\t return [obj];\n\t }\n\t}\n\n\tfunction each(obj, iterator, context) {\n\t if (Array.isArray(obj)) {\n\t return eachArry(obj, iterator, context);\n\t } else {\n\t return eachObj(obj, iterator, context);\n\t }\n\t}\n\n\tfunction eachObj(obj, iterator, context) {\n\t var ret = undefined;\n\t var hasOwn = Object.prototype.hasOwnProperty;\n\t /* eslint prefer-const:0 */ // some weird eslint bug?\n\t for (var key in obj) {\n\t if (hasOwn.call(obj, key)) {\n\t ret = iterator.call(context, obj[key], key, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t }\n\t return true;\n\t}\n\n\tfunction eachArry(obj, iterator, context) {\n\t var ret = undefined;\n\t var length = obj.length;\n\t for (var i = 0; i < length; i++) {\n\t ret = iterator.call(context, obj[i], i, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t return true;\n\t}\n\n\tfunction isError(obj) {\n\t return obj instanceof Error;\n\t}\n\n\tfunction list(arry, join, finalJoin) {\n\t arry = arrayify(arry);\n\t var copy = arry.slice();\n\t var last = copy.pop();\n\t if (copy.length === 1) {\n\t join = ' ';\n\t }\n\t return copy.join(join) + ('' + (copy.length ? join + finalJoin : '') + last);\n\t}\n\n\tfunction getError(name, location, checkerType) {\n\t if (typeof checkerType === 'function') {\n\t checkerType = checkerType({ short: true });\n\t }\n\t var stringType = typeof checkerType !== 'object' ? checkerType : stringify(checkerType);\n\t return new Error(nAtL(name, location) + ' must be ' + t(stringType));\n\t}\n\n\tfunction nAtL(name, location) {\n\t var tName = t(name || 'value');\n\t var tLocation = !location ? '' : ' at ' + t(location);\n\t return '' + tName + tLocation;\n\t}\n\n\tfunction t(thing) {\n\t return '`' + thing + '`';\n\t}\n\n\tfunction undef(thing) {\n\t return typeof thing === 'undefined';\n\t}\n\n\t/**\n\t * This will set up the checker with all of the defaults that most checkers want like required by default and an\n\t * optional version\n\t *\n\t * @param {Function} checker - the checker to setup with properties\n\t * @param {Object} properties - properties to add to the checker\n\t * @param {boolean} disabled - when set to true, this will set the checker to a no-op function\n\t * @returns {Function} checker - the setup checker\n\t */\n\tfunction setupChecker(checker, properties, disabled) {\n\t /* eslint complexity:[2, 9] */\n\t if (disabled) {\n\t // swap out the checker for its own copy of noop\n\t checker = getNoop();\n\t checker.isNoop = true;\n\t }\n\n\t if (typeof checker.type === 'string') {\n\t checker.shortType = checker.type;\n\t }\n\n\t // assign all properties given\n\t each(properties, function (prop, name) {\n\t return checker[name] = prop;\n\t });\n\n\t if (!checker.displayName) {\n\t checker.displayName = 'apiCheck ' + t(checker.shortType || checker.type || checker.name) + ' type checker';\n\t }\n\n\t if (!checker.notRequired) {\n\t checker = getRequiredVersion(checker, disabled);\n\t }\n\n\t if (!checker.notNullable) {\n\t addNullable(checker, disabled);\n\t }\n\n\t if (!checker.notOptional) {\n\t addOptional(checker, disabled);\n\t }\n\n\t return checker;\n\t}\n\n\tfunction getRequiredVersion(checker, disabled) {\n\t var requiredChecker = disabled ? getNoop() : function requiredChecker(val, name, location, obj) {\n\t if (undef(val) && !checker.isOptional) {\n\t var tLocation = location ? ' in ' + t(location) : '';\n\t var type = getCheckerDisplay(checker, { short: true });\n\t var stringType = typeof type !== 'object' ? type : stringify(type);\n\t return new Error('Required ' + t(name) + ' not specified' + tLocation + '. Must be ' + t(stringType));\n\t } else {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t copyProps(checker, requiredChecker);\n\t requiredChecker.originalChecker = checker;\n\t return requiredChecker;\n\t}\n\n\tfunction addOptional(checker, disabled) {\n\t var optionalCheck = disabled ? getNoop() : function optionalCheck(val, name, location, obj) {\n\t if (!undef(val)) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, optionalCheck);\n\n\t optionalCheck.isOptional = true;\n\t optionalCheck.displayName = checker.displayName + ' (optional)';\n\t optionalCheck.originalChecker = checker;\n\n\t // the magic line that allows you to add .optional to the end of the checkers\n\t checker.optional = optionalCheck;\n\n\t fixType(checker, checker.optional);\n\t}\n\n\tfunction addNullable(checker, disabled) {\n\t var nullableCheck = disabled ? getNoop() : function nullableCheck(val, name, location, obj) {\n\t if (val !== null) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, nullableCheck);\n\n\t nullableCheck.isNullable = true;\n\t nullableCheck.displayName = checker.displayName + ' (nullable)';\n\t nullableCheck.originalChecker = checker;\n\n\t // the magic line that allows you to add .nullable to the end of the checkers\n\t checker.nullable = nullableCheck;\n\n\t fixType(checker, checker.nullable);\n\t if (!checker.notOptional) {\n\t addOptional(checker.nullable, disabled);\n\t }\n\t}\n\n\tfunction fixType(checker, checkerCopy) {\n\t // fix type, because it's not a straight copy...\n\t // the reason is we need to specify type.__apiCheckData.optional as true for the terse/verbose option.\n\t // we also want to add \"(optional)\" to the types with a string\n\t if (typeof checkerCopy.type === 'object') {\n\t checkerCopy.type = copy(checkerCopy.type); // make our own copy of this\n\t } else if (typeof checkerCopy.type === 'function') {\n\t checkerCopy.type = function () {\n\t return checker.type.apply(checker, arguments);\n\t };\n\t } else {\n\t checkerCopy.type += ' (optional)';\n\t return;\n\t }\n\t checkerCopy.type.__apiCheckData = copy(checker.type.__apiCheckData) || {}; // and this\n\t checkerCopy.type.__apiCheckData.optional = true;\n\t}\n\n\t// UTILS\n\n\tfunction copyProps(src, dest) {\n\t each(Object.keys(src), function (key) {\n\t return dest[key] = src[key];\n\t });\n\t}\n\n\tfunction noop() {}\n\n\tfunction getNoop() {\n\t /* eslint no-shadow:0 */\n\t /* istanbul ignore next */\n\t return function noop() {};\n\t}\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar stringify = __webpack_require__(2);\n\n\tvar _require = __webpack_require__(3);\n\n\tvar typeOf = _require.typeOf;\n\tvar each = _require.each;\n\tvar copy = _require.copy;\n\tvar getCheckerDisplay = _require.getCheckerDisplay;\n\tvar isError = _require.isError;\n\tvar arrayify = _require.arrayify;\n\tvar list = _require.list;\n\tvar getError = _require.getError;\n\tvar nAtL = _require.nAtL;\n\tvar t = _require.t;\n\tvar checkerHelpers = _require.checkerHelpers;\n\tvar undef = _require.undef;\n\tvar setupChecker = checkerHelpers.setupChecker;\n\n\tvar checkers = module.exports = getCheckers();\n\tmodule.exports.getCheckers = getCheckers;\n\n\tfunction getCheckers(disabled) {\n\t return {\n\t array: typeOfCheckGetter('Array'),\n\t bool: typeOfCheckGetter('Boolean'),\n\t number: typeOfCheckGetter('Number'),\n\t string: typeOfCheckGetter('String'),\n\t func: funcCheckGetter(),\n\t object: objectCheckGetter(),\n\n\t emptyObject: emptyObjectCheckGetter(),\n\n\t instanceOf: instanceCheckGetter,\n\t oneOf: oneOfCheckGetter,\n\t oneOfType: oneOfTypeCheckGetter,\n\n\t arrayOf: arrayOfCheckGetter,\n\t objectOf: objectOfCheckGetter,\n\t typeOrArrayOf: typeOrArrayOfCheckGetter,\n\n\t range: rangeCheckGetter,\n\t lessThan: lessThanCheckGetter,\n\t greaterThan: greaterThanCheckGetter,\n\n\t shape: getShapeCheckGetter(),\n\t args: argumentsCheckerGetter(),\n\n\t any: anyCheckGetter(),\n\t 'null': nullCheckGetter()\n\n\t };\n\n\t function typeOfCheckGetter(type) {\n\t var lType = type.toLowerCase();\n\t return setupChecker(function typeOfCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== lType) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function funcCheckGetter() {\n\t var type = 'Function';\n\t var functionChecker = setupChecker(function functionCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== 'function') {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\n\t functionChecker.withProperties = function getWithPropertiesChecker(properties) {\n\t var apiError = checkers.objectOf(checkers.func)(properties, 'properties', 'apiCheck.func.withProperties');\n\t if (isError(apiError)) {\n\t throw apiError;\n\t }\n\t var shapeChecker = checkers.shape(properties, true);\n\t shapeChecker.type.__apiCheckData.type = 'func.withProperties';\n\n\t return setupChecker(function functionWithPropertiesChecker(val, name, location) {\n\t var notFunction = checkers.func(val, name, location);\n\t if (isError(notFunction)) {\n\t return notFunction;\n\t }\n\t return shapeChecker(val, name, location);\n\t }, { type: shapeChecker.type, shortType: 'func.withProperties' }, disabled);\n\t };\n\t return functionChecker;\n\t }\n\n\t function objectCheckGetter() {\n\t var type = 'Object';\n\t var nullType = 'Object (null ok)';\n\t var objectNullOkChecker = setupChecker(function objectNullOkCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== 'object') {\n\t return getError(name, location, nullType);\n\t }\n\t }, { type: nullType }, disabled);\n\n\t var objectChecker = setupChecker(function objectCheckerDefinition(val, name, location) {\n\t if (val === null || isError(objectNullOkChecker(val, name, location))) {\n\t return getError(name, location, objectChecker.type);\n\t }\n\t }, { type: type, nullOk: objectNullOkChecker }, disabled);\n\n\t return objectChecker;\n\t }\n\n\t function instanceCheckGetter(classToCheck) {\n\t return setupChecker(function instanceCheckerDefinition(val, name, location) {\n\t if (!(val instanceof classToCheck)) {\n\t return getError(name, location, classToCheck.name);\n\t }\n\t }, { type: classToCheck.name }, disabled);\n\t }\n\n\t function oneOfCheckGetter(enums) {\n\t var type = {\n\t __apiCheckData: { optional: false, type: 'enum' },\n\t 'enum': enums\n\t };\n\t var shortType = 'oneOf[' + enums.map(function (enm) {\n\t return stringify(enm);\n\t }).join(', ') + ']';\n\t return setupChecker(function oneOfCheckerDefinition(val, name, location) {\n\t if (!enums.some(function (enm) {\n\t return enm === val;\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function oneOfTypeCheckGetter(typeCheckers) {\n\t var checkersDisplay = typeCheckers.map(function (checker) {\n\t return getCheckerDisplay(checker, { short: true });\n\t });\n\t var shortType = 'oneOfType[' + checkersDisplay.join(', ') + ']';\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return typeCheckers.map(function (checker) {\n\t return getCheckerDisplay(checker, options);\n\t });\n\t }\n\t type.__apiCheckData = { optional: false, type: 'oneOfType' };\n\t return setupChecker(function oneOfTypeCheckerDefinition(val, name, location) {\n\t if (!typeCheckers.some(function (checker) {\n\t return !isError(checker(val, name, location));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function arrayOfCheckGetter(checker) {\n\t var shortCheckerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'arrayOf[' + shortCheckerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'arrayOf' };\n\n\t return setupChecker(function arrayOfCheckerDefinition(val, name, location) {\n\t if (isError(checkers.array(val)) || !val.every(function (item) {\n\t return !isError(checker(item));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function objectOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'objectOf[' + checkerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'objectOf' };\n\n\t return setupChecker(function objectOfCheckerDefinition(val, name, location) {\n\t var notObject = checkers.object(val, name, location);\n\t if (isError(notObject)) {\n\t return notObject;\n\t }\n\t var allTypesSuccess = each(val, function (item, key) {\n\t if (isError(checker(item, key, name))) {\n\t return false;\n\t }\n\t });\n\t if (!allTypesSuccess) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function typeOrArrayOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'typeOrArrayOf[' + checkerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\n\t type.__apiCheckData = { optional: false, type: 'typeOrArrayOf' };\n\t return setupChecker(function typeOrArrayOfDefinition(val, name, location, obj) {\n\t if (isError(checkers.oneOfType([checker, checkers.arrayOf(checker)])(val, name, location, obj))) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function getShapeCheckGetter() {\n\t function shapeCheckGetter(shape, nonObject) {\n\t var shapeTypes = {};\n\t each(shape, function (checker, prop) {\n\t shapeTypes[prop] = getCheckerDisplay(checker);\n\t });\n\t function type() {\n\t var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n\t var ret = {};\n\t var terse = options.terse;\n\t var obj = options.obj;\n\t var addHelpers = options.addHelpers;\n\n\t var parentRequired = options.required;\n\t each(shape, function (checker, prop) {\n\t /* eslint complexity:[2, 6] */\n\t var specified = obj && obj.hasOwnProperty(prop);\n\t var required = undef(parentRequired) ? !checker.isOptional : parentRequired;\n\t if (!terse || (specified || !checker.isOptional)) {\n\t ret[prop] = getCheckerDisplay(checker, { terse: terse, obj: obj && obj[prop], required: required, addHelpers: addHelpers });\n\t }\n\t if (addHelpers) {\n\t modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required);\n\t }\n\t });\n\t return ret;\n\n\t function modifyTypeDisplayToHelpOut(theRet, prop, specified, checker, required) {\n\t if (!specified && required && !checker.isOptional) {\n\t var item = 'ITEM';\n\t if (checker.type && checker.type.__apiCheckData) {\n\t item = checker.type.__apiCheckData.type.toUpperCase();\n\t }\n\t addHelper('missing', 'MISSING THIS ' + item, ' <-- YOU ARE MISSING THIS');\n\t } else if (specified) {\n\t var error = checker(obj[prop], prop, null, obj);\n\t if (isError(error)) {\n\t addHelper('error', 'THIS IS THE PROBLEM: ' + error.message, ' <-- THIS IS THE PROBLEM: ' + error.message);\n\t }\n\t }\n\n\t function addHelper(property, objectMessage, stringMessage) {\n\t if (typeof theRet[prop] === 'string') {\n\t theRet[prop] += stringMessage;\n\t } else {\n\t theRet[prop].__apiCheckData[property] = objectMessage;\n\t }\n\t }\n\t }\n\t }\n\n\t type.__apiCheckData = { strict: false, optional: false, type: 'shape' };\n\t var shapeChecker = setupChecker(function shapeCheckerDefinition(val, name, location) {\n\t /* eslint complexity:[2, 6] */\n\t var isObject = !nonObject && checkers.object(val, name, location);\n\t if (isError(isObject)) {\n\t return isObject;\n\t }\n\t var shapePropError = undefined;\n\t location = location ? location + (name ? '/' : '') : '';\n\t name = name || '';\n\t each(shape, function (checker, prop) {\n\t if (val.hasOwnProperty(prop) || !checker.isOptional) {\n\t shapePropError = checker(val[prop], prop, '' + location + name, val);\n\t return !isError(shapePropError);\n\t }\n\t });\n\t if (isError(shapePropError)) {\n\t return shapePropError;\n\t }\n\t }, { type: type, shortType: 'shape' }, disabled);\n\n\t function strictType() {\n\t return type.apply(undefined, arguments);\n\t }\n\n\t strictType.__apiCheckData = copy(shapeChecker.type.__apiCheckData);\n\t strictType.__apiCheckData.strict = true;\n\t shapeChecker.strict = setupChecker(function strictShapeCheckerDefinition(val, name, location) {\n\t var shapeError = shapeChecker(val, name, location);\n\t if (isError(shapeError)) {\n\t return shapeError;\n\t }\n\t var allowedProperties = Object.keys(shape);\n\t var extraProps = Object.keys(val).filter(function (prop) {\n\t return allowedProperties.indexOf(prop) === -1;\n\t });\n\t if (extraProps.length) {\n\t return new Error(nAtL(name, location) + ' cannot have extra properties: ' + t(extraProps.join('`, `')) + '.' + ('It is limited to ' + t(allowedProperties.join('`, `'))));\n\t }\n\t }, { type: strictType, shortType: 'strict shape' }, disabled);\n\n\t return shapeChecker;\n\t }\n\n\t shapeCheckGetter.ifNot = function ifNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = 'specified only if ' + otherProps[0] + ' is not specified';\n\t } else {\n\t description = 'specified only if none of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t }\n\t var shortType = 'ifNot[' + otherProps.join(', ') + ']';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function ifNotChecker(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (propExists === otherPropsExist) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { notRequired: true, type: type, shortType: shortType }, disabled);\n\t };\n\n\t shapeCheckGetter.onlyIf = function onlyIf(otherProps, propChecker) {\n\t otherProps = arrayify(otherProps);\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = 'specified only if ' + otherProps[0] + ' is also specified';\n\t } else {\n\t description = 'specified only if all of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t }\n\t var shortType = 'onlyIf[' + otherProps.join(', ') + ']';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function onlyIfCheckerDefinition(prop, propName, location, obj) {\n\t var othersPresent = otherProps.every(function (property) {\n\t return obj.hasOwnProperty(property);\n\t });\n\t if (!othersPresent) {\n\t return getError(propName, location, type);\n\t } else {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t };\n\n\t shapeCheckGetter.requiredIfNot = function shapeRequiredIfNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t return getRequiredIfNotChecker(false, otherProps, propChecker);\n\t };\n\n\t shapeCheckGetter.requiredIfNot.all = function shapeRequiredIfNotAll(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t throw new Error('requiredIfNot.all must be passed an array');\n\t }\n\t return getRequiredIfNotChecker(true, otherProps, propChecker);\n\t };\n\n\t function getRequiredIfNotChecker(all, otherProps, propChecker) {\n\t var props = t(otherProps.join(', '));\n\t var ifProps = 'if ' + (all ? 'all of' : 'at least one of');\n\t var description = 'specified ' + ifProps + ' these are not specified: ' + props + ' (otherwise it\\'s optional)';\n\t var shortType = 'requiredIfNot' + (all ? '.all' : '') + '[' + otherProps.join(', ') + '}]';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var iteration = all ? 'every' : 'some';\n\t var otherPropsExist = otherProps[iteration](function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (!otherPropsExist && !propExists) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, notRequired: true }, disabled);\n\t }\n\n\t return shapeCheckGetter;\n\n\t function getTypeForShapeChild(propChecker, description, shortType) {\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(propChecker);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'ifNot', description: description };\n\t return type;\n\t }\n\t }\n\n\t function argumentsCheckerGetter() {\n\t var type = 'function arguments';\n\t return setupChecker(function argsCheckerDefinition(val, name, location) {\n\t if (Array.isArray(val) || isError(checkers.object(val)) || isError(checkers.number(val.length))) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function anyCheckGetter() {\n\t return setupChecker(function anyCheckerDefinition() {\n\t // don't do anything\n\t }, { type: 'any' }, disabled);\n\t }\n\n\t function nullCheckGetter() {\n\t var type = 'null';\n\t return setupChecker(function nullChecker(val, name, location) {\n\t if (val !== null) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function rangeCheckGetter(min, max) {\n\t var type = 'Range (' + min + ' - ' + max + ')';\n\t return setupChecker(function rangeChecker(val, name, location) {\n\t if (typeof val !== 'number' || val < min || val > max) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function lessThanCheckGetter(min) {\n\t var type = 'lessThan[' + min + ']';\n\t return setupChecker(function lessThanChecker(val, name, location) {\n\t if (typeof val !== 'number' || val > min) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function greaterThanCheckGetter(max) {\n\t var type = 'greaterThan[' + max + ']';\n\t return setupChecker(function greaterThanChecker(val, name, location) {\n\t if (typeof val !== 'number' || val < max) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function emptyObjectCheckGetter() {\n\t var type = 'empty object';\n\t return setupChecker(function emptyObjectChecker(val, name, location) {\n\t if (typeOf(val) !== 'object' || val === null || Object.keys(val).length) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t}\n\n/***/ }\n/******/ ])\n});\n;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2FwaS1jaGVjay9kaXN0L2FwaS1jaGVjay5qcz83ZWE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxvQ0FBb0M7QUFDcEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGLHVDQUF1Qyx1Q0FBdUMsa0JBQWtCOztBQUVoRzs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWTtBQUNaLEVBQUU7QUFDRjs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBLHdFQUF3RTtBQUN4RSwrRUFBK0U7O0FBRS9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7O0FBRUo7O0FBRUE7QUFDQTtBQUNBLGNBQWMsTUFBTTtBQUNwQixjQUFjLE1BQU07QUFDcEIsY0FBYyxPQUFP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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEdBQUcsYUFBYTtBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEdBQUcsYUFBYTtBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEdBQUcsYUFBYTtBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiMi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vISBhcGktY2hlY2sgdmVyc2lvbiA3LjUuNSBidWlsdCB3aXRoIOKZpSBieSBLZW50IEMuIERvZGRzIDxrZW50QGRvZGRzZmFtaWx5LnVzPiAoaHR0cDovL2tlbnQuZG9kZHNmYW1pbHkudXMpICjDsyDDrF/DrSk9w7PDsj0ow6xfw60gw7IpXG5cbihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiYXBpQ2hlY2tcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiYXBpQ2hlY2tcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fSxcbi8qKioqKiovIFx0XHRcdGlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGxvYWRlZDogZmFsc2Vcbi8qKioqKiovIFx0XHR9O1xuXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuXG5cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cblx0dmFyIF9hcGlDaGVjayA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cblx0dmFyIF9hcGlDaGVjazIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hcGlDaGVjayk7XG5cblx0ZXhwb3J0c1snZGVmYXVsdCddID0gX2FwaUNoZWNrMlsnZGVmYXVsdCddO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgc3RyaW5naWZ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0dmFyIGFwaUNoZWNrVXRpbCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdHZhciBlYWNoID0gYXBpQ2hlY2tVdGlsLmVhY2g7XG5cdHZhciBpc0Vycm9yID0gYXBpQ2hlY2tVdGlsLmlzRXJyb3I7XG5cdHZhciB0ID0gYXBpQ2hlY2tVdGlsLnQ7XG5cdHZhciBhcnJheWlmeSA9IGFwaUNoZWNrVXRpbC5hcnJheWlmeTtcblx0dmFyIGdldENoZWNrZXJEaXNwbGF5ID0gYXBpQ2hlY2tVdGlsLmdldENoZWNrZXJEaXNwbGF5O1xuXHR2YXIgdHlwZU9mID0gYXBpQ2hlY2tVdGlsLnR5cGVPZjtcblx0dmFyIGdldEVycm9yID0gYXBpQ2hlY2tVdGlsLmdldEVycm9yO1xuXG5cdHZhciBjaGVja2VycyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdHZhciBhcGlDaGVja0FwaXMgPSBnZXRBcGlDaGVja0FwaXMoKTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldEFwaUNoZWNrSW5zdGFuY2U7XG5cdG1vZHVsZS5leHBvcnRzLlZFUlNJT04gPSAoXCI3LjUuNVwiKTtcblx0bW9kdWxlLmV4cG9ydHMudXRpbHMgPSBhcGlDaGVja1V0aWw7XG5cdG1vZHVsZS5leHBvcnRzLmdsb2JhbENvbmZpZyA9IHtcblx0ICB2ZXJib3NlOiBmYWxzZSxcblx0ICBkaXNhYmxlZDogZmFsc2Vcblx0fTtcblxuXHR2YXIgYXBpQ2hlY2tBcGlDaGVjayA9IGdldEFwaUNoZWNrSW5zdGFuY2Uoe1xuXHQgIG91dHB1dDogeyBwcmVmaXg6ICdhcGlDaGVjaycgfVxuXHR9KTtcblx0bW9kdWxlLmV4cG9ydHMuaW50ZXJuYWxDaGVja2VyID0gYXBpQ2hlY2tBcGlDaGVjaztcblxuXHRlYWNoKGNoZWNrZXJzLCBmdW5jdGlvbiAoY2hlY2tlciwgbmFtZSkge1xuXHQgIHJldHVybiBtb2R1bGUuZXhwb3J0c1tuYW1lXSA9IGNoZWNrZXI7XG5cdH0pO1xuXG5cdGZ1bmN0aW9uIGdldEFwaUNoZWNrSW5zdGFuY2UoKSB7XG5cdCAgdmFyIGNvbmZpZyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXHQgIHZhciBleHRyYUNoZWNrZXJzID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMV07XG5cblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgNl0gKi9cblx0ICBpZiAoYXBpQ2hlY2tBcGlDaGVjayAmJiBhcmd1bWVudHMubGVuZ3RoKSB7XG5cdCAgICBhcGlDaGVja0FwaUNoZWNrWyd0aHJvdyddKGFwaUNoZWNrQXBpcy5nZXRBcGlDaGVja0luc3RhbmNlQ2hlY2tlcnMsIGFyZ3VtZW50cywge1xuXHQgICAgICBwcmVmaXg6ICdjcmVhdGluZyBhbiBhcGlDaGVjayBpbnN0YW5jZSdcblx0ICAgIH0pO1xuXHQgIH1cblxuXHQgIHZhciBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHtcblx0ICAgICd0aHJvdyc6IGdldEFwaUNoZWNrKHRydWUpLFxuXHQgICAgd2FybjogZ2V0QXBpQ2hlY2soZmFsc2UpLFxuXHQgICAgZ2V0RXJyb3JNZXNzYWdlOiBnZXRFcnJvck1lc3NhZ2UsXG5cdCAgICBoYW5kbGVFcnJvck1lc3NhZ2U6IGhhbmRsZUVycm9yTWVzc2FnZSxcblx0ICAgIGNvbmZpZzoge1xuXHQgICAgICBvdXRwdXQ6IGNvbmZpZy5vdXRwdXQgfHwge1xuXHQgICAgICAgIHByZWZpeDogJycsXG5cdCAgICAgICAgc3VmZml4OiAnJyxcblx0ICAgICAgICBkb2NzQmFzZVVybDogJydcblx0ICAgICAgfSxcblx0ICAgICAgdmVyYm9zZTogY29uZmlnLnZlcmJvc2UgfHwgZmFsc2UsXG5cdCAgICAgIGRpc2FibGVkOiBjb25maWcuZGlzYWJsZWQgfHwgZmFsc2Vcblx0ICAgIH0sXG5cdCAgICB1dGlsczogYXBpQ2hlY2tVdGlsXG5cdCAgfTtcblxuXHQgIGVhY2goYWRkaXRpb25hbFByb3BlcnRpZXMsIGZ1bmN0aW9uICh3cmFwcGVyLCBuYW1lKSB7XG5cdCAgICByZXR1cm4gYXBpQ2hlY2tbbmFtZV0gPSB3cmFwcGVyO1xuXHQgIH0pO1xuXG5cdCAgdmFyIGRpc2FibGVkID0gYXBpQ2hlY2suZGlzYWJsZWQgfHwgbW9kdWxlLmV4cG9ydHMuZ2xvYmFsQ29uZmlnLmRpc2FibGVkO1xuXHQgIGVhY2goY2hlY2tlcnMuZ2V0Q2hlY2tlcnMoZGlzYWJsZWQpLCBmdW5jdGlvbiAoY2hlY2tlciwgbmFtZSkge1xuXHQgICAgcmV0dXJuIGFwaUNoZWNrW25hbWVdID0gY2hlY2tlcjtcblx0ICB9KTtcblx0ICBlYWNoKGV4dHJhQ2hlY2tlcnMsIGZ1bmN0aW9uIChjaGVja2VyLCBuYW1lKSB7XG5cdCAgICByZXR1cm4gYXBpQ2hlY2tbbmFtZV0gPSBjaGVja2VyO1xuXHQgIH0pO1xuXG5cdCAgcmV0dXJuIGFwaUNoZWNrO1xuXG5cdCAgLyoqXG5cdCAgICogVGhpcyBpcyB0aGUgaW5zdGFuY2UgZnVuY3Rpb24uIE90aGVyIHRoaW5ncyBhcmUgYXR0YWNoZWQgdG8gdGhpcyBzZWUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGFib3ZlLlxuXHQgICAqIEBwYXJhbSB7QXJyYXl9IGFwaSAtIHRoZSBjaGVja2VycyB0byBjaGVjayB3aXRoXG5cdCAgICogQHBhcmFtIHtBcnJheX0gYXJncyAtIHRoZSBhcmdzIHRvIGNoZWNrXG5cdCAgICogQHBhcmFtIHtPYmplY3R9IG91dHB1dCAtIG91dHB1dCBvcHRpb25zXG5cdCAgICogQHJldHVybnMge09iamVjdH0gLSBpZiB0aGlzIGhhcyBhIGZhaWxlZCA9IHRydWUgcHJvcGVydHksIHRoZW4gaXQgZmFpbGVkXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gYXBpQ2hlY2soYXBpLCBhcmdzLCBvdXRwdXQpIHtcblx0ICAgIC8qIGVzbGludCBjb21wbGV4aXR5OlsyLCA4XSAqL1xuXHQgICAgaWYgKGFwaUNoZWNrLmNvbmZpZy5kaXNhYmxlZCB8fCBtb2R1bGUuZXhwb3J0cy5nbG9iYWxDb25maWcuZGlzYWJsZWQpIHtcblx0ICAgICAgcmV0dXJuIHtcblx0ICAgICAgICBhcGlUeXBlczoge30sIGFyZ1R5cGVzOiB7fSxcblx0ICAgICAgICBwYXNzZWQ6IHRydWUsIG1lc3NhZ2U6ICcnLFxuXHQgICAgICAgIGZhaWxlZDogZmFsc2Vcblx0ICAgICAgfTsgLy8gZW1wdHkgdmVyc2lvbiBvZiB3aGF0IGlzIG5vcm1hbGx5IHJldHVybmVkXG5cdCAgICB9XG5cdCAgICBjaGVja0FwaUNoZWNrQXBpKGFyZ3VtZW50cyk7XG5cdCAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXBpKSkge1xuXHQgICAgICBhcGkgPSBbYXBpXTtcblx0ICAgICAgYXJncyA9IFthcmdzXTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIC8vIHR1cm4gYXJndW1lbnRzIGludG8gYW4gYXJyYXlcblx0ICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpO1xuXHQgICAgfVxuXHQgICAgdmFyIG1lc3NhZ2VzID0gY2hlY2tFbm91Z2hBcmdzKGFwaSwgYXJncyk7XG5cdCAgICBpZiAoIW1lc3NhZ2VzLmxlbmd0aCkge1xuXHQgICAgICAvLyB0aGlzIGlzIHdoZXJlIHdlIGFjdHVhbGx5IGdvIHBlcmZvcm0gdGhlIGNoZWNrcy5cblx0ICAgICAgbWVzc2FnZXMgPSBjaGVja0FwaVdpdGhBcmdzKGFwaSwgYXJncyk7XG5cdCAgICB9XG5cblx0ICAgIHZhciByZXR1cm5PYmplY3QgPSBnZXRUeXBlcyhhcGksIGFyZ3MpO1xuXHQgICAgcmV0dXJuT2JqZWN0LmFyZ3MgPSBhcmdzO1xuXHQgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCkge1xuXHQgICAgICByZXR1cm5PYmplY3QubWVzc2FnZSA9IGFwaUNoZWNrLmdldEVycm9yTWVzc2FnZShhcGksIGFyZ3MsIG1lc3NhZ2VzLCBvdXRwdXQpO1xuXHQgICAgICByZXR1cm5PYmplY3QuZmFpbGVkID0gdHJ1ZTtcblx0ICAgICAgcmV0dXJuT2JqZWN0LnBhc3NlZCA9IGZhbHNlO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuT2JqZWN0Lm1lc3NhZ2UgPSAnJztcblx0ICAgICAgcmV0dXJuT2JqZWN0LmZhaWxlZCA9IGZhbHNlO1xuXHQgICAgICByZXR1cm5PYmplY3QucGFzc2VkID0gdHJ1ZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiByZXR1cm5PYmplY3Q7XG5cdCAgfVxuXG5cdCAgLyoqXG5cdCAgICogY2hlY2tBcGlDaGVja0FwaSwgc2hvdWxkIGJlIHJlYWQgbGlrZTogY2hlY2sgYXBpQ2hlY2sgYXBpLiBBcyBpbiwgY2hlY2sgdGhlIGFwaSBmb3IgYXBpQ2hlY2sgOi0pXG5cdCAgICogQHBhcmFtIHtBcnJheX0gY2hlY2tBcGlBcmdzIC0gYXJncyBwcm92aWRlZCB0byBhcGlDaGVjayBmdW5jdGlvblxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIGNoZWNrQXBpQ2hlY2tBcGkoY2hlY2tBcGlBcmdzKSB7XG5cdCAgICB2YXIgYXBpID0gY2hlY2tBcGlBcmdzWzBdO1xuXHQgICAgdmFyIGFyZ3MgPSBjaGVja0FwaUFyZ3NbMV07XG5cdCAgICB2YXIgaXNBcnJheU9yQXJncyA9IEFycmF5LmlzQXJyYXkoYXJncykgfHwgYXJncyAmJiB0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGFyZ3MubGVuZ3RoID09PSAnbnVtYmVyJztcblxuXHQgICAgaWYgKEFycmF5LmlzQXJyYXkoYXBpKSAmJiAhaXNBcnJheU9yQXJncykge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoZ2V0RXJyb3JNZXNzYWdlKGFwaSwgW2FyZ3NdLCBbJ0lmIGFuIGFycmF5IGlzIHByb3ZpZGVkIGZvciB0aGUgYXBpLCBhbiBhcnJheSBtdXN0IGJlIHByb3ZpZGVkIGZvciB0aGUgYXJncyBhcyB3ZWxsLiddLCB7IHByZWZpeDogJ2FwaUNoZWNrJyB9KSk7XG5cdCAgICB9XG5cdCAgICAvLyBkb2cgZm9vZGluZyBoZXJlXG5cdCAgICB2YXIgZXJyb3JzID0gY2hlY2tBcGlXaXRoQXJncyhhcGlDaGVja0FwaXMuY2hlY2tBcGlDaGVja0FwaSwgY2hlY2tBcGlBcmdzKTtcblx0ICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG5cdCAgICAgIHZhciBtZXNzYWdlID0gYXBpQ2hlY2suZ2V0RXJyb3JNZXNzYWdlKGFwaUNoZWNrQXBpcy5jaGVja0FwaUNoZWNrQXBpLCBjaGVja0FwaUFyZ3MsIGVycm9ycywge1xuXHQgICAgICAgIHByZWZpeDogJ2FwaUNoZWNrJ1xuXHQgICAgICB9KTtcblx0ICAgICAgYXBpQ2hlY2suaGFuZGxlRXJyb3JNZXNzYWdlKG1lc3NhZ2UsIHRydWUpO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldEFwaUNoZWNrKHNob3VsZFRocm93KSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gYXBpQ2hlY2tXcmFwcGVyKGFwaSwgYXJncywgb3V0cHV0KSB7XG5cdCAgICAgIHZhciByZXN1bHQgPSBhcGlDaGVjayhhcGksIGFyZ3MsIG91dHB1dCk7XG5cdCAgICAgIGFwaUNoZWNrLmhhbmRsZUVycm9yTWVzc2FnZShyZXN1bHQubWVzc2FnZSwgc2hvdWxkVGhyb3cpO1xuXHQgICAgICByZXR1cm4gcmVzdWx0OyAvLyB3b250IGdldCBoZXJlIGlmIGFuIGVycm9yIGlzIHRocm93blxuXHQgICAgfTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBoYW5kbGVFcnJvck1lc3NhZ2UobWVzc2FnZSwgc2hvdWxkVGhyb3cpIHtcblx0ICAgIGlmIChzaG91bGRUaHJvdyAmJiBtZXNzYWdlKSB7XG5cdCAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcblx0ICAgIH0gZWxzZSBpZiAobWVzc2FnZSkge1xuXHQgICAgICAvKiBlc2xpbnQgbm8tY29uc29sZTowICovXG5cdCAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICBmdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UoYXBpLCBhcmdzKSB7XG5cdCAgICB2YXIgbWVzc2FnZXMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyBbXSA6IGFyZ3VtZW50c1syXTtcblx0ICAgIHZhciBvdXRwdXQgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDMgfHwgYXJndW1lbnRzWzNdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1szXTtcblxuXHQgICAgdmFyIGdPdXQgPSBhcGlDaGVjay5jb25maWcub3V0cHV0IHx8IHt9O1xuXHQgICAgdmFyIHByZWZpeCA9IGdldFByZWZpeCgpO1xuXHQgICAgdmFyIHN1ZmZpeCA9IGdldFN1ZmZpeCgpO1xuXHQgICAgdmFyIHVybCA9IGdldFVybCgpO1xuXHQgICAgdmFyIG1lc3NhZ2UgPSAnYXBpQ2hlY2sgZmFpbGVkISAnICsgbWVzc2FnZXMuam9pbignLCAnKTtcblx0ICAgIHZhciBwYXNzZWRBbmRTaG91bGRIYXZlUGFzc2VkID0gJ1xcblxcbicgKyBidWlsZE1lc3NhZ2VGcm9tQXBpQW5kQXJncyhhcGksIGFyZ3MpO1xuXHQgICAgcmV0dXJuIChwcmVmaXggKyAnICcgKyBtZXNzYWdlICsgJyAnICsgc3VmZml4ICsgJyAnICsgKHVybCB8fCAnJykgKyBwYXNzZWRBbmRTaG91bGRIYXZlUGFzc2VkKS50cmltKCk7XG5cblx0ICAgIGZ1bmN0aW9uIGdldFByZWZpeCgpIHtcblx0ICAgICAgdmFyIHAgPSBvdXRwdXQub25seVByZWZpeDtcblx0ICAgICAgaWYgKCFwKSB7XG5cdCAgICAgICAgcCA9ICgoZ091dC5wcmVmaXggfHwgJycpICsgJyAnICsgKG91dHB1dC5wcmVmaXggfHwgJycpKS50cmltKCk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHA7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGdldFN1ZmZpeCgpIHtcblx0ICAgICAgdmFyIHMgPSBvdXRwdXQub25seVN1ZmZpeDtcblx0ICAgICAgaWYgKCFzKSB7XG5cdCAgICAgICAgcyA9ICgob3V0cHV0LnN1ZmZpeCB8fCAnJykgKyAnICcgKyAoZ091dC5zdWZmaXggfHwgJycpKS50cmltKCk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHM7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGdldFVybCgpIHtcblx0ICAgICAgdmFyIHUgPSBvdXRwdXQudXJsO1xuXHQgICAgICBpZiAoIXUpIHtcblx0ICAgICAgICB1ID0gZ091dC5kb2NzQmFzZVVybCAmJiBvdXRwdXQudXJsU3VmZml4ICYmICgnJyArIGdPdXQuZG9jc0Jhc2VVcmwgKyBvdXRwdXQudXJsU3VmZml4KS50cmltKCk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHU7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gYnVpbGRNZXNzYWdlRnJvbUFwaUFuZEFyZ3MoYXBpLCBhcmdzKSB7XG5cdCAgICB2YXIgX2dldFR5cGVzID0gZ2V0VHlwZXMoYXBpLCBhcmdzKTtcblxuXHQgICAgdmFyIGFwaVR5cGVzID0gX2dldFR5cGVzLmFwaVR5cGVzO1xuXHQgICAgdmFyIGFyZ1R5cGVzID0gX2dldFR5cGVzLmFyZ1R5cGVzO1xuXG5cdCAgICB2YXIgY29weSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MgfHwgW10pO1xuXHQgICAgdmFyIHJlcGxhY2VkSXRlbXMgPSBbXTtcblx0ICAgIHJlcGxhY2VGdW5jdGlvbldpdGhOYW1lKGNvcHkpO1xuXHQgICAgdmFyIHBhc3NlZEFyZ3MgPSBnZXRPYmplY3RTdHJpbmcoY29weSk7XG5cdCAgICBhcmdUeXBlcyA9IGdldE9iamVjdFN0cmluZyhhcmdUeXBlcyk7XG5cdCAgICBhcGlUeXBlcyA9IGdldE9iamVjdFN0cmluZyhhcGlUeXBlcyk7XG5cblx0ICAgIHJldHVybiBnZW5lcmF0ZU1lc3NhZ2UoKTtcblxuXHQgICAgLy8gZnVuY3Rpb25zXG5cblx0ICAgIGZ1bmN0aW9uIHJlcGxhY2VGdW5jdGlvbldpdGhOYW1lKG9iaikge1xuXHQgICAgICBlYWNoKG9iaiwgZnVuY3Rpb24gKHZhbCwgbmFtZSkge1xuXHQgICAgICAgIC8qIGVzbGludCBjb21wbGV4aXR5OlsyLCA2XSAqL1xuXHQgICAgICAgIGlmIChyZXBsYWNlZEl0ZW1zLmluZGV4T2YodmFsKSA9PT0gLTEpIHtcblx0ICAgICAgICAgIC8vIGF2b2lkIHJlY3Vyc2l2ZSBwcm9ibGVtc1xuXHQgICAgICAgICAgcmVwbGFjZWRJdGVtcy5wdXNoKHZhbCk7XG5cdCAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcblx0ICAgICAgICAgICAgcmVwbGFjZUZ1bmN0aW9uV2l0aE5hbWUob2JqKTtcblx0ICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgICAgICBvYmpbbmFtZV0gPSB2YWwuZGlzcGxheU5hbWUgfHwgdmFsLm5hbWUgfHwgJ2Fub255bW91cyBmdW5jdGlvbic7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9KTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gZ2V0T2JqZWN0U3RyaW5nKHR5cGVzKSB7XG5cdCAgICAgIGlmICghdHlwZXMgfHwgIXR5cGVzLmxlbmd0aCkge1xuXHQgICAgICAgIHJldHVybiAnbm90aGluZyc7XG5cdCAgICAgIH0gZWxzZSBpZiAodHlwZXMgJiYgdHlwZXMubGVuZ3RoID09PSAxKSB7XG5cdCAgICAgICAgdHlwZXMgPSB0eXBlc1swXTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gc3RyaW5naWZ5KHR5cGVzLCBudWxsLCAyKTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gZ2VuZXJhdGVNZXNzYWdlKCkge1xuXHQgICAgICB2YXIgbiA9ICdcXG4nO1xuXHQgICAgICB2YXIgdXNlUyA9IHRydWU7XG5cdCAgICAgIGlmIChhcmdzICYmIGFyZ3MubGVuZ3RoID09PSAxKSB7XG5cdCAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnb2JqZWN0JyAmJiBhcmdzWzBdICE9PSBudWxsKSB7XG5cdCAgICAgICAgICB1c2VTID0gISFPYmplY3Qua2V5cyhhcmdzWzBdKS5sZW5ndGg7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHVzZVMgPSBmYWxzZTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHR5cGVzID0gJ3R5cGUnICsgKHVzZVMgPyAncycgOiAnJyk7XG5cdCAgICAgIHZhciBuZXdMaW5lID0gbiArIG47XG5cdCAgICAgIHJldHVybiAnWW91IHBhc3NlZDonICsgbiArIHBhc3NlZEFyZ3MgKyBuZXdMaW5lICsgKCdXaXRoIHRoZSAnICsgdHlwZXMgKyAnOicgKyBuICsgYXJnVHlwZXMgKyBuZXdMaW5lKSArICgnVGhlIEFQSSBjYWxscyBmb3I6JyArIG4gKyBhcGlUeXBlcyk7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0VHlwZXMoYXBpLCBhcmdzKSB7XG5cdCAgICBhcGkgPSBhcnJheWlmeShhcGkpO1xuXHQgICAgYXJncyA9IGFycmF5aWZ5KGFyZ3MpO1xuXHQgICAgdmFyIGFwaVR5cGVzID0gYXBpLm1hcChmdW5jdGlvbiAoY2hlY2tlciwgaW5kZXgpIHtcblx0ICAgICAgdmFyIHNwZWNpZmllZCA9IG1vZHVsZS5leHBvcnRzLmdsb2JhbENvbmZpZy5oYXNPd25Qcm9wZXJ0eSgndmVyYm9zZScpO1xuXHQgICAgICByZXR1cm4gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwge1xuXHQgICAgICAgIHRlcnNlOiBzcGVjaWZpZWQgPyAhbW9kdWxlLmV4cG9ydHMuZ2xvYmFsQ29uZmlnLnZlcmJvc2UgOiAhYXBpQ2hlY2suY29uZmlnLnZlcmJvc2UsXG5cdCAgICAgICAgb2JqOiBhcmdzW2luZGV4XSxcblx0ICAgICAgICBhZGRIZWxwZXJzOiB0cnVlXG5cdCAgICAgIH0pO1xuXHQgICAgfSk7XG5cdCAgICB2YXIgYXJnVHlwZXMgPSBhcmdzLm1hcChmdW5jdGlvbiAoYXJnKSB7XG5cdCAgICAgIHJldHVybiBnZXRBcmdEaXNwbGF5KGFyZywgW10pO1xuXHQgICAgfSk7XG5cdCAgICByZXR1cm4geyBhcmdUeXBlczogYXJnVHlwZXMsIGFwaVR5cGVzOiBhcGlUeXBlcyB9O1xuXHQgIH1cblx0fVxuXG5cdC8vIFNUQVRFTEVTUyBGVU5DVElPTlNcblxuXHQvKipcblx0ICogVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyBmb3IgYWN0dWFsbHkgY2hlY2tpbmcgdGhlIGFyZ3VtZW50cyB3aXRoIHRoZSBhcGkuXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFwaSAtIGNoZWNrZXJzXG5cdCAqIEBwYXJhbSAge0FycmF5fSBhcmdzIC0gYW5kIGFyZ3VtZW50cyBvYmplY3Rcblx0ICogQHJldHVybnMge0FycmF5fSAtIHRoZSBlcnJvciBtZXNzYWdlc1xuXHQgKi9cblx0ZnVuY3Rpb24gY2hlY2tBcGlXaXRoQXJncyhhcGksIGFyZ3MpIHtcblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgN10gKi9cblx0ICB2YXIgbWVzc2FnZXMgPSBbXTtcblx0ICB2YXIgZmFpbGVkID0gZmFsc2U7XG5cdCAgdmFyIGNoZWNrZXJJbmRleCA9IDA7XG5cdCAgdmFyIGFyZ0luZGV4ID0gMDtcblx0ICB2YXIgYXJnID0gdW5kZWZpbmVkLFxuXHQgICAgICBjaGVja2VyID0gdW5kZWZpbmVkLFxuXHQgICAgICByZXMgPSB1bmRlZmluZWQsXG5cdCAgICAgIGxhc3RDaGVja2VyID0gdW5kZWZpbmVkLFxuXHQgICAgICBhcmdOYW1lID0gdW5kZWZpbmVkLFxuXHQgICAgICBhcmdGYWlsZWQgPSB1bmRlZmluZWQsXG5cdCAgICAgIHNraXBQcmV2aW91c0NoZWNrZXIgPSB1bmRlZmluZWQ7XG5cdCAgLyoganNoaW50IC1XMDg0ICovXG5cdCAgd2hpbGUgKChjaGVja2VyID0gYXBpW2NoZWNrZXJJbmRleCsrXSkgJiYgYXJnSW5kZXggPCBhcmdzLmxlbmd0aCkge1xuXHQgICAgYXJnID0gYXJnc1thcmdJbmRleCsrXTtcblx0ICAgIGFyZ05hbWUgPSAnQXJndW1lbnQgJyArIGFyZ0luZGV4ICsgKGNoZWNrZXIuaXNPcHRpb25hbCA/ICcgKG9wdGlvbmFsKScgOiAnJyk7XG5cdCAgICByZXMgPSBjaGVja2VyKGFyZywgJ3ZhbHVlJywgYXJnTmFtZSk7XG5cdCAgICBhcmdGYWlsZWQgPSBpc0Vycm9yKHJlcyk7XG5cdCAgICBsYXN0Q2hlY2tlciA9IGNoZWNrZXJJbmRleCA+PSBhcGkubGVuZ3RoO1xuXHQgICAgc2tpcFByZXZpb3VzQ2hlY2tlciA9IGNoZWNrZXJJbmRleCA+IDEgJiYgYXBpW2NoZWNrZXJJbmRleCAtIDFdLmlzT3B0aW9uYWw7XG5cdCAgICBpZiAoYXJnRmFpbGVkICYmIGxhc3RDaGVja2VyIHx8IGFyZ0ZhaWxlZCAmJiAhbGFzdENoZWNrZXIgJiYgIWNoZWNrZXIuaXNPcHRpb25hbCAmJiAhc2tpcFByZXZpb3VzQ2hlY2tlcikge1xuXHQgICAgICBmYWlsZWQgPSB0cnVlO1xuXHQgICAgICBtZXNzYWdlcy5wdXNoKGdldENoZWNrZXJFcnJvck1lc3NhZ2UocmVzLCBjaGVja2VyLCBhcmcpKTtcblx0ICAgIH0gZWxzZSBpZiAoYXJnRmFpbGVkICYmIGNoZWNrZXIuaXNPcHRpb25hbCkge1xuXHQgICAgICBhcmdJbmRleC0tO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgbWVzc2FnZXMucHVzaCh0KGFyZ05hbWUpICsgJyBwYXNzZWQnKTtcblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuIGZhaWxlZCA/IG1lc3NhZ2VzIDogW107XG5cdH1cblxuXHRjaGVja2VyVHlwZVR5cGUudHlwZSA9ICdmdW5jdGlvbiB3aXRoIF9fYXBpQ2hlY2tEYXRhIHByb3BlcnR5IGFuZCBgJHtmdW5jdGlvbi50eXBlfWAgcHJvcGVydHknO1xuXHRmdW5jdGlvbiBjaGVja2VyVHlwZVR5cGUoY2hlY2tlclR5cGUsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgdmFyIGFwaUNoZWNrRGF0YUNoZWNrZXIgPSBjaGVja2Vycy5zaGFwZSh7XG5cdCAgICB0eXBlOiBjaGVja2Vycy5zdHJpbmcsXG5cdCAgICBvcHRpb25hbDogY2hlY2tlcnMuYm9vbFxuXHQgIH0pO1xuXHQgIHZhciBhc0Z1bmMgPSBjaGVja2Vycy5mdW5jLndpdGhQcm9wZXJ0aWVzKHsgX19hcGlDaGVja0RhdGE6IGFwaUNoZWNrRGF0YUNoZWNrZXIgfSk7XG5cdCAgdmFyIGFzU2hhcGUgPSBjaGVja2Vycy5zaGFwZSh7IF9fYXBpQ2hlY2tEYXRhOiBhcGlDaGVja0RhdGFDaGVja2VyIH0pO1xuXHQgIHZhciB3cm9uZ1NoYXBlID0gY2hlY2tlcnMub25lT2ZUeXBlKFthc0Z1bmMsIGFzU2hhcGVdKShjaGVja2VyVHlwZSwgbmFtZSwgbG9jYXRpb24pO1xuXHQgIGlmIChpc0Vycm9yKHdyb25nU2hhcGUpKSB7XG5cdCAgICByZXR1cm4gd3JvbmdTaGFwZTtcblx0ICB9XG5cdCAgaWYgKHR5cGVvZiBjaGVja2VyVHlwZSAhPT0gJ2Z1bmN0aW9uJyAmJiAhY2hlY2tlclR5cGUuaGFzT3duUHJvcGVydHkoY2hlY2tlclR5cGUuX19hcGlDaGVja0RhdGEudHlwZSkpIHtcblx0ICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgY2hlY2tlclR5cGVUeXBlLnR5cGUpO1xuXHQgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIGdldENoZWNrZXJFcnJvck1lc3NhZ2UocmVzLCBjaGVja2VyLCB2YWwpIHtcblx0ICB2YXIgY2hlY2tlckhlbHAgPSBnZXRDaGVja2VySGVscChjaGVja2VyLCB2YWwpO1xuXHQgIGNoZWNrZXJIZWxwID0gY2hlY2tlckhlbHAgPyAnIC0gJyArIGNoZWNrZXJIZWxwIDogJyc7XG5cdCAgcmV0dXJuIHJlcy5tZXNzYWdlICsgY2hlY2tlckhlbHA7XG5cdH1cblxuXHRmdW5jdGlvbiBnZXRDaGVja2VySGVscChfcmVmLCB2YWwpIHtcblx0ICB2YXIgaGVscCA9IF9yZWYuaGVscDtcblxuXHQgIGlmICghaGVscCkge1xuXHQgICAgcmV0dXJuICcnO1xuXHQgIH1cblx0ICBpZiAodHlwZW9mIGhlbHAgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIGhlbHAgPSBoZWxwKHZhbCk7XG5cdCAgfVxuXHQgIHJldHVybiBoZWxwO1xuXHR9XG5cblx0ZnVuY3Rpb24gY2hlY2tFbm91Z2hBcmdzKGFwaSwgYXJncykge1xuXHQgIHZhciByZXF1aXJlZEFyZ3MgPSBhcGkuZmlsdGVyKGZ1bmN0aW9uIChhKSB7XG5cdCAgICByZXR1cm4gIWEuaXNPcHRpb25hbDtcblx0ICB9KTtcblx0ICBpZiAoYXJncy5sZW5ndGggPCByZXF1aXJlZEFyZ3MubGVuZ3RoKSB7XG5cdCAgICByZXR1cm4gWydOb3QgZW5vdWdoIGFyZ3VtZW50cyBzcGVjaWZpZWQuIFJlcXVpcmVzIGAnICsgcmVxdWlyZWRBcmdzLmxlbmd0aCArICdgLCB5b3UgcGFzc2VkIGAnICsgYXJncy5sZW5ndGggKyAnYCddO1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gW107XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0QXJnRGlzcGxheShhcmcsIGdvdHRlbkFyZ3MpIHtcblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgN10gKi9cblx0ICB2YXIgY05hbWUgPSBhcmcgJiYgYXJnLmNvbnN0cnVjdG9yICYmIGFyZy5jb25zdHJ1Y3Rvci5uYW1lO1xuXHQgIHZhciB0eXBlID0gdHlwZU9mKGFyZyk7XG5cdCAgaWYgKHR5cGUgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIGlmIChoYXNLZXlzKCkpIHtcblx0ICAgICAgdmFyIHByb3BlcnRpZXMgPSBzdHJpbmdpZnkoZ2V0RGlzcGxheUlmTm90R290dGVuKCkpO1xuXHQgICAgICByZXR1cm4gY05hbWUgKyAnICh3aXRoIHByb3BlcnRpZXM6ICcgKyBwcm9wZXJ0aWVzICsgJyknO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNOYW1lO1xuXHQgIH1cblxuXHQgIGlmIChhcmcgPT09IG51bGwpIHtcblx0ICAgIHJldHVybiAnbnVsbCc7XG5cdCAgfVxuXG5cdCAgaWYgKHR5cGUgIT09ICdhcnJheScgJiYgdHlwZSAhPT0gJ29iamVjdCcpIHtcblx0ICAgIHJldHVybiB0eXBlO1xuXHQgIH1cblxuXHQgIGlmIChoYXNLZXlzKCkpIHtcblx0ICAgIHJldHVybiBnZXREaXNwbGF5SWZOb3RHb3R0ZW4oKTtcblx0ICB9XG5cblx0ICByZXR1cm4gY05hbWU7XG5cblx0ICAvLyB1dGlsaXR5IGZ1bmN0aW9uc1xuXHQgIGZ1bmN0aW9uIGhhc0tleXMoKSB7XG5cdCAgICByZXR1cm4gYXJnICYmIE9iamVjdC5rZXlzKGFyZykubGVuZ3RoO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldERpc3BsYXlJZk5vdEdvdHRlbigpIHtcblx0ICAgIGlmIChnb3R0ZW5BcmdzLmluZGV4T2YoYXJnKSAhPT0gLTEpIHtcblx0ICAgICAgcmV0dXJuICdbQ2lyY3VsYXJdJztcblx0ICAgIH1cblx0ICAgIGdvdHRlbkFyZ3MucHVzaChhcmcpO1xuXHQgICAgcmV0dXJuIGdldERpc3BsYXkoYXJnLCBnb3R0ZW5BcmdzKTtcblx0ICB9XG5cdH1cblxuXHRmdW5jdGlvbiBnZXREaXNwbGF5KG9iaiwgZ290dGVuQXJncykge1xuXHQgIHZhciBhcmdEaXNwbGF5ID0ge307XG5cdCAgZWFjaChvYmosIGZ1bmN0aW9uICh2LCBrKSB7XG5cdCAgICByZXR1cm4gYXJnRGlzcGxheVtrXSA9IGdldEFyZ0Rpc3BsYXkodiwgZ290dGVuQXJncyk7XG5cdCAgfSk7XG5cdCAgcmV0dXJuIGFyZ0Rpc3BsYXk7XG5cdH1cblxuXHRmdW5jdGlvbiBnZXRBcGlDaGVja0FwaXMoKSB7XG5cdCAgdmFyIG9zID0gY2hlY2tlcnMuc3RyaW5nLm9wdGlvbmFsO1xuXG5cdCAgdmFyIGNoZWNrZXJGbkNoZWNrZXIgPSBjaGVja2Vycy5mdW5jLndpdGhQcm9wZXJ0aWVzKHtcblx0ICAgIHR5cGU6IGNoZWNrZXJzLm9uZU9mVHlwZShbY2hlY2tlcnMuc3RyaW5nLCBjaGVja2VyVHlwZVR5cGVdKS5vcHRpb25hbCxcblx0ICAgIGRpc3BsYXlOYW1lOiBjaGVja2Vycy5zdHJpbmcub3B0aW9uYWwsXG5cdCAgICBzaG9ydFR5cGU6IGNoZWNrZXJzLnN0cmluZy5vcHRpb25hbCxcblx0ICAgIG5vdE9wdGlvbmFsOiBjaGVja2Vycy5ib29sLm9wdGlvbmFsLFxuXHQgICAgbm90UmVxdWlyZWQ6IGNoZWNrZXJzLmJvb2wub3B0aW9uYWxcblx0ICB9KTtcblxuXHQgIHZhciBnZXRBcGlDaGVja0luc3RhbmNlQ2hlY2tlcnMgPSBbY2hlY2tlcnMuc2hhcGUoe1xuXHQgICAgb3V0cHV0OiBjaGVja2Vycy5zaGFwZSh7XG5cdCAgICAgIHByZWZpeDogY2hlY2tlcnMuc3RyaW5nLm9wdGlvbmFsLFxuXHQgICAgICBzdWZmaXg6IGNoZWNrZXJzLnN0cmluZy5vcHRpb25hbCxcblx0ICAgICAgZG9jc0Jhc2VVcmw6IGNoZWNrZXJzLnN0cmluZy5vcHRpb25hbFxuXHQgICAgfSkuc3RyaWN0Lm9wdGlvbmFsLFxuXHQgICAgdmVyYm9zZTogY2hlY2tlcnMuYm9vbC5vcHRpb25hbCxcblx0ICAgIGRpc2FibGVkOiBjaGVja2Vycy5ib29sLm9wdGlvbmFsXG5cdCAgfSkuc3RyaWN0Lm9wdGlvbmFsLCBjaGVja2Vycy5vYmplY3RPZihjaGVja2VyRm5DaGVja2VyKS5vcHRpb25hbF07XG5cblx0ICB2YXIgY2hlY2tBcGlDaGVja0FwaSA9IFtjaGVja2Vycy50eXBlT3JBcnJheU9mKGNoZWNrZXJGbkNoZWNrZXIpLCBjaGVja2Vycy5hbnkub3B0aW9uYWwsIGNoZWNrZXJzLnNoYXBlKHtcblx0ICAgIHByZWZpeDogb3MsIHN1ZmZpeDogb3MsIHVybFN1ZmZpeDogb3MsIC8vIGFwcGVuZGVkIGNhc2Vcblx0ICAgIG9ubHlQcmVmaXg6IG9zLCBvbmx5U3VmZml4OiBvcywgdXJsOiBvcyAvLyBvdmVycmlkZSBjYXNlXG5cdCAgfSkuc3RyaWN0Lm9wdGlvbmFsXTtcblxuXHQgIHJldHVybiB7XG5cdCAgICBjaGVja2VyRm5DaGVja2VyOiBjaGVja2VyRm5DaGVja2VyLFxuXHQgICAgZ2V0QXBpQ2hlY2tJbnN0YW5jZUNoZWNrZXJzOiBnZXRBcGlDaGVja0luc3RhbmNlQ2hlY2tlcnMsXG5cdCAgICBjaGVja0FwaUNoZWNrQXBpOiBjaGVja0FwaUNoZWNrQXBpXG5cdCAgfTtcblx0fVxuXG4vKioqLyB9LFxuLyogMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdpZnk7XG5cblx0ZnVuY3Rpb24gZ2V0U2VyaWFsaXplIChmbiwgZGVjeWNsZSkge1xuXHQgIHZhciBzZWVuID0gW10sIGtleXMgPSBbXTtcblx0ICBkZWN5Y2xlID0gZGVjeWNsZSB8fCBmdW5jdGlvbihrZXksIHZhbHVlKSB7XG5cdCAgICByZXR1cm4gJ1tDaXJjdWxhciAnICsgZ2V0UGF0aCh2YWx1ZSwgc2Vlbiwga2V5cykgKyAnXSdcblx0ICB9O1xuXHQgIHJldHVybiBmdW5jdGlvbihrZXksIHZhbHVlKSB7XG5cdCAgICB2YXIgcmV0ID0gdmFsdWU7XG5cdCAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSkge1xuXHQgICAgICBpZiAoc2Vlbi5pbmRleE9mKHZhbHVlKSAhPT0gLTEpXG5cdCAgICAgICAgcmV0ID0gZGVjeWNsZShrZXksIHZhbHVlKTtcblx0ICAgICAgZWxzZSB7XG5cdCAgICAgICAgc2Vlbi5wdXNoKHZhbHVlKTtcblx0ICAgICAgICBrZXlzLnB1c2goa2V5KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaWYgKGZuKSByZXQgPSBmbihrZXksIHJldCk7XG5cdCAgICByZXR1cm4gcmV0O1xuXHQgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIGdldFBhdGggKHZhbHVlLCBzZWVuLCBrZXlzKSB7XG5cdCAgdmFyIGluZGV4ID0gc2Vlbi5pbmRleE9mKHZhbHVlKTtcblx0ICB2YXIgcGF0aCA9IFsga2V5c1tpbmRleF0gXTtcblx0ICBmb3IgKGluZGV4LS07IGluZGV4ID49IDA7IGluZGV4LS0pIHtcblx0ICAgIGlmIChzZWVuW2luZGV4XVsgcGF0aFswXSBdID09PSB2YWx1ZSkge1xuXHQgICAgICB2YWx1ZSA9IHNlZW5baW5kZXhdO1xuXHQgICAgICBwYXRoLnVuc2hpZnQoa2V5c1tpbmRleF0pO1xuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gJ34nICsgcGF0aC5qb2luKCcuJyk7XG5cdH1cblxuXHRmdW5jdGlvbiBzdHJpbmdpZnkob2JqLCBmbiwgc3BhY2VzLCBkZWN5Y2xlKSB7XG5cdCAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiwgZ2V0U2VyaWFsaXplKGZuLCBkZWN5Y2xlKSwgc3BhY2VzKTtcblx0fVxuXG5cdHN0cmluZ2lmeS5nZXRTZXJpYWxpemUgPSBnZXRTZXJpYWxpemU7XG5cblxuLyoqKi8gfSxcbi8qIDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0JztcblxuXHRmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5cdHZhciBzdHJpbmdpZnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHR2YXIgY2hlY2tlckhlbHBlcnMgPSB7XG5cdCAgYWRkT3B0aW9uYWw6IGFkZE9wdGlvbmFsLCBnZXRSZXF1aXJlZFZlcnNpb246IGdldFJlcXVpcmVkVmVyc2lvbiwgc2V0dXBDaGVja2VyOiBzZXR1cENoZWNrZXIsIGFkZE51bGxhYmxlOiBhZGROdWxsYWJsZVxuXHR9O1xuXG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHQgIGVhY2g6IGVhY2gsIGNvcHk6IGNvcHksIHR5cGVPZjogdHlwZU9mLCBhcnJheWlmeTogYXJyYXlpZnksIGdldENoZWNrZXJEaXNwbGF5OiBnZXRDaGVja2VyRGlzcGxheSxcblx0ICBpc0Vycm9yOiBpc0Vycm9yLCBsaXN0OiBsaXN0LCBnZXRFcnJvcjogZ2V0RXJyb3IsIG5BdEw6IG5BdEwsIHQ6IHQsIHVuZGVmOiB1bmRlZiwgY2hlY2tlckhlbHBlcnM6IGNoZWNrZXJIZWxwZXJzLFxuXHQgIG5vb3A6IG5vb3Bcblx0fTtcblxuXHRmdW5jdGlvbiBjb3B5KG9iaikge1xuXHQgIHZhciB0eXBlID0gdHlwZU9mKG9iaik7XG5cdCAgdmFyIGRhQ29weSA9IHVuZGVmaW5lZDtcblx0ICBpZiAodHlwZSA9PT0gJ2FycmF5Jykge1xuXHQgICAgZGFDb3B5ID0gW107XG5cdCAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuXHQgICAgZGFDb3B5ID0ge307XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBvYmo7XG5cdCAgfVxuXHQgIGVhY2gob2JqLCBmdW5jdGlvbiAodmFsLCBrZXkpIHtcblx0ICAgIGRhQ29weVtrZXldID0gdmFsOyAvLyBjYW5ub3Qgc2luZ2xlLWxpbmUgdGhpcyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gYWJvcnQgdGhlIGVhY2hcblx0ICB9KTtcblx0ICByZXR1cm4gZGFDb3B5O1xuXHR9XG5cblx0ZnVuY3Rpb24gdHlwZU9mKG9iaikge1xuXHQgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcblx0ICAgIHJldHVybiAnYXJyYXknO1xuXHQgIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgUmVnRXhwKSB7XG5cdCAgICByZXR1cm4gJ29iamVjdCc7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiB0eXBlb2Ygb2JqO1xuXHQgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIGdldENoZWNrZXJEaXNwbGF5KGNoZWNrZXIsIG9wdGlvbnMpIHtcblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgN10gKi9cblx0ICB2YXIgZGlzcGxheSA9IHVuZGVmaW5lZDtcblx0ICB2YXIgc2hvcnQgPSBvcHRpb25zICYmIG9wdGlvbnMuc2hvcnQ7XG5cdCAgaWYgKHNob3J0ICYmIGNoZWNrZXIuc2hvcnRUeXBlKSB7XG5cdCAgICBkaXNwbGF5ID0gY2hlY2tlci5zaG9ydFR5cGU7XG5cdCAgfSBlbHNlIGlmICghc2hvcnQgJiYgdHlwZW9mIGNoZWNrZXIudHlwZSA9PT0gJ29iamVjdCcgfHwgY2hlY2tlci50eXBlID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICBkaXNwbGF5ID0gZ2V0Q2hlY2tlclR5cGUoY2hlY2tlciwgb3B0aW9ucyk7XG5cdCAgfSBlbHNlIHtcblx0ICAgIGRpc3BsYXkgPSBnZXRDaGVja2VyVHlwZShjaGVja2VyLCBvcHRpb25zKSB8fCBjaGVja2VyLmRpc3BsYXlOYW1lIHx8IGNoZWNrZXIubmFtZTtcblx0ICB9XG5cdCAgcmV0dXJuIGRpc3BsYXk7XG5cdH1cblxuXHRmdW5jdGlvbiBnZXRDaGVja2VyVHlwZShfcmVmLCBvcHRpb25zKSB7XG5cdCAgdmFyIHR5cGUgPSBfcmVmLnR5cGU7XG5cblx0ICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIHZhciBfX2FwaUNoZWNrRGF0YSA9IHR5cGUuX19hcGlDaGVja0RhdGE7XG5cdCAgICB2YXIgdHlwZVR5cGVzID0gdHlwZShvcHRpb25zKTtcblx0ICAgIHR5cGUgPSBfZGVmaW5lUHJvcGVydHkoe1xuXHQgICAgICBfX2FwaUNoZWNrRGF0YTogX19hcGlDaGVja0RhdGFcblx0ICAgIH0sIF9fYXBpQ2hlY2tEYXRhLnR5cGUsIHR5cGVUeXBlcyk7XG5cdCAgfVxuXHQgIHJldHVybiB0eXBlO1xuXHR9XG5cblx0ZnVuY3Rpb24gYXJyYXlpZnkob2JqKSB7XG5cdCAgaWYgKCFvYmopIHtcblx0ICAgIHJldHVybiBbXTtcblx0ICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuXHQgICAgcmV0dXJuIG9iajtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIFtvYmpdO1xuXHQgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIGVhY2gob2JqLCBpdGVyYXRvciwgY29udGV4dCkge1xuXHQgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcblx0ICAgIHJldHVybiBlYWNoQXJyeShvYmosIGl0ZXJhdG9yLCBjb250ZXh0KTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIGVhY2hPYmoob2JqLCBpdGVyYXRvciwgY29udGV4dCk7XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZWFjaE9iaihvYmosIGl0ZXJhdG9yLCBjb250ZXh0KSB7XG5cdCAgdmFyIHJldCA9IHVuZGVmaW5lZDtcblx0ICB2YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0ICAvKiBlc2xpbnQgcHJlZmVyLWNvbnN0OjAgKi8gLy8gc29tZSB3ZWlyZCBlc2xpbnQgYnVnP1xuXHQgIGZvciAodmFyIGtleSBpbiBvYmopIHtcblx0ICAgIGlmIChoYXNPd24uY2FsbChvYmosIGtleSkpIHtcblx0ICAgICAgcmV0ID0gaXRlcmF0b3IuY2FsbChjb250ZXh0LCBvYmpba2V5XSwga2V5LCBvYmopO1xuXHQgICAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuXHQgICAgICAgIHJldHVybiByZXQ7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuIHRydWU7XG5cdH1cblxuXHRmdW5jdGlvbiBlYWNoQXJyeShvYmosIGl0ZXJhdG9yLCBjb250ZXh0KSB7XG5cdCAgdmFyIHJldCA9IHVuZGVmaW5lZDtcblx0ICB2YXIgbGVuZ3RoID0gb2JqLmxlbmd0aDtcblx0ICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cdCAgICByZXQgPSBpdGVyYXRvci5jYWxsKGNvbnRleHQsIG9ialtpXSwgaSwgb2JqKTtcblx0ICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG5cdCAgICAgIHJldHVybiByZXQ7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiB0cnVlO1xuXHR9XG5cblx0ZnVuY3Rpb24gaXNFcnJvcihvYmopIHtcblx0ICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRXJyb3I7XG5cdH1cblxuXHRmdW5jdGlvbiBsaXN0KGFycnksIGpvaW4sIGZpbmFsSm9pbikge1xuXHQgIGFycnkgPSBhcnJheWlmeShhcnJ5KTtcblx0ICB2YXIgY29weSA9IGFycnkuc2xpY2UoKTtcblx0ICB2YXIgbGFzdCA9IGNvcHkucG9wKCk7XG5cdCAgaWYgKGNvcHkubGVuZ3RoID09PSAxKSB7XG5cdCAgICBqb2luID0gJyAnO1xuXHQgIH1cblx0ICByZXR1cm4gY29weS5qb2luKGpvaW4pICsgKCcnICsgKGNvcHkubGVuZ3RoID8gam9pbiArIGZpbmFsSm9pbiA6ICcnKSArIGxhc3QpO1xuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIGNoZWNrZXJUeXBlKSB7XG5cdCAgaWYgKHR5cGVvZiBjaGVja2VyVHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgY2hlY2tlclR5cGUgPSBjaGVja2VyVHlwZSh7IHNob3J0OiB0cnVlIH0pO1xuXHQgIH1cblx0ICB2YXIgc3RyaW5nVHlwZSA9IHR5cGVvZiBjaGVja2VyVHlwZSAhPT0gJ29iamVjdCcgPyBjaGVja2VyVHlwZSA6IHN0cmluZ2lmeShjaGVja2VyVHlwZSk7XG5cdCAgcmV0dXJuIG5ldyBFcnJvcihuQXRMKG5hbWUsIGxvY2F0aW9uKSArICcgbXVzdCBiZSAnICsgdChzdHJpbmdUeXBlKSk7XG5cdH1cblxuXHRmdW5jdGlvbiBuQXRMKG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgdmFyIHROYW1lID0gdChuYW1lIHx8ICd2YWx1ZScpO1xuXHQgIHZhciB0TG9jYXRpb24gPSAhbG9jYXRpb24gPyAnJyA6ICcgYXQgJyArIHQobG9jYXRpb24pO1xuXHQgIHJldHVybiAnJyArIHROYW1lICsgdExvY2F0aW9uO1xuXHR9XG5cblx0ZnVuY3Rpb24gdCh0aGluZykge1xuXHQgIHJldHVybiAnYCcgKyB0aGluZyArICdgJztcblx0fVxuXG5cdGZ1bmN0aW9uIHVuZGVmKHRoaW5nKSB7XG5cdCAgcmV0dXJuIHR5cGVvZiB0aGluZyA9PT0gJ3VuZGVmaW5lZCc7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyB3aWxsIHNldCB1cCB0aGUgY2hlY2tlciB3aXRoIGFsbCBvZiB0aGUgZGVmYXVsdHMgdGhhdCBtb3N0IGNoZWNrZXJzIHdhbnQgbGlrZSByZXF1aXJlZCBieSBkZWZhdWx0IGFuZCBhblxuXHQgKiBvcHRpb25hbCB2ZXJzaW9uXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGNoZWNrZXIgLSB0aGUgY2hlY2tlciB0byBzZXR1cCB3aXRoIHByb3BlcnRpZXNcblx0ICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSBwcm9wZXJ0aWVzIHRvIGFkZCB0byB0aGUgY2hlY2tlclxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc2FibGVkIC0gd2hlbiBzZXQgdG8gdHJ1ZSwgdGhpcyB3aWxsIHNldCB0aGUgY2hlY2tlciB0byBhIG5vLW9wIGZ1bmN0aW9uXG5cdCAqIEByZXR1cm5zIHtGdW5jdGlvbn0gY2hlY2tlciAtIHRoZSBzZXR1cCBjaGVja2VyXG5cdCAqL1xuXHRmdW5jdGlvbiBzZXR1cENoZWNrZXIoY2hlY2tlciwgcHJvcGVydGllcywgZGlzYWJsZWQpIHtcblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgOV0gKi9cblx0ICBpZiAoZGlzYWJsZWQpIHtcblx0ICAgIC8vIHN3YXAgb3V0IHRoZSBjaGVja2VyIGZvciBpdHMgb3duIGNvcHkgb2Ygbm9vcFxuXHQgICAgY2hlY2tlciA9IGdldE5vb3AoKTtcblx0ICAgIGNoZWNrZXIuaXNOb29wID0gdHJ1ZTtcblx0ICB9XG5cblx0ICBpZiAodHlwZW9mIGNoZWNrZXIudHlwZSA9PT0gJ3N0cmluZycpIHtcblx0ICAgIGNoZWNrZXIuc2hvcnRUeXBlID0gY2hlY2tlci50eXBlO1xuXHQgIH1cblxuXHQgIC8vIGFzc2lnbiBhbGwgcHJvcGVydGllcyBnaXZlblxuXHQgIGVhY2gocHJvcGVydGllcywgZnVuY3Rpb24gKHByb3AsIG5hbWUpIHtcblx0ICAgIHJldHVybiBjaGVja2VyW25hbWVdID0gcHJvcDtcblx0ICB9KTtcblxuXHQgIGlmICghY2hlY2tlci5kaXNwbGF5TmFtZSkge1xuXHQgICAgY2hlY2tlci5kaXNwbGF5TmFtZSA9ICdhcGlDaGVjayAnICsgdChjaGVja2VyLnNob3J0VHlwZSB8fCBjaGVja2VyLnR5cGUgfHwgY2hlY2tlci5uYW1lKSArICcgdHlwZSBjaGVja2VyJztcblx0ICB9XG5cblx0ICBpZiAoIWNoZWNrZXIubm90UmVxdWlyZWQpIHtcblx0ICAgIGNoZWNrZXIgPSBnZXRSZXF1aXJlZFZlcnNpb24oY2hlY2tlciwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGlmICghY2hlY2tlci5ub3ROdWxsYWJsZSkge1xuXHQgICAgYWRkTnVsbGFibGUoY2hlY2tlciwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGlmICghY2hlY2tlci5ub3RPcHRpb25hbCkge1xuXHQgICAgYWRkT3B0aW9uYWwoY2hlY2tlciwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIHJldHVybiBjaGVja2VyO1xuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0UmVxdWlyZWRWZXJzaW9uKGNoZWNrZXIsIGRpc2FibGVkKSB7XG5cdCAgdmFyIHJlcXVpcmVkQ2hlY2tlciA9IGRpc2FibGVkID8gZ2V0Tm9vcCgpIDogZnVuY3Rpb24gcmVxdWlyZWRDaGVja2VyKHZhbCwgbmFtZSwgbG9jYXRpb24sIG9iaikge1xuXHQgICAgaWYgKHVuZGVmKHZhbCkgJiYgIWNoZWNrZXIuaXNPcHRpb25hbCkge1xuXHQgICAgICB2YXIgdExvY2F0aW9uID0gbG9jYXRpb24gPyAnIGluICcgKyB0KGxvY2F0aW9uKSA6ICcnO1xuXHQgICAgICB2YXIgdHlwZSA9IGdldENoZWNrZXJEaXNwbGF5KGNoZWNrZXIsIHsgc2hvcnQ6IHRydWUgfSk7XG5cdCAgICAgIHZhciBzdHJpbmdUeXBlID0gdHlwZW9mIHR5cGUgIT09ICdvYmplY3QnID8gdHlwZSA6IHN0cmluZ2lmeSh0eXBlKTtcblx0ICAgICAgcmV0dXJuIG5ldyBFcnJvcignUmVxdWlyZWQgJyArIHQobmFtZSkgKyAnIG5vdCBzcGVjaWZpZWQnICsgdExvY2F0aW9uICsgJy4gTXVzdCBiZSAnICsgdChzdHJpbmdUeXBlKSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZXR1cm4gY2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uLCBvYmopO1xuXHQgICAgfVxuXHQgIH07XG5cdCAgY29weVByb3BzKGNoZWNrZXIsIHJlcXVpcmVkQ2hlY2tlcik7XG5cdCAgcmVxdWlyZWRDaGVja2VyLm9yaWdpbmFsQ2hlY2tlciA9IGNoZWNrZXI7XG5cdCAgcmV0dXJuIHJlcXVpcmVkQ2hlY2tlcjtcblx0fVxuXG5cdGZ1bmN0aW9uIGFkZE9wdGlvbmFsKGNoZWNrZXIsIGRpc2FibGVkKSB7XG5cdCAgdmFyIG9wdGlvbmFsQ2hlY2sgPSBkaXNhYmxlZCA/IGdldE5vb3AoKSA6IGZ1bmN0aW9uIG9wdGlvbmFsQ2hlY2sodmFsLCBuYW1lLCBsb2NhdGlvbiwgb2JqKSB7XG5cdCAgICBpZiAoIXVuZGVmKHZhbCkpIHtcblx0ICAgICAgcmV0dXJuIGNoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbiwgb2JqKTtcblx0ICAgIH1cblx0ICB9O1xuXHQgIC8vIGluaGVyaXQgYWxsIHByb3BlcnRpZXMgb24gdGhlIG9yaWdpbmFsIGNoZWNrZXJcblx0ICBjb3B5UHJvcHMoY2hlY2tlciwgb3B0aW9uYWxDaGVjayk7XG5cblx0ICBvcHRpb25hbENoZWNrLmlzT3B0aW9uYWwgPSB0cnVlO1xuXHQgIG9wdGlvbmFsQ2hlY2suZGlzcGxheU5hbWUgPSBjaGVja2VyLmRpc3BsYXlOYW1lICsgJyAob3B0aW9uYWwpJztcblx0ICBvcHRpb25hbENoZWNrLm9yaWdpbmFsQ2hlY2tlciA9IGNoZWNrZXI7XG5cblx0ICAvLyB0aGUgbWFnaWMgbGluZSB0aGF0IGFsbG93cyB5b3UgdG8gYWRkIC5vcHRpb25hbCB0byB0aGUgZW5kIG9mIHRoZSBjaGVja2Vyc1xuXHQgIGNoZWNrZXIub3B0aW9uYWwgPSBvcHRpb25hbENoZWNrO1xuXG5cdCAgZml4VHlwZShjaGVja2VyLCBjaGVja2VyLm9wdGlvbmFsKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGFkZE51bGxhYmxlKGNoZWNrZXIsIGRpc2FibGVkKSB7XG5cdCAgdmFyIG51bGxhYmxlQ2hlY2sgPSBkaXNhYmxlZCA/IGdldE5vb3AoKSA6IGZ1bmN0aW9uIG51bGxhYmxlQ2hlY2sodmFsLCBuYW1lLCBsb2NhdGlvbiwgb2JqKSB7XG5cdCAgICBpZiAodmFsICE9PSBudWxsKSB7XG5cdCAgICAgIHJldHVybiBjaGVja2VyKHZhbCwgbmFtZSwgbG9jYXRpb24sIG9iaik7XG5cdCAgICB9XG5cdCAgfTtcblx0ICAvLyBpbmhlcml0IGFsbCBwcm9wZXJ0aWVzIG9uIHRoZSBvcmlnaW5hbCBjaGVja2VyXG5cdCAgY29weVByb3BzKGNoZWNrZXIsIG51bGxhYmxlQ2hlY2spO1xuXG5cdCAgbnVsbGFibGVDaGVjay5pc051bGxhYmxlID0gdHJ1ZTtcblx0ICBudWxsYWJsZUNoZWNrLmRpc3BsYXlOYW1lID0gY2hlY2tlci5kaXNwbGF5TmFtZSArICcgKG51bGxhYmxlKSc7XG5cdCAgbnVsbGFibGVDaGVjay5vcmlnaW5hbENoZWNrZXIgPSBjaGVja2VyO1xuXG5cdCAgLy8gdGhlIG1hZ2ljIGxpbmUgdGhhdCBhbGxvd3MgeW91IHRvIGFkZCAubnVsbGFibGUgdG8gdGhlIGVuZCBvZiB0aGUgY2hlY2tlcnNcblx0ICBjaGVja2VyLm51bGxhYmxlID0gbnVsbGFibGVDaGVjaztcblxuXHQgIGZpeFR5cGUoY2hlY2tlciwgY2hlY2tlci5udWxsYWJsZSk7XG5cdCAgaWYgKCFjaGVja2VyLm5vdE9wdGlvbmFsKSB7XG5cdCAgICBhZGRPcHRpb25hbChjaGVja2VyLm51bGxhYmxlLCBkaXNhYmxlZCk7XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZml4VHlwZShjaGVja2VyLCBjaGVja2VyQ29weSkge1xuXHQgIC8vIGZpeCB0eXBlLCBiZWNhdXNlIGl0J3Mgbm90IGEgc3RyYWlnaHQgY29weS4uLlxuXHQgIC8vIHRoZSByZWFzb24gaXMgd2UgbmVlZCB0byBzcGVjaWZ5IHR5cGUuX19hcGlDaGVja0RhdGEub3B0aW9uYWwgYXMgdHJ1ZSBmb3IgdGhlIHRlcnNlL3ZlcmJvc2Ugb3B0aW9uLlxuXHQgIC8vIHdlIGFsc28gd2FudCB0byBhZGQgXCIob3B0aW9uYWwpXCIgdG8gdGhlIHR5cGVzIHdpdGggYSBzdHJpbmdcblx0ICBpZiAodHlwZW9mIGNoZWNrZXJDb3B5LnR5cGUgPT09ICdvYmplY3QnKSB7XG5cdCAgICBjaGVja2VyQ29weS50eXBlID0gY29weShjaGVja2VyQ29weS50eXBlKTsgLy8gbWFrZSBvdXIgb3duIGNvcHkgb2YgdGhpc1xuXHQgIH0gZWxzZSBpZiAodHlwZW9mIGNoZWNrZXJDb3B5LnR5cGUgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgY2hlY2tlckNvcHkudHlwZSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4gY2hlY2tlci50eXBlLmFwcGx5KGNoZWNrZXIsIGFyZ3VtZW50cyk7XG5cdCAgICAgIH07XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBjaGVja2VyQ29weS50eXBlICs9ICcgKG9wdGlvbmFsKSc7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICBjaGVja2VyQ29weS50eXBlLl9fYXBpQ2hlY2tEYXRhID0gY29weShjaGVja2VyLnR5cGUuX19hcGlDaGVja0RhdGEpIHx8IHt9OyAvLyBhbmQgdGhpc1xuXHQgIGNoZWNrZXJDb3B5LnR5cGUuX19hcGlDaGVja0RhdGEub3B0aW9uYWwgPSB0cnVlO1xuXHR9XG5cblx0Ly8gVVRJTFNcblxuXHRmdW5jdGlvbiBjb3B5UHJvcHMoc3JjLCBkZXN0KSB7XG5cdCAgZWFjaChPYmplY3Qua2V5cyhzcmMpLCBmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICByZXR1cm4gZGVzdFtrZXldID0gc3JjW2tleV07XG5cdCAgfSk7XG5cdH1cblxuXHRmdW5jdGlvbiBub29wKCkge31cblxuXHRmdW5jdGlvbiBnZXROb29wKCkge1xuXHQgIC8qIGVzbGludCBuby1zaGFkb3c6MCAqL1xuXHQgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cdCAgcmV0dXJuIGZ1bmN0aW9uIG5vb3AoKSB7fTtcblx0fVxuXG4vKioqLyB9LFxuLyogNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBzdHJpbmdpZnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG5cdHZhciBfcmVxdWlyZSA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cblx0dmFyIHR5cGVPZiA9IF9yZXF1aXJlLnR5cGVPZjtcblx0dmFyIGVhY2ggPSBfcmVxdWlyZS5lYWNoO1xuXHR2YXIgY29weSA9IF9yZXF1aXJlLmNvcHk7XG5cdHZhciBnZXRDaGVja2VyRGlzcGxheSA9IF9yZXF1aXJlLmdldENoZWNrZXJEaXNwbGF5O1xuXHR2YXIgaXNFcnJvciA9IF9yZXF1aXJlLmlzRXJyb3I7XG5cdHZhciBhcnJheWlmeSA9IF9yZXF1aXJlLmFycmF5aWZ5O1xuXHR2YXIgbGlzdCA9IF9yZXF1aXJlLmxpc3Q7XG5cdHZhciBnZXRFcnJvciA9IF9yZXF1aXJlLmdldEVycm9yO1xuXHR2YXIgbkF0TCA9IF9yZXF1aXJlLm5BdEw7XG5cdHZhciB0ID0gX3JlcXVpcmUudDtcblx0dmFyIGNoZWNrZXJIZWxwZXJzID0gX3JlcXVpcmUuY2hlY2tlckhlbHBlcnM7XG5cdHZhciB1bmRlZiA9IF9yZXF1aXJlLnVuZGVmO1xuXHR2YXIgc2V0dXBDaGVja2VyID0gY2hlY2tlckhlbHBlcnMuc2V0dXBDaGVja2VyO1xuXG5cdHZhciBjaGVja2VycyA9IG1vZHVsZS5leHBvcnRzID0gZ2V0Q2hlY2tlcnMoKTtcblx0bW9kdWxlLmV4cG9ydHMuZ2V0Q2hlY2tlcnMgPSBnZXRDaGVja2VycztcblxuXHRmdW5jdGlvbiBnZXRDaGVja2VycyhkaXNhYmxlZCkge1xuXHQgIHJldHVybiB7XG5cdCAgICBhcnJheTogdHlwZU9mQ2hlY2tHZXR0ZXIoJ0FycmF5JyksXG5cdCAgICBib29sOiB0eXBlT2ZDaGVja0dldHRlcignQm9vbGVhbicpLFxuXHQgICAgbnVtYmVyOiB0eXBlT2ZDaGVja0dldHRlcignTnVtYmVyJyksXG5cdCAgICBzdHJpbmc6IHR5cGVPZkNoZWNrR2V0dGVyKCdTdHJpbmcnKSxcblx0ICAgIGZ1bmM6IGZ1bmNDaGVja0dldHRlcigpLFxuXHQgICAgb2JqZWN0OiBvYmplY3RDaGVja0dldHRlcigpLFxuXG5cdCAgICBlbXB0eU9iamVjdDogZW1wdHlPYmplY3RDaGVja0dldHRlcigpLFxuXG5cdCAgICBpbnN0YW5jZU9mOiBpbnN0YW5jZUNoZWNrR2V0dGVyLFxuXHQgICAgb25lT2Y6IG9uZU9mQ2hlY2tHZXR0ZXIsXG5cdCAgICBvbmVPZlR5cGU6IG9uZU9mVHlwZUNoZWNrR2V0dGVyLFxuXG5cdCAgICBhcnJheU9mOiBhcnJheU9mQ2hlY2tHZXR0ZXIsXG5cdCAgICBvYmplY3RPZjogb2JqZWN0T2ZDaGVja0dldHRlcixcblx0ICAgIHR5cGVPckFycmF5T2Y6IHR5cGVPckFycmF5T2ZDaGVja0dldHRlcixcblxuXHQgICAgcmFuZ2U6IHJhbmdlQ2hlY2tHZXR0ZXIsXG5cdCAgICBsZXNzVGhhbjogbGVzc1RoYW5DaGVja0dldHRlcixcblx0ICAgIGdyZWF0ZXJUaGFuOiBncmVhdGVyVGhhbkNoZWNrR2V0dGVyLFxuXG5cdCAgICBzaGFwZTogZ2V0U2hhcGVDaGVja0dldHRlcigpLFxuXHQgICAgYXJnczogYXJndW1lbnRzQ2hlY2tlckdldHRlcigpLFxuXG5cdCAgICBhbnk6IGFueUNoZWNrR2V0dGVyKCksXG5cdCAgICAnbnVsbCc6IG51bGxDaGVja0dldHRlcigpXG5cblx0ICB9O1xuXG5cdCAgZnVuY3Rpb24gdHlwZU9mQ2hlY2tHZXR0ZXIodHlwZSkge1xuXHQgICAgdmFyIGxUeXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiB0eXBlT2ZDaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh0eXBlT2YodmFsKSAhPT0gbFR5cGUpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGZ1bmNDaGVja0dldHRlcigpIHtcblx0ICAgIHZhciB0eXBlID0gJ0Z1bmN0aW9uJztcblx0ICAgIHZhciBmdW5jdGlvbkNoZWNrZXIgPSBzZXR1cENoZWNrZXIoZnVuY3Rpb24gZnVuY3Rpb25DaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh0eXBlT2YodmFsKSAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgdHlwZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sIHsgdHlwZTogdHlwZSB9LCBkaXNhYmxlZCk7XG5cblx0ICAgIGZ1bmN0aW9uQ2hlY2tlci53aXRoUHJvcGVydGllcyA9IGZ1bmN0aW9uIGdldFdpdGhQcm9wZXJ0aWVzQ2hlY2tlcihwcm9wZXJ0aWVzKSB7XG5cdCAgICAgIHZhciBhcGlFcnJvciA9IGNoZWNrZXJzLm9iamVjdE9mKGNoZWNrZXJzLmZ1bmMpKHByb3BlcnRpZXMsICdwcm9wZXJ0aWVzJywgJ2FwaUNoZWNrLmZ1bmMud2l0aFByb3BlcnRpZXMnKTtcblx0ICAgICAgaWYgKGlzRXJyb3IoYXBpRXJyb3IpKSB7XG5cdCAgICAgICAgdGhyb3cgYXBpRXJyb3I7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHNoYXBlQ2hlY2tlciA9IGNoZWNrZXJzLnNoYXBlKHByb3BlcnRpZXMsIHRydWUpO1xuXHQgICAgICBzaGFwZUNoZWNrZXIudHlwZS5fX2FwaUNoZWNrRGF0YS50eXBlID0gJ2Z1bmMud2l0aFByb3BlcnRpZXMnO1xuXG5cdCAgICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gZnVuY3Rpb25XaXRoUHJvcGVydGllc0NoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICAgIHZhciBub3RGdW5jdGlvbiA9IGNoZWNrZXJzLmZ1bmModmFsLCBuYW1lLCBsb2NhdGlvbik7XG5cdCAgICAgICAgaWYgKGlzRXJyb3Iobm90RnVuY3Rpb24pKSB7XG5cdCAgICAgICAgICByZXR1cm4gbm90RnVuY3Rpb247XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBzaGFwZUNoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbik7XG5cdCAgICAgIH0sIHsgdHlwZTogc2hhcGVDaGVja2VyLnR5cGUsIHNob3J0VHlwZTogJ2Z1bmMud2l0aFByb3BlcnRpZXMnIH0sIGRpc2FibGVkKTtcblx0ICAgIH07XG5cdCAgICByZXR1cm4gZnVuY3Rpb25DaGVja2VyO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIG9iamVjdENoZWNrR2V0dGVyKCkge1xuXHQgICAgdmFyIHR5cGUgPSAnT2JqZWN0Jztcblx0ICAgIHZhciBudWxsVHlwZSA9ICdPYmplY3QgKG51bGwgb2spJztcblx0ICAgIHZhciBvYmplY3ROdWxsT2tDaGVja2VyID0gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIG9iamVjdE51bGxPa0NoZWNrZXJEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgaWYgKHR5cGVPZih2YWwpICE9PSAnb2JqZWN0Jykge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgbnVsbFR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IG51bGxUeXBlIH0sIGRpc2FibGVkKTtcblxuXHQgICAgdmFyIG9iamVjdENoZWNrZXIgPSBzZXR1cENoZWNrZXIoZnVuY3Rpb24gb2JqZWN0Q2hlY2tlckRlZmluaXRpb24odmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICBpZiAodmFsID09PSBudWxsIHx8IGlzRXJyb3Iob2JqZWN0TnVsbE9rQ2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSkpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIG9iamVjdENoZWNrZXIudHlwZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sIHsgdHlwZTogdHlwZSwgbnVsbE9rOiBvYmplY3ROdWxsT2tDaGVja2VyIH0sIGRpc2FibGVkKTtcblxuXHQgICAgcmV0dXJuIG9iamVjdENoZWNrZXI7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gaW5zdGFuY2VDaGVja0dldHRlcihjbGFzc1RvQ2hlY2spIHtcblx0ICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gaW5zdGFuY2VDaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICghKHZhbCBpbnN0YW5jZW9mIGNsYXNzVG9DaGVjaykpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIGNsYXNzVG9DaGVjay5uYW1lKTtcblx0ICAgICAgfVxuXHQgICAgfSwgeyB0eXBlOiBjbGFzc1RvQ2hlY2submFtZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gb25lT2ZDaGVja0dldHRlcihlbnVtcykge1xuXHQgICAgdmFyIHR5cGUgPSB7XG5cdCAgICAgIF9fYXBpQ2hlY2tEYXRhOiB7IG9wdGlvbmFsOiBmYWxzZSwgdHlwZTogJ2VudW0nIH0sXG5cdCAgICAgICdlbnVtJzogZW51bXNcblx0ICAgIH07XG5cdCAgICB2YXIgc2hvcnRUeXBlID0gJ29uZU9mWycgKyBlbnVtcy5tYXAoZnVuY3Rpb24gKGVubSkge1xuXHQgICAgICByZXR1cm4gc3RyaW5naWZ5KGVubSk7XG5cdCAgICB9KS5qb2luKCcsICcpICsgJ10nO1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBvbmVPZkNoZWNrZXJEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgaWYgKCFlbnVtcy5zb21lKGZ1bmN0aW9uIChlbm0pIHtcblx0ICAgICAgICByZXR1cm4gZW5tID09PSB2YWw7XG5cdCAgICAgIH0pKSB7XG5cdCAgICAgICAgcmV0dXJuIGdldEVycm9yKG5hbWUsIGxvY2F0aW9uLCBzaG9ydFR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUsIHNob3J0VHlwZTogc2hvcnRUeXBlIH0sIGRpc2FibGVkKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBvbmVPZlR5cGVDaGVja0dldHRlcih0eXBlQ2hlY2tlcnMpIHtcblx0ICAgIHZhciBjaGVja2Vyc0Rpc3BsYXkgPSB0eXBlQ2hlY2tlcnMubWFwKGZ1bmN0aW9uIChjaGVja2VyKSB7XG5cdCAgICAgIHJldHVybiBnZXRDaGVja2VyRGlzcGxheShjaGVja2VyLCB7IHNob3J0OiB0cnVlIH0pO1xuXHQgICAgfSk7XG5cdCAgICB2YXIgc2hvcnRUeXBlID0gJ29uZU9mVHlwZVsnICsgY2hlY2tlcnNEaXNwbGF5LmpvaW4oJywgJykgKyAnXSc7XG5cdCAgICBmdW5jdGlvbiB0eXBlKG9wdGlvbnMpIHtcblx0ICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zaG9ydCkge1xuXHQgICAgICAgIHJldHVybiBzaG9ydFR5cGU7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHR5cGVDaGVja2Vycy5tYXAoZnVuY3Rpb24gKGNoZWNrZXIpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgb3B0aW9ucyk7XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgICAgdHlwZS5fX2FwaUNoZWNrRGF0YSA9IHsgb3B0aW9uYWw6IGZhbHNlLCB0eXBlOiAnb25lT2ZUeXBlJyB9O1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBvbmVPZlR5cGVDaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICghdHlwZUNoZWNrZXJzLnNvbWUoZnVuY3Rpb24gKGNoZWNrZXIpIHtcblx0ICAgICAgICByZXR1cm4gIWlzRXJyb3IoY2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSk7XG5cdCAgICAgIH0pKSB7XG5cdCAgICAgICAgcmV0dXJuIGdldEVycm9yKG5hbWUsIGxvY2F0aW9uLCBzaG9ydFR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUsIHNob3J0VHlwZTogc2hvcnRUeXBlIH0sIGRpc2FibGVkKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBhcnJheU9mQ2hlY2tHZXR0ZXIoY2hlY2tlcikge1xuXHQgICAgdmFyIHNob3J0Q2hlY2tlckRpc3BsYXkgPSBnZXRDaGVja2VyRGlzcGxheShjaGVja2VyLCB7IHNob3J0OiB0cnVlIH0pO1xuXHQgICAgdmFyIHNob3J0VHlwZSA9ICdhcnJheU9mWycgKyBzaG9ydENoZWNrZXJEaXNwbGF5ICsgJ10nO1xuXG5cdCAgICBmdW5jdGlvbiB0eXBlKG9wdGlvbnMpIHtcblx0ICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zaG9ydCkge1xuXHQgICAgICAgIHJldHVybiBzaG9ydFR5cGU7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIGdldENoZWNrZXJEaXNwbGF5KGNoZWNrZXIsIG9wdGlvbnMpO1xuXHQgICAgfVxuXHQgICAgdHlwZS5fX2FwaUNoZWNrRGF0YSA9IHsgb3B0aW9uYWw6IGZhbHNlLCB0eXBlOiAnYXJyYXlPZicgfTtcblxuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBhcnJheU9mQ2hlY2tlckRlZmluaXRpb24odmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICBpZiAoaXNFcnJvcihjaGVja2Vycy5hcnJheSh2YWwpKSB8fCAhdmFsLmV2ZXJ5KGZ1bmN0aW9uIChpdGVtKSB7XG5cdCAgICAgICAgcmV0dXJuICFpc0Vycm9yKGNoZWNrZXIoaXRlbSkpO1xuXHQgICAgICB9KSkge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgc2hvcnRUeXBlKTtcblx0ICAgICAgfVxuXHQgICAgfSwgeyB0eXBlOiB0eXBlLCBzaG9ydFR5cGU6IHNob3J0VHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gb2JqZWN0T2ZDaGVja0dldHRlcihjaGVja2VyKSB7XG5cdCAgICB2YXIgY2hlY2tlckRpc3BsYXkgPSBnZXRDaGVja2VyRGlzcGxheShjaGVja2VyLCB7IHNob3J0OiB0cnVlIH0pO1xuXHQgICAgdmFyIHNob3J0VHlwZSA9ICdvYmplY3RPZlsnICsgY2hlY2tlckRpc3BsYXkgKyAnXSc7XG5cblx0ICAgIGZ1bmN0aW9uIHR5cGUob3B0aW9ucykge1xuXHQgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNob3J0KSB7XG5cdCAgICAgICAgcmV0dXJuIHNob3J0VHlwZTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgb3B0aW9ucyk7XG5cdCAgICB9XG5cdCAgICB0eXBlLl9fYXBpQ2hlY2tEYXRhID0geyBvcHRpb25hbDogZmFsc2UsIHR5cGU6ICdvYmplY3RPZicgfTtcblxuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBvYmplY3RPZkNoZWNrZXJEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgdmFyIG5vdE9iamVjdCA9IGNoZWNrZXJzLm9iamVjdCh2YWwsIG5hbWUsIGxvY2F0aW9uKTtcblx0ICAgICAgaWYgKGlzRXJyb3Iobm90T2JqZWN0KSkge1xuXHQgICAgICAgIHJldHVybiBub3RPYmplY3Q7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGFsbFR5cGVzU3VjY2VzcyA9IGVhY2godmFsLCBmdW5jdGlvbiAoaXRlbSwga2V5KSB7XG5cdCAgICAgICAgaWYgKGlzRXJyb3IoY2hlY2tlcihpdGVtLCBrZXksIG5hbWUpKSkge1xuXHQgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSk7XG5cdCAgICAgIGlmICghYWxsVHlwZXNTdWNjZXNzKSB7XG5cdCAgICAgICAgcmV0dXJuIGdldEVycm9yKG5hbWUsIGxvY2F0aW9uLCBzaG9ydFR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUsIHNob3J0VHlwZTogc2hvcnRUeXBlIH0sIGRpc2FibGVkKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiB0eXBlT3JBcnJheU9mQ2hlY2tHZXR0ZXIoY2hlY2tlcikge1xuXHQgICAgdmFyIGNoZWNrZXJEaXNwbGF5ID0gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgeyBzaG9ydDogdHJ1ZSB9KTtcblx0ICAgIHZhciBzaG9ydFR5cGUgPSAndHlwZU9yQXJyYXlPZlsnICsgY2hlY2tlckRpc3BsYXkgKyAnXSc7XG5cblx0ICAgIGZ1bmN0aW9uIHR5cGUob3B0aW9ucykge1xuXHQgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNob3J0KSB7XG5cdCAgICAgICAgcmV0dXJuIHNob3J0VHlwZTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgb3B0aW9ucyk7XG5cdCAgICB9XG5cblx0ICAgIHR5cGUuX19hcGlDaGVja0RhdGEgPSB7IG9wdGlvbmFsOiBmYWxzZSwgdHlwZTogJ3R5cGVPckFycmF5T2YnIH07XG5cdCAgICByZXR1cm4gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIHR5cGVPckFycmF5T2ZEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24sIG9iaikge1xuXHQgICAgICBpZiAoaXNFcnJvcihjaGVja2Vycy5vbmVPZlR5cGUoW2NoZWNrZXIsIGNoZWNrZXJzLmFycmF5T2YoY2hlY2tlcildKSh2YWwsIG5hbWUsIGxvY2F0aW9uLCBvYmopKSkge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgc2hvcnRUeXBlKTtcblx0ICAgICAgfVxuXHQgICAgfSwgeyB0eXBlOiB0eXBlLCBzaG9ydFR5cGU6IHNob3J0VHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0U2hhcGVDaGVja0dldHRlcigpIHtcblx0ICAgIGZ1bmN0aW9uIHNoYXBlQ2hlY2tHZXR0ZXIoc2hhcGUsIG5vbk9iamVjdCkge1xuXHQgICAgICB2YXIgc2hhcGVUeXBlcyA9IHt9O1xuXHQgICAgICBlYWNoKHNoYXBlLCBmdW5jdGlvbiAoY2hlY2tlciwgcHJvcCkge1xuXHQgICAgICAgIHNoYXBlVHlwZXNbcHJvcF0gPSBnZXRDaGVja2VyRGlzcGxheShjaGVja2VyKTtcblx0ICAgICAgfSk7XG5cdCAgICAgIGZ1bmN0aW9uIHR5cGUoKSB7XG5cdCAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuXHQgICAgICAgIHZhciByZXQgPSB7fTtcblx0ICAgICAgICB2YXIgdGVyc2UgPSBvcHRpb25zLnRlcnNlO1xuXHQgICAgICAgIHZhciBvYmogPSBvcHRpb25zLm9iajtcblx0ICAgICAgICB2YXIgYWRkSGVscGVycyA9IG9wdGlvbnMuYWRkSGVscGVycztcblxuXHQgICAgICAgIHZhciBwYXJlbnRSZXF1aXJlZCA9IG9wdGlvbnMucmVxdWlyZWQ7XG5cdCAgICAgICAgZWFjaChzaGFwZSwgZnVuY3Rpb24gKGNoZWNrZXIsIHByb3ApIHtcblx0ICAgICAgICAgIC8qIGVzbGludCBjb21wbGV4aXR5OlsyLCA2XSAqL1xuXHQgICAgICAgICAgdmFyIHNwZWNpZmllZCA9IG9iaiAmJiBvYmouaGFzT3duUHJvcGVydHkocHJvcCk7XG5cdCAgICAgICAgICB2YXIgcmVxdWlyZWQgPSB1bmRlZihwYXJlbnRSZXF1aXJlZCkgPyAhY2hlY2tlci5pc09wdGlvbmFsIDogcGFyZW50UmVxdWlyZWQ7XG5cdCAgICAgICAgICBpZiAoIXRlcnNlIHx8IChzcGVjaWZpZWQgfHwgIWNoZWNrZXIuaXNPcHRpb25hbCkpIHtcblx0ICAgICAgICAgICAgcmV0W3Byb3BdID0gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgeyB0ZXJzZTogdGVyc2UsIG9iajogb2JqICYmIG9ialtwcm9wXSwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBhZGRIZWxwZXJzOiBhZGRIZWxwZXJzIH0pO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgaWYgKGFkZEhlbHBlcnMpIHtcblx0ICAgICAgICAgICAgbW9kaWZ5VHlwZURpc3BsYXlUb0hlbHBPdXQocmV0LCBwcm9wLCBzcGVjaWZpZWQsIGNoZWNrZXIsIHJlcXVpcmVkKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgICByZXR1cm4gcmV0O1xuXG5cdCAgICAgICAgZnVuY3Rpb24gbW9kaWZ5VHlwZURpc3BsYXlUb0hlbHBPdXQodGhlUmV0LCBwcm9wLCBzcGVjaWZpZWQsIGNoZWNrZXIsIHJlcXVpcmVkKSB7XG5cdCAgICAgICAgICBpZiAoIXNwZWNpZmllZCAmJiByZXF1aXJlZCAmJiAhY2hlY2tlci5pc09wdGlvbmFsKSB7XG5cdCAgICAgICAgICAgIHZhciBpdGVtID0gJ0lURU0nO1xuXHQgICAgICAgICAgICBpZiAoY2hlY2tlci50eXBlICYmIGNoZWNrZXIudHlwZS5fX2FwaUNoZWNrRGF0YSkge1xuXHQgICAgICAgICAgICAgIGl0ZW0gPSBjaGVja2VyLnR5cGUuX19hcGlDaGVja0RhdGEudHlwZS50b1VwcGVyQ2FzZSgpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGFkZEhlbHBlcignbWlzc2luZycsICdNSVNTSU5HIFRISVMgJyArIGl0ZW0sICcgPC0tIFlPVSBBUkUgTUlTU0lORyBUSElTJyk7XG5cdCAgICAgICAgICB9IGVsc2UgaWYgKHNwZWNpZmllZCkge1xuXHQgICAgICAgICAgICB2YXIgZXJyb3IgPSBjaGVja2VyKG9ialtwcm9wXSwgcHJvcCwgbnVsbCwgb2JqKTtcblx0ICAgICAgICAgICAgaWYgKGlzRXJyb3IoZXJyb3IpKSB7XG5cdCAgICAgICAgICAgICAgYWRkSGVscGVyKCdlcnJvcicsICdUSElTIElTIFRIRSBQUk9CTEVNOiAnICsgZXJyb3IubWVzc2FnZSwgJyA8LS0gVEhJUyBJUyBUSEUgUFJPQkxFTTogJyArIGVycm9yLm1lc3NhZ2UpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9XG5cblx0ICAgICAgICAgIGZ1bmN0aW9uIGFkZEhlbHBlcihwcm9wZXJ0eSwgb2JqZWN0TWVzc2FnZSwgc3RyaW5nTWVzc2FnZSkge1xuXHQgICAgICAgICAgICBpZiAodHlwZW9mIHRoZVJldFtwcm9wXSA9PT0gJ3N0cmluZycpIHtcblx0ICAgICAgICAgICAgICB0aGVSZXRbcHJvcF0gKz0gc3RyaW5nTWVzc2FnZTtcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICB0aGVSZXRbcHJvcF0uX19hcGlDaGVja0RhdGFbcHJvcGVydHldID0gb2JqZWN0TWVzc2FnZTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIHR5cGUuX19hcGlDaGVja0RhdGEgPSB7IHN0cmljdDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgdHlwZTogJ3NoYXBlJyB9O1xuXHQgICAgICB2YXIgc2hhcGVDaGVja2VyID0gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIHNoYXBlQ2hlY2tlckRlZmluaXRpb24odmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICAgIC8qIGVzbGludCBjb21wbGV4aXR5OlsyLCA2XSAqL1xuXHQgICAgICAgIHZhciBpc09iamVjdCA9ICFub25PYmplY3QgJiYgY2hlY2tlcnMub2JqZWN0KHZhbCwgbmFtZSwgbG9jYXRpb24pO1xuXHQgICAgICAgIGlmIChpc0Vycm9yKGlzT2JqZWN0KSkge1xuXHQgICAgICAgICAgcmV0dXJuIGlzT2JqZWN0O1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgc2hhcGVQcm9wRXJyb3IgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbiA/IGxvY2F0aW9uICsgKG5hbWUgPyAnLycgOiAnJykgOiAnJztcblx0ICAgICAgICBuYW1lID0gbmFtZSB8fCAnJztcblx0ICAgICAgICBlYWNoKHNoYXBlLCBmdW5jdGlvbiAoY2hlY2tlciwgcHJvcCkge1xuXHQgICAgICAgICAgaWYgKHZhbC5oYXNPd25Qcm9wZXJ0eShwcm9wKSB8fCAhY2hlY2tlci5pc09wdGlvbmFsKSB7XG5cdCAgICAgICAgICAgIHNoYXBlUHJvcEVycm9yID0gY2hlY2tlcih2YWxbcHJvcF0sIHByb3AsICcnICsgbG9jYXRpb24gKyBuYW1lLCB2YWwpO1xuXHQgICAgICAgICAgICByZXR1cm4gIWlzRXJyb3Ioc2hhcGVQcm9wRXJyb3IpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXHQgICAgICAgIGlmIChpc0Vycm9yKHNoYXBlUHJvcEVycm9yKSkge1xuXHQgICAgICAgICAgcmV0dXJuIHNoYXBlUHJvcEVycm9yO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSwgeyB0eXBlOiB0eXBlLCBzaG9ydFR5cGU6ICdzaGFwZScgfSwgZGlzYWJsZWQpO1xuXG5cdCAgICAgIGZ1bmN0aW9uIHN0cmljdFR5cGUoKSB7XG5cdCAgICAgICAgcmV0dXJuIHR5cGUuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuXHQgICAgICB9XG5cblx0ICAgICAgc3RyaWN0VHlwZS5fX2FwaUNoZWNrRGF0YSA9IGNvcHkoc2hhcGVDaGVja2VyLnR5cGUuX19hcGlDaGVja0RhdGEpO1xuXHQgICAgICBzdHJpY3RUeXBlLl9fYXBpQ2hlY2tEYXRhLnN0cmljdCA9IHRydWU7XG5cdCAgICAgIHNoYXBlQ2hlY2tlci5zdHJpY3QgPSBzZXR1cENoZWNrZXIoZnVuY3Rpb24gc3RyaWN0U2hhcGVDaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgICAgdmFyIHNoYXBlRXJyb3IgPSBzaGFwZUNoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbik7XG5cdCAgICAgICAgaWYgKGlzRXJyb3Ioc2hhcGVFcnJvcikpIHtcblx0ICAgICAgICAgIHJldHVybiBzaGFwZUVycm9yO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgYWxsb3dlZFByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzaGFwZSk7XG5cdCAgICAgICAgdmFyIGV4dHJhUHJvcHMgPSBPYmplY3Qua2V5cyh2YWwpLmZpbHRlcihmdW5jdGlvbiAocHJvcCkge1xuXHQgICAgICAgICAgcmV0dXJuIGFsbG93ZWRQcm9wZXJ0aWVzLmluZGV4T2YocHJvcCkgPT09IC0xO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICAgIGlmIChleHRyYVByb3BzLmxlbmd0aCkge1xuXHQgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihuQXRMKG5hbWUsIGxvY2F0aW9uKSArICcgY2Fubm90IGhhdmUgZXh0cmEgcHJvcGVydGllczogJyArIHQoZXh0cmFQcm9wcy5qb2luKCdgLCBgJykpICsgJy4nICsgKCdJdCBpcyBsaW1pdGVkIHRvICcgKyB0KGFsbG93ZWRQcm9wZXJ0aWVzLmpvaW4oJ2AsIGAnKSkpKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0sIHsgdHlwZTogc3RyaWN0VHlwZSwgc2hvcnRUeXBlOiAnc3RyaWN0IHNoYXBlJyB9LCBkaXNhYmxlZCk7XG5cblx0ICAgICAgcmV0dXJuIHNoYXBlQ2hlY2tlcjtcblx0ICAgIH1cblxuXHQgICAgc2hhcGVDaGVja0dldHRlci5pZk5vdCA9IGZ1bmN0aW9uIGlmTm90KG90aGVyUHJvcHMsIHByb3BDaGVja2VyKSB7XG5cdCAgICAgIGlmICghQXJyYXkuaXNBcnJheShvdGhlclByb3BzKSkge1xuXHQgICAgICAgIG90aGVyUHJvcHMgPSBbb3RoZXJQcm9wc107XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGRlc2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuXHQgICAgICBpZiAob3RoZXJQcm9wcy5sZW5ndGggPT09IDEpIHtcblx0ICAgICAgICBkZXNjcmlwdGlvbiA9ICdzcGVjaWZpZWQgb25seSBpZiAnICsgb3RoZXJQcm9wc1swXSArICcgaXMgbm90IHNwZWNpZmllZCc7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgZGVzY3JpcHRpb24gPSAnc3BlY2lmaWVkIG9ubHkgaWYgbm9uZSBvZiB0aGUgZm9sbG93aW5nIGFyZSBzcGVjaWZpZWQ6IFsnICsgbGlzdChvdGhlclByb3BzLCAnLCAnLCAnYW5kICcpICsgJ10nO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciBzaG9ydFR5cGUgPSAnaWZOb3RbJyArIG90aGVyUHJvcHMuam9pbignLCAnKSArICddJztcblx0ICAgICAgdmFyIHR5cGUgPSBnZXRUeXBlRm9yU2hhcGVDaGlsZChwcm9wQ2hlY2tlciwgZGVzY3JpcHRpb24sIHNob3J0VHlwZSk7XG5cdCAgICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gaWZOb3RDaGVja2VyKHByb3AsIHByb3BOYW1lLCBsb2NhdGlvbiwgb2JqKSB7XG5cdCAgICAgICAgdmFyIHByb3BFeGlzdHMgPSBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KHByb3BOYW1lKTtcblx0ICAgICAgICB2YXIgb3RoZXJQcm9wc0V4aXN0ID0gb3RoZXJQcm9wcy5zb21lKGZ1bmN0aW9uIChvdGhlclByb3ApIHtcblx0ICAgICAgICAgIHJldHVybiBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KG90aGVyUHJvcCk7XG5cdCAgICAgICAgfSk7XG5cdCAgICAgICAgaWYgKHByb3BFeGlzdHMgPT09IG90aGVyUHJvcHNFeGlzdCkge1xuXHQgICAgICAgICAgcmV0dXJuIGdldEVycm9yKHByb3BOYW1lLCBsb2NhdGlvbiwgdHlwZSk7XG5cdCAgICAgICAgfSBlbHNlIGlmIChwcm9wRXhpc3RzKSB7XG5cdCAgICAgICAgICByZXR1cm4gcHJvcENoZWNrZXIocHJvcCwgcHJvcE5hbWUsIGxvY2F0aW9uLCBvYmopO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSwgeyBub3RSZXF1aXJlZDogdHJ1ZSwgdHlwZTogdHlwZSwgc2hvcnRUeXBlOiBzaG9ydFR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgICAgfTtcblxuXHQgICAgc2hhcGVDaGVja0dldHRlci5vbmx5SWYgPSBmdW5jdGlvbiBvbmx5SWYob3RoZXJQcm9wcywgcHJvcENoZWNrZXIpIHtcblx0ICAgICAgb3RoZXJQcm9wcyA9IGFycmF5aWZ5KG90aGVyUHJvcHMpO1xuXHQgICAgICB2YXIgZGVzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG5cdCAgICAgIGlmIChvdGhlclByb3BzLmxlbmd0aCA9PT0gMSkge1xuXHQgICAgICAgIGRlc2NyaXB0aW9uID0gJ3NwZWNpZmllZCBvbmx5IGlmICcgKyBvdGhlclByb3BzWzBdICsgJyBpcyBhbHNvIHNwZWNpZmllZCc7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgZGVzY3JpcHRpb24gPSAnc3BlY2lmaWVkIG9ubHkgaWYgYWxsIG9mIHRoZSBmb2xsb3dpbmcgYXJlIHNwZWNpZmllZDogWycgKyBsaXN0KG90aGVyUHJvcHMsICcsICcsICdhbmQgJykgKyAnXSc7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHNob3J0VHlwZSA9ICdvbmx5SWZbJyArIG90aGVyUHJvcHMuam9pbignLCAnKSArICddJztcblx0ICAgICAgdmFyIHR5cGUgPSBnZXRUeXBlRm9yU2hhcGVDaGlsZChwcm9wQ2hlY2tlciwgZGVzY3JpcHRpb24sIHNob3J0VHlwZSk7XG5cdCAgICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gb25seUlmQ2hlY2tlckRlZmluaXRpb24ocHJvcCwgcHJvcE5hbWUsIGxvY2F0aW9uLCBvYmopIHtcblx0ICAgICAgICB2YXIgb3RoZXJzUHJlc2VudCA9IG90aGVyUHJvcHMuZXZlcnkoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdCAgICAgICAgICByZXR1cm4gb2JqLmhhc093blByb3BlcnR5KHByb3BlcnR5KTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgICBpZiAoIW90aGVyc1ByZXNlbnQpIHtcblx0ICAgICAgICAgIHJldHVybiBnZXRFcnJvcihwcm9wTmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICByZXR1cm4gcHJvcENoZWNrZXIocHJvcCwgcHJvcE5hbWUsIGxvY2F0aW9uLCBvYmopO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSwgeyB0eXBlOiB0eXBlLCBzaG9ydFR5cGU6IHNob3J0VHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgICB9O1xuXG5cdCAgICBzaGFwZUNoZWNrR2V0dGVyLnJlcXVpcmVkSWZOb3QgPSBmdW5jdGlvbiBzaGFwZVJlcXVpcmVkSWZOb3Qob3RoZXJQcm9wcywgcHJvcENoZWNrZXIpIHtcblx0ICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG90aGVyUHJvcHMpKSB7XG5cdCAgICAgICAgb3RoZXJQcm9wcyA9IFtvdGhlclByb3BzXTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gZ2V0UmVxdWlyZWRJZk5vdENoZWNrZXIoZmFsc2UsIG90aGVyUHJvcHMsIHByb3BDaGVja2VyKTtcblx0ICAgIH07XG5cblx0ICAgIHNoYXBlQ2hlY2tHZXR0ZXIucmVxdWlyZWRJZk5vdC5hbGwgPSBmdW5jdGlvbiBzaGFwZVJlcXVpcmVkSWZOb3RBbGwob3RoZXJQcm9wcywgcHJvcENoZWNrZXIpIHtcblx0ICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG90aGVyUHJvcHMpKSB7XG5cdCAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXF1aXJlZElmTm90LmFsbCBtdXN0IGJlIHBhc3NlZCBhbiBhcnJheScpO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBnZXRSZXF1aXJlZElmTm90Q2hlY2tlcih0cnVlLCBvdGhlclByb3BzLCBwcm9wQ2hlY2tlcik7XG5cdCAgICB9O1xuXG5cdCAgICBmdW5jdGlvbiBnZXRSZXF1aXJlZElmTm90Q2hlY2tlcihhbGwsIG90aGVyUHJvcHMsIHByb3BDaGVja2VyKSB7XG5cdCAgICAgIHZhciBwcm9wcyA9IHQob3RoZXJQcm9wcy5qb2luKCcsICcpKTtcblx0ICAgICAgdmFyIGlmUHJvcHMgPSAnaWYgJyArIChhbGwgPyAnYWxsIG9mJyA6ICdhdCBsZWFzdCBvbmUgb2YnKTtcblx0ICAgICAgdmFyIGRlc2NyaXB0aW9uID0gJ3NwZWNpZmllZCAnICsgaWZQcm9wcyArICcgdGhlc2UgYXJlIG5vdCBzcGVjaWZpZWQ6ICcgKyBwcm9wcyArICcgKG90aGVyd2lzZSBpdFxcJ3Mgb3B0aW9uYWwpJztcblx0ICAgICAgdmFyIHNob3J0VHlwZSA9ICdyZXF1aXJlZElmTm90JyArIChhbGwgPyAnLmFsbCcgOiAnJykgKyAnWycgKyBvdGhlclByb3BzLmpvaW4oJywgJykgKyAnfV0nO1xuXHQgICAgICB2YXIgdHlwZSA9IGdldFR5cGVGb3JTaGFwZUNoaWxkKHByb3BDaGVja2VyLCBkZXNjcmlwdGlvbiwgc2hvcnRUeXBlKTtcblx0ICAgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBzaGFwZVJlcXVpcmVkSWZOb3REZWZpbml0aW9uKHByb3AsIHByb3BOYW1lLCBsb2NhdGlvbiwgb2JqKSB7XG5cdCAgICAgICAgdmFyIHByb3BFeGlzdHMgPSBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KHByb3BOYW1lKTtcblx0ICAgICAgICB2YXIgaXRlcmF0aW9uID0gYWxsID8gJ2V2ZXJ5JyA6ICdzb21lJztcblx0ICAgICAgICB2YXIgb3RoZXJQcm9wc0V4aXN0ID0gb3RoZXJQcm9wc1tpdGVyYXRpb25dKGZ1bmN0aW9uIChvdGhlclByb3ApIHtcblx0ICAgICAgICAgIHJldHVybiBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KG90aGVyUHJvcCk7XG5cdCAgICAgICAgfSk7XG5cdCAgICAgICAgaWYgKCFvdGhlclByb3BzRXhpc3QgJiYgIXByb3BFeGlzdHMpIHtcblx0ICAgICAgICAgIHJldHVybiBnZXRFcnJvcihwcm9wTmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICAgIH0gZWxzZSBpZiAocHJvcEV4aXN0cykge1xuXHQgICAgICAgICAgcmV0dXJuIHByb3BDaGVja2VyKHByb3AsIHByb3BOYW1lLCBsb2NhdGlvbiwgb2JqKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0sIHsgdHlwZTogdHlwZSwgbm90UmVxdWlyZWQ6IHRydWUgfSwgZGlzYWJsZWQpO1xuXHQgICAgfVxuXG5cdCAgICByZXR1cm4gc2hhcGVDaGVja0dldHRlcjtcblxuXHQgICAgZnVuY3Rpb24gZ2V0VHlwZUZvclNoYXBlQ2hpbGQocHJvcENoZWNrZXIsIGRlc2NyaXB0aW9uLCBzaG9ydFR5cGUpIHtcblx0ICAgICAgZnVuY3Rpb24gdHlwZShvcHRpb25zKSB7XG5cdCAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zaG9ydCkge1xuXHQgICAgICAgICAgcmV0dXJuIHNob3J0VHlwZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGdldENoZWNrZXJEaXNwbGF5KHByb3BDaGVja2VyKTtcblx0ICAgICAgfVxuXHQgICAgICB0eXBlLl9fYXBpQ2hlY2tEYXRhID0geyBvcHRpb25hbDogZmFsc2UsIHR5cGU6ICdpZk5vdCcsIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiB9O1xuXHQgICAgICByZXR1cm4gdHlwZTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICBmdW5jdGlvbiBhcmd1bWVudHNDaGVja2VyR2V0dGVyKCkge1xuXHQgICAgdmFyIHR5cGUgPSAnZnVuY3Rpb24gYXJndW1lbnRzJztcblx0ICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gYXJnc0NoZWNrZXJEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSB8fCBpc0Vycm9yKGNoZWNrZXJzLm9iamVjdCh2YWwpKSB8fCBpc0Vycm9yKGNoZWNrZXJzLm51bWJlcih2YWwubGVuZ3RoKSkpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGFueUNoZWNrR2V0dGVyKCkge1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBhbnlDaGVja2VyRGVmaW5pdGlvbigpIHtcblx0ICAgICAgLy8gZG9uJ3QgZG8gYW55dGhpbmdcblx0ICAgIH0sIHsgdHlwZTogJ2FueScgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIG51bGxDaGVja0dldHRlcigpIHtcblx0ICAgIHZhciB0eXBlID0gJ251bGwnO1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBudWxsQ2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh2YWwgIT09IG51bGwpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIHJhbmdlQ2hlY2tHZXR0ZXIobWluLCBtYXgpIHtcblx0ICAgIHZhciB0eXBlID0gJ1JhbmdlICgnICsgbWluICsgJyAtICcgKyBtYXggKyAnKSc7XG5cdCAgICByZXR1cm4gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIHJhbmdlQ2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh0eXBlb2YgdmFsICE9PSAnbnVtYmVyJyB8fCB2YWwgPCBtaW4gfHwgdmFsID4gbWF4KSB7XG5cdCAgICAgICAgcmV0dXJuIGdldEVycm9yKG5hbWUsIGxvY2F0aW9uLCB0eXBlKTtcblx0ICAgICAgfVxuXHQgICAgfSwgeyB0eXBlOiB0eXBlIH0sIGRpc2FibGVkKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBsZXNzVGhhbkNoZWNrR2V0dGVyKG1pbikge1xuXHQgICAgdmFyIHR5cGUgPSAnbGVzc1RoYW5bJyArIG1pbiArICddJztcblx0ICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gbGVzc1RoYW5DaGVja2VyKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgaWYgKHR5cGVvZiB2YWwgIT09ICdudW1iZXInIHx8IHZhbCA+IG1pbikge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgdHlwZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sIHsgdHlwZTogdHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ3JlYXRlclRoYW5DaGVja0dldHRlcihtYXgpIHtcblx0ICAgIHZhciB0eXBlID0gJ2dyZWF0ZXJUaGFuWycgKyBtYXggKyAnXSc7XG5cdCAgICByZXR1cm4gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIGdyZWF0ZXJUaGFuQ2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh0eXBlb2YgdmFsICE9PSAnbnVtYmVyJyB8fCB2YWwgPCBtYXgpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGVtcHR5T2JqZWN0Q2hlY2tHZXR0ZXIoKSB7XG5cdCAgICB2YXIgdHlwZSA9ICdlbXB0eSBvYmplY3QnO1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBlbXB0eU9iamVjdENoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICBpZiAodHlwZU9mKHZhbCkgIT09ICdvYmplY3QnIHx8IHZhbCA9PT0gbnVsbCB8fCBPYmplY3Qua2V5cyh2YWwpLmxlbmd0aCkge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgdHlwZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sIHsgdHlwZTogdHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXHR9XG5cbi8qKiovIH1cbi8qKioqKiovIF0pXG59KTtcbjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vYXBpLWNoZWNrL2Rpc3QvYXBpLWNoZWNrLmpzXG4vLyBtb2R1bGUgaWQgPSAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 3 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("// angular-formly version 6.8.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory(__webpack_require__(2), __webpack_require__(4));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"api-check\", \"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ngFormly\"] = factory(require(\"api-check\"), require(\"angular\"));\n\telse\n\t\troot[\"ngFormly\"] = factory(root[\"apiCheck\"], root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_16__, __WEBPACK_EXTERNAL_MODULE_17__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar index = _interopRequire(__webpack_require__(1));\n\n\tmodule.exports = index;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tvar formlyApiCheck = _interopRequire(__webpack_require__(2));\n\n\tvar formlyErrorAndWarningsUrlPrefix = _interopRequire(__webpack_require__(3));\n\n\tvar formlyUsability = _interopRequire(__webpack_require__(4));\n\n\tvar formlyConfig = _interopRequire(__webpack_require__(5));\n\n\tvar formlyValidationMessages = _interopRequire(__webpack_require__(6));\n\n\tvar formlyUtil = _interopRequire(__webpack_require__(7));\n\n\tvar formlyWarn = _interopRequire(__webpack_require__(8));\n\n\tvar formlyCustomValidation = _interopRequire(__webpack_require__(9));\n\n\tvar formlyField = _interopRequire(__webpack_require__(10));\n\n\tvar formlyFocus = _interopRequire(__webpack_require__(11));\n\n\tvar formlyForm = _interopRequire(__webpack_require__(12));\n\n\tvar formlyNgModelAttrsManipulator = _interopRequire(__webpack_require__(13));\n\n\tvar formlyCustomTags = _interopRequire(__webpack_require__(14));\n\n\tvar ngModuleName = \"formly\";\n\n\tmodule.exports = ngModuleName;\n\n\tvar ngModule = angular.module(ngModuleName, []);\n\n\tngModule.constant(\"formlyApiCheck\", formlyApiCheck);\n\tngModule.constant(\"formlyErrorAndWarningsUrlPrefix\", formlyErrorAndWarningsUrlPrefix);\n\tngModule.constant(\"formlyVersion\", (\"6.8.2\")); // <-- webpack variable\n\n\tngModule.provider(\"formlyUsability\", formlyUsability);\n\tngModule.provider(\"formlyConfig\", formlyConfig);\n\n\tngModule.factory(\"formlyValidationMessages\", formlyValidationMessages);\n\tngModule.factory(\"formlyUtil\", formlyUtil);\n\tngModule.factory(\"formlyWarn\", formlyWarn);\n\n\tngModule.directive(\"formlyCustomValidation\", formlyCustomValidation);\n\tngModule.directive(\"formlyField\", formlyField);\n\tngModule.directive(\"formlyFocus\", formlyFocus);\n\tngModule.directive(\"formlyForm\", formlyForm);\n\n\tngModule.run(formlyNgModelAttrsManipulator);\n\tngModule.run(formlyCustomTags);\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar apiCheckFactory = _interopRequire(__webpack_require__(16));\n\n\tvar apiCheck = apiCheckFactory({\n\t output: {\n\t prefix: \"angular-formly:\",\n\t docsBaseUrl: __webpack_require__(3)\n\t }\n\t});\n\n\tfunction shapeRequiredIfNot(otherProps, propChecker) {\n\t if (!angular.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t var type = \"specified if these are not specified: `\" + otherProps.join(\", \") + \"` (otherwise it's optional)\";\n\t function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (!otherPropsExist && !propExists) {\n\t return apiCheck.utils.getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }\n\t shapeRequiredIfNotDefinition.type = type;\n\t return apiCheck.utils.checkerHelpers.setupChecker(shapeRequiredIfNotDefinition);\n\t}\n\n\tvar formlyExpression = apiCheck.oneOfType([apiCheck.string, apiCheck.func]);\n\tvar specifyWrapperType = apiCheck.oneOfType([apiCheck.oneOf([null]), apiCheck.typeOrArrayOf(apiCheck.string)]);\n\n\tvar apiCheckProperty = apiCheck.objectOf(apiCheck.func);\n\n\tvar apiCheckInstanceProperty = apiCheck.shape.onlyIf(\"apiCheck\", apiCheck.func.withProperties({\n\t warn: apiCheck.func,\n\t \"throw\": apiCheck.func,\n\t shape: apiCheck.func\n\t}));\n\n\tvar apiCheckFunctionProperty = apiCheck.shape.onlyIf(\"apiCheck\", apiCheck.oneOf([\"throw\", \"warn\"]));\n\n\tvar formlyWrapperType = apiCheck.shape({\n\t name: shapeRequiredIfNot(\"types\", apiCheck.string).optional,\n\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.string).optional,\n\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.string).optional,\n\t types: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t overwriteOk: apiCheck.bool.optional,\n\t validateOptions: apiCheck.func.optional,\n\t apiCheck: apiCheckProperty.optional,\n\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t apiCheckOptions: apiCheck.object.optional\n\t}).strict;\n\n\tvar expressionProperties = apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t expression: formlyExpression,\n\t message: formlyExpression.optional\n\t}).strict]));\n\n\tvar modelChecker = apiCheck.oneOfType([apiCheck.oneOf([\"formState\"]), apiCheck.object]);\n\n\tvar fieldOptionsApiShape = {\n\t $$hashKey: apiCheck.any.optional,\n\t type: apiCheck.shape.ifNot([\"template\", \"templateUrl\"], apiCheck.string).optional,\n\t template: apiCheck.shape.ifNot([\"type\", \"templateUrl\"], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t templateUrl: apiCheck.shape.ifNot([\"type\", \"template\"], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t key: apiCheck.oneOfType([apiCheck.string, apiCheck.number]).optional,\n\t model: modelChecker.optional,\n\t className: apiCheck.string.optional,\n\t id: apiCheck.string.optional,\n\t expressionProperties: expressionProperties.optional,\n\t data: apiCheck.object.optional,\n\t templateOptions: apiCheck.object.optional,\n\t wrapper: specifyWrapperType.optional,\n\t modelOptions: apiCheck.shape({\n\t updateOn: apiCheck.string.optional,\n\t debounce: apiCheck.oneOfType([apiCheck.objectOf(apiCheck.number), apiCheck.number]).optional,\n\t allowInvalid: apiCheck.bool.optional,\n\t getterSetter: apiCheck.bool.optional,\n\t timezone: apiCheck.string.optional\n\t }).optional,\n\t watcher: apiCheck.typeOrArrayOf(apiCheck.shape({\n\t expression: formlyExpression.optional,\n\t listener: formlyExpression\n\t })).optional,\n\t validators: apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t expression: formlyExpression,\n\t message: formlyExpression.optional\n\t }).strict])).optional,\n\t noFormControl: apiCheck.bool.optional,\n\t hide: apiCheck.bool.optional,\n\t hideExpression: formlyExpression.optional,\n\t ngModelAttrs: apiCheck.objectOf(apiCheck.shape({\n\t expression: apiCheck.shape.ifNot([\"value\", \"attribute\", \"bound\"], apiCheck.any).optional,\n\t value: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional,\n\t attribute: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional,\n\t bound: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional\n\t }).strict).optional,\n\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional,\n\t optionsTypes: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t link: apiCheck.func.optional,\n\t controller: apiCheck.oneOfType([apiCheck.string, apiCheck.func, apiCheck.array]).optional,\n\t validation: apiCheck.shape({\n\t show: apiCheck.oneOfType([apiCheck.bool, apiCheck.oneOf([null])]).optional,\n\t messages: apiCheck.objectOf(formlyExpression).optional,\n\t errorExistsAndShouldBeVisible: apiCheck.bool.optional\n\t }).optional,\n\t formControl: apiCheck.object.optional,\n\t value: apiCheck.func.optional,\n\t runExpressions: apiCheck.func.optional,\n\t resetModel: apiCheck.func.optional,\n\t updateInitialValue: apiCheck.func.optional,\n\t initialValue: apiCheck.any.optional,\n\t defaultValue: apiCheck.any.optional\n\t};\n\n\tvar formlyFieldOptions = apiCheck.shape(fieldOptionsApiShape).strict;\n\n\tvar formOptionsApi = apiCheck.shape({\n\t formState: apiCheck.object.optional,\n\t resetModel: apiCheck.func.optional,\n\t updateInitialValue: apiCheck.func.optional,\n\t removeChromeAutoComplete: apiCheck.bool.optional\n\t}).strict;\n\n\tvar fieldGroup = apiCheck.shape({\n\t $$hashKey: apiCheck.any.optional,\n\t // danger. Nested field groups wont get api-checked...\n\t fieldGroup: apiCheck.arrayOf(apiCheck.oneOfType([formlyFieldOptions, apiCheck.object])),\n\t className: apiCheck.string.optional,\n\t options: formOptionsApi.optional,\n\t hide: apiCheck.bool.optional,\n\t hideExpression: formlyExpression.optional,\n\t model: modelChecker.optional,\n\t form: apiCheck.object.optional,\n\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional\n\t}).strict;\n\n\tvar typeOptionsDefaultOptions = angular.copy(fieldOptionsApiShape);\n\ttypeOptionsDefaultOptions.key = apiCheck.string.optional;\n\n\tvar formlyTypeOptions = apiCheck.shape({\n\t name: apiCheck.string,\n\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t controller: apiCheck.oneOfType([apiCheck.func, apiCheck.string, apiCheck.array]).optional,\n\t link: apiCheck.func.optional,\n\t defaultOptions: apiCheck.oneOfType([apiCheck.func, apiCheck.shape(typeOptionsDefaultOptions)]).optional,\n\t \"extends\": apiCheck.string.optional,\n\t wrapper: specifyWrapperType.optional,\n\t data: apiCheck.object.optional,\n\t validateOptions: apiCheck.func.optional,\n\t apiCheck: apiCheckProperty.optional,\n\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t apiCheckOptions: apiCheck.object.optional,\n\t overwriteOk: apiCheck.bool.optional\n\t}).strict;\n\tangular.extend(apiCheck, {\n\t formlyTypeOptions: formlyTypeOptions, formlyFieldOptions: formlyFieldOptions, formlyExpression: formlyExpression, formlyWrapperType: formlyWrapperType, fieldGroup: fieldGroup, formOptionsApi: formOptionsApi\n\t});\n\n\tmodule.exports = apiCheck;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = \"https://github.com/formly-js/angular-formly/blob/\" + (\"6.8.2\") + \"/other/ERRORS_AND_WARNINGS.md#\";\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyUsability;\n\n\t// @ngInject\n\tfunction formlyUsability(formlyApiCheck, formlyErrorAndWarningsUrlPrefix) {\n\t var _this = this;\n\n\t angular.extend(this, {\n\t getFormlyError: getFormlyError,\n\t getFieldError: getFieldError,\n\t checkWrapper: checkWrapper,\n\t checkWrapperTemplate: checkWrapperTemplate,\n\t $get: function () {\n\t return _this;\n\t }\n\t });\n\n\t function getFieldError(errorInfoSlug, message, field) {\n\t if (arguments.length < 3) {\n\t field = message;\n\t message = errorInfoSlug;\n\t errorInfoSlug = null;\n\t }\n\t return new Error(getErrorMessage(errorInfoSlug, message) + (\" Field definition: \" + angular.toJson(field)));\n\t }\n\n\t function getFormlyError(errorInfoSlug, message) {\n\t if (!message) {\n\t message = errorInfoSlug;\n\t errorInfoSlug = null;\n\t }\n\t return new Error(getErrorMessage(errorInfoSlug, message));\n\t }\n\n\t function getErrorMessage(errorInfoSlug, message) {\n\t var url = \"\";\n\t if (errorInfoSlug !== null) {\n\t url = \"\" + formlyErrorAndWarningsUrlPrefix + \"\" + errorInfoSlug;\n\t }\n\t return \"Formly Error: \" + message + \". \" + url;\n\t }\n\n\t function checkWrapper(wrapper) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyWrapperType, wrapper, {\n\t prefix: \"formlyConfig.setWrapper\",\n\t urlSuffix: \"setwrapper-validation-failed\"\n\t });\n\t }\n\n\t function checkWrapperTemplate(template, additionalInfo) {\n\t var formlyTransclude = \" \";\n\t if (template.indexOf(formlyTransclude) === -1) {\n\t throw getFormlyError(\"Template wrapper templates must use \\\"\" + formlyTransclude + \"\\\" somewhere in them. \" + (\"This one does not have \\\" \\\" in it: \" + template) + \"\\n\" + (\"Additional information: \" + JSON.stringify(additionalInfo)));\n\t }\n\t }\n\t}\n\tformlyUsability.$inject = [\"formlyApiCheck\", \"formlyErrorAndWarningsUrlPrefix\"];\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tvar utils = _interopRequire(__webpack_require__(18));\n\n\tmodule.exports = formlyConfig;\n\n\t// @ngInject\n\tfunction formlyConfig(formlyUsabilityProvider, formlyApiCheck) {\n\t var _this2 = this;\n\n\t var typeMap = {};\n\t var templateWrappersMap = {};\n\t var defaultWrapperName = \"default\";\n\t var _this = this;\n\t var getError = formlyUsabilityProvider.getFormlyError;\n\n\t angular.extend(this, {\n\t setType: setType,\n\t getType: getType,\n\t setWrapper: setWrapper,\n\t getWrapper: getWrapper,\n\t getWrapperByType: getWrapperByType,\n\t removeWrapperByName: removeWrapperByName,\n\t removeWrappersForType: removeWrappersForType,\n\t disableWarnings: false,\n\t extras: {\n\t disableNgModelAttrsManipulator: false,\n\t ngModelAttrsManipulatorPreferUnbound: false,\n\t removeChromeAutoComplete: false,\n\t defaultHideDirective: \"ng-if\",\n\t getFieldId: null\n\t },\n\t templateManipulators: {\n\t preWrapper: [],\n\t postWrapper: []\n\t },\n\t $get: function () {\n\t return _this2;\n\t }\n\t });\n\n\t function setType(options) {\n\t if (angular.isArray(options)) {\n\t angular.forEach(options, setType);\n\t } else if (angular.isObject(options)) {\n\t checkType(options);\n\t if (options[\"extends\"]) {\n\t extendTypeOptions(options);\n\t }\n\t typeMap[options.name] = options;\n\t } else {\n\t throw getError(\"You must provide an object or array for setType. You provided: \" + JSON.stringify(arguments));\n\t }\n\t }\n\n\t function checkType(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyTypeOptions, options, {\n\t prefix: \"formlyConfig.setType\",\n\t url: \"settype-validation-failed\"\n\t });\n\t if (!options.overwriteOk) {\n\t checkOverwrite(options.name, typeMap, options, \"types\");\n\t } else {\n\t options.overwriteOk = undefined;\n\t }\n\t }\n\n\t function extendTypeOptions(options) {\n\t var extendsType = getType(options[\"extends\"], true, options);\n\t extendTypeControllerFunction(options, extendsType);\n\t extendTypeLinkFunction(options, extendsType);\n\t extendTypeValidateOptionsFunction(options, extendsType);\n\t extendTypeDefaultOptions(options, extendsType);\n\t utils.reverseDeepMerge(options, extendsType);\n\t extendTemplate(options, extendsType);\n\t }\n\n\t function extendTemplate(options, extendsType) {\n\t if (options.template && extendsType.templateUrl) {\n\t delete options.templateUrl;\n\t } else if (options.templateUrl && extendsType.template) {\n\t delete options.template;\n\t }\n\t }\n\n\t function extendTypeControllerFunction(options, extendsType) {\n\t var extendsCtrl = extendsType.controller;\n\t if (!angular.isDefined(extendsCtrl)) {\n\t return;\n\t }\n\t var optionsCtrl = options.controller;\n\t if (angular.isDefined(optionsCtrl)) {\n\t options.controller = function ($scope, $controller) {\n\t $controller(extendsCtrl, { $scope: $scope });\n\t $controller(optionsCtrl, { $scope: $scope });\n\t };\n\t options.controller.$inject = [\"$scope\", \"$controller\"];\n\t } else {\n\t options.controller = extendsCtrl;\n\t }\n\t }\n\n\t function extendTypeLinkFunction(options, extendsType) {\n\t var extendsFn = extendsType.link;\n\t if (!angular.isDefined(extendsFn)) {\n\t return;\n\t }\n\t var optionsFn = options.link;\n\t if (angular.isDefined(optionsFn)) {\n\t options.link = function () {\n\t extendsFn.apply(undefined, arguments);\n\t optionsFn.apply(undefined, arguments);\n\t };\n\t } else {\n\t options.link = extendsFn;\n\t }\n\t }\n\n\t function extendTypeValidateOptionsFunction(options, extendsType) {\n\t var extendsFn = extendsType.validateOptions;\n\t if (!angular.isDefined(extendsFn)) {\n\t return;\n\t }\n\t var optionsFn = options.validateOptions;\n\t var originalDefaultOptions = options.defaultOptions;\n\t if (angular.isDefined(optionsFn)) {\n\t options.validateOptions = function (options) {\n\t optionsFn(options);\n\t var mergedOptions = angular.copy(options);\n\t var defaultOptions = originalDefaultOptions;\n\t if (defaultOptions) {\n\t if (angular.isFunction(defaultOptions)) {\n\t defaultOptions = defaultOptions(mergedOptions);\n\t }\n\t utils.reverseDeepMerge(mergedOptions, defaultOptions);\n\t }\n\t extendsFn(mergedOptions);\n\t };\n\t } else {\n\t options.validateOptions = extendsFn;\n\t }\n\t }\n\n\t function extendTypeDefaultOptions(options, extendsType) {\n\t var extendsDO = extendsType.defaultOptions;\n\t if (!angular.isDefined(extendsDO)) {\n\t return;\n\t }\n\t var optionsDO = options.defaultOptions;\n\t var optionsDOIsFn = angular.isFunction(optionsDO);\n\t var extendsDOIsFn = angular.isFunction(extendsDO);\n\t if (extendsDOIsFn) {\n\t options.defaultOptions = function defaultOptions(options) {\n\t var extendsDefaultOptions = extendsDO(options);\n\t var mergedDefaultOptions = {};\n\t utils.reverseDeepMerge(mergedDefaultOptions, options, extendsDefaultOptions);\n\t var extenderOptionsDefaultOptions = optionsDO;\n\t if (optionsDOIsFn) {\n\t extenderOptionsDefaultOptions = extenderOptionsDefaultOptions(mergedDefaultOptions);\n\t }\n\t utils.reverseDeepMerge(extendsDefaultOptions, extenderOptionsDefaultOptions);\n\t return extendsDefaultOptions;\n\t };\n\t } else if (optionsDOIsFn) {\n\t options.defaultOptions = function defaultOptions(options) {\n\t var newDefaultOptions = {};\n\t utils.reverseDeepMerge(newDefaultOptions, options, extendsDO);\n\t return optionsDO(newDefaultOptions);\n\t };\n\t }\n\t }\n\n\t function getType(name, throwError, errorContext) {\n\t if (!name) {\n\t return undefined;\n\t }\n\t var type = typeMap[name];\n\t if (!type && throwError === true) {\n\t throw getError(\"There is no type by the name of \\\"\" + name + \"\\\": \" + JSON.stringify(errorContext));\n\t } else {\n\t return type;\n\t }\n\t }\n\n\t function setWrapper(_x, _x2) {\n\t var _again = true;\n\n\t _function: while (_again) {\n\t _again = false;\n\t var options = _x,\n\t name = _x2;\n\n\t if (angular.isArray(options)) {\n\t return options.map(function (wrapperOptions) {\n\t return setWrapper(wrapperOptions);\n\t });\n\t } else if (angular.isObject(options)) {\n\t options.types = getOptionsTypes(options);\n\t options.name = getOptionsName(options, name);\n\t checkWrapperAPI(options);\n\t templateWrappersMap[options.name] = options;\n\t return options;\n\t } else if (angular.isString(options)) {\n\t _x = {\n\t template: options,\n\t name: name\n\t };\n\t _again = true;\n\t continue _function;\n\t }\n\t }\n\t }\n\n\t function getOptionsTypes(options) {\n\t if (angular.isString(options.types)) {\n\t return [options.types];\n\t }\n\t if (!angular.isDefined(options.types)) {\n\t return [];\n\t } else {\n\t return options.types;\n\t }\n\t }\n\n\t function getOptionsName(options, name) {\n\t return options.name || name || options.types.join(\" \") || defaultWrapperName;\n\t }\n\n\t function checkWrapperAPI(options) {\n\t formlyUsabilityProvider.checkWrapper(options);\n\t if (options.template) {\n\t formlyUsabilityProvider.checkWrapperTemplate(options.template, options);\n\t }\n\t if (!options.overwriteOk) {\n\t checkOverwrite(options.name, templateWrappersMap, options, \"templateWrappers\");\n\t } else {\n\t delete options.overwriteOk;\n\t }\n\t checkWrapperTypes(options);\n\t }\n\n\t function checkWrapperTypes(options) {\n\t var shouldThrow = !angular.isArray(options.types) || !options.types.every(angular.isString);\n\t if (shouldThrow) {\n\t throw getError(\"Attempted to create a template wrapper with types that is not a string or an array of strings\");\n\t }\n\t }\n\n\t function checkOverwrite(property, object, newValue, objectName) {\n\t if (object.hasOwnProperty(property)) {\n\t warn([\"Attempting to overwrite \" + property + \" on \" + objectName + \" which is currently\", \"\" + JSON.stringify(object[property]) + \" with \" + JSON.stringify(newValue), \"To supress this warning, specify the property \\\"overwriteOk: true\\\"\"].join(\" \"));\n\t }\n\t }\n\n\t function getWrapper(name) {\n\t return templateWrappersMap[name || defaultWrapperName];\n\t }\n\n\t function getWrapperByType(type) {\n\t /* jshint maxcomplexity:6 */\n\t var wrappers = [];\n\t for (var name in templateWrappersMap) {\n\t if (templateWrappersMap.hasOwnProperty(name)) {\n\t if (templateWrappersMap[name].types && templateWrappersMap[name].types.indexOf(type) !== -1) {\n\t wrappers.push(templateWrappersMap[name]);\n\t }\n\t }\n\t }\n\t return wrappers;\n\t }\n\n\t function removeWrapperByName(name) {\n\t var wrapper = templateWrappersMap[name];\n\t delete templateWrappersMap[name];\n\t return wrapper;\n\t }\n\n\t function removeWrappersForType(type) {\n\t var wrappers = getWrapperByType(type);\n\t if (!wrappers) {\n\t return;\n\t }\n\t if (!angular.isArray(wrappers)) {\n\t return removeWrapperByName(wrappers.name);\n\t } else {\n\t wrappers.forEach(function (wrapper) {\n\t return removeWrapperByName(wrapper.name);\n\t });\n\t return wrappers;\n\t }\n\t }\n\n\t function warn() {\n\t if (!_this.disableWarnings) {\n\t console.warn.apply(console, arguments);\n\t }\n\t }\n\t}\n\tformlyConfig.$inject = [\"formlyUsabilityProvider\", \"formlyApiCheck\"];\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyValidationMessages;\n\n\t// @ngInject\n\tfunction formlyValidationMessages() {\n\n\t var validationMessages = {\n\t addTemplateOptionValueMessage: addTemplateOptionValueMessage,\n\t addStringMessage: addStringMessage,\n\t messages: {}\n\t };\n\n\t return validationMessages;\n\n\t function addTemplateOptionValueMessage(name, prop, prefix, suffix, alternate) {\n\t validationMessages.messages[name] = templateOptionValue(prop, prefix, suffix, alternate);\n\t }\n\n\t function addStringMessage(name, string) {\n\t validationMessages.messages[name] = function () {\n\t return string;\n\t };\n\t }\n\n\t function templateOptionValue(prop, prefix, suffix, alternate) {\n\t return function getValidationMessage(viewValue, modelValue, scope) {\n\t if (scope.options.templateOptions[prop]) {\n\t return \"\" + prefix + \" \" + scope.options.templateOptions[prop] + \" \" + suffix;\n\t } else {\n\t return alternate;\n\t }\n\t };\n\t }\n\t}\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar utils = _interopRequire(__webpack_require__(18));\n\n\tmodule.exports = formlyUtil;\n\n\t// @ngInject\n\tfunction formlyUtil() {\n\t return utils;\n\t}\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\n\tmodule.exports = formlyWarn;\n\n\t// @ngInject\n\tfunction formlyWarn(formlyConfig, formlyErrorAndWarningsUrlPrefix, $log) {\n\t return function warn() {\n\t if (!formlyConfig.disableWarnings) {\n\t var args = Array.prototype.slice.call(arguments);\n\t var warnInfoSlug = args.shift();\n\t args.unshift(\"Formly Warning:\");\n\t args.push(\"\" + formlyErrorAndWarningsUrlPrefix + \"\" + warnInfoSlug);\n\t $log.warn.apply($log, _toConsumableArray(args));\n\t }\n\t };\n\t}\n\tformlyWarn.$inject = [\"formlyConfig\", \"formlyErrorAndWarningsUrlPrefix\", \"$log\"];\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyCustomValidation;\n\n\t// @ngInject\n\tfunction formlyCustomValidation(formlyUtil, $q) {\n\t return {\n\t restrict: \"A\",\n\t require: \"ngModel\",\n\t link: function formlyCustomValidationLink(scope, el, attrs, ctrl) {\n\t var opts = scope.options;\n\t if (opts.validators) {\n\t checkValidators(opts.validators);\n\t }\n\t opts.validation.messages = opts.validation.messages || {};\n\t angular.forEach(opts.validation.messages, function (message, key) {\n\t opts.validation.messages[key] = function () {\n\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t };\n\t });\n\n\t var useNewValidatorsApi = ctrl.hasOwnProperty(\"$validators\") && !attrs.hasOwnProperty(\"useParsers\");\n\t angular.forEach(opts.validators, function addValidatorToPipeline(validator, name) {\n\t var message = validator.message;\n\t if (message) {\n\t opts.validation.messages[name] = function () {\n\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t };\n\t }\n\t validator = angular.isObject(validator) ? validator.expression : validator;\n\t var isPossiblyAsync = !angular.isString(validator);\n\t if (useNewValidatorsApi) {\n\t setupWithValidators();\n\t } else {\n\t setupWithParsers();\n\t }\n\n\t function setupWithValidators() {\n\t var validatorCollection = isPossiblyAsync ? \"$asyncValidators\" : \"$validators\";\n\t ctrl[validatorCollection][name] = function evalValidity(modelValue, viewValue) {\n\t var value = formlyUtil.formlyEval(scope, validator, modelValue, viewValue);\n\t if (isPossiblyAsync) {\n\t return isPromiseLike(value) ? value : value ? $q.when(value) : $q.reject(value);\n\t } else {\n\t return value;\n\t }\n\t };\n\t }\n\n\t function setupWithParsers() {\n\t var inFlightValidator = undefined;\n\t ctrl.$parsers.unshift(function evalValidityOfParser(viewValue) {\n\t var isValid = formlyUtil.formlyEval(scope, validator, ctrl.$modelValue, viewValue);\n\t if (isPromiseLike(isValid)) {\n\t ctrl.$pending = ctrl.$pending || {};\n\t ctrl.$pending[name] = true;\n\t inFlightValidator = isValid;\n\t isValid.then(function () {\n\t if (inFlightValidator === isValid) {\n\t ctrl.$setValidity(name, true);\n\t }\n\t })[\"catch\"](function () {\n\t if (inFlightValidator === isValid) {\n\t ctrl.$setValidity(name, false);\n\t }\n\t })[\"finally\"](function () {\n\t if (Object.keys(ctrl.$pending).length === 1) {\n\t delete ctrl.$pending;\n\t } else {\n\t delete ctrl.$pending[name];\n\t }\n\t });\n\t } else {\n\t ctrl.$setValidity(name, isValid);\n\t }\n\t return viewValue;\n\t });\n\t }\n\t });\n\t }\n\t };\n\n\t function isPromiseLike(obj) {\n\t return obj && angular.isFunction(obj.then);\n\t }\n\n\t function checkValidators(validators) {\n\t var allowedProperties = [\"expression\", \"message\"];\n\t var validatorsWithExtraProps = {};\n\t angular.forEach(validators, function (validator, name) {\n\t if (angular.isString(validator)) {\n\t return;\n\t }\n\t var extraProps = [];\n\t angular.forEach(validator, function (v, key) {\n\t if (allowedProperties.indexOf(key) === -1) {\n\t extraProps.push(key);\n\t }\n\t });\n\t if (extraProps.length) {\n\t validatorsWithExtraProps[name] = extraProps;\n\t }\n\t });\n\t if (Object.keys(validatorsWithExtraProps).length) {\n\t throw new Error([\"Validators are only allowed to be functions or objects that have \" + allowedProperties.join(\", \") + \".\", \"You provided some extra properties: \" + JSON.stringify(validatorsWithExtraProps)].join(\" \"));\n\t }\n\t }\n\t}\n\tformlyCustomValidation.$inject = [\"formlyUtil\", \"$q\"];\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyField;\n\n\t/**\n\t * @ngdoc directive\n\t * @name formlyField\n\t * @restrict AE\n\t */\n\t// @ngInject\n\tfunction formlyField($http, $q, $compile, $templateCache, formlyConfig, formlyValidationMessages, formlyApiCheck, formlyUtil, formlyUsability, formlyWarn) {\n\t var arrayify = formlyUtil.arrayify;\n\n\t FormlyFieldController.$inject = [\"$scope\", \"$timeout\", \"$parse\", \"$controller\"];\n\t return {\n\t restrict: \"AE\",\n\t transclude: true,\n\t scope: {\n\t options: \"=\",\n\t model: \"=\",\n\t formId: \"@\", // TODO remove formId in a breaking release\n\t index: \"=?\",\n\t fields: \"=?\",\n\t formState: \"=?\",\n\t form: \"=?\" // TODO require form in a breaking release\n\t },\n\t controller: FormlyFieldController,\n\t link: fieldLink\n\t };\n\n\t // @ngInject\n\t function FormlyFieldController($scope, $timeout, $parse, $controller) {\n\t /* jshint maxstatements:31 */\n\t if ($scope.options.fieldGroup) {\n\t setupFieldGroup();\n\t return;\n\t }\n\n\t var fieldType = getFieldType($scope.options);\n\t simplifyLife($scope.options);\n\t mergeFieldOptionsWithTypeDefaults($scope.options, fieldType);\n\t extendOptionsWithDefaults($scope.options, $scope.index);\n\t checkApi($scope.options);\n\t // set field id to link labels and fields\n\n\t // initalization\n\t setFieldId();\n\t setDefaultValue();\n\t setInitialValue();\n\t runExpressions();\n\t addModelWatcher($scope, $scope.options);\n\t addValidationMessages($scope.options);\n\t invokeControllers($scope, $scope.options, fieldType);\n\n\t // function definitions\n\t function runExpressions() {\n\t // must run on next tick to make sure that the current value is correct.\n\t $timeout(function runExpressionsOnNextTick() {\n\t var field = $scope.options;\n\t var currentValue = valueGetterSetter();\n\t angular.forEach(field.expressionProperties, function runExpression(expression, prop) {\n\t var setter = $parse(prop).assign;\n\t var promise = $q.when(formlyUtil.formlyEval($scope, expression, currentValue));\n\t promise.then(function setFieldValue(value) {\n\t setter(field, value);\n\t });\n\t });\n\t });\n\t }\n\n\t function valueGetterSetter(newVal) {\n\t if (!$scope.model || !$scope.options.key) {\n\t return;\n\t }\n\t if (angular.isDefined(newVal)) {\n\t $scope.model[$scope.options.key] = newVal;\n\t }\n\t return $scope.model[$scope.options.key];\n\t }\n\n\t function simplifyLife(options) {\n\t // add a few empty objects (if they don't already exist) so you don't have to undefined check everywhere\n\t formlyUtil.reverseDeepMerge(options, {\n\t data: {},\n\t templateOptions: {},\n\t validation: {}\n\t });\n\t // create $scope.to so template authors can reference to instead of $scope.options.templateOptions\n\t $scope.to = $scope.options.templateOptions;\n\t }\n\n\t function setFieldId() {\n\t if (angular.isFunction(formlyConfig.extras.getFieldId)) {\n\t $scope.id = formlyConfig.extras.getFieldId($scope.options, $scope.model, $scope);\n\t } else {\n\t var formName = $scope.form && $scope.form.$name || $scope.formId;\n\t $scope.id = formlyUtil.getFieldId(formName, $scope.options, $scope.index);\n\t }\n\t $scope.options.id = $scope.id;\n\t }\n\n\t function setDefaultValue() {\n\t if (angular.isDefined($scope.options.defaultValue) && !angular.isDefined($scope.model[$scope.options.key])) {\n\t $scope.model[$scope.options.key] = $scope.options.defaultValue;\n\t }\n\t }\n\n\t function setInitialValue() {\n\t $scope.options.initialValue = $scope.model && $scope.model[$scope.options.key];\n\t }\n\n\t function mergeFieldOptionsWithTypeDefaults(options, type) {\n\t if (type) {\n\t mergeOptions(options, type.defaultOptions);\n\t }\n\t var properOrder = arrayify(options.optionsTypes).reverse(); // so the right things are overridden\n\t angular.forEach(properOrder, function (typeName) {\n\t mergeOptions(options, formlyConfig.getType(typeName, true, options).defaultOptions);\n\t });\n\t }\n\n\t function mergeOptions(options, extraOptions) {\n\t if (extraOptions) {\n\t if (angular.isFunction(extraOptions)) {\n\t extraOptions = extraOptions(options);\n\t }\n\t formlyUtil.reverseDeepMerge(options, extraOptions);\n\t }\n\t }\n\n\t function extendOptionsWithDefaults(options, index) {\n\t var key = options.key || index || 0;\n\t angular.extend(options, {\n\t // attach the key in case the formly-field directive is used directly\n\t key: key,\n\t value: valueGetterSetter,\n\t runExpressions: runExpressions,\n\t resetModel: resetModel,\n\t updateInitialValue: updateInitialValue\n\t });\n\t }\n\n\t // initialization functions\n\t function addModelWatcher(scope, options) {\n\t if (options.model) {\n\t scope.$watch(\"options.model\", runExpressions, true);\n\t }\n\t }\n\n\t function resetModel() {\n\t $scope.model[$scope.options.key] = $scope.options.initialValue;\n\t if ($scope.options.formControl) {\n\t $scope.options.formControl.$setViewValue($scope.model[$scope.options.key]);\n\t $scope.options.formControl.$render();\n\t $scope.options.formControl.$setUntouched();\n\t $scope.options.formControl.$setPristine();\n\t }\n\t }\n\n\t function updateInitialValue() {\n\t $scope.options.initialValue = $scope.model[$scope.options.key];\n\t }\n\n\t function addValidationMessages(options) {\n\t options.validation.messages = options.validation.messages || {};\n\t angular.forEach(formlyValidationMessages.messages, function createFunctionForMessage(expression, name) {\n\t if (!options.validation.messages[name]) {\n\t options.validation.messages[name] = function evaluateMessage(viewValue, modelValue, scope) {\n\t return formlyUtil.formlyEval(scope, expression, modelValue, viewValue);\n\t };\n\t }\n\t });\n\t }\n\n\t function invokeControllers(scope) {\n\t var options = arguments[1] === undefined ? {} : arguments[1];\n\t var type = arguments[2] === undefined ? {} : arguments[2];\n\n\t angular.forEach([type.controller, options.controller], function (controller) {\n\t if (controller) {\n\t $controller(controller, { $scope: scope });\n\t }\n\t });\n\t }\n\n\t function setupFieldGroup() {\n\t $scope.options.options = $scope.options.options || {};\n\t $scope.options.options.formState = $scope.formState;\n\t }\n\t }\n\n\t // link function\n\t function fieldLink(scope, el) {\n\t if (scope.options.fieldGroup) {\n\t setFieldGroupTemplate();\n\t return;\n\t }\n\n\t addAttributes();\n\t addClasses();\n\n\t var type = getFieldType(scope.options);\n\t var args = arguments;\n\t var thusly = this;\n\t getFieldTemplate(scope.options).then(runManipulators(formlyConfig.templateManipulators.preWrapper)).then(transcludeInWrappers(scope.options)).then(runManipulators(formlyConfig.templateManipulators.postWrapper)).then(setElementTemplate).then(watchFormControl).then(callLinkFunctions)[\"catch\"](function (error) {\n\t formlyWarn(\"there-was-a-problem-setting-the-template-for-this-field\", \"There was a problem setting the template for this field \", scope.options, error);\n\t });\n\n\t function setFieldGroupTemplate() {\n\t checkFieldGroupApi(scope.options);\n\t el.addClass(\"formly-field-group\");\n\t var extraAttributes = \"\";\n\t if (scope.options.elementAttributes) {\n\t extraAttributes = Object.keys(scope.options.elementAttributes).map(function (key) {\n\t return \"\" + key + \"=\\\"\" + scope.options.elementAttributes[key] + \"\\\"\";\n\t }).join(\" \");\n\t }\n\t setElementTemplate(\"\\n \\n \\n \");\n\t }\n\n\t function addAttributes() {\n\t if (scope.options.elementAttributes) {\n\t el.attr(scope.options.elementAttributes);\n\t }\n\t }\n\n\t function addClasses() {\n\t if (scope.options.className) {\n\t el.addClass(scope.options.className);\n\t }\n\t if (scope.options.type) {\n\t el.addClass(\"formly-field-\" + scope.options.type);\n\t }\n\t }\n\n\t function setElementTemplate(templateString) {\n\t el.html(asHtml(templateString));\n\t $compile(el.contents())(scope);\n\t return templateString;\n\t }\n\n\t function watchFormControl(templateString) {\n\t var stopWatchingField = angular.noop;\n\t var stopWatchingShowError = angular.noop;\n\t if (scope.options.noFormControl) {\n\t return;\n\t }\n\t var templateEl = angular.element(\"\" + templateString + \"
\");\n\t var ngModelNode = templateEl[0].querySelector(\"[ng-model],[data-ng-model]\");\n\t if (ngModelNode && ngModelNode.getAttribute(\"name\")) {\n\t watchFieldNameOrExistence(ngModelNode.getAttribute(\"name\"));\n\t }\n\n\t function watchFieldNameOrExistence(name) {\n\t var nameExpressionRegex = /\\{\\{(.*?)}}/;\n\t var nameExpression = nameExpressionRegex.exec(name);\n\t if (nameExpression) {\n\t watchFieldName(nameExpression[1]);\n\t } else {\n\t watchFieldExistence(name);\n\t }\n\t }\n\n\t function watchFieldName(expression) {\n\t scope.$watch(expression, function oneFieldNameChange(name) {\n\t if (name) {\n\t stopWatchingField();\n\t watchFieldExistence(name);\n\t }\n\t });\n\t }\n\n\t function watchFieldExistence(name) {\n\t stopWatchingField = scope.$watch(\"form[\\\"\" + name + \"\\\"]\", function formControlChange(formControl) {\n\t if (formControl) {\n\t scope.fc = formControl; // shortcut for template authors\n\t scope.options.formControl = formControl;\n\t stopWatchingShowError();\n\t addShowMessagesWatcher();\n\t }\n\t });\n\t }\n\n\t function addShowMessagesWatcher() {\n\t stopWatchingShowError = scope.$watch(function watchShowValidationChange() {\n\t var customExpression = formlyConfig.extras.errorExistsAndShouldBeVisibleExpression;\n\t var options = scope.options;\n\t var fc = scope.fc;\n\n\t if (!fc.$invalid) {\n\t return false;\n\t } else if (typeof options.validation.show === \"boolean\") {\n\t return options.validation.show;\n\t } else if (customExpression) {\n\t return formlyUtil.formlyEval(scope, customExpression, fc.$modelValue, fc.$viewValue);\n\t } else {\n\t var noTouchedButDirty = angular.isUndefined(fc.$touched) && fc.$dirty;\n\t return scope.fc.$touched || noTouchedButDirty;\n\t }\n\t }, function onShowValidationChange(show) {\n\t scope.options.validation.errorExistsAndShouldBeVisible = show;\n\t scope.showError = show; // shortcut for template authors\n\t });\n\t }\n\t }\n\n\t function callLinkFunctions() {\n\t if (type && type.link) {\n\t type.link.apply(thusly, args);\n\t }\n\t if (scope.options.link) {\n\t scope.options.link.apply(thusly, args);\n\t }\n\t }\n\n\t function runManipulators(manipulators) {\n\t return function runManipulatorsOnTemplate(template) {\n\t var chain = $q.when(template);\n\t angular.forEach(manipulators, function (manipulator) {\n\t chain = chain.then(function (template) {\n\t return $q.when(manipulator(template, scope.options, scope)).then(function (newTemplate) {\n\t return angular.isString(newTemplate) ? newTemplate : asHtml(newTemplate);\n\t });\n\t });\n\t });\n\t return chain;\n\t };\n\t }\n\t }\n\n\t // stateless util functions\n\t function asHtml(el) {\n\t var wrapper = angular.element(\" \");\n\t return wrapper.append(el).html();\n\t }\n\n\t function getFieldType(options) {\n\t return options.type && formlyConfig.getType(options.type);\n\t }\n\n\t function getFieldTemplate(options) {\n\t function fromOptionsOrType(key, type) {\n\t if (angular.isDefined(options[key])) {\n\t return options[key];\n\t } else if (type && angular.isDefined(type[key])) {\n\t return type[key];\n\t }\n\t }\n\n\t var type = formlyConfig.getType(options.type, true, options);\n\t var template = fromOptionsOrType(\"template\", type);\n\t var templateUrl = fromOptionsOrType(\"templateUrl\", type);\n\t if (angular.isUndefined(template) && !templateUrl) {\n\t throw formlyUsability.getFieldError(\"type-type-has-no-template\", \"Type '\" + options.type + \"' has not template. On element:\", options);\n\t }\n\n\t return getTemplate(templateUrl || template, angular.isUndefined(template), options);\n\t }\n\n\t function getTemplate(template, isUrl, options) {\n\t var templatePromise = undefined;\n\t if (angular.isFunction(template)) {\n\t templatePromise = $q.when(template(options));\n\t } else {\n\t templatePromise = $q.when(template);\n\t }\n\n\t if (!isUrl) {\n\t return templatePromise;\n\t } else {\n\t var _ret = (function () {\n\t var httpOptions = { cache: $templateCache };\n\t return {\n\t v: templatePromise.then(function (url) {\n\t return $http.get(url, httpOptions);\n\t }).then(function (response) {\n\t return response.data;\n\t })[\"catch\"](function handleErrorGettingATemplate(error) {\n\t formlyWarn(\"problem-loading-template-for-templateurl\", \"Problem loading template for \" + template, error);\n\t })\n\t };\n\t })();\n\n\t if (typeof _ret === \"object\") {\n\t return _ret.v;\n\t }\n\t }\n\t }\n\n\t function transcludeInWrappers(options) {\n\t var wrapper = getWrapperOption(options);\n\n\t return function transcludeTemplate(template) {\n\t if (!wrapper.length) {\n\t return $q.when(template);\n\t }\n\n\t wrapper.forEach(function (wrapper) {\n\t formlyUsability.checkWrapper(wrapper, options);\n\t wrapper.validateOptions && wrapper.validateOptions(options);\n\t runApiCheck(wrapper, options);\n\t });\n\t var promises = wrapper.map(function (w) {\n\t return getTemplate(w.template || w.templateUrl, !w.template);\n\t });\n\t return $q.all(promises).then(function (wrappersTemplates) {\n\t wrappersTemplates.forEach(function (wrapperTemplate, index) {\n\t formlyUsability.checkWrapperTemplate(wrapperTemplate, wrapper[index]);\n\t });\n\t wrappersTemplates.reverse(); // wrapper 0 is wrapped in wrapper 1 and so on...\n\t var totalWrapper = wrappersTemplates.shift();\n\t wrappersTemplates.forEach(function (wrapperTemplate) {\n\t totalWrapper = doTransclusion(totalWrapper, wrapperTemplate);\n\t });\n\t return doTransclusion(totalWrapper, template);\n\t });\n\t };\n\t }\n\n\t function doTransclusion(wrapper, template) {\n\t var superWrapper = angular.element(\" \"); // this allows people not have to have a single root in wrappers\n\t superWrapper.append(wrapper);\n\t var transcludeEl = superWrapper.find(\"formly-transclude\");\n\t if (!transcludeEl.length) {\n\t //try it using our custom find function\n\t transcludeEl = formlyUtil.findByNodeName(superWrapper, \"formly-transclude\");\n\t }\n\t transcludeEl.replaceWith(template);\n\t return superWrapper.html();\n\t }\n\n\t function getWrapperOption(options) {\n\t var wrapper = options.wrapper;\n\t // explicit null means no wrapper\n\t if (wrapper === null) {\n\t return [];\n\t }\n\n\t // nothing specified means use the default wrapper for the type\n\t if (!wrapper) {\n\t // get all wrappers that specify they apply to this type\n\t wrapper = arrayify(formlyConfig.getWrapperByType(options.type));\n\t } else {\n\t wrapper = arrayify(wrapper).map(formlyConfig.getWrapper);\n\t }\n\n\t // get all wrappers for that this type specified that it uses.\n\t var type = formlyConfig.getType(options.type, true, options);\n\t if (type && type.wrapper) {\n\t var typeWrappers = arrayify(type.wrapper).map(formlyConfig.getWrapper);\n\t wrapper = wrapper.concat(typeWrappers);\n\t }\n\n\t // add the default wrapper last\n\t var defaultWrapper = formlyConfig.getWrapper();\n\t if (defaultWrapper) {\n\t wrapper.push(defaultWrapper);\n\t }\n\t return wrapper;\n\t }\n\n\t function checkApi(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyFieldOptions, options, {\n\t prefix: \"formly-field directive\",\n\t url: \"formly-field-directive-validation-failed\"\n\t });\n\t // validate with the type\n\t var type = options.type && formlyConfig.getType(options.type);\n\t if (type) {\n\t if (type.validateOptions) {\n\t type.validateOptions(options);\n\t }\n\t runApiCheck(type, options);\n\t }\n\t }\n\n\t function checkFieldGroupApi(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.fieldGroup, options, {\n\t prefix: \"formly-field directive\",\n\t url: \"formly-field-directive-validation-failed\"\n\t });\n\t }\n\n\t function runApiCheck(_ref, options) {\n\t var apiCheck = _ref.apiCheck;\n\t var apiCheckInstance = _ref.apiCheckInstance;\n\t var apiCheckFunction = _ref.apiCheckFunction;\n\t var apiCheckOptions = _ref.apiCheckOptions;\n\n\t if (!apiCheck) {\n\t return;\n\t }\n\t var instance = apiCheckInstance || formlyApiCheck;\n\t var fn = apiCheckFunction || \"warn\";\n\t var shape = instance.shape(apiCheck);\n\t instance[fn](shape, options, apiCheckOptions || {\n\t prefix: \"formly-field \" + name,\n\t url: formlyApiCheck.config.output.docsBaseUrl + \"formly-field-type-apicheck-failed\"\n\t });\n\t }\n\t}\n\tformlyField.$inject = [\"$http\", \"$q\", \"$compile\", \"$templateCache\", \"formlyConfig\", \"formlyValidationMessages\", \"formlyApiCheck\", \"formlyUtil\", \"formlyUsability\", \"formlyWarn\"];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyFocus;\n\n\t// @ngInject\n\tfunction formlyFocus($timeout, $document) {\n\t /* jshint -W052 */\n\t return {\n\t restrict: \"A\",\n\t link: function formlyFocusLink(scope, element, attrs) {\n\t var previousEl = null;\n\t var el = element[0];\n\t var doc = $document[0];\n\t attrs.$observe(\"formlyFocus\", function respondToFocusExpressionChange(value) {\n\t if (value === \"true\") {\n\t $timeout(function setElementFocus() {\n\t previousEl = doc.activeElement;\n\t el.focus();\n\t }, ~ ~attrs.focusWait);\n\t } else if (value === \"false\") {\n\t if (doc.activeElement === el) {\n\t el.blur();\n\t if (attrs.hasOwnProperty(\"refocus\") && previousEl) {\n\t previousEl.focus();\n\t }\n\t }\n\t }\n\t });\n\t }\n\t };\n\t}\n\tformlyFocus.$inject = [\"$timeout\", \"$document\"];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\n\tvar _slice = Array.prototype.slice;\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyForm;\n\n\t/**\n\t * @ngdoc directive\n\t * @name formlyForm\n\t * @restrict E\n\t */\n\t// @ngInject\n\tfunction formlyForm(formlyUsability, $parse, formlyApiCheck, formlyConfig) {\n\t var currentFormId = 1;\n\t return {\n\t restrict: \"E\",\n\t template: function formlyFormGetTemplate(el, attrs) {\n\t /* jshint -W033 */ // this because jshint is broken I guess...\n\t var rootEl = getRootEl();\n\t var fieldRootEl = getFieldRootEl();\n\t var formId = \"formly_\" + currentFormId++;\n\t var parentFormAttributes = \"\";\n\t if (attrs.hasOwnProperty(\"isFieldGroup\") && el.parent().parent().hasClass(\"formly\")) {\n\t parentFormAttributes = copyAttributes(el.parent().parent()[0].attributes);\n\t }\n\t return \"\\n <\" + rootEl + \" class=\\\"formly\\\"\\n name=\\\"\" + getFormName() + \"\\\"\\n role=\\\"form\\\" \" + parentFormAttributes + \">\\n <\" + fieldRootEl + \" formly-field\\n ng-repeat=\\\"field in fields \" + getTrackBy() + \"\\\"\\n \" + getHideDirective() + \"=\\\"!field.hide\\\"\\n class=\\\"formly-field\\\"\\n options=\\\"field\\\"\\n model=\\\"field.model || model\\\"\\n fields=\\\"fields\\\"\\n form=\\\"theFormlyForm\\\"\\n form-id=\\\"\" + getFormName() + \"\\\"\\n form-state=\\\"options.formState\\\"\\n index=\\\"$index\\\">\\n \" + fieldRootEl + \">\\n
\\n \" + rootEl + \">\\n \";\n\n\t function getRootEl() {\n\t return attrs.rootEl || \"ng-form\";\n\t }\n\n\t function getFieldRootEl() {\n\t return attrs.fieldRootEl || \"div\";\n\t }\n\n\t function getHideDirective() {\n\t return attrs.hideDirective || formlyConfig.extras.defaultHideDirective || \"ng-if\";\n\t }\n\n\t function getTrackBy() {\n\t if (!attrs.trackBy) {\n\t return \"\";\n\t } else {\n\t return \"track by \" + attrs.trackBy;\n\t }\n\t }\n\n\t function getFormName() {\n\t var formName = formId;\n\t var bindName = attrs.bindName;\n\t if (bindName) {\n\t if (angular.version.minor < 3) {\n\t throw formlyUsability.getFormlyError(\"bind-name attribute on formly-form not allowed in > angular 1.3\");\n\t }\n\t // we can do a one-time binding here because we know we're in 1.3.x territory\n\t formName = \"{{::'formly_' + \" + bindName + \"}}\";\n\t }\n\t return formName;\n\t }\n\n\t function copyAttributes(attributes) {\n\t var excluded = [\"model\", \"form\", \"fields\", \"options\", \"name\", \"role\", \"class\"];\n\t var arrayAttrs = [];\n\t angular.forEach(attributes, function (_ref) {\n\t var nodeName = _ref.nodeName;\n\t var nodeValue = _ref.nodeValue;\n\n\t if (nodeName !== \"undefined\" && excluded.indexOf(nodeName) === -1) {\n\t arrayAttrs.push(\"\" + toKebabCase(nodeName) + \"=\\\"\" + nodeValue + \"\\\"\");\n\t }\n\t });\n\t return arrayAttrs.join(\" \");\n\t }\n\n\t function toKebabCase(string) {\n\t if (string) {\n\t return string.replace(/([A-Z])/g, function ($1) {\n\t return \"-\" + $1.toLowerCase();\n\t });\n\t } else {\n\t return \"\";\n\t }\n\t }\n\t },\n\t replace: true,\n\t transclude: true,\n\t scope: {\n\t fields: \"=\",\n\t model: \"=\",\n\t form: \"=?\",\n\t options: \"=?\"\n\t },\n\t controller: /* @ngInject */[\"$scope\", \"formlyUtil\", function FormlyFormController($scope, formlyUtil) {\n\t setupOptions();\n\t $scope.model = $scope.model || {};\n\t $scope.fields = $scope.fields || [];\n\n\t angular.forEach($scope.fields, initModel); // initializes the model property if set to 'formState'\n\t angular.forEach($scope.fields, attachKey); // attaches a key based on the index if a key isn't specified\n\t angular.forEach($scope.fields, setupWatchers); // setup watchers for all fields\n\n\t // watch the model and evaluate watch expressions that depend on it.\n\t $scope.$watch(\"model\", onModelOrFormStateChange, true);\n\t if ($scope.options.formState) {\n\t $scope.$watch(\"options.formState\", onModelOrFormStateChange, true);\n\t }\n\n\t function onModelOrFormStateChange() {\n\t angular.forEach($scope.fields, function runFieldExpressionProperties(field, index) {\n\t /*jshint -W030 */\n\t var model = field.model || $scope.model;\n\t field.runExpressions && field.runExpressions(model);\n\t if (field.hideExpression) {\n\t // can't use hide with expressionProperties reliably\n\t var val = model[field.key];\n\t // this makes it closer to what a regular expressionProperty would be\n\t var extraLocals = {\n\t options: field,\n\t index: index,\n\t formState: $scope.options.formState,\n\t formId: $scope.formId\n\t };\n\t field.hide = formlyUtil.formlyEval($scope, field.hideExpression, val, val, extraLocals);\n\t }\n\t });\n\t }\n\n\t function setupOptions() {\n\t formlyApiCheck[\"throw\"]([formlyApiCheck.formOptionsApi.optional], [$scope.options], { prefix: \"formly-form options check\" });\n\t $scope.options = $scope.options || {};\n\t $scope.options.formState = $scope.options.formState || {};\n\n\t angular.extend($scope.options, {\n\t updateInitialValue: updateInitialValue,\n\t resetModel: resetModel\n\t });\n\t }\n\n\t function updateInitialValue() {\n\t angular.forEach($scope.fields, function (field) {\n\t if (isFieldGroup(field)) {\n\t field.options.updateInitialValue();\n\t } else {\n\t field.updateInitialValue();\n\t }\n\t });\n\t }\n\n\t function resetModel() {\n\t angular.forEach($scope.fields, function (field) {\n\t if (isFieldGroup(field)) {\n\t field.options.resetModel();\n\t } else {\n\t field.resetModel();\n\t }\n\t });\n\t }\n\n\t function initModel(field) {\n\t if (field.model && field.model === \"formState\") {\n\t field.model = $scope.options.formState;\n\t }\n\t }\n\n\t function attachKey(field, index) {\n\t if (!isFieldGroup(field)) {\n\t field.key = field.key || index || 0;\n\t }\n\t }\n\n\t function setupWatchers(field, index) {\n\t if (isFieldGroup(field) || !angular.isDefined(field.watcher)) {\n\t return;\n\t }\n\t var watchers = field.watcher;\n\t if (!angular.isArray(watchers)) {\n\t watchers = [watchers];\n\t }\n\t angular.forEach(watchers, function setupWatcher(watcher) {\n\t if (!angular.isDefined(watcher.listener)) {\n\t throw formlyUsability.getFieldError(\"all-field-watchers-must-have-a-listener\", \"All field watchers must have a listener\", field);\n\t }\n\t var watchExpression = getWatchExpression(watcher, field, index);\n\t var watchListener = getWatchListener(watcher, field, index);\n\n\t var type = watcher.type || \"$watch\";\n\t watcher.stopWatching = $scope[type](watchExpression, watchListener, watcher.watchDeep);\n\t });\n\t }\n\n\t function getWatchExpression(watcher, field, index) {\n\t var watchExpression = watcher.expression || \"model['\" + field.key + \"']\";\n\t if (angular.isFunction(watchExpression)) {\n\t // wrap the field's watch expression so we can call it with the field as the first arg\n\t // and the stop function as the last arg as a helper\n\t var originalExpression = watchExpression;\n\t watchExpression = function formlyWatchExpression() {\n\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t return originalExpression.apply(undefined, _toConsumableArray(args));\n\t };\n\t watchExpression.displayName = \"Formly Watch Expression for field for \" + field.key;\n\t }\n\t return watchExpression;\n\t }\n\n\t function getWatchListener(watcher, field, index) {\n\t var watchListener = watcher.listener;\n\t if (angular.isFunction(watchListener)) {\n\t // wrap the field's watch listener so we can call it with the field as the first arg\n\t // and the stop function as the last arg as a helper\n\t var originalListener = watchListener;\n\t watchListener = function formlyWatchListener() {\n\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t return originalListener.apply(undefined, _toConsumableArray(args));\n\t };\n\t watchListener.displayName = \"Formly Watch Listener for field for \" + field.key;\n\t }\n\t return watchListener;\n\t }\n\n\t function modifyArgs(watcher, index) {\n\t for (var _len = arguments.length, originalArgs = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n\t originalArgs[_key - 2] = arguments[_key];\n\t }\n\n\t return [$scope.fields[index]].concat(originalArgs, [watcher.stopWatching]);\n\t }\n\n\t function isFieldGroup(field) {\n\t return field && !!field.fieldGroup;\n\t }\n\t }],\n\t link: function link(scope, el, attrs) {\n\t var formId = attrs.name;\n\t scope.formId = formId;\n\t scope.theFormlyForm = scope[formId];\n\t if (attrs.form) {\n\t $parse(attrs.form).assign(scope.$parent, scope[formId]);\n\t }\n\n\t // chrome autocomplete lameness\n\t // see https://code.google.com/p/chromium/issues/detail?id=468153#c14\n\t // ლ(ಠ益ಠლ) (╯°□°)╯︵ ┻━┻ (◞‸◟;)\n\t var global = formlyConfig.extras.removeChromeAutoComplete === true;\n\t var offInstance = scope.options && scope.options.removeChromeAutoComplete === false;\n\t var onInstance = scope.options && scope.options.removeChromeAutoComplete === true;\n\t if (global && !offInstance || onInstance) {\n\t var input = document.createElement(\"input\");\n\t input.setAttribute(\"autocomplete\", \"address-level4\");\n\t input.setAttribute(\"hidden\", true);\n\t el[0].appendChild(input);\n\t }\n\t }\n\t };\n\t}\n\tformlyForm.$inject = [\"formlyUsability\", \"$parse\", \"formlyApiCheck\", \"formlyConfig\"];\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = addFormlyNgModelAttrsManipulator;\n\n\t// @ngInject\n\tfunction addFormlyNgModelAttrsManipulator(formlyConfig) {\n\t if (formlyConfig.extras.disableNgModelAttrsManipulator) {\n\t return;\n\t }\n\t formlyConfig.templateManipulators.preWrapper.push(ngModelAttrsManipulator);\n\n\t function ngModelAttrsManipulator(template, options, scope) {\n\t /* jshint maxcomplexity:6 */\n\t var el = document.createElement(\"div\");\n\t var data = options.data;\n\t if (data.skipNgModelAttrsManipulator === true) {\n\t return template;\n\t }\n\t el.innerHTML = template;\n\t var modelNodes = el.querySelectorAll(\"[ng-model], [data-ng-model]\");\n\t if (!modelNodes || !modelNodes.length) {\n\t return template;\n\t }\n\n\t addIfNotPresent(modelNodes, \"id\", scope.id);\n\t addIfNotPresent(modelNodes, \"name\", scope.id);\n\n\t addValidation();\n\t addModelOptions();\n\t addTemplateOptionsAttrs();\n\n\t return el.innerHTML;\n\n\t function addValidation() {\n\t if (angular.isDefined(options.validators) || angular.isDefined(options.validation.messages)) {\n\t addIfNotPresent(modelNodes, \"formly-custom-validation\", \"\");\n\t }\n\t }\n\n\t function addModelOptions() {\n\t if (angular.isDefined(options.modelOptions)) {\n\t addIfNotPresent(modelNodes, \"ng-model-options\", \"options.modelOptions\");\n\t if (options.modelOptions.getterSetter) {\n\t angular.forEach(modelNodes, function (node) {\n\t node.setAttribute(\"ng-model\", \"options.value\");\n\t });\n\t }\n\t }\n\t }\n\n\t function addTemplateOptionsAttrs() {\n\t if (!options.templateOptions && !options.expressionProperties) {\n\t // no need to run these if there are no templateOptions or expressionProperties\n\t return;\n\t }\n\t var to = options.templateOptions || {};\n\t var ep = options.expressionProperties || {};\n\n\t var ngModelAttributes = getBuiltInAttributes();\n\n\t // extend with the user's specifications winning\n\t angular.extend(ngModelAttributes, options.ngModelAttrs);\n\n\t // Feel free to make this more simple :-)\n\t angular.forEach(ngModelAttributes, function (val, name) {\n\t /* jshint maxcomplexity:14 */\n\t var attrVal = undefined;\n\t var attrName = undefined;\n\t var ref = \"options.templateOptions['\" + name + \"']\";\n\t var toVal = to[name];\n\t var epVal = getEpValue(ep, name);\n\n\t var inTo = angular.isDefined(toVal);\n\t var inEp = angular.isDefined(epVal);\n\t if (val.value) {\n\t // I realize this looks backwards, but it's right, trust me...\n\t attrName = val.value;\n\t attrVal = name;\n\t } else if (val.expression && inTo) {\n\t attrName = val.expression;\n\t if (angular.isString(to[name])) {\n\t attrVal = \"$eval(\" + ref + \")\";\n\t } else if (angular.isFunction(to[name])) {\n\t attrVal = \"\" + ref + \"(model[options.key], options, this, $event)\";\n\t } else {\n\t throw new Error(\"options.templateOptions.\" + name + \" must be a string or function: \" + JSON.stringify(options));\n\t }\n\t } else if (val.bound && inEp) {\n\t attrName = val.bound;\n\t attrVal = ref;\n\t } else if ((val.attribute || val.boolean) && inEp) {\n\t attrName = val.attribute || val.boolean;\n\t attrVal = \"{{\" + ref + \"}}\";\n\t } else if (val.attribute && inTo) {\n\t attrName = val.attribute;\n\t attrVal = toVal;\n\t } else if (val.boolean) {\n\t if (inTo && !inEp && toVal) {\n\t attrName = val.boolean;\n\t attrVal = true;\n\t } else {}\n\t } else if (val.bound && inTo) {\n\t attrName = val.bound;\n\t attrVal = ref;\n\t }\n\n\t if (angular.isDefined(attrName) && angular.isDefined(attrVal)) {\n\t addIfNotPresent(modelNodes, attrName, attrVal);\n\t }\n\t });\n\t }\n\t }\n\n\t // Utility functions\n\t function getBuiltInAttributes() {\n\t var ngModelAttributes = {\n\t focus: {\n\t attribute: \"formly-focus\"\n\t }\n\t };\n\t var boundOnly = [];\n\t var bothBooleanAndBound = [\"required\", \"disabled\"];\n\t var bothAttributeAndBound = [\"pattern\", \"minlength\"];\n\t var expressionOnly = [\"change\", \"keydown\", \"keyup\", \"keypress\", \"click\", \"focus\", \"blur\"];\n\t var attributeOnly = [\"placeholder\", \"min\", \"max\", \"tabindex\", \"type\"];\n\t if (formlyConfig.extras.ngModelAttrsManipulatorPreferUnbound) {\n\t bothAttributeAndBound.push(\"maxlength\");\n\t } else {\n\t boundOnly.push(\"maxlength\");\n\t }\n\n\t angular.forEach(boundOnly, function (item) {\n\t ngModelAttributes[item] = { bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(bothBooleanAndBound, function (item) {\n\t ngModelAttributes[item] = { boolean: item, bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(bothAttributeAndBound, function (item) {\n\t ngModelAttributes[item] = { attribute: item, bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(expressionOnly, function (item) {\n\t var propName = \"on\" + item.substr(0, 1).toUpperCase() + item.substr(1);\n\t ngModelAttributes[propName] = { expression: \"ng-\" + item };\n\t });\n\n\t angular.forEach(attributeOnly, function (item) {\n\t ngModelAttributes[item] = { attribute: item };\n\t });\n\t return ngModelAttributes;\n\t }\n\n\t function getEpValue(ep, name) {\n\t return ep[\"templateOptions.\" + name] || ep[\"templateOptions['\" + name + \"']\"] || ep[\"templateOptions[\\\"\" + name + \"\\\"]\"];\n\t }\n\n\t function addIfNotPresent(nodes, attr, val) {\n\t angular.forEach(nodes, function (node) {\n\t if (!node.getAttribute(attr)) {\n\t node.setAttribute(attr, val);\n\t }\n\t });\n\t }\n\t}\n\taddFormlyNgModelAttrsManipulator.$inject = [\"formlyConfig\"];\n\n\t// jshint -W035\n\t// empty to illustrate that a boolean will not be added via val.bound\n\t// if you want it added via val.bound, then put it in expressionProperties\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = addCustomTags;\n\n\t// @ngInject\n\tfunction addCustomTags($document) {\n\t if ($document && $document.get) {\n\t (function () {\n\t //IE8 check ->\n\t // http://stackoverflow.com/questions/10964966/detect-ie-version-prior-to-v9-in-javascript/10965203#10965203\n\t var document = $document.get(0);\n\t var div = document.createElement(\"div\");\n\t div.innerHTML = \"\";\n\t var isIeLessThan9 = div.getElementsByTagName(\"i\").length === 1;\n\n\t if (isIeLessThan9) {\n\t //add the custom elements that we need for formly\n\t var customElements = [\"formly-field\", \"formly-form\", \"formly-custom-validation\", \"formly-focus\", \"formly-transpose\"];\n\t angular.forEach(customElements, function (el) {\n\t document.createElement(el);\n\t });\n\t }\n\t })();\n\t }\n\t}\n\taddCustomTags.$inject = [\"$document\"];\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\t// some versions of angular don't export the angular module properly,\n\t// so we get it from window in this case.\n\n\tvar angular = _interopRequire(__webpack_require__(17));\n\n\tif (!angular.version) {\n\t angular = window.angular;\n\t}\n\tmodule.exports = angular;\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_16__;\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_17__;\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = { formlyEval: formlyEval, getFieldId: getFieldId, reverseDeepMerge: reverseDeepMerge, findByNodeName: findByNodeName, arrayify: arrayify, extendFunction: extendFunction };\n\n\tfunction formlyEval(scope, expression, $modelValue, $viewValue, extraLocals) {\n\t if (angular.isFunction(expression)) {\n\t return expression($viewValue, $modelValue, scope, extraLocals);\n\t } else {\n\t return scope.$eval(expression, angular.extend({ $viewValue: $viewValue, $modelValue: $modelValue }, extraLocals));\n\t }\n\t}\n\n\tfunction getFieldId(formId, options, index) {\n\t if (options.id) {\n\t return options.id;\n\t }\n\t var type = options.type;\n\t if (!type && options.template) {\n\t type = \"template\";\n\t } else if (!type && options.templateUrl) {\n\t type = \"templateUrl\";\n\t }\n\n\t return [formId, type, options.key, index].join(\"_\");\n\t}\n\n\tfunction reverseDeepMerge(dest) {\n\t angular.forEach(arguments, function (src, index) {\n\t if (!index) {\n\t return;\n\t }\n\t angular.forEach(src, function (val, prop) {\n\t if (!angular.isDefined(dest[prop])) {\n\t dest[prop] = angular.copy(val);\n\t } else if (objAndSameType(dest[prop], val)) {\n\t reverseDeepMerge(dest[prop], val);\n\t }\n\t });\n\t });\n\t}\n\n\tfunction objAndSameType(obj1, obj2) {\n\t return angular.isObject(obj1) && angular.isObject(obj2) && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2);\n\t}\n\n\t//recurse down a node tree to find a node with matching nodeName, for custom tags jQuery.find doesn't work in IE8\n\tfunction findByNodeName(el, nodeName) {\n\t if (!el.prop) {\n\t // not a jQuery or jqLite object -> wrap it\n\t el = angular.element(el);\n\t }\n\n\t if (el.prop(\"nodeName\") === nodeName.toUpperCase()) {\n\t return el;\n\t }\n\n\t var c = el.children();\n\t for (var i = 0; c && i < c.length; i++) {\n\t var node = findByNodeName(c[i], nodeName);\n\t if (node) {\n\t return node;\n\t }\n\t }\n\t}\n\n\tfunction arrayify(obj) {\n\t if (obj && !angular.isArray(obj)) {\n\t obj = [obj];\n\t } else if (!obj) {\n\t obj = [];\n\t }\n\t return obj;\n\t}\n\n\tfunction extendFunction() {\n\t for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n\t fns[_key] = arguments[_key];\n\t }\n\n\t return function extendedFunction() {\n\t var args = arguments;\n\t fns.forEach(function (fn) {\n\t return fn.apply(null, args);\n\t });\n\t };\n\t}\n\n/***/ }\n/******/ ])\n});\n;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2FuZ3VsYXItZm9ybWx5L2Rpc3QvZm9ybWx5LmpzPzUxZmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELG9DQUFvQztBQUNwQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsdUNBQXVDLHFEQUFxRDs7QUFFNUY7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsdUNBQXVDLHFEQUFxRDs7QUFFNUY7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLCtDQUErQzs7QUFFL0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSx1Q0FBdUMscURBQXFEOztBQUU1Rjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7O0FBRUY7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsdUNBQXVDLHFEQUFxRDs7QUFFNUY7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSx1Q0FBdUMscURBQXFEOztBQUU1Rjs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsaUJBQWlCO0FBQ3BELG1DQUFtQyxpQkFBaUI7QUFDcEQ7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSx1Q0FBdUMscURBQXFEOztBQUU1Rjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSwwQ0FBMEMsMEJBQTBCLDBDQUEwQyxnQkFBZ0IsdUJBQXVCLGFBQWEsRUFBRSxPQUFPLHdCQUF3QixFQUFFOztBQUVyTTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFROztBQUVSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQixjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLHVDQUF1QyxxREFBcUQ7O0FBRTVGOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLFVBQVU7QUFDVixRQUFRO0FBQ1I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQiw0QkFBNEI7QUFDNUI7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0VBQWtFO0FBQ2xFO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjs7QUFFQTtBQUNBLG9EQUFvRDtBQUNwRCxpREFBaUQ7O0FBRWpEO0FBQ0E7QUFDQSxvQ0FBb0MsZ0JBQWdCO0FBQ3BEO0FBQ0EsUUFBUTtBQUNSOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQ0FBc0MsRUFBRSxPQUFPO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxZQUFZO0FBQ1o7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0Esa0NBQWtDO0FBQ2xDLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsWUFBWTtBQUNaLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBLFlBQVk7QUFDWjtBQUNBLFlBQVk7QUFDWjtBQUNBLFFBQVE7O0FBRVI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBLG1EQUFtRDtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsdUNBQXVDLHFEQUFxRDs7QUFFNUYsMENBQTBDLDBCQUEwQiwwQ0FBMEMsZ0JBQWdCLHVCQUF1QixhQUFhLEVBQUUsT0FBTyx3QkFBd0IsRUFBRTs7QUFFck07O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsZ0NBQWdDO0FBQ3pEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1osVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpREFBaUQ7QUFDakQsaURBQWlEO0FBQ2pELHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0EsOEZBQThGLHNDQUFzQztBQUNwSTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtR0FBbUcsYUFBYTtBQUNoSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLHVDQUF1QyxxREFBcUQ7O0FBRTVGOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLHdCQUF3QixhQUFhO0FBQ3JDLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWixVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBLGtDQUFrQztBQUNsQyxNQUFNOztBQUVOO0FBQ0Esa0NBQWtDO0FBQ2xDLE1BQU07O0FBRU47QUFDQSxrQ0FBa0M7QUFDbEMsTUFBTTs7QUFFTjtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDLE1BQU07O0FBRU47QUFDQSxrQ0FBa0M7QUFDbEMsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSx1Q0FBdUMscURBQXFEOztBQUU1RjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLHVDQUF1QyxxREFBcUQ7O0FBRTVGOztBQUVBLG1CQUFtQjs7QUFFbkI7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLG9EQUFvRCxtREFBbUQ7QUFDdkc7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixtQkFBbUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlFQUFpRSxhQUFhO0FBQzlFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6IjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhbmd1bGFyLWZvcm1seSB2ZXJzaW9uIDYuOC4yIGJ1aWx0IHdpdGgg4pmlIGJ5IEFzdHJpc20gPGFzdHJpc21zQGdtYWlsLmNvbT4sIEtlbnQgQy4gRG9kZHMgPGtlbnRAZG9kZHNmYW1pbHkudXM+ICjDsyDDrF/DrSk9w7PDsj0ow6xfw60gw7IpXG5cbihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcImFwaS1jaGVja1wiKSwgcmVxdWlyZShcImFuZ3VsYXJcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiYXBpLWNoZWNrXCIsIFwiYW5ndWxhclwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJuZ0Zvcm1seVwiXSA9IGZhY3RvcnkocmVxdWlyZShcImFwaS1jaGVja1wiKSwgcmVxdWlyZShcImFuZ3VsYXJcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm5nRm9ybWx5XCJdID0gZmFjdG9yeShyb290W1wiYXBpQ2hlY2tcIl0sIHJvb3RbXCJhbmd1bGFyXCJdKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMTZfXywgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV8xN19fKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge30sXG4vKioqKioqLyBcdFx0XHRpZDogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4vKioqKioqLyBcdFx0fTtcblxuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cblxuXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdHZhciBfaW50ZXJvcFJlcXVpcmUgPSBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmpbXCJkZWZhdWx0XCJdIDogb2JqOyB9O1xuXG5cdHZhciBpbmRleCA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDEpKTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGluZGV4O1xuXG4vKioqLyB9LFxuLyogMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdHZhciBmb3JtbHlBcGlDaGVjayA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDIpKTtcblxuXHR2YXIgZm9ybWx5RXJyb3JBbmRXYXJuaW5nc1VybFByZWZpeCA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDMpKTtcblxuXHR2YXIgZm9ybWx5VXNhYmlsaXR5ID0gX2ludGVyb3BSZXF1aXJlKF9fd2VicGFja19yZXF1aXJlX18oNCkpO1xuXG5cdHZhciBmb3JtbHlDb25maWcgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXyg1KSk7XG5cblx0dmFyIGZvcm1seVZhbGlkYXRpb25NZXNzYWdlcyA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDYpKTtcblxuXHR2YXIgZm9ybWx5VXRpbCA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDcpKTtcblxuXHR2YXIgZm9ybWx5V2FybiA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDgpKTtcblxuXHR2YXIgZm9ybWx5Q3VzdG9tVmFsaWRhdGlvbiA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDkpKTtcblxuXHR2YXIgZm9ybWx5RmllbGQgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxMCkpO1xuXG5cdHZhciBmb3JtbHlGb2N1cyA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDExKSk7XG5cblx0dmFyIGZvcm1seUZvcm0gPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxMikpO1xuXG5cdHZhciBmb3JtbHlOZ01vZGVsQXR0cnNNYW5pcHVsYXRvciA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKSk7XG5cblx0dmFyIGZvcm1seUN1c3RvbVRhZ3MgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNCkpO1xuXG5cdHZhciBuZ01vZHVsZU5hbWUgPSBcImZvcm1seVwiO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gbmdNb2R1bGVOYW1lO1xuXG5cdHZhciBuZ01vZHVsZSA9IGFuZ3VsYXIubW9kdWxlKG5nTW9kdWxlTmFtZSwgW10pO1xuXG5cdG5nTW9kdWxlLmNvbnN0YW50KFwiZm9ybWx5QXBpQ2hlY2tcIiwgZm9ybWx5QXBpQ2hlY2spO1xuXHRuZ01vZHVsZS5jb25zdGFudChcImZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXhcIiwgZm9ybWx5RXJyb3JBbmRXYXJuaW5nc1VybFByZWZpeCk7XG5cdG5nTW9kdWxlLmNvbnN0YW50KFwiZm9ybWx5VmVyc2lvblwiLCAoXCI2LjguMlwiKSk7IC8vIDwtLSB3ZWJwYWNrIHZhcmlhYmxlXG5cblx0bmdNb2R1bGUucHJvdmlkZXIoXCJmb3JtbHlVc2FiaWxpdHlcIiwgZm9ybWx5VXNhYmlsaXR5KTtcblx0bmdNb2R1bGUucHJvdmlkZXIoXCJmb3JtbHlDb25maWdcIiwgZm9ybWx5Q29uZmlnKTtcblxuXHRuZ01vZHVsZS5mYWN0b3J5KFwiZm9ybWx5VmFsaWRhdGlvbk1lc3NhZ2VzXCIsIGZvcm1seVZhbGlkYXRpb25NZXNzYWdlcyk7XG5cdG5nTW9kdWxlLmZhY3RvcnkoXCJmb3JtbHlVdGlsXCIsIGZvcm1seVV0aWwpO1xuXHRuZ01vZHVsZS5mYWN0b3J5KFwiZm9ybWx5V2FyblwiLCBmb3JtbHlXYXJuKTtcblxuXHRuZ01vZHVsZS5kaXJlY3RpdmUoXCJmb3JtbHlDdXN0b21WYWxpZGF0aW9uXCIsIGZvcm1seUN1c3RvbVZhbGlkYXRpb24pO1xuXHRuZ01vZHVsZS5kaXJlY3RpdmUoXCJmb3JtbHlGaWVsZFwiLCBmb3JtbHlGaWVsZCk7XG5cdG5nTW9kdWxlLmRpcmVjdGl2ZShcImZvcm1seUZvY3VzXCIsIGZvcm1seUZvY3VzKTtcblx0bmdNb2R1bGUuZGlyZWN0aXZlKFwiZm9ybWx5Rm9ybVwiLCBmb3JtbHlGb3JtKTtcblxuXHRuZ01vZHVsZS5ydW4oZm9ybWx5TmdNb2RlbEF0dHJzTWFuaXB1bGF0b3IpO1xuXHRuZ01vZHVsZS5ydW4oZm9ybWx5Q3VzdG9tVGFncyk7XG5cbi8qKiovIH0sXG4vKiAyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX2ludGVyb3BSZXF1aXJlID0gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqW1wiZGVmYXVsdFwiXSA6IG9iajsgfTtcblxuXHR2YXIgYXBpQ2hlY2tGYWN0b3J5ID0gX2ludGVyb3BSZXF1aXJlKF9fd2VicGFja19yZXF1aXJlX18oMTYpKTtcblxuXHR2YXIgYXBpQ2hlY2sgPSBhcGlDaGVja0ZhY3Rvcnkoe1xuXHQgIG91dHB1dDoge1xuXHQgICAgcHJlZml4OiBcImFuZ3VsYXItZm9ybWx5OlwiLFxuXHQgICAgZG9jc0Jhc2VVcmw6IF9fd2VicGFja19yZXF1aXJlX18oMylcblx0ICB9XG5cdH0pO1xuXG5cdGZ1bmN0aW9uIHNoYXBlUmVxdWlyZWRJZk5vdChvdGhlclByb3BzLCBwcm9wQ2hlY2tlcikge1xuXHQgIGlmICghYW5ndWxhci5pc0FycmF5KG90aGVyUHJvcHMpKSB7XG5cdCAgICBvdGhlclByb3BzID0gW290aGVyUHJvcHNdO1xuXHQgIH1cblx0ICB2YXIgdHlwZSA9IFwic3BlY2lmaWVkIGlmIHRoZXNlIGFyZSBub3Qgc3BlY2lmaWVkOiBgXCIgKyBvdGhlclByb3BzLmpvaW4oXCIsIFwiKSArIFwiYCAob3RoZXJ3aXNlIGl0J3Mgb3B0aW9uYWwpXCI7XG5cdCAgZnVuY3Rpb24gc2hhcGVSZXF1aXJlZElmTm90RGVmaW5pdGlvbihwcm9wLCBwcm9wTmFtZSwgbG9jYXRpb24sIG9iaikge1xuXHQgICAgdmFyIHByb3BFeGlzdHMgPSBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KHByb3BOYW1lKTtcblx0ICAgIHZhciBvdGhlclByb3BzRXhpc3QgPSBvdGhlclByb3BzLnNvbWUoZnVuY3Rpb24gKG90aGVyUHJvcCkge1xuXHQgICAgICByZXR1cm4gb2JqICYmIG9iai5oYXNPd25Qcm9wZXJ0eShvdGhlclByb3ApO1xuXHQgICAgfSk7XG5cdCAgICBpZiAoIW90aGVyUHJvcHNFeGlzdCAmJiAhcHJvcEV4aXN0cykge1xuXHQgICAgICByZXR1cm4gYXBpQ2hlY2sudXRpbHMuZ2V0RXJyb3IocHJvcE5hbWUsIGxvY2F0aW9uLCB0eXBlKTtcblx0ICAgIH0gZWxzZSBpZiAocHJvcEV4aXN0cykge1xuXHQgICAgICByZXR1cm4gcHJvcENoZWNrZXIocHJvcCwgcHJvcE5hbWUsIGxvY2F0aW9uLCBvYmopO1xuXHQgICAgfVxuXHQgIH1cblx0ICBzaGFwZVJlcXVpcmVkSWZOb3REZWZpbml0aW9uLnR5cGUgPSB0eXBlO1xuXHQgIHJldHVybiBhcGlDaGVjay51dGlscy5jaGVja2VySGVscGVycy5zZXR1cENoZWNrZXIoc2hhcGVSZXF1aXJlZElmTm90RGVmaW5pdGlvbik7XG5cdH1cblxuXHR2YXIgZm9ybWx5RXhwcmVzc2lvbiA9IGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suc3RyaW5nLCBhcGlDaGVjay5mdW5jXSk7XG5cdHZhciBzcGVjaWZ5V3JhcHBlclR5cGUgPSBhcGlDaGVjay5vbmVPZlR5cGUoW2FwaUNoZWNrLm9uZU9mKFtudWxsXSksIGFwaUNoZWNrLnR5cGVPckFycmF5T2YoYXBpQ2hlY2suc3RyaW5nKV0pO1xuXG5cdHZhciBhcGlDaGVja1Byb3BlcnR5ID0gYXBpQ2hlY2sub2JqZWN0T2YoYXBpQ2hlY2suZnVuYyk7XG5cblx0dmFyIGFwaUNoZWNrSW5zdGFuY2VQcm9wZXJ0eSA9IGFwaUNoZWNrLnNoYXBlLm9ubHlJZihcImFwaUNoZWNrXCIsIGFwaUNoZWNrLmZ1bmMud2l0aFByb3BlcnRpZXMoe1xuXHQgIHdhcm46IGFwaUNoZWNrLmZ1bmMsXG5cdCAgXCJ0aHJvd1wiOiBhcGlDaGVjay5mdW5jLFxuXHQgIHNoYXBlOiBhcGlDaGVjay5mdW5jXG5cdH0pKTtcblxuXHR2YXIgYXBpQ2hlY2tGdW5jdGlvblByb3BlcnR5ID0gYXBpQ2hlY2suc2hhcGUub25seUlmKFwiYXBpQ2hlY2tcIiwgYXBpQ2hlY2sub25lT2YoW1widGhyb3dcIiwgXCJ3YXJuXCJdKSk7XG5cblx0dmFyIGZvcm1seVdyYXBwZXJUeXBlID0gYXBpQ2hlY2suc2hhcGUoe1xuXHQgIG5hbWU6IHNoYXBlUmVxdWlyZWRJZk5vdChcInR5cGVzXCIsIGFwaUNoZWNrLnN0cmluZykub3B0aW9uYWwsXG5cdCAgdGVtcGxhdGU6IGFwaUNoZWNrLnNoYXBlLmlmTm90KFwidGVtcGxhdGVVcmxcIiwgYXBpQ2hlY2suc3RyaW5nKS5vcHRpb25hbCxcblx0ICB0ZW1wbGF0ZVVybDogYXBpQ2hlY2suc2hhcGUuaWZOb3QoXCJ0ZW1wbGF0ZVwiLCBhcGlDaGVjay5zdHJpbmcpLm9wdGlvbmFsLFxuXHQgIHR5cGVzOiBhcGlDaGVjay50eXBlT3JBcnJheU9mKGFwaUNoZWNrLnN0cmluZykub3B0aW9uYWwsXG5cdCAgb3ZlcndyaXRlT2s6IGFwaUNoZWNrLmJvb2wub3B0aW9uYWwsXG5cdCAgdmFsaWRhdGVPcHRpb25zOiBhcGlDaGVjay5mdW5jLm9wdGlvbmFsLFxuXHQgIGFwaUNoZWNrOiBhcGlDaGVja1Byb3BlcnR5Lm9wdGlvbmFsLFxuXHQgIGFwaUNoZWNrSW5zdGFuY2U6IGFwaUNoZWNrSW5zdGFuY2VQcm9wZXJ0eS5vcHRpb25hbCxcblx0ICBhcGlDaGVja0Z1bmN0aW9uOiBhcGlDaGVja0Z1bmN0aW9uUHJvcGVydHkub3B0aW9uYWwsXG5cdCAgYXBpQ2hlY2tPcHRpb25zOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWxcblx0fSkuc3RyaWN0O1xuXG5cdHZhciBleHByZXNzaW9uUHJvcGVydGllcyA9IGFwaUNoZWNrLm9iamVjdE9mKGFwaUNoZWNrLm9uZU9mVHlwZShbZm9ybWx5RXhwcmVzc2lvbiwgYXBpQ2hlY2suc2hhcGUoe1xuXHQgIGV4cHJlc3Npb246IGZvcm1seUV4cHJlc3Npb24sXG5cdCAgbWVzc2FnZTogZm9ybWx5RXhwcmVzc2lvbi5vcHRpb25hbFxuXHR9KS5zdHJpY3RdKSk7XG5cblx0dmFyIG1vZGVsQ2hlY2tlciA9IGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2sub25lT2YoW1wiZm9ybVN0YXRlXCJdKSwgYXBpQ2hlY2sub2JqZWN0XSk7XG5cblx0dmFyIGZpZWxkT3B0aW9uc0FwaVNoYXBlID0ge1xuXHQgICQkaGFzaEtleTogYXBpQ2hlY2suYW55Lm9wdGlvbmFsLFxuXHQgIHR5cGU6IGFwaUNoZWNrLnNoYXBlLmlmTm90KFtcInRlbXBsYXRlXCIsIFwidGVtcGxhdGVVcmxcIl0sIGFwaUNoZWNrLnN0cmluZykub3B0aW9uYWwsXG5cdCAgdGVtcGxhdGU6IGFwaUNoZWNrLnNoYXBlLmlmTm90KFtcInR5cGVcIiwgXCJ0ZW1wbGF0ZVVybFwiXSwgYXBpQ2hlY2sub25lT2ZUeXBlKFthcGlDaGVjay5zdHJpbmcsIGFwaUNoZWNrLmZ1bmNdKSkub3B0aW9uYWwsXG5cdCAgdGVtcGxhdGVVcmw6IGFwaUNoZWNrLnNoYXBlLmlmTm90KFtcInR5cGVcIiwgXCJ0ZW1wbGF0ZVwiXSwgYXBpQ2hlY2sub25lT2ZUeXBlKFthcGlDaGVjay5zdHJpbmcsIGFwaUNoZWNrLmZ1bmNdKSkub3B0aW9uYWwsXG5cdCAga2V5OiBhcGlDaGVjay5vbmVPZlR5cGUoW2FwaUNoZWNrLnN0cmluZywgYXBpQ2hlY2subnVtYmVyXSkub3B0aW9uYWwsXG5cdCAgbW9kZWw6IG1vZGVsQ2hlY2tlci5vcHRpb25hbCxcblx0ICBjbGFzc05hbWU6IGFwaUNoZWNrLnN0cmluZy5vcHRpb25hbCxcblx0ICBpZDogYXBpQ2hlY2suc3RyaW5nLm9wdGlvbmFsLFxuXHQgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiBleHByZXNzaW9uUHJvcGVydGllcy5vcHRpb25hbCxcblx0ICBkYXRhOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgdGVtcGxhdGVPcHRpb25zOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgd3JhcHBlcjogc3BlY2lmeVdyYXBwZXJUeXBlLm9wdGlvbmFsLFxuXHQgIG1vZGVsT3B0aW9uczogYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgdXBkYXRlT246IGFwaUNoZWNrLnN0cmluZy5vcHRpb25hbCxcblx0ICAgIGRlYm91bmNlOiBhcGlDaGVjay5vbmVPZlR5cGUoW2FwaUNoZWNrLm9iamVjdE9mKGFwaUNoZWNrLm51bWJlciksIGFwaUNoZWNrLm51bWJlcl0pLm9wdGlvbmFsLFxuXHQgICAgYWxsb3dJbnZhbGlkOiBhcGlDaGVjay5ib29sLm9wdGlvbmFsLFxuXHQgICAgZ2V0dGVyU2V0dGVyOiBhcGlDaGVjay5ib29sLm9wdGlvbmFsLFxuXHQgICAgdGltZXpvbmU6IGFwaUNoZWNrLnN0cmluZy5vcHRpb25hbFxuXHQgIH0pLm9wdGlvbmFsLFxuXHQgIHdhdGNoZXI6IGFwaUNoZWNrLnR5cGVPckFycmF5T2YoYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgZXhwcmVzc2lvbjogZm9ybWx5RXhwcmVzc2lvbi5vcHRpb25hbCxcblx0ICAgIGxpc3RlbmVyOiBmb3JtbHlFeHByZXNzaW9uXG5cdCAgfSkpLm9wdGlvbmFsLFxuXHQgIHZhbGlkYXRvcnM6IGFwaUNoZWNrLm9iamVjdE9mKGFwaUNoZWNrLm9uZU9mVHlwZShbZm9ybWx5RXhwcmVzc2lvbiwgYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgZXhwcmVzc2lvbjogZm9ybWx5RXhwcmVzc2lvbixcblx0ICAgIG1lc3NhZ2U6IGZvcm1seUV4cHJlc3Npb24ub3B0aW9uYWxcblx0ICB9KS5zdHJpY3RdKSkub3B0aW9uYWwsXG5cdCAgbm9Gb3JtQ29udHJvbDogYXBpQ2hlY2suYm9vbC5vcHRpb25hbCxcblx0ICBoaWRlOiBhcGlDaGVjay5ib29sLm9wdGlvbmFsLFxuXHQgIGhpZGVFeHByZXNzaW9uOiBmb3JtbHlFeHByZXNzaW9uLm9wdGlvbmFsLFxuXHQgIG5nTW9kZWxBdHRyczogYXBpQ2hlY2sub2JqZWN0T2YoYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgZXhwcmVzc2lvbjogYXBpQ2hlY2suc2hhcGUuaWZOb3QoW1widmFsdWVcIiwgXCJhdHRyaWJ1dGVcIiwgXCJib3VuZFwiXSwgYXBpQ2hlY2suYW55KS5vcHRpb25hbCxcblx0ICAgIHZhbHVlOiBhcGlDaGVjay5zaGFwZS5pZk5vdChcImV4cHJlc3Npb25cIiwgYXBpQ2hlY2suYW55KS5vcHRpb25hbCxcblx0ICAgIGF0dHJpYnV0ZTogYXBpQ2hlY2suc2hhcGUuaWZOb3QoXCJleHByZXNzaW9uXCIsIGFwaUNoZWNrLmFueSkub3B0aW9uYWwsXG5cdCAgICBib3VuZDogYXBpQ2hlY2suc2hhcGUuaWZOb3QoXCJleHByZXNzaW9uXCIsIGFwaUNoZWNrLmFueSkub3B0aW9uYWxcblx0ICB9KS5zdHJpY3QpLm9wdGlvbmFsLFxuXHQgIGVsZW1lbnRBdHRyaWJ1dGVzOiBhcGlDaGVjay5vYmplY3RPZihhcGlDaGVjay5zdHJpbmcpLm9wdGlvbmFsLFxuXHQgIG9wdGlvbnNUeXBlczogYXBpQ2hlY2sudHlwZU9yQXJyYXlPZihhcGlDaGVjay5zdHJpbmcpLm9wdGlvbmFsLFxuXHQgIGxpbms6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgY29udHJvbGxlcjogYXBpQ2hlY2sub25lT2ZUeXBlKFthcGlDaGVjay5zdHJpbmcsIGFwaUNoZWNrLmZ1bmMsIGFwaUNoZWNrLmFycmF5XSkub3B0aW9uYWwsXG5cdCAgdmFsaWRhdGlvbjogYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgc2hvdzogYXBpQ2hlY2sub25lT2ZUeXBlKFthcGlDaGVjay5ib29sLCBhcGlDaGVjay5vbmVPZihbbnVsbF0pXSkub3B0aW9uYWwsXG5cdCAgICBtZXNzYWdlczogYXBpQ2hlY2sub2JqZWN0T2YoZm9ybWx5RXhwcmVzc2lvbikub3B0aW9uYWwsXG5cdCAgICBlcnJvckV4aXN0c0FuZFNob3VsZEJlVmlzaWJsZTogYXBpQ2hlY2suYm9vbC5vcHRpb25hbFxuXHQgIH0pLm9wdGlvbmFsLFxuXHQgIGZvcm1Db250cm9sOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgdmFsdWU6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgcnVuRXhwcmVzc2lvbnM6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgcmVzZXRNb2RlbDogYXBpQ2hlY2suZnVuYy5vcHRpb25hbCxcblx0ICB1cGRhdGVJbml0aWFsVmFsdWU6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgaW5pdGlhbFZhbHVlOiBhcGlDaGVjay5hbnkub3B0aW9uYWwsXG5cdCAgZGVmYXVsdFZhbHVlOiBhcGlDaGVjay5hbnkub3B0aW9uYWxcblx0fTtcblxuXHR2YXIgZm9ybWx5RmllbGRPcHRpb25zID0gYXBpQ2hlY2suc2hhcGUoZmllbGRPcHRpb25zQXBpU2hhcGUpLnN0cmljdDtcblxuXHR2YXIgZm9ybU9wdGlvbnNBcGkgPSBhcGlDaGVjay5zaGFwZSh7XG5cdCAgZm9ybVN0YXRlOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgcmVzZXRNb2RlbDogYXBpQ2hlY2suZnVuYy5vcHRpb25hbCxcblx0ICB1cGRhdGVJbml0aWFsVmFsdWU6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgcmVtb3ZlQ2hyb21lQXV0b0NvbXBsZXRlOiBhcGlDaGVjay5ib29sLm9wdGlvbmFsXG5cdH0pLnN0cmljdDtcblxuXHR2YXIgZmllbGRHcm91cCA9IGFwaUNoZWNrLnNoYXBlKHtcblx0ICAkJGhhc2hLZXk6IGFwaUNoZWNrLmFueS5vcHRpb25hbCxcblx0ICAvLyBkYW5nZXIuIE5lc3RlZCBmaWVsZCBncm91cHMgd29udCBnZXQgYXBpLWNoZWNrZWQuLi5cblx0ICBmaWVsZEdyb3VwOiBhcGlDaGVjay5hcnJheU9mKGFwaUNoZWNrLm9uZU9mVHlwZShbZm9ybWx5RmllbGRPcHRpb25zLCBhcGlDaGVjay5vYmplY3RdKSksXG5cdCAgY2xhc3NOYW1lOiBhcGlDaGVjay5zdHJpbmcub3B0aW9uYWwsXG5cdCAgb3B0aW9uczogZm9ybU9wdGlvbnNBcGkub3B0aW9uYWwsXG5cdCAgaGlkZTogYXBpQ2hlY2suYm9vbC5vcHRpb25hbCxcblx0ICBoaWRlRXhwcmVzc2lvbjogZm9ybWx5RXhwcmVzc2lvbi5vcHRpb25hbCxcblx0ICBtb2RlbDogbW9kZWxDaGVja2VyLm9wdGlvbmFsLFxuXHQgIGZvcm06IGFwaUNoZWNrLm9iamVjdC5vcHRpb25hbCxcblx0ICBlbGVtZW50QXR0cmlidXRlczogYXBpQ2hlY2sub2JqZWN0T2YoYXBpQ2hlY2suc3RyaW5nKS5vcHRpb25hbFxuXHR9KS5zdHJpY3Q7XG5cblx0dmFyIHR5cGVPcHRpb25zRGVmYXVsdE9wdGlvbnMgPSBhbmd1bGFyLmNvcHkoZmllbGRPcHRpb25zQXBpU2hhcGUpO1xuXHR0eXBlT3B0aW9uc0RlZmF1bHRPcHRpb25zLmtleSA9IGFwaUNoZWNrLnN0cmluZy5vcHRpb25hbDtcblxuXHR2YXIgZm9ybWx5VHlwZU9wdGlvbnMgPSBhcGlDaGVjay5zaGFwZSh7XG5cdCAgbmFtZTogYXBpQ2hlY2suc3RyaW5nLFxuXHQgIHRlbXBsYXRlOiBhcGlDaGVjay5zaGFwZS5pZk5vdChcInRlbXBsYXRlVXJsXCIsIGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suc3RyaW5nLCBhcGlDaGVjay5mdW5jXSkpLm9wdGlvbmFsLFxuXHQgIHRlbXBsYXRlVXJsOiBhcGlDaGVjay5zaGFwZS5pZk5vdChcInRlbXBsYXRlXCIsIGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suc3RyaW5nLCBhcGlDaGVjay5mdW5jXSkpLm9wdGlvbmFsLFxuXHQgIGNvbnRyb2xsZXI6IGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suZnVuYywgYXBpQ2hlY2suc3RyaW5nLCBhcGlDaGVjay5hcnJheV0pLm9wdGlvbmFsLFxuXHQgIGxpbms6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgZGVmYXVsdE9wdGlvbnM6IGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suZnVuYywgYXBpQ2hlY2suc2hhcGUodHlwZU9wdGlvbnNEZWZhdWx0T3B0aW9ucyldKS5vcHRpb25hbCxcblx0ICBcImV4dGVuZHNcIjogYXBpQ2hlY2suc3RyaW5nLm9wdGlvbmFsLFxuXHQgIHdyYXBwZXI6IHNwZWNpZnlXcmFwcGVyVHlwZS5vcHRpb25hbCxcblx0ICBkYXRhOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgdmFsaWRhdGVPcHRpb25zOiBhcGlDaGVjay5mdW5jLm9wdGlvbmFsLFxuXHQgIGFwaUNoZWNrOiBhcGlDaGVja1Byb3BlcnR5Lm9wdGlvbmFsLFxuXHQgIGFwaUNoZWNrSW5zdGFuY2U6IGFwaUNoZWNrSW5zdGFuY2VQcm9wZXJ0eS5vcHRpb25hbCxcblx0ICBhcGlDaGVja0Z1bmN0aW9uOiBhcGlDaGVja0Z1bmN0aW9uUHJvcGVydHkub3B0aW9uYWwsXG5cdCAgYXBpQ2hlY2tPcHRpb25zOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgb3ZlcndyaXRlT2s6IGFwaUNoZWNrLmJvb2wub3B0aW9uYWxcblx0fSkuc3RyaWN0O1xuXHRhbmd1bGFyLmV4dGVuZChhcGlDaGVjaywge1xuXHQgIGZvcm1seVR5cGVPcHRpb25zOiBmb3JtbHlUeXBlT3B0aW9ucywgZm9ybWx5RmllbGRPcHRpb25zOiBmb3JtbHlGaWVsZE9wdGlvbnMsIGZvcm1seUV4cHJlc3Npb246IGZvcm1seUV4cHJlc3Npb24sIGZvcm1seVdyYXBwZXJUeXBlOiBmb3JtbHlXcmFwcGVyVHlwZSwgZmllbGRHcm91cDogZmllbGRHcm91cCwgZm9ybU9wdGlvbnNBcGk6IGZvcm1PcHRpb25zQXBpXG5cdH0pO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gYXBpQ2hlY2s7XG5cbi8qKiovIH0sXG4vKiAzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiaHR0cHM6Ly9naXRodWIuY29tL2Zvcm1seS1qcy9hbmd1bGFyLWZvcm1seS9ibG9iL1wiICsgKFwiNi44LjJcIikgKyBcIi9vdGhlci9FUlJPUlNfQU5EX1dBUk5JTkdTLm1kI1wiO1xuXG4vKioqLyB9LFxuLyogNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5VXNhYmlsaXR5O1xuXG5cdC8vIEBuZ0luamVjdFxuXHRmdW5jdGlvbiBmb3JtbHlVc2FiaWxpdHkoZm9ybWx5QXBpQ2hlY2ssIGZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXgpIHtcblx0ICB2YXIgX3RoaXMgPSB0aGlzO1xuXG5cdCAgYW5ndWxhci5leHRlbmQodGhpcywge1xuXHQgICAgZ2V0Rm9ybWx5RXJyb3I6IGdldEZvcm1seUVycm9yLFxuXHQgICAgZ2V0RmllbGRFcnJvcjogZ2V0RmllbGRFcnJvcixcblx0ICAgIGNoZWNrV3JhcHBlcjogY2hlY2tXcmFwcGVyLFxuXHQgICAgY2hlY2tXcmFwcGVyVGVtcGxhdGU6IGNoZWNrV3JhcHBlclRlbXBsYXRlLFxuXHQgICAgJGdldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICByZXR1cm4gX3RoaXM7XG5cdCAgICB9XG5cdCAgfSk7XG5cblx0ICBmdW5jdGlvbiBnZXRGaWVsZEVycm9yKGVycm9ySW5mb1NsdWcsIG1lc3NhZ2UsIGZpZWxkKSB7XG5cdCAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDMpIHtcblx0ICAgICAgZmllbGQgPSBtZXNzYWdlO1xuXHQgICAgICBtZXNzYWdlID0gZXJyb3JJbmZvU2x1Zztcblx0ICAgICAgZXJyb3JJbmZvU2x1ZyA9IG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbmV3IEVycm9yKGdldEVycm9yTWVzc2FnZShlcnJvckluZm9TbHVnLCBtZXNzYWdlKSArIChcIiBGaWVsZCBkZWZpbml0aW9uOiBcIiArIGFuZ3VsYXIudG9Kc29uKGZpZWxkKSkpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldEZvcm1seUVycm9yKGVycm9ySW5mb1NsdWcsIG1lc3NhZ2UpIHtcblx0ICAgIGlmICghbWVzc2FnZSkge1xuXHQgICAgICBtZXNzYWdlID0gZXJyb3JJbmZvU2x1Zztcblx0ICAgICAgZXJyb3JJbmZvU2x1ZyA9IG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbmV3IEVycm9yKGdldEVycm9yTWVzc2FnZShlcnJvckluZm9TbHVnLCBtZXNzYWdlKSk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlKGVycm9ySW5mb1NsdWcsIG1lc3NhZ2UpIHtcblx0ICAgIHZhciB1cmwgPSBcIlwiO1xuXHQgICAgaWYgKGVycm9ySW5mb1NsdWcgIT09IG51bGwpIHtcblx0ICAgICAgdXJsID0gXCJcIiArIGZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXggKyBcIlwiICsgZXJyb3JJbmZvU2x1Zztcblx0ICAgIH1cblx0ICAgIHJldHVybiBcIkZvcm1seSBFcnJvcjogXCIgKyBtZXNzYWdlICsgXCIuIFwiICsgdXJsO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGNoZWNrV3JhcHBlcih3cmFwcGVyKSB7XG5cdCAgICBmb3JtbHlBcGlDaGVja1tcInRocm93XCJdKGZvcm1seUFwaUNoZWNrLmZvcm1seVdyYXBwZXJUeXBlLCB3cmFwcGVyLCB7XG5cdCAgICAgIHByZWZpeDogXCJmb3JtbHlDb25maWcuc2V0V3JhcHBlclwiLFxuXHQgICAgICB1cmxTdWZmaXg6IFwic2V0d3JhcHBlci12YWxpZGF0aW9uLWZhaWxlZFwiXG5cdCAgICB9KTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBjaGVja1dyYXBwZXJUZW1wbGF0ZSh0ZW1wbGF0ZSwgYWRkaXRpb25hbEluZm8pIHtcblx0ICAgIHZhciBmb3JtbHlUcmFuc2NsdWRlID0gXCI8Zm9ybWx5LXRyYW5zY2x1ZGU+PC9mb3JtbHktdHJhbnNjbHVkZT5cIjtcblx0ICAgIGlmICh0ZW1wbGF0ZS5pbmRleE9mKGZvcm1seVRyYW5zY2x1ZGUpID09PSAtMSkge1xuXHQgICAgICB0aHJvdyBnZXRGb3JtbHlFcnJvcihcIlRlbXBsYXRlIHdyYXBwZXIgdGVtcGxhdGVzIG11c3QgdXNlIFxcXCJcIiArIGZvcm1seVRyYW5zY2x1ZGUgKyBcIlxcXCIgc29tZXdoZXJlIGluIHRoZW0uIFwiICsgKFwiVGhpcyBvbmUgZG9lcyBub3QgaGF2ZSBcXFwiPGZvcm1seS10cmFuc2NsdWRlPjwvZm9ybWx5LXRyYW5zY2x1ZGU+XFxcIiBpbiBpdDogXCIgKyB0ZW1wbGF0ZSkgKyBcIlxcblwiICsgKFwiQWRkaXRpb25hbCBpbmZvcm1hdGlvbjogXCIgKyBKU09OLnN0cmluZ2lmeShhZGRpdGlvbmFsSW5mbykpKTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0Zm9ybWx5VXNhYmlsaXR5LiRpbmplY3QgPSBbXCJmb3JtbHlBcGlDaGVja1wiLCBcImZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXhcIl07XG5cbi8qKiovIH0sXG4vKiA1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX2ludGVyb3BSZXF1aXJlID0gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqW1wiZGVmYXVsdFwiXSA6IG9iajsgfTtcblxuXHR2YXIgYW5ndWxhciA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KSk7XG5cblx0dmFyIHV0aWxzID0gX2ludGVyb3BSZXF1aXJlKF9fd2VicGFja19yZXF1aXJlX18oMTgpKTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZvcm1seUNvbmZpZztcblxuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5Q29uZmlnKGZvcm1seVVzYWJpbGl0eVByb3ZpZGVyLCBmb3JtbHlBcGlDaGVjaykge1xuXHQgIHZhciBfdGhpczIgPSB0aGlzO1xuXG5cdCAgdmFyIHR5cGVNYXAgPSB7fTtcblx0ICB2YXIgdGVtcGxhdGVXcmFwcGVyc01hcCA9IHt9O1xuXHQgIHZhciBkZWZhdWx0V3JhcHBlck5hbWUgPSBcImRlZmF1bHRcIjtcblx0ICB2YXIgX3RoaXMgPSB0aGlzO1xuXHQgIHZhciBnZXRFcnJvciA9IGZvcm1seVVzYWJpbGl0eVByb3ZpZGVyLmdldEZvcm1seUVycm9yO1xuXG5cdCAgYW5ndWxhci5leHRlbmQodGhpcywge1xuXHQgICAgc2V0VHlwZTogc2V0VHlwZSxcblx0ICAgIGdldFR5cGU6IGdldFR5cGUsXG5cdCAgICBzZXRXcmFwcGVyOiBzZXRXcmFwcGVyLFxuXHQgICAgZ2V0V3JhcHBlcjogZ2V0V3JhcHBlcixcblx0ICAgIGdldFdyYXBwZXJCeVR5cGU6IGdldFdyYXBwZXJCeVR5cGUsXG5cdCAgICByZW1vdmVXcmFwcGVyQnlOYW1lOiByZW1vdmVXcmFwcGVyQnlOYW1lLFxuXHQgICAgcmVtb3ZlV3JhcHBlcnNGb3JUeXBlOiByZW1vdmVXcmFwcGVyc0ZvclR5cGUsXG5cdCAgICBkaXNhYmxlV2FybmluZ3M6IGZhbHNlLFxuXHQgICAgZXh0cmFzOiB7XG5cdCAgICAgIGRpc2FibGVOZ01vZGVsQXR0cnNNYW5pcHVsYXRvcjogZmFsc2UsXG5cdCAgICAgIG5nTW9kZWxBdHRyc01hbmlwdWxhdG9yUHJlZmVyVW5ib3VuZDogZmFsc2UsXG5cdCAgICAgIHJlbW92ZUNocm9tZUF1dG9Db21wbGV0ZTogZmFsc2UsXG5cdCAgICAgIGRlZmF1bHRIaWRlRGlyZWN0aXZlOiBcIm5nLWlmXCIsXG5cdCAgICAgIGdldEZpZWxkSWQ6IG51bGxcblx0ICAgIH0sXG5cdCAgICB0ZW1wbGF0ZU1hbmlwdWxhdG9yczoge1xuXHQgICAgICBwcmVXcmFwcGVyOiBbXSxcblx0ICAgICAgcG9zdFdyYXBwZXI6IFtdXG5cdCAgICB9LFxuXHQgICAgJGdldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICByZXR1cm4gX3RoaXMyO1xuXHQgICAgfVxuXHQgIH0pO1xuXG5cdCAgZnVuY3Rpb24gc2V0VHlwZShvcHRpb25zKSB7XG5cdCAgICBpZiAoYW5ndWxhci5pc0FycmF5KG9wdGlvbnMpKSB7XG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaChvcHRpb25zLCBzZXRUeXBlKTtcblx0ICAgIH0gZWxzZSBpZiAoYW5ndWxhci5pc09iamVjdChvcHRpb25zKSkge1xuXHQgICAgICBjaGVja1R5cGUob3B0aW9ucyk7XG5cdCAgICAgIGlmIChvcHRpb25zW1wiZXh0ZW5kc1wiXSkge1xuXHQgICAgICAgIGV4dGVuZFR5cGVPcHRpb25zKG9wdGlvbnMpO1xuXHQgICAgICB9XG5cdCAgICAgIHR5cGVNYXBbb3B0aW9ucy5uYW1lXSA9IG9wdGlvbnM7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0aHJvdyBnZXRFcnJvcihcIllvdSBtdXN0IHByb3ZpZGUgYW4gb2JqZWN0IG9yIGFycmF5IGZvciBzZXRUeXBlLiBZb3UgcHJvdmlkZWQ6IFwiICsgSlNPTi5zdHJpbmdpZnkoYXJndW1lbnRzKSk7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gY2hlY2tUeXBlKG9wdGlvbnMpIHtcblx0ICAgIGZvcm1seUFwaUNoZWNrW1widGhyb3dcIl0oZm9ybWx5QXBpQ2hlY2suZm9ybWx5VHlwZU9wdGlvbnMsIG9wdGlvbnMsIHtcblx0ICAgICAgcHJlZml4OiBcImZvcm1seUNvbmZpZy5zZXRUeXBlXCIsXG5cdCAgICAgIHVybDogXCJzZXR0eXBlLXZhbGlkYXRpb24tZmFpbGVkXCJcblx0ICAgIH0pO1xuXHQgICAgaWYgKCFvcHRpb25zLm92ZXJ3cml0ZU9rKSB7XG5cdCAgICAgIGNoZWNrT3ZlcndyaXRlKG9wdGlvbnMubmFtZSwgdHlwZU1hcCwgb3B0aW9ucywgXCJ0eXBlc1wiKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG9wdGlvbnMub3ZlcndyaXRlT2sgPSB1bmRlZmluZWQ7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZXh0ZW5kVHlwZU9wdGlvbnMob3B0aW9ucykge1xuXHQgICAgdmFyIGV4dGVuZHNUeXBlID0gZ2V0VHlwZShvcHRpb25zW1wiZXh0ZW5kc1wiXSwgdHJ1ZSwgb3B0aW9ucyk7XG5cdCAgICBleHRlbmRUeXBlQ29udHJvbGxlckZ1bmN0aW9uKG9wdGlvbnMsIGV4dGVuZHNUeXBlKTtcblx0ICAgIGV4dGVuZFR5cGVMaW5rRnVuY3Rpb24ob3B0aW9ucywgZXh0ZW5kc1R5cGUpO1xuXHQgICAgZXh0ZW5kVHlwZVZhbGlkYXRlT3B0aW9uc0Z1bmN0aW9uKG9wdGlvbnMsIGV4dGVuZHNUeXBlKTtcblx0ICAgIGV4dGVuZFR5cGVEZWZhdWx0T3B0aW9ucyhvcHRpb25zLCBleHRlbmRzVHlwZSk7XG5cdCAgICB1dGlscy5yZXZlcnNlRGVlcE1lcmdlKG9wdGlvbnMsIGV4dGVuZHNUeXBlKTtcblx0ICAgIGV4dGVuZFRlbXBsYXRlKG9wdGlvbnMsIGV4dGVuZHNUeXBlKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBleHRlbmRUZW1wbGF0ZShvcHRpb25zLCBleHRlbmRzVHlwZSkge1xuXHQgICAgaWYgKG9wdGlvbnMudGVtcGxhdGUgJiYgZXh0ZW5kc1R5cGUudGVtcGxhdGVVcmwpIHtcblx0ICAgICAgZGVsZXRlIG9wdGlvbnMudGVtcGxhdGVVcmw7XG5cdCAgICB9IGVsc2UgaWYgKG9wdGlvbnMudGVtcGxhdGVVcmwgJiYgZXh0ZW5kc1R5cGUudGVtcGxhdGUpIHtcblx0ICAgICAgZGVsZXRlIG9wdGlvbnMudGVtcGxhdGU7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZXh0ZW5kVHlwZUNvbnRyb2xsZXJGdW5jdGlvbihvcHRpb25zLCBleHRlbmRzVHlwZSkge1xuXHQgICAgdmFyIGV4dGVuZHNDdHJsID0gZXh0ZW5kc1R5cGUuY29udHJvbGxlcjtcblx0ICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQoZXh0ZW5kc0N0cmwpKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciBvcHRpb25zQ3RybCA9IG9wdGlvbnMuY29udHJvbGxlcjtcblx0ICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChvcHRpb25zQ3RybCkpIHtcblx0ICAgICAgb3B0aW9ucy5jb250cm9sbGVyID0gZnVuY3Rpb24gKCRzY29wZSwgJGNvbnRyb2xsZXIpIHtcblx0ICAgICAgICAkY29udHJvbGxlcihleHRlbmRzQ3RybCwgeyAkc2NvcGU6ICRzY29wZSB9KTtcblx0ICAgICAgICAkY29udHJvbGxlcihvcHRpb25zQ3RybCwgeyAkc2NvcGU6ICRzY29wZSB9KTtcblx0ICAgICAgfTtcblx0ICAgICAgb3B0aW9ucy5jb250cm9sbGVyLiRpbmplY3QgPSBbXCIkc2NvcGVcIiwgXCIkY29udHJvbGxlclwiXTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG9wdGlvbnMuY29udHJvbGxlciA9IGV4dGVuZHNDdHJsO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGV4dGVuZFR5cGVMaW5rRnVuY3Rpb24ob3B0aW9ucywgZXh0ZW5kc1R5cGUpIHtcblx0ICAgIHZhciBleHRlbmRzRm4gPSBleHRlbmRzVHlwZS5saW5rO1xuXHQgICAgaWYgKCFhbmd1bGFyLmlzRGVmaW5lZChleHRlbmRzRm4pKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciBvcHRpb25zRm4gPSBvcHRpb25zLmxpbms7XG5cdCAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQob3B0aW9uc0ZuKSkge1xuXHQgICAgICBvcHRpb25zLmxpbmsgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgZXh0ZW5kc0ZuLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcblx0ICAgICAgICBvcHRpb25zRm4uYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuXHQgICAgICB9O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgb3B0aW9ucy5saW5rID0gZXh0ZW5kc0ZuO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGV4dGVuZFR5cGVWYWxpZGF0ZU9wdGlvbnNGdW5jdGlvbihvcHRpb25zLCBleHRlbmRzVHlwZSkge1xuXHQgICAgdmFyIGV4dGVuZHNGbiA9IGV4dGVuZHNUeXBlLnZhbGlkYXRlT3B0aW9ucztcblx0ICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQoZXh0ZW5kc0ZuKSkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICB2YXIgb3B0aW9uc0ZuID0gb3B0aW9ucy52YWxpZGF0ZU9wdGlvbnM7XG5cdCAgICB2YXIgb3JpZ2luYWxEZWZhdWx0T3B0aW9ucyA9IG9wdGlvbnMuZGVmYXVsdE9wdGlvbnM7XG5cdCAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQob3B0aW9uc0ZuKSkge1xuXHQgICAgICBvcHRpb25zLnZhbGlkYXRlT3B0aW9ucyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG5cdCAgICAgICAgb3B0aW9uc0ZuKG9wdGlvbnMpO1xuXHQgICAgICAgIHZhciBtZXJnZWRPcHRpb25zID0gYW5ndWxhci5jb3B5KG9wdGlvbnMpO1xuXHQgICAgICAgIHZhciBkZWZhdWx0T3B0aW9ucyA9IG9yaWdpbmFsRGVmYXVsdE9wdGlvbnM7XG5cdCAgICAgICAgaWYgKGRlZmF1bHRPcHRpb25zKSB7XG5cdCAgICAgICAgICBpZiAoYW5ndWxhci5pc0Z1bmN0aW9uKGRlZmF1bHRPcHRpb25zKSkge1xuXHQgICAgICAgICAgICBkZWZhdWx0T3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zKG1lcmdlZE9wdGlvbnMpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgdXRpbHMucmV2ZXJzZURlZXBNZXJnZShtZXJnZWRPcHRpb25zLCBkZWZhdWx0T3B0aW9ucyk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGV4dGVuZHNGbihtZXJnZWRPcHRpb25zKTtcblx0ICAgICAgfTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG9wdGlvbnMudmFsaWRhdGVPcHRpb25zID0gZXh0ZW5kc0ZuO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGV4dGVuZFR5cGVEZWZhdWx0T3B0aW9ucyhvcHRpb25zLCBleHRlbmRzVHlwZSkge1xuXHQgICAgdmFyIGV4dGVuZHNETyA9IGV4dGVuZHNUeXBlLmRlZmF1bHRPcHRpb25zO1xuXHQgICAgaWYgKCFhbmd1bGFyLmlzRGVmaW5lZChleHRlbmRzRE8pKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciBvcHRpb25zRE8gPSBvcHRpb25zLmRlZmF1bHRPcHRpb25zO1xuXHQgICAgdmFyIG9wdGlvbnNET0lzRm4gPSBhbmd1bGFyLmlzRnVuY3Rpb24ob3B0aW9uc0RPKTtcblx0ICAgIHZhciBleHRlbmRzRE9Jc0ZuID0gYW5ndWxhci5pc0Z1bmN0aW9uKGV4dGVuZHNETyk7XG5cdCAgICBpZiAoZXh0ZW5kc0RPSXNGbikge1xuXHQgICAgICBvcHRpb25zLmRlZmF1bHRPcHRpb25zID0gZnVuY3Rpb24gZGVmYXVsdE9wdGlvbnMob3B0aW9ucykge1xuXHQgICAgICAgIHZhciBleHRlbmRzRGVmYXVsdE9wdGlvbnMgPSBleHRlbmRzRE8ob3B0aW9ucyk7XG5cdCAgICAgICAgdmFyIG1lcmdlZERlZmF1bHRPcHRpb25zID0ge307XG5cdCAgICAgICAgdXRpbHMucmV2ZXJzZURlZXBNZXJnZShtZXJnZWREZWZhdWx0T3B0aW9ucywgb3B0aW9ucywgZXh0ZW5kc0RlZmF1bHRPcHRpb25zKTtcblx0ICAgICAgICB2YXIgZXh0ZW5kZXJPcHRpb25zRGVmYXVsdE9wdGlvbnMgPSBvcHRpb25zRE87XG5cdCAgICAgICAgaWYgKG9wdGlvbnNET0lzRm4pIHtcblx0ICAgICAgICAgIGV4dGVuZGVyT3B0aW9uc0RlZmF1bHRPcHRpb25zID0gZXh0ZW5kZXJPcHRpb25zRGVmYXVsdE9wdGlvbnMobWVyZ2VkRGVmYXVsdE9wdGlvbnMpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB1dGlscy5yZXZlcnNlRGVlcE1lcmdlKGV4dGVuZHNEZWZhdWx0T3B0aW9ucywgZXh0ZW5kZXJPcHRpb25zRGVmYXVsdE9wdGlvbnMpO1xuXHQgICAgICAgIHJldHVybiBleHRlbmRzRGVmYXVsdE9wdGlvbnM7XG5cdCAgICAgIH07XG5cdCAgICB9IGVsc2UgaWYgKG9wdGlvbnNET0lzRm4pIHtcblx0ICAgICAgb3B0aW9ucy5kZWZhdWx0T3B0aW9ucyA9IGZ1bmN0aW9uIGRlZmF1bHRPcHRpb25zKG9wdGlvbnMpIHtcblx0ICAgICAgICB2YXIgbmV3RGVmYXVsdE9wdGlvbnMgPSB7fTtcblx0ICAgICAgICB1dGlscy5yZXZlcnNlRGVlcE1lcmdlKG5ld0RlZmF1bHRPcHRpb25zLCBvcHRpb25zLCBleHRlbmRzRE8pO1xuXHQgICAgICAgIHJldHVybiBvcHRpb25zRE8obmV3RGVmYXVsdE9wdGlvbnMpO1xuXHQgICAgICB9O1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldFR5cGUobmFtZSwgdGhyb3dFcnJvciwgZXJyb3JDb250ZXh0KSB7XG5cdCAgICBpZiAoIW5hbWUpIHtcblx0ICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcblx0ICAgIH1cblx0ICAgIHZhciB0eXBlID0gdHlwZU1hcFtuYW1lXTtcblx0ICAgIGlmICghdHlwZSAmJiB0aHJvd0Vycm9yID09PSB0cnVlKSB7XG5cdCAgICAgIHRocm93IGdldEVycm9yKFwiVGhlcmUgaXMgbm8gdHlwZSBieSB0aGUgbmFtZSBvZiBcXFwiXCIgKyBuYW1lICsgXCJcXFwiOiBcIiArIEpTT04uc3RyaW5naWZ5KGVycm9yQ29udGV4dCkpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIHR5cGU7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gc2V0V3JhcHBlcihfeCwgX3gyKSB7XG5cdCAgICB2YXIgX2FnYWluID0gdHJ1ZTtcblxuXHQgICAgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7XG5cdCAgICAgIF9hZ2FpbiA9IGZhbHNlO1xuXHQgICAgICB2YXIgb3B0aW9ucyA9IF94LFxuXHQgICAgICAgICAgbmFtZSA9IF94MjtcblxuXHQgICAgICBpZiAoYW5ndWxhci5pc0FycmF5KG9wdGlvbnMpKSB7XG5cdCAgICAgICAgcmV0dXJuIG9wdGlvbnMubWFwKGZ1bmN0aW9uICh3cmFwcGVyT3B0aW9ucykge1xuXHQgICAgICAgICAgcmV0dXJuIHNldFdyYXBwZXIod3JhcHBlck9wdGlvbnMpO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICB9IGVsc2UgaWYgKGFuZ3VsYXIuaXNPYmplY3Qob3B0aW9ucykpIHtcblx0ICAgICAgICBvcHRpb25zLnR5cGVzID0gZ2V0T3B0aW9uc1R5cGVzKG9wdGlvbnMpO1xuXHQgICAgICAgIG9wdGlvbnMubmFtZSA9IGdldE9wdGlvbnNOYW1lKG9wdGlvbnMsIG5hbWUpO1xuXHQgICAgICAgIGNoZWNrV3JhcHBlckFQSShvcHRpb25zKTtcblx0ICAgICAgICB0ZW1wbGF0ZVdyYXBwZXJzTWFwW29wdGlvbnMubmFtZV0gPSBvcHRpb25zO1xuXHQgICAgICAgIHJldHVybiBvcHRpb25zO1xuXHQgICAgICB9IGVsc2UgaWYgKGFuZ3VsYXIuaXNTdHJpbmcob3B0aW9ucykpIHtcblx0ICAgICAgICBfeCA9IHtcblx0ICAgICAgICAgIHRlbXBsYXRlOiBvcHRpb25zLFxuXHQgICAgICAgICAgbmFtZTogbmFtZVxuXHQgICAgICAgIH07XG5cdCAgICAgICAgX2FnYWluID0gdHJ1ZTtcblx0ICAgICAgICBjb250aW51ZSBfZnVuY3Rpb247XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cblx0ICBmdW5jdGlvbiBnZXRPcHRpb25zVHlwZXMob3B0aW9ucykge1xuXHQgICAgaWYgKGFuZ3VsYXIuaXNTdHJpbmcob3B0aW9ucy50eXBlcykpIHtcblx0ICAgICAgcmV0dXJuIFtvcHRpb25zLnR5cGVzXTtcblx0ICAgIH1cblx0ICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQob3B0aW9ucy50eXBlcykpIHtcblx0ICAgICAgcmV0dXJuIFtdO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIG9wdGlvbnMudHlwZXM7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0T3B0aW9uc05hbWUob3B0aW9ucywgbmFtZSkge1xuXHQgICAgcmV0dXJuIG9wdGlvbnMubmFtZSB8fCBuYW1lIHx8IG9wdGlvbnMudHlwZXMuam9pbihcIiBcIikgfHwgZGVmYXVsdFdyYXBwZXJOYW1lO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGNoZWNrV3JhcHBlckFQSShvcHRpb25zKSB7XG5cdCAgICBmb3JtbHlVc2FiaWxpdHlQcm92aWRlci5jaGVja1dyYXBwZXIob3B0aW9ucyk7XG5cdCAgICBpZiAob3B0aW9ucy50ZW1wbGF0ZSkge1xuXHQgICAgICBmb3JtbHlVc2FiaWxpdHlQcm92aWRlci5jaGVja1dyYXBwZXJUZW1wbGF0ZShvcHRpb25zLnRlbXBsYXRlLCBvcHRpb25zKTtcblx0ICAgIH1cblx0ICAgIGlmICghb3B0aW9ucy5vdmVyd3JpdGVPaykge1xuXHQgICAgICBjaGVja092ZXJ3cml0ZShvcHRpb25zLm5hbWUsIHRlbXBsYXRlV3JhcHBlcnNNYXAsIG9wdGlvbnMsIFwidGVtcGxhdGVXcmFwcGVyc1wiKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGRlbGV0ZSBvcHRpb25zLm92ZXJ3cml0ZU9rO1xuXHQgICAgfVxuXHQgICAgY2hlY2tXcmFwcGVyVHlwZXMob3B0aW9ucyk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gY2hlY2tXcmFwcGVyVHlwZXMob3B0aW9ucykge1xuXHQgICAgdmFyIHNob3VsZFRocm93ID0gIWFuZ3VsYXIuaXNBcnJheShvcHRpb25zLnR5cGVzKSB8fCAhb3B0aW9ucy50eXBlcy5ldmVyeShhbmd1bGFyLmlzU3RyaW5nKTtcblx0ICAgIGlmIChzaG91bGRUaHJvdykge1xuXHQgICAgICB0aHJvdyBnZXRFcnJvcihcIkF0dGVtcHRlZCB0byBjcmVhdGUgYSB0ZW1wbGF0ZSB3cmFwcGVyIHdpdGggdHlwZXMgdGhhdCBpcyBub3QgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5nc1wiKTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICBmdW5jdGlvbiBjaGVja092ZXJ3cml0ZShwcm9wZXJ0eSwgb2JqZWN0LCBuZXdWYWx1ZSwgb2JqZWN0TmFtZSkge1xuXHQgICAgaWYgKG9iamVjdC5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcblx0ICAgICAgd2FybihbXCJBdHRlbXB0aW5nIHRvIG92ZXJ3cml0ZSBcIiArIHByb3BlcnR5ICsgXCIgb24gXCIgKyBvYmplY3ROYW1lICsgXCIgd2hpY2ggaXMgY3VycmVudGx5XCIsIFwiXCIgKyBKU09OLnN0cmluZ2lmeShvYmplY3RbcHJvcGVydHldKSArIFwiIHdpdGggXCIgKyBKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSksIFwiVG8gc3VwcmVzcyB0aGlzIHdhcm5pbmcsIHNwZWNpZnkgdGhlIHByb3BlcnR5IFxcXCJvdmVyd3JpdGVPazogdHJ1ZVxcXCJcIl0uam9pbihcIiBcIikpO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldFdyYXBwZXIobmFtZSkge1xuXHQgICAgcmV0dXJuIHRlbXBsYXRlV3JhcHBlcnNNYXBbbmFtZSB8fCBkZWZhdWx0V3JhcHBlck5hbWVdO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldFdyYXBwZXJCeVR5cGUodHlwZSkge1xuXHQgICAgLyoganNoaW50IG1heGNvbXBsZXhpdHk6NiAqL1xuXHQgICAgdmFyIHdyYXBwZXJzID0gW107XG5cdCAgICBmb3IgKHZhciBuYW1lIGluIHRlbXBsYXRlV3JhcHBlcnNNYXApIHtcblx0ICAgICAgaWYgKHRlbXBsYXRlV3JhcHBlcnNNYXAuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAgICAgICBpZiAodGVtcGxhdGVXcmFwcGVyc01hcFtuYW1lXS50eXBlcyAmJiB0ZW1wbGF0ZVdyYXBwZXJzTWFwW25hbWVdLnR5cGVzLmluZGV4T2YodHlwZSkgIT09IC0xKSB7XG5cdCAgICAgICAgICB3cmFwcGVycy5wdXNoKHRlbXBsYXRlV3JhcHBlcnNNYXBbbmFtZV0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIHdyYXBwZXJzO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIHJlbW92ZVdyYXBwZXJCeU5hbWUobmFtZSkge1xuXHQgICAgdmFyIHdyYXBwZXIgPSB0ZW1wbGF0ZVdyYXBwZXJzTWFwW25hbWVdO1xuXHQgICAgZGVsZXRlIHRlbXBsYXRlV3JhcHBlcnNNYXBbbmFtZV07XG5cdCAgICByZXR1cm4gd3JhcHBlcjtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiByZW1vdmVXcmFwcGVyc0ZvclR5cGUodHlwZSkge1xuXHQgICAgdmFyIHdyYXBwZXJzID0gZ2V0V3JhcHBlckJ5VHlwZSh0eXBlKTtcblx0ICAgIGlmICghd3JhcHBlcnMpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgaWYgKCFhbmd1bGFyLmlzQXJyYXkod3JhcHBlcnMpKSB7XG5cdCAgICAgIHJldHVybiByZW1vdmVXcmFwcGVyQnlOYW1lKHdyYXBwZXJzLm5hbWUpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgd3JhcHBlcnMuZm9yRWFjaChmdW5jdGlvbiAod3JhcHBlcikge1xuXHQgICAgICAgIHJldHVybiByZW1vdmVXcmFwcGVyQnlOYW1lKHdyYXBwZXIubmFtZSk7XG5cdCAgICAgIH0pO1xuXHQgICAgICByZXR1cm4gd3JhcHBlcnM7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gd2FybigpIHtcblx0ICAgIGlmICghX3RoaXMuZGlzYWJsZVdhcm5pbmdzKSB7XG5cdCAgICAgIGNvbnNvbGUud2Fybi5hcHBseShjb25zb2xlLCBhcmd1bWVudHMpO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRmb3JtbHlDb25maWcuJGluamVjdCA9IFtcImZvcm1seVVzYWJpbGl0eVByb3ZpZGVyXCIsIFwiZm9ybWx5QXBpQ2hlY2tcIl07XG5cbi8qKiovIH0sXG4vKiA2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZvcm1seVZhbGlkYXRpb25NZXNzYWdlcztcblxuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5VmFsaWRhdGlvbk1lc3NhZ2VzKCkge1xuXG5cdCAgdmFyIHZhbGlkYXRpb25NZXNzYWdlcyA9IHtcblx0ICAgIGFkZFRlbXBsYXRlT3B0aW9uVmFsdWVNZXNzYWdlOiBhZGRUZW1wbGF0ZU9wdGlvblZhbHVlTWVzc2FnZSxcblx0ICAgIGFkZFN0cmluZ01lc3NhZ2U6IGFkZFN0cmluZ01lc3NhZ2UsXG5cdCAgICBtZXNzYWdlczoge31cblx0ICB9O1xuXG5cdCAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlcztcblxuXHQgIGZ1bmN0aW9uIGFkZFRlbXBsYXRlT3B0aW9uVmFsdWVNZXNzYWdlKG5hbWUsIHByb3AsIHByZWZpeCwgc3VmZml4LCBhbHRlcm5hdGUpIHtcblx0ICAgIHZhbGlkYXRpb25NZXNzYWdlcy5tZXNzYWdlc1tuYW1lXSA9IHRlbXBsYXRlT3B0aW9uVmFsdWUocHJvcCwgcHJlZml4LCBzdWZmaXgsIGFsdGVybmF0ZSk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gYWRkU3RyaW5nTWVzc2FnZShuYW1lLCBzdHJpbmcpIHtcblx0ICAgIHZhbGlkYXRpb25NZXNzYWdlcy5tZXNzYWdlc1tuYW1lXSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgcmV0dXJuIHN0cmluZztcblx0ICAgIH07XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gdGVtcGxhdGVPcHRpb25WYWx1ZShwcm9wLCBwcmVmaXgsIHN1ZmZpeCwgYWx0ZXJuYXRlKSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gZ2V0VmFsaWRhdGlvbk1lc3NhZ2Uodmlld1ZhbHVlLCBtb2RlbFZhbHVlLCBzY29wZSkge1xuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnNbcHJvcF0pIHtcblx0ICAgICAgICByZXR1cm4gXCJcIiArIHByZWZpeCArIFwiIFwiICsgc2NvcGUub3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnNbcHJvcF0gKyBcIiBcIiArIHN1ZmZpeDtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICByZXR1cm4gYWx0ZXJuYXRlO1xuXHQgICAgICB9XG5cdCAgICB9O1xuXHQgIH1cblx0fVxuXG4vKioqLyB9LFxuLyogNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIHV0aWxzID0gX2ludGVyb3BSZXF1aXJlKF9fd2VicGFja19yZXF1aXJlX18oMTgpKTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZvcm1seVV0aWw7XG5cblx0Ly8gQG5nSW5qZWN0XG5cdGZ1bmN0aW9uIGZvcm1seVV0aWwoKSB7XG5cdCAgcmV0dXJuIHV0aWxzO1xuXHR9XG5cbi8qKiovIH0sXG4vKiA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX3RvQ29uc3VtYWJsZUFycmF5ID0gZnVuY3Rpb24gKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9IGVsc2UgeyByZXR1cm4gQXJyYXkuZnJvbShhcnIpOyB9IH07XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmb3JtbHlXYXJuO1xuXG5cdC8vIEBuZ0luamVjdFxuXHRmdW5jdGlvbiBmb3JtbHlXYXJuKGZvcm1seUNvbmZpZywgZm9ybWx5RXJyb3JBbmRXYXJuaW5nc1VybFByZWZpeCwgJGxvZykge1xuXHQgIHJldHVybiBmdW5jdGlvbiB3YXJuKCkge1xuXHQgICAgaWYgKCFmb3JtbHlDb25maWcuZGlzYWJsZVdhcm5pbmdzKSB7XG5cdCAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblx0ICAgICAgdmFyIHdhcm5JbmZvU2x1ZyA9IGFyZ3Muc2hpZnQoKTtcblx0ICAgICAgYXJncy51bnNoaWZ0KFwiRm9ybWx5IFdhcm5pbmc6XCIpO1xuXHQgICAgICBhcmdzLnB1c2goXCJcIiArIGZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXggKyBcIlwiICsgd2FybkluZm9TbHVnKTtcblx0ICAgICAgJGxvZy53YXJuLmFwcGx5KCRsb2csIF90b0NvbnN1bWFibGVBcnJheShhcmdzKSk7XG5cdCAgICB9XG5cdCAgfTtcblx0fVxuXHRmb3JtbHlXYXJuLiRpbmplY3QgPSBbXCJmb3JtbHlDb25maWdcIiwgXCJmb3JtbHlFcnJvckFuZFdhcm5pbmdzVXJsUHJlZml4XCIsIFwiJGxvZ1wiXTtcblxuLyoqKi8gfSxcbi8qIDkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5Q3VzdG9tVmFsaWRhdGlvbjtcblxuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5Q3VzdG9tVmFsaWRhdGlvbihmb3JtbHlVdGlsLCAkcSkge1xuXHQgIHJldHVybiB7XG5cdCAgICByZXN0cmljdDogXCJBXCIsXG5cdCAgICByZXF1aXJlOiBcIm5nTW9kZWxcIixcblx0ICAgIGxpbms6IGZ1bmN0aW9uIGZvcm1seUN1c3RvbVZhbGlkYXRpb25MaW5rKHNjb3BlLCBlbCwgYXR0cnMsIGN0cmwpIHtcblx0ICAgICAgdmFyIG9wdHMgPSBzY29wZS5vcHRpb25zO1xuXHQgICAgICBpZiAob3B0cy52YWxpZGF0b3JzKSB7XG5cdCAgICAgICAgY2hlY2tWYWxpZGF0b3JzKG9wdHMudmFsaWRhdG9ycyk7XG5cdCAgICAgIH1cblx0ICAgICAgb3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzID0gb3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzIHx8IHt9O1xuXHQgICAgICBhbmd1bGFyLmZvckVhY2gob3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzLCBmdW5jdGlvbiAobWVzc2FnZSwga2V5KSB7XG5cdCAgICAgICAgb3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzW2tleV0gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICByZXR1cm4gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCBtZXNzYWdlLCBjdHJsLiRtb2RlbFZhbHVlLCBjdHJsLiR2aWV3VmFsdWUpO1xuXHQgICAgICAgIH07XG5cdCAgICAgIH0pO1xuXG5cdCAgICAgIHZhciB1c2VOZXdWYWxpZGF0b3JzQXBpID0gY3RybC5oYXNPd25Qcm9wZXJ0eShcIiR2YWxpZGF0b3JzXCIpICYmICFhdHRycy5oYXNPd25Qcm9wZXJ0eShcInVzZVBhcnNlcnNcIik7XG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaChvcHRzLnZhbGlkYXRvcnMsIGZ1bmN0aW9uIGFkZFZhbGlkYXRvclRvUGlwZWxpbmUodmFsaWRhdG9yLCBuYW1lKSB7XG5cdCAgICAgICAgdmFyIG1lc3NhZ2UgPSB2YWxpZGF0b3IubWVzc2FnZTtcblx0ICAgICAgICBpZiAobWVzc2FnZSkge1xuXHQgICAgICAgICAgb3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzW25hbWVdID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICByZXR1cm4gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCBtZXNzYWdlLCBjdHJsLiRtb2RlbFZhbHVlLCBjdHJsLiR2aWV3VmFsdWUpO1xuXHQgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFsaWRhdG9yID0gYW5ndWxhci5pc09iamVjdCh2YWxpZGF0b3IpID8gdmFsaWRhdG9yLmV4cHJlc3Npb24gOiB2YWxpZGF0b3I7XG5cdCAgICAgICAgdmFyIGlzUG9zc2libHlBc3luYyA9ICFhbmd1bGFyLmlzU3RyaW5nKHZhbGlkYXRvcik7XG5cdCAgICAgICAgaWYgKHVzZU5ld1ZhbGlkYXRvcnNBcGkpIHtcblx0ICAgICAgICAgIHNldHVwV2l0aFZhbGlkYXRvcnMoKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgc2V0dXBXaXRoUGFyc2VycygpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGZ1bmN0aW9uIHNldHVwV2l0aFZhbGlkYXRvcnMoKSB7XG5cdCAgICAgICAgICB2YXIgdmFsaWRhdG9yQ29sbGVjdGlvbiA9IGlzUG9zc2libHlBc3luYyA/IFwiJGFzeW5jVmFsaWRhdG9yc1wiIDogXCIkdmFsaWRhdG9yc1wiO1xuXHQgICAgICAgICAgY3RybFt2YWxpZGF0b3JDb2xsZWN0aW9uXVtuYW1lXSA9IGZ1bmN0aW9uIGV2YWxWYWxpZGl0eShtb2RlbFZhbHVlLCB2aWV3VmFsdWUpIHtcblx0ICAgICAgICAgICAgdmFyIHZhbHVlID0gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCB2YWxpZGF0b3IsIG1vZGVsVmFsdWUsIHZpZXdWYWx1ZSk7XG5cdCAgICAgICAgICAgIGlmIChpc1Bvc3NpYmx5QXN5bmMpIHtcblx0ICAgICAgICAgICAgICByZXR1cm4gaXNQcm9taXNlTGlrZSh2YWx1ZSkgPyB2YWx1ZSA6IHZhbHVlID8gJHEud2hlbih2YWx1ZSkgOiAkcS5yZWplY3QodmFsdWUpO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBmdW5jdGlvbiBzZXR1cFdpdGhQYXJzZXJzKCkge1xuXHQgICAgICAgICAgdmFyIGluRmxpZ2h0VmFsaWRhdG9yID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgY3RybC4kcGFyc2Vycy51bnNoaWZ0KGZ1bmN0aW9uIGV2YWxWYWxpZGl0eU9mUGFyc2VyKHZpZXdWYWx1ZSkge1xuXHQgICAgICAgICAgICB2YXIgaXNWYWxpZCA9IGZvcm1seVV0aWwuZm9ybWx5RXZhbChzY29wZSwgdmFsaWRhdG9yLCBjdHJsLiRtb2RlbFZhbHVlLCB2aWV3VmFsdWUpO1xuXHQgICAgICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShpc1ZhbGlkKSkge1xuXHQgICAgICAgICAgICAgIGN0cmwuJHBlbmRpbmcgPSBjdHJsLiRwZW5kaW5nIHx8IHt9O1xuXHQgICAgICAgICAgICAgIGN0cmwuJHBlbmRpbmdbbmFtZV0gPSB0cnVlO1xuXHQgICAgICAgICAgICAgIGluRmxpZ2h0VmFsaWRhdG9yID0gaXNWYWxpZDtcblx0ICAgICAgICAgICAgICBpc1ZhbGlkLnRoZW4oZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgaWYgKGluRmxpZ2h0VmFsaWRhdG9yID09PSBpc1ZhbGlkKSB7XG5cdCAgICAgICAgICAgICAgICAgIGN0cmwuJHNldFZhbGlkaXR5KG5hbWUsIHRydWUpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgIH0pW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgaWYgKGluRmxpZ2h0VmFsaWRhdG9yID09PSBpc1ZhbGlkKSB7XG5cdCAgICAgICAgICAgICAgICAgIGN0cmwuJHNldFZhbGlkaXR5KG5hbWUsIGZhbHNlKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICB9KVtcImZpbmFsbHlcIl0oZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGN0cmwuJHBlbmRpbmcpLmxlbmd0aCA9PT0gMSkge1xuXHQgICAgICAgICAgICAgICAgICBkZWxldGUgY3RybC4kcGVuZGluZztcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgIGRlbGV0ZSBjdHJsLiRwZW5kaW5nW25hbWVdO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgIGN0cmwuJHNldFZhbGlkaXR5KG5hbWUsIGlzVmFsaWQpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIHJldHVybiB2aWV3VmFsdWU7XG5cdCAgICAgICAgICB9KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgIH07XG5cblx0ICBmdW5jdGlvbiBpc1Byb21pc2VMaWtlKG9iaikge1xuXHQgICAgcmV0dXJuIG9iaiAmJiBhbmd1bGFyLmlzRnVuY3Rpb24ob2JqLnRoZW4pO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGNoZWNrVmFsaWRhdG9ycyh2YWxpZGF0b3JzKSB7XG5cdCAgICB2YXIgYWxsb3dlZFByb3BlcnRpZXMgPSBbXCJleHByZXNzaW9uXCIsIFwibWVzc2FnZVwiXTtcblx0ICAgIHZhciB2YWxpZGF0b3JzV2l0aEV4dHJhUHJvcHMgPSB7fTtcblx0ICAgIGFuZ3VsYXIuZm9yRWFjaCh2YWxpZGF0b3JzLCBmdW5jdGlvbiAodmFsaWRhdG9yLCBuYW1lKSB7XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzU3RyaW5nKHZhbGlkYXRvcikpIHtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGV4dHJhUHJvcHMgPSBbXTtcblx0ICAgICAgYW5ndWxhci5mb3JFYWNoKHZhbGlkYXRvciwgZnVuY3Rpb24gKHYsIGtleSkge1xuXHQgICAgICAgIGlmIChhbGxvd2VkUHJvcGVydGllcy5pbmRleE9mKGtleSkgPT09IC0xKSB7XG5cdCAgICAgICAgICBleHRyYVByb3BzLnB1c2goa2V5KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgICBpZiAoZXh0cmFQcm9wcy5sZW5ndGgpIHtcblx0ICAgICAgICB2YWxpZGF0b3JzV2l0aEV4dHJhUHJvcHNbbmFtZV0gPSBleHRyYVByb3BzO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICAgIGlmIChPYmplY3Qua2V5cyh2YWxpZGF0b3JzV2l0aEV4dHJhUHJvcHMpLmxlbmd0aCkge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoW1wiVmFsaWRhdG9ycyBhcmUgb25seSBhbGxvd2VkIHRvIGJlIGZ1bmN0aW9ucyBvciBvYmplY3RzIHRoYXQgaGF2ZSBcIiArIGFsbG93ZWRQcm9wZXJ0aWVzLmpvaW4oXCIsIFwiKSArIFwiLlwiLCBcIllvdSBwcm92aWRlZCBzb21lIGV4dHJhIHByb3BlcnRpZXM6IFwiICsgSlNPTi5zdHJpbmdpZnkodmFsaWRhdG9yc1dpdGhFeHRyYVByb3BzKV0uam9pbihcIiBcIikpO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRmb3JtbHlDdXN0b21WYWxpZGF0aW9uLiRpbmplY3QgPSBbXCJmb3JtbHlVdGlsXCIsIFwiJHFcIl07XG5cbi8qKiovIH0sXG4vKiAxMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5RmllbGQ7XG5cblx0LyoqXG5cdCAqIEBuZ2RvYyBkaXJlY3RpdmVcblx0ICogQG5hbWUgZm9ybWx5RmllbGRcblx0ICogQHJlc3RyaWN0IEFFXG5cdCAqL1xuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5RmllbGQoJGh0dHAsICRxLCAkY29tcGlsZSwgJHRlbXBsYXRlQ2FjaGUsIGZvcm1seUNvbmZpZywgZm9ybWx5VmFsaWRhdGlvbk1lc3NhZ2VzLCBmb3JtbHlBcGlDaGVjaywgZm9ybWx5VXRpbCwgZm9ybWx5VXNhYmlsaXR5LCBmb3JtbHlXYXJuKSB7XG5cdCAgdmFyIGFycmF5aWZ5ID0gZm9ybWx5VXRpbC5hcnJheWlmeTtcblxuXHQgIEZvcm1seUZpZWxkQ29udHJvbGxlci4kaW5qZWN0ID0gW1wiJHNjb3BlXCIsIFwiJHRpbWVvdXRcIiwgXCIkcGFyc2VcIiwgXCIkY29udHJvbGxlclwiXTtcblx0ICByZXR1cm4ge1xuXHQgICAgcmVzdHJpY3Q6IFwiQUVcIixcblx0ICAgIHRyYW5zY2x1ZGU6IHRydWUsXG5cdCAgICBzY29wZToge1xuXHQgICAgICBvcHRpb25zOiBcIj1cIixcblx0ICAgICAgbW9kZWw6IFwiPVwiLFxuXHQgICAgICBmb3JtSWQ6IFwiQFwiLCAvLyBUT0RPIHJlbW92ZSBmb3JtSWQgaW4gYSBicmVha2luZyByZWxlYXNlXG5cdCAgICAgIGluZGV4OiBcIj0/XCIsXG5cdCAgICAgIGZpZWxkczogXCI9P1wiLFxuXHQgICAgICBmb3JtU3RhdGU6IFwiPT9cIixcblx0ICAgICAgZm9ybTogXCI9P1wiIC8vIFRPRE8gcmVxdWlyZSBmb3JtIGluIGEgYnJlYWtpbmcgcmVsZWFzZVxuXHQgICAgfSxcblx0ICAgIGNvbnRyb2xsZXI6IEZvcm1seUZpZWxkQ29udHJvbGxlcixcblx0ICAgIGxpbms6IGZpZWxkTGlua1xuXHQgIH07XG5cblx0ICAvLyBAbmdJbmplY3Rcblx0ICBmdW5jdGlvbiBGb3JtbHlGaWVsZENvbnRyb2xsZXIoJHNjb3BlLCAkdGltZW91dCwgJHBhcnNlLCAkY29udHJvbGxlcikge1xuXHQgICAgLyoganNoaW50IG1heHN0YXRlbWVudHM6MzEgKi9cblx0ICAgIGlmICgkc2NvcGUub3B0aW9ucy5maWVsZEdyb3VwKSB7XG5cdCAgICAgIHNldHVwRmllbGRHcm91cCgpO1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cblx0ICAgIHZhciBmaWVsZFR5cGUgPSBnZXRGaWVsZFR5cGUoJHNjb3BlLm9wdGlvbnMpO1xuXHQgICAgc2ltcGxpZnlMaWZlKCRzY29wZS5vcHRpb25zKTtcblx0ICAgIG1lcmdlRmllbGRPcHRpb25zV2l0aFR5cGVEZWZhdWx0cygkc2NvcGUub3B0aW9ucywgZmllbGRUeXBlKTtcblx0ICAgIGV4dGVuZE9wdGlvbnNXaXRoRGVmYXVsdHMoJHNjb3BlLm9wdGlvbnMsICRzY29wZS5pbmRleCk7XG5cdCAgICBjaGVja0FwaSgkc2NvcGUub3B0aW9ucyk7XG5cdCAgICAvLyBzZXQgZmllbGQgaWQgdG8gbGluayBsYWJlbHMgYW5kIGZpZWxkc1xuXG5cdCAgICAvLyBpbml0YWxpemF0aW9uXG5cdCAgICBzZXRGaWVsZElkKCk7XG5cdCAgICBzZXREZWZhdWx0VmFsdWUoKTtcblx0ICAgIHNldEluaXRpYWxWYWx1ZSgpO1xuXHQgICAgcnVuRXhwcmVzc2lvbnMoKTtcblx0ICAgIGFkZE1vZGVsV2F0Y2hlcigkc2NvcGUsICRzY29wZS5vcHRpb25zKTtcblx0ICAgIGFkZFZhbGlkYXRpb25NZXNzYWdlcygkc2NvcGUub3B0aW9ucyk7XG5cdCAgICBpbnZva2VDb250cm9sbGVycygkc2NvcGUsICRzY29wZS5vcHRpb25zLCBmaWVsZFR5cGUpO1xuXG5cdCAgICAvLyBmdW5jdGlvbiBkZWZpbml0aW9uc1xuXHQgICAgZnVuY3Rpb24gcnVuRXhwcmVzc2lvbnMoKSB7XG5cdCAgICAgIC8vIG11c3QgcnVuIG9uIG5leHQgdGljayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZSBpcyBjb3JyZWN0LlxuXHQgICAgICAkdGltZW91dChmdW5jdGlvbiBydW5FeHByZXNzaW9uc09uTmV4dFRpY2soKSB7XG5cdCAgICAgICAgdmFyIGZpZWxkID0gJHNjb3BlLm9wdGlvbnM7XG5cdCAgICAgICAgdmFyIGN1cnJlbnRWYWx1ZSA9IHZhbHVlR2V0dGVyU2V0dGVyKCk7XG5cdCAgICAgICAgYW5ndWxhci5mb3JFYWNoKGZpZWxkLmV4cHJlc3Npb25Qcm9wZXJ0aWVzLCBmdW5jdGlvbiBydW5FeHByZXNzaW9uKGV4cHJlc3Npb24sIHByb3ApIHtcblx0ICAgICAgICAgIHZhciBzZXR0ZXIgPSAkcGFyc2UocHJvcCkuYXNzaWduO1xuXHQgICAgICAgICAgdmFyIHByb21pc2UgPSAkcS53aGVuKGZvcm1seVV0aWwuZm9ybWx5RXZhbCgkc2NvcGUsIGV4cHJlc3Npb24sIGN1cnJlbnRWYWx1ZSkpO1xuXHQgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIHNldEZpZWxkVmFsdWUodmFsdWUpIHtcblx0ICAgICAgICAgICAgc2V0dGVyKGZpZWxkLCB2YWx1ZSk7XG5cdCAgICAgICAgICB9KTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgfSk7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIHZhbHVlR2V0dGVyU2V0dGVyKG5ld1ZhbCkge1xuXHQgICAgICBpZiAoISRzY29wZS5tb2RlbCB8fCAhJHNjb3BlLm9wdGlvbnMua2V5KSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChuZXdWYWwpKSB7XG5cdCAgICAgICAgJHNjb3BlLm1vZGVsWyRzY29wZS5vcHRpb25zLmtleV0gPSBuZXdWYWw7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuICRzY29wZS5tb2RlbFskc2NvcGUub3B0aW9ucy5rZXldO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBzaW1wbGlmeUxpZmUob3B0aW9ucykge1xuXHQgICAgICAvLyBhZGQgYSBmZXcgZW1wdHkgb2JqZWN0cyAoaWYgdGhleSBkb24ndCBhbHJlYWR5IGV4aXN0KSBzbyB5b3UgZG9uJ3QgaGF2ZSB0byB1bmRlZmluZWQgY2hlY2sgZXZlcnl3aGVyZVxuXHQgICAgICBmb3JtbHlVdGlsLnJldmVyc2VEZWVwTWVyZ2Uob3B0aW9ucywge1xuXHQgICAgICAgIGRhdGE6IHt9LFxuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge30sXG5cdCAgICAgICAgdmFsaWRhdGlvbjoge31cblx0ICAgICAgfSk7XG5cdCAgICAgIC8vIGNyZWF0ZSAkc2NvcGUudG8gc28gdGVtcGxhdGUgYXV0aG9ycyBjYW4gcmVmZXJlbmNlIHRvIGluc3RlYWQgb2YgJHNjb3BlLm9wdGlvbnMudGVtcGxhdGVPcHRpb25zXG5cdCAgICAgICRzY29wZS50byA9ICRzY29wZS5vcHRpb25zLnRlbXBsYXRlT3B0aW9ucztcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gc2V0RmllbGRJZCgpIHtcblx0ICAgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbihmb3JtbHlDb25maWcuZXh0cmFzLmdldEZpZWxkSWQpKSB7XG5cdCAgICAgICAgJHNjb3BlLmlkID0gZm9ybWx5Q29uZmlnLmV4dHJhcy5nZXRGaWVsZElkKCRzY29wZS5vcHRpb25zLCAkc2NvcGUubW9kZWwsICRzY29wZSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdmFyIGZvcm1OYW1lID0gJHNjb3BlLmZvcm0gJiYgJHNjb3BlLmZvcm0uJG5hbWUgfHwgJHNjb3BlLmZvcm1JZDtcblx0ICAgICAgICAkc2NvcGUuaWQgPSBmb3JtbHlVdGlsLmdldEZpZWxkSWQoZm9ybU5hbWUsICRzY29wZS5vcHRpb25zLCAkc2NvcGUuaW5kZXgpO1xuXHQgICAgICB9XG5cdCAgICAgICRzY29wZS5vcHRpb25zLmlkID0gJHNjb3BlLmlkO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBzZXREZWZhdWx0VmFsdWUoKSB7XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZCgkc2NvcGUub3B0aW9ucy5kZWZhdWx0VmFsdWUpICYmICFhbmd1bGFyLmlzRGVmaW5lZCgkc2NvcGUubW9kZWxbJHNjb3BlLm9wdGlvbnMua2V5XSkpIHtcblx0ICAgICAgICAkc2NvcGUubW9kZWxbJHNjb3BlLm9wdGlvbnMua2V5XSA9ICRzY29wZS5vcHRpb25zLmRlZmF1bHRWYWx1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBzZXRJbml0aWFsVmFsdWUoKSB7XG5cdCAgICAgICRzY29wZS5vcHRpb25zLmluaXRpYWxWYWx1ZSA9ICRzY29wZS5tb2RlbCAmJiAkc2NvcGUubW9kZWxbJHNjb3BlLm9wdGlvbnMua2V5XTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gbWVyZ2VGaWVsZE9wdGlvbnNXaXRoVHlwZURlZmF1bHRzKG9wdGlvbnMsIHR5cGUpIHtcblx0ICAgICAgaWYgKHR5cGUpIHtcblx0ICAgICAgICBtZXJnZU9wdGlvbnMob3B0aW9ucywgdHlwZS5kZWZhdWx0T3B0aW9ucyk7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHByb3Blck9yZGVyID0gYXJyYXlpZnkob3B0aW9ucy5vcHRpb25zVHlwZXMpLnJldmVyc2UoKTsgLy8gc28gdGhlIHJpZ2h0IHRoaW5ncyBhcmUgb3ZlcnJpZGRlblxuXHQgICAgICBhbmd1bGFyLmZvckVhY2gocHJvcGVyT3JkZXIsIGZ1bmN0aW9uICh0eXBlTmFtZSkge1xuXHQgICAgICAgIG1lcmdlT3B0aW9ucyhvcHRpb25zLCBmb3JtbHlDb25maWcuZ2V0VHlwZSh0eXBlTmFtZSwgdHJ1ZSwgb3B0aW9ucykuZGVmYXVsdE9wdGlvbnMpO1xuXHQgICAgICB9KTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gbWVyZ2VPcHRpb25zKG9wdGlvbnMsIGV4dHJhT3B0aW9ucykge1xuXHQgICAgICBpZiAoZXh0cmFPcHRpb25zKSB7XG5cdCAgICAgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbihleHRyYU9wdGlvbnMpKSB7XG5cdCAgICAgICAgICBleHRyYU9wdGlvbnMgPSBleHRyYU9wdGlvbnMob3B0aW9ucyk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGZvcm1seVV0aWwucmV2ZXJzZURlZXBNZXJnZShvcHRpb25zLCBleHRyYU9wdGlvbnMpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGV4dGVuZE9wdGlvbnNXaXRoRGVmYXVsdHMob3B0aW9ucywgaW5kZXgpIHtcblx0ICAgICAgdmFyIGtleSA9IG9wdGlvbnMua2V5IHx8IGluZGV4IHx8IDA7XG5cdCAgICAgIGFuZ3VsYXIuZXh0ZW5kKG9wdGlvbnMsIHtcblx0ICAgICAgICAvLyBhdHRhY2ggdGhlIGtleSBpbiBjYXNlIHRoZSBmb3JtbHktZmllbGQgZGlyZWN0aXZlIGlzIHVzZWQgZGlyZWN0bHlcblx0ICAgICAgICBrZXk6IGtleSxcblx0ICAgICAgICB2YWx1ZTogdmFsdWVHZXR0ZXJTZXR0ZXIsXG5cdCAgICAgICAgcnVuRXhwcmVzc2lvbnM6IHJ1bkV4cHJlc3Npb25zLFxuXHQgICAgICAgIHJlc2V0TW9kZWw6IHJlc2V0TW9kZWwsXG5cdCAgICAgICAgdXBkYXRlSW5pdGlhbFZhbHVlOiB1cGRhdGVJbml0aWFsVmFsdWVcblx0ICAgICAgfSk7XG5cdCAgICB9XG5cblx0ICAgIC8vIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uc1xuXHQgICAgZnVuY3Rpb24gYWRkTW9kZWxXYXRjaGVyKHNjb3BlLCBvcHRpb25zKSB7XG5cdCAgICAgIGlmIChvcHRpb25zLm1vZGVsKSB7XG5cdCAgICAgICAgc2NvcGUuJHdhdGNoKFwib3B0aW9ucy5tb2RlbFwiLCBydW5FeHByZXNzaW9ucywgdHJ1ZSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gcmVzZXRNb2RlbCgpIHtcblx0ICAgICAgJHNjb3BlLm1vZGVsWyRzY29wZS5vcHRpb25zLmtleV0gPSAkc2NvcGUub3B0aW9ucy5pbml0aWFsVmFsdWU7XG5cdCAgICAgIGlmICgkc2NvcGUub3B0aW9ucy5mb3JtQ29udHJvbCkge1xuXHQgICAgICAgICRzY29wZS5vcHRpb25zLmZvcm1Db250cm9sLiRzZXRWaWV3VmFsdWUoJHNjb3BlLm1vZGVsWyRzY29wZS5vcHRpb25zLmtleV0pO1xuXHQgICAgICAgICRzY29wZS5vcHRpb25zLmZvcm1Db250cm9sLiRyZW5kZXIoKTtcblx0ICAgICAgICAkc2NvcGUub3B0aW9ucy5mb3JtQ29udHJvbC4kc2V0VW50b3VjaGVkKCk7XG5cdCAgICAgICAgJHNjb3BlLm9wdGlvbnMuZm9ybUNvbnRyb2wuJHNldFByaXN0aW5lKCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gdXBkYXRlSW5pdGlhbFZhbHVlKCkge1xuXHQgICAgICAkc2NvcGUub3B0aW9ucy5pbml0aWFsVmFsdWUgPSAkc2NvcGUubW9kZWxbJHNjb3BlLm9wdGlvbnMua2V5XTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gYWRkVmFsaWRhdGlvbk1lc3NhZ2VzKG9wdGlvbnMpIHtcblx0ICAgICAgb3B0aW9ucy52YWxpZGF0aW9uLm1lc3NhZ2VzID0gb3B0aW9ucy52YWxpZGF0aW9uLm1lc3NhZ2VzIHx8IHt9O1xuXHQgICAgICBhbmd1bGFyLmZvckVhY2goZm9ybWx5VmFsaWRhdGlvbk1lc3NhZ2VzLm1lc3NhZ2VzLCBmdW5jdGlvbiBjcmVhdGVGdW5jdGlvbkZvck1lc3NhZ2UoZXhwcmVzc2lvbiwgbmFtZSkge1xuXHQgICAgICAgIGlmICghb3B0aW9ucy52YWxpZGF0aW9uLm1lc3NhZ2VzW25hbWVdKSB7XG5cdCAgICAgICAgICBvcHRpb25zLnZhbGlkYXRpb24ubWVzc2FnZXNbbmFtZV0gPSBmdW5jdGlvbiBldmFsdWF0ZU1lc3NhZ2Uodmlld1ZhbHVlLCBtb2RlbFZhbHVlLCBzY29wZSkge1xuXHQgICAgICAgICAgICByZXR1cm4gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCBleHByZXNzaW9uLCBtb2RlbFZhbHVlLCB2aWV3VmFsdWUpO1xuXHQgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBpbnZva2VDb250cm9sbGVycyhzY29wZSkge1xuXHQgICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMV07XG5cdCAgICAgIHZhciB0eXBlID0gYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1syXTtcblxuXHQgICAgICBhbmd1bGFyLmZvckVhY2goW3R5cGUuY29udHJvbGxlciwgb3B0aW9ucy5jb250cm9sbGVyXSwgZnVuY3Rpb24gKGNvbnRyb2xsZXIpIHtcblx0ICAgICAgICBpZiAoY29udHJvbGxlcikge1xuXHQgICAgICAgICAgJGNvbnRyb2xsZXIoY29udHJvbGxlciwgeyAkc2NvcGU6IHNjb3BlIH0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSk7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIHNldHVwRmllbGRHcm91cCgpIHtcblx0ICAgICAgJHNjb3BlLm9wdGlvbnMub3B0aW9ucyA9ICRzY29wZS5vcHRpb25zLm9wdGlvbnMgfHwge307XG5cdCAgICAgICRzY29wZS5vcHRpb25zLm9wdGlvbnMuZm9ybVN0YXRlID0gJHNjb3BlLmZvcm1TdGF0ZTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICAvLyBsaW5rIGZ1bmN0aW9uXG5cdCAgZnVuY3Rpb24gZmllbGRMaW5rKHNjb3BlLCBlbCkge1xuXHQgICAgaWYgKHNjb3BlLm9wdGlvbnMuZmllbGRHcm91cCkge1xuXHQgICAgICBzZXRGaWVsZEdyb3VwVGVtcGxhdGUoKTtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXG5cdCAgICBhZGRBdHRyaWJ1dGVzKCk7XG5cdCAgICBhZGRDbGFzc2VzKCk7XG5cblx0ICAgIHZhciB0eXBlID0gZ2V0RmllbGRUeXBlKHNjb3BlLm9wdGlvbnMpO1xuXHQgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG5cdCAgICB2YXIgdGh1c2x5ID0gdGhpcztcblx0ICAgIGdldEZpZWxkVGVtcGxhdGUoc2NvcGUub3B0aW9ucykudGhlbihydW5NYW5pcHVsYXRvcnMoZm9ybWx5Q29uZmlnLnRlbXBsYXRlTWFuaXB1bGF0b3JzLnByZVdyYXBwZXIpKS50aGVuKHRyYW5zY2x1ZGVJbldyYXBwZXJzKHNjb3BlLm9wdGlvbnMpKS50aGVuKHJ1bk1hbmlwdWxhdG9ycyhmb3JtbHlDb25maWcudGVtcGxhdGVNYW5pcHVsYXRvcnMucG9zdFdyYXBwZXIpKS50aGVuKHNldEVsZW1lbnRUZW1wbGF0ZSkudGhlbih3YXRjaEZvcm1Db250cm9sKS50aGVuKGNhbGxMaW5rRnVuY3Rpb25zKVtcImNhdGNoXCJdKGZ1bmN0aW9uIChlcnJvcikge1xuXHQgICAgICBmb3JtbHlXYXJuKFwidGhlcmUtd2FzLWEtcHJvYmxlbS1zZXR0aW5nLXRoZS10ZW1wbGF0ZS1mb3ItdGhpcy1maWVsZFwiLCBcIlRoZXJlIHdhcyBhIHByb2JsZW0gc2V0dGluZyB0aGUgdGVtcGxhdGUgZm9yIHRoaXMgZmllbGQgXCIsIHNjb3BlLm9wdGlvbnMsIGVycm9yKTtcblx0ICAgIH0pO1xuXG5cdCAgICBmdW5jdGlvbiBzZXRGaWVsZEdyb3VwVGVtcGxhdGUoKSB7XG5cdCAgICAgIGNoZWNrRmllbGRHcm91cEFwaShzY29wZS5vcHRpb25zKTtcblx0ICAgICAgZWwuYWRkQ2xhc3MoXCJmb3JtbHktZmllbGQtZ3JvdXBcIik7XG5cdCAgICAgIHZhciBleHRyYUF0dHJpYnV0ZXMgPSBcIlwiO1xuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy5lbGVtZW50QXR0cmlidXRlcykge1xuXHQgICAgICAgIGV4dHJhQXR0cmlidXRlcyA9IE9iamVjdC5rZXlzKHNjb3BlLm9wdGlvbnMuZWxlbWVudEF0dHJpYnV0ZXMpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICAgICAgICByZXR1cm4gXCJcIiArIGtleSArIFwiPVxcXCJcIiArIHNjb3BlLm9wdGlvbnMuZWxlbWVudEF0dHJpYnV0ZXNba2V5XSArIFwiXFxcIlwiO1xuXHQgICAgICAgIH0pLmpvaW4oXCIgXCIpO1xuXHQgICAgICB9XG5cdCAgICAgIHNldEVsZW1lbnRUZW1wbGF0ZShcIlxcbiAgICAgICAgICA8Zm9ybWx5LWZvcm0gbW9kZWw9XFxcIm1vZGVsXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzPVxcXCJvcHRpb25zLmZpZWxkR3JvdXBcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPVxcXCJvcHRpb25zLm9wdGlvbnNcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3JtPVxcXCJvcHRpb25zLmZvcm1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiXCIgKyBzY29wZS5vcHRpb25zLmNsYXNzTmFtZSArIFwiXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgXCIgKyBleHRyYUF0dHJpYnV0ZXMgKyBcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgaXMtZmllbGQtZ3JvdXA+XFxuICAgICAgICAgIDwvZm9ybWx5LWZvcm0+XFxuICAgICAgICBcIik7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGFkZEF0dHJpYnV0ZXMoKSB7XG5cdCAgICAgIGlmIChzY29wZS5vcHRpb25zLmVsZW1lbnRBdHRyaWJ1dGVzKSB7XG5cdCAgICAgICAgZWwuYXR0cihzY29wZS5vcHRpb25zLmVsZW1lbnRBdHRyaWJ1dGVzKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBhZGRDbGFzc2VzKCkge1xuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy5jbGFzc05hbWUpIHtcblx0ICAgICAgICBlbC5hZGRDbGFzcyhzY29wZS5vcHRpb25zLmNsYXNzTmFtZSk7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHNjb3BlLm9wdGlvbnMudHlwZSkge1xuXHQgICAgICAgIGVsLmFkZENsYXNzKFwiZm9ybWx5LWZpZWxkLVwiICsgc2NvcGUub3B0aW9ucy50eXBlKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBzZXRFbGVtZW50VGVtcGxhdGUodGVtcGxhdGVTdHJpbmcpIHtcblx0ICAgICAgZWwuaHRtbChhc0h0bWwodGVtcGxhdGVTdHJpbmcpKTtcblx0ICAgICAgJGNvbXBpbGUoZWwuY29udGVudHMoKSkoc2NvcGUpO1xuXHQgICAgICByZXR1cm4gdGVtcGxhdGVTdHJpbmc7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIHdhdGNoRm9ybUNvbnRyb2wodGVtcGxhdGVTdHJpbmcpIHtcblx0ICAgICAgdmFyIHN0b3BXYXRjaGluZ0ZpZWxkID0gYW5ndWxhci5ub29wO1xuXHQgICAgICB2YXIgc3RvcFdhdGNoaW5nU2hvd0Vycm9yID0gYW5ndWxhci5ub29wO1xuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy5ub0Zvcm1Db250cm9sKSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciB0ZW1wbGF0ZUVsID0gYW5ndWxhci5lbGVtZW50KFwiPGRpdj5cIiArIHRlbXBsYXRlU3RyaW5nICsgXCI8L2Rpdj5cIik7XG5cdCAgICAgIHZhciBuZ01vZGVsTm9kZSA9IHRlbXBsYXRlRWxbMF0ucXVlcnlTZWxlY3RvcihcIltuZy1tb2RlbF0sW2RhdGEtbmctbW9kZWxdXCIpO1xuXHQgICAgICBpZiAobmdNb2RlbE5vZGUgJiYgbmdNb2RlbE5vZGUuZ2V0QXR0cmlidXRlKFwibmFtZVwiKSkge1xuXHQgICAgICAgIHdhdGNoRmllbGROYW1lT3JFeGlzdGVuY2UobmdNb2RlbE5vZGUuZ2V0QXR0cmlidXRlKFwibmFtZVwiKSk7XG5cdCAgICAgIH1cblxuXHQgICAgICBmdW5jdGlvbiB3YXRjaEZpZWxkTmFtZU9yRXhpc3RlbmNlKG5hbWUpIHtcblx0ICAgICAgICB2YXIgbmFtZUV4cHJlc3Npb25SZWdleCA9IC9cXHtcXHsoLio/KX19Lztcblx0ICAgICAgICB2YXIgbmFtZUV4cHJlc3Npb24gPSBuYW1lRXhwcmVzc2lvblJlZ2V4LmV4ZWMobmFtZSk7XG5cdCAgICAgICAgaWYgKG5hbWVFeHByZXNzaW9uKSB7XG5cdCAgICAgICAgICB3YXRjaEZpZWxkTmFtZShuYW1lRXhwcmVzc2lvblsxXSk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHdhdGNoRmllbGRFeGlzdGVuY2UobmFtZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gd2F0Y2hGaWVsZE5hbWUoZXhwcmVzc2lvbikge1xuXHQgICAgICAgIHNjb3BlLiR3YXRjaChleHByZXNzaW9uLCBmdW5jdGlvbiBvbmVGaWVsZE5hbWVDaGFuZ2UobmFtZSkge1xuXHQgICAgICAgICAgaWYgKG5hbWUpIHtcblx0ICAgICAgICAgICAgc3RvcFdhdGNoaW5nRmllbGQoKTtcblx0ICAgICAgICAgICAgd2F0Y2hGaWVsZEV4aXN0ZW5jZShuYW1lKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIHdhdGNoRmllbGRFeGlzdGVuY2UobmFtZSkge1xuXHQgICAgICAgIHN0b3BXYXRjaGluZ0ZpZWxkID0gc2NvcGUuJHdhdGNoKFwiZm9ybVtcXFwiXCIgKyBuYW1lICsgXCJcXFwiXVwiLCBmdW5jdGlvbiBmb3JtQ29udHJvbENoYW5nZShmb3JtQ29udHJvbCkge1xuXHQgICAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XG5cdCAgICAgICAgICAgIHNjb3BlLmZjID0gZm9ybUNvbnRyb2w7IC8vIHNob3J0Y3V0IGZvciB0ZW1wbGF0ZSBhdXRob3JzXG5cdCAgICAgICAgICAgIHNjb3BlLm9wdGlvbnMuZm9ybUNvbnRyb2wgPSBmb3JtQ29udHJvbDtcblx0ICAgICAgICAgICAgc3RvcFdhdGNoaW5nU2hvd0Vycm9yKCk7XG5cdCAgICAgICAgICAgIGFkZFNob3dNZXNzYWdlc1dhdGNoZXIoKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIGFkZFNob3dNZXNzYWdlc1dhdGNoZXIoKSB7XG5cdCAgICAgICAgc3RvcFdhdGNoaW5nU2hvd0Vycm9yID0gc2NvcGUuJHdhdGNoKGZ1bmN0aW9uIHdhdGNoU2hvd1ZhbGlkYXRpb25DaGFuZ2UoKSB7XG5cdCAgICAgICAgICB2YXIgY3VzdG9tRXhwcmVzc2lvbiA9IGZvcm1seUNvbmZpZy5leHRyYXMuZXJyb3JFeGlzdHNBbmRTaG91bGRCZVZpc2libGVFeHByZXNzaW9uO1xuXHQgICAgICAgICAgdmFyIG9wdGlvbnMgPSBzY29wZS5vcHRpb25zO1xuXHQgICAgICAgICAgdmFyIGZjID0gc2NvcGUuZmM7XG5cblx0ICAgICAgICAgIGlmICghZmMuJGludmFsaWQpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucy52YWxpZGF0aW9uLnNob3cgPT09IFwiYm9vbGVhblwiKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnZhbGlkYXRpb24uc2hvdztcblx0ICAgICAgICAgIH0gZWxzZSBpZiAoY3VzdG9tRXhwcmVzc2lvbikge1xuXHQgICAgICAgICAgICByZXR1cm4gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCBjdXN0b21FeHByZXNzaW9uLCBmYy4kbW9kZWxWYWx1ZSwgZmMuJHZpZXdWYWx1ZSk7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICB2YXIgbm9Ub3VjaGVkQnV0RGlydHkgPSBhbmd1bGFyLmlzVW5kZWZpbmVkKGZjLiR0b3VjaGVkKSAmJiBmYy4kZGlydHk7XG5cdCAgICAgICAgICAgIHJldHVybiBzY29wZS5mYy4kdG91Y2hlZCB8fCBub1RvdWNoZWRCdXREaXJ0eTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9LCBmdW5jdGlvbiBvblNob3dWYWxpZGF0aW9uQ2hhbmdlKHNob3cpIHtcblx0ICAgICAgICAgIHNjb3BlLm9wdGlvbnMudmFsaWRhdGlvbi5lcnJvckV4aXN0c0FuZFNob3VsZEJlVmlzaWJsZSA9IHNob3c7XG5cdCAgICAgICAgICBzY29wZS5zaG93RXJyb3IgPSBzaG93OyAvLyBzaG9ydGN1dCBmb3IgdGVtcGxhdGUgYXV0aG9yc1xuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGNhbGxMaW5rRnVuY3Rpb25zKCkge1xuXHQgICAgICBpZiAodHlwZSAmJiB0eXBlLmxpbmspIHtcblx0ICAgICAgICB0eXBlLmxpbmsuYXBwbHkodGh1c2x5LCBhcmdzKTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy5saW5rKSB7XG5cdCAgICAgICAgc2NvcGUub3B0aW9ucy5saW5rLmFwcGx5KHRodXNseSwgYXJncyk7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gcnVuTWFuaXB1bGF0b3JzKG1hbmlwdWxhdG9ycykge1xuXHQgICAgICByZXR1cm4gZnVuY3Rpb24gcnVuTWFuaXB1bGF0b3JzT25UZW1wbGF0ZSh0ZW1wbGF0ZSkge1xuXHQgICAgICAgIHZhciBjaGFpbiA9ICRxLndoZW4odGVtcGxhdGUpO1xuXHQgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChtYW5pcHVsYXRvcnMsIGZ1bmN0aW9uIChtYW5pcHVsYXRvcikge1xuXHQgICAgICAgICAgY2hhaW4gPSBjaGFpbi50aGVuKGZ1bmN0aW9uICh0ZW1wbGF0ZSkge1xuXHQgICAgICAgICAgICByZXR1cm4gJHEud2hlbihtYW5pcHVsYXRvcih0ZW1wbGF0ZSwgc2NvcGUub3B0aW9ucywgc2NvcGUpKS50aGVuKGZ1bmN0aW9uIChuZXdUZW1wbGF0ZSkge1xuXHQgICAgICAgICAgICAgIHJldHVybiBhbmd1bGFyLmlzU3RyaW5nKG5ld1RlbXBsYXRlKSA/IG5ld1RlbXBsYXRlIDogYXNIdG1sKG5ld1RlbXBsYXRlKTtcblx0ICAgICAgICAgICAgfSk7XG5cdCAgICAgICAgICB9KTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgICByZXR1cm4gY2hhaW47XG5cdCAgICAgIH07XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgLy8gc3RhdGVsZXNzIHV0aWwgZnVuY3Rpb25zXG5cdCAgZnVuY3Rpb24gYXNIdG1sKGVsKSB7XG5cdCAgICB2YXIgd3JhcHBlciA9IGFuZ3VsYXIuZWxlbWVudChcIjxhPjwvYT5cIik7XG5cdCAgICByZXR1cm4gd3JhcHBlci5hcHBlbmQoZWwpLmh0bWwoKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBnZXRGaWVsZFR5cGUob3B0aW9ucykge1xuXHQgICAgcmV0dXJuIG9wdGlvbnMudHlwZSAmJiBmb3JtbHlDb25maWcuZ2V0VHlwZShvcHRpb25zLnR5cGUpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldEZpZWxkVGVtcGxhdGUob3B0aW9ucykge1xuXHQgICAgZnVuY3Rpb24gZnJvbU9wdGlvbnNPclR5cGUoa2V5LCB0eXBlKSB7XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChvcHRpb25zW2tleV0pKSB7XG5cdCAgICAgICAgcmV0dXJuIG9wdGlvbnNba2V5XTtcblx0ICAgICAgfSBlbHNlIGlmICh0eXBlICYmIGFuZ3VsYXIuaXNEZWZpbmVkKHR5cGVba2V5XSkpIHtcblx0ICAgICAgICByZXR1cm4gdHlwZVtrZXldO1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIHZhciB0eXBlID0gZm9ybWx5Q29uZmlnLmdldFR5cGUob3B0aW9ucy50eXBlLCB0cnVlLCBvcHRpb25zKTtcblx0ICAgIHZhciB0ZW1wbGF0ZSA9IGZyb21PcHRpb25zT3JUeXBlKFwidGVtcGxhdGVcIiwgdHlwZSk7XG5cdCAgICB2YXIgdGVtcGxhdGVVcmwgPSBmcm9tT3B0aW9uc09yVHlwZShcInRlbXBsYXRlVXJsXCIsIHR5cGUpO1xuXHQgICAgaWYgKGFuZ3VsYXIuaXNVbmRlZmluZWQodGVtcGxhdGUpICYmICF0ZW1wbGF0ZVVybCkge1xuXHQgICAgICB0aHJvdyBmb3JtbHlVc2FiaWxpdHkuZ2V0RmllbGRFcnJvcihcInR5cGUtdHlwZS1oYXMtbm8tdGVtcGxhdGVcIiwgXCJUeXBlICdcIiArIG9wdGlvbnMudHlwZSArIFwiJyBoYXMgbm90IHRlbXBsYXRlLiBPbiBlbGVtZW50OlwiLCBvcHRpb25zKTtcblx0ICAgIH1cblxuXHQgICAgcmV0dXJuIGdldFRlbXBsYXRlKHRlbXBsYXRlVXJsIHx8IHRlbXBsYXRlLCBhbmd1bGFyLmlzVW5kZWZpbmVkKHRlbXBsYXRlKSwgb3B0aW9ucyk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0VGVtcGxhdGUodGVtcGxhdGUsIGlzVXJsLCBvcHRpb25zKSB7XG5cdCAgICB2YXIgdGVtcGxhdGVQcm9taXNlID0gdW5kZWZpbmVkO1xuXHQgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbih0ZW1wbGF0ZSkpIHtcblx0ICAgICAgdGVtcGxhdGVQcm9taXNlID0gJHEud2hlbih0ZW1wbGF0ZShvcHRpb25zKSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0ZW1wbGF0ZVByb21pc2UgPSAkcS53aGVuKHRlbXBsYXRlKTtcblx0ICAgIH1cblxuXHQgICAgaWYgKCFpc1VybCkge1xuXHQgICAgICByZXR1cm4gdGVtcGxhdGVQcm9taXNlO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdmFyIF9yZXQgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBodHRwT3B0aW9ucyA9IHsgY2FjaGU6ICR0ZW1wbGF0ZUNhY2hlIH07XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIHY6IHRlbXBsYXRlUHJvbWlzZS50aGVuKGZ1bmN0aW9uICh1cmwpIHtcblx0ICAgICAgICAgICAgcmV0dXJuICRodHRwLmdldCh1cmwsIGh0dHBPcHRpb25zKTtcblx0ICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG5cdCAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuXHQgICAgICAgICAgfSlbXCJjYXRjaFwiXShmdW5jdGlvbiBoYW5kbGVFcnJvckdldHRpbmdBVGVtcGxhdGUoZXJyb3IpIHtcblx0ICAgICAgICAgICAgZm9ybWx5V2FybihcInByb2JsZW0tbG9hZGluZy10ZW1wbGF0ZS1mb3ItdGVtcGxhdGV1cmxcIiwgXCJQcm9ibGVtIGxvYWRpbmcgdGVtcGxhdGUgZm9yIFwiICsgdGVtcGxhdGUsIGVycm9yKTtcblx0ICAgICAgICAgIH0pXG5cdCAgICAgICAgfTtcblx0ICAgICAgfSkoKTtcblxuXHQgICAgICBpZiAodHlwZW9mIF9yZXQgPT09IFwib2JqZWN0XCIpIHtcblx0ICAgICAgICByZXR1cm4gX3JldC52O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gdHJhbnNjbHVkZUluV3JhcHBlcnMob3B0aW9ucykge1xuXHQgICAgdmFyIHdyYXBwZXIgPSBnZXRXcmFwcGVyT3B0aW9uKG9wdGlvbnMpO1xuXG5cdCAgICByZXR1cm4gZnVuY3Rpb24gdHJhbnNjbHVkZVRlbXBsYXRlKHRlbXBsYXRlKSB7XG5cdCAgICAgIGlmICghd3JhcHBlci5sZW5ndGgpIHtcblx0ICAgICAgICByZXR1cm4gJHEud2hlbih0ZW1wbGF0ZSk7XG5cdCAgICAgIH1cblxuXHQgICAgICB3cmFwcGVyLmZvckVhY2goZnVuY3Rpb24gKHdyYXBwZXIpIHtcblx0ICAgICAgICBmb3JtbHlVc2FiaWxpdHkuY2hlY2tXcmFwcGVyKHdyYXBwZXIsIG9wdGlvbnMpO1xuXHQgICAgICAgIHdyYXBwZXIudmFsaWRhdGVPcHRpb25zICYmIHdyYXBwZXIudmFsaWRhdGVPcHRpb25zKG9wdGlvbnMpO1xuXHQgICAgICAgIHJ1bkFwaUNoZWNrKHdyYXBwZXIsIG9wdGlvbnMpO1xuXHQgICAgICB9KTtcblx0ICAgICAgdmFyIHByb21pc2VzID0gd3JhcHBlci5tYXAoZnVuY3Rpb24gKHcpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0VGVtcGxhdGUody50ZW1wbGF0ZSB8fCB3LnRlbXBsYXRlVXJsLCAhdy50ZW1wbGF0ZSk7XG5cdCAgICAgIH0pO1xuXHQgICAgICByZXR1cm4gJHEuYWxsKHByb21pc2VzKS50aGVuKGZ1bmN0aW9uICh3cmFwcGVyc1RlbXBsYXRlcykge1xuXHQgICAgICAgIHdyYXBwZXJzVGVtcGxhdGVzLmZvckVhY2goZnVuY3Rpb24gKHdyYXBwZXJUZW1wbGF0ZSwgaW5kZXgpIHtcblx0ICAgICAgICAgIGZvcm1seVVzYWJpbGl0eS5jaGVja1dyYXBwZXJUZW1wbGF0ZSh3cmFwcGVyVGVtcGxhdGUsIHdyYXBwZXJbaW5kZXhdKTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgICB3cmFwcGVyc1RlbXBsYXRlcy5yZXZlcnNlKCk7IC8vIHdyYXBwZXIgMCBpcyB3cmFwcGVkIGluIHdyYXBwZXIgMSBhbmQgc28gb24uLi5cblx0ICAgICAgICB2YXIgdG90YWxXcmFwcGVyID0gd3JhcHBlcnNUZW1wbGF0ZXMuc2hpZnQoKTtcblx0ICAgICAgICB3cmFwcGVyc1RlbXBsYXRlcy5mb3JFYWNoKGZ1bmN0aW9uICh3cmFwcGVyVGVtcGxhdGUpIHtcblx0ICAgICAgICAgIHRvdGFsV3JhcHBlciA9IGRvVHJhbnNjbHVzaW9uKHRvdGFsV3JhcHBlciwgd3JhcHBlclRlbXBsYXRlKTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgICByZXR1cm4gZG9UcmFuc2NsdXNpb24odG90YWxXcmFwcGVyLCB0ZW1wbGF0ZSk7XG5cdCAgICAgIH0pO1xuXHQgICAgfTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBkb1RyYW5zY2x1c2lvbih3cmFwcGVyLCB0ZW1wbGF0ZSkge1xuXHQgICAgdmFyIHN1cGVyV3JhcHBlciA9IGFuZ3VsYXIuZWxlbWVudChcIjxhPjwvYT5cIik7IC8vIHRoaXMgYWxsb3dzIHBlb3BsZSBub3QgaGF2ZSB0byBoYXZlIGEgc2luZ2xlIHJvb3QgaW4gd3JhcHBlcnNcblx0ICAgIHN1cGVyV3JhcHBlci5hcHBlbmQod3JhcHBlcik7XG5cdCAgICB2YXIgdHJhbnNjbHVkZUVsID0gc3VwZXJXcmFwcGVyLmZpbmQoXCJmb3JtbHktdHJhbnNjbHVkZVwiKTtcblx0ICAgIGlmICghdHJhbnNjbHVkZUVsLmxlbmd0aCkge1xuXHQgICAgICAvL3RyeSBpdCB1c2luZyBvdXIgY3VzdG9tIGZpbmQgZnVuY3Rpb25cblx0ICAgICAgdHJhbnNjbHVkZUVsID0gZm9ybWx5VXRpbC5maW5kQnlOb2RlTmFtZShzdXBlcldyYXBwZXIsIFwiZm9ybWx5LXRyYW5zY2x1ZGVcIik7XG5cdCAgICB9XG5cdCAgICB0cmFuc2NsdWRlRWwucmVwbGFjZVdpdGgodGVtcGxhdGUpO1xuXHQgICAgcmV0dXJuIHN1cGVyV3JhcHBlci5odG1sKCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0V3JhcHBlck9wdGlvbihvcHRpb25zKSB7XG5cdCAgICB2YXIgd3JhcHBlciA9IG9wdGlvbnMud3JhcHBlcjtcblx0ICAgIC8vIGV4cGxpY2l0IG51bGwgbWVhbnMgbm8gd3JhcHBlclxuXHQgICAgaWYgKHdyYXBwZXIgPT09IG51bGwpIHtcblx0ICAgICAgcmV0dXJuIFtdO1xuXHQgICAgfVxuXG5cdCAgICAvLyBub3RoaW5nIHNwZWNpZmllZCBtZWFucyB1c2UgdGhlIGRlZmF1bHQgd3JhcHBlciBmb3IgdGhlIHR5cGVcblx0ICAgIGlmICghd3JhcHBlcikge1xuXHQgICAgICAvLyBnZXQgYWxsIHdyYXBwZXJzIHRoYXQgc3BlY2lmeSB0aGV5IGFwcGx5IHRvIHRoaXMgdHlwZVxuXHQgICAgICB3cmFwcGVyID0gYXJyYXlpZnkoZm9ybWx5Q29uZmlnLmdldFdyYXBwZXJCeVR5cGUob3B0aW9ucy50eXBlKSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB3cmFwcGVyID0gYXJyYXlpZnkod3JhcHBlcikubWFwKGZvcm1seUNvbmZpZy5nZXRXcmFwcGVyKTtcblx0ICAgIH1cblxuXHQgICAgLy8gZ2V0IGFsbCB3cmFwcGVycyBmb3IgdGhhdCB0aGlzIHR5cGUgc3BlY2lmaWVkIHRoYXQgaXQgdXNlcy5cblx0ICAgIHZhciB0eXBlID0gZm9ybWx5Q29uZmlnLmdldFR5cGUob3B0aW9ucy50eXBlLCB0cnVlLCBvcHRpb25zKTtcblx0ICAgIGlmICh0eXBlICYmIHR5cGUud3JhcHBlcikge1xuXHQgICAgICB2YXIgdHlwZVdyYXBwZXJzID0gYXJyYXlpZnkodHlwZS53cmFwcGVyKS5tYXAoZm9ybWx5Q29uZmlnLmdldFdyYXBwZXIpO1xuXHQgICAgICB3cmFwcGVyID0gd3JhcHBlci5jb25jYXQodHlwZVdyYXBwZXJzKTtcblx0ICAgIH1cblxuXHQgICAgLy8gYWRkIHRoZSBkZWZhdWx0IHdyYXBwZXIgbGFzdFxuXHQgICAgdmFyIGRlZmF1bHRXcmFwcGVyID0gZm9ybWx5Q29uZmlnLmdldFdyYXBwZXIoKTtcblx0ICAgIGlmIChkZWZhdWx0V3JhcHBlcikge1xuXHQgICAgICB3cmFwcGVyLnB1c2goZGVmYXVsdFdyYXBwZXIpO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIHdyYXBwZXI7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gY2hlY2tBcGkob3B0aW9ucykge1xuXHQgICAgZm9ybWx5QXBpQ2hlY2tbXCJ0aHJvd1wiXShmb3JtbHlBcGlDaGVjay5mb3JtbHlGaWVsZE9wdGlvbnMsIG9wdGlvbnMsIHtcblx0ICAgICAgcHJlZml4OiBcImZvcm1seS1maWVsZCBkaXJlY3RpdmVcIixcblx0ICAgICAgdXJsOiBcImZvcm1seS1maWVsZC1kaXJlY3RpdmUtdmFsaWRhdGlvbi1mYWlsZWRcIlxuXHQgICAgfSk7XG5cdCAgICAvLyB2YWxpZGF0ZSB3aXRoIHRoZSB0eXBlXG5cdCAgICB2YXIgdHlwZSA9IG9wdGlvbnMudHlwZSAmJiBmb3JtbHlDb25maWcuZ2V0VHlwZShvcHRpb25zLnR5cGUpO1xuXHQgICAgaWYgKHR5cGUpIHtcblx0ICAgICAgaWYgKHR5cGUudmFsaWRhdGVPcHRpb25zKSB7XG5cdCAgICAgICAgdHlwZS52YWxpZGF0ZU9wdGlvbnMob3B0aW9ucyk7XG5cdCAgICAgIH1cblx0ICAgICAgcnVuQXBpQ2hlY2sodHlwZSwgb3B0aW9ucyk7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gY2hlY2tGaWVsZEdyb3VwQXBpKG9wdGlvbnMpIHtcblx0ICAgIGZvcm1seUFwaUNoZWNrW1widGhyb3dcIl0oZm9ybWx5QXBpQ2hlY2suZmllbGRHcm91cCwgb3B0aW9ucywge1xuXHQgICAgICBwcmVmaXg6IFwiZm9ybWx5LWZpZWxkIGRpcmVjdGl2ZVwiLFxuXHQgICAgICB1cmw6IFwiZm9ybWx5LWZpZWxkLWRpcmVjdGl2ZS12YWxpZGF0aW9uLWZhaWxlZFwiXG5cdCAgICB9KTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBydW5BcGlDaGVjayhfcmVmLCBvcHRpb25zKSB7XG5cdCAgICB2YXIgYXBpQ2hlY2sgPSBfcmVmLmFwaUNoZWNrO1xuXHQgICAgdmFyIGFwaUNoZWNrSW5zdGFuY2UgPSBfcmVmLmFwaUNoZWNrSW5zdGFuY2U7XG5cdCAgICB2YXIgYXBpQ2hlY2tGdW5jdGlvbiA9IF9yZWYuYXBpQ2hlY2tGdW5jdGlvbjtcblx0ICAgIHZhciBhcGlDaGVja09wdGlvbnMgPSBfcmVmLmFwaUNoZWNrT3B0aW9ucztcblxuXHQgICAgaWYgKCFhcGlDaGVjaykge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICB2YXIgaW5zdGFuY2UgPSBhcGlDaGVja0luc3RhbmNlIHx8IGZvcm1seUFwaUNoZWNrO1xuXHQgICAgdmFyIGZuID0gYXBpQ2hlY2tGdW5jdGlvbiB8fCBcIndhcm5cIjtcblx0ICAgIHZhciBzaGFwZSA9IGluc3RhbmNlLnNoYXBlKGFwaUNoZWNrKTtcblx0ICAgIGluc3RhbmNlW2ZuXShzaGFwZSwgb3B0aW9ucywgYXBpQ2hlY2tPcHRpb25zIHx8IHtcblx0ICAgICAgcHJlZml4OiBcImZvcm1seS1maWVsZCBcIiArIG5hbWUsXG5cdCAgICAgIHVybDogZm9ybWx5QXBpQ2hlY2suY29uZmlnLm91dHB1dC5kb2NzQmFzZVVybCArIFwiZm9ybWx5LWZpZWxkLXR5cGUtYXBpY2hlY2stZmFpbGVkXCJcblx0ICAgIH0pO1xuXHQgIH1cblx0fVxuXHRmb3JtbHlGaWVsZC4kaW5qZWN0ID0gW1wiJGh0dHBcIiwgXCIkcVwiLCBcIiRjb21waWxlXCIsIFwiJHRlbXBsYXRlQ2FjaGVcIiwgXCJmb3JtbHlDb25maWdcIiwgXCJmb3JtbHlWYWxpZGF0aW9uTWVzc2FnZXNcIiwgXCJmb3JtbHlBcGlDaGVja1wiLCBcImZvcm1seVV0aWxcIiwgXCJmb3JtbHlVc2FiaWxpdHlcIiwgXCJmb3JtbHlXYXJuXCJdO1xuXG4vKioqLyB9LFxuLyogMTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5Rm9jdXM7XG5cblx0Ly8gQG5nSW5qZWN0XG5cdGZ1bmN0aW9uIGZvcm1seUZvY3VzKCR0aW1lb3V0LCAkZG9jdW1lbnQpIHtcblx0ICAvKiBqc2hpbnQgLVcwNTIgKi9cblx0ICByZXR1cm4ge1xuXHQgICAgcmVzdHJpY3Q6IFwiQVwiLFxuXHQgICAgbGluazogZnVuY3Rpb24gZm9ybWx5Rm9jdXNMaW5rKHNjb3BlLCBlbGVtZW50LCBhdHRycykge1xuXHQgICAgICB2YXIgcHJldmlvdXNFbCA9IG51bGw7XG5cdCAgICAgIHZhciBlbCA9IGVsZW1lbnRbMF07XG5cdCAgICAgIHZhciBkb2MgPSAkZG9jdW1lbnRbMF07XG5cdCAgICAgIGF0dHJzLiRvYnNlcnZlKFwiZm9ybWx5Rm9jdXNcIiwgZnVuY3Rpb24gcmVzcG9uZFRvRm9jdXNFeHByZXNzaW9uQ2hhbmdlKHZhbHVlKSB7XG5cdCAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuXHQgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24gc2V0RWxlbWVudEZvY3VzKCkge1xuXHQgICAgICAgICAgICBwcmV2aW91c0VsID0gZG9jLmFjdGl2ZUVsZW1lbnQ7XG5cdCAgICAgICAgICAgIGVsLmZvY3VzKCk7XG5cdCAgICAgICAgICB9LCB+IH5hdHRycy5mb2N1c1dhaXQpO1xuXHQgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IFwiZmFsc2VcIikge1xuXHQgICAgICAgICAgaWYgKGRvYy5hY3RpdmVFbGVtZW50ID09PSBlbCkge1xuXHQgICAgICAgICAgICBlbC5ibHVyKCk7XG5cdCAgICAgICAgICAgIGlmIChhdHRycy5oYXNPd25Qcm9wZXJ0eShcInJlZm9jdXNcIikgJiYgcHJldmlvdXNFbCkge1xuXHQgICAgICAgICAgICAgIHByZXZpb3VzRWwuZm9jdXMoKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfSk7XG5cdCAgICB9XG5cdCAgfTtcblx0fVxuXHRmb3JtbHlGb2N1cy4kaW5qZWN0ID0gW1wiJHRpbWVvdXRcIiwgXCIkZG9jdW1lbnRcIl07XG5cbi8qKiovIH0sXG4vKiAxMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIF90b0NvbnN1bWFibGVBcnJheSA9IGZ1bmN0aW9uIChhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgeyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfSBlbHNlIHsgcmV0dXJuIEFycmF5LmZyb20oYXJyKTsgfSB9O1xuXG5cdHZhciBfc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5Rm9ybTtcblxuXHQvKipcblx0ICogQG5nZG9jIGRpcmVjdGl2ZVxuXHQgKiBAbmFtZSBmb3JtbHlGb3JtXG5cdCAqIEByZXN0cmljdCBFXG5cdCAqL1xuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5Rm9ybShmb3JtbHlVc2FiaWxpdHksICRwYXJzZSwgZm9ybWx5QXBpQ2hlY2ssIGZvcm1seUNvbmZpZykge1xuXHQgIHZhciBjdXJyZW50Rm9ybUlkID0gMTtcblx0ICByZXR1cm4ge1xuXHQgICAgcmVzdHJpY3Q6IFwiRVwiLFxuXHQgICAgdGVtcGxhdGU6IGZ1bmN0aW9uIGZvcm1seUZvcm1HZXRUZW1wbGF0ZShlbCwgYXR0cnMpIHtcblx0ICAgICAgLyoganNoaW50IC1XMDMzICovIC8vIHRoaXMgYmVjYXVzZSBqc2hpbnQgaXMgYnJva2VuIEkgZ3Vlc3MuLi5cblx0ICAgICAgdmFyIHJvb3RFbCA9IGdldFJvb3RFbCgpO1xuXHQgICAgICB2YXIgZmllbGRSb290RWwgPSBnZXRGaWVsZFJvb3RFbCgpO1xuXHQgICAgICB2YXIgZm9ybUlkID0gXCJmb3JtbHlfXCIgKyBjdXJyZW50Rm9ybUlkKys7XG5cdCAgICAgIHZhciBwYXJlbnRGb3JtQXR0cmlidXRlcyA9IFwiXCI7XG5cdCAgICAgIGlmIChhdHRycy5oYXNPd25Qcm9wZXJ0eShcImlzRmllbGRHcm91cFwiKSAmJiBlbC5wYXJlbnQoKS5wYXJlbnQoKS5oYXNDbGFzcyhcImZvcm1seVwiKSkge1xuXHQgICAgICAgIHBhcmVudEZvcm1BdHRyaWJ1dGVzID0gY29weUF0dHJpYnV0ZXMoZWwucGFyZW50KCkucGFyZW50KClbMF0uYXR0cmlidXRlcyk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIFwiXFxuICAgICAgICA8XCIgKyByb290RWwgKyBcIiBjbGFzcz1cXFwiZm9ybWx5XFxcIlxcbiAgICAgICAgICAgICAgICAgbmFtZT1cXFwiXCIgKyBnZXRGb3JtTmFtZSgpICsgXCJcXFwiXFxuICAgICAgICAgICAgICAgICByb2xlPVxcXCJmb3JtXFxcIiBcIiArIHBhcmVudEZvcm1BdHRyaWJ1dGVzICsgXCI+XFxuICAgICAgICAgIDxcIiArIGZpZWxkUm9vdEVsICsgXCIgZm9ybWx5LWZpZWxkXFxuICAgICAgICAgICAgICAgbmctcmVwZWF0PVxcXCJmaWVsZCBpbiBmaWVsZHMgXCIgKyBnZXRUcmFja0J5KCkgKyBcIlxcXCJcXG4gICAgICAgICAgICAgICBcIiArIGdldEhpZGVEaXJlY3RpdmUoKSArIFwiPVxcXCIhZmllbGQuaGlkZVxcXCJcXG4gICAgICAgICAgICAgICBjbGFzcz1cXFwiZm9ybWx5LWZpZWxkXFxcIlxcbiAgICAgICAgICAgICAgIG9wdGlvbnM9XFxcImZpZWxkXFxcIlxcbiAgICAgICAgICAgICAgIG1vZGVsPVxcXCJmaWVsZC5tb2RlbCB8fCBtb2RlbFxcXCJcXG4gICAgICAgICAgICAgICBmaWVsZHM9XFxcImZpZWxkc1xcXCJcXG4gICAgICAgICAgICAgICBmb3JtPVxcXCJ0aGVGb3JtbHlGb3JtXFxcIlxcbiAgICAgICAgICAgICAgIGZvcm0taWQ9XFxcIlwiICsgZ2V0Rm9ybU5hbWUoKSArIFwiXFxcIlxcbiAgICAgICAgICAgICAgIGZvcm0tc3RhdGU9XFxcIm9wdGlvbnMuZm9ybVN0YXRlXFxcIlxcbiAgICAgICAgICAgICAgIGluZGV4PVxcXCIkaW5kZXhcXFwiPlxcbiAgICAgICAgICA8L1wiICsgZmllbGRSb290RWwgKyBcIj5cXG4gICAgICAgICAgPGRpdiBuZy10cmFuc2NsdWRlPjwvZGl2PlxcbiAgICAgICAgPC9cIiArIHJvb3RFbCArIFwiPlxcbiAgICAgIFwiO1xuXG5cdCAgICAgIGZ1bmN0aW9uIGdldFJvb3RFbCgpIHtcblx0ICAgICAgICByZXR1cm4gYXR0cnMucm9vdEVsIHx8IFwibmctZm9ybVwiO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gZ2V0RmllbGRSb290RWwoKSB7XG5cdCAgICAgICAgcmV0dXJuIGF0dHJzLmZpZWxkUm9vdEVsIHx8IFwiZGl2XCI7XG5cdCAgICAgIH1cblxuXHQgICAgICBmdW5jdGlvbiBnZXRIaWRlRGlyZWN0aXZlKCkge1xuXHQgICAgICAgIHJldHVybiBhdHRycy5oaWRlRGlyZWN0aXZlIHx8IGZvcm1seUNvbmZpZy5leHRyYXMuZGVmYXVsdEhpZGVEaXJlY3RpdmUgfHwgXCJuZy1pZlwiO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gZ2V0VHJhY2tCeSgpIHtcblx0ICAgICAgICBpZiAoIWF0dHJzLnRyYWNrQnkpIHtcblx0ICAgICAgICAgIHJldHVybiBcIlwiO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICByZXR1cm4gXCJ0cmFjayBieSBcIiArIGF0dHJzLnRyYWNrQnk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gZ2V0Rm9ybU5hbWUoKSB7XG5cdCAgICAgICAgdmFyIGZvcm1OYW1lID0gZm9ybUlkO1xuXHQgICAgICAgIHZhciBiaW5kTmFtZSA9IGF0dHJzLmJpbmROYW1lO1xuXHQgICAgICAgIGlmIChiaW5kTmFtZSkge1xuXHQgICAgICAgICAgaWYgKGFuZ3VsYXIudmVyc2lvbi5taW5vciA8IDMpIHtcblx0ICAgICAgICAgICAgdGhyb3cgZm9ybWx5VXNhYmlsaXR5LmdldEZvcm1seUVycm9yKFwiYmluZC1uYW1lIGF0dHJpYnV0ZSBvbiBmb3JtbHktZm9ybSBub3QgYWxsb3dlZCBpbiA+IGFuZ3VsYXIgMS4zXCIpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgLy8gd2UgY2FuIGRvIGEgb25lLXRpbWUgYmluZGluZyBoZXJlIGJlY2F1c2Ugd2Uga25vdyB3ZSdyZSBpbiAxLjMueCB0ZXJyaXRvcnlcblx0ICAgICAgICAgIGZvcm1OYW1lID0gXCJ7ezo6J2Zvcm1seV8nICsgXCIgKyBiaW5kTmFtZSArIFwifX1cIjtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGZvcm1OYW1lO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gY29weUF0dHJpYnV0ZXMoYXR0cmlidXRlcykge1xuXHQgICAgICAgIHZhciBleGNsdWRlZCA9IFtcIm1vZGVsXCIsIFwiZm9ybVwiLCBcImZpZWxkc1wiLCBcIm9wdGlvbnNcIiwgXCJuYW1lXCIsIFwicm9sZVwiLCBcImNsYXNzXCJdO1xuXHQgICAgICAgIHZhciBhcnJheUF0dHJzID0gW107XG5cdCAgICAgICAgYW5ndWxhci5mb3JFYWNoKGF0dHJpYnV0ZXMsIGZ1bmN0aW9uIChfcmVmKSB7XG5cdCAgICAgICAgICB2YXIgbm9kZU5hbWUgPSBfcmVmLm5vZGVOYW1lO1xuXHQgICAgICAgICAgdmFyIG5vZGVWYWx1ZSA9IF9yZWYubm9kZVZhbHVlO1xuXG5cdCAgICAgICAgICBpZiAobm9kZU5hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgZXhjbHVkZWQuaW5kZXhPZihub2RlTmFtZSkgPT09IC0xKSB7XG5cdCAgICAgICAgICAgIGFycmF5QXR0cnMucHVzaChcIlwiICsgdG9LZWJhYkNhc2Uobm9kZU5hbWUpICsgXCI9XFxcIlwiICsgbm9kZVZhbHVlICsgXCJcXFwiXCIpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXHQgICAgICAgIHJldHVybiBhcnJheUF0dHJzLmpvaW4oXCIgXCIpO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gdG9LZWJhYkNhc2Uoc3RyaW5nKSB7XG5cdCAgICAgICAgaWYgKHN0cmluZykge1xuXHQgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8oW0EtWl0pL2csIGZ1bmN0aW9uICgkMSkge1xuXHQgICAgICAgICAgICByZXR1cm4gXCItXCIgKyAkMS50b0xvd2VyQ2FzZSgpO1xuXHQgICAgICAgICAgfSk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHJldHVybiBcIlwiO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSxcblx0ICAgIHJlcGxhY2U6IHRydWUsXG5cdCAgICB0cmFuc2NsdWRlOiB0cnVlLFxuXHQgICAgc2NvcGU6IHtcblx0ICAgICAgZmllbGRzOiBcIj1cIixcblx0ICAgICAgbW9kZWw6IFwiPVwiLFxuXHQgICAgICBmb3JtOiBcIj0/XCIsXG5cdCAgICAgIG9wdGlvbnM6IFwiPT9cIlxuXHQgICAgfSxcblx0ICAgIGNvbnRyb2xsZXI6IC8qIEBuZ0luamVjdCAqL1tcIiRzY29wZVwiLCBcImZvcm1seVV0aWxcIiwgZnVuY3Rpb24gRm9ybWx5Rm9ybUNvbnRyb2xsZXIoJHNjb3BlLCBmb3JtbHlVdGlsKSB7XG5cdCAgICAgIHNldHVwT3B0aW9ucygpO1xuXHQgICAgICAkc2NvcGUubW9kZWwgPSAkc2NvcGUubW9kZWwgfHwge307XG5cdCAgICAgICRzY29wZS5maWVsZHMgPSAkc2NvcGUuZmllbGRzIHx8IFtdO1xuXG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBpbml0TW9kZWwpOyAvLyBpbml0aWFsaXplcyB0aGUgbW9kZWwgcHJvcGVydHkgaWYgc2V0IHRvICdmb3JtU3RhdGUnXG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBhdHRhY2hLZXkpOyAvLyBhdHRhY2hlcyBhIGtleSBiYXNlZCBvbiB0aGUgaW5kZXggaWYgYSBrZXkgaXNuJ3Qgc3BlY2lmaWVkXG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBzZXR1cFdhdGNoZXJzKTsgLy8gc2V0dXAgd2F0Y2hlcnMgZm9yIGFsbCBmaWVsZHNcblxuXHQgICAgICAvLyB3YXRjaCB0aGUgbW9kZWwgYW5kIGV2YWx1YXRlIHdhdGNoIGV4cHJlc3Npb25zIHRoYXQgZGVwZW5kIG9uIGl0LlxuXHQgICAgICAkc2NvcGUuJHdhdGNoKFwibW9kZWxcIiwgb25Nb2RlbE9yRm9ybVN0YXRlQ2hhbmdlLCB0cnVlKTtcblx0ICAgICAgaWYgKCRzY29wZS5vcHRpb25zLmZvcm1TdGF0ZSkge1xuXHQgICAgICAgICRzY29wZS4kd2F0Y2goXCJvcHRpb25zLmZvcm1TdGF0ZVwiLCBvbk1vZGVsT3JGb3JtU3RhdGVDaGFuZ2UsIHRydWUpO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gb25Nb2RlbE9yRm9ybVN0YXRlQ2hhbmdlKCkge1xuXHQgICAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBmdW5jdGlvbiBydW5GaWVsZEV4cHJlc3Npb25Qcm9wZXJ0aWVzKGZpZWxkLCBpbmRleCkge1xuXHQgICAgICAgICAgLypqc2hpbnQgLVcwMzAgKi9cblx0ICAgICAgICAgIHZhciBtb2RlbCA9IGZpZWxkLm1vZGVsIHx8ICRzY29wZS5tb2RlbDtcblx0ICAgICAgICAgIGZpZWxkLnJ1bkV4cHJlc3Npb25zICYmIGZpZWxkLnJ1bkV4cHJlc3Npb25zKG1vZGVsKTtcblx0ICAgICAgICAgIGlmIChmaWVsZC5oaWRlRXhwcmVzc2lvbikge1xuXHQgICAgICAgICAgICAvLyBjYW4ndCB1c2UgaGlkZSB3aXRoIGV4cHJlc3Npb25Qcm9wZXJ0aWVzIHJlbGlhYmx5XG5cdCAgICAgICAgICAgIHZhciB2YWwgPSBtb2RlbFtmaWVsZC5rZXldO1xuXHQgICAgICAgICAgICAvLyB0aGlzIG1ha2VzIGl0IGNsb3NlciB0byB3aGF0IGEgcmVndWxhciBleHByZXNzaW9uUHJvcGVydHkgd291bGQgYmVcblx0ICAgICAgICAgICAgdmFyIGV4dHJhTG9jYWxzID0ge1xuXHQgICAgICAgICAgICAgIG9wdGlvbnM6IGZpZWxkLFxuXHQgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcblx0ICAgICAgICAgICAgICBmb3JtU3RhdGU6ICRzY29wZS5vcHRpb25zLmZvcm1TdGF0ZSxcblx0ICAgICAgICAgICAgICBmb3JtSWQ6ICRzY29wZS5mb3JtSWRcblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgZmllbGQuaGlkZSA9IGZvcm1seVV0aWwuZm9ybWx5RXZhbCgkc2NvcGUsIGZpZWxkLmhpZGVFeHByZXNzaW9uLCB2YWwsIHZhbCwgZXh0cmFMb2NhbHMpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gc2V0dXBPcHRpb25zKCkge1xuXHQgICAgICAgIGZvcm1seUFwaUNoZWNrW1widGhyb3dcIl0oW2Zvcm1seUFwaUNoZWNrLmZvcm1PcHRpb25zQXBpLm9wdGlvbmFsXSwgWyRzY29wZS5vcHRpb25zXSwgeyBwcmVmaXg6IFwiZm9ybWx5LWZvcm0gb3B0aW9ucyBjaGVja1wiIH0pO1xuXHQgICAgICAgICRzY29wZS5vcHRpb25zID0gJHNjb3BlLm9wdGlvbnMgfHwge307XG5cdCAgICAgICAgJHNjb3BlLm9wdGlvbnMuZm9ybVN0YXRlID0gJHNjb3BlLm9wdGlvbnMuZm9ybVN0YXRlIHx8IHt9O1xuXG5cdCAgICAgICAgYW5ndWxhci5leHRlbmQoJHNjb3BlLm9wdGlvbnMsIHtcblx0ICAgICAgICAgIHVwZGF0ZUluaXRpYWxWYWx1ZTogdXBkYXRlSW5pdGlhbFZhbHVlLFxuXHQgICAgICAgICAgcmVzZXRNb2RlbDogcmVzZXRNb2RlbFxuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gdXBkYXRlSW5pdGlhbFZhbHVlKCkge1xuXHQgICAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBmdW5jdGlvbiAoZmllbGQpIHtcblx0ICAgICAgICAgIGlmIChpc0ZpZWxkR3JvdXAoZmllbGQpKSB7XG5cdCAgICAgICAgICAgIGZpZWxkLm9wdGlvbnMudXBkYXRlSW5pdGlhbFZhbHVlKCk7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBmaWVsZC51cGRhdGVJbml0aWFsVmFsdWUoKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIHJlc2V0TW9kZWwoKSB7XG5cdCAgICAgICAgYW5ndWxhci5mb3JFYWNoKCRzY29wZS5maWVsZHMsIGZ1bmN0aW9uIChmaWVsZCkge1xuXHQgICAgICAgICAgaWYgKGlzRmllbGRHcm91cChmaWVsZCkpIHtcblx0ICAgICAgICAgICAgZmllbGQub3B0aW9ucy5yZXNldE1vZGVsKCk7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBmaWVsZC5yZXNldE1vZGVsKCk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSk7XG5cdCAgICAgIH1cblxuXHQgICAgICBmdW5jdGlvbiBpbml0TW9kZWwoZmllbGQpIHtcblx0ICAgICAgICBpZiAoZmllbGQubW9kZWwgJiYgZmllbGQubW9kZWwgPT09IFwiZm9ybVN0YXRlXCIpIHtcblx0ICAgICAgICAgIGZpZWxkLm1vZGVsID0gJHNjb3BlLm9wdGlvbnMuZm9ybVN0YXRlO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIGF0dGFjaEtleShmaWVsZCwgaW5kZXgpIHtcblx0ICAgICAgICBpZiAoIWlzRmllbGRHcm91cChmaWVsZCkpIHtcblx0ICAgICAgICAgIGZpZWxkLmtleSA9IGZpZWxkLmtleSB8fCBpbmRleCB8fCAwO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIHNldHVwV2F0Y2hlcnMoZmllbGQsIGluZGV4KSB7XG5cdCAgICAgICAgaWYgKGlzRmllbGRHcm91cChmaWVsZCkgfHwgIWFuZ3VsYXIuaXNEZWZpbmVkKGZpZWxkLndhdGNoZXIpKSB7XG5cdCAgICAgICAgICByZXR1cm47XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciB3YXRjaGVycyA9IGZpZWxkLndhdGNoZXI7XG5cdCAgICAgICAgaWYgKCFhbmd1bGFyLmlzQXJyYXkod2F0Y2hlcnMpKSB7XG5cdCAgICAgICAgICB3YXRjaGVycyA9IFt3YXRjaGVyc107XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGFuZ3VsYXIuZm9yRWFjaCh3YXRjaGVycywgZnVuY3Rpb24gc2V0dXBXYXRjaGVyKHdhdGNoZXIpIHtcblx0ICAgICAgICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQod2F0Y2hlci5saXN0ZW5lcikpIHtcblx0ICAgICAgICAgICAgdGhyb3cgZm9ybWx5VXNhYmlsaXR5LmdldEZpZWxkRXJyb3IoXCJhbGwtZmllbGQtd2F0Y2hlcnMtbXVzdC1oYXZlLWEtbGlzdGVuZXJcIiwgXCJBbGwgZmllbGQgd2F0Y2hlcnMgbXVzdCBoYXZlIGEgbGlzdGVuZXJcIiwgZmllbGQpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgdmFyIHdhdGNoRXhwcmVzc2lvbiA9IGdldFdhdGNoRXhwcmVzc2lvbih3YXRjaGVyLCBmaWVsZCwgaW5kZXgpO1xuXHQgICAgICAgICAgdmFyIHdhdGNoTGlzdGVuZXIgPSBnZXRXYXRjaExpc3RlbmVyKHdhdGNoZXIsIGZpZWxkLCBpbmRleCk7XG5cblx0ICAgICAgICAgIHZhciB0eXBlID0gd2F0Y2hlci50eXBlIHx8IFwiJHdhdGNoXCI7XG5cdCAgICAgICAgICB3YXRjaGVyLnN0b3BXYXRjaGluZyA9ICRzY29wZVt0eXBlXSh3YXRjaEV4cHJlc3Npb24sIHdhdGNoTGlzdGVuZXIsIHdhdGNoZXIud2F0Y2hEZWVwKTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIGdldFdhdGNoRXhwcmVzc2lvbih3YXRjaGVyLCBmaWVsZCwgaW5kZXgpIHtcblx0ICAgICAgICB2YXIgd2F0Y2hFeHByZXNzaW9uID0gd2F0Y2hlci5leHByZXNzaW9uIHx8IFwibW9kZWxbJ1wiICsgZmllbGQua2V5ICsgXCInXVwiO1xuXHQgICAgICAgIGlmIChhbmd1bGFyLmlzRnVuY3Rpb24od2F0Y2hFeHByZXNzaW9uKSkge1xuXHQgICAgICAgICAgLy8gd3JhcCB0aGUgZmllbGQncyB3YXRjaCBleHByZXNzaW9uIHNvIHdlIGNhbiBjYWxsIGl0IHdpdGggdGhlIGZpZWxkIGFzIHRoZSBmaXJzdCBhcmdcblx0ICAgICAgICAgIC8vIGFuZCB0aGUgc3RvcCBmdW5jdGlvbiBhcyB0aGUgbGFzdCBhcmcgYXMgYSBoZWxwZXJcblx0ICAgICAgICAgIHZhciBvcmlnaW5hbEV4cHJlc3Npb24gPSB3YXRjaEV4cHJlc3Npb247XG5cdCAgICAgICAgICB3YXRjaEV4cHJlc3Npb24gPSBmdW5jdGlvbiBmb3JtbHlXYXRjaEV4cHJlc3Npb24oKSB7XG5cdCAgICAgICAgICAgIHZhciBhcmdzID0gbW9kaWZ5QXJncy5hcHBseSh1bmRlZmluZWQsIFt3YXRjaGVyLCBpbmRleF0uY29uY2F0KF9zbGljZS5jYWxsKGFyZ3VtZW50cykpKTtcblx0ICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsRXhwcmVzc2lvbi5hcHBseSh1bmRlZmluZWQsIF90b0NvbnN1bWFibGVBcnJheShhcmdzKSk7XG5cdCAgICAgICAgICB9O1xuXHQgICAgICAgICAgd2F0Y2hFeHByZXNzaW9uLmRpc3BsYXlOYW1lID0gXCJGb3JtbHkgV2F0Y2ggRXhwcmVzc2lvbiBmb3IgZmllbGQgZm9yIFwiICsgZmllbGQua2V5O1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gd2F0Y2hFeHByZXNzaW9uO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gZ2V0V2F0Y2hMaXN0ZW5lcih3YXRjaGVyLCBmaWVsZCwgaW5kZXgpIHtcblx0ICAgICAgICB2YXIgd2F0Y2hMaXN0ZW5lciA9IHdhdGNoZXIubGlzdGVuZXI7XG5cdCAgICAgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbih3YXRjaExpc3RlbmVyKSkge1xuXHQgICAgICAgICAgLy8gd3JhcCB0aGUgZmllbGQncyB3YXRjaCBsaXN0ZW5lciBzbyB3ZSBjYW4gY2FsbCBpdCB3aXRoIHRoZSBmaWVsZCBhcyB0aGUgZmlyc3QgYXJnXG5cdCAgICAgICAgICAvLyBhbmQgdGhlIHN0b3AgZnVuY3Rpb24gYXMgdGhlIGxhc3QgYXJnIGFzIGEgaGVscGVyXG5cdCAgICAgICAgICB2YXIgb3JpZ2luYWxMaXN0ZW5lciA9IHdhdGNoTGlzdGVuZXI7XG5cdCAgICAgICAgICB3YXRjaExpc3RlbmVyID0gZnVuY3Rpb24gZm9ybWx5V2F0Y2hMaXN0ZW5lcigpIHtcblx0ICAgICAgICAgICAgdmFyIGFyZ3MgPSBtb2RpZnlBcmdzLmFwcGx5KHVuZGVmaW5lZCwgW3dhdGNoZXIsIGluZGV4XS5jb25jYXQoX3NsaWNlLmNhbGwoYXJndW1lbnRzKSkpO1xuXHQgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxMaXN0ZW5lci5hcHBseSh1bmRlZmluZWQsIF90b0NvbnN1bWFibGVBcnJheShhcmdzKSk7XG5cdCAgICAgICAgICB9O1xuXHQgICAgICAgICAgd2F0Y2hMaXN0ZW5lci5kaXNwbGF5TmFtZSA9IFwiRm9ybWx5IFdhdGNoIExpc3RlbmVyIGZvciBmaWVsZCBmb3IgXCIgKyBmaWVsZC5rZXk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB3YXRjaExpc3RlbmVyO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gbW9kaWZ5QXJncyh3YXRjaGVyLCBpbmRleCkge1xuXHQgICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBvcmlnaW5hbEFyZ3MgPSBBcnJheShfbGVuID4gMiA/IF9sZW4gLSAyIDogMCksIF9rZXkgPSAyOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICAgICAgICBvcmlnaW5hbEFyZ3NbX2tleSAtIDJdID0gYXJndW1lbnRzW19rZXldO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBbJHNjb3BlLmZpZWxkc1tpbmRleF1dLmNvbmNhdChvcmlnaW5hbEFyZ3MsIFt3YXRjaGVyLnN0b3BXYXRjaGluZ10pO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gaXNGaWVsZEdyb3VwKGZpZWxkKSB7XG5cdCAgICAgICAgcmV0dXJuIGZpZWxkICYmICEhZmllbGQuZmllbGRHcm91cDtcblx0ICAgICAgfVxuXHQgICAgfV0sXG5cdCAgICBsaW5rOiBmdW5jdGlvbiBsaW5rKHNjb3BlLCBlbCwgYXR0cnMpIHtcblx0ICAgICAgdmFyIGZvcm1JZCA9IGF0dHJzLm5hbWU7XG5cdCAgICAgIHNjb3BlLmZvcm1JZCA9IGZvcm1JZDtcblx0ICAgICAgc2NvcGUudGhlRm9ybWx5Rm9ybSA9IHNjb3BlW2Zvcm1JZF07XG5cdCAgICAgIGlmIChhdHRycy5mb3JtKSB7XG5cdCAgICAgICAgJHBhcnNlKGF0dHJzLmZvcm0pLmFzc2lnbihzY29wZS4kcGFyZW50LCBzY29wZVtmb3JtSWRdKTtcblx0ICAgICAgfVxuXG5cdCAgICAgIC8vIGNocm9tZSBhdXRvY29tcGxldGUgbGFtZW5lc3Ncblx0ICAgICAgLy8gc2VlIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NjgxNTMjYzE0XG5cdCAgICAgIC8vIOGDmijgsqDnm4rgsqDhg5opICAgKOKVr8Kw4pahwrAp4pWv77i1IOKUu+KUgeKUuyAgICAo4pee4oC44pef77ybKVxuXHQgICAgICB2YXIgZ2xvYmFsID0gZm9ybWx5Q29uZmlnLmV4dHJhcy5yZW1vdmVDaHJvbWVBdXRvQ29tcGxldGUgPT09IHRydWU7XG5cdCAgICAgIHZhciBvZmZJbnN0YW5jZSA9IHNjb3BlLm9wdGlvbnMgJiYgc2NvcGUub3B0aW9ucy5yZW1vdmVDaHJvbWVBdXRvQ29tcGxldGUgPT09IGZhbHNlO1xuXHQgICAgICB2YXIgb25JbnN0YW5jZSA9IHNjb3BlLm9wdGlvbnMgJiYgc2NvcGUub3B0aW9ucy5yZW1vdmVDaHJvbWVBdXRvQ29tcGxldGUgPT09IHRydWU7XG5cdCAgICAgIGlmIChnbG9iYWwgJiYgIW9mZkluc3RhbmNlIHx8IG9uSW5zdGFuY2UpIHtcblx0ICAgICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG5cdCAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKFwiYXV0b2NvbXBsZXRlXCIsIFwiYWRkcmVzcy1sZXZlbDRcIik7XG5cdCAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKFwiaGlkZGVuXCIsIHRydWUpO1xuXHQgICAgICAgIGVsWzBdLmFwcGVuZENoaWxkKGlucHV0KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH07XG5cdH1cblx0Zm9ybWx5Rm9ybS4kaW5qZWN0ID0gW1wiZm9ybWx5VXNhYmlsaXR5XCIsIFwiJHBhcnNlXCIsIFwiZm9ybWx5QXBpQ2hlY2tcIiwgXCJmb3JtbHlDb25maWdcIl07XG5cbi8qKiovIH0sXG4vKiAxMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gYWRkRm9ybWx5TmdNb2RlbEF0dHJzTWFuaXB1bGF0b3I7XG5cblx0Ly8gQG5nSW5qZWN0XG5cdGZ1bmN0aW9uIGFkZEZvcm1seU5nTW9kZWxBdHRyc01hbmlwdWxhdG9yKGZvcm1seUNvbmZpZykge1xuXHQgIGlmIChmb3JtbHlDb25maWcuZXh0cmFzLmRpc2FibGVOZ01vZGVsQXR0cnNNYW5pcHVsYXRvcikge1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBmb3JtbHlDb25maWcudGVtcGxhdGVNYW5pcHVsYXRvcnMucHJlV3JhcHBlci5wdXNoKG5nTW9kZWxBdHRyc01hbmlwdWxhdG9yKTtcblxuXHQgIGZ1bmN0aW9uIG5nTW9kZWxBdHRyc01hbmlwdWxhdG9yKHRlbXBsYXRlLCBvcHRpb25zLCBzY29wZSkge1xuXHQgICAgLyoganNoaW50IG1heGNvbXBsZXhpdHk6NiAqL1xuXHQgICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0ICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXHQgICAgaWYgKGRhdGEuc2tpcE5nTW9kZWxBdHRyc01hbmlwdWxhdG9yID09PSB0cnVlKSB7XG5cdCAgICAgIHJldHVybiB0ZW1wbGF0ZTtcblx0ICAgIH1cblx0ICAgIGVsLmlubmVySFRNTCA9IHRlbXBsYXRlO1xuXHQgICAgdmFyIG1vZGVsTm9kZXMgPSBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiW25nLW1vZGVsXSwgW2RhdGEtbmctbW9kZWxdXCIpO1xuXHQgICAgaWYgKCFtb2RlbE5vZGVzIHx8ICFtb2RlbE5vZGVzLmxlbmd0aCkge1xuXHQgICAgICByZXR1cm4gdGVtcGxhdGU7XG5cdCAgICB9XG5cblx0ICAgIGFkZElmTm90UHJlc2VudChtb2RlbE5vZGVzLCBcImlkXCIsIHNjb3BlLmlkKTtcblx0ICAgIGFkZElmTm90UHJlc2VudChtb2RlbE5vZGVzLCBcIm5hbWVcIiwgc2NvcGUuaWQpO1xuXG5cdCAgICBhZGRWYWxpZGF0aW9uKCk7XG5cdCAgICBhZGRNb2RlbE9wdGlvbnMoKTtcblx0ICAgIGFkZFRlbXBsYXRlT3B0aW9uc0F0dHJzKCk7XG5cblx0ICAgIHJldHVybiBlbC5pbm5lckhUTUw7XG5cblx0ICAgIGZ1bmN0aW9uIGFkZFZhbGlkYXRpb24oKSB7XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChvcHRpb25zLnZhbGlkYXRvcnMpIHx8IGFuZ3VsYXIuaXNEZWZpbmVkKG9wdGlvbnMudmFsaWRhdGlvbi5tZXNzYWdlcykpIHtcblx0ICAgICAgICBhZGRJZk5vdFByZXNlbnQobW9kZWxOb2RlcywgXCJmb3JtbHktY3VzdG9tLXZhbGlkYXRpb25cIiwgXCJcIik7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gYWRkTW9kZWxPcHRpb25zKCkge1xuXHQgICAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQob3B0aW9ucy5tb2RlbE9wdGlvbnMpKSB7XG5cdCAgICAgICAgYWRkSWZOb3RQcmVzZW50KG1vZGVsTm9kZXMsIFwibmctbW9kZWwtb3B0aW9uc1wiLCBcIm9wdGlvbnMubW9kZWxPcHRpb25zXCIpO1xuXHQgICAgICAgIGlmIChvcHRpb25zLm1vZGVsT3B0aW9ucy5nZXR0ZXJTZXR0ZXIpIHtcblx0ICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChtb2RlbE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuXHQgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm5nLW1vZGVsXCIsIFwib3B0aW9ucy52YWx1ZVwiKTtcblx0ICAgICAgICAgIH0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBhZGRUZW1wbGF0ZU9wdGlvbnNBdHRycygpIHtcblx0ICAgICAgaWYgKCFvcHRpb25zLnRlbXBsYXRlT3B0aW9ucyAmJiAhb3B0aW9ucy5leHByZXNzaW9uUHJvcGVydGllcykge1xuXHQgICAgICAgIC8vIG5vIG5lZWQgdG8gcnVuIHRoZXNlIGlmIHRoZXJlIGFyZSBubyB0ZW1wbGF0ZU9wdGlvbnMgb3IgZXhwcmVzc2lvblByb3BlcnRpZXNcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHRvID0gb3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnMgfHwge307XG5cdCAgICAgIHZhciBlcCA9IG9wdGlvbnMuZXhwcmVzc2lvblByb3BlcnRpZXMgfHwge307XG5cblx0ICAgICAgdmFyIG5nTW9kZWxBdHRyaWJ1dGVzID0gZ2V0QnVpbHRJbkF0dHJpYnV0ZXMoKTtcblxuXHQgICAgICAvLyBleHRlbmQgd2l0aCB0aGUgdXNlcidzIHNwZWNpZmljYXRpb25zIHdpbm5pbmdcblx0ICAgICAgYW5ndWxhci5leHRlbmQobmdNb2RlbEF0dHJpYnV0ZXMsIG9wdGlvbnMubmdNb2RlbEF0dHJzKTtcblxuXHQgICAgICAvLyBGZWVsIGZyZWUgdG8gbWFrZSB0aGlzIG1vcmUgc2ltcGxlIDotKVxuXHQgICAgICBhbmd1bGFyLmZvckVhY2gobmdNb2RlbEF0dHJpYnV0ZXMsIGZ1bmN0aW9uICh2YWwsIG5hbWUpIHtcblx0ICAgICAgICAvKiBqc2hpbnQgbWF4Y29tcGxleGl0eToxNCAqL1xuXHQgICAgICAgIHZhciBhdHRyVmFsID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIHZhciBhdHRyTmFtZSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICB2YXIgcmVmID0gXCJvcHRpb25zLnRlbXBsYXRlT3B0aW9uc1snXCIgKyBuYW1lICsgXCInXVwiO1xuXHQgICAgICAgIHZhciB0b1ZhbCA9IHRvW25hbWVdO1xuXHQgICAgICAgIHZhciBlcFZhbCA9IGdldEVwVmFsdWUoZXAsIG5hbWUpO1xuXG5cdCAgICAgICAgdmFyIGluVG8gPSBhbmd1bGFyLmlzRGVmaW5lZCh0b1ZhbCk7XG5cdCAgICAgICAgdmFyIGluRXAgPSBhbmd1bGFyLmlzRGVmaW5lZChlcFZhbCk7XG5cdCAgICAgICAgaWYgKHZhbC52YWx1ZSkge1xuXHQgICAgICAgICAgLy8gSSByZWFsaXplIHRoaXMgbG9va3MgYmFja3dhcmRzLCBidXQgaXQncyByaWdodCwgdHJ1c3QgbWUuLi5cblx0ICAgICAgICAgIGF0dHJOYW1lID0gdmFsLnZhbHVlO1xuXHQgICAgICAgICAgYXR0clZhbCA9IG5hbWU7XG5cdCAgICAgICAgfSBlbHNlIGlmICh2YWwuZXhwcmVzc2lvbiAmJiBpblRvKSB7XG5cdCAgICAgICAgICBhdHRyTmFtZSA9IHZhbC5leHByZXNzaW9uO1xuXHQgICAgICAgICAgaWYgKGFuZ3VsYXIuaXNTdHJpbmcodG9bbmFtZV0pKSB7XG5cdCAgICAgICAgICAgIGF0dHJWYWwgPSBcIiRldmFsKFwiICsgcmVmICsgXCIpXCI7XG5cdCAgICAgICAgICB9IGVsc2UgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbih0b1tuYW1lXSkpIHtcblx0ICAgICAgICAgICAgYXR0clZhbCA9IFwiXCIgKyByZWYgKyBcIihtb2RlbFtvcHRpb25zLmtleV0sIG9wdGlvbnMsIHRoaXMsICRldmVudClcIjtcblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm9wdGlvbnMudGVtcGxhdGVPcHRpb25zLlwiICsgbmFtZSArIFwiIG11c3QgYmUgYSBzdHJpbmcgb3IgZnVuY3Rpb246IFwiICsgSlNPTi5zdHJpbmdpZnkob3B0aW9ucykpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSBpZiAodmFsLmJvdW5kICYmIGluRXApIHtcblx0ICAgICAgICAgIGF0dHJOYW1lID0gdmFsLmJvdW5kO1xuXHQgICAgICAgICAgYXR0clZhbCA9IHJlZjtcblx0ICAgICAgICB9IGVsc2UgaWYgKCh2YWwuYXR0cmlidXRlIHx8IHZhbC5ib29sZWFuKSAmJiBpbkVwKSB7XG5cdCAgICAgICAgICBhdHRyTmFtZSA9IHZhbC5hdHRyaWJ1dGUgfHwgdmFsLmJvb2xlYW47XG5cdCAgICAgICAgICBhdHRyVmFsID0gXCJ7e1wiICsgcmVmICsgXCJ9fVwiO1xuXHQgICAgICAgIH0gZWxzZSBpZiAodmFsLmF0dHJpYnV0ZSAmJiBpblRvKSB7XG5cdCAgICAgICAgICBhdHRyTmFtZSA9IHZhbC5hdHRyaWJ1dGU7XG5cdCAgICAgICAgICBhdHRyVmFsID0gdG9WYWw7XG5cdCAgICAgICAgfSBlbHNlIGlmICh2YWwuYm9vbGVhbikge1xuXHQgICAgICAgICAgaWYgKGluVG8gJiYgIWluRXAgJiYgdG9WYWwpIHtcblx0ICAgICAgICAgICAgYXR0ck5hbWUgPSB2YWwuYm9vbGVhbjtcblx0ICAgICAgICAgICAgYXR0clZhbCA9IHRydWU7XG5cdCAgICAgICAgICB9IGVsc2Uge31cblx0ICAgICAgICB9IGVsc2UgaWYgKHZhbC5ib3VuZCAmJiBpblRvKSB7XG5cdCAgICAgICAgICBhdHRyTmFtZSA9IHZhbC5ib3VuZDtcblx0ICAgICAgICAgIGF0dHJWYWwgPSByZWY7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaWYgKGFuZ3VsYXIuaXNEZWZpbmVkKGF0dHJOYW1lKSAmJiBhbmd1bGFyLmlzRGVmaW5lZChhdHRyVmFsKSkge1xuXHQgICAgICAgICAgYWRkSWZOb3RQcmVzZW50KG1vZGVsTm9kZXMsIGF0dHJOYW1lLCBhdHRyVmFsKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIC8vIFV0aWxpdHkgZnVuY3Rpb25zXG5cdCAgZnVuY3Rpb24gZ2V0QnVpbHRJbkF0dHJpYnV0ZXMoKSB7XG5cdCAgICB2YXIgbmdNb2RlbEF0dHJpYnV0ZXMgPSB7XG5cdCAgICAgIGZvY3VzOiB7XG5cdCAgICAgICAgYXR0cmlidXRlOiBcImZvcm1seS1mb2N1c1wiXG5cdCAgICAgIH1cblx0ICAgIH07XG5cdCAgICB2YXIgYm91bmRPbmx5ID0gW107XG5cdCAgICB2YXIgYm90aEJvb2xlYW5BbmRCb3VuZCA9IFtcInJlcXVpcmVkXCIsIFwiZGlzYWJsZWRcIl07XG5cdCAgICB2YXIgYm90aEF0dHJpYnV0ZUFuZEJvdW5kID0gW1wicGF0dGVyblwiLCBcIm1pbmxlbmd0aFwiXTtcblx0ICAgIHZhciBleHByZXNzaW9uT25seSA9IFtcImNoYW5nZVwiLCBcImtleWRvd25cIiwgXCJrZXl1cFwiLCBcImtleXByZXNzXCIsIFwiY2xpY2tcIiwgXCJmb2N1c1wiLCBcImJsdXJcIl07XG5cdCAgICB2YXIgYXR0cmlidXRlT25seSA9IFtcInBsYWNlaG9sZGVyXCIsIFwibWluXCIsIFwibWF4XCIsIFwidGFiaW5kZXhcIiwgXCJ0eXBlXCJdO1xuXHQgICAgaWYgKGZvcm1seUNvbmZpZy5leHRyYXMubmdNb2RlbEF0dHJzTWFuaXB1bGF0b3JQcmVmZXJVbmJvdW5kKSB7XG5cdCAgICAgIGJvdGhBdHRyaWJ1dGVBbmRCb3VuZC5wdXNoKFwibWF4bGVuZ3RoXCIpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgYm91bmRPbmx5LnB1c2goXCJtYXhsZW5ndGhcIik7XG5cdCAgICB9XG5cblx0ICAgIGFuZ3VsYXIuZm9yRWFjaChib3VuZE9ubHksIGZ1bmN0aW9uIChpdGVtKSB7XG5cdCAgICAgIG5nTW9kZWxBdHRyaWJ1dGVzW2l0ZW1dID0geyBib3VuZDogXCJuZy1cIiArIGl0ZW0gfTtcblx0ICAgIH0pO1xuXG5cdCAgICBhbmd1bGFyLmZvckVhY2goYm90aEJvb2xlYW5BbmRCb3VuZCwgZnVuY3Rpb24gKGl0ZW0pIHtcblx0ICAgICAgbmdNb2RlbEF0dHJpYnV0ZXNbaXRlbV0gPSB7IGJvb2xlYW46IGl0ZW0sIGJvdW5kOiBcIm5nLVwiICsgaXRlbSB9O1xuXHQgICAgfSk7XG5cblx0ICAgIGFuZ3VsYXIuZm9yRWFjaChib3RoQXR0cmlidXRlQW5kQm91bmQsIGZ1bmN0aW9uIChpdGVtKSB7XG5cdCAgICAgIG5nTW9kZWxBdHRyaWJ1dGVzW2l0ZW1dID0geyBhdHRyaWJ1dGU6IGl0ZW0sIGJvdW5kOiBcIm5nLVwiICsgaXRlbSB9O1xuXHQgICAgfSk7XG5cblx0ICAgIGFuZ3VsYXIuZm9yRWFjaChleHByZXNzaW9uT25seSwgZnVuY3Rpb24gKGl0ZW0pIHtcblx0ICAgICAgdmFyIHByb3BOYW1lID0gXCJvblwiICsgaXRlbS5zdWJzdHIoMCwgMSkudG9VcHBlckNhc2UoKSArIGl0ZW0uc3Vic3RyKDEpO1xuXHQgICAgICBuZ01vZGVsQXR0cmlidXRlc1twcm9wTmFtZV0gPSB7IGV4cHJlc3Npb246IFwibmctXCIgKyBpdGVtIH07XG5cdCAgICB9KTtcblxuXHQgICAgYW5ndWxhci5mb3JFYWNoKGF0dHJpYnV0ZU9ubHksIGZ1bmN0aW9uIChpdGVtKSB7XG5cdCAgICAgIG5nTW9kZWxBdHRyaWJ1dGVzW2l0ZW1dID0geyBhdHRyaWJ1dGU6IGl0ZW0gfTtcblx0ICAgIH0pO1xuXHQgICAgcmV0dXJuIG5nTW9kZWxBdHRyaWJ1dGVzO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldEVwVmFsdWUoZXAsIG5hbWUpIHtcblx0ICAgIHJldHVybiBlcFtcInRlbXBsYXRlT3B0aW9ucy5cIiArIG5hbWVdIHx8IGVwW1widGVtcGxhdGVPcHRpb25zWydcIiArIG5hbWUgKyBcIiddXCJdIHx8IGVwW1widGVtcGxhdGVPcHRpb25zW1xcXCJcIiArIG5hbWUgKyBcIlxcXCJdXCJdO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGFkZElmTm90UHJlc2VudChub2RlcywgYXR0ciwgdmFsKSB7XG5cdCAgICBhbmd1bGFyLmZvckVhY2gobm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG5cdCAgICAgIGlmICghbm9kZS5nZXRBdHRyaWJ1dGUoYXR0cikpIHtcblx0ICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyLCB2YWwpO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICB9XG5cdH1cblx0YWRkRm9ybWx5TmdNb2RlbEF0dHJzTWFuaXB1bGF0b3IuJGluamVjdCA9IFtcImZvcm1seUNvbmZpZ1wiXTtcblxuXHQvLyBqc2hpbnQgLVcwMzVcblx0Ly8gZW1wdHkgdG8gaWxsdXN0cmF0ZSB0aGF0IGEgYm9vbGVhbiB3aWxsIG5vdCBiZSBhZGRlZCB2aWEgdmFsLmJvdW5kXG5cdC8vIGlmIHlvdSB3YW50IGl0IGFkZGVkIHZpYSB2YWwuYm91bmQsIHRoZW4gcHV0IGl0IGluIGV4cHJlc3Npb25Qcm9wZXJ0aWVzXG5cbi8qKiovIH0sXG4vKiAxNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBhZGRDdXN0b21UYWdzO1xuXG5cdC8vIEBuZ0luamVjdFxuXHRmdW5jdGlvbiBhZGRDdXN0b21UYWdzKCRkb2N1bWVudCkge1xuXHQgIGlmICgkZG9jdW1lbnQgJiYgJGRvY3VtZW50LmdldCkge1xuXHQgICAgKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgLy9JRTggY2hlY2sgLT5cblx0ICAgICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDk2NDk2Ni9kZXRlY3QtaWUtdmVyc2lvbi1wcmlvci10by12OS1pbi1qYXZhc2NyaXB0LzEwOTY1MjAzIzEwOTY1MjAzXG5cdCAgICAgIHZhciBkb2N1bWVudCA9ICRkb2N1bWVudC5nZXQoMCk7XG5cdCAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHQgICAgICBkaXYuaW5uZXJIVE1MID0gXCI8IS0tW2lmIGx0IElFIDldPjxpPjwvaT48IVtlbmRpZl0tLT5cIjtcblx0ICAgICAgdmFyIGlzSWVMZXNzVGhhbjkgPSBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpXCIpLmxlbmd0aCA9PT0gMTtcblxuXHQgICAgICBpZiAoaXNJZUxlc3NUaGFuOSkge1xuXHQgICAgICAgIC8vYWRkIHRoZSBjdXN0b20gZWxlbWVudHMgdGhhdCB3ZSBuZWVkIGZvciBmb3JtbHlcblx0ICAgICAgICB2YXIgY3VzdG9tRWxlbWVudHMgPSBbXCJmb3JtbHktZmllbGRcIiwgXCJmb3JtbHktZm9ybVwiLCBcImZvcm1seS1jdXN0b20tdmFsaWRhdGlvblwiLCBcImZvcm1seS1mb2N1c1wiLCBcImZvcm1seS10cmFuc3Bvc2VcIl07XG5cdCAgICAgICAgYW5ndWxhci5mb3JFYWNoKGN1c3RvbUVsZW1lbnRzLCBmdW5jdGlvbiAoZWwpIHtcblx0ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWwpO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAgICB9KSgpO1xuXHQgIH1cblx0fVxuXHRhZGRDdXN0b21UYWdzLiRpbmplY3QgPSBbXCIkZG9jdW1lbnRcIl07XG5cbi8qKiovIH0sXG4vKiAxNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0Ly8gc29tZSB2ZXJzaW9ucyBvZiBhbmd1bGFyIGRvbid0IGV4cG9ydCB0aGUgYW5ndWxhciBtb2R1bGUgcHJvcGVybHksXG5cdC8vIHNvIHdlIGdldCBpdCBmcm9tIHdpbmRvdyBpbiB0aGlzIGNhc2UuXG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNykpO1xuXG5cdGlmICghYW5ndWxhci52ZXJzaW9uKSB7XG5cdCAgYW5ndWxhciA9IHdpbmRvdy5hbmd1bGFyO1xuXHR9XG5cdG1vZHVsZS5leHBvcnRzID0gYW5ndWxhcjtcblxuLyoqKi8gfSxcbi8qIDE2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMTZfXztcblxuLyoqKi8gfSxcbi8qIDE3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMTdfXztcblxuLyoqKi8gfSxcbi8qIDE4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX2ludGVyb3BSZXF1aXJlID0gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqW1wiZGVmYXVsdFwiXSA6IG9iajsgfTtcblxuXHR2YXIgYW5ndWxhciA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KSk7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IGZvcm1seUV2YWw6IGZvcm1seUV2YWwsIGdldEZpZWxkSWQ6IGdldEZpZWxkSWQsIHJldmVyc2VEZWVwTWVyZ2U6IHJldmVyc2VEZWVwTWVyZ2UsIGZpbmRCeU5vZGVOYW1lOiBmaW5kQnlOb2RlTmFtZSwgYXJyYXlpZnk6IGFycmF5aWZ5LCBleHRlbmRGdW5jdGlvbjogZXh0ZW5kRnVuY3Rpb24gfTtcblxuXHRmdW5jdGlvbiBmb3JtbHlFdmFsKHNjb3BlLCBleHByZXNzaW9uLCAkbW9kZWxWYWx1ZSwgJHZpZXdWYWx1ZSwgZXh0cmFMb2NhbHMpIHtcblx0ICBpZiAoYW5ndWxhci5pc0Z1bmN0aW9uKGV4cHJlc3Npb24pKSB7XG5cdCAgICByZXR1cm4gZXhwcmVzc2lvbigkdmlld1ZhbHVlLCAkbW9kZWxWYWx1ZSwgc2NvcGUsIGV4dHJhTG9jYWxzKTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIHNjb3BlLiRldmFsKGV4cHJlc3Npb24sIGFuZ3VsYXIuZXh0ZW5kKHsgJHZpZXdWYWx1ZTogJHZpZXdWYWx1ZSwgJG1vZGVsVmFsdWU6ICRtb2RlbFZhbHVlIH0sIGV4dHJhTG9jYWxzKSk7XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0RmllbGRJZChmb3JtSWQsIG9wdGlvbnMsIGluZGV4KSB7XG5cdCAgaWYgKG9wdGlvbnMuaWQpIHtcblx0ICAgIHJldHVybiBvcHRpb25zLmlkO1xuXHQgIH1cblx0ICB2YXIgdHlwZSA9IG9wdGlvbnMudHlwZTtcblx0ICBpZiAoIXR5cGUgJiYgb3B0aW9ucy50ZW1wbGF0ZSkge1xuXHQgICAgdHlwZSA9IFwidGVtcGxhdGVcIjtcblx0ICB9IGVsc2UgaWYgKCF0eXBlICYmIG9wdGlvbnMudGVtcGxhdGVVcmwpIHtcblx0ICAgIHR5cGUgPSBcInRlbXBsYXRlVXJsXCI7XG5cdCAgfVxuXG5cdCAgcmV0dXJuIFtmb3JtSWQsIHR5cGUsIG9wdGlvbnMua2V5LCBpbmRleF0uam9pbihcIl9cIik7XG5cdH1cblxuXHRmdW5jdGlvbiByZXZlcnNlRGVlcE1lcmdlKGRlc3QpIHtcblx0ICBhbmd1bGFyLmZvckVhY2goYXJndW1lbnRzLCBmdW5jdGlvbiAoc3JjLCBpbmRleCkge1xuXHQgICAgaWYgKCFpbmRleCkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBhbmd1bGFyLmZvckVhY2goc3JjLCBmdW5jdGlvbiAodmFsLCBwcm9wKSB7XG5cdCAgICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQoZGVzdFtwcm9wXSkpIHtcblx0ICAgICAgICBkZXN0W3Byb3BdID0gYW5ndWxhci5jb3B5KHZhbCk7XG5cdCAgICAgIH0gZWxzZSBpZiAob2JqQW5kU2FtZVR5cGUoZGVzdFtwcm9wXSwgdmFsKSkge1xuXHQgICAgICAgIHJldmVyc2VEZWVwTWVyZ2UoZGVzdFtwcm9wXSwgdmFsKTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgfSk7XG5cdH1cblxuXHRmdW5jdGlvbiBvYmpBbmRTYW1lVHlwZShvYmoxLCBvYmoyKSB7XG5cdCAgcmV0dXJuIGFuZ3VsYXIuaXNPYmplY3Qob2JqMSkgJiYgYW5ndWxhci5pc09iamVjdChvYmoyKSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqMSkgPT09IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmoyKTtcblx0fVxuXG5cdC8vcmVjdXJzZSBkb3duIGEgbm9kZSB0cmVlIHRvIGZpbmQgYSBub2RlIHdpdGggbWF0Y2hpbmcgbm9kZU5hbWUsIGZvciBjdXN0b20gdGFncyBqUXVlcnkuZmluZCBkb2Vzbid0IHdvcmsgaW4gSUU4XG5cdGZ1bmN0aW9uIGZpbmRCeU5vZGVOYW1lKGVsLCBub2RlTmFtZSkge1xuXHQgIGlmICghZWwucHJvcCkge1xuXHQgICAgLy8gbm90IGEgalF1ZXJ5IG9yIGpxTGl0ZSBvYmplY3QgLT4gd3JhcCBpdFxuXHQgICAgZWwgPSBhbmd1bGFyLmVsZW1lbnQoZWwpO1xuXHQgIH1cblxuXHQgIGlmIChlbC5wcm9wKFwibm9kZU5hbWVcIikgPT09IG5vZGVOYW1lLnRvVXBwZXJDYXNlKCkpIHtcblx0ICAgIHJldHVybiBlbDtcblx0ICB9XG5cblx0ICB2YXIgYyA9IGVsLmNoaWxkcmVuKCk7XG5cdCAgZm9yICh2YXIgaSA9IDA7IGMgJiYgaSA8IGMubGVuZ3RoOyBpKyspIHtcblx0ICAgIHZhciBub2RlID0gZmluZEJ5Tm9kZU5hbWUoY1tpXSwgbm9kZU5hbWUpO1xuXHQgICAgaWYgKG5vZGUpIHtcblx0ICAgICAgcmV0dXJuIG5vZGU7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gYXJyYXlpZnkob2JqKSB7XG5cdCAgaWYgKG9iaiAmJiAhYW5ndWxhci5pc0FycmF5KG9iaikpIHtcblx0ICAgIG9iaiA9IFtvYmpdO1xuXHQgIH0gZWxzZSBpZiAoIW9iaikge1xuXHQgICAgb2JqID0gW107XG5cdCAgfVxuXHQgIHJldHVybiBvYmo7XG5cdH1cblxuXHRmdW5jdGlvbiBleHRlbmRGdW5jdGlvbigpIHtcblx0ICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgZm5zID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICBmbnNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG5cdCAgfVxuXG5cdCAgcmV0dXJuIGZ1bmN0aW9uIGV4dGVuZGVkRnVuY3Rpb24oKSB7XG5cdCAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcblx0ICAgIGZucy5mb3JFYWNoKGZ1bmN0aW9uIChmbikge1xuXHQgICAgICByZXR1cm4gZm4uYXBwbHkobnVsbCwgYXJncyk7XG5cdCAgICB9KTtcblx0ICB9O1xuXHR9XG5cbi8qKiovIH1cbi8qKioqKiovIF0pXG59KTtcbjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vYW5ndWxhci1mb3JtbHkvZGlzdC9mb3JtbHkuanNcbi8vIG1vZHVsZSBpZCA9IDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 4 */
+/***/ function(module, exports) {
+
+ eval("module.exports = angular;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJhbmd1bGFyXCI/MTFkMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiI0LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBhbmd1bGFyO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwiYW5ndWxhclwiXG4vLyBtb2R1bGUgaWQgPSA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 5 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("// angular-formly-templates-bootstrap version 4.3.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory(__webpack_require__(3), __webpack_require__(2), __webpack_require__(4));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular-formly\", \"api-check\", \"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ngFormlyTemplatesBootstrap\"] = factory(require(\"angular-formly\"), require(\"api-check\"), require(\"angular\"));\n\telse\n\t\troot[\"ngFormlyTemplatesBootstrap\"] = factory(root[\"ngFormly\"], root[\"apiCheck\"], root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_8__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(11);\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addCheckboxType);\n\t\n\t function addCheckboxType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'multiCheckbox',\n\t template: __webpack_require__(21),\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional\n\t })\n\t },\n\t defaultOptions: {\n\t noFormControl: false,\n\t ngModelAttrs: {\n\t required: {\n\t attribute: '',\n\t bound: ''\n\t }\n\t }\n\t },\n\t apiCheckInstance: c,\n\t controller: /* @ngInject */[\"$scope\", function controller($scope) {\n\t var to = $scope.to;\n\t var opts = $scope.options;\n\t $scope.multiCheckbox = {\n\t checked: [],\n\t change: setModel\n\t };\n\t\n\t // initialize the checkboxes check property\n\t var modelValue = $scope.model[opts.key];\n\t if (angular.isArray(modelValue)) {\n\t (function () {\n\t var valueProp = to.valueProp || 'value';\n\t angular.forEach(to.options, function (v, index) {\n\t $scope.multiCheckbox.checked[index] = modelValue.indexOf(v[valueProp]) !== -1;\n\t });\n\t })();\n\t }\n\t\n\t function checkValidity(expressionValue) {\n\t var valid = angular.isArray($scope.model[opts.key]) && $scope.model[opts.key].length > 0 && expressionValue;\n\t\n\t $scope.fc.$setValidity('required', valid);\n\t }\n\t\n\t function setModel() {\n\t $scope.model[opts.key] = [];\n\t angular.forEach($scope.multiCheckbox.checked, function (checkbox, index) {\n\t if (checkbox) {\n\t $scope.model[opts.key].push(to.options[index][to.valueProp || 'value']);\n\t }\n\t });\n\t\n\t // Must make sure we mark as touched because only the last checkbox due to a bug in angular.\n\t $scope.fc.$setTouched();\n\t checkValidity(true);\n\t }\n\t\n\t if (opts.expressionProperties && opts.expressionProperties.required) {\n\t $scope.$watch($scope.options.expressionProperties.required, function (newValue) {\n\t checkValidity(newValue);\n\t });\n\t }\n\t\n\t if ($scope.to.required) {\n\t var unwatchFormControl = $scope.$watch('fc', function (newValue) {\n\t if (!newValue) {\n\t return;\n\t }\n\t checkValidity(true);\n\t unwatchFormControl;\n\t });\n\t }\n\t }]\n\t });\n\t }\n\t addCheckboxType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// some versions of angular don't export the angular module properly,\n\t// so we get it from window in this case.\n\t'use strict';\n\t\n\tvar angular = __webpack_require__(8);\n\tif (!angular.version) {\n\t angular = window.angular;\n\t}\n\tmodule.exports = angular;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addWrappers);\n\t\n\t function addWrappers(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setWrapper([{\n\t name: 'bootstrapLabel',\n\t template: __webpack_require__(17),\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t label: c.string,\n\t required: c.bool.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t }, { name: 'bootstrapHasError', template: __webpack_require__(18) }]);\n\t }\n\t addWrappers.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t __webpack_require__(10)(ngModule);\n\t __webpack_require__(1)(ngModule);\n\t __webpack_require__(12)(ngModule);\n\t __webpack_require__(9)(ngModule);\n\t __webpack_require__(13)(ngModule);\n\t __webpack_require__(14)(ngModule);\n\t};\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _addons = __webpack_require__(15);\n\t\n\tvar _addons2 = _interopRequireDefault(_addons);\n\t\n\tvar _description = __webpack_require__(16);\n\t\n\tvar _description2 = _interopRequireDefault(_description);\n\t\n\texports['default'] = function (ngModule) {\n\t (0, _addons2['default'])(ngModule);\n\t (0, _description2['default'])(ngModule);\n\t};\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_8__;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addRadioType);\n\t\n\t function addRadioType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'radio',\n\t template: __webpack_require__(19),\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: {\n\t noFormControl: false\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addRadioType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addCheckboxType);\n\t\n\t function addCheckboxType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'checkbox',\n\t template: __webpack_require__(20),\n\t wrapper: ['bootstrapHasError'],\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t label: c.string\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addCheckboxType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\tvar ngModuleName = 'formlyBootstrap';\n\tvar angular = __webpack_require__(4);\n\tvar ngModule = angular.module(ngModuleName, [__webpack_require__(2)]);\n\tngModule.constant('formlyBootstrapApiCheck', __webpack_require__(3)({\n\t output: {\n\t prefix: 'angular-formly-bootstrap'\n\t }\n\t}));\n\tngModule.constant('formlyBootstrapVersion', (\"4.3.2\"));\n\t\n\t__webpack_require__(5)(ngModule);\n\t__webpack_require__(6)(ngModule);\n\t__webpack_require__(7)(ngModule);\n\t\n\texports['default'] = ngModuleName;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addInputType);\n\t\n\t function addInputType(formlyConfigProvider) {\n\t formlyConfigProvider.setType({\n\t name: 'input',\n\t template: ' ',\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError']\n\t });\n\t }\n\t addInputType.$inject = [\"formlyConfigProvider\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _defineProperty(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); }\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addSelectType);\n\t\n\t var template = ' ';\n\t\n\t function addSelectType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'select',\n\t template: template,\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: function defaultOptions(options) {\n\t /* jshint maxlen:195 */\n\t var ngOptions = options.templateOptions.ngOptions || 'option[to.valueProp || \\'value\\'] as option[to.labelProp || \\'name\\'] group by option[to.groupProp || \\'group\\'] for option in to.options';\n\t return {\n\t ngModelAttrs: _defineProperty({}, ngOptions, {\n\t value: 'ng-options'\n\t })\n\t };\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional,\n\t groupProp: c.string.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addSelectType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addTextareaType);\n\t\n\t function addTextareaType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'textarea',\n\t template: '',\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: {\n\t ngModelAttrs: {\n\t rows: { attribute: 'rows' },\n\t cols: { attribute: 'cols' }\n\t }\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t rows: c.number.optional,\n\t cols: c.number.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addTextareaType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.run(addAddonsManipulator);\n\t\n\t function addAddonsManipulator(formlyConfig, formlyBootstrapApiCheck) {\n\t var addonTemplate = __webpack_require__(22);\n\t var addonChecker = formlyBootstrapApiCheck.shape({\n\t 'class': formlyBootstrapApiCheck.string.optional,\n\t text: formlyBootstrapApiCheck.string.optional,\n\t onClick: formlyBootstrapApiCheck.func.optional\n\t }).strict.optional;\n\t var api = formlyBootstrapApiCheck.shape({\n\t templateOptions: formlyBootstrapApiCheck.shape({\n\t addonLeft: addonChecker,\n\t addonRight: addonChecker\n\t })\n\t });\n\t formlyConfig.templateManipulators.preWrapper.push(function (template, options) {\n\t if (!options.templateOptions.addonLeft && !options.templateOptions.addonRight) {\n\t return template;\n\t }\n\t formlyBootstrapApiCheck.warn([api], [options]);\n\t return addonTemplate.replace(' ', template);\n\t });\n\t }\n\t addAddonsManipulator.$inject = [\"formlyConfig\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.run(addDescriptionManipulator);\n\t\n\t function addDescriptionManipulator(formlyConfig) {\n\t formlyConfig.templateManipulators.preWrapper.push(function ariaDescribedBy(template, options, scope) {\n\t if (angular.isDefined(options.templateOptions.description)) {\n\t var el = document.createElement('div');\n\t el.appendChild(angular.element(template)[0]);\n\t el.appendChild(angular.element('' + '{{to.description}}' + '
')[0]);\n\t var modelEls = angular.element(el.querySelectorAll('[ng-model]'));\n\t if (modelEls) {\n\t modelEls.attr('aria-describedby', scope.id + '_description');\n\t }\n\t return el.innerHTML;\n\t } else {\n\t return template;\n\t }\n\t });\n\t }\n\t addDescriptionManipulator.$inject = [\"formlyConfig\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n \\n {{to.label}}\\n {{to.required ? '*' : ''}}\\n \\n \\n
\\n\"\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n \\n
\\n\"\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n \\n {{option[to.labelProp || 'name']}}\\n \\n
\\n
\\n\"\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n\\t\\n\\t\\t \\n\\t\\t{{to.label}}\\n\\t\\t{{to.required ? '*' : ''}}\\n\\t \\n
\\n\"\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n \\n {{option[to.labelProp || 'name']}}\\n \\n
\\n
\\n\"\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n {{to.addonLeft.text}} \\n
\\n
\\n
\\n \\n {{to.addonRight.text}} \\n
\\n
\\n\"\n\n/***/ }\n/******/ ])\n});\n;\n//# sourceMappingURL=angular-formly-templates-bootstrap.js.map//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2FuZ3VsYXItZm9ybWx5LXRlbXBsYXRlcy1ib290c3RyYXAvZGlzdC9hbmd1bGFyLWZvcm1seS10ZW1wbGF0ZXMtYm9vdHN0cmFwLmpzP2Y1YjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZCxZQUFZO0FBQ1o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7O0FBRVo7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsUUFBUTtBQUNSLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsUUFBUTtBQUNSO0FBQ0EsTUFBTSxHQUFHLCtEQUErRDtBQUN4RTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRix1Q0FBdUMsdUNBQXVDLGtCQUFrQjs7QUFFaEc7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsUUFBUTtBQUNSO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixRQUFRO0FBQ1I7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRiw0Q0FBNEMseUNBQXlDLHFFQUFxRSxFQUFFOztBQUU1SjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixRQUFRO0FBQ1I7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixvQkFBb0I7QUFDdEMsa0JBQWtCO0FBQ2xCO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLFFBQVE7QUFDUjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUlBQXVJLGdCQUFnQjtBQUN2SjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBLDJDQUEyQyxJQUFJLG1DQUFtQyxVQUFVLFFBQVEsd0JBQXdCOztBQUU1SCxPQUFPO0FBQ1A7QUFDQTs7QUFFQSx5REFBeUQsdUJBQXVCOztBQUVoRixPQUFPO0FBQ1A7QUFDQTs7QUFFQSxpTEFBaUwsa0JBQWtCLG1KQUFtSixnQ0FBZ0M7O0FBRXRYLE9BQU87QUFDUDtBQUNBOztBQUVBLHFMQUFxTCxVQUFVLFFBQVEsd0JBQXdCOztBQUUvTixPQUFPO0FBQ1A7QUFDQTs7QUFFQSx1TEFBdUwsa0JBQWtCLHlIQUF5SCxnQ0FBZ0M7O0FBRWxXLE9BQU87QUFDUDtBQUNBOztBQUVBLG9DQUFvQyw2Q0FBNkMsaUdBQWlHLHFEQUFxRCxxRkFBcUYsb0JBQW9CLGtGQUFrRixtQkFBbUIsK0pBQStKLHNEQUFzRCxzRkFBc0YscUJBQXFCLG9GQUFvRixvQkFBb0I7O0FBRTcxQjtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGFuZ3VsYXItZm9ybWx5LXRlbXBsYXRlcy1ib290c3RyYXAgdmVyc2lvbiA0LjMuMiBidWlsdCB3aXRoIOKZpSBieSBBc3RyaXNtIDxhc3RyaXNtc0BnbWFpbC5jb20+LCBLZW50IEMuIERvZGRzIDxrZW50QGRvZGRzZmFtaWx5LnVzPiAow7Mgw6xfw60pPcOzw7I9KMOsX8OtIMOyKVxuXG4oZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJhbmd1bGFyLWZvcm1seVwiKSwgcmVxdWlyZShcImFwaS1jaGVja1wiKSwgcmVxdWlyZShcImFuZ3VsYXJcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiYW5ndWxhci1mb3JtbHlcIiwgXCJhcGktY2hlY2tcIiwgXCJhbmd1bGFyXCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm5nRm9ybWx5VGVtcGxhdGVzQm9vdHN0cmFwXCJdID0gZmFjdG9yeShyZXF1aXJlKFwiYW5ndWxhci1mb3JtbHlcIiksIHJlcXVpcmUoXCJhcGktY2hlY2tcIiksIHJlcXVpcmUoXCJhbmd1bGFyXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJuZ0Zvcm1seVRlbXBsYXRlc0Jvb3RzdHJhcFwiXSA9IGZhY3Rvcnkocm9vdFtcIm5nRm9ybWx5XCJdLCByb290W1wiYXBpQ2hlY2tcIl0sIHJvb3RbXCJhbmd1bGFyXCJdKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMl9fLCBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzNfXywgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV84X18pIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fSxcbi8qKioqKiovIFx0XHRcdGlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGxvYWRlZDogZmFsc2Vcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cbi8qKiovIH0sXG4vKiAxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAobmdNb2R1bGUpIHtcblx0ICBuZ01vZHVsZS5jb25maWcoYWRkQ2hlY2tib3hUeXBlKTtcblx0XG5cdCAgZnVuY3Rpb24gYWRkQ2hlY2tib3hUeXBlKGZvcm1seUNvbmZpZ1Byb3ZpZGVyLCBmb3JtbHlCb290c3RyYXBBcGlDaGVjaykge1xuXHQgICAgdmFyIGMgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjaztcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuXHQgICAgICBuYW1lOiAnbXVsdGlDaGVja2JveCcsXG5cdCAgICAgIHRlbXBsYXRlOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKSxcblx0ICAgICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddLFxuXHQgICAgICBhcGlDaGVjazoge1xuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczogYy5zaGFwZSh7XG5cdCAgICAgICAgICBvcHRpb25zOiBjLmFycmF5T2YoYy5vYmplY3QpLFxuXHQgICAgICAgICAgbGFiZWxQcm9wOiBjLnN0cmluZy5vcHRpb25hbCxcblx0ICAgICAgICAgIHZhbHVlUHJvcDogYy5zdHJpbmcub3B0aW9uYWxcblx0ICAgICAgICB9KVxuXHQgICAgICB9LFxuXHQgICAgICBkZWZhdWx0T3B0aW9uczoge1xuXHQgICAgICAgIG5vRm9ybUNvbnRyb2w6IGZhbHNlLFxuXHQgICAgICAgIG5nTW9kZWxBdHRyczoge1xuXHQgICAgICAgICAgcmVxdWlyZWQ6IHtcblx0ICAgICAgICAgICAgYXR0cmlidXRlOiAnJyxcblx0ICAgICAgICAgICAgYm91bmQ6ICcnXG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9LFxuXHQgICAgICBhcGlDaGVja0luc3RhbmNlOiBjLFxuXHQgICAgICBjb250cm9sbGVyOiAvKiBAbmdJbmplY3QgKi9bXCIkc2NvcGVcIiwgZnVuY3Rpb24gY29udHJvbGxlcigkc2NvcGUpIHtcblx0ICAgICAgICB2YXIgdG8gPSAkc2NvcGUudG87XG5cdCAgICAgICAgdmFyIG9wdHMgPSAkc2NvcGUub3B0aW9ucztcblx0ICAgICAgICAkc2NvcGUubXVsdGlDaGVja2JveCA9IHtcblx0ICAgICAgICAgIGNoZWNrZWQ6IFtdLFxuXHQgICAgICAgICAgY2hhbmdlOiBzZXRNb2RlbFxuXHQgICAgICAgIH07XG5cdFxuXHQgICAgICAgIC8vIGluaXRpYWxpemUgdGhlIGNoZWNrYm94ZXMgY2hlY2sgcHJvcGVydHlcblx0ICAgICAgICB2YXIgbW9kZWxWYWx1ZSA9ICRzY29wZS5tb2RlbFtvcHRzLmtleV07XG5cdCAgICAgICAgaWYgKGFuZ3VsYXIuaXNBcnJheShtb2RlbFZhbHVlKSkge1xuXHQgICAgICAgICAgKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIHZhbHVlUHJvcCA9IHRvLnZhbHVlUHJvcCB8fCAndmFsdWUnO1xuXHQgICAgICAgICAgICBhbmd1bGFyLmZvckVhY2godG8ub3B0aW9ucywgZnVuY3Rpb24gKHYsIGluZGV4KSB7XG5cdCAgICAgICAgICAgICAgJHNjb3BlLm11bHRpQ2hlY2tib3guY2hlY2tlZFtpbmRleF0gPSBtb2RlbFZhbHVlLmluZGV4T2Yodlt2YWx1ZVByb3BdKSAhPT0gLTE7XG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfSkoKTtcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGZ1bmN0aW9uIGNoZWNrVmFsaWRpdHkoZXhwcmVzc2lvblZhbHVlKSB7XG5cdCAgICAgICAgICB2YXIgdmFsaWQgPSBhbmd1bGFyLmlzQXJyYXkoJHNjb3BlLm1vZGVsW29wdHMua2V5XSkgJiYgJHNjb3BlLm1vZGVsW29wdHMua2V5XS5sZW5ndGggPiAwICYmIGV4cHJlc3Npb25WYWx1ZTtcblx0XG5cdCAgICAgICAgICAkc2NvcGUuZmMuJHNldFZhbGlkaXR5KCdyZXF1aXJlZCcsIHZhbGlkKTtcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGZ1bmN0aW9uIHNldE1vZGVsKCkge1xuXHQgICAgICAgICAgJHNjb3BlLm1vZGVsW29wdHMua2V5XSA9IFtdO1xuXHQgICAgICAgICAgYW5ndWxhci5mb3JFYWNoKCRzY29wZS5tdWx0aUNoZWNrYm94LmNoZWNrZWQsIGZ1bmN0aW9uIChjaGVja2JveCwgaW5kZXgpIHtcblx0ICAgICAgICAgICAgaWYgKGNoZWNrYm94KSB7XG5cdCAgICAgICAgICAgICAgJHNjb3BlLm1vZGVsW29wdHMua2V5XS5wdXNoKHRvLm9wdGlvbnNbaW5kZXhdW3RvLnZhbHVlUHJvcCB8fCAndmFsdWUnXSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0pO1xuXHRcblx0ICAgICAgICAgIC8vIE11c3QgbWFrZSBzdXJlIHdlIG1hcmsgYXMgdG91Y2hlZCBiZWNhdXNlIG9ubHkgdGhlIGxhc3QgY2hlY2tib3ggZHVlIHRvIGEgYnVnIGluIGFuZ3VsYXIuXG5cdCAgICAgICAgICAkc2NvcGUuZmMuJHNldFRvdWNoZWQoKTtcblx0ICAgICAgICAgIGNoZWNrVmFsaWRpdHkodHJ1ZSk7XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICBpZiAob3B0cy5leHByZXNzaW9uUHJvcGVydGllcyAmJiBvcHRzLmV4cHJlc3Npb25Qcm9wZXJ0aWVzLnJlcXVpcmVkKSB7XG5cdCAgICAgICAgICAkc2NvcGUuJHdhdGNoKCRzY29wZS5vcHRpb25zLmV4cHJlc3Npb25Qcm9wZXJ0aWVzLnJlcXVpcmVkLCBmdW5jdGlvbiAobmV3VmFsdWUpIHtcblx0ICAgICAgICAgICAgY2hlY2tWYWxpZGl0eShuZXdWYWx1ZSk7XG5cdCAgICAgICAgICB9KTtcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGlmICgkc2NvcGUudG8ucmVxdWlyZWQpIHtcblx0ICAgICAgICAgIHZhciB1bndhdGNoRm9ybUNvbnRyb2wgPSAkc2NvcGUuJHdhdGNoKCdmYycsIGZ1bmN0aW9uIChuZXdWYWx1ZSkge1xuXHQgICAgICAgICAgICBpZiAoIW5ld1ZhbHVlKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGNoZWNrVmFsaWRpdHkodHJ1ZSk7XG5cdCAgICAgICAgICAgIHVud2F0Y2hGb3JtQ29udHJvbDtcblx0ICAgICAgICAgIH0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfV1cblx0ICAgIH0pO1xuXHQgIH1cblx0ICBhZGRDaGVja2JveFR5cGUuJGluamVjdCA9IFtcImZvcm1seUNvbmZpZ1Byb3ZpZGVyXCIsIFwiZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2tcIl07XG5cdH07XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cbi8qKiovIH0sXG4vKiAyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMl9fO1xuXG4vKioqLyB9LFxuLyogMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzNfXztcblxuLyoqKi8gfSxcbi8qIDQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIHNvbWUgdmVyc2lvbnMgb2YgYW5ndWxhciBkb24ndCBleHBvcnQgdGhlIGFuZ3VsYXIgbW9kdWxlIHByb3Blcmx5LFxuXHQvLyBzbyB3ZSBnZXQgaXQgZnJvbSB3aW5kb3cgaW4gdGhpcyBjYXNlLlxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgYW5ndWxhciA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdGlmICghYW5ndWxhci52ZXJzaW9uKSB7XG5cdCAgYW5ndWxhciA9IHdpbmRvdy5hbmd1bGFyO1xuXHR9XG5cdG1vZHVsZS5leHBvcnRzID0gYW5ndWxhcjtcblxuLyoqKi8gfSxcbi8qIDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgIG5nTW9kdWxlLmNvbmZpZyhhZGRXcmFwcGVycyk7XG5cdFxuXHQgIGZ1bmN0aW9uIGFkZFdyYXBwZXJzKGZvcm1seUNvbmZpZ1Byb3ZpZGVyLCBmb3JtbHlCb290c3RyYXBBcGlDaGVjaykge1xuXHQgICAgdmFyIGMgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjaztcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFdyYXBwZXIoW3tcblx0ICAgICAgbmFtZTogJ2Jvb3RzdHJhcExhYmVsJyxcblx0ICAgICAgdGVtcGxhdGU6IF9fd2VicGFja19yZXF1aXJlX18oMTcpLFxuXHQgICAgICBhcGlDaGVjazoge1xuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczogYy5zaGFwZSh7XG5cdCAgICAgICAgICBsYWJlbDogYy5zdHJpbmcsXG5cdCAgICAgICAgICByZXF1aXJlZDogYy5ib29sLm9wdGlvbmFsXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSwgeyBuYW1lOiAnYm9vdHN0cmFwSGFzRXJyb3InLCB0ZW1wbGF0ZTogX193ZWJwYWNrX3JlcXVpcmVfXygxOCkgfV0pO1xuXHQgIH1cblx0ICBhZGRXcmFwcGVycy4kaW5qZWN0ID0gW1wiZm9ybWx5Q29uZmlnUHJvdmlkZXJcIiwgXCJmb3JtbHlCb290c3RyYXBBcGlDaGVja1wiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgIF9fd2VicGFja19yZXF1aXJlX18oMTApKG5nTW9kdWxlKTtcblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpKG5nTW9kdWxlKTtcblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKShuZ01vZHVsZSk7XG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXyg5KShuZ01vZHVsZSk7XG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXygxMykobmdNb2R1bGUpO1xuXHQgIF9fd2VicGFja19yZXF1aXJlX18oMTQpKG5nTW9kdWxlKTtcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG4vKioqLyB9LFxuLyogNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXHRcblx0dmFyIF9hZGRvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcblx0XG5cdHZhciBfYWRkb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FkZG9ucyk7XG5cdFxuXHR2YXIgX2Rlc2NyaXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNik7XG5cdFxuXHR2YXIgX2Rlc2NyaXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Rlc2NyaXB0aW9uKTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgICgwLCBfYWRkb25zMlsnZGVmYXVsdCddKShuZ01vZHVsZSk7XG5cdCAgKDAsIF9kZXNjcmlwdGlvbjJbJ2RlZmF1bHQnXSkobmdNb2R1bGUpO1xuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cbi8qKiovIH0sXG4vKiA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfOF9fO1xuXG4vKioqLyB9LFxuLyogOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0ZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKG5nTW9kdWxlKSB7XG5cdCAgbmdNb2R1bGUuY29uZmlnKGFkZFJhZGlvVHlwZSk7XG5cdFxuXHQgIGZ1bmN0aW9uIGFkZFJhZGlvVHlwZShmb3JtbHlDb25maWdQcm92aWRlciwgZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2spIHtcblx0ICAgIHZhciBjID0gZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2s7XG5cdCAgICBmb3JtbHlDb25maWdQcm92aWRlci5zZXRUeXBlKHtcblx0ICAgICAgbmFtZTogJ3JhZGlvJyxcblx0ICAgICAgdGVtcGxhdGU6IF9fd2VicGFja19yZXF1aXJlX18oMTkpLFxuXHQgICAgICB3cmFwcGVyOiBbJ2Jvb3RzdHJhcExhYmVsJywgJ2Jvb3RzdHJhcEhhc0Vycm9yJ10sXG5cdCAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG5cdCAgICAgICAgbm9Gb3JtQ29udHJvbDogZmFsc2Vcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2s6IHtcblx0ICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IGMuc2hhcGUoe1xuXHQgICAgICAgICAgb3B0aW9uczogYy5hcnJheU9mKGMub2JqZWN0KSxcblx0ICAgICAgICAgIGxhYmVsUHJvcDogYy5zdHJpbmcub3B0aW9uYWwsXG5cdCAgICAgICAgICB2YWx1ZVByb3A6IGMuc3RyaW5nLm9wdGlvbmFsXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSk7XG5cdCAgfVxuXHQgIGFkZFJhZGlvVHlwZS4kaW5qZWN0ID0gW1wiZm9ybWx5Q29uZmlnUHJvdmlkZXJcIiwgXCJmb3JtbHlCb290c3RyYXBBcGlDaGVja1wiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDEwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAobmdNb2R1bGUpIHtcblx0ICBuZ01vZHVsZS5jb25maWcoYWRkQ2hlY2tib3hUeXBlKTtcblx0XG5cdCAgZnVuY3Rpb24gYWRkQ2hlY2tib3hUeXBlKGZvcm1seUNvbmZpZ1Byb3ZpZGVyLCBmb3JtbHlCb290c3RyYXBBcGlDaGVjaykge1xuXHQgICAgdmFyIGMgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjaztcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuXHQgICAgICBuYW1lOiAnY2hlY2tib3gnLFxuXHQgICAgICB0ZW1wbGF0ZTogX193ZWJwYWNrX3JlcXVpcmVfXygyMCksXG5cdCAgICAgIHdyYXBwZXI6IFsnYm9vdHN0cmFwSGFzRXJyb3InXSxcblx0ICAgICAgYXBpQ2hlY2s6IHtcblx0ICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IGMuc2hhcGUoe1xuXHQgICAgICAgICAgbGFiZWw6IGMuc3RyaW5nXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSk7XG5cdCAgfVxuXHQgIGFkZENoZWNrYm94VHlwZS4kaW5qZWN0ID0gW1wiZm9ybWx5Q29uZmlnUHJvdmlkZXJcIiwgXCJmb3JtbHlCb290c3RyYXBBcGlDaGVja1wiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDExICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdHZhciBuZ01vZHVsZU5hbWUgPSAnZm9ybWx5Qm9vdHN0cmFwJztcblx0dmFyIGFuZ3VsYXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHR2YXIgbmdNb2R1bGUgPSBhbmd1bGFyLm1vZHVsZShuZ01vZHVsZU5hbWUsIFtfX3dlYnBhY2tfcmVxdWlyZV9fKDIpXSk7XG5cdG5nTW9kdWxlLmNvbnN0YW50KCdmb3JtbHlCb290c3RyYXBBcGlDaGVjaycsIF9fd2VicGFja19yZXF1aXJlX18oMykoe1xuXHQgIG91dHB1dDoge1xuXHQgICAgcHJlZml4OiAnYW5ndWxhci1mb3JtbHktYm9vdHN0cmFwJ1xuXHQgIH1cblx0fSkpO1xuXHRuZ01vZHVsZS5jb25zdGFudCgnZm9ybWx5Qm9vdHN0cmFwVmVyc2lvbicsIChcIjQuMy4yXCIpKTtcblx0XG5cdF9fd2VicGFja19yZXF1aXJlX18oNSkobmdNb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDYpKG5nTW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg3KShuZ01vZHVsZSk7XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBuZ01vZHVsZU5hbWU7XG5cdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG4vKioqLyB9LFxuLyogMTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgIG5nTW9kdWxlLmNvbmZpZyhhZGRJbnB1dFR5cGUpO1xuXHRcblx0ICBmdW5jdGlvbiBhZGRJbnB1dFR5cGUoZm9ybWx5Q29uZmlnUHJvdmlkZXIpIHtcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuXHQgICAgICBuYW1lOiAnaW5wdXQnLFxuXHQgICAgICB0ZW1wbGF0ZTogJzxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nLW1vZGVsPVwibW9kZWxbb3B0aW9ucy5rZXldXCI+Jyxcblx0ICAgICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddXG5cdCAgICB9KTtcblx0ICB9XG5cdCAgYWRkSW5wdXRUeXBlLiRpbmplY3QgPSBbXCJmb3JtbHlDb25maWdQcm92aWRlclwiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDEzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHRmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAobmdNb2R1bGUpIHtcblx0ICBuZ01vZHVsZS5jb25maWcoYWRkU2VsZWN0VHlwZSk7XG5cdFxuXHQgIHZhciB0ZW1wbGF0ZSA9ICc8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmctbW9kZWw9XCJtb2RlbFtvcHRpb25zLmtleV1cIj48L3NlbGVjdD4nO1xuXHRcblx0ICBmdW5jdGlvbiBhZGRTZWxlY3RUeXBlKGZvcm1seUNvbmZpZ1Byb3ZpZGVyLCBmb3JtbHlCb290c3RyYXBBcGlDaGVjaykge1xuXHQgICAgdmFyIGMgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjaztcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuXHQgICAgICBuYW1lOiAnc2VsZWN0Jyxcblx0ICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuXHQgICAgICB3cmFwcGVyOiBbJ2Jvb3RzdHJhcExhYmVsJywgJ2Jvb3RzdHJhcEhhc0Vycm9yJ10sXG5cdCAgICAgIGRlZmF1bHRPcHRpb25zOiBmdW5jdGlvbiBkZWZhdWx0T3B0aW9ucyhvcHRpb25zKSB7XG5cdCAgICAgICAgLyoganNoaW50IG1heGxlbjoxOTUgKi9cblx0ICAgICAgICB2YXIgbmdPcHRpb25zID0gb3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnMubmdPcHRpb25zIHx8ICdvcHRpb25bdG8udmFsdWVQcm9wIHx8IFxcJ3ZhbHVlXFwnXSBhcyBvcHRpb25bdG8ubGFiZWxQcm9wIHx8IFxcJ25hbWVcXCddIGdyb3VwIGJ5IG9wdGlvblt0by5ncm91cFByb3AgfHwgXFwnZ3JvdXBcXCddIGZvciBvcHRpb24gaW4gdG8ub3B0aW9ucyc7XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIG5nTW9kZWxBdHRyczogX2RlZmluZVByb3BlcnR5KHt9LCBuZ09wdGlvbnMsIHtcblx0ICAgICAgICAgICAgdmFsdWU6ICduZy1vcHRpb25zJ1xuXHQgICAgICAgICAgfSlcblx0ICAgICAgICB9O1xuXHQgICAgICB9LFxuXHQgICAgICBhcGlDaGVjazoge1xuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczogYy5zaGFwZSh7XG5cdCAgICAgICAgICBvcHRpb25zOiBjLmFycmF5T2YoYy5vYmplY3QpLFxuXHQgICAgICAgICAgbGFiZWxQcm9wOiBjLnN0cmluZy5vcHRpb25hbCxcblx0ICAgICAgICAgIHZhbHVlUHJvcDogYy5zdHJpbmcub3B0aW9uYWwsXG5cdCAgICAgICAgICBncm91cFByb3A6IGMuc3RyaW5nLm9wdGlvbmFsXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSk7XG5cdCAgfVxuXHQgIGFkZFNlbGVjdFR5cGUuJGluamVjdCA9IFtcImZvcm1seUNvbmZpZ1Byb3ZpZGVyXCIsIFwiZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2tcIl07XG5cdH07XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cbi8qKiovIH0sXG4vKiAxNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0ZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKG5nTW9kdWxlKSB7XG5cdCAgbmdNb2R1bGUuY29uZmlnKGFkZFRleHRhcmVhVHlwZSk7XG5cdFxuXHQgIGZ1bmN0aW9uIGFkZFRleHRhcmVhVHlwZShmb3JtbHlDb25maWdQcm92aWRlciwgZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2spIHtcblx0ICAgIHZhciBjID0gZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2s7XG5cdCAgICBmb3JtbHlDb25maWdQcm92aWRlci5zZXRUeXBlKHtcblx0ICAgICAgbmFtZTogJ3RleHRhcmVhJyxcblx0ICAgICAgdGVtcGxhdGU6ICc8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuZy1tb2RlbD1cIm1vZGVsW29wdGlvbnMua2V5XVwiPjwvdGV4dGFyZWE+Jyxcblx0ICAgICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddLFxuXHQgICAgICBkZWZhdWx0T3B0aW9uczoge1xuXHQgICAgICAgIG5nTW9kZWxBdHRyczoge1xuXHQgICAgICAgICAgcm93czogeyBhdHRyaWJ1dGU6ICdyb3dzJyB9LFxuXHQgICAgICAgICAgY29sczogeyBhdHRyaWJ1dGU6ICdjb2xzJyB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9LFxuXHQgICAgICBhcGlDaGVjazoge1xuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczogYy5zaGFwZSh7XG5cdCAgICAgICAgICByb3dzOiBjLm51bWJlci5vcHRpb25hbCxcblx0ICAgICAgICAgIGNvbHM6IGMubnVtYmVyLm9wdGlvbmFsXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSk7XG5cdCAgfVxuXHQgIGFkZFRleHRhcmVhVHlwZS4kaW5qZWN0ID0gW1wiZm9ybWx5Q29uZmlnUHJvdmlkZXJcIiwgXCJmb3JtbHlCb290c3RyYXBBcGlDaGVja1wiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDE1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAobmdNb2R1bGUpIHtcblx0ICBuZ01vZHVsZS5ydW4oYWRkQWRkb25zTWFuaXB1bGF0b3IpO1xuXHRcblx0ICBmdW5jdGlvbiBhZGRBZGRvbnNNYW5pcHVsYXRvcihmb3JtbHlDb25maWcsIGZvcm1seUJvb3RzdHJhcEFwaUNoZWNrKSB7XG5cdCAgICB2YXIgYWRkb25UZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpO1xuXHQgICAgdmFyIGFkZG9uQ2hlY2tlciA9IGZvcm1seUJvb3RzdHJhcEFwaUNoZWNrLnNoYXBlKHtcblx0ICAgICAgJ2NsYXNzJzogZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2suc3RyaW5nLm9wdGlvbmFsLFxuXHQgICAgICB0ZXh0OiBmb3JtbHlCb290c3RyYXBBcGlDaGVjay5zdHJpbmcub3B0aW9uYWwsXG5cdCAgICAgIG9uQ2xpY2s6IGZvcm1seUJvb3RzdHJhcEFwaUNoZWNrLmZ1bmMub3B0aW9uYWxcblx0ICAgIH0pLnN0cmljdC5vcHRpb25hbDtcblx0ICAgIHZhciBhcGkgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjay5zaGFwZSh7XG5cdCAgICAgIHRlbXBsYXRlT3B0aW9uczogZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgICAgIGFkZG9uTGVmdDogYWRkb25DaGVja2VyLFxuXHQgICAgICAgIGFkZG9uUmlnaHQ6IGFkZG9uQ2hlY2tlclxuXHQgICAgICB9KVxuXHQgICAgfSk7XG5cdCAgICBmb3JtbHlDb25maWcudGVtcGxhdGVNYW5pcHVsYXRvcnMucHJlV3JhcHBlci5wdXNoKGZ1bmN0aW9uICh0ZW1wbGF0ZSwgb3B0aW9ucykge1xuXHQgICAgICBpZiAoIW9wdGlvbnMudGVtcGxhdGVPcHRpb25zLmFkZG9uTGVmdCAmJiAhb3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnMuYWRkb25SaWdodCkge1xuXHQgICAgICAgIHJldHVybiB0ZW1wbGF0ZTtcblx0ICAgICAgfVxuXHQgICAgICBmb3JtbHlCb290c3RyYXBBcGlDaGVjay53YXJuKFthcGldLCBbb3B0aW9uc10pO1xuXHQgICAgICByZXR1cm4gYWRkb25UZW1wbGF0ZS5yZXBsYWNlKCc8Zm9ybWx5LXRyYW5zY2x1ZGU+PC9mb3JtbHktdHJhbnNjbHVkZT4nLCB0ZW1wbGF0ZSk7XG5cdCAgICB9KTtcblx0ICB9XG5cdCAgYWRkQWRkb25zTWFuaXB1bGF0b3IuJGluamVjdCA9IFtcImZvcm1seUNvbmZpZ1wiLCBcImZvcm1seUJvb3RzdHJhcEFwaUNoZWNrXCJdO1xuXHR9O1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG4vKioqLyB9LFxuLyogMTYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgIG5nTW9kdWxlLnJ1bihhZGREZXNjcmlwdGlvbk1hbmlwdWxhdG9yKTtcblx0XG5cdCAgZnVuY3Rpb24gYWRkRGVzY3JpcHRpb25NYW5pcHVsYXRvcihmb3JtbHlDb25maWcpIHtcblx0ICAgIGZvcm1seUNvbmZpZy50ZW1wbGF0ZU1hbmlwdWxhdG9ycy5wcmVXcmFwcGVyLnB1c2goZnVuY3Rpb24gYXJpYURlc2NyaWJlZEJ5KHRlbXBsYXRlLCBvcHRpb25zLCBzY29wZSkge1xuXHQgICAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQob3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24pKSB7XG5cdCAgICAgICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdCAgICAgICAgZWwuYXBwZW5kQ2hpbGQoYW5ndWxhci5lbGVtZW50KHRlbXBsYXRlKVswXSk7XG5cdCAgICAgICAgZWwuYXBwZW5kQ2hpbGQoYW5ndWxhci5lbGVtZW50KCc8cCBpZD1cIicgKyBzY29wZS5pZCArICdfZGVzY3JpcHRpb25cIicgKyAnY2xhc3M9XCJoZWxwLWJsb2NrXCInICsgJ25nLWlmPVwidG8uZGVzY3JpcHRpb25cIj4nICsgJ3t7dG8uZGVzY3JpcHRpb259fScgKyAnPC9wPicpWzBdKTtcblx0ICAgICAgICB2YXIgbW9kZWxFbHMgPSBhbmd1bGFyLmVsZW1lbnQoZWwucXVlcnlTZWxlY3RvckFsbCgnW25nLW1vZGVsXScpKTtcblx0ICAgICAgICBpZiAobW9kZWxFbHMpIHtcblx0ICAgICAgICAgIG1vZGVsRWxzLmF0dHIoJ2FyaWEtZGVzY3JpYmVkYnknLCBzY29wZS5pZCArICdfZGVzY3JpcHRpb24nKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGVsLmlubmVySFRNTDtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICByZXR1cm4gdGVtcGxhdGU7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgIH1cblx0ICBhZGREZXNjcmlwdGlvbk1hbmlwdWxhdG9yLiRpbmplY3QgPSBbXCJmb3JtbHlDb25maWdcIl07XG5cdH07XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cbi8qKiovIH0sXG4vKiAxNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBcIjxkaXY+XFxuICA8bGFiZWwgZm9yPVxcXCJ7e2lkfX1cXFwiIGNsYXNzPVxcXCJjb250cm9sLWxhYmVsXFxcIj5cXG4gICAge3t0by5sYWJlbH19XFxuICAgIHt7dG8ucmVxdWlyZWQgPyAnKicgOiAnJ319XFxuICA8L2xhYmVsPlxcbiAgPGZvcm1seS10cmFuc2NsdWRlPjwvZm9ybWx5LXRyYW5zY2x1ZGU+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfSxcbi8qIDE4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCIgbmctY2xhc3M9XFxcInsnaGFzLWVycm9yJzogc2hvd0Vycm9yfVxcXCI+XFxuICA8Zm9ybWx5LXRyYW5zY2x1ZGU+PC9mb3JtbHktdHJhbnNjbHVkZT5cXG48L2Rpdj5cXG5cIlxuXG4vKioqLyB9LFxuLyogMTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IGNsYXNzPVxcXCJyYWRpby1ncm91cFxcXCI+XFxuICA8ZGl2IG5nLXJlcGVhdD1cXFwiKGtleSwgb3B0aW9uKSBpbiB0by5vcHRpb25zXFxcIiBjbGFzcz1cXFwicmFkaW9cXFwiPlxcbiAgICA8bGFiZWw+XFxuICAgICAgPGlucHV0IHR5cGU9XFxcInJhZGlvXFxcIlxcbiAgICAgICAgICAgICBpZD1cXFwie3tpZCArICdfJysgJGluZGV4fX1cXFwiXFxuICAgICAgICAgICAgIHRhYmluZGV4PVxcXCIwXFxcIlxcbiAgICAgICAgICAgICBuZy12YWx1ZT1cXFwib3B0aW9uW3RvLnZhbHVlUHJvcCB8fCAndmFsdWUnXVxcXCJcXG4gICAgICAgICAgICAgbmctbW9kZWw9XFxcIm1vZGVsW29wdGlvbnMua2V5XVxcXCI+XFxuICAgICAge3tvcHRpb25bdG8ubGFiZWxQcm9wIHx8ICduYW1lJ119fVxcbiAgICA8L2xhYmVsPlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfSxcbi8qIDIwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwiY2hlY2tib3hcXFwiPlxcblxcdDxsYWJlbD5cXG5cXHRcXHQ8aW5wdXQgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICBjbGFzcz1cXFwiZm9ybWx5LWZpZWxkLWNoZWNrYm94XFxcIlxcblxcdFxcdCAgICAgICBuZy1tb2RlbD1cXFwibW9kZWxbb3B0aW9ucy5rZXldXFxcIj5cXG5cXHRcXHR7e3RvLmxhYmVsfX1cXG5cXHRcXHR7e3RvLnJlcXVpcmVkID8gJyonIDogJyd9fVxcblxcdDwvbGFiZWw+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfSxcbi8qIDIxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicmFkaW8tZ3JvdXBcXFwiPlxcbiAgPGRpdiBuZy1yZXBlYXQ9XFxcIihrZXksIG9wdGlvbikgaW4gdG8ub3B0aW9uc1xcXCIgY2xhc3M9XFxcImNoZWNrYm94XFxcIj5cXG4gICAgPGxhYmVsPlxcbiAgICAgIDxpbnB1dCB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICAgaWQ9XFxcInt7aWQgKyAnXycrICRpbmRleH19XFxcIlxcbiAgICAgICAgICAgICBuZy1tb2RlbD1cXFwibXVsdGlDaGVja2JveC5jaGVja2VkWyRpbmRleF1cXFwiXFxuICAgICAgICAgICAgIG5nLWNoYW5nZT1cXFwibXVsdGlDaGVja2JveC5jaGFuZ2UoKVxcXCI+XFxuICAgICAge3tvcHRpb25bdG8ubGFiZWxQcm9wIHx8ICduYW1lJ119fVxcbiAgICA8L2xhYmVsPlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfSxcbi8qIDIyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBuZy1jbGFzcz1cXFwieydpbnB1dC1ncm91cCc6IHRvLmFkZG9uTGVmdCB8fCB0by5hZGRvblJpZ2h0fVxcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcImlucHV0LWdyb3VwLWFkZG9uXFxcIlxcbiAgICAgICAgIG5nLWlmPVxcXCJ0by5hZGRvbkxlZnRcXFwiXFxuICAgICAgICAgbmctc3R5bGU9XFxcIntjdXJzb3I6IHRvLmFkZG9uTGVmdC5vbkNsaWNrID8gJ3BvaW50ZXInIDogJ2luaGVyaXQnfVxcXCJcXG4gICAgICAgICBuZy1jbGljaz1cXFwidG8uYWRkb25MZWZ0Lm9uQ2xpY2sob3B0aW9ucywgdGhpcylcXFwiPlxcbiAgICAgICAgPGkgY2xhc3M9XFxcInt7dG8uYWRkb25MZWZ0LmNsYXNzfX1cXFwiIG5nLWlmPVxcXCJ0by5hZGRvbkxlZnQuY2xhc3NcXFwiPjwvaT5cXG4gICAgICAgIDxzcGFuIG5nLWlmPVxcXCJ0by5hZGRvbkxlZnQudGV4dFxcXCI+e3t0by5hZGRvbkxlZnQudGV4dH19PC9zcGFuPlxcbiAgICA8L2Rpdj5cXG4gICAgPGZvcm1seS10cmFuc2NsdWRlPjwvZm9ybWx5LXRyYW5zY2x1ZGU+XFxuICAgIDxkaXYgY2xhc3M9XFxcImlucHV0LWdyb3VwLWFkZG9uXFxcIlxcbiAgICAgICAgIG5nLWlmPVxcXCJ0by5hZGRvblJpZ2h0XFxcIlxcbiAgICAgICAgIG5nLXN0eWxlPVxcXCJ7Y3Vyc29yOiB0by5hZGRvblJpZ2h0Lm9uQ2xpY2sgPyAncG9pbnRlcicgOiAnaW5oZXJpdCd9XFxcIlxcbiAgICAgICAgIG5nLWNsaWNrPVxcXCJ0by5hZGRvblJpZ2h0Lm9uQ2xpY2sob3B0aW9ucywgdGhpcylcXFwiPlxcbiAgICAgICAgPGkgY2xhc3M9XFxcInt7dG8uYWRkb25SaWdodC5jbGFzc319XFxcIiBuZy1pZj1cXFwidG8uYWRkb25SaWdodC5jbGFzc1xcXCI+PC9pPlxcbiAgICAgICAgPHNwYW4gbmctaWY9XFxcInRvLmFkZG9uUmlnaHQudGV4dFxcXCI+e3t0by5hZGRvblJpZ2h0LnRleHR9fTwvc3Bhbj5cXG4gICAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfVxuLyoqKioqKi8gXSlcbn0pO1xuO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YW5ndWxhci1mb3JtbHktdGVtcGxhdGVzLWJvb3RzdHJhcC5qcy5tYXBcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vYW5ndWxhci1mb3JtbHktdGVtcGxhdGVzLWJvb3RzdHJhcC9kaXN0L2FuZ3VsYXItZm9ybWx5LXRlbXBsYXRlcy1ib290c3RyYXAuanNcbi8vIG1vZHVsZSBpZCA9IDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 6 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _edaEasyFormViewerMain = __webpack_require__(7);\n\nvar _edaEasyFormViewerMain2 = _interopRequireDefault(_edaEasyFormViewerMain);\n\nvar _edaEasyFormViewerCore = __webpack_require__(12);\n\nvar _edaEasyFormViewerCore2 = _interopRequireDefault(_edaEasyFormViewerCore);\n\nvar _edaEasyFormViewerModelTranslator = __webpack_require__(13);\n\nvar _edaEasyFormViewerModelTranslator2 = _interopRequireDefault(_edaEasyFormViewerModelTranslator);\n\nvar _formlyConfig = __webpack_require__(56);\n\nvar _formlyConfig2 = _interopRequireDefault(_formlyConfig);\n\nvar _easyFormConfig = __webpack_require__(58);\n\nvar _easyFormConfig2 = _interopRequireDefault(_easyFormConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DEP_TO_INJECT_IN_MAIN = [_edaEasyFormViewerMain2.default.name, _edaEasyFormViewerCore2.default.name, _edaEasyFormViewerModelTranslator2.default.name];\n\nvar EASY_FORM_VIEWER_VERSION_NAME = 'easyFormViewerVersion';\nvar EASY_FORM_VIEWER_VERSION_VALUE = _easyFormConfig2.default.formviewer.version;\nvar MAIN_MODULE_NAME = 'eda.easyFormViewer';\n\nvar mainModule = angular.module(MAIN_MODULE_NAME, DEP_TO_INJECT_IN_MAIN).config(_formlyConfig2.default).value(EASY_FORM_VIEWER_VERSION_NAME, EASY_FORM_VIEWER_VERSION_VALUE);\n\nexports.default = mainModule;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Zvcm12aWV3ZXIvbWFpbi5qcz83Y2Y3Il0sIm5hbWVzIjpbIkRFUF9UT19JTkpFQ1RfSU5fTUFJTiIsIm5hbWUiLCJFQVNZX0ZPUk1fVklFV0VSX1ZFUlNJT05fTkFNRSIsIkVBU1lfRk9STV9WSUVXRVJfVkVSU0lPTl9WQUxVRSIsImZvcm12aWV3ZXIiLCJ2ZXJzaW9uIiwiTUFJTl9NT0RVTEVfTkFNRSIsIm1haW5Nb2R1bGUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29uZmlnIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUVBOzs7O0FBRUE7Ozs7OztBQUVBLElBQU1BLHdCQUF3QixDQUM1QixnQ0FBd0JDLElBREksRUFFNUIsZ0NBQXdCQSxJQUZJLEVBRzVCLDJDQUFtQ0EsSUFIUCxDQUE5Qjs7QUFNQSxJQUFNQyxnQ0FBa0MsdUJBQXhDO0FBQ0EsSUFBTUMsaUNBQWtDLHlCQUFlQyxVQUFmLENBQTBCQyxPQUFsRTtBQUNBLElBQU1DLG1CQUFrQyxvQkFBeEM7O0FBRUEsSUFBTUMsYUFBYUMsUUFDQUMsTUFEQSxDQUNPSCxnQkFEUCxFQUN5Qk4scUJBRHpCLEVBRUFVLE1BRkEseUJBR0FDLEtBSEEsQ0FHTVQsNkJBSE4sRUFHcUNDLDhCQUhyQyxDQUFuQjs7a0JBS2VJLFUiLCJmaWxlIjoiNi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlZGFGb3JtVmlld2VyTWFpbk1vZHVsZSAgICAgICAgICAgIGZyb20gJy4vY29tcG9uZW50cy9tYWluL2VkYS5lYXN5Rm9ybVZpZXdlci5tYWluLm1vZHVsZSc7XG5pbXBvcnQgZWRhRm9ybVZpZXdlckNvcmVNb2R1bGUgICAgICAgICAgICBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9lZGEuZWFzeUZvcm1WaWV3ZXIuY29yZS5tb2R1bGUnO1xuaW1wb3J0IGVkYUZvcm1WaWV3ZXJNb2RlbFRyYW5zbGF0b3JNb2R1bGUgZnJvbSAnLi9jb21wb25lbnRzL21vZGVsc1RyYW5zbGF0b3IvZWRhLmVhc3lGb3JtVmlld2VyLm1vZGVsVHJhbnNsYXRvci5tb2R1bGUnO1xuXG5pbXBvcnQgZWRhRWFzeUZvcm1WaWV3ZXJDb25maWcgICAgICAgICAgICBmcm9tICcuLi9zdGVwd2F5L2NvbmZpZy9mb3JtbHkvZm9ybWx5LmNvbmZpZy5qcyc7XG5cbmltcG9ydCBlYXN5Rm9ybUNvbmZpZyAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2Vhc3lGb3JtQ29uZmlnLmpzb24nO1xuXG5jb25zdCBERVBfVE9fSU5KRUNUX0lOX01BSU4gPSBbXG4gIGVkYUZvcm1WaWV3ZXJNYWluTW9kdWxlLm5hbWUsXG4gIGVkYUZvcm1WaWV3ZXJDb3JlTW9kdWxlLm5hbWUsXG4gIGVkYUZvcm1WaWV3ZXJNb2RlbFRyYW5zbGF0b3JNb2R1bGUubmFtZVxuXTtcblxuY29uc3QgRUFTWV9GT1JNX1ZJRVdFUl9WRVJTSU9OX05BTUUgICA9ICdlYXN5Rm9ybVZpZXdlclZlcnNpb24nO1xuY29uc3QgRUFTWV9GT1JNX1ZJRVdFUl9WRVJTSU9OX1ZBTFVFICA9IGVhc3lGb3JtQ29uZmlnLmZvcm12aWV3ZXIudmVyc2lvbjtcbmNvbnN0IE1BSU5fTU9EVUxFX05BTUUgICAgICAgICAgICAgICAgPSAnZWRhLmVhc3lGb3JtVmlld2VyJztcblxuY29uc3QgbWFpbk1vZHVsZSA9IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAgIC5tb2R1bGUoTUFJTl9NT0RVTEVfTkFNRSwgREVQX1RPX0lOSkVDVF9JTl9NQUlOKVxuICAgICAgICAgICAgICAgICAgLmNvbmZpZyhlZGFFYXN5Rm9ybVZpZXdlckNvbmZpZylcbiAgICAgICAgICAgICAgICAgIC52YWx1ZShFQVNZX0ZPUk1fVklFV0VSX1ZFUlNJT05fTkFNRSwgRUFTWV9GT1JNX1ZJRVdFUl9WRVJTSU9OX1ZBTFVFKTtcblxuZXhwb3J0IGRlZmF1bHQgbWFpbk1vZHVsZTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZm9ybXZpZXdlci9tYWluLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 7 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _edaEasyFormViewerMain = __webpack_require__(8);\n\nvar _edaEasyFormViewerMain2 = _interopRequireDefault(_edaEasyFormViewerMain);\n\nvar _edaEasyFormViewerMain3 = __webpack_require__(11);\n\nvar _edaEasyFormViewerMain4 = _interopRequireDefault(_edaEasyFormViewerMain3);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* global angular */\nvar FORM_VIEWER_MAIN_MODULE_NAME = 'edaFormViewerMainModule';\n\nexports.default = angular.module(FORM_VIEWER_MAIN_MODULE_NAME, []).directive(_edaEasyFormViewerMain.EASY_FORM_VIEWER_DIRECTIVE_NAME, _edaEasyFormViewerMain2.default).controller(_edaEasyFormViewerMain3.EASY_FORM_VIEWER_CONTROLLER, _edaEasyFormViewerMain4.default);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Zvcm12aWV3ZXIvY29tcG9uZW50cy9tYWluL2VkYS5lYXN5Rm9ybVZpZXdlci5tYWluLm1vZHVsZS5qcz80ZDY1Il0sIm5hbWVzIjpbIkZPUk1fVklFV0VSX01BSU5fTU9EVUxFX05BTUUiLCJhbmd1bGFyIiwibW9kdWxlIiwiZGlyZWN0aXZlIiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0E7Ozs7QUFJQTs7Ozs7O0FBTEE7QUFTQSxJQUFNQSwrQkFBK0IseUJBQXJDOztrQkFFZUMsUUFDTkMsTUFETSxDQUNDRiw0QkFERCxFQUMrQixFQUQvQixFQUVORyxTQUZNLDBGQUdOQyxVQUhNLHNGIiwiZmlsZSI6IjcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgYW5ndWxhciAqL1xuaW1wb3J0IGVkYUZvcm1WaWV3ZXJEaXJlY3RpdmUsIHtcblx0RUFTWV9GT1JNX1ZJRVdFUl9ESVJFQ1RJVkVfTkFNRVxufVx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmcm9tICcuL2VkYS5lYXN5Rm9ybVZpZXdlci5tYWluLmRpcmVjdGl2ZSc7XG5cbmltcG9ydCBlZGFFYXN5Rm9ybVZpZXdlckNvbnRyb2xsZXIsIHtcblx0RUFTWV9GT1JNX1ZJRVdFUl9DT05UUk9MTEVSXG59XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZyb20gJy4vZWRhLmVhc3lGb3JtVmlld2VyLm1haW4uY29udHJvbGxlcic7XG5cbmNvbnN0IEZPUk1fVklFV0VSX01BSU5fTU9EVUxFX05BTUUgPSAnZWRhRm9ybVZpZXdlck1haW5Nb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG5cdFx0XHRcdFx0XHRcdFx0Lm1vZHVsZShGT1JNX1ZJRVdFUl9NQUlOX01PRFVMRV9OQU1FLCBbXSlcblx0XHRcdFx0XHRcdFx0XHQuZGlyZWN0aXZlKEVBU1lfRk9STV9WSUVXRVJfRElSRUNUSVZFX05BTUUsIGVkYUZvcm1WaWV3ZXJEaXJlY3RpdmUpXG5cdFx0XHRcdFx0XHRcdFx0LmNvbnRyb2xsZXIoRUFTWV9GT1JNX1ZJRVdFUl9DT05UUk9MTEVSLCBlZGFFYXN5Rm9ybVZpZXdlckNvbnRyb2xsZXIpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9mb3Jtdmlld2VyL2NvbXBvbmVudHMvbWFpbi9lZGEuZWFzeUZvcm1WaWV3ZXIubWFpbi5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 8 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.EASY_FORM_VIEWER_DIRECTIVE_NAME = undefined;\n\nvar _edaEasyFormViewerMainTemplate = __webpack_require__(9);\n\nvar _edaEasyFormViewerMainTemplate2 = _interopRequireDefault(_edaEasyFormViewerMainTemplate);\n\nvar _edaEasyFormViewerMainDirective = __webpack_require__(10);\n\nvar _edaEasyFormViewerMain = __webpack_require__(11);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EASY_FORM_VIEWER_DIRECTIVE_NAME = 'edaEasyFormViewer'; /* global angular */\n\n\nfunction edaFormViewerDirective($modelsTranslator) {\n\tvar directive = {\n\t\trestrict: 'E',\n\t\tscope: {\n\t\t\tedaEasyFormViewerDataModel: '=?',\n\t\t\tedaEasyFormViewerEasyFormGeneratorFieldsModel: '=?',\n\t\t\tedaEasyFormViewerSubmitButtonText: '@?',\n\t\t\tedaEasyFormViewerCancelButtonText: '@?',\n\t\t\tedaEasyFormViewerSubmitFormEvent: '&?',\n\t\t\tedaEasyFormViewerCancelFormEvent: '&?'\n\t\t},\n\t\treplace: false,\n\t\tcontroller: _edaEasyFormViewerMain.EASY_FORM_VIEWER_CONTROLLER,\n\t\tcontrollerAs: _edaEasyFormViewerMain.EASY_FORM_VIEWER_CONTROLLERAS,\n\t\ttemplate: _edaEasyFormViewerMainTemplate2.default,\n\t\tlink: linkFct\n\t};\n\treturn directive;\n\n\tfunction linkFct(scope) {\n\t\tscope.vm.model = scope.edaEasyFormViewerDataModel;\n\t\tscope.vm.fields = loadFieldsModel();\n\t\tscope.vm.submitText = scope.edaEasyFormViewerSubmitButtonText || 'Submit';\n\t\tscope.vm.cancelText = scope.edaEasyFormViewerCancelButtonText || 'Cancel';\n\n\t\tscope.$watch(fieldsModelToWatch, fieldsModelWatcher, true);\n\t\tscope.$watch(dataModelToWatch, dataModelWatcher, true);\n\t\tscope.$watch(submitBtnTextToWatch, submitBtnTextWatcher);\n\t\tscope.$watch(cancelBtnTextToWatch, cancelBtnTextWatcher);\n\t\tscope.$watch(submitEventToWatch, submitEventWatcher);\n\t\tscope.$watch(cancelEventToWatch, cancelEventWatcher);\n\n\t\tfunction dataModelToWatch() {\n\t\t\treturn scope.edaEasyFormViewerDataModel;\n\t\t}\n\n\t\tfunction fieldsModelToWatch() {\n\t\t\treturn scope.edaEasyFormViewerEasyFormGeneratorFieldsModel;\n\t\t}\n\n\t\tfunction submitBtnTextToWatch() {\n\t\t\treturn scope.edaEasyFormViewerSubmitButtonText;\n\t\t}\n\n\t\tfunction cancelBtnTextToWatch() {\n\t\t\treturn scope.edaEasyFormViewerCancelButtonText;\n\t\t}\n\n\t\tfunction submitEventToWatch() {\n\t\t\treturn scope.vm.hasJustSumitted;\n\t\t}\n\n\t\tfunction cancelEventToWatch() {\n\t\t\treturn scope.vm.hasJustCancelled;\n\t\t}\n\n\t\tfunction fieldsModelWatcher(newFieldsModel) {\n\t\t\tscope.vm.fields = loadExistingConfigurationModel(newFieldsModel);\n\t\t}\n\n\t\tfunction submitBtnTextWatcher(newSubmitBtntext, oldSubmitBtntext) {\n\t\t\tif (newSubmitBtntext !== oldSubmitBtntext) {\n\t\t\t\tscope.vm.submitText = newSubmitBtntext || 'Submit';\n\t\t\t}\n\t\t}\n\n\t\tfunction cancelBtnTextWatcher(newCancelBtntext, oldCancelBtntext) {\n\t\t\tif (newCancelBtntext !== oldCancelBtntext) {\n\t\t\t\tscope.vm.cancelText = newCancelBtntext || 'Submit';\n\t\t\t}\n\t\t}\n\n\t\tfunction dataModelWatcher(newDataModel) {\n\t\t\tscope.vm.model = angular.copy(newDataModel);\n\t\t}\n\n\t\tfunction submitEventWatcher(newSubmitEvent) {\n\t\t\tif (newSubmitEvent === true) {\n\t\t\t\tif (angular.isFunction(scope.edaEasyFormViewerSubmitFormEvent)) {\n\t\t\t\t\tvar _dataModelSubmitted = scope.vm.model;\n\t\t\t\t\tscope.edaEasyFormViewerSubmitFormEvent({ dataModelSubmitted: _dataModelSubmitted });\n\t\t\t\t}\n\t\t\t}\n\t\t\tscope.vm.hasJustSumitted = false;\n\t\t}\n\n\t\tfunction cancelEventWatcher(newCancelEvent) {\n\t\t\tif (newCancelEvent === true) {\n\t\t\t\tif (angular.isFunction(scope.edaEasyFormViewerCancelFormEvent)) {\n\t\t\t\t\tscope.edaEasyFormViewerCancelFormEvent();\n\t\t\t\t}\n\t\t\t}\n\t\t\tscope.vm.hasJustCancelled = false;\n\t\t}\n\n\t\t/**\n \t* TODO : check if formly or easy form generato fields model\n \t*\n \t* by default or if both -> easy for generator is chosen\n \t*/\n\t\tfunction loadFieldsModel() {\n\t\t\tvar initialFieldsModel = angular.isArray(scope.edaEasyFormViewerEasyFormGeneratorFieldsModel) ? loadExistingConfigurationModel(scope.edaEasyFormViewerEasyFormGeneratorFieldsModel) //translate easy form generator to formly fields model\n\t\t\t: {};\n\t\t\treturn initialFieldsModel;\n\t\t}\n\n\t\tfunction loadExistingConfigurationModel(loadedFieldModel) {\n\n\t\t\tif (angular.isArray(loadedFieldModel)) {\n\t\t\t\tvar configlines = (0, _edaEasyFormViewerMainDirective.returnAttributeConfigurationLinesIfNotEmpty)(loadedFieldModel);\n\t\t\t\tvar formlyFieldsModel = [];\n\n\t\t\t\tscope.configurationLoaded = {};\n\n\t\t\t\t$modelsTranslator.bindConfigurationLines(scope.configurationLoaded, configlines);\n\t\t\t\t/**\n \t* rebind special control properties :\n \t*\n \t* formly expression properties\n \t* Validators\n \t* Validation\n \t*/\n\t\t\t\t$modelsTranslator.refreshControlFormlyExpressionProperties(scope.configurationLoaded);\n\t\t\t\t$modelsTranslator.refreshControlFormlyValidators(scope.configurationLoaded);\n\t\t\t\t$modelsTranslator.refreshControlFormlyValidation(scope.configurationLoaded);\n\n\t\t\t\t//apply configuration model\n\t\t\t\tscope.configuration = angular.copy(scope.configurationLoaded);\n\n\t\t\t\t//apply formly model\n\t\t\t\t$modelsTranslator.applyConfigurationToformlyModel(scope.configurationLoaded, formlyFieldsModel, scope.vm.model);\n\n\t\t\t\treturn formlyFieldsModel;\n\t\t\t}\n\t\t}\n\t}\n}\n\nedaFormViewerDirective.$inject = ['$modelsTranslator'];\nexports.default = edaFormViewerDirective;\nexports.EASY_FORM_VIEWER_DIRECTIVE_NAME = EASY_FORM_VIEWER_DIRECTIVE_NAME;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Zvcm12aWV3ZXIvY29tcG9uZW50cy9tYWluL2VkYS5lYXN5Rm9ybVZpZXdlci5tYWluLmRpcmVjdGl2ZS5qcz9jNmY2Il0sIm5hbWVzIjpbIkVBU1lfRk9STV9WSUVXRVJfRElSRUNUSVZFX05BTUUiLCJlZGFGb3JtVmlld2VyRGlyZWN0aXZlIiwiJG1vZGVsc1RyYW5zbGF0b3IiLCJkaXJlY3RpdmUiLCJyZXN0cmljdCIsInNjb3BlIiwiZWRhRWFzeUZvcm1WaWV3ZXJEYXRhTW9kZWwiLCJlZGFFYXN5Rm9ybVZpZXdlckVhc3lGb3JtR2VuZXJhdG9yRmllbGRzTW9kZWwiLCJlZGFFYXN5Rm9ybVZpZXdlclN1Ym1pdEJ1dHRvblRleHQiLCJlZGFFYXN5Rm9ybVZpZXdlckNhbmNlbEJ1dHRvblRleHQiLCJlZGFFYXN5Rm9ybVZpZXdlclN1Ym1pdEZvcm1FdmVudCIsImVkYUVhc3lGb3JtVmlld2VyQ2FuY2VsRm9ybUV2ZW50IiwicmVwbGFjZSIsImNvbnRyb2xsZXIiLCJjb250cm9sbGVyQXMiLCJ0ZW1wbGF0ZSIsImxpbmsiLCJsaW5rRmN0Iiwidm0iLCJtb2RlbCIsImZpZWxkcyIsImxvYWRGaWVsZHNNb2RlbCIsInN1Ym1pdFRleHQiLCJjYW5jZWxUZXh0IiwiJHdhdGNoIiwiZmllbGRzTW9kZWxUb1dhdGNoIiwiZmllbGRzTW9kZWxXYXRjaGVyIiwiZGF0YU1vZGVsVG9XYXRjaCIsImRhdGFNb2RlbFdhdGNoZXIiLCJzdWJtaXRCdG5UZXh0VG9XYXRjaCIsInN1Ym1pdEJ0blRleHRXYXRjaGVyIiwiY2FuY2VsQnRuVGV4dFRvV2F0Y2giLCJjYW5jZWxCdG5UZXh0V2F0Y2hlciIsInN1Ym1pdEV2ZW50VG9XYXRjaCIsInN1Ym1pdEV2ZW50V2F0Y2hlciIsImNhbmNlbEV2ZW50VG9XYXRjaCIsImNhbmNlbEV2ZW50V2F0Y2hlciIsImhhc0p1c3RTdW1pdHRlZCIsImhhc0p1c3RDYW5jZWxsZWQiLCJuZXdGaWVsZHNNb2RlbCIsImxvYWRFeGlzdGluZ0NvbmZpZ3VyYXRpb25Nb2RlbCIsIm5ld1N1Ym1pdEJ0bnRleHQiLCJvbGRTdWJtaXRCdG50ZXh0IiwibmV3Q2FuY2VsQnRudGV4dCIsIm9sZENhbmNlbEJ0bnRleHQiLCJuZXdEYXRhTW9kZWwiLCJhbmd1bGFyIiwiY29weSIsIm5ld1N1Ym1pdEV2ZW50IiwiaXNGdW5jdGlvbiIsIl9kYXRhTW9kZWxTdWJtaXR0ZWQiLCJkYXRhTW9kZWxTdWJtaXR0ZWQiLCJuZXdDYW5jZWxFdmVudCIsImluaXRpYWxGaWVsZHNNb2RlbCIsImlzQXJyYXkiLCJsb2FkZWRGaWVsZE1vZGVsIiwiY29uZmlnbGluZXMiLCJmb3JtbHlGaWVsZHNNb2RlbCIsImNvbmZpZ3VyYXRpb25Mb2FkZWQiLCJiaW5kQ29uZmlndXJhdGlvbkxpbmVzIiwicmVmcmVzaENvbnRyb2xGb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyIsInJlZnJlc2hDb250cm9sRm9ybWx5VmFsaWRhdG9ycyIsInJlZnJlc2hDb250cm9sRm9ybWx5VmFsaWRhdGlvbiIsImNvbmZpZ3VyYXRpb24iLCJhcHBseUNvbmZpZ3VyYXRpb25Ub2Zvcm1seU1vZGVsIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7O0FBRUE7O0FBSUE7Ozs7QUFLQSxJQUFNQSxrQ0FBa0MsbUJBQXhDLEMsQ0FaQTs7O0FBY0EsU0FBU0Msc0JBQVQsQ0FBZ0NDLGlCQUFoQyxFQUFrRDtBQUNoRCxLQUFJQyxZQUFZO0FBQ2ZDLFlBQVksR0FERztBQUVmQyxTQUFVO0FBQ1RDLCtCQUF1QyxJQUQ5QjtBQUVUQyxrREFBZ0QsSUFGdkM7QUFHVEMsc0NBQTBDLElBSGpDO0FBSVRDLHNDQUEwQyxJQUpqQztBQUtUQyxxQ0FBMEMsSUFMakM7QUFNVEMscUNBQXlDO0FBTmhDLEdBRks7QUFVZkMsV0FBYSxLQVZFO0FBV2ZDLGdFQVhlO0FBWWZDLG9FQVplO0FBYWZDLG1EQWJlO0FBY2ZDLFFBQVlDO0FBZEcsRUFBaEI7QUFnQkQsUUFBT2Qs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QUNQRCwrQixHQUFBQSwrQiIsImZpbGUiOiI4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGFuZ3VsYXIgKi9cbmltcG9ydCBlYXN5Rm9ybVZpZXdlclRlbXBsYXRlIFx0XHRcdFx0ZnJvbSAnLi9lZGEuZWFzeUZvcm1WaWV3ZXIubWFpbi50ZW1wbGF0ZS5odG1sJztcblxuaW1wb3J0IHtcblx0cmV0dXJuQXR0cmlidXRlQ29uZmlndXJhdGlvbkxpbmVzSWZOb3RFbXB0eVxuXHR9XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZnJvbSAnLi9lZGEuZWFzeUZvcm1WaWV3ZXIubWFpbi5kaXJlY3RpdmUuaGVscGVycyc7XG5cbmltcG9ydCAge1xuXHRFQVNZX0ZPUk1fVklFV0VSX0NPTlRST0xMRVIsXG5cdEVBU1lfRk9STV9WSUVXRVJfQ09OVFJPTExFUkFTXG59IFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZyb20gJy4vZWRhLmVhc3lGb3JtVmlld2VyLm1haW4uY29udHJvbGxlcic7XG5cbmNvbnN0IEVBU1lfRk9STV9WSUVXRVJfRElSRUNUSVZFX05BTUUgPSAnZWRhRWFzeUZvcm1WaWV3ZXInO1xuXG5mdW5jdGlvbiBlZGFGb3JtVmlld2VyRGlyZWN0aXZlKCRtb2RlbHNUcmFuc2xhdG9yKXtcblx0XHR2YXIgZGlyZWN0aXZlID0ge1xuXHRcdFx0cmVzdHJpY3QgXHQ6ICdFJyxcblx0XHRcdHNjb3BlIFx0XHQ6IHtcblx0XHRcdFx0ZWRhRWFzeUZvcm1WaWV3ZXJEYXRhTW9kZWwgXHRcdFx0XHRcdFx0XHRcdFx0XHQ6ICc9PycsXG5cdFx0XHRcdGVkYUVhc3lGb3JtVmlld2VyRWFzeUZvcm1HZW5lcmF0b3JGaWVsZHNNb2RlbCA6ICc9PycsXG5cdFx0XHRcdGVkYUVhc3lGb3JtVmlld2VyU3VibWl0QnV0dG9uVGV4dCBcdFx0XHRcdFx0XHQ6ICdAPycsXG5cdFx0XHRcdGVkYUVhc3lGb3JtVmlld2VyQ2FuY2VsQnV0dG9uVGV4dCBcdFx0XHRcdFx0XHQ6ICdAPycsXG5cdFx0XHRcdGVkYUVhc3lGb3JtVmlld2VyU3VibWl0Rm9ybUV2ZW50ICBcdFx0XHRcdFx0XHQ6ICcmPycsXG5cdFx0XHRcdGVkYUVhc3lGb3JtVmlld2VyQ2FuY2VsRm9ybUV2ZW50XHRcdFx0XHRcdFx0XHQ6ICcmPydcblx0XHRcdH0sXG5cdFx0XHRyZXBsYWNlIFx0XHRcdDogZmFsc2UsXG5cdFx0XHRjb250cm9sbGVyXHRcdDogRUFTWV9GT1JNX1ZJRVdFUl9DT05UUk9MTEVSLFxuXHRcdFx0Y29udHJvbGxlckFzIFx0OiBFQVNZX0ZPUk1fVklFV0VSX0NPTlRST0xMRVJBUyxcblx0XHRcdHRlbXBsYXRlIFx0XHRcdDogZWFzeUZvcm1WaWV3ZXJUZW1wbGF0ZSxcblx0XHRcdGxpbmsgXHRcdFx0XHRcdDogbGlua0ZjdFxuXHRcdH07XG5cdHJldHVybiBkaXJlY3RpdmU7XG5cblxuXHRmdW5jdGlvbiBsaW5rRmN0KHNjb3BlKSB7XG5cdFx0c2NvcGUudm0ubW9kZWwgXHRcdFx0XHQ9IHNjb3BlLmVkYUVhc3lGb3JtVmlld2VyRGF0YU1vZGVsO1xuXHRcdHNjb3BlLnZtLmZpZWxkcyBcdFx0XHQ9IGxvYWRGaWVsZHNNb2RlbCgpO1xuXHRcdHNjb3BlLnZtLnN1Ym1pdFRleHQgXHQ9IHNjb3BlLmVkYUVhc3lGb3JtVmlld2VyU3VibWl0QnV0dG9uVGV4dCB8fCAnU3VibWl0Jztcblx0XHRzY29wZS52bS5jYW5jZWxUZXh0IFx0PSBzY29wZS5lZGFFYXN5Rm9ybVZpZXdlckNhbmNlbEJ1dHRvblRleHQgfHwgJ0NhbmNlbCc7XG5cblx0XHRzY29wZS4kd2F0Y2goZmllbGRzTW9kZWxUb1dhdGNoLCBcdFx0ZmllbGRzTW9kZWxXYXRjaGVyLCBcdHRydWUpO1xuXHRcdHNjb3BlLiR3YXRjaChkYXRhTW9kZWxUb1dhdGNoLFx0XHRcdGRhdGFNb2RlbFdhdGNoZXIsXHRcdFx0dHJ1ZSk7XG5cdFx0c2NvcGUuJHdhdGNoKHN1Ym1pdEJ0blRleHRUb1dhdGNoLCBcdHN1Ym1pdEJ0blRleHRXYXRjaGVyKTtcblx0XHRzY29wZS4kd2F0Y2goY2FuY2VsQnRuVGV4dFRvV2F0Y2gsIFx0Y2FuY2VsQnRuVGV4dFdhdGNoZXIpO1xuXHRcdHNjb3BlLiR3YXRjaChzdWJtaXRFdmVudFRvV2F0Y2gsIFx0XHRzdWJtaXRFdmVudFdhdGNoZXIpO1xuXHRcdHNjb3BlLiR3YXRjaChjYW5jZWxFdmVudFRvV2F0Y2gsIFx0XHRjYW5jZWxFdmVudFdhdGNoZXIpO1xuXG5cdFx0ZnVuY3Rpb24gZGF0YU1vZGVsVG9XYXRjaCgpIHtcblx0XHRcdHJldHVybiBzY29wZS5lZGFFYXN5Rm9ybVZpZXdlckRhdGFNb2RlbDtcblx0XHR9XG5cblx0XHRmdW5jdGlvbiBmaWVsZHNNb2RlbFRvV2F0Y2goKSB7XG5cdFx0XHRyZXR1cm4gc2NvcGUuZWRhRWFzeUZvcm1WaWV3ZXJFYXN5Rm9ybUdlbmVyYXRvckZpZWxkc01vZGVsO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIHN1Ym1pdEJ0blRleHRUb1dhdGNoKCl7XG5cdFx0XHRyZXR1cm4gc2NvcGUuZWRhRWFzeUZvcm1WaWV3ZXJTdWJtaXRCdXR0b25UZXh0O1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIGNhbmNlbEJ0blRleHRUb1dhdGNoKCl7XG5cdFx0XHRyZXR1cm4gc2NvcGUuZWRhRWFzeUZvcm1WaWV3ZXJDYW5jZWxCdXR0b25UZXh0O1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIHN1Ym1pdEV2ZW50VG9XYXRjaCgpe1xuXHRcdFx0cmV0dXJuIHNjb3BlLnZtLmhhc0p1c3RTdW1pdHRlZDtcblx0XHR9XG5cblx0XHRmdW5jdGlvbiBjYW5jZWxFdmVudFRvV2F0Y2goKXtcblx0XHRcdHJldHVybiBzY29wZS52bS5oYXNKdXN0Q2FuY2VsbGVkO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIGZpZWxkc01vZGVsV2F0Y2hlcihuZXdGaWVsZHNNb2RlbCl7XG5cdFx0XHRzY29wZS52bS5maWVsZHMgPSBsb2FkRXhpc3RpbmdDb25maWd1cmF0aW9uTW9kZWwobmV3RmllbGRzTW9kZWwpO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIHN1Ym1pdEJ0blRleHRXYXRjaGVyKG5ld1N1Ym1pdEJ0bnRleHQsIG9sZFN1Ym1pdEJ0bnRleHQpe1xuXHRcdFx0aWYgKG5ld1N1Ym1pdEJ0bnRleHQgIT09IG9sZFN1Ym1pdEJ0bnRleHQpIHtcblx0XHRcdFx0c2NvcGUudm0uc3VibWl0VGV4dCBcdD0gbmV3U3VibWl0QnRudGV4dCB8fCAnU3VibWl0Jztcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmdW5jdGlvbiBjYW5jZWxCdG5UZXh0V2F0Y2hlcihuZXdDYW5jZWxCdG50ZXh0LCBvbGRDYW5jZWxCdG50ZXh0KXtcblx0XHRcdGlmIChuZXdDYW5jZWxCdG50ZXh0ICE9PSBvbGRDYW5jZWxCdG50ZXh0KSB7XG5cdFx0XHRcdHNjb3BlLnZtLmNhbmNlbFRleHQgXHQ9IG5ld0NhbmNlbEJ0bnRleHQgfHwgJ1N1Ym1pdCc7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gZGF0YU1vZGVsV2F0Y2hlcihuZXdEYXRhTW9kZWwpIHtcblx0XHRcdHNjb3BlLnZtLm1vZGVsID0gYW5ndWxhci5jb3B5KG5ld0RhdGFNb2RlbCk7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gc3VibWl0RXZlbnRXYXRjaGVyKG5ld1N1Ym1pdEV2ZW50KXtcblx0XHRcdGlmIChuZXdTdWJtaXRFdmVudCA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdGlmIChhbmd1bGFyLmlzRnVuY3Rpb24oc2NvcGUuZWRhRWFzeUZvcm1WaWV3ZXJTdWJtaXRGb3JtRXZlbnQpKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBfZGF0YU1vZGVsU3VibWl0dGVkID0gc2NvcGUudm0ubW9kZWwgO1xuXHRcdFx0XHRcdFx0c2NvcGUuZWRhRWFzeUZvcm1WaWV3ZXJTdWJtaXRGb3JtRXZlbnQoeyBkYXRhTW9kZWxTdWJtaXR0ZWQgOiBfZGF0YU1vZGVsU3VibWl0dGVkIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHNjb3BlLnZtLmhhc0p1c3RTdW1pdHRlZCA9IGZhbHNlO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIGNhbmNlbEV2ZW50V2F0Y2hlcihuZXdDYW5jZWxFdmVudCl7XG5cdFx0XHRpZiAobmV3Q2FuY2VsRXZlbnQgPT09IHRydWUpIHtcblx0XHRcdFx0XHRpZiAoYW5ndWxhci5pc0Z1bmN0aW9uKHNjb3BlLmVkYUVhc3lGb3JtVmlld2VyQ2FuY2VsRm9ybUV2ZW50KSkge1xuXHRcdFx0XHRcdFx0c2NvcGUuZWRhRWFzeUZvcm1WaWV3ZXJDYW5jZWxGb3JtRXZlbnQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRzY29wZS52bS5oYXNKdXN0Q2FuY2VsbGVkID0gZmFsc2U7XG5cdFx0fVxuXG5cdFx0LyoqXG5cdFx0XHQqIFRPRE8gOiBjaGVjayBpZiBmb3JtbHkgb3IgZWFzeSBmb3JtIGdlbmVyYXRvIGZpZWxkcyBtb2RlbFxuXHRcdFx0KlxuXHRcdFx0KiBieSBkZWZhdWx0IG9yIGlmIGJvdGggLT4gZWFzeSBmb3IgZ2VuZXJhdG9yIGlzIGNob3NlblxuXHRcdFx0Ki9cblx0XHRmdW5jdGlvbiBsb2FkRmllbGRzTW9kZWwoKXtcblx0XHRcdGNvbnN0IGluaXRpYWxGaWVsZHNNb2RlbCA9IGFuZ3VsYXIuaXNBcnJheShzY29wZS5lZGFFYXN5Rm9ybVZpZXdlckVhc3lGb3JtR2VuZXJhdG9yRmllbGRzTW9kZWwpXG4gICAgICAgID8gbG9hZEV4aXN0aW5nQ29uZmlndXJhdGlvbk1vZGVsKHNjb3BlLmVkYUVhc3lGb3JtVmlld2VyRWFzeUZvcm1HZW5lcmF0b3JGaWVsZHNNb2RlbCkgLy90cmFuc2xhdGUgZWFzeSBmb3JtIGdlbmVyYXRvciB0byBmb3JtbHkgZmllbGRzIG1vZGVsXG5cdFx0XHRcdDoge307XG5cdFx0XHRyZXR1cm4gaW5pdGlhbEZpZWxkc01vZGVsO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIGxvYWRFeGlzdGluZ0NvbmZpZ3VyYXRpb25Nb2RlbChsb2FkZWRGaWVsZE1vZGVsKXtcblxuXHRcdFx0aWYgKGFuZ3VsYXIuaXNBcnJheShsb2FkZWRGaWVsZE1vZGVsKSkge1xuXHRcdFx0XHRjb25zdCBjb25maWdsaW5lcyAgICAgICAgICAgPSByZXR1cm5BdHRyaWJ1dGVDb25maWd1cmF0aW9uTGluZXNJZk5vdEVtcHR5KGxvYWRlZEZpZWxkTW9kZWwpO1xuXHRcdFx0XHRjb25zdCBmb3JtbHlGaWVsZHNNb2RlbCBcdFx0PSBbXTtcblxuXHRcdFx0XHRzY29wZS5jb25maWd1cmF0aW9uTG9hZGVkID0ge307XG5cblx0XHRcdFx0JG1vZGVsc1RyYW5zbGF0b3IuYmluZENvbmZpZ3VyYXRpb25MaW5lcyhzY29wZS5jb25maWd1cmF0aW9uTG9hZGVkLGNvbmZpZ2xpbmVzKTtcblx0XHRcdFx0LyoqXG5cdFx0XHRcdFx0KiByZWJpbmQgc3BlY2lhbCBjb250cm9sIHByb3BlcnRpZXMgOlxuXHRcdFx0XHRcdCpcblx0XHRcdFx0XHQqIGZvcm1seSBleHByZXNzaW9uIHByb3BlcnRpZXNcblx0XHRcdFx0XHQqIFZhbGlkYXRvcnNcblx0XHRcdFx0XHQqIFZhbGlkYXRpb25cblx0XHRcdFx0XHQqL1xuXHRcdFx0XHQkbW9kZWxzVHJhbnNsYXRvci5yZWZyZXNoQ29udHJvbEZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzKHNjb3BlLmNvbmZpZ3VyYXRpb25Mb2FkZWQpO1xuXHRcdFx0XHQkbW9kZWxzVHJhbnNsYXRvci5yZWZyZXNoQ29udHJvbEZvcm1seVZhbGlkYXRvcnMoc2NvcGUuY29uZmlndXJhdGlvbkxvYWRlZCk7XG5cdFx0XHRcdCRtb2RlbHNUcmFuc2xhdG9yLnJlZnJlc2hDb250cm9sRm9ybWx5VmFsaWRhdGlvbihzY29wZS5jb25maWd1cmF0aW9uTG9hZGVkKTtcblxuXHRcdFx0XHQvL2FwcGx5IGNvbmZpZ3VyYXRpb24gbW9kZWxcblx0XHRcdFx0c2NvcGUuY29uZmlndXJhdGlvbiA9IGFuZ3VsYXIuY29weShzY29wZS5jb25maWd1cmF0aW9uTG9hZGVkKTtcblxuXHRcdFx0XHQvL2FwcGx5IGZvcm1seSBtb2RlbFxuXHRcdFx0XHQkbW9kZWxzVHJhbnNsYXRvci5hcHBseUNvbmZpZ3VyYXRpb25Ub2Zvcm1seU1vZGVsKHNjb3BlLmNvbmZpZ3VyYXRpb25Mb2FkZWQsIGZvcm1seUZpZWxkc01vZGVsLCBzY29wZS52bS5tb2RlbCk7XG5cblx0XHRcdFx0cmV0dXJuICBmb3JtbHlGaWVsZHNNb2RlbDtcblx0XHRcdH1cblxuXHRcdH1cblxuXG5cblxuXHR9XG5cblxufVxuXG5lZGFGb3JtVmlld2VyRGlyZWN0aXZlLiRpbmplY3QgPSBbXG5cdCckbW9kZWxzVHJhbnNsYXRvcidcbl07XG5leHBvcnQgZGVmYXVsdCBlZGFGb3JtVmlld2VyRGlyZWN0aXZlO1xuZXhwb3J0IHtFQVNZX0ZPUk1fVklFV0VSX0RJUkVDVElWRV9OQU1FfTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZm9ybXZpZXdlci9jb21wb25lbnRzL21haW4vZWRhLmVhc3lGb3JtVmlld2VyLm1haW4uZGlyZWN0aXZlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 9 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Zvcm12aWV3ZXIvY29tcG9uZW50cy9tYWluL2VkYS5lYXN5Rm9ybVZpZXdlci5tYWluLnRlbXBsYXRlLmh0bWw/MTRmMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpY0FBaWMsS0FBSyxlQUFlLHNIQUFzSCxLQUFLLGVBQWUiLCJmaWxlIjoiOS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IGNsYXNzPVxcXCJlYXN5Rm9ybVZpZXdlclxcXCI+XFxuXFx0XFxuXFx0PGZvcm0gXFx0bmctc3VibWl0PVxcXCJ2bS5vblN1Ym1pdCgpXFxcIlxcblxcdFxcdFxcdFxcdFxcdG5hbWU9XFxcInZtLmZvcm1cXFwiPiBcXG5cXHRcXHQ8Zm9ybWx5LWZvcm0gXFx0bW9kZWw9XFxcInZtLm1vZGVsXFxcIiBcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRmaWVsZHM9XFxcInZtLmZpZWxkc1xcXCIgXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Zm9ybT1cXFwidm0uZm9ybVxcXCI+IFxcblxcdFxcdFxcdFxcblxcdFxcdFxcdDxkaXYgY2xhc3M9XFxcInB1bGwtcmlnaHRcXFwiPlxcblxcdFxcdFxcdFxcdDxidXR0b24gdHlwZT1cXFwic3VibWl0XFxcIiBjbGFzcz1cXFwiYnRuIGJ0bi1wcmltYXJ5XFxcIiBcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRuZy1kaXNhYmxlZD1cXFwidm0uZm9ybS4kaW52YWxpZFxcXCJcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRuZy1jbGljaz1cXFwidm0uZWRhU3VibWl0VGhpc0RhdGFNb2RlbCgpO1xcXCI+e3t2bS5zdWJtaXRUZXh0fX08L2J1dHRvbj5cXG5cXHRcXHRcXHRcXHQ8YnV0dG9uIHR5cGU9XFxcImJ1dHRvblxcXCIgY2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeVxcXCIgXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bmctY2xpY2s9XFxcInZtLmVkYUNhbmNlbEV2ZW50KCk7XFxcIj57e3ZtLmNhbmNlbFRleHR9fTwvYnV0dG9uPlxcdFxcdFxcdFxcdFxcblxcdFxcdFxcdDwvZGl2PlxcdFxcdFxcdFxcdFxcdFxcdFxcblxcblxcdFxcdDwvZm9ybWx5LWZvcm0+IFxcblxcdDwvZm9ybT5cXG5cXG48L2Rpdj5cIlxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9mb3Jtdmlld2VyL2NvbXBvbmVudHMvbWFpbi9lZGEuZWFzeUZvcm1WaWV3ZXIubWFpbi50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 10 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n/* global angular */\n\nvar EMPTY_FIELD_MODEL = [{\n\t'line': 1,\n\t'activeColumn': 1,\n\t'columns': [{\n\t\t'numColumn': 1,\n\t\t'exist': true,\n\t\t'control': {\n\t\t\t'type': 'none',\n\t\t\t'key': 'none'\n\t\t}\n\t}]\n}];\n\n/**\n\t* empty fields model : to display at least an empty line\n\t* otherwise would look like ugly empty line like it were a bug\n\t*/\nvar emptyEdaFieldsModel = function emptyEdaFieldsModel() {\n\treturn angular.copy(EMPTY_FIELD_MODEL);\n};\n\nvar returnAttributeDataModelIfNotEmpty = function returnAttributeDataModelIfNotEmpty(edaEasyFormGeneratorModel) {\n\tvar dataModelToReturn = angular.isArray(edaEasyFormGeneratorModel.dataModel) ? edaEasyFormGeneratorModel.dataModel.length > 0 ? edaEasyFormGeneratorModel.dataModel : [] : [];\n\treturn dataModelToReturn;\n};\n\nvar returnAttributeConfigurationLinesIfNotEmpty = function returnAttributeConfigurationLinesIfNotEmpty(loadedFieldModel) {\n\tvar edaEasyFormGeneratorModelToReturn = angular.isArray(loadedFieldModel) ? loadedFieldModel.length > 0 ? loadedFieldModel : emptyEdaFieldsModel() : emptyEdaFieldsModel();\n\treturn edaEasyFormGeneratorModelToReturn;\n};\n\nexports.emptyEdaFieldsModel = emptyEdaFieldsModel;\nexports.returnAttributeDataModelIfNotEmpty = returnAttributeDataModelIfNotEmpty;\nexports.returnAttributeConfigurationLinesIfNotEmpty = returnAttributeConfigurationLinesIfNotEmpty;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Zvcm12aWV3ZXIvY29tcG9uZW50cy9tYWluL2VkYS5lYXN5Rm9ybVZpZXdlci5tYWluLmRpcmVjdGl2ZS5oZWxwZXJzLmpzPzBjNGEiXSwibmFtZXMiOlsiRU1QVFlfRklFTERfTU9ERUwiLCJlbXB0eUVkYUZpZWxkc01vZGVsIiwiYW5ndWxhciIsImNvcHkiLCJyZXR1cm5BdHRyaWJ1dGVEYXRhTW9kZWxJZk5vdEVtcHR5IiwiZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbCIsImRhdGFNb2RlbFRvUmV0dXJuIiwiaXNBcnJheSIsImRhdGFNb2RlbCIsImxlbmd0aCIsInJldHVybkF0dHJpYnV0ZUNvbmZpZ3VyYXRpb25MaW5lc0lmTm90RW1wdHkiLCJsb2FkZWRGaWVsZE1vZGVsIiwiZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbFRvUmV0dXJuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUVBLElBQU1BLG9CQUFvQixDQUN6QjtBQUNDLFNBQVEsQ0FEVDtBQUVDLGlCQUFnQixDQUZqQjtBQUdDLFlBQVcsQ0FDVjtBQUNDLGVBQWEsQ0FEZDtBQUVDLFdBQVMsSUFGVjtBQUdDLGFBQVc7QUFDVixXQUFRLE1BREU7QUFFVixVQUFPO0FBRkc7QUFIWixFQURVO0FBSFosQ0FEeUIsQ0FBMUI7O0FBaUJBOzs7O0FBSUEsSUFBTUMsc0JBQXNCLFNBQXRCQSxtQkFBc0IsR0FBSTtBQUMvQixRQUFPQyxRQUFRQyxJQUFSLENBQWFILGlCQUFiLENBQVA7QUFDQSxDQUZEOztBQU1BLElBQU1JLHFDQUFxQyxTQUFyQ0Esa0NBQXFDLENBQUNDLHlCQUFELEVBQTZCO0FBQ3ZFLEtBQUlDLG9CQUNGSixRQUFRSyxPQUFSLENBQWdCRiwwQkFBMEJHLFNBQTFDLElBQ0VILDBCQUEwQkcsU0FBMUIsQ0FBb0NDLE1BQXBDLEdBQTZDLENBQTdDLEdBQ0FKLDBCQUEwQkcsU0FEMUIsR0FFRSxFQUhKLEdBS0UsRUFOSjtBQVFDLFFBQU9GLGlCQUFQO0FBQ0QsQ0FWRDs7QUFhQSxJQUFNSSw4Q0FBOEMsU0FBOUNBLDJDQUE4QyxDQUFDQyxnQkFBRCxFQUFvQjtBQUN2RSxLQUFJQyxvQ0FDRlYsUUFBUUssT0FBUixDQUFnQkksZ0JBQWhCLElBQ0VBLGlCQUFpQkYsTUFBakIsR0FBMEIsQ0FBMUIsR0FDQ0UsZ0JBREQsR0FFRVYscUJBSEosR0FLRUEscUJBTko7QUFRQyxRQUFPVyxpQ0FBUDtBQUNELENBVkQ7O1FBY0NYLG1CLEdBQUFBLG1CO1FBQ0FHLGtDLEdBQUFBLGtDO1FBQ0FNLDJDLEdBQUFBLDJDIiwiZmlsZSI6IjEwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGFuZ3VsYXIgKi9cblxuY29uc3QgRU1QVFlfRklFTERfTU9ERUwgPSBbXG5cdHtcblx0XHQnbGluZSc6IDEsXG5cdFx0J2FjdGl2ZUNvbHVtbic6IDEsXG5cdFx0J2NvbHVtbnMnOiBbXG5cdFx0XHR7XG5cdFx0XHRcdCdudW1Db2x1bW4nOiAxLFxuXHRcdFx0XHQnZXhpc3QnOiB0cnVlLFxuXHRcdFx0XHQnY29udHJvbCc6IHtcblx0XHRcdFx0XHQndHlwZSc6ICdub25lJyxcblx0XHRcdFx0XHQna2V5JzogJ25vbmUnXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRdXG5cdH1cbl07XG5cbi8qKlxuXHQqIGVtcHR5IGZpZWxkcyBtb2RlbCA6IHRvIGRpc3BsYXkgYXQgbGVhc3QgYW4gZW1wdHkgbGluZVxuXHQqIG90aGVyd2lzZSB3b3VsZCBsb29rIGxpa2UgdWdseSBlbXB0eSBsaW5lIGxpa2UgaXQgd2VyZSBhIGJ1Z1xuXHQqL1xuY29uc3QgZW1wdHlFZGFGaWVsZHNNb2RlbCA9ICgpPT57XG5cdHJldHVybiBhbmd1bGFyLmNvcHkoRU1QVFlfRklFTERfTU9ERUwpO1xufTtcblxuXG5cbmNvbnN0IHJldHVybkF0dHJpYnV0ZURhdGFNb2RlbElmTm90RW1wdHkgPSAoZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbCk9Pntcblx0bGV0IGRhdGFNb2RlbFRvUmV0dXJuID0gKFxuXHRcdFx0YW5ndWxhci5pc0FycmF5KGVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwuZGF0YU1vZGVsKSAgID8gICggXG5cdFx0XHRcdFx0ZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbC5kYXRhTW9kZWwubGVuZ3RoID4gMCA/IFxuXHRcdFx0XHRcdGVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwuZGF0YU1vZGVsIFxuXHRcdFx0XHRcdDogW11cblx0XHRcdFx0XHQpIFxuXHRcdFx0OiBbXVxuXHQpO1xuXHRcdHJldHVybiBkYXRhTW9kZWxUb1JldHVybjsgIFxufTtcblxuXG5jb25zdCByZXR1cm5BdHRyaWJ1dGVDb25maWd1cmF0aW9uTGluZXNJZk5vdEVtcHR5ID0gKGxvYWRlZEZpZWxkTW9kZWwpPT57XG5cdGxldCBlZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsVG9SZXR1cm4gPSAoXG5cdFx0XHRhbmd1bGFyLmlzQXJyYXkobG9hZGVkRmllbGRNb2RlbCkgPyAgKCBcblx0XHRcdFx0XHRsb2FkZWRGaWVsZE1vZGVsLmxlbmd0aCA+IDAgPyBcblx0XHRcdFx0XHRcdGxvYWRlZEZpZWxkTW9kZWwgXG5cdFx0XHRcdFx0OiBlbXB0eUVkYUZpZWxkc01vZGVsKClcblx0XHRcdFx0XHQpIFxuXHRcdFx0OiBlbXB0eUVkYUZpZWxkc01vZGVsKClcblx0KTtcblx0XHRyZXR1cm4gZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbFRvUmV0dXJuOyAgXG59OyBcblxuXG5leHBvcnQge1xuXHRlbXB0eUVkYUZpZWxkc01vZGVsLFxuXHRyZXR1cm5BdHRyaWJ1dGVEYXRhTW9kZWxJZk5vdEVtcHR5LFxuXHRyZXR1cm5BdHRyaWJ1dGVDb25maWd1cmF0aW9uTGluZXNJZk5vdEVtcHR5XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9mb3Jtdmlld2VyL2NvbXBvbmVudHMvbWFpbi9lZGEuZWFzeUZvcm1WaWV3ZXIubWFpbi5kaXJlY3RpdmUuaGVscGVycy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 11 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EASY_FORM_VIEWER_CONTROLLER = 'edaEasyFormViewerCtrl';\nvar EASY_FORM_VIEWER_CONTROLLERAS = 'vm';\n\nvar edaEasyFormViewerController = function () {\n\tfunction edaEasyFormViewerController() {\n\t\t_classCallCheck(this, edaEasyFormViewerController);\n\n\t\tthis.init();\n\t}\n\n\t_createClass(edaEasyFormViewerController, [{\n\t\tkey: 'init',\n\t\tvalue: function init() {\n\t\t\tthis.model = {};\n\t\t\tthis.fields = {};\n\t\t\tthis.hasJustSumitted = false;\n\t\t\tthis.hasJustCancelled = false;\n\t\t}\n\t}, {\n\t\tkey: 'edaSubmitThisDataModel',\n\t\tvalue: function edaSubmitThisDataModel() {\n\t\t\tthis.hasJustSumitted = true;\n\t\t}\n\t}, {\n\t\tkey: 'edaCancelEvent',\n\t\tvalue: function edaCancelEvent() {\n\t\t\tthis.hasJustCancelled = true;\n\t\t}\n\t}]);\n\n\treturn edaEasyFormViewerController;\n}();\n\nedaEasyFormViewerController.$inject = [];\n\nexports.default = edaEasyFormViewerController;\nexports.EASY_FORM_VIEWER_CONTROLLER = EASY_FORM_VIEWER_CONTROLLER;\nexports.EASY_FORM_VIEWER_CONTROLLERAS = EASY_FORM_VIEWER_CONTROLLERAS;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Zvcm12aWV3ZXIvY29tcG9uZW50cy9tYWluL2VkYS5lYXN5Rm9ybVZpZXdlci5tYWluLmNvbnRyb2xsZXIuanM/ZTc1MSJdLCJuYW1lcyI6WyJFQVNZX0ZPUk1fVklFV0VSX0NPTlRST0xMRVIiLCJFQVNZX0ZPUk1fVklFV0VSX0NPTlRST0xMRVJBUyIsImVkYUVhc3lGb3JtVmlld2VyQ29udHJvbGxlciIsImluaXQiLCJtb2RlbCIsImZpZWxkcyIsImhhc0p1c3RTdW1pdHRlZCIsImhhc0p1c3RDYW5jZWxsZWQiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBTUEsOEJBQStCLHVCQUFyQztBQUNBLElBQU1DLGdDQUFnQyxJQUF0Qzs7SUFFTUMsMkI7QUFFTCx3Q0FBYTtBQUFBOztBQUNaLE9BQUtDLElBQUw7QUFDQTs7Ozt5QkFFSztBQUNMLFFBQUtDLEtBQUwsR0FBbUIsRUFBbkI7QUFDQSxRQUFLQyxNQUFMLEdBQW1CLEVBQW5CO0FBQ0EsUUFBS0MsZUFBTCxHQUF3QixLQUF4QjtBQUNBLFFBQUtDLGdCQUFMLEdBQXdCLEtBQXhCO0FBQ0E7OzsyQ0FFdUI7QUFDdkIsUUFBS0QsZUFBTCxHQUF1QixJQUF2QjtBQUNBOzs7bUNBRWU7QUFDZixRQUFLQyxnQkFBTCxHQUF3QixJQUF4QjtBQUNBOzs7Ozs7QUFJRkwsNEJBQTRCTSxPQUE1QixHQUFzQyxFQUF0Qzs7a0JBRWVOLDJCO1FBR2RGLDJCLEdBQUFBLDJCO1FBQ0FDLDZCLEdBQUFBLDZCIiwiZmlsZSI6IjExLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgRUFTWV9GT1JNX1ZJRVdFUl9DT05UUk9MTEVSIFx0PSAnZWRhRWFzeUZvcm1WaWV3ZXJDdHJsJztcbmNvbnN0IEVBU1lfRk9STV9WSUVXRVJfQ09OVFJPTExFUkFTXHQ9ICd2bSc7XG5cbmNsYXNzIGVkYUVhc3lGb3JtVmlld2VyQ29udHJvbGxlcntcblx0XG5cdGNvbnN0cnVjdG9yKCl7XG5cdFx0dGhpcy5pbml0KCk7XG5cdH1cblx0XG5cdGluaXQoKXtcblx0XHR0aGlzLm1vZGVsIFx0XHRcdFx0XHRcdD0ge307XG5cdFx0dGhpcy5maWVsZHMgXHRcdFx0XHRcdD0ge307XG5cdFx0dGhpcy5oYXNKdXN0U3VtaXR0ZWQgXHQ9IGZhbHNlO1xuXHRcdHRoaXMuaGFzSnVzdENhbmNlbGxlZCA9IGZhbHNlO1xuXHR9XG5cdFxuXHRlZGFTdWJtaXRUaGlzRGF0YU1vZGVsKCl7XG5cdFx0dGhpcy5oYXNKdXN0U3VtaXR0ZWQgPSB0cnVlO1xuXHR9XG5cdFxuXHRlZGFDYW5jZWxFdmVudCgpe1xuXHRcdHRoaXMuaGFzSnVzdENhbmNlbGxlZCA9IHRydWU7XG5cdH1cdFxuXHRcbn1cblxuZWRhRWFzeUZvcm1WaWV3ZXJDb250cm9sbGVyLiRpbmplY3QgPSBbXTtcblxuZXhwb3J0IGRlZmF1bHQgZWRhRWFzeUZvcm1WaWV3ZXJDb250cm9sbGVyO1xuXG5leHBvcnQge1xuXHRFQVNZX0ZPUk1fVklFV0VSX0NPTlRST0xMRVIsXG5cdEVBU1lfRk9STV9WSUVXRVJfQ09OVFJPTExFUkFTXG59O1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZm9ybXZpZXdlci9jb21wb25lbnRzL21haW4vZWRhLmVhc3lGb3JtVmlld2VyLm1haW4uY29udHJvbGxlci5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 12 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar CORE_MODULES = ['textAngular', 'formly', 'ngAnimate', 'formlyBootstrap', 'ui.bootstrap', 'nya.bootstrap.select'];\n\nvar FORMVIEWER_CORE_MODULE_NAME = 'edaEasyFormViewerCore.module';\n\nexports.default = angular.module(FORMVIEWER_CORE_MODULE_NAME, CORE_MODULES);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Zvcm12aWV3ZXIvY29tcG9uZW50cy9jb3JlL2VkYS5lYXN5Rm9ybVZpZXdlci5jb3JlLm1vZHVsZS5qcz8zYjQzIl0sIm5hbWVzIjpbIkNPUkVfTU9EVUxFUyIsIkZPUk1WSUVXRVJfQ09SRV9NT0RVTEVfTkFNRSIsImFuZ3VsYXIiLCJtb2R1bGUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBTUEsZUFBZSxDQUNwQixhQURvQixFQUVwQixRQUZvQixFQUdwQixXQUhvQixFQUlwQixpQkFKb0IsRUFLcEIsY0FMb0IsRUFNcEIsc0JBTm9CLENBQXJCOztBQVNBLElBQU1DLDhCQUE4Qiw4QkFBcEM7O2tCQUVlQyxRQUNOQyxNQURNLENBQ0NGLDJCQURELEVBQzhCRCxZQUQ5QixDIiwiZmlsZSI6IjEyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQ09SRV9NT0RVTEVTID0gW1xuXHQndGV4dEFuZ3VsYXInLCAgXG5cdCdmb3JtbHknLCAgXG5cdCduZ0FuaW1hdGUnLFxuXHQnZm9ybWx5Qm9vdHN0cmFwJywgXG5cdCd1aS5ib290c3RyYXAnLCBcblx0J255YS5ib290c3RyYXAuc2VsZWN0JyBcbl07XG5cbmNvbnN0IEZPUk1WSUVXRVJfQ09SRV9NT0RVTEVfTkFNRSA9ICdlZGFFYXN5Rm9ybVZpZXdlckNvcmUubW9kdWxlJztcblxuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuXHRcdFx0XHRcdFx0XHRcdC5tb2R1bGUoRk9STVZJRVdFUl9DT1JFX01PRFVMRV9OQU1FLCBDT1JFX01PRFVMRVMpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9mb3Jtdmlld2VyL2NvbXBvbmVudHMvY29yZS9lZGEuZWFzeUZvcm1WaWV3ZXIuY29yZS5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 13 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _edaEasyFormViewerModelTranslator = __webpack_require__(14);\n\nvar _edaEasyFormViewerModelTranslator2 = _interopRequireDefault(_edaEasyFormViewerModelTranslator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar FORM_VIEWER_MODEL_TRANSLATOR_MODULE_NAME = 'edaFormViewerModelTranslatorModule'; /* global angular */\nexports.default = angular.module(FORM_VIEWER_MODEL_TRANSLATOR_MODULE_NAME, []).service(_edaEasyFormViewerModelTranslator.MODEL_TRANSLATOR_SERVICE, _edaEasyFormViewerModelTranslator2.default);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Zvcm12aWV3ZXIvY29tcG9uZW50cy9tb2RlbHNUcmFuc2xhdG9yL2VkYS5lYXN5Rm9ybVZpZXdlci5tb2RlbFRyYW5zbGF0b3IubW9kdWxlLmpzPzc2ZWQiXSwibmFtZXMiOlsiRk9STV9WSUVXRVJfTU9ERUxfVFJBTlNMQVRPUl9NT0RVTEVfTkFNRSIsImFuZ3VsYXIiLCJtb2R1bGUiLCJzZXJ2aWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQTs7Ozs7O0FBTUEsSUFBTUEsMkNBQTJDLG9DQUFqRCxDLENBUEE7a0JBU2VDLFFBQ05DLE1BRE0sQ0FDQ0Ysd0NBREQsRUFDMkMsRUFEM0MsRUFFTkcsT0FGTSx3RyIsImZpbGUiOiIxMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCBhbmd1bGFyICovXG5pbXBvcnQgJG1vZGVsc1RyYW5zbGF0b3IsIHtcblx0TU9ERUxfVFJBTlNMQVRPUl9TRVJWSUNFXG59XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZyb20gJy4vZWRhLmVhc3lGb3JtVmlld2VyLm1vZGVsVHJhbnNsYXRvci5zZXJ2aWNlJztcblxuXG5cbmNvbnN0IEZPUk1fVklFV0VSX01PREVMX1RSQU5TTEFUT1JfTU9EVUxFX05BTUUgPSAnZWRhRm9ybVZpZXdlck1vZGVsVHJhbnNsYXRvck1vZHVsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGFuZ3VsYXJcblx0XHRcdFx0XHRcdFx0XHQubW9kdWxlKEZPUk1fVklFV0VSX01PREVMX1RSQU5TTEFUT1JfTU9EVUxFX05BTUUsIFtdKVxuXHRcdFx0XHRcdFx0XHRcdC5zZXJ2aWNlKE1PREVMX1RSQU5TTEFUT1JfU0VSVklDRSwgJG1vZGVsc1RyYW5zbGF0b3IpO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZm9ybXZpZXdlci9jb21wb25lbnRzL21vZGVsc1RyYW5zbGF0b3IvZWRhLmVhc3lGb3JtVmlld2VyLm1vZGVsVHJhbnNsYXRvci5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 14 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MODEL_TRANSLATOR_SERVICE = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _edaEasyFormViewerModelTranslatorService = __webpack_require__(15);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MODEL_TRANSLATOR_SERVICE = '$modelsTranslator';\n\nvar $modelsTranslator = function () {\n function $modelsTranslator() {\n _classCallCheck(this, $modelsTranslator);\n }\n\n _createClass($modelsTranslator, [{\n key: 'initNyaSelect',\n value: function initNyaSelect(nyaSelectObj) {\n return (0, _edaEasyFormViewerModelTranslatorService.resetNyaSelect)(nyaSelectObj);\n }\n\n /**\n * get all controls definition (nyaSelectObj)\n *\n * needed to bind these properties :\n *\n * formlyExpressionProperties: {},\n * formlyValidators: {},\n * formlyValidation\n */\n\n }, {\n key: 'getControlsDefinition',\n value: function getControlsDefinition() {\n var controls = {};\n (0, _edaEasyFormViewerModelTranslatorService.resetNyaSelect)(controls);\n return controls;\n }\n\n /**\n * loading forms will not be able to retrieve formlyExpressionProperties\n * -> here does the job\n */\n\n }, {\n key: 'refreshControlFormlyExpressionProperties',\n value: function refreshControlFormlyExpressionProperties(configurationModel) {\n var _this = this;\n\n if (angular.isObject(configurationModel)) {\n //iterates lines\n angular.forEach(configurationModel.lines, function (line) {\n angular.forEach(line.columns, function (column) {\n var _controlsDefinition = _this.getControlsDefinition();\n angular.forEach(_controlsDefinition.controls, function (aControl) {\n if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {\n //----> update control formlyExpressionProperties property\n column.control.formlyExpressionProperties = aControl.formlyExpressionProperties;\n }\n });\n });\n });\n }\n }\n\n /**\n * loading forms will not be able to retrieve formlyValidators\n * -> here does the job\n */\n\n }, {\n key: 'refreshControlFormlyValidators',\n value: function refreshControlFormlyValidators(configurationModel) {\n var _this2 = this;\n\n if (angular.isObject(configurationModel)) {\n //iterates lines\n angular.forEach(configurationModel.lines, function (line) {\n angular.forEach(line.columns, function (column) {\n var _controlsDefinition = _this2.getControlsDefinition();\n angular.forEach(_controlsDefinition.controls, function (aControl) {\n if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {\n //----> update control formlyValidators property\n column.control.formlyValidators = aControl.formlyValidators;\n }\n });\n });\n });\n }\n }\n\n /**\n * loading forms will not be able to retrieve formlyValidation\n * -> here does the job\n */\n\n }, {\n key: 'refreshControlFormlyValidation',\n value: function refreshControlFormlyValidation(configurationModel) {\n var _this3 = this;\n\n if (angular.isObject(configurationModel)) {\n //iterates lines\n angular.forEach(configurationModel.lines, function (line) {\n angular.forEach(line.columns, function (column) {\n var _controlsDefinition = _this3.getControlsDefinition();\n angular.forEach(_controlsDefinition.controls, function (aControl) {\n if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {\n //----> update control formlyValidation property\n column.control.formlyValidation = aControl.formlyValidation;\n }\n });\n });\n });\n }\n }\n }, {\n key: 'bindConfigurationLines',\n value: function bindConfigurationLines(configurationModel, lines) {\n if (angular.isArray(lines)) {\n var configurationModelResult = (0, _edaEasyFormViewerModelTranslatorService.getEmptyConfigModelResult)();\n configurationModelResult.lines = [].concat(lines);\n angular.copy(configurationModelResult, configurationModel);\n return (0, _edaEasyFormViewerModelTranslatorService.getMessageObject)('configuration model is bound', 'lines are bound to configuration model.');\n } else {\n return (0, _edaEasyFormViewerModelTranslatorService.getErrorObject)('lines is not an array', 'Checks lines type, it is not an array.');\n }\n }\n }, {\n key: 'applyConfigurationToformlyModel',\n value: function applyConfigurationToformlyModel(configurationModel, formlyModel, formlyDataModel) {\n (0, _edaEasyFormViewerModelTranslatorService.resetFormlyModel)(formlyModel);\n (0, _edaEasyFormViewerModelTranslatorService.resetDataModel)(formlyDataModel);\n\n configurationModel.lines.forEach(function (line, lineIndex) {\n if (line.columns.length === 1) {\n (0, _edaEasyFormViewerModelTranslatorService.addOneColumnControl)(formlyModel, configurationModel, lineIndex);\n }\n if (line.columns.length === 2) {\n (0, _edaEasyFormViewerModelTranslatorService.addTwoColumnControl)(formlyModel, configurationModel, lineIndex);\n }\n if (line.columns.length === 3) {\n (0, _edaEasyFormViewerModelTranslatorService.addThreeColumnControl)(formlyModel, configurationModel, lineIndex);\n }\n });\n }\n }]);\n\n return $modelsTranslator;\n}();\n\n$modelsTranslator.$inject = [];\nexports.default = $modelsTranslator;\nexports.MODEL_TRANSLATOR_SERVICE = MODEL_TRANSLATOR_SERVICE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Zvcm12aWV3ZXIvY29tcG9uZW50cy9tb2RlbHNUcmFuc2xhdG9yL2VkYS5lYXN5Rm9ybVZpZXdlci5tb2RlbFRyYW5zbGF0b3Iuc2VydmljZS5qcz85YjI5Il0sIm5hbWVzIjpbIk1PREVMX1RSQU5TTEFUT1JfU0VSVklDRSIsIiRtb2RlbHNUcmFuc2xhdG9yIiwibnlhU2VsZWN0T2JqIiwiY29udHJvbHMiLCJjb25maWd1cmF0aW9uTW9kZWwiLCJhbmd1bGFyIiwiaXNPYmplY3QiLCJmb3JFYWNoIiwibGluZXMiLCJsaW5lIiwiY29sdW1ucyIsImNvbHVtbiIsIl9jb250cm9sc0RlZmluaXRpb24iLCJnZXRDb250cm9sc0RlZmluaXRpb24iLCJhQ29udHJvbCIsImNvbnRyb2wiLCJ0eXBlIiwiZm9ybWx5VHlwZSIsInN1YnR5cGUiLCJmb3JtbHlTdWJ0eXBlIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiZm9ybWx5VmFsaWRhdGlvbiIsImlzQXJyYXkiLCJjb25maWd1cmF0aW9uTW9kZWxSZXN1bHQiLCJjb25jYXQiLCJjb3B5IiwiZm9ybWx5TW9kZWwiLCJmb3JtbHlEYXRhTW9kZWwiLCJsaW5lSW5kZXgiLCJsZW5ndGgiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7OztBQVlBLElBQU1BLDJCQUEyQixtQkFBakM7O0lBRU1DLGlCO0FBR0osK0JBQWM7QUFBQTtBQUViOzs7O2tDQUVhQyxZLEVBQWE7QUFDekIsYUFBTyw2REFBZUEsWUFBZixDQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7Ozs0Q0FTdUI7QUFDckIsVUFBTUMsV0FBVyxFQUFqQjtBQUNBLG1FQUFlQSxRQUFmO0FBQ0EsYUFBT0EsUUFBUDtBQUNEOztBQUVEOzs7Ozs7OzZEQUl5Q0Msa0IsRUFBbUI7QUFBQTs7QUFDMUQsVUFBSUMsUUFBUUMsUUFBUixDQUFpQkYsa0JBQWpCLENBQUos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QixFQUFvQnVCLFcsRUFBYUMsZSxFQUFpQjtBQUNoRixxRUFBaUJELFdBQWpCO0FBQ0EsbUVBQWVDLGVBQWY7O0FBRUF4Qix5QkFBbUJJLEtBQW5CLENBQXlCRCxPQUF6QixDQUNFLFVBQUNFLElBQUQsRUFBT29CLFNBQVAsRUFBcUI7QUFDbkIsWUFBSXBCLEtBQUtDLE9BQUwsQ0FBYW9CLE1BQWIsS0FBd0IsQ0FBNUIsRUFBK0I7QUFDN0IsNEVBQW9CSCxXQUFwQixFQUFpQ3ZCLGtCQUFqQyxFQUFxRHlCLFNBQXJEO0FBQ0Q7QUFDRCxZQUFJcEIsS0FBS0MsT0FBTCxDQUFhb0IsTUFBYixLQUF3QixDQUE1QixFQUErQjtBQUM3Qiw0RUFBb0JILFdBQXBCLEVBQWlDdkIsa0JBQWpDLEVBQXFEeUIsU0FBckQ7QUFDRDtBQUNELFlBQUlwQixLQUFLQyxPQUFMLENBQWFvQixNQUFiLEtBQXdCLENBQTVCLEVBQStCO0FBQzdCLDhFQUFzQkgsV0FBdEIsRUFBbUN2QixrQkFBbkMsRUFBdUR5QixTQUF2RDtBQUNEO0FBQ0YsT0FYSDtBQWFEOzs7Ozs7QUF4SEc1QixpQixDQUNHOEIsTyxHQUFVLEU7a0JBMEhKOUIsaUI7UUFFUEQsd0IsR0FBQUEsd0IiLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICByZXNldE55YVNlbGVjdCxcbiAgZ2V0RW1wdHlDb25maWdNb2RlbFJlc3VsdCxcbiAgcmVzZXREYXRhTW9kZWwsXG4gIGdldEVycm9yT2JqZWN0LFxuICBnZXRNZXNzYWdlT2JqZWN0LFxuICByZXNldEZvcm1seU1vZGVsLFxuICBhZGRPbmVDb2x1bW5Db250cm9sLFxuICBhZGRUd29Db2x1bW5Db250cm9sLFxuICBhZGRUaHJlZUNvbHVtbkNvbnRyb2xcbn0gICAgZnJvbSAnLi9lZGEuZWFzeUZvcm1WaWV3ZXIubW9kZWxUcmFuc2xhdG9yLnNlcnZpY2UuaGVscGVycyc7XG5cbmNvbnN0IE1PREVMX1RSQU5TTEFUT1JfU0VSVklDRSA9ICckbW9kZWxzVHJhbnNsYXRvcic7XG5cbmNsYXNzICRtb2RlbHNUcmFuc2xhdG9yIHtcbiAgc3RhdGljICRpbmplY3QgPSBbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcblxuICB9XG5cbiAgaW5pdE55YVNlbGVjdChueWFTZWxlY3RPYmope1xuICAgIHJldHVybiByZXNldE55YVNlbGVjdChueWFTZWxlY3RPYmopO1xuICB9XG5cbiAgLyoqXG4gICAgKiBnZXQgYWxsIGNvbnRyb2xzIGRlZmluaXRpb24gKG55YVNlbGVjdE9iailcbiAgICAqXG4gICAgKiBuZWVkZWQgdG8gYmluZCB0aGVzZSBwcm9wZXJ0aWVzIDpcbiAgICAqXG4gICAgKiBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllczoge30sXG4gICAgKiBmb3JtbHlWYWxpZGF0b3JzOiB7fSxcbiAgICAqIGZvcm1seVZhbGlkYXRpb25cbiAgICAqL1xuICBnZXRDb250cm9sc0RlZmluaXRpb24oKXtcbiAgICBjb25zdCBjb250cm9scyA9IHt9O1xuICAgIHJlc2V0TnlhU2VsZWN0KGNvbnRyb2xzKTtcbiAgICByZXR1cm4gY29udHJvbHM7XG4gIH1cblxuICAvKipcbiAgICAqIGxvYWRpbmcgZm9ybXMgd2lsbCBub3QgYmUgYWJsZSB0byByZXRyaWV2ZSBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllc1xuICAgICogLT4gaGVyZSBkb2VzIHRoZSBqb2JcbiAgICAqL1xuICByZWZyZXNoQ29udHJvbEZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzKGNvbmZpZ3VyYXRpb25Nb2RlbCl7XG4gICAgaWYgKGFuZ3VsYXIuaXNPYmplY3QoY29uZmlndXJhdGlvbk1vZGVsKSkge1xuICAgICAgLy9pdGVyYXRlcyBsaW5lc1xuICAgICAgYW5ndWxhci5mb3JFYWNoKGNvbmZpZ3VyYXRpb25Nb2RlbC5saW5lcywgKGxpbmUpID0+IHtcbiAgICAgICAgYW5ndWxhci5mb3JFYWNoKGxpbmUuY29sdW1ucywgKGNvbHVtbikgPT4ge1xuICAgICAgICAgIGNvbnN0IF9jb250cm9sc0RlZmluaXRpb24gPSB0aGlzLmdldENvbnRyb2xzRGVmaW5pdGlvbigpO1xuICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChfY29udHJvbHNEZWZpbml0aW9uLmNvbnRyb2xzLCAoYUNvbnRyb2wpID0+IHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uY29udHJvbC50eXBlID09PSBhQ29udHJvbC5mb3JtbHlUeXBlICYmXG4gICAgICAgICAgICAgICAgY29sdW1uLmNvbnRyb2wuc3VidHlwZSA9PT0gYUNvbnRyb2wuZm9ybWx5U3VidHlwZSkge1xuICAgICAgICAgICAgICAgIC8vLS0tLT4gdXBkYXRlIGNvbnRyb2wgZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMgcHJvcGVydHlcbiAgICAgICAgICAgICAgICBjb2x1bW4uY29udHJvbC5mb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyA9IGFDb250cm9sLmZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgICogbG9hZGluZyBmb3JtcyB3aWxsIG5vdCBiZSBhYmxlIHRvIHJldHJpZXZlIGZvcm1seVZhbGlkYXRvcnNcbiAgICAqIC0+IGhlcmUgZG9lcyB0aGUgam9iXG4gICAgKi9cbiAgcmVmcmVzaENvbnRyb2xGb3JtbHlWYWxpZGF0b3JzKGNvbmZpZ3VyYXRpb25Nb2RlbCl7XG4gICAgaWYgKGFuZ3VsYXIuaXNPYmplY3QoY29uZmlndXJhdGlvbk1vZGVsKSkge1xuICAgICAgLy9pdGVyYXRlcyBsaW5lc1xuICAgICAgYW5ndWxhci5mb3JFYWNoKGNvbmZpZ3VyYXRpb25Nb2RlbC5saW5lcywgKGxpbmUpID0+IHtcbiAgICAgICAgYW5ndWxhci5mb3JFYWNoKGxpbmUuY29sdW1ucywgKGNvbHVtbikgPT4ge1xuICAgICAgICAgIGNvbnN0IF9jb250cm9sc0RlZmluaXRpb24gPSB0aGlzLmdldENvbnRyb2xzRGVmaW5pdGlvbigpO1xuICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChfY29udHJvbHNEZWZpbml0aW9uLmNvbnRyb2xzLCAoYUNvbnRyb2wpID0+IHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uY29udHJvbC50eXBlID09PSBhQ29udHJvbC5mb3JtbHlUeXBlICYmXG4gICAgICAgICAgICAgICAgY29sdW1uLmNvbnRyb2wuc3VidHlwZSA9PT0gYUNvbnRyb2wuZm9ybWx5U3VidHlwZSkge1xuICAgICAgICAgICAgICAgIC8vLS0tLT4gdXBkYXRlIGNvbnRyb2wgZm9ybWx5VmFsaWRhdG9ycyBwcm9wZXJ0eVxuICAgICAgICAgICAgICAgIGNvbHVtbi5jb250cm9sLmZvcm1seVZhbGlkYXRvcnMgPSBhQ29udHJvbC5mb3JtbHlWYWxpZGF0b3JzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgICogbG9hZGluZyBmb3JtcyB3aWxsIG5vdCBiZSBhYmxlIHRvIHJldHJpZXZlIGZvcm1seVZhbGlkYXRpb25cbiAgICAqIC0+IGhlcmUgZG9lcyB0aGUgam9iXG4gICAgKi9cbiAgcmVmcmVzaENvbnRyb2xGb3JtbHlWYWxpZGF0aW9uKGNvbmZpZ3VyYXRpb25Nb2RlbCl7XG4gICAgaWYgKGFuZ3VsYXIuaXNPYmplY3QoY29uZmlndXJhdGlvbk1vZGVsKSkge1xuICAgICAgLy9pdGVyYXRlcyBsaW5lc1xuICAgICAgYW5ndWxhci5mb3JFYWNoKGNvbmZpZ3VyYXRpb25Nb2RlbC5saW5lcywgKGxpbmUpID0+IHtcbiAgICAgICAgYW5ndWxhci5mb3JFYWNoKGxpbmUuY29sdW1ucywgKGNvbHVtbikgPT4ge1xuICAgICAgICAgIGNvbnN0IF9jb250cm9sc0RlZmluaXRpb24gPSB0aGlzLmdldENvbnRyb2xzRGVmaW5pdGlvbigpO1xuICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChfY29udHJvbHNEZWZpbml0aW9uLmNvbnRyb2xzLCAoYUNvbnRyb2wpID0+IHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uY29udHJvbC50eXBlID09PSBhQ29udHJvbC5mb3JtbHlUeXBlICYmXG4gICAgICAgICAgICAgICAgY29sdW1uLmNvbnRyb2wuc3VidHlwZSA9PT0gYUNvbnRyb2wuZm9ybWx5U3VidHlwZSkge1xuICAgICAgICAgICAgICAgIC8vLS0tLT4gdXBkYXRlIGNvbnRyb2wgZm9ybWx5VmFsaWRhdGlvbiBwcm9wZXJ0eVxuICAgICAgICAgICAgICAgIGNvbHVtbi5jb250cm9sLmZvcm1seVZhbGlkYXRpb24gPSBhQ29udHJvbC5mb3JtbHlWYWxpZGF0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGJpbmRDb25maWd1cmF0aW9uTGluZXMoY29uZmlndXJhdGlvbk1vZGVsLCBsaW5lcyl7XG4gICAgaWYoYW5ndWxhci5pc0FycmF5KGxpbmVzKSl7XG4gICAgICBjb25zdCBjb25maWd1cmF0aW9uTW9kZWxSZXN1bHQgID0gZ2V0RW1wdHlDb25maWdNb2RlbFJlc3VsdCgpO1xuICAgICAgY29uZmlndXJhdGlvbk1vZGVsUmVzdWx0LmxpbmVzICA9IFtdLmNvbmNhdChsaW5lcyk7XG4gICAgICBhbmd1bGFyLmNvcHkoY29uZmlndXJhdGlvbk1vZGVsUmVzdWx0LCBjb25maWd1cmF0aW9uTW9kZWwpO1xuICAgICAgcmV0dXJuIGdldE1lc3NhZ2VPYmplY3QoJ2NvbmZpZ3VyYXRpb24gbW9kZWwgaXMgYm91bmQnLCdsaW5lcyBhcmUgYm91bmQgdG8gY29uZmlndXJhdGlvbiBtb2RlbC4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdldEVycm9yT2JqZWN0KCdsaW5lcyBpcyBub3QgYW4gYXJyYXknLCAnQ2hlY2tzIGxpbmVzIHR5cGUsIGl0IGlzIG5vdCBhbiBhcnJheS4nKTtcbiAgICB9XG4gIH1cblxuICBhcHBseUNvbmZpZ3VyYXRpb25Ub2Zvcm1seU1vZGVsKGNvbmZpZ3VyYXRpb25Nb2RlbCwgZm9ybWx5TW9kZWwsIGZvcm1seURhdGFNb2RlbCkge1xuICAgIHJlc2V0Rm9ybWx5TW9kZWwoZm9ybWx5TW9kZWwpO1xuICAgIHJlc2V0RGF0YU1vZGVsKGZvcm1seURhdGFNb2RlbCk7XG5cbiAgICBjb25maWd1cmF0aW9uTW9kZWwubGluZXMuZm9yRWFjaChcbiAgICAgIChsaW5lLCBsaW5lSW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGxpbmUuY29sdW1ucy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBhZGRPbmVDb2x1bW5Db250cm9sKGZvcm1seU1vZGVsLCBjb25maWd1cmF0aW9uTW9kZWwsIGxpbmVJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbmUuY29sdW1ucy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICBhZGRUd29Db2x1bW5Db250cm9sKGZvcm1seU1vZGVsLCBjb25maWd1cmF0aW9uTW9kZWwsIGxpbmVJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbmUuY29sdW1ucy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICBhZGRUaHJlZUNvbHVtbkNvbnRyb2woZm9ybWx5TW9kZWwsIGNvbmZpZ3VyYXRpb25Nb2RlbCwgbGluZUluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgJG1vZGVsc1RyYW5zbGF0b3I7XG5cbmV4cG9ydCB7TU9ERUxfVFJBTlNMQVRPUl9TRVJWSUNFfTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvZm9ybXZpZXdlci9jb21wb25lbnRzL21vZGVsc1RyYW5zbGF0b3IvZWRhLmVhc3lGb3JtVmlld2VyLm1vZGVsVHJhbnNsYXRvci5zZXJ2aWNlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 15 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addThreeColumnControl = exports.addTwoColumnControl = exports.addOneColumnControl = exports.resetFormlyModel = exports.getMessageObject = exports.getErrorObject = exports.resetDataModel = exports.getEmptyConfigModelResult = exports.getConfigurationModelInit = exports.resetNyaSelect = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _controls = __webpack_require__(16);\n\nvar _formlyProxyService = __webpack_require__(55);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar resetNyaSelect = function resetNyaSelect(nyaSelectObj) {\n //reset\n angular.copy({ controls: [].concat(_toConsumableArray(_controls.configs)) }, nyaSelectObj);\n return true;\n};\n\nvar getConfigurationModelInit = function getConfigurationModelInit() {\n return _extends({}, _formlyProxyService.configurationModelInit);\n};\n\nvar getEmptyConfigModelResult = function getEmptyConfigModelResult() {\n return _extends({}, _formlyProxyService.configurationModelResult);\n};\n\nvar resetDataModel = function resetDataModel(obj) {\n var emptyDataModel = {};\n angular.copy(emptyDataModel, obj);\n return true;\n};\n\nvar getErrorObject = function getErrorObject(errorTitle, errorMessage) {\n var messageObj = {\n noError: false,\n title: '',\n Message: ''\n };\n messageObj.noError = false;\n messageObj.title = errorTitle;\n messageObj.Message = errorMessage;\n return messageObj;\n};\n\nvar getMessageObject = function getMessageObject(messageTitle, messageBody) {\n var messageObj = {\n noError: false,\n title: '',\n Message: ''\n };\n messageObj.noError = true;\n messageObj.title = messageTitle;\n messageObj.Message = messageBody;\n return messageObj;\n};\n\nvar resetFormlyModel = function resetFormlyModel(formlyModel) {\n var resetformly = [];\n angular.copy(resetformly, formlyModel);\n};\n\nexports.resetNyaSelect = resetNyaSelect;\nexports.getConfigurationModelInit = getConfigurationModelInit;\nexports.getEmptyConfigModelResult = getEmptyConfigModelResult;\nexports.resetDataModel = resetDataModel;\nexports.getErrorObject = getErrorObject;\nexports.getMessageObject = getMessageObject;\nexports.resetFormlyModel = resetFormlyModel;\nexports.addOneColumnControl = _formlyProxyService.addOneColumnControl;\nexports.addTwoColumnControl = _formlyProxyService.addTwoColumnControl;\nexports.addThreeColumnControl = _formlyProxyService.addThreeColumnControl;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Zvcm12aWV3ZXIvY29tcG9uZW50cy9tb2RlbHNUcmFuc2xhdG9yL2VkYS5lYXN5Rm9ybVZpZXdlci5tb2RlbFRyYW5zbGF0b3Iuc2VydmljZS5oZWxwZXJzLmpzPzQxMjQiXSwibmFtZXMiOlsicmVzZXROeWFTZWxlY3QiLCJueWFTZWxlY3RPYmoiLCJhbmd1bGFyIiwiY29weSIsImNvbnRyb2xzIiwiZ2V0Q29uZmlndXJhdGlvbk1vZGVsSW5pdCIsImdldEVtcHR5Q29uZmlnTW9kZWxSZXN1bHQiLCJyZXNldERhdGFNb2RlbCIsIm9iaiIsImVtcHR5RGF0YU1vZGVsIiwiZ2V0RXJyb3JPYmplY3QiLCJlcnJvclRpdGxlIiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZU9iaiIsIm5vRXJyb3IiLCJ0aXRsZSIsIk1lc3NhZ2UiLCJnZXRNZXNzYWdlT2JqZWN0IiwibWVzc2FnZVRpdGxlIiwibWVzc2FnZUJvZHkiLCJyZXNldEZvcm1seU1vZGVsIiwiZm9ybWx5TW9kZWwiLCJyZXNldGZvcm1seSIsImFkZE9uZUNvbHVtbkNvbnRyb2wiLCJhZGRUd29Db2x1bW5Db250cm9sIiwiYWRkVGhyZWVDb2x1bW5Db250cm9sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7OztBQVFBLElBQU1BLGlCQUFpQixTQUFqQkEsY0FBaUIsQ0FBQ0MsWUFBRCxFQUFrQjtBQUN2QztBQUNBQyxVQUFRQyxJQUFSLENBQWEsRUFBQ0MsMERBQUQsRUFBYixFQUErQ0gsWUFBL0M7QUFDQSxTQUFPLElBQVA7QUFDRCxDQUpEOztBQU1BLElBQU1JLDRCQUE0QixTQUE1QkEseUJBQTRCO0FBQUE7QUFBQSxDQUFsQzs7QUFFQSxJQUFNQyw0QkFBNEIsU0FBNUJBLHlCQUE0QjtBQUFBO0FBQUEsQ0FBbEM7O0FBRUEsSUFBTUMsaUJBQWlCLFNBQWpCQSxjQUFpQixDQUFDQyxHQUFELEVBQVM7QUFDOUIsTUFBTUMsaUJBQWlCLEVBQXZCO0FBQ0FQLFVBQVFDLElBQVIsQ0FBYU0sY0FBYixFQUE2QkQsR0FBN0I7QUFDQSxTQUFPLElBQVA7QUFDRCxDQUpEOztBQU1BLElBQU1FLGlCQUFpQixTQUFqQkEsY0FBaUIsQ0FBQ0MsVUFBRCxFQUFhQyxZQUFiLEVBQThCO0FBQ25ELE1BQU1DLGFBQWE7QUFDakJDLGFBQVUsS0FETztBQUVqQkMsV0FBVyxFQUZNO0FBR2pCQyxhQUFXO0FBSE0sR0FBbkI7QUFLQUgsYUFBV0MsT0FBWCxHQUFzQixLQUF0QjtBQUNBRCxhQUFXRSxLQUFYLEdBQXVCSixVQUF2QjtBQUNBRSxhQUFXRyxPQUFYLEdBQXVCSixZQUF2QjtBQUNBLFNBQU9DLFVBQVA7QUFDRCxDQVZEOztBQVlBLElBQU1JLG1CQUFtQixTQUFuQkEsZ0JBQW1CLENBQUNDLFlBQUQsRUFBZUMsV0FBZixFQUErQjtBQUN0RCxNQUFNTixhQUFhO0FBQ2pCQyxhQUFZLEtBREs7QUFFakJDLFdBQWEsRUFGSTtBQUdqQkMsYUFBYTtBQUhJLEdBQW5CO0FBS0FILGFBQVdDLE9BQVgsR0FBc0IsSUFBdEI7QUFDQUQsYUFBV0UsS0FBWCxHQUF1QkcsWUFBdkI7QUFDQUwsYUFBV0csT0FBWCxHQUF1QkcsV0FBdkI7QUFDQSxTQUFPTixVQUFQO0FBQ0QsQ0FWRDs7QUFZQSxJQUFNTyxtQkFBbUIsU0FBbkJBLGdCQUFtQixDQUFDQyxXQUFELEVBQWlCO0FBQ3hDLE1BQUlDLGNBQWMsRUFBbEI7QUFDQXBCLFVBQVFDLElBQVIsQ0FBYW1CLFdBQWIsRUFBMEJELFdBQTFCO0FBQ0QsQ0FIRDs7UUFNRXJCLGMsR0FBQUEsYztRQUNBSyx5QixHQUFBQSx5QjtRQUNBQyx5QixHQUFBQSx5QjtRQUNBQyxjLEdBQUFBLGM7UUFDQUcsYyxHQUFBQSxjO1FBQ0FPLGdCLEdBQUFBLGdCO1FBQ0FHLGdCLEdBQUFBLGdCO1FBQ0FHLG1CO1FBQ0FDLG1CO1FBQ0FDLHFCIiwiZmlsZSI6IjE1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29uZmlncyBhcyBzdGVwd2F5Q29udHJvbHMgfSBmcm9tICcuLi8uLi8uLi9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMnO1xuaW1wb3J0IHtcbiAgY29uZmlndXJhdGlvbk1vZGVsSW5pdCxcbiAgY29uZmlndXJhdGlvbk1vZGVsUmVzdWx0LFxuICBhZGRPbmVDb2x1bW5Db250cm9sLFxuICBhZGRUd29Db2x1bW5Db250cm9sLFxuICBhZGRUaHJlZUNvbHVtbkNvbnRyb2xcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi4vLi4vLi4vc3RlcHdheS9zZXJ2aWNlcy9mb3JtbHlQcm94eS9mb3JtbHlQcm94eS5zZXJ2aWNlLmhlbHBlcnMnO1xuXG5jb25zdCByZXNldE55YVNlbGVjdCA9IChueWFTZWxlY3RPYmopID0+IHtcbiAgLy9yZXNldFxuICBhbmd1bGFyLmNvcHkoe2NvbnRyb2xzOiBbLi4uc3RlcHdheUNvbnRyb2xzXX0sIG55YVNlbGVjdE9iaik7XG4gIHJldHVybiB0cnVlO1xufTtcblxuY29uc3QgZ2V0Q29uZmlndXJhdGlvbk1vZGVsSW5pdCA9ICgpID0+ICh7IC4uLmNvbmZpZ3VyYXRpb25Nb2RlbEluaXQgfSk7XG5cbmNvbnN0IGdldEVtcHR5Q29uZmlnTW9kZWxSZXN1bHQgPSAoKSA9PiAoeyAuLi5jb25maWd1cmF0aW9uTW9kZWxSZXN1bHQgfSk7XG5cbmNvbnN0IHJlc2V0RGF0YU1vZGVsID0gKG9iaikgPT4ge1xuICBjb25zdCBlbXB0eURhdGFNb2RlbCA9IHt9O1xuICBhbmd1bGFyLmNvcHkoZW1wdHlEYXRhTW9kZWwsIG9iaik7XG4gIHJldHVybiB0cnVlO1xufTtcblxuY29uc3QgZ2V0RXJyb3JPYmplY3QgPSAoZXJyb3JUaXRsZSwgZXJyb3JNZXNzYWdlKSA9PiB7XG4gIGNvbnN0IG1lc3NhZ2VPYmogPSB7XG4gICAgbm9FcnJvciA6IGZhbHNlLFxuICAgIHRpdGxlICAgIDogJycsXG4gICAgTWVzc2FnZSAgOiAnJ1xuICB9O1xuICBtZXNzYWdlT2JqLm5vRXJyb3IgID0gZmFsc2U7XG4gIG1lc3NhZ2VPYmoudGl0bGUgICAgID0gZXJyb3JUaXRsZTtcbiAgbWVzc2FnZU9iai5NZXNzYWdlICAgPSBlcnJvck1lc3NhZ2U7XG4gIHJldHVybiBtZXNzYWdlT2JqO1xufTtcblxuY29uc3QgZ2V0TWVzc2FnZU9iamVjdCA9IChtZXNzYWdlVGl0bGUsIG1lc3NhZ2VCb2R5KSA9PiB7XG4gIGNvbnN0IG1lc3NhZ2VPYmogPSB7XG4gICAgbm9FcnJvciAgIDogZmFsc2UsXG4gICAgdGl0bGUgICAgICA6ICcnLFxuICAgIE1lc3NhZ2UgICAgOiAnJ1xuICB9O1xuICBtZXNzYWdlT2JqLm5vRXJyb3IgID0gdHJ1ZTtcbiAgbWVzc2FnZU9iai50aXRsZSAgICAgPSBtZXNzYWdlVGl0bGU7XG4gIG1lc3NhZ2VPYmouTWVzc2FnZSAgID0gbWVzc2FnZUJvZHk7XG4gIHJldHVybiBtZXNzYWdlT2JqO1xufTtcblxuY29uc3QgcmVzZXRGb3JtbHlNb2RlbCA9IChmb3JtbHlNb2RlbCkgPT4ge1xuICB2YXIgcmVzZXRmb3JtbHkgPSBbXTtcbiAgYW5ndWxhci5jb3B5KHJlc2V0Zm9ybWx5LCBmb3JtbHlNb2RlbCk7XG59O1xuXG5leHBvcnQge1xuICByZXNldE55YVNlbGVjdCxcbiAgZ2V0Q29uZmlndXJhdGlvbk1vZGVsSW5pdCxcbiAgZ2V0RW1wdHlDb25maWdNb2RlbFJlc3VsdCxcbiAgcmVzZXREYXRhTW9kZWwsXG4gIGdldEVycm9yT2JqZWN0LFxuICBnZXRNZXNzYWdlT2JqZWN0LFxuICByZXNldEZvcm1seU1vZGVsLFxuICBhZGRPbmVDb2x1bW5Db250cm9sLFxuICBhZGRUd29Db2x1bW5Db250cm9sLFxuICBhZGRUaHJlZUNvbHVtbkNvbnRyb2xcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL2Zvcm12aWV3ZXIvY29tcG9uZW50cy9tb2RlbHNUcmFuc2xhdG9yL2VkYS5lYXN5Rm9ybVZpZXdlci5tb2RlbFRyYW5zbGF0b3Iuc2VydmljZS5oZWxwZXJzLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 16 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.controls = exports.configs = undefined;\n\nvar _blank = __webpack_require__(17);\n\nvar _editBlankControl = __webpack_require__(18);\n\nvar _editBlankControl2 = _interopRequireDefault(_editBlankControl);\n\nvar _IpAdress = __webpack_require__(19);\n\nvar _editIpAdress = __webpack_require__(20);\n\nvar _editIpAdress2 = _interopRequireDefault(_editIpAdress);\n\nvar _date = __webpack_require__(21);\n\nvar _editDate = __webpack_require__(22);\n\nvar _editDate2 = _interopRequireDefault(_editDate);\n\nvar _checkbox = __webpack_require__(23);\n\nvar _editCheckBox = __webpack_require__(24);\n\nvar _editCheckBox2 = _interopRequireDefault(_editCheckBox);\n\nvar _email = __webpack_require__(25);\n\nvar _editEmail = __webpack_require__(26);\n\nvar _editEmail2 = _interopRequireDefault(_editEmail);\n\nvar _basicSelect = __webpack_require__(27);\n\nvar _editBasicSelect = __webpack_require__(28);\n\nvar _editBasicSelect2 = _interopRequireDefault(_editBasicSelect);\n\nvar _groupedSelect = __webpack_require__(29);\n\nvar _editGroupedSelect = __webpack_require__(30);\n\nvar _editGroupedSelect2 = _interopRequireDefault(_editGroupedSelect);\n\nvar _header = __webpack_require__(31);\n\nvar _editHeaderControl = __webpack_require__(32);\n\nvar _editHeaderControl2 = _interopRequireDefault(_editHeaderControl);\n\nvar _password = __webpack_require__(33);\n\nvar _editPassword = __webpack_require__(34);\n\nvar _editPassword2 = _interopRequireDefault(_editPassword);\n\nvar _stepwayRadio = __webpack_require__(35);\n\nvar _stepwayEditRadio = __webpack_require__(36);\n\nvar _stepwayEditRadio2 = __webpack_require__(38);\n\nvar _stepwayEditRadio3 = _interopRequireDefault(_stepwayEditRadio2);\n\nvar _stepwayRichTextEditor = __webpack_require__(39);\n\nvar _stepwayEditRichTextEditor = __webpack_require__(40);\n\nvar _stepwayEditRichTextEditor2 = __webpack_require__(42);\n\nvar _stepwayEditRichTextEditor3 = _interopRequireDefault(_stepwayEditRichTextEditor2);\n\nvar _stepwaySubTitle = __webpack_require__(43);\n\nvar _stepwayEditSubTitle = __webpack_require__(44);\n\nvar _stepwayEditSubTitle2 = __webpack_require__(46);\n\nvar _stepwayEditSubTitle3 = _interopRequireDefault(_stepwayEditSubTitle2);\n\nvar _stepwayTextArea = __webpack_require__(47);\n\nvar _stepwayEditTextArea = __webpack_require__(48);\n\nvar _stepwayEditTextArea2 = __webpack_require__(50);\n\nvar _stepwayEditTextArea3 = _interopRequireDefault(_stepwayEditTextArea2);\n\nvar _stepwayTextInput = __webpack_require__(51);\n\nvar _stepwayEditTextInput = __webpack_require__(52);\n\nvar _stepwayEditTextInput2 = __webpack_require__(54);\n\nvar _stepwayEditTextInput3 = _interopRequireDefault(_stepwayEditTextInput2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// controls configs\nvar configs = [_IpAdress.IpAdressConfig, _date.DateConfig, _checkbox.CheckBoxConfig, _email.EmailConfig, _basicSelect.BasicSelectConfig, _blank.BlankConfig, _groupedSelect.GroupedSelectConfig, _header.HeaderConfig, _password.PasswordConfig, _stepwayRadio.RadioConfig, _stepwayRichTextEditor.RichTextEditorConfig, _stepwaySubTitle.SubTitleConfig, _stepwayTextArea.TextAreaConfig, _stepwayTextInput.TextInputConfig];\n\n// controls component (for edit control modal)\nvar controls = [\n// editBlankControl:\n{\n name: _editBlankControl.EDIT_BLANK_CONTROL_COMPONENT,\n component: _editBlankControl.editBlankControlComponent,\n moduleName: _editBlankControl2.default.name\n},\n// editIpAdress:\n{\n name: _editIpAdress.EDIT_IP_ADRESS_COMPONENT,\n component: _editIpAdress.editIpAdressControlComponent,\n moduleName: _editIpAdress2.default.name\n},\n// editDate:\n{\n name: _editDate.EDIT_DATE_COMPONENT,\n component: _editDate.editDateControlComponent,\n moduleName: _editDate2.default.name\n},\n// editBasicSelect:\n{\n name: _editBasicSelect.EDIT_BASIC_SELECT_COMPONENT,\n component: _editBasicSelect.editBasicSelectControlComponent,\n moduleName: _editBasicSelect2.default.name\n},\n// editGroupedSelect:\n{\n name: _editGroupedSelect.EDIT_GROUPED_SELECT_COMPONENT,\n component: _editGroupedSelect.editGroupedSelectControlComponent,\n moduleName: _editGroupedSelect2.default.name\n},\n// editCheckBox:\n{\n name: _editCheckBox.EDIT_CHECKBOX_COMPONENT,\n component: _editCheckBox.editCheckBoxControlComponent,\n moduleName: _editCheckBox2.default.name\n},\n// editEmail:\n{\n name: _editEmail.EDIT_EMAIL_COMPONENT,\n component: _editEmail.editEmailControlComponent,\n moduleName: _editEmail2.default.name\n},\n// editHeader:\n{\n name: _editHeaderControl.EDIT_HEADER_CONTROL_COMPONENT,\n component: _editHeaderControl.editHeaderControlComponent,\n moduleName: _editHeaderControl2.default.name\n},\n// editPassword:\n{\n name: _editPassword.EDIT_PASSWORD_CONTROL_COMPONENT,\n component: _editPassword.editPasswordControlComponent,\n moduleName: _editPassword2.default.name\n},\n// editRadio:\n{\n name: _stepwayEditRadio.EDIT_RADIO_CONTROL_COMPONENT,\n component: _stepwayEditRadio.editRadioControlComponent,\n moduleName: _stepwayEditRadio3.default.name\n},\n// editRichTextEditor:\n{\n name: _stepwayEditRichTextEditor.EDIT_RICH_TEXT_EDITOR_COMPONENT,\n component: _stepwayEditRichTextEditor.editRichTextEditorControlComponent,\n moduleName: _stepwayEditRichTextEditor3.default.name\n},\n// editSubTitle:\n{\n name: _stepwayEditSubTitle.EDIT_SUBTITLE_CONTROL_COMPONENT,\n component: _stepwayEditSubTitle.editSubTitleControlComponent,\n moduleName: _stepwayEditSubTitle3.default.name\n},\n// editTextArea:\n{\n name: _stepwayEditTextArea.EDIT_TEXTAREA_CONTROL_COMPONENT,\n component: _stepwayEditTextArea.editTextareaControlComponent,\n moduleName: _stepwayEditTextArea3.default.name\n},\n// editTextInput:\n{\n name: _stepwayEditTextInput.EDIT_TEXTINPUT_CONTROL_COMPONENT,\n component: _stepwayEditTextInput.editTextInputControlComponent,\n moduleName: _stepwayEditTextInput3.default.name\n}];\n\nexports.configs = configs;\nexports.controls = controls;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9pbmRleC5qcz83NzZhIl0sIm5hbWVzIjpbImNvbmZpZ3MiLCJjb250cm9scyIsIm5hbWUiLCJjb21wb25lbnQiLCJtb2R1bGVOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7Ozs7QUFFQTs7QUFDQTs7OztBQUVBOztBQUNBOzs7O0FBRUE7O0FBQ0E7Ozs7QUFFQTs7QUFDQTs7OztBQUVBOztBQUNBOzs7O0FBRUE7O0FBQ0E7Ozs7QUFFQTs7QUFDQTs7OztBQUVBOztBQUNBOzs7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7OztBQUVBOztBQUNBOztBQUNBOzs7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7O0FBR0E7QUFDQSxJQUFNQSxVQUFVLCtZQUFoQjs7QUFpQkE7QUFDQSxJQUFNQyxXQUFXO0FBQ2Y7QUFDQTtBQUNFQyxzREFERjtBQUVFQyx3REFGRjtBQUdFQyxjQUFZLDJCQUFnQkY7QUFIOUIsQ0FGZTtBQU9mO0FBQ0M7QUFDQ0EsOENBREQ7QUFFQ0MsdURBRkQ7QUFHQ0MsY0FBWSx1QkFBbUJGO0FBSGhDLENBUmM7QUFhZjtBQUNBO0FBQ0VBLHFDQURGO0FBRUVDLCtDQUZGO0FBR0VDLGNBQVksbUJBQWVGO0FBSDdCLENBZGU7QUFtQmY7QUFDQTtBQUNFQSxvREFERjtBQUVFQyw2REFGRjtBQUdFQyxjQUFZLDBCQUFzQkY7QUFIcEMsQ0FwQmU7QUF5QmY7QUFDQTtBQUNFQSx3REFERjtBQUVFQyxpRUFGRjtBQUdFQyxjQUFZLDRCQUF3QkY7QUFIdEMsQ0ExQmU7QUErQmY7QUFDQTtBQUNFQSw2Q0FERjtBQUVFQyx1REFGRjtBQUdFQyxjQUFZLHVCQUFtQkY7QUFIakMsQ0FoQ2U7QUFxQ2Y7QUFDQTtBQUNFQSx1Q0FERjtBQUVFQyxpREFGRjtBQUdFQyxjQUFZLG9CQUF1QkY7QUFIckMsQ0F0Q2U7QUEyQ2Y7QUFDQTtBQUNFQSx3REFERjtBQUVFQywwREFGRjtBQUdFQyxjQUFZLDRCQUFrQkY7QUFIaEMsQ0E1Q2U7QUFpRGY7QUFDQTtBQUNFQSxxREFERjtBQUVFQyx1REFGRjtBQUdFQyxjQUFZLHVCQUFtQkY7QUFIakMsQ0FsRGU7QUF1RGY7QUFDQTtBQUNFQSxzREFERjtBQUVFQyx3REFGRjtBQUdFQyxjQUFZLDJCQUFnQkY7QUFIOUIsQ0F4RGU7QUE2RGY7QUFDQTtBQUNFQSxrRUFERjtBQUVFQywwRUFGRjtBQUdFQyxjQUFZLG9DQUF5QkY7QUFIdkMsQ0E5RGU7QUFtRWY7QUFDQTtBQUNFQSw0REFERjtBQUVFQyw4REFGRjtBQUdFQyxjQUFZLDhCQUFhRjtBQUgzQixDQXBFZTtBQXlFZjtBQUNBO0FBQ0VBLDREQURGO0FBRUVDLDhEQUZGO0FBR0VDLGNBQVksOEJBQTBCRjtBQUh4QyxDQTFFZTtBQStFZjtBQUNBO0FBQ0VBLDhEQURGO0FBRUVDLGdFQUZGO0FBR0VDLGNBQVksK0JBQTJCRjtBQUh6QyxDQWhGZSxDQUFqQjs7UUF3RkVGLE8sR0FBQUEsTztRQUNBQyxRLEdBQUFBLFEiLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCbGFua0NvbmZpZyB9IGZyb20gJy4vYmxhbmsvY29uZmlnL2JsYW5rLmNvbmZpZyc7XG5pbXBvcnQgZWRpdEJsYW5rTW9kdWxlLCB7ZWRpdEJsYW5rQ29udHJvbENvbXBvbmVudCwgRURJVF9CTEFOS19DT05UUk9MX0NPTVBPTkVOVH0gZnJvbSAnLi9ibGFuay9lZGl0QmxhbmsvZWRpdEJsYW5rQ29udHJvbC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBJcEFkcmVzc0NvbmZpZyB9IGZyb20gJy4vSXBBZHJlc3MvY29uZmlnL0lwQWRyZXNzLmNvbmZpZyc7XG5pbXBvcnQgZWRpdElwQWRyZXNzTW9kdWxlLCB7ZWRpdElwQWRyZXNzQ29udHJvbENvbXBvbmVudCwgRURJVF9JUF9BRFJFU1NfQ09NUE9ORU5UfSBmcm9tICcuL0lwQWRyZXNzL2VkaXRJcEFkcmVzcy9lZGl0SXBBZHJlc3MuY29tcG9uZW50JztcblxuaW1wb3J0IHsgRGF0ZUNvbmZpZyB9IGZyb20gJy4vRGF0ZS9jb25maWcvZGF0ZS5jb25maWcnO1xuaW1wb3J0IGVkaXREYXRlTW9kdWxlLCB7ZWRpdERhdGVDb250cm9sQ29tcG9uZW50LCBFRElUX0RBVEVfQ09NUE9ORU5UfSBmcm9tICcuL0RhdGUvZWRpdERhdGUvZWRpdERhdGUuY29tcG9uZW50JztcblxuaW1wb3J0IHsgQ2hlY2tCb3hDb25maWcgfSBmcm9tICcuL0NoZWNrQm94L2NvbmZpZy9jaGVja2JveC5jb25maWcnO1xuaW1wb3J0IGVkaXRDaGVja0JveE1vZHVsZSwge2VkaXRDaGVja0JveENvbnRyb2xDb21wb25lbnQsIEVESVRfQ0hFQ0tCT1hfQ09NUE9ORU5UfSBmcm9tICcuL0NoZWNrQm94L2VkaXRDaGVja0JveC9lZGl0Q2hlY2tCb3guY29tcG9uZW50JztcblxuaW1wb3J0IHsgRW1haWxDb25maWcgfSBmcm9tICcuL0VtYWlsL2NvbmZpZy9lbWFpbC5jb25maWcnO1xuaW1wb3J0IGVkaXRFbWFpbENvbnRyb2xNb2R1bGUsIHtlZGl0RW1haWxDb250cm9sQ29tcG9uZW50LCBFRElUX0VNQUlMX0NPTVBPTkVOVH0gZnJvbSAnLi9FbWFpbC9lZGl0RW1haWwvZWRpdEVtYWlsLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEJhc2ljU2VsZWN0Q29uZmlnIH0gZnJvbSAnLi9iYXNpY1NlbGVjdC9jb25maWcvYmFzaWNTZWxlY3QuY29uZmlnJztcbmltcG9ydCBlZGl0QmFzaWNTZWxlY3RNb2R1bGUsIHsgZWRpdEJhc2ljU2VsZWN0Q29udHJvbENvbXBvbmVudCwgRURJVF9CQVNJQ19TRUxFQ1RfQ09NUE9ORU5UIH0gZnJvbSAnLi9iYXNpY1NlbGVjdC9lZGl0QmFzaWNTZWxlY3QvZWRpdEJhc2ljU2VsZWN0LmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEdyb3VwZWRTZWxlY3RDb25maWcgfSBmcm9tICcuL2dyb3VwZWRTZWxlY3QvY29uZmlnL2dyb3VwZWRTZWxlY3QuY29uZmlnJztcbmltcG9ydCBlZGl0R3JvdXBlZFNlbGVjdE1vZHVsZSwge2VkaXRHcm91cGVkU2VsZWN0Q29udHJvbENvbXBvbmVudCwgRURJVF9HUk9VUEVEX1NFTEVDVF9DT01QT05FTlR9IGZyb20gJy4vZ3JvdXBlZFNlbGVjdC9lZGl0R3JvdXBlZFNlbGVjdC9lZGl0R3JvdXBlZFNlbGVjdC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBIZWFkZXJDb25maWcgfSBmcm9tICcuL2hlYWRlci9jb25maWcvaGVhZGVyLmNvbmZpZyc7XG5pbXBvcnQgZWRpdEhlYWRlckNvbnRyb2wsIHtlZGl0SGVhZGVyQ29udHJvbENvbXBvbmVudCwgRURJVF9IRUFERVJfQ09OVFJPTF9DT01QT05FTlR9IGZyb20gJy4vaGVhZGVyL2VkaXRIZWFkZXIvZWRpdEhlYWRlckNvbnRyb2wuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUGFzc3dvcmRDb25maWcgfSBmcm9tICcuL3Bhc3N3b3JkL2NvbmZpZy9wYXNzd29yZC5jb25maWcnO1xuaW1wb3J0IGVkaXRQYXNzd29yZE1vZHVsZSwge2VkaXRQYXNzd29yZENvbnRyb2xDb21wb25lbnQsIEVESVRfUEFTU1dPUkRfQ09OVFJPTF9DT01QT05FTlR9IGZyb20gJy4vcGFzc3dvcmQvZWRpdFBhc3N3b3JkL2VkaXRQYXNzd29yZC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBSYWRpb0NvbmZpZyB9IGZyb20gJy4vcmFkaW8vY29uZmlnL3N0ZXB3YXkucmFkaW8uY29uZmlnJztcbmltcG9ydCB7ZWRpdFJhZGlvQ29udHJvbENvbXBvbmVudCwgRURJVF9SQURJT19DT05UUk9MX0NPTVBPTkVOVH0gZnJvbSAnLi9yYWRpby9lZGl0UmFkaW8vc3RlcHdheS5lZGl0UmFkaW8uY29tcG9uZW50JztcbmltcG9ydCBlZGl0UmFkaW9Nb2R1bGUgZnJvbSAnLi9yYWRpby9lZGl0UmFkaW8vc3RlcHdheS5lZGl0UmFkaW8ubW9kdWxlJztcblxuaW1wb3J0IHsgUmljaFRleHRFZGl0b3JDb25maWcgfSAgZnJvbSAnLi9yaWNoVGV4dEVkaXRvci9jb25maWcvc3RlcHdheS5yaWNoVGV4dEVkaXRvci5jb25maWcnO1xuaW1wb3J0IHtlZGl0UmljaFRleHRFZGl0b3JDb250cm9sQ29tcG9uZW50LCBFRElUX1JJQ0hfVEVYVF9FRElUT1JfQ09NUE9ORU5UfSBmcm9tICcuL3JpY2hUZXh0RWRpdG9yL2VkaXRSaWNoVGV4dEVkaXRvci9zdGVwd2F5LmVkaXRSaWNoVGV4dEVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IGVkaXRSaWNoVGV4dEVkaXRvck1vZHVsZSBmcm9tICcuL3JpY2hUZXh0RWRpdG9yL2VkaXRSaWNoVGV4dEVkaXRvci9zdGVwd2F5LmVkaXRSaWNoVGV4dEVkaXRvci5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTdWJUaXRsZUNvbmZpZyB9ICBmcm9tICcuL3N1YlRpdGxlL2NvbmZpZy9zdGVwd2F5LnN1YlRpdGxlLmNvbmZpZyc7XG5pbXBvcnQge2VkaXRTdWJUaXRsZUNvbnRyb2xDb21wb25lbnQsIEVESVRfU1VCVElUTEVfQ09OVFJPTF9DT01QT05FTlR9IGZyb20gJy4vc3ViVGl0bGUvZWRpdFN1YlRpdGxlL3N0ZXB3YXkuZWRpdFN1YlRpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgZWRpdFN1YlRpdGxlIGZyb20gJy4vc3ViVGl0bGUvZWRpdFN1YlRpdGxlL3N0ZXB3YXkuZWRpdFN1YlRpdGxlLm1vZHVsZSc7XG5cbmltcG9ydCB7IFRleHRBcmVhQ29uZmlnIH0gIGZyb20gJy4vdGV4dEFyZWEvY29uZmlnL3N0ZXB3YXkudGV4dEFyZWEuY29uZmlnJztcbmltcG9ydCB7ZWRpdFRleHRhcmVhQ29udHJvbENvbXBvbmVudCwgRURJVF9URVhUQVJFQV9DT05UUk9MX0NPTVBPTkVOVH0gZnJvbSAnLi90ZXh0QXJlYS9lZGl0VGV4dEFyZWEvc3RlcHdheS5lZGl0VGV4dEFyZWEuY29tcG9uZW50JztcbmltcG9ydCBlZGl0VGV4dGFyZWFDb250cm9sTW9kdWxlIGZyb20gJy4vdGV4dEFyZWEvZWRpdFRleHRBcmVhL3N0ZXB3YXkuZWRpdFRleHRBcmVhLm1vZHVsZSc7XG5cbmltcG9ydCB7IFRleHRJbnB1dENvbmZpZyB9ICBmcm9tICcuL3RleHRJbnB1dC9jb25maWcvc3RlcHdheS50ZXh0SW5wdXQuY29uZmlnJztcbmltcG9ydCB7ZWRpdFRleHRJbnB1dENvbnRyb2xDb21wb25lbnQsIEVESVRfVEVYVElOUFVUX0NPTlRST0xfQ09NUE9ORU5UfSBmcm9tICcuL3RleHRJbnB1dC9lZGl0VGV4dElucHV0L3N0ZXB3YXkuZWRpdFRleHRJbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IGVkaXRUZXh0SW5wdXRDb250cm9sTW9kdWxlIGZyb20gJy4vdGV4dElucHV0L2VkaXRUZXh0SW5wdXQvc3RlcHdheS5lZGl0VGV4dElucHV0Lm1vZHVsZSc7XG5cblxuLy8gY29udHJvbHMgY29uZmlnc1xuY29uc3QgY29uZmlncyA9IFtcbiAgSXBBZHJlc3NDb25maWcsXG4gIERhdGVDb25maWcsXG4gIENoZWNrQm94Q29uZmlnLFxuICBFbWFpbENvbmZpZyxcbiAgQmFzaWNTZWxlY3RDb25maWcsXG4gIEJsYW5rQ29uZmlnLFxuICBHcm91cGVkU2VsZWN0Q29uZmlnLFxuICBIZWFkZXJDb25maWcsXG4gIFBhc3N3b3JkQ29uZmlnLFxuICBSYWRpb0NvbmZpZyxcbiAgUmljaFRleHRFZGl0b3JDb25maWcsXG4gIFN1YlRpdGxlQ29uZmlnLFxuICBUZXh0QXJlYUNvbmZpZyxcbiAgVGV4dElucHV0Q29uZmlnXG5dO1xuXG4vLyBjb250cm9scyBjb21wb25lbnQgKGZvciBlZGl0IGNvbnRyb2wgbW9kYWwpXG5jb25zdCBjb250cm9scyA9IFtcbiAgLy8gZWRpdEJsYW5rQ29udHJvbDpcbiAge1xuICAgIG5hbWU6ICAgICAgIEVESVRfQkxBTktfQ09OVFJPTF9DT01QT05FTlQsXG4gICAgY29tcG9uZW50OiAgZWRpdEJsYW5rQ29udHJvbENvbXBvbmVudCxcbiAgICBtb2R1bGVOYW1lOiBlZGl0QmxhbmtNb2R1bGUubmFtZVxuICB9LFxuICAvLyBlZGl0SXBBZHJlc3M6XG4gICB7XG4gICAgbmFtZTogICAgICAgRURJVF9JUF9BRFJFU1NfQ09NUE9ORU5ULFxuICAgIGNvbXBvbmVudDogIGVkaXRJcEFkcmVzc0NvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdElwQWRyZXNzTW9kdWxlLm5hbWVcbiAgfSxcbiAgLy8gZWRpdERhdGU6XG4gIHtcbiAgICBuYW1lOiAgICAgICBFRElUX0RBVEVfQ09NUE9ORU5ULFxuICAgIGNvbXBvbmVudDogIGVkaXREYXRlQ29udHJvbENvbXBvbmVudCxcbiAgICBtb2R1bGVOYW1lOiBlZGl0RGF0ZU1vZHVsZS5uYW1lXG4gIH0sXG4gIC8vIGVkaXRCYXNpY1NlbGVjdDpcbiAge1xuICAgIG5hbWU6IEVESVRfQkFTSUNfU0VMRUNUX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRCYXNpY1NlbGVjdENvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdEJhc2ljU2VsZWN0TW9kdWxlLm5hbWVcbiAgfSxcbiAgLy8gZWRpdEdyb3VwZWRTZWxlY3Q6XG4gIHtcbiAgICBuYW1lOiBFRElUX0dST1VQRURfU0VMRUNUX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRHcm91cGVkU2VsZWN0Q29udHJvbENvbXBvbmVudCxcbiAgICBtb2R1bGVOYW1lOiBlZGl0R3JvdXBlZFNlbGVjdE1vZHVsZS5uYW1lXG4gIH0sXG4gIC8vIGVkaXRDaGVja0JveDpcbiAge1xuICAgIG5hbWU6IEVESVRfQ0hFQ0tCT1hfQ09NUE9ORU5ULFxuICAgIGNvbXBvbmVudDogZWRpdENoZWNrQm94Q29udHJvbENvbXBvbmVudCxcbiAgICBtb2R1bGVOYW1lOiBlZGl0Q2hlY2tCb3hNb2R1bGUubmFtZVxuICB9LFxuICAvLyBlZGl0RW1haWw6XG4gIHtcbiAgICBuYW1lOiBFRElUX0VNQUlMX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRFbWFpbENvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdEVtYWlsQ29udHJvbE1vZHVsZS5uYW1lXG4gIH0sXG4gIC8vIGVkaXRIZWFkZXI6XG4gIHtcbiAgICBuYW1lOiBFRElUX0hFQURFUl9DT05UUk9MX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRIZWFkZXJDb250cm9sQ29tcG9uZW50LFxuICAgIG1vZHVsZU5hbWU6IGVkaXRIZWFkZXJDb250cm9sLm5hbWVcbiAgfSxcbiAgLy8gZWRpdFBhc3N3b3JkOlxuICB7XG4gICAgbmFtZTogRURJVF9QQVNTV09SRF9DT05UUk9MX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRQYXNzd29yZENvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdFBhc3N3b3JkTW9kdWxlLm5hbWVcbiAgfSxcbiAgLy8gZWRpdFJhZGlvOlxuICB7XG4gICAgbmFtZTogRURJVF9SQURJT19DT05UUk9MX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRSYWRpb0NvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdFJhZGlvTW9kdWxlLm5hbWVcbiAgfSxcbiAgLy8gZWRpdFJpY2hUZXh0RWRpdG9yOlxuICB7XG4gICAgbmFtZTogRURJVF9SSUNIX1RFWFRfRURJVE9SX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRSaWNoVGV4dEVkaXRvckNvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdFJpY2hUZXh0RWRpdG9yTW9kdWxlLm5hbWVcbiAgfSxcbiAgLy8gZWRpdFN1YlRpdGxlOlxuICB7XG4gICAgbmFtZTogRURJVF9TVUJUSVRMRV9DT05UUk9MX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRTdWJUaXRsZUNvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdFN1YlRpdGxlLm5hbWVcbiAgfSxcbiAgLy8gZWRpdFRleHRBcmVhOlxuICB7XG4gICAgbmFtZTogRURJVF9URVhUQVJFQV9DT05UUk9MX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRUZXh0YXJlYUNvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdFRleHRhcmVhQ29udHJvbE1vZHVsZS5uYW1lXG4gIH0sXG4gIC8vIGVkaXRUZXh0SW5wdXQ6XG4gIHtcbiAgICBuYW1lOiBFRElUX1RFWFRJTlBVVF9DT05UUk9MX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRUZXh0SW5wdXRDb250cm9sQ29tcG9uZW50LFxuICAgIG1vZHVsZU5hbWU6IGVkaXRUZXh0SW5wdXRDb250cm9sTW9kdWxlLm5hbWVcbiAgfVxuXTtcblxuZXhwb3J0IHtcbiAgY29uZmlncyxcbiAgY29udHJvbHNcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9pbmRleC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 17 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar BlankConfig = exports.BlankConfig = {\n id: 'empty',\n name: 'no control',\n subtitle: 'no control',\n group: 'Blank',\n formlyType: 'blank',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {}\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9ibGFuay9jb25maWcvYmxhbmsuY29uZmlnLmpzPzFjMTUiXSwibmFtZXMiOlsiQmxhbmtDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiZm9ybWx5VmFsaWRhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFNQSxvQ0FBYztBQUN6QkMsTUFBSSxPQURxQjtBQUV6QkMsUUFBTSxZQUZtQjtBQUd6QkMsWUFBVSxZQUhlO0FBSXpCQyxTQUFPLE9BSmtCO0FBS3pCQyxjQUFZLE9BTGE7QUFNekJDLGlCQUFlLEVBTlU7QUFPekJDLGVBQWEsRUFQWTtBQVF6QkMsa0JBQWdCLEtBUlM7QUFTekJDLHFCQUFtQixFQVRNO0FBVXpCQyxpQkFBZSxFQVZVO0FBV3pCQyw4QkFBNEIsRUFYSDtBQVl6QkMsb0JBQWtCLEVBWk87QUFhekJDLG9CQUFrQjtBQWJPLENBQXBCIiwiZmlsZSI6IjE3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEJsYW5rQ29uZmlnID0ge1xuICBpZDogJ2VtcHR5JyxcbiAgbmFtZTogJ25vIGNvbnRyb2wnLFxuICBzdWJ0aXRsZTogJ25vIGNvbnRyb2wnLFxuICBncm91cDogJ0JsYW5rJyxcbiAgZm9ybWx5VHlwZTogJ2JsYW5rJyxcbiAgZm9ybWx5U3VidHlwZTogJycsXG4gIGZvcm1seUxhYmVsOiAnJyxcbiAgZm9ybWx5UmVxdWlyZWQ6IGZhbHNlLFxuICBmb3JtbHlEZXNjcmlwdGlvbjogJycsXG4gIGZvcm1seU9wdGlvbnM6IFtdICxcbiAgZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXM6IHt9LFxuICBmb3JtbHlWYWxpZGF0b3JzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdGlvbjoge31cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9ibGFuay9jb25maWcvYmxhbmsuY29uZmlnLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 18 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_BLANK_CONTROL_COMPONENT = exports.EDIT_BLANK_CONTROL_COMPONENT = 'editBlankControl';\n\nvar editBlankControlComponent = exports.editBlankControlComponent = {\n template: '\\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n {{\\'COL_WILL_BE_BLANK\\' | translate}}\\n \\n \\n
\\n
\\n
\\n
\\n ',\n bindings: {},\n controller: (_temp = _class = function editBlankControlController() {\n //\n\n _classCallCheck(this, editBlankControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editBlankModuleName = 'stepway.editBlankControl.module';\nexports.default = angular.module(editBlankModuleName, []).component(EDIT_BLANK_CONTROL_COMPONENT, editBlankControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9ibGFuay9lZGl0QmxhbmsvZWRpdEJsYW5rQ29udHJvbC5jb21wb25lbnQuanM/NmRhZCJdLCJuYW1lcyI6WyJFRElUX0JMQU5LX0NPTlRST0xfQ09NUE9ORU5UIiwiZWRpdEJsYW5rQ29udHJvbENvbXBvbmVudCIsInRlbXBsYXRlIiwiYmluZGluZ3MiLCJjb250cm9sbGVyIiwiJGluamVjdCIsImVkaXRCbGFua01vZHVsZU5hbWUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sSUFBTUEsc0VBQStCLGtCQUFyQzs7QUFFQSxJQUFNQyxnRUFBNEI7QUFDdkNDLHlvQkFEdUM7QUEwQnZDQyxZQUFVLEVBMUI2QjtBQTJCdkNDLGdDQUlFLHNDQUFjO0FBQ1o7O0FBRFk7QUFFYixHQU5ILFNBRVNDLE9BRlQsR0FFbUIsRUFGbkI7QUEzQnVDLENBQWxDOztBQXFDUCxJQUFNQyxzQkFBc0IsaUNBQTVCO2tCQUNlQyxRQUNFQyxNQURGLENBQ1NGLG1CQURULEVBQzhCLEVBRDlCLEVBRUVHLFNBRkYsQ0FFWVQsNEJBRlosRUFFMENDLHlCQUYxQyxDIiwiZmlsZSI6IjE4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVESVRfQkxBTktfQ09OVFJPTF9DT01QT05FTlQgPSAnZWRpdEJsYW5rQ29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0QmxhbmtDb250cm9sQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZTogYFxuICA8ZGl2IG5nLXN3aXRjaC13aGVuPVwiZW1wdHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cImdyZXlUZXh0XCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCI+PC9pPlxuICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAge3snUFJFVklFV19UQUInIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxoci8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJ0ZXh0LWNlbnRlciBncmV5VGV4dFwiPlxuICAgICAgICAgICAgICB7eydDT0xfV0lMTF9CRV9CTEFOSycgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzOiB7fSxcbiAgY29udHJvbGxlcjpcbiAgY2xhc3MgZWRpdEJsYW5rQ29udHJvbENvbnRyb2xsZXIge1xuICAgIHN0YXRpYyAkaW5qZWN0ID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIC8vXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBlZGl0QmxhbmtNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdEJsYW5rQ29udHJvbC5tb2R1bGUnO1xuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuICAgICAgICAgICAgICAgIC5tb2R1bGUoZWRpdEJsYW5rTW9kdWxlTmFtZSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChFRElUX0JMQU5LX0NPTlRST0xfQ09NUE9ORU5ULCBlZGl0QmxhbmtDb250cm9sQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL2JsYW5rL2VkaXRCbGFuay9lZGl0QmxhbmtDb250cm9sLmNvbXBvbmVudC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 19 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar IpAdressConfig = exports.IpAdressConfig = {\n id: 'IpAdress',\n name: 'IpAdress',\n subtitle: 'IpAdress',\n group: 'input',\n formlyType: 'input',\n formlySubtype: 'ipadress',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {\n ipAddressShape: {\n expression: function expression(viewValue, modelValue) {\n var value = modelValue || viewValue;\n return (/(\\d{1,3}\\.){3}\\d{1,3}/.test(value)\n );\n },\n message: '$viewValue + \\' is not a valid IP Address\\''\n }\n },\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n var defaultReturnMsg = 'this IP Adress field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n if (scope.to.required) return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9JcEFkcmVzcy9jb25maWcvSXBBZHJlc3MuY29uZmlnLmpzPzY2NjMiXSwibmFtZXMiOlsiSXBBZHJlc3NDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiaXBBZGRyZXNzU2hhcGUiLCJleHByZXNzaW9uIiwidmlld1ZhbHVlIiwibW9kZWxWYWx1ZSIsInZhbHVlIiwidGVzdCIsIm1lc3NhZ2UiLCJmb3JtbHlWYWxpZGF0aW9uIiwibWVzc2FnZXMiLCJyZXF1aXJlZCIsInNjb3BlIiwiZGVmYXVsdFJldHVybk1zZyIsInJldHVybk1zZyIsInRvIiwibGFiZWwiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQU8sSUFBTUEsMENBQWlCO0FBQzVCQyxNQUFJLFVBRHdCO0FBRTVCQyxRQUFNLFVBRnNCO0FBRzVCQyxZQUFVLFVBSGtCO0FBSTVCQyxTQUFPLE9BSnFCO0FBSzVCQyxjQUFZLE9BTGdCO0FBTTVCQyxpQkFBZSxVQU5hO0FBTzVCQyxlQUFhLEVBUGU7QUFRNUJDLGtCQUFnQixLQVJZO0FBUzVCQyxxQkFBbUIsRUFUUztBQVU1QkMsaUJBQWUsRUFWYTtBQVc1QkMsOEJBQTRCLEVBWEE7QUFZNUJDLG9CQUFrQjtBQUNoQkMsb0JBQWdCO0FBQ2RDLGtCQUFZLG9CQUFTQyxTQUFULEVBQW9CQyxVQUFwQixFQUFnQztBQUMxQyxZQUFNQyxRQUFRRCxjQUFjRCxTQUE1QjtBQUNBLGVBQU8seUJBQXdCRyxJQUF4QixDQUE2QkQsS0FBN0I7QUFBUDtBQUNELE9BSmE7QUFLZEUsZUFBUztBQUxLO0FBREEsR0FaVTtBQXFCNUJDLG9CQUFrQjtBQUNoQkMsY0FBVTtBQUNSQyxnQkFBVSxrQkFBU1AsU0FBVCxFQUFvQkMsVUFBcEIsRUFBZ0NPLEtBQWhDLEVBQXVDO0FBQy9DLFlBQU1DLG1CQUFtQixrQ0FBekI7QUFDQSxZQUFNQyxZQUFhLE9BQU9GLE1BQU1HLEVBQU4sQ0FBU0MsS0FBaEIsS0FBMEIsV0FBM0IsR0FBNENKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxLQUFtQixFQUFwQixHQUEwQkosTUFBTUcsRUFBTixDQUFTQyxLQUFULEdBQWlCLGNBQTNDLEdBQTRESCxnQkFBdkcsR0FBMkhBLGdCQUE3STtBQUNBLFlBQUlELE1BQU1HLEVBQU4sQ0FBU0osUUFBYixFQUF1QixPQUFPRyxTQUFQO0FBQ3hCO0FBTE87QUFETTtBQXJCVSxDQUF2QiIsImZpbGUiOiIxOS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBJcEFkcmVzc0NvbmZpZyA9IHtcbiAgaWQ6ICdJcEFkcmVzcycsXG4gIG5hbWU6ICdJcEFkcmVzcycsXG4gIHN1YnRpdGxlOiAnSXBBZHJlc3MnLFxuICBncm91cDogJ2lucHV0JyxcbiAgZm9ybWx5VHlwZTogJ2lucHV0JyxcbiAgZm9ybWx5U3VidHlwZTogJ2lwYWRyZXNzJyxcbiAgZm9ybWx5TGFiZWw6ICcnLFxuICBmb3JtbHlSZXF1aXJlZDogZmFsc2UsXG4gIGZvcm1seURlc2NyaXB0aW9uOiAnJyxcbiAgZm9ybWx5T3B0aW9uczogW10sXG4gIGZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdG9yczoge1xuICAgIGlwQWRkcmVzc1NoYXBlOiB7XG4gICAgICBleHByZXNzaW9uOiBmdW5jdGlvbih2aWV3VmFsdWUsIG1vZGVsVmFsdWUpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBtb2RlbFZhbHVlIHx8IHZpZXdWYWx1ZTtcbiAgICAgICAgcmV0dXJuIC8oXFxkezEsM31cXC4pezN9XFxkezEsM30vLnRlc3QodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIG1lc3NhZ2U6ICckdmlld1ZhbHVlICsgXFwnIGlzIG5vdCBhIHZhbGlkIElQIEFkZHJlc3NcXCcnXG4gICAgfVxuICB9LFxuICBmb3JtbHlWYWxpZGF0aW9uOiB7XG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHJlcXVpcmVkOiBmdW5jdGlvbih2aWV3VmFsdWUsIG1vZGVsVmFsdWUsIHNjb3BlKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRSZXR1cm5Nc2cgPSAndGhpcyBJUCBBZHJlc3MgZmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgICBjb25zdCByZXR1cm5Nc2cgPSAodHlwZW9mIHNjb3BlLnRvLmxhYmVsICE9PSAndW5kZWZpbmVkJykgPyAoKHNjb3BlLnRvLmxhYmVsICE9PSAnJykgPyBzY29wZS50by5sYWJlbCArICcgaXMgcmVxdWlyZWQnIDogZGVmYXVsdFJldHVybk1zZykgOiBkZWZhdWx0UmV0dXJuTXNnO1xuICAgICAgICBpZiAoc2NvcGUudG8ucmVxdWlyZWQpIHJldHVybiByZXR1cm5Nc2c7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvSXBBZHJlc3MvY29uZmlnL0lwQWRyZXNzLmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 20 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_IP_ADRESS_COMPONENT = exports.EDIT_IP_ADRESS_COMPONENT = 'editIpAdressControl';\n\nvar editIpAdressControlComponent = exports.editIpAdressControlComponent = {\n template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n nyaSelect: '='\n },\n controller: (_temp = _class = function editIpAdressControlController() {\n _classCallCheck(this, editIpAdressControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editIpAdressModuleName = 'stepway.editIpAdress.module';\n\nexports.default = angular.module(editIpAdressModuleName, []).component(EDIT_IP_ADRESS_COMPONENT, editIpAdressControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9JcEFkcmVzcy9lZGl0SXBBZHJlc3MvZWRpdElwQWRyZXNzLmNvbXBvbmVudC5qcz84MWQyIl0sIm5hbWVzIjpbIkVESVRfSVBfQURSRVNTX0NPTVBPTkVOVCIsImVkaXRJcEFkcmVzc0NvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0IiwiY29udHJvbGxlciIsIiRpbmplY3QiLCJlZGl0SXBBZHJlc3NNb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLDhEQUEyQixxQkFBakM7O0FBRUEsSUFBTUMsc0VBQStCO0FBQzFDQywwbUlBRDBDO0FBaUkxQ0MsWUFBVTtBQUNSQyxlQUFXO0FBREgsR0FqSWdDO0FBb0kxQ0MsZ0NBR0UseUNBQWM7QUFBQTtBQUViLEdBTEgsU0FFU0MsT0FGVCxHQUVtQixFQUZuQjtBQXBJMEMsQ0FBckM7O0FBNklQLElBQU1DLHlCQUF5Qiw2QkFBL0I7O2tCQUVlQyxRQUNFQyxNQURGLENBQ1NGLHNCQURULEVBQ2lDLEVBRGpDLEVBRUVHLFNBRkYsQ0FFWVYsd0JBRlosRUFFc0NDLDRCQUZ0QyxDIiwiZmlsZSI6IjIwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVESVRfSVBfQURSRVNTX0NPTVBPTkVOVCA9ICdlZGl0SXBBZHJlc3NDb250cm9sJztcblxuZXhwb3J0IGNvbnN0IGVkaXRJcEFkcmVzc0NvbnRyb2xDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPGg1IGNsYXNzPVwiZ3JleVRleHRcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCI+PC9pPlxuICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICB7eydQUkVWSUVXX1RBQicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9oNT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoci8+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGZvcj1cImlucHV0SXBBZHJlc3NcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWwgdGV4dENvbnRyb2xMYWJlbFwiPlxuICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsfX1cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBuZy1pZj1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHRDb250cm9sTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJpbnB1dElwQWRyZXNzXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UGxhY2Vob2xkZXJ9fVwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlbHAtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9ufX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8aDUgY2xhc3M9XCJncmV5VGV4dFwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cIj48L2k+XG4gICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9oNT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoci8+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJpbnB1dFRleHRMYWJlbFVwZGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAge3snTEFCRUxfVEVYVCcgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlMYWJlbFwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FERF9FRElUX0xBQkVMX0hFUkUnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJpbnB1dFRleHRwbGFjZWhvbGRlclVwZGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAge3snUExBQ0VIT0xERVInIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICBpZD1cImlucHV0VGV4dHBsYWNlaG9sZGVyVXBkYXRlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBRERfRURJVF9QTEFDRUhPTEQnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAge3snUkVRVUlSRUQnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hDc3NDb3JyZWN0aW9uXCI+XG4gICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlSZXF1aXJlZFwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0UmVxdWlyZWRVcGRhdGVcIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJpbnB1dFRleHREZXNjcmlwdGlvblVwZGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAge3snREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICBpZD1cImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBRERFRElUX0RFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBgLFxuICBiaW5kaW5nczoge1xuICAgIG55YVNlbGVjdDogJz0nXG4gIH0sXG4gIGNvbnRyb2xsZXI6XG4gIGNsYXNzIGVkaXRJcEFkcmVzc0NvbnRyb2xDb250cm9sbGVyIHtcbiAgICBzdGF0aWMgJGluamVjdCA9IFtdO1xuICAgIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBlZGl0SXBBZHJlc3NNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdElwQWRyZXNzLm1vZHVsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAubW9kdWxlKGVkaXRJcEFkcmVzc01vZHVsZU5hbWUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoRURJVF9JUF9BRFJFU1NfQ09NUE9ORU5ULCBlZGl0SXBBZHJlc3NDb250cm9sQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL0lwQWRyZXNzL2VkaXRJcEFkcmVzcy9lZGl0SXBBZHJlc3MuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 21 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar DateConfig = exports.DateConfig = {\n id: 'Date',\n name: 'Date',\n subtitle: 'Date',\n group: 'input',\n formlyType: 'datepicker',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n datepickerOptions: { format: 'dd-MMMM-yyyy' },\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> ' is required '\n //-> or if not exists or empty just 'this field is required'\n var defaultReturnMsg = 'this Date field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9EYXRlL2NvbmZpZy9kYXRlLmNvbmZpZy5qcz8zODg3Il0sIm5hbWVzIjpbIkRhdGVDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZGF0ZXBpY2tlck9wdGlvbnMiLCJmb3JtYXQiLCJmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyIsImZvcm1seVZhbGlkYXRvcnMiLCJmb3JtbHlWYWxpZGF0aW9uIiwibWVzc2FnZXMiLCJyZXF1aXJlZCIsInZpZXdWYWx1ZSIsIm1vZGVsVmFsdWUiLCJzY29wZSIsImRlZmF1bHRSZXR1cm5Nc2ciLCJyZXR1cm5Nc2ciLCJ0byIsImxhYmVsIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFPLElBQU1BLGtDQUFtQjtBQUM5QkMsTUFBSSxNQUQwQjtBQUU5QkMsUUFBTSxNQUZ3QjtBQUc5QkMsWUFBVSxNQUhvQjtBQUk5QkMsU0FBTyxPQUp1QjtBQUs5QkMsY0FBWSxZQUxrQjtBQU05QkMsaUJBQWUsRUFOZTtBQU85QkMsZUFBYSxFQVBpQjtBQVE5QkMsa0JBQWdCLEtBUmM7QUFTOUJDLHFCQUFtQixFQVRXO0FBVTlCQyxpQkFBZSxFQVZlO0FBVzlCQyxxQkFBbUIsRUFBRUMsUUFBUSxjQUFWLEVBWFc7QUFZOUJDLDhCQUE0QixFQVpFO0FBYTlCQyxvQkFBa0IsRUFiWTtBQWM5QkMsb0JBQWtCO0FBQ2hCQyxjQUFVO0FBQ1JDLGdCQUFVLGtCQUFTQyxTQUFULEVBQW9CQyxVQUFwQixFQUFnQ0MsS0FBaEMsRUFBdUM7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsWUFBTUMsbUJBQW1CLDZCQUF6QjtBQUNBLFlBQU1DLFlBQWEsT0FBT0YsTUFBTUcsRUFBTixDQUFTQyxLQUFoQixLQUEwQixXQUEzQixHQUE0Q0osTUFBTUcsRUFBTixDQUFTQyxLQUFULEtBQW1CLEVBQXBCLEdBQTBCSixNQUFNRyxFQUFOLENBQVNDLEtBQVQsR0FBaUIsY0FBM0MsR0FBNERILGdCQUF2RyxHQUEySEEsZ0JBQTdJO0FBQ0EsZUFBT0MsU0FBUDtBQUNEO0FBUk87QUFETTtBQWRZLENBQXpCIiwiZmlsZSI6IjIxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IERhdGVDb25maWcgPSAgICAgICB7XG4gIGlkOiAnRGF0ZScsXG4gIG5hbWU6ICdEYXRlJyxcbiAgc3VidGl0bGU6ICdEYXRlJyxcbiAgZ3JvdXA6ICdpbnB1dCcsXG4gIGZvcm1seVR5cGU6ICdkYXRlcGlja2VyJyxcbiAgZm9ybWx5U3VidHlwZTogJycsXG4gIGZvcm1seUxhYmVsOiAnJyxcbiAgZm9ybWx5UmVxdWlyZWQ6IGZhbHNlLFxuICBmb3JtbHlEZXNjcmlwdGlvbjogJycsXG4gIGZvcm1seU9wdGlvbnM6IFtdLFxuICBkYXRlcGlja2VyT3B0aW9uczogeyBmb3JtYXQ6ICdkZC1NTU1NLXl5eXknIH0sXG4gIGZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdG9yczoge30sXG4gIGZvcm1seVZhbGlkYXRpb246IHtcbiAgICBtZXNzYWdlczoge1xuICAgICAgcmVxdWlyZWQ6IGZ1bmN0aW9uKHZpZXdWYWx1ZSwgbW9kZWxWYWx1ZSwgc2NvcGUpIHtcbiAgICAgICAgLy9yZXR1cm4gYSByZXF1aXJlZCB2YWxpZGF0aW9uIG1lc3NhZ2UgOlxuICAgICAgICAvLy0+ICc8bGFiZWwgYXMgbmFtZT4gaXMgcmVxdWlyZWQgJ1xuICAgICAgICAvLy0+IG9yIGlmIG5vdCBleGlzdHMgb3IgZW1wdHkganVzdCAndGhpcyBmaWVsZCBpcyByZXF1aXJlZCdcbiAgICAgICAgY29uc3QgZGVmYXVsdFJldHVybk1zZyA9ICd0aGlzIERhdGUgZmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgICBjb25zdCByZXR1cm5Nc2cgPSAodHlwZW9mIHNjb3BlLnRvLmxhYmVsICE9PSAndW5kZWZpbmVkJykgPyAoKHNjb3BlLnRvLmxhYmVsICE9PSAnJykgPyBzY29wZS50by5sYWJlbCArICcgaXMgcmVxdWlyZWQnIDogZGVmYXVsdFJldHVybk1zZykgOiBkZWZhdWx0UmV0dXJuTXNnO1xuICAgICAgICByZXR1cm4gcmV0dXJuTXNnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL0RhdGUvY29uZmlnL2RhdGUuY29uZmlnLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 22 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_DATE_COMPONENT = exports.EDIT_DATE_COMPONENT = 'editDateControl';\n\nvar editDateControlComponent = exports.editDateControlComponent = {\n template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n nyaSelect: '=',\n demodt: '=',\n dateOptions: '=',\n open: '&'\n },\n controller: (_temp = _class = function editDateControlController() {\n _classCallCheck(this, editDateControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editDateControlModuleName = 'stepway.editDateControl.module';\n\nexports.default = angular.module(editDateControlModuleName, []).component(EDIT_DATE_COMPONENT, editDateControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9EYXRlL2VkaXREYXRlL2VkaXREYXRlLmNvbXBvbmVudC5qcz8zOTY4Il0sIm5hbWVzIjpbIkVESVRfREFURV9DT01QT05FTlQiLCJlZGl0RGF0ZUNvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0IiwiZGVtb2R0IiwiZGF0ZU9wdGlvbnMiLCJvcGVuIiwiY29udHJvbGxlciIsIiRpbmplY3QiLCJlZGl0RGF0ZUNvbnRyb2xNb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLG9EQUFzQixpQkFBNUI7O0FBRUEsSUFBTUMsOERBQTJCO0FBQ3RDQyw4NUpBRHNDO0FBaUp0Q0MsWUFBVTtBQUNSQyxlQUFXLEdBREg7QUFFUkMsWUFBUSxHQUZBO0FBR1JDLGlCQUFhLEdBSEw7QUFJUkMsVUFBTTtBQUpFLEdBako0QjtBQXVKdENDLGdDQUlFLHFDQUFjO0FBQUE7QUFFYixHQU5ILFNBRVNDLE9BRlQsR0FFbUIsRUFGbkI7QUF2SnNDLENBQWpDOztBQWlLUCxJQUFNQyw0QkFBNEIsZ0NBQWxDOztrQkFFZUMsUUFDRUMsTUFERixDQUNTRix5QkFEVCxFQUNvQyxFQURwQyxFQUVFRyxTQUZGLENBRVliLG1CQUZaLEVBRWlDQyx3QkFGakMsQyIsImZpbGUiOiIyMi5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBFRElUX0RBVEVfQ09NUE9ORU5UID0gJ2VkaXREYXRlQ29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0RGF0ZUNvbnRyb2xDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJncmV5VGV4dFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZVwiPjwvaT5cbiAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgIHt7J1BSRVZJRVdfVEFCJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICAgIDwvaDU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgZm9yPVwiaW5wdXREYXRlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWwgdGV4dENvbnRyb2xMYWJlbFwiPlxuICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWx9fVxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBuZy1pZj1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dENvbnRyb2xMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJnbHlwaGljb24gZ2x5cGhpY29uLWNhbGVuZGFyXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICB1aWItZGF0ZXBpY2tlci1wb3B1cD1cInt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZGF0ZXBpY2tlck9wdGlvbnMuZm9ybWF0fX1cIlxuICAgICAgICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLmRlbW9kdC5kdFwiXG4gICAgICAgICAgICAgICAgICAgIGlzLW9wZW49XCIkY3RybC5kZW1vZHQub3BlbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0ZXBpY2tlci1vcHRpb25zPVwiJGN0cmwuZGF0ZU9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBjbG9zZS10ZXh0PVwiQ2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLm9wZW4oe2V2ZW50IDogJGV2ZW50fSlcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlbHAtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb259fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwiZ3JleVRleHRcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cIj48L2k+XG4gICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICB7eydFRElUX1BST1BFUlRJRVMnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxoci8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAge3snREFURV9GT1JNQVQnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICA8b2xcbiAgICAgICAgICAgICAgY2xhc3M9XCJueWEtYnMtc2VsZWN0IGNvbC1zbS0xMiBjb2wteHMtMTIgY29sLW1kLTEyIGNvbC1sZzEyXCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5kYXRlcGlja2VyT3B0aW9ucy5mb3JtYXRcIlxuICAgICAgICAgICAgICBpZD1cImRhdGVmb3JtYXRTZWxlY3RcIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJueWEtYnMtb3B0aW9uXCJcbiAgICAgICAgICAgICAgICBueWEtYnMtb3B0aW9uPVwiZGF0ZWZvcm1hdCBpbiAkY3RybC5kZW1vZHQuZm9ybWF0c1wiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJkYXRlZm9ybWF0XCI+XG4gICAgICAgICAgICAgICAgPGE+XG4gICAgICAgICAgICAgICAgICB7e2RhdGVmb3JtYXR9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvb2w+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWFyZ2luVG9wRml2ZXBpeGVsc1wiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICAgIHt7J0xBQkVMX1RFWFQnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWxcIlxuICAgICAgICAgICAgICBpZD1cImlucHV0VGV4dExhYmVsVXBkYXRlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBRERfRURJVF9MQUJFTF9IRVJFJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWFyZ2luVG9wRml2ZXBpeGVsc1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBmb3I9XCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICAgIHt7J1JFUVVJUkVEJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94Q3NzQ29ycmVjdGlvblwiPlxuICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBpZD1cImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICAgICAge3snREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snQURERURJVF9ERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzOiB7XG4gICAgbnlhU2VsZWN0OiAnPScsXG4gICAgZGVtb2R0OiAnPScsXG4gICAgZGF0ZU9wdGlvbnM6ICc9JyxcbiAgICBvcGVuOiAnJidcbiAgfSxcbiAgY29udHJvbGxlcjpcbiAgY2xhc3MgZWRpdERhdGVDb250cm9sQ29udHJvbGxlciB7XG4gICAgc3RhdGljICRpbmplY3QgPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBlZGl0RGF0ZUNvbnRyb2xNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdERhdGVDb250cm9sLm1vZHVsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAubW9kdWxlKGVkaXREYXRlQ29udHJvbE1vZHVsZU5hbWUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoRURJVF9EQVRFX0NPTVBPTkVOVCwgZWRpdERhdGVDb250cm9sQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL0RhdGUvZWRpdERhdGUvZWRpdERhdGUuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 23 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar CheckBoxConfig = exports.CheckBoxConfig = {\n id: 'Checkbox',\n name: 'Checkbox',\n subtitle: 'Checkbox',\n group: 'Checkbox',\n formlyType: 'checkbox',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n var defaultReturnMsg = 'this Checkbox field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9DaGVja0JveC9jb25maWcvY2hlY2tib3guY29uZmlnLmpzPzY2N2YiXSwibmFtZXMiOlsiQ2hlY2tCb3hDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiZm9ybWx5VmFsaWRhdGlvbiIsIm1lc3NhZ2VzIiwicmVxdWlyZWQiLCJ2aWV3VmFsdWUiLCJtb2RlbFZhbHVlIiwic2NvcGUiLCJkZWZhdWx0UmV0dXJuTXNnIiwicmV0dXJuTXNnIiwidG8iLCJsYWJlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFNQSwwQ0FBaUI7QUFDNUJDLE1BQUksVUFEd0I7QUFFNUJDLFFBQU0sVUFGc0I7QUFHNUJDLFlBQVUsVUFIa0I7QUFJNUJDLFNBQU8sVUFKcUI7QUFLNUJDLGNBQVksVUFMZ0I7QUFNNUJDLGlCQUFlLEVBTmE7QUFPNUJDLGVBQWEsRUFQZTtBQVE1QkMsa0JBQWdCLEtBUlk7QUFTNUJDLHFCQUFtQixFQVRTO0FBVTVCQyxpQkFBZSxFQVZhO0FBVzVCQyw4QkFBNEIsRUFYQTtBQVk1QkMsb0JBQWtCLEVBWlU7QUFhNUJDLG9CQUFrQjtBQUNoQkMsY0FBVTtBQUNSQyxnQkFBVSxrQkFBU0MsU0FBVCxFQUFvQkMsVUFBcEIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQy9DLFlBQU1DLG1CQUFtQixpQ0FBekI7QUFDQSxZQUFNQyxZQUFhLE9BQU9GLE1BQU1HLEVBQU4sQ0FBU0MsS0FBaEIsS0FBMEIsV0FBM0IsR0FBNENKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxLQUFtQixFQUFwQixHQUEwQkosTUFBTUcsRUFBTixDQUFTQyxLQUFULEdBQWlCLGNBQTNDLEdBQTRESCxnQkFBdkcsR0FBMkhBLGdCQUE3STtBQUNBLGVBQU9DLFNBQVA7QUFDRDtBQUxPO0FBRE07QUFiVSxDQUF2QiIsImZpbGUiOiIyMy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDaGVja0JveENvbmZpZyA9IHtcbiAgaWQ6ICdDaGVja2JveCcsXG4gIG5hbWU6ICdDaGVja2JveCcsXG4gIHN1YnRpdGxlOiAnQ2hlY2tib3gnLFxuICBncm91cDogJ0NoZWNrYm94JyxcbiAgZm9ybWx5VHlwZTogJ2NoZWNrYm94JyxcbiAgZm9ybWx5U3VidHlwZTogJycsXG4gIGZvcm1seUxhYmVsOiAnJyxcbiAgZm9ybWx5UmVxdWlyZWQ6IGZhbHNlLFxuICBmb3JtbHlEZXNjcmlwdGlvbjogJycsXG4gIGZvcm1seU9wdGlvbnM6IFtdLFxuICBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllczoge30sXG4gIGZvcm1seVZhbGlkYXRvcnM6IHt9LFxuICBmb3JtbHlWYWxpZGF0aW9uOiB7XG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHJlcXVpcmVkOiBmdW5jdGlvbih2aWV3VmFsdWUsIG1vZGVsVmFsdWUsIHNjb3BlKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRSZXR1cm5Nc2cgPSAndGhpcyBDaGVja2JveCBmaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICAgIGNvbnN0IHJldHVybk1zZyA9ICh0eXBlb2Ygc2NvcGUudG8ubGFiZWwgIT09ICd1bmRlZmluZWQnKSA/ICgoc2NvcGUudG8ubGFiZWwgIT09ICcnKSA/IHNjb3BlLnRvLmxhYmVsICsgJyBpcyByZXF1aXJlZCcgOiBkZWZhdWx0UmV0dXJuTXNnKSA6IGRlZmF1bHRSZXR1cm5Nc2c7XG4gICAgICAgIHJldHVybiByZXR1cm5Nc2c7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvQ2hlY2tCb3gvY29uZmlnL2NoZWNrYm94LmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 24 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_CHECKBOX_COMPONENT = exports.EDIT_CHECKBOX_COMPONENT = 'editCheckBoxControl';\n\nvar editCheckBoxControlComponent = exports.editCheckBoxControlComponent = {\n template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n nyaSelect: '='\n },\n controller: (_temp = _class = function editCheckBoxControlController() {\n _classCallCheck(this, editCheckBoxControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editCheckBoxModuleName = 'stepway.editCheckBox.module';\n\nexports.default = angular.module(editCheckBoxModuleName, []).component(EDIT_CHECKBOX_COMPONENT, editCheckBoxControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9DaGVja0JveC9lZGl0Q2hlY2tCb3gvZWRpdENoZWNrQm94LmNvbXBvbmVudC5qcz9lZDcwIl0sIm5hbWVzIjpbIkVESVRfQ0hFQ0tCT1hfQ09NUE9ORU5UIiwiZWRpdENoZWNrQm94Q29udHJvbENvbXBvbmVudCIsInRlbXBsYXRlIiwiYmluZGluZ3MiLCJueWFTZWxlY3QiLCJjb250cm9sbGVyIiwiJGluamVjdCIsImVkaXRDaGVja0JveE1vZHVsZU5hbWUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sSUFBTUEsNERBQTBCLHFCQUFoQzs7QUFFQSxJQUFNQyxzRUFBK0I7QUFDMUNDLDQ1SkFEMEM7QUFnSjFDQyxZQUFVO0FBQ1JDLGVBQVc7QUFESCxHQWhKZ0M7QUFtSjFDQyxnQ0FJRSx5Q0FBYztBQUFBO0FBRWIsR0FOSCxTQUVTQyxPQUZULEdBRW1CLEVBRm5CO0FBbkowQyxDQUFyQzs7QUE2SlAsSUFBTUMseUJBQXlCLDZCQUEvQjs7a0JBRWVDLFFBQ0VDLE1BREYsQ0FDU0Ysc0JBRFQsRUFDaUMsRUFEakMsRUFFRUcsU0FGRixDQUVZVix1QkFGWixFQUVxQ0MsNEJBRnJDLEMiLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRURJVF9DSEVDS0JPWF9DT01QT05FTlQgPSAnZWRpdENoZWNrQm94Q29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0Q2hlY2tCb3hDb250cm9sQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwiZ3JleVRleHRcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leWVcIj48L2k+XG4gICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICB7eydQUkVWSUVXX1RBQicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGZvcj1cImlucHV0RGF0ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sLWxhYmVsIHRleHRDb250cm9sTGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsfX1cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgbmctaWY9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlSZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHRDb250cm9sTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIiA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1jYWxlbmRhclwiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgdWliLWRhdGVwaWNrZXItcG9wdXA9XCJ7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmRhdGVwaWNrZXJPcHRpb25zLmZvcm1hdH19XCJcbiAgICAgICAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5kZW1vZHQuZHRcIlxuICAgICAgICAgICAgICAgICAgICBpcy1vcGVuPVwiJGN0cmwuZGVtb2R0Lm9wZW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGVwaWNrZXItb3B0aW9ucz1cIiRjdHJsLmRhdGVPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2UtdGV4dD1cIkNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5vcGVuKHtldmVudCA6ICRldmVudH0pXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWxwLWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9ufX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJncmV5VGV4dFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbC1zcXVhcmUtb1wiPjwvaT5cbiAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydEQVRFX0ZPUk1BVCcgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxvbFxuICAgICAgICAgICAgICBjbGFzcz1cIm55YS1icy1zZWxlY3QgY29sLXNtLTEyIGNvbC14cy0xMiBjb2wtbWQtMTIgY29sLWxnMTJcIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmRhdGVwaWNrZXJPcHRpb25zLmZvcm1hdFwiXG4gICAgICAgICAgICAgIGlkPVwiZGF0ZWZvcm1hdFNlbGVjdFwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm55YS1icy1vcHRpb25cIlxuICAgICAgICAgICAgICAgIG55YS1icy1vcHRpb249XCJkYXRlZm9ybWF0IGluICRjdHJsLmRlbW9kdC5mb3JtYXRzXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cImRhdGVmb3JtYXRcIj5cbiAgICAgICAgICAgICAgICA8YT5cbiAgICAgICAgICAgICAgICAgIHt7ZGF0ZWZvcm1hdH19XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9vbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJpbnB1dFRleHRMYWJlbFVwZGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAge3snTEFCRUxfVEVYVCcgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlMYWJlbFwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FERF9FRElUX0xBQkVMX0hFUkUnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICAgICAge3snUkVRVUlSRUQnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hDc3NDb3JyZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0UmVxdWlyZWRVcGRhdGVcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgZm9yPVwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAgICB7eydERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgaWQ9XCJpbnB1dFRleHREZXNjcmlwdGlvblVwZGF0ZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBRERFRElUX0RFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgYmluZGluZ3M6IHtcbiAgICBueWFTZWxlY3Q6ICc9J1xuICB9LFxuICBjb250cm9sbGVyOlxuICBjbGFzcyBlZGl0Q2hlY2tCb3hDb250cm9sQ29udHJvbGxlciB7XG4gICAgc3RhdGljICRpbmplY3QgPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBlZGl0Q2hlY2tCb3hNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdENoZWNrQm94Lm1vZHVsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAubW9kdWxlKGVkaXRDaGVja0JveE1vZHVsZU5hbWUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoRURJVF9DSEVDS0JPWF9DT01QT05FTlQsIGVkaXRDaGVja0JveENvbnRyb2xDb21wb25lbnQpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvQ2hlY2tCb3gvZWRpdENoZWNrQm94L2VkaXRDaGVja0JveC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 25 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar EmailConfig = exports.EmailConfig = {\n id: 'Email',\n name: 'Email',\n subtitle: 'Email',\n group: 'input',\n formlyType: 'input',\n formlySubtype: 'email',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {\n emailShape: {\n expression: function expression(viewValue, modelValue) {\n var value = modelValue || viewValue;\n return (/^[a-z]+[a-z0-9._]+@[a-z]+\\.[a-z.]{2,5}$/.test(value)\n );\n },\n message: '$viewValue + \\' is not a valid email\\''\n }\n },\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n var defaultReturnMsg = 'this Email field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n if (scope.to.required) return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9FbWFpbC9jb25maWcvZW1haWwuY29uZmlnLmpzP2Q5MTIiXSwibmFtZXMiOlsiRW1haWxDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiZW1haWxTaGFwZSIsImV4cHJlc3Npb24iLCJ2aWV3VmFsdWUiLCJtb2RlbFZhbHVlIiwidmFsdWUiLCJ0ZXN0IiwibWVzc2FnZSIsImZvcm1seVZhbGlkYXRpb24iLCJtZXNzYWdlcyIsInJlcXVpcmVkIiwic2NvcGUiLCJkZWZhdWx0UmV0dXJuTXNnIiwicmV0dXJuTXNnIiwidG8iLCJsYWJlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFNQSxvQ0FBZTtBQUMxQkMsTUFBSSxPQURzQjtBQUUxQkMsUUFBTSxPQUZvQjtBQUcxQkMsWUFBVSxPQUhnQjtBQUkxQkMsU0FBTyxPQUptQjtBQUsxQkMsY0FBWSxPQUxjO0FBTTFCQyxpQkFBZSxPQU5XO0FBTzFCQyxlQUFhLEVBUGE7QUFRMUJDLGtCQUFnQixLQVJVO0FBUzFCQyxxQkFBbUIsRUFUTztBQVUxQkMsaUJBQWUsRUFWVztBQVcxQkMsOEJBQTRCLEVBWEY7QUFZMUJDLG9CQUFrQjtBQUNoQkMsZ0JBQVk7QUFDVkMsa0JBQVksb0JBQVNDLFNBQVQsRUFBb0JDLFVBQXBCLEVBQWdDO0FBQzFDLFlBQU1DLFFBQVFELGNBQWNELFNBQTVCO0FBQ0EsZUFBTywyQ0FBMENHLElBQTFDLENBQStDRCxLQUEvQztBQUFQO0FBQ0QsT0FKUztBQUtWRSxlQUFTO0FBTEM7QUFESSxHQVpRO0FBcUIxQkMsb0JBQWtCO0FBQ2hCQyxjQUFVO0FBQ1JDLGdCQUFVLGtCQUFTUCxTQUFULEVBQW9CQyxVQUFwQixFQUFnQ08sS0FBaEMsRUFBdUM7QUFDL0MsWUFBTUMsbUJBQW1CLDhCQUF6QjtBQUNBLFlBQU1DLFlBQWEsT0FBT0YsTUFBTUcsRUFBTixDQUFTQyxLQUFoQixLQUEwQixXQUEzQixHQUE0Q0osTUFBTUcsRUFBTixDQUFTQyxLQUFULEtBQW1CLEVBQXBCLEdBQTBCSixNQUFNRyxFQUFOLENBQVNDLEtBQVQsR0FBaUIsY0FBM0MsR0FBNERILGdCQUF2RyxHQUEySEEsZ0JBQTdJO0FBQ0EsWUFBSUQsTUFBTUcsRUFBTixDQUFTSixRQUFiLEVBQXVCLE9BQU9HLFNBQVA7QUFDeEI7QUFMTztBQURNO0FBckJRLENBQXJCIiwiZmlsZSI6IjI1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVtYWlsQ29uZmlnID0gIHtcbiAgaWQ6ICdFbWFpbCcsXG4gIG5hbWU6ICdFbWFpbCcsXG4gIHN1YnRpdGxlOiAnRW1haWwnLFxuICBncm91cDogJ2lucHV0JyxcbiAgZm9ybWx5VHlwZTogJ2lucHV0JyxcbiAgZm9ybWx5U3VidHlwZTogJ2VtYWlsJyxcbiAgZm9ybWx5TGFiZWw6ICcnLFxuICBmb3JtbHlSZXF1aXJlZDogZmFsc2UsXG4gIGZvcm1seURlc2NyaXB0aW9uOiAnJyxcbiAgZm9ybWx5T3B0aW9uczogW10sXG4gIGZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdG9yczoge1xuICAgIGVtYWlsU2hhcGU6IHtcbiAgICAgIGV4cHJlc3Npb246IGZ1bmN0aW9uKHZpZXdWYWx1ZSwgbW9kZWxWYWx1ZSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG1vZGVsVmFsdWUgfHwgdmlld1ZhbHVlO1xuICAgICAgICByZXR1cm4gL15bYS16XStbYS16MC05Ll9dK0BbYS16XStcXC5bYS16Ll17Miw1fSQvLnRlc3QodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIG1lc3NhZ2U6ICckdmlld1ZhbHVlICsgXFwnIGlzIG5vdCBhIHZhbGlkIGVtYWlsXFwnJ1xuICAgIH1cbiAgfSxcbiAgZm9ybWx5VmFsaWRhdGlvbjoge1xuICAgIG1lc3NhZ2VzOiB7XG4gICAgICByZXF1aXJlZDogZnVuY3Rpb24odmlld1ZhbHVlLCBtb2RlbFZhbHVlLCBzY29wZSkge1xuICAgICAgICBjb25zdCBkZWZhdWx0UmV0dXJuTXNnID0gJ3RoaXMgRW1haWwgZmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgICBjb25zdCByZXR1cm5Nc2cgPSAodHlwZW9mIHNjb3BlLnRvLmxhYmVsICE9PSAndW5kZWZpbmVkJykgPyAoKHNjb3BlLnRvLmxhYmVsICE9PSAnJykgPyBzY29wZS50by5sYWJlbCArICcgaXMgcmVxdWlyZWQnIDogZGVmYXVsdFJldHVybk1zZykgOiBkZWZhdWx0UmV0dXJuTXNnO1xuICAgICAgICBpZiAoc2NvcGUudG8ucmVxdWlyZWQpIHJldHVybiByZXR1cm5Nc2c7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvRW1haWwvY29uZmlnL2VtYWlsLmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 26 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_EMAIL_COMPONENT = exports.EDIT_EMAIL_COMPONENT = 'editEmailControl';\n\nvar editEmailControlComponent = exports.editEmailControlComponent = {\n template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n nyaSelect: '='\n },\n controller: (_temp = _class = function editEmailControlController() {\n _classCallCheck(this, editEmailControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editEmailControlModuleName = 'stepway.editEmailControl.module';\n\nexports.default = angular.module(editEmailControlModuleName, []).component(EDIT_EMAIL_COMPONENT, editEmailControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9FbWFpbC9lZGl0RW1haWwvZWRpdEVtYWlsLmNvbXBvbmVudC5qcz9kNmMyIl0sIm5hbWVzIjpbIkVESVRfRU1BSUxfQ09NUE9ORU5UIiwiZWRpdEVtYWlsQ29udHJvbENvbXBvbmVudCIsInRlbXBsYXRlIiwiYmluZGluZ3MiLCJueWFTZWxlY3QiLCJjb250cm9sbGVyIiwiJGluamVjdCIsImVkaXRFbWFpbENvbnRyb2xNb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLHNEQUF1QixrQkFBN0I7O0FBRUEsSUFBTUMsZ0VBQTRCO0FBQ3ZDQyxvbUlBRHVDO0FBaUl2Q0MsWUFBVTtBQUNSQyxlQUFXO0FBREgsR0FqSTZCO0FBb0l2Q0MsZ0NBR0Usc0NBQWM7QUFBQTtBQUViLEdBTEgsU0FFU0MsT0FGVCxHQUVtQixFQUZuQjtBQXBJdUMsQ0FBbEM7O0FBNklQLElBQU1DLDZCQUE2QixpQ0FBbkM7O2tCQUVlQyxRQUNFQyxNQURGLENBQ1NGLDBCQURULEVBQ3FDLEVBRHJDLEVBRUVHLFNBRkYsQ0FFWVYsb0JBRlosRUFFa0NDLHlCQUZsQyxDIiwiZmlsZSI6IjI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVESVRfRU1BSUxfQ09NUE9ORU5UID0gJ2VkaXRFbWFpbENvbnRyb2wnO1xuXG5leHBvcnQgY29uc3QgZWRpdEVtYWlsQ29udHJvbENvbXBvbmVudCA9IHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8aDUgY2xhc3M9XCJncmV5VGV4dFwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leWVcIj48L2k+XG4gICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgIHt7J1BSRVZJRVdfVEFCJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2g1PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGhyLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgZm9yPVwiaW5wdXRFbWFpbFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbCB0ZXh0Q29udHJvbExhYmVsXCI+XG4gICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWx9fVxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIG5nLWlmPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dENvbnRyb2xMYWJlbFwiPlxuICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICBpZD1cImlucHV0RW1haWxcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3skY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlQbGFjZWhvbGRlcn19XCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVscC1ibG9ja1wiPlxuICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb259fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxoNSBjbGFzcz1cImdyZXlUZXh0XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbC1zcXVhcmUtb1wiPjwvaT5cbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAge3snRURJVF9QUk9QRVJUSUVTJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2g1PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGhyLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dExhYmVsVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydMQUJFTF9URVhUJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsXCJcbiAgICAgICAgICAgICAgaWQ9XCJpbnB1dFRleHRMYWJlbFVwZGF0ZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snQUREX0VESVRfTEFCRUxfSEVSRScgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dHBsYWNlaG9sZGVyVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydQTEFDRUhPTERFUicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0cGxhY2Vob2xkZXJVcGRhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FERF9FRElUX1BMQUNFSE9MRCcgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydSRVFVSVJFRCcgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveENzc0NvcnJlY3Rpb25cIj5cbiAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgaWQ9XCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FEREVESVRfREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzOiB7XG4gICAgbnlhU2VsZWN0OiAnPSdcbiAgfSxcbiAgY29udHJvbGxlcjpcbiAgY2xhc3MgZWRpdEVtYWlsQ29udHJvbENvbnRyb2xsZXIge1xuICAgIHN0YXRpYyAkaW5qZWN0ID0gW107XG4gICAgY29uc3RydWN0b3IoKSB7XG5cbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IGVkaXRFbWFpbENvbnRyb2xNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdEVtYWlsQ29udHJvbC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShlZGl0RW1haWxDb250cm9sTW9kdWxlTmFtZSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChFRElUX0VNQUlMX0NPTVBPTkVOVCwgZWRpdEVtYWlsQ29udHJvbENvbXBvbmVudCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9FbWFpbC9lZGl0RW1haWwvZWRpdEVtYWlsLmNvbXBvbmVudC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 27 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar BasicSelectConfig = exports.BasicSelectConfig = {\n id: 'BasicSelect',\n name: 'Basic select',\n subtitle: 'Basic select',\n options: [],\n group: 'Select',\n formlyType: 'basicSelect',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> ' is required '\n //-> or if not exists or empty just 'this field is required'\n var defaultReturnMsg = 'this Basic select field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9iYXNpY1NlbGVjdC9jb25maWcvYmFzaWNTZWxlY3QuY29uZmlnLmpzPzQyYzQiXSwibmFtZXMiOlsiQmFzaWNTZWxlY3RDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsIm9wdGlvbnMiLCJncm91cCIsImZvcm1seVR5cGUiLCJmb3JtbHlTdWJ0eXBlIiwiZm9ybWx5TGFiZWwiLCJmb3JtbHlSZXF1aXJlZCIsImZvcm1seURlc2NyaXB0aW9uIiwiZm9ybWx5T3B0aW9ucyIsImZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzIiwiZm9ybWx5VmFsaWRhdG9ycyIsImZvcm1seVZhbGlkYXRpb24iLCJtZXNzYWdlcyIsInJlcXVpcmVkIiwidmlld1ZhbHVlIiwibW9kZWxWYWx1ZSIsInNjb3BlIiwiZGVmYXVsdFJldHVybk1zZyIsInJldHVybk1zZyIsInRvIiwibGFiZWwiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQU8sSUFBTUEsZ0RBQW9CO0FBQy9CQyxNQUFJLGFBRDJCO0FBRS9CQyxRQUFNLGNBRnlCO0FBRy9CQyxZQUFVLGNBSHFCO0FBSS9CQyxXQUFTLEVBSnNCO0FBSy9CQyxTQUFPLFFBTHdCO0FBTS9CQyxjQUFZLGFBTm1CO0FBTy9CQyxpQkFBZSxFQVBnQjtBQVEvQkMsZUFBYSxFQVJrQjtBQVMvQkMsa0JBQWdCLEtBVGU7QUFVL0JDLHFCQUFtQixFQVZZO0FBVy9CQyxpQkFBZSxFQVhnQjtBQVkvQkMsOEJBQTRCLEVBWkc7QUFhL0JDLG9CQUFrQixFQWJhO0FBYy9CQyxvQkFBa0I7QUFDaEJDLGNBQVU7QUFDUkMsZ0JBQVUsa0JBQVNDLFNBQVQsRUFBb0JDLFVBQXBCLEVBQWdDQyxLQUFoQyxFQUF1QztBQUMvQztBQUNBO0FBQ0E7QUFDQSxZQUFNQyxtQkFBbUIscUNBQXpCO0FBQ0EsWUFBTUMsWUFBYSxPQUFPRixNQUFNRyxFQUFOLENBQVNDLEtBQWhCLEtBQTBCLFdBQTNCLEdBQTRDSixNQUFNRyxFQUFOLENBQVNDLEtBQVQsS0FBbUIsRUFBcEIsR0FBMEJKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxHQUFpQixjQUEzQyxHQUE0REgsZ0JBQXZHLEdBQTJIQSxnQkFBN0k7QUFDQSxlQUFPQyxTQUFQO0FBQ0Q7QUFSTztBQURNO0FBZGEsQ0FBMUIiLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQmFzaWNTZWxlY3RDb25maWcgPSB7XG4gIGlkOiAnQmFzaWNTZWxlY3QnLFxuICBuYW1lOiAnQmFzaWMgc2VsZWN0JyxcbiAgc3VidGl0bGU6ICdCYXNpYyBzZWxlY3QnLFxuICBvcHRpb25zOiBbXSxcbiAgZ3JvdXA6ICdTZWxlY3QnLFxuICBmb3JtbHlUeXBlOiAnYmFzaWNTZWxlY3QnLFxuICBmb3JtbHlTdWJ0eXBlOiAnJyxcbiAgZm9ybWx5TGFiZWw6ICcnLFxuICBmb3JtbHlSZXF1aXJlZDogZmFsc2UsXG4gIGZvcm1seURlc2NyaXB0aW9uOiAnJyxcbiAgZm9ybWx5T3B0aW9uczogW10sXG4gIGZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdG9yczoge30sXG4gIGZvcm1seVZhbGlkYXRpb246IHtcbiAgICBtZXNzYWdlczoge1xuICAgICAgcmVxdWlyZWQ6IGZ1bmN0aW9uKHZpZXdWYWx1ZSwgbW9kZWxWYWx1ZSwgc2NvcGUpIHtcbiAgICAgICAgLy9yZXR1cm4gYSByZXF1aXJlZCB2YWxpZGF0aW9uIG1lc3NhZ2UgOlxuICAgICAgICAvLy0+ICc8bGFiZWwgYXMgbmFtZT4gaXMgcmVxdWlyZWQgJ1xuICAgICAgICAvLy0+IG9yIGlmIG5vdCBleGlzdHMgb3IgZW1wdHkganVzdCAndGhpcyBmaWVsZCBpcyByZXF1aXJlZCdcbiAgICAgICAgY29uc3QgZGVmYXVsdFJldHVybk1zZyA9ICd0aGlzIEJhc2ljIHNlbGVjdCBmaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICAgIGNvbnN0IHJldHVybk1zZyA9ICh0eXBlb2Ygc2NvcGUudG8ubGFiZWwgIT09ICd1bmRlZmluZWQnKSA/ICgoc2NvcGUudG8ubGFiZWwgIT09ICcnKSA/IHNjb3BlLnRvLmxhYmVsICsgJyBpcyByZXF1aXJlZCcgOiBkZWZhdWx0UmV0dXJuTXNnKSA6IGRlZmF1bHRSZXR1cm5Nc2c7XG4gICAgICAgIHJldHVybiByZXR1cm5Nc2c7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvYmFzaWNTZWxlY3QvY29uZmlnL2Jhc2ljU2VsZWN0LmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 28 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_BASIC_SELECT_COMPONENT = exports.EDIT_BASIC_SELECT_COMPONENT = 'editBasicSelectControl';\n\nvar editBasicSelectControlComponent = exports.editBasicSelectControlComponent = {\n template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n \\n {{\\'ADD_NEW_OPTIONS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n {{\\'EDIT_REMOVE_OPTIONS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n ',\n bindings: {\n nyaSelect: '=',\n basicSelectRowCollection: '=',\n newOptionBasicSelect: '=',\n addNewOptionBasicSelect: '&',\n upThisRow: '&',\n downThisRow: '&',\n removeRow: '&'\n },\n controller: (_temp = _class = function editBasicSelectController() {\n _classCallCheck(this, editBasicSelectController);\n }, _class.$inject = [], _temp)\n};\n\nvar editBasicSelectModuleName = 'stepway.editBasicSelect.module';\nexports.default = angular.module(editBasicSelectModuleName, []).component(EDIT_BASIC_SELECT_COMPONENT, editBasicSelectControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9iYXNpY1NlbGVjdC9lZGl0QmFzaWNTZWxlY3QvZWRpdEJhc2ljU2VsZWN0LmNvbXBvbmVudC5qcz8wNTNlIl0sIm5hbWVzIjpbIkVESVRfQkFTSUNfU0VMRUNUX0NPTVBPTkVOVCIsImVkaXRCYXNpY1NlbGVjdENvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0IiwiYmFzaWNTZWxlY3RSb3dDb2xsZWN0aW9uIiwibmV3T3B0aW9uQmFzaWNTZWxlY3QiLCJhZGROZXdPcHRpb25CYXNpY1NlbGVjdCIsInVwVGhpc1JvdyIsImRvd25UaGlzUm93IiwicmVtb3ZlUm93IiwiY29udHJvbGxlciIsIiRpbmplY3QiLCJlZGl0QmFzaWNTZWxlY3RNb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLG9FQUE4Qix3QkFBcEM7O0FBRUEsSUFBTUMsNEVBQWtDO0FBQzdDQyx1bVFBRDZDO0FBeU83Q0MsWUFBVTtBQUNSQyxlQUFXLEdBREg7QUFFUkMsOEJBQTBCLEdBRmxCO0FBR1JDLDBCQUFzQixHQUhkO0FBSVJDLDZCQUF5QixHQUpqQjtBQUtSQyxlQUFXLEdBTEg7QUFNUkMsaUJBQWEsR0FOTDtBQU9SQyxlQUFXO0FBUEgsR0F6T21DO0FBa1A3Q0MsZ0NBSUUscUNBQWM7QUFBQTtBQUViLEdBTkgsU0FFU0MsT0FGVCxHQUVtQixFQUZuQjtBQWxQNkMsQ0FBeEM7O0FBNFBQLElBQU1DLDRCQUE0QixnQ0FBbEM7a0JBQ2VDLFFBQ0VDLE1BREYsQ0FDU0YseUJBRFQsRUFDb0MsRUFEcEMsRUFFRUcsU0FGRixDQUVZaEIsMkJBRlosRUFFeUNDLCtCQUZ6QyxDIiwiZmlsZSI6IjI4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVESVRfQkFTSUNfU0VMRUNUX0NPTVBPTkVOVCA9ICdlZGl0QmFzaWNTZWxlY3RDb250cm9sJztcblxuZXhwb3J0IGNvbnN0IGVkaXRCYXNpY1NlbGVjdENvbnRyb2xDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxoNSBjbGFzcz1cImdyZXlUZXh0XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZVwiPjwvaT5cbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAge3snUFJFVklFV19UQUInIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvaDU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8aHIvPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBmb3I9XCJiYXNpY1NlbGVjdFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbCB0ZXh0Q29udHJvbExhYmVsXCI+XG4gICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWx9fVxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIG5nLWlmPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dENvbnRyb2xMYWJlbFwiPlxuICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgPG9sXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJueWEtYnMtc2VsZWN0IGNvbC1zbS0xMiBjb2wteHMtMTIgY29sLW1kLTEyIGNvbC1sZzEyXCJcbiAgICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm1vZGVsYmFzaWNTZWxlY3RcIlxuICAgICAgICAgICAgICAgIGlkPVwiYmFzaWNTZWxlY3RcIlxuICAgICAgICAgICAgICAgIGRpc2FibGVkPVwiJGN0cmwuYmFzaWNTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm55YS1icy1vcHRpb25cIlxuICAgICAgICAgICAgICAgICAgbnlhLWJzLW9wdGlvbj1cImJhc2ljU2VsZWN0Um93IGluICRjdHJsLmJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbi5yb3dzXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICA8YT5cbiAgICAgICAgICAgICAgICAgICAge3tiYXNpY1NlbGVjdFJvdy5vcHRpb259fVxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvb2w+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVscC1ibG9ja1wiPlxuICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb259fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxoNSBjbGFzcz1cImdyZXlUZXh0XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbC1zcXVhcmUtb1wiPjwvaT5cbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAge3snRURJVF9QUk9QRVJUSUVTJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2g1PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGhyLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC1tZC0zXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJiYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb25cIlxuICAgICAgICAgICAgY2xhc3M9XCIgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydBRERfTkVXX09QVElPTlMnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOSBjb2wteHMtOSBjb2wtbWQtOSBjb2wtbGctOVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBpZD1cImlucHV0QWRkTmV3QmFzaWNPcHRpb25cIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FERF9BX05FV19PUFRJT04nIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm5ld09wdGlvbkJhc2ljU2VsZWN0LnNhaXNpZVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTMgY29sLXhzLTMgY29sLW1kLTMgY29sLWxnLTNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLmFkZE5ld09wdGlvbkJhc2ljU2VsZWN0KClcIj5cbiAgICAgICAgICAgICAgICB7eydBREQnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC1tZC0zXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAge3snRURJVF9SRU1PVkVfT1BUSU9OUycgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzLVwiY29sLWxnLTEyIGNvbC1tZC0xMiBjb2wtc20tMTIgY29sLXhzLTEyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgbmctaWY9XCIkY3RybC5iYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24ucm93cy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJ0ZXh0LWNlbnRlciBncmV5VGV4dFwiPlxuICAgICAgICAgICAgICAgICAgPGVtPlxuICAgICAgICAgICAgICAgICAgICAtIHt7J05PX09QVElPTl9BRERfTkVXJyB8IHRyYW5zbGF0ZX19IC1cbiAgICAgICAgICAgICAgICAgIDwvZW0+XG4gICAgICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDx0YWJsZVxuICAgICAgICAgICAgICAgIG5nLWlmPVwiJGN0cmwuYmFzaWNTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkXCI+XG4gICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XCIyMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7J09SREVSJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cIjU1XCI+XG4gICAgICAgICAgICAgICAgICAgICAge3snT1BUSU9OJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cIjI1XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XCIyMFwiPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XCI1NVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5iYXNpY1NlbGVjdEZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J1NFQVJDSF80X09QVElPTicgfCB0cmFuc2xhdGV9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LXNtIGZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XCIyNVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgIDx0ciBuZy1yZXBlYXQ9XCJiYXNpY1NlbGVjdFJvdyBpbiAkY3RybC5iYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24ucm93cyB8IGZpbHRlcjokY3RybC5iYXNpY1NlbGVjdEZpbHRlciBhcyBiYXNpY1NlbGVjdFJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdC1yYXRpbz1cIjIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyRpbmRleH19XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgc3QtcmF0aW89XCI1NVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tiYXNpY1NlbGVjdFJvdy5vcHRpb259fVxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIHN0LXJhdGlvPVwiMjVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdWxsLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC51cFRoaXNSb3coe2luZGV4OiAkaW5kZXh9KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctdXBcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwuZG93blRoaXNSb3coe2luZGV4OiAkaW5kZXh9KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93blwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLnJlbW92ZVJvdyh7aW5kZXg6ICRpbmRleH0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBmb3I9XCJpbnB1dFRleHRMYWJlbFVwZGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICAgIHt7J0xBQkVMX1RFWFQnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWxcIlxuICAgICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snQUREX0VESVRfTEFCRUxfSEVSRScgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWFyZ2luVG9wRml2ZXBpeGVsc1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBmb3I9XCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICAgIFJlcXVpcmVkIDpcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94Q3NzQ29ycmVjdGlvblwiPlxuICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBuZy1tb2RlbD1cIm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBpZD1cImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICAgICAge3snREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snQURERURJVF9ERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBgLFxuICBiaW5kaW5nczoge1xuICAgIG55YVNlbGVjdDogJz0nLFxuICAgIGJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbjogJz0nLFxuICAgIG5ld09wdGlvbkJhc2ljU2VsZWN0OiAnPScsXG4gICAgYWRkTmV3T3B0aW9uQmFzaWNTZWxlY3Q6ICcmJyxcbiAgICB1cFRoaXNSb3c6ICcmJyxcbiAgICBkb3duVGhpc1JvdzogJyYnLFxuICAgIHJlbW92ZVJvdzogJyYnXG4gIH0sXG4gIGNvbnRyb2xsZXI6XG4gIGNsYXNzIGVkaXRCYXNpY1NlbGVjdENvbnRyb2xsZXIge1xuICAgIHN0YXRpYyAkaW5qZWN0ID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIH1cbiAgfVxufTtcblxuY29uc3QgZWRpdEJhc2ljU2VsZWN0TW9kdWxlTmFtZSA9ICdzdGVwd2F5LmVkaXRCYXNpY1NlbGVjdC5tb2R1bGUnO1xuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuICAgICAgICAgICAgICAgIC5tb2R1bGUoZWRpdEJhc2ljU2VsZWN0TW9kdWxlTmFtZSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChFRElUX0JBU0lDX1NFTEVDVF9DT01QT05FTlQsIGVkaXRCYXNpY1NlbGVjdENvbnRyb2xDb21wb25lbnQpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvYmFzaWNTZWxlY3QvZWRpdEJhc2ljU2VsZWN0L2VkaXRCYXNpY1NlbGVjdC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 29 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar GroupedSelectConfig = exports.GroupedSelectConfig = {\n id: 'GroupedSelect',\n name: 'Grouped Select',\n subtitle: 'Grouped Select',\n options: [],\n group: 'Select',\n formlyType: 'groupedSelect',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> '
is required '\n //-> or if not exists or empty just 'this field is required'\n var defaultReturnMsg = 'this Grouped Select field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9ncm91cGVkU2VsZWN0L2NvbmZpZy9ncm91cGVkU2VsZWN0LmNvbmZpZy5qcz9kY2ZiIl0sIm5hbWVzIjpbIkdyb3VwZWRTZWxlY3RDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsIm9wdGlvbnMiLCJncm91cCIsImZvcm1seVR5cGUiLCJmb3JtbHlTdWJ0eXBlIiwiZm9ybWx5TGFiZWwiLCJmb3JtbHlSZXF1aXJlZCIsImZvcm1seURlc2NyaXB0aW9uIiwiZm9ybWx5T3B0aW9ucyIsImZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzIiwiZm9ybWx5VmFsaWRhdG9ycyIsImZvcm1seVZhbGlkYXRpb24iLCJtZXNzYWdlcyIsInJlcXVpcmVkIiwidmlld1ZhbHVlIiwibW9kZWxWYWx1ZSIsInNjb3BlIiwiZGVmYXVsdFJldHVybk1zZyIsInJldHVybk1zZyIsInRvIiwibGFiZWwiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQU8sSUFBTUEsb0RBQXNCO0FBQ2pDQyxNQUFJLGVBRDZCO0FBRWpDQyxRQUFNLGdCQUYyQjtBQUdqQ0MsWUFBVSxnQkFIdUI7QUFJakNDLFdBQVMsRUFKd0I7QUFLakNDLFNBQU8sUUFMMEI7QUFNakNDLGNBQVksZUFOcUI7QUFPakNDLGlCQUFlLEVBUGtCO0FBUWpDQyxlQUFhLEVBUm9CO0FBU2pDQyxrQkFBZ0IsS0FUaUI7QUFVakNDLHFCQUFtQixFQVZjO0FBV2pDQyxpQkFBZSxFQVhrQjtBQVlqQ0MsOEJBQTRCLEVBWks7QUFhakNDLG9CQUFrQixFQWJlO0FBY2pDQyxvQkFBa0I7QUFDaEJDLGNBQVU7QUFDUkMsZ0JBQVUsa0JBQUNDLFNBQUQsRUFBWUMsVUFBWixFQUF3QkMsS0FBeEIsRUFBa0M7QUFDMUM7QUFDQTtBQUNBO0FBQ0EsWUFBTUMsbUJBQW1CLHVDQUF6QjtBQUNBLFlBQU1DLFlBQWEsT0FBT0YsTUFBTUcsRUFBTixDQUFTQyxLQUFoQixLQUEwQixXQUEzQixHQUE0Q0osTUFBTUcsRUFBTixDQUFTQyxLQUFULEtBQW1CLEVBQXBCLEdBQTBCSixNQUFNRyxFQUFOLENBQVNDLEtBQVQsR0FBaUIsY0FBM0MsR0FBNERILGdCQUF2RyxHQUEySEEsZ0JBQTdJO0FBQ0EsZUFBT0MsU0FBUDtBQUNEO0FBUk87QUFETTtBQWRlLENBQTVCIiwiZmlsZSI6IjI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEdyb3VwZWRTZWxlY3RDb25maWcgPSB7XG4gIGlkOiAnR3JvdXBlZFNlbGVjdCcsXG4gIG5hbWU6ICdHcm91cGVkIFNlbGVjdCcsXG4gIHN1YnRpdGxlOiAnR3JvdXBlZCBTZWxlY3QnLFxuICBvcHRpb25zOiBbXSxcbiAgZ3JvdXA6ICdTZWxlY3QnLFxuICBmb3JtbHlUeXBlOiAnZ3JvdXBlZFNlbGVjdCcsXG4gIGZvcm1seVN1YnR5cGU6ICcnLFxuICBmb3JtbHlMYWJlbDogJycsXG4gIGZvcm1seVJlcXVpcmVkOiBmYWxzZSxcbiAgZm9ybWx5RGVzY3JpcHRpb246ICcnLFxuICBmb3JtbHlPcHRpb25zOiBbXSxcbiAgZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXM6IHt9LFxuICBmb3JtbHlWYWxpZGF0b3JzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdGlvbjoge1xuICAgIG1lc3NhZ2VzOiB7XG4gICAgICByZXF1aXJlZDogKHZpZXdWYWx1ZSwgbW9kZWxWYWx1ZSwgc2NvcGUpID0+IHtcbiAgICAgICAgLy9yZXR1cm4gYSByZXF1aXJlZCB2YWxpZGF0aW9uIG1lc3NhZ2UgOlxuICAgICAgICAvLy0+ICc8bGFiZWwgYXMgbmFtZT4gaXMgcmVxdWlyZWQgJ1xuICAgICAgICAvLy0+IG9yIGlmIG5vdCBleGlzdHMgb3IgZW1wdHkganVzdCAndGhpcyBmaWVsZCBpcyByZXF1aXJlZCdcbiAgICAgICAgY29uc3QgZGVmYXVsdFJldHVybk1zZyA9ICd0aGlzIEdyb3VwZWQgU2VsZWN0IGZpZWxkIGlzIHJlcXVpcmVkJztcbiAgICAgICAgY29uc3QgcmV0dXJuTXNnID0gKHR5cGVvZiBzY29wZS50by5sYWJlbCAhPT0gJ3VuZGVmaW5lZCcpID8gKChzY29wZS50by5sYWJlbCAhPT0gJycpID8gc2NvcGUudG8ubGFiZWwgKyAnIGlzIHJlcXVpcmVkJyA6IGRlZmF1bHRSZXR1cm5Nc2cpIDogZGVmYXVsdFJldHVybk1zZztcbiAgICAgICAgcmV0dXJuIHJldHVybk1zZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9ncm91cGVkU2VsZWN0L2NvbmZpZy9ncm91cGVkU2VsZWN0LmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 30 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_GROUPED_SELECT_COMPONENT = exports.EDIT_GROUPED_SELECT_COMPONENT = 'editGroupedSelectControl';\n\nvar editGroupedSelectControlComponent = exports.editGroupedSelectControlComponent = {\n template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n \\n {{\\'ADD_NEW_OPTIONS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n {{\\'ADD_NEW_GROUPS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n {{\\'EDIT_GROUPS_OPTIONS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n nyaSelect: '=',\n groupedSelectRowCollection: '=',\n newOptionGroupedSelect: '=',\n newGroupGroupedSelect: '=',\n groupSelectGroupClick: '=',\n groupedSelectGroups: '=',\n\n addNewOptionGroupedSelect: '&',\n addNewGroupToGroupedSelect: '&',\n upThisGroupedSelectRow: '&',\n downThisGroupedSelectRow: '&',\n showGroupListToChoose: '&',\n removeGroupedSelectRow: '&'\n },\n controller: (_temp = _class = function editGroupedSelectControlController() {\n _classCallCheck(this, editGroupedSelectControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editGroupedSelectModuleName = 'stepway.editGroupedSelect.module';\n\nexports.default = angular.module(editGroupedSelectModuleName, []).component(EDIT_GROUPED_SELECT_COMPONENT, editGroupedSelectControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9ncm91cGVkU2VsZWN0L2VkaXRHcm91cGVkU2VsZWN0L2VkaXRHcm91cGVkU2VsZWN0LmNvbXBvbmVudC5qcz84OTE4Il0sIm5hbWVzIjpbIkVESVRfR1JPVVBFRF9TRUxFQ1RfQ09NUE9ORU5UIiwiZWRpdEdyb3VwZWRTZWxlY3RDb250cm9sQ29tcG9uZW50IiwidGVtcGxhdGUiLCJiaW5kaW5ncyIsIm55YVNlbGVjdCIsImdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uIiwibmV3T3B0aW9uR3JvdXBlZFNlbGVjdCIsIm5ld0dyb3VwR3JvdXBlZFNlbGVjdCIsImdyb3VwU2VsZWN0R3JvdXBDbGljayIsImdyb3VwZWRTZWxlY3RHcm91cHMiLCJhZGROZXdPcHRpb25Hcm91cGVkU2VsZWN0IiwiYWRkTmV3R3JvdXBUb0dyb3VwZWRTZWxlY3QiLCJ1cFRoaXNHcm91cGVkU2VsZWN0Um93IiwiZG93blRoaXNHcm91cGVkU2VsZWN0Um93Iiwic2hvd0dyb3VwTGlzdFRvQ2hvb3NlIiwicmVtb3ZlR3JvdXBlZFNlbGVjdFJvdyIsImNvbnRyb2xsZXIiLCIkaW5qZWN0IiwiZWRpdEdyb3VwZWRTZWxlY3RNb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLHdFQUFnQywwQkFBdEM7O0FBRUEsSUFBTUMsZ0ZBQW9DO0FBQy9DQywyZ1ZBRCtDO0FBNFIvQ0MsWUFBVTtBQUNSQyxlQUE0QixHQURwQjtBQUVSQyxnQ0FBNEIsR0FGcEI7QUFHUkMsNEJBQTRCLEdBSHBCO0FBSVJDLDJCQUE0QixHQUpwQjtBQUtSQywyQkFBNEIsR0FMcEI7QUFNUkMseUJBQTRCLEdBTnBCOztBQVFSQywrQkFBNEIsR0FScEI7QUFTUkMsZ0NBQTRCLEdBVHBCO0FBVVJDLDRCQUE0QixHQVZwQjtBQVdSQyw4QkFBNEIsR0FYcEI7QUFZUkMsMkJBQTRCLEdBWnBCO0FBYVJDLDRCQUE0QjtBQWJwQixHQTVScUM7QUEyUy9DQyxnQ0FJRSw4Q0FBYztBQUFBO0FBRWIsR0FOSCxTQUVTQyxPQUZULEdBRW1CLEVBRm5CO0FBM1MrQyxDQUExQzs7QUFxVFAsSUFBTUMsOEJBQThCLGtDQUFwQzs7a0JBRWVDLFFBQ0VDLE1BREYsQ0FDU0YsMkJBRFQsRUFDc0MsRUFEdEMsRUFFRUcsU0FGRixDQUVZckIsNkJBRlosRUFFMkNDLGlDQUYzQyxDIiwiZmlsZSI6IjMwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVESVRfR1JPVVBFRF9TRUxFQ1RfQ09NUE9ORU5UID0gJ2VkaXRHcm91cGVkU2VsZWN0Q29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0R3JvdXBlZFNlbGVjdENvbnRyb2xDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPGg1XG4gICAgICAgICAgICBjbGFzcz1cImdyZXlUZXh0XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZVwiPjwvaT5cbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAge3snUFJFVklFV19UQUInIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvaDU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8aHIvPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBmb3I9XCJzZWxlY3RcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWwgdGV4dENvbnRyb2xMYWJlbFwiPlxuICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsfX1cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBuZy1pZj1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHRDb250cm9sTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgIDxvbFxuICAgICAgICAgICAgICAgIGNsYXNzPVwibnlhLWJzLXNlbGVjdCBjb2wtc20tMTIgY29sLXhzLTEyIGNvbC1tZC0xMiBjb2wtbGcxMlwiXG4gICAgICAgICAgICAgICAgbmctbW9kZWw9XCJtb2RlbEdyb3VwZWRTZWxlY3RcIlxuICAgICAgICAgICAgICAgIGRhdGEtbGl2ZS1zZWFyY2g9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBkaXNhYmxlZD1cIiRjdHJsLmdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICBueWEtYnMtb3B0aW9uPVwiZ3JvdXBlZFNlbGVjdFJvdyBpbiAkY3RybC5ncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbi5yb3dzIGdyb3VwIGJ5IGdyb3VwZWRTZWxlY3RSb3cuZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCIkaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7Z3JvdXBlZFNlbGVjdFJvdy5ncm91cH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAge3tncm91cGVkU2VsZWN0Um93Lm9wdGlvbn19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnbHlwaGljb24gZ2x5cGhpY29uLW9rIGNoZWNrLW1hcmtcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvb2w+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVscC1ibG9ja1wiPlxuICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb259fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxoNVxuICAgICAgICAgICAgY2xhc3M9XCJncmV5VGV4dFwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cIj48L2k+XG4gICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9oNT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoci8+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wtbWQtM1wiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwiZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb25cIlxuICAgICAgICAgICAgY2xhc3M9XCIgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydBRERfTkVXX09QVElPTlMnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOSBjb2wteHMtOSBjb2wtbWQtOSBjb2wtbGctOVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIGlkPVwiaW5wdXRBZGROZXdHcm91cGVkT3B0aW9uXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FERF9BX05FV19PUFRJT04nIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubmV3T3B0aW9uR3JvdXBlZFNlbGVjdC5zYWlzaWVcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zIGNvbC14cy0zIGNvbC1tZC0zIGNvbC1sZy0zXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5hZGROZXdPcHRpb25Hcm91cGVkU2VsZWN0KClcIj5cbiAgICAgICAgICAgICAgICB7eydBREQnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC1tZC0zXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvblwiXG4gICAgICAgICAgICBjbGFzcz1cIiBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICAgIHt7J0FERF9ORVdfR1JPVVBTJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTkgY29sLXhzLTkgY29sLW1kLTkgY29sLWxnLTlcIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgaWQ9XCJpbnB1dEFkZE5ld0dyb3VwR3JvdXBlZE9wdGlvblwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm5ld0dyb3VwR3JvdXBlZFNlbGVjdC5zYWlzaWVcIiBpZD1cImlucHV0VGV4dExhYmVsVXBkYXRlR3JvdXBlZFNlbGVjdFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBRERfQV9ORVdfR1JPVVAnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zIGNvbC14cy0zIGNvbC1tZC0zIGNvbC1sZy0zXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5hZGROZXdHcm91cFRvR3JvdXBlZFNlbGVjdCgpXCI+XG4gICAgICAgICAgICAgICAge3snQUREJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wtbWQtM1wiPlxuICAgICAgICAgIDxsYWJlbCAgY2xhc3M9XCIgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydFRElUX0dST1VQU19PUFRJT05TJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgY29sLW1kLTEyIGNvbC1zbS0xMiBjb2wteHMtMTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBuZy1pZj1cIiRjdHJsLmdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidGV4dC1jZW50ZXIgZ3JleVRleHRcIj5cbiAgICAgICAgICAgICAgICAgIDxlbT5cbiAgICAgICAgICAgICAgICAgICAgLSB7eydOT19PUFRJT05fQUREX05FVycgfCB0cmFuc2xhdGV9fSAtXG4gICAgICAgICAgICAgICAgICA8L2VtPlxuICAgICAgICAgICAgICAgIDwvaDU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8dGFibGVcbiAgICAgICAgICAgICAgICBuZy1pZj1cIiRjdHJsLmdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkXCI+XG4gICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XCIyMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7J09SREVSJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cIjI1XCI+XG4gICAgICAgICAgICAgICAgICAgICAge3snR1JPVVAnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVwiMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eydPUFRJT04nIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVwiMjVcIj5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cIjIwXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cIjI1XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cIjMwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLmdyb3VwZWRTZWxlY3RGaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydTRUFSQ0hfNF9PUFRJT04nIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1zbSBmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVwiMjVcIj5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgPHRyIG5nLXJlcGVhdD1cImdyb3VwZWRTZWxlY3RSb3cgaW4gJGN0cmwuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24ucm93cyB8IGZpbHRlcjokY3RybC5ncm91cGVkU2VsZWN0RmlsdGVyIGFzIGdyb3VwZWRTZWxlY3RSb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIHN0LXJhdGlvPVwiMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyRpbmRleH19XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBzdC1yYXRpbz1cIjI1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZy1pZj1cIiRjdHJsLmdyb3VwU2VsZWN0R3JvdXBDbGljay5zaG93TGlzdCA9PT0gdHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZy1pZj1cIiRjdHJsLmdyb3VwZWRTZWxlY3RHcm91cHMubGlzdC5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxlZnQgbm9Hcm91cFRleHRcIj4tIHt7J05PX0dST1VQX0FERF9ORVcnIHwgdHJhbnNsYXRlfX0gLTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZy1pZj1cIiRjdHJsLmdyb3VwZWRTZWxlY3RHcm91cHMubGlzdC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibnlhLWJzLXNlbGVjdCBjb2wtc20tMTIgY29sLXhzLTEyIGNvbC1tZC0xMiBjb2wtbGcxMiBlZGl0R3JvdXBlZFNlbGVjdG55YVNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmctbW9kZWw9XCJncm91cGVkU2VsZWN0Um93Lmdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm1vZGVsR3JvdXBlZE9wdGlvbkdyb3VwZWRDaG9vc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPVwiJGN0cmwuZ3JvdXBlZFNlbGVjdEdyb3Vwcy5saXN0Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJueWEtYnMtb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG55YS1icy1vcHRpb249XCJHcm91cGVkU2VsZWN0R3JvdXAgaW4gJGN0cmwuZ3JvdXBlZFNlbGVjdEdyb3Vwcy5saXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiR3JvdXBlZFNlbGVjdEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YT57e0dyb3VwZWRTZWxlY3RHcm91cH19PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nLWlmPVwiJGN0cmwuZ3JvdXBTZWxlY3RHcm91cENsaWNrLnNob3dMaXN0ID09PSBmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tncm91cGVkU2VsZWN0Um93Lmdyb3VwfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIHN0LXJhdGlvPVwiMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7e2dyb3VwZWRTZWxlY3RSb3cub3B0aW9ufX1cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIHN0LXJhdGlvPVwiMjVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVsbC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwudXBUaGlzR3JvdXBlZFNlbGVjdFJvdyh7aW5kZXg6ICRpbmRleH0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctdXBcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLmRvd25UaGlzR3JvdXBlZFNlbGVjdFJvdyh7aW5kZXg6ICRpbmRleH0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93blwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4td2FybmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwuc2hvd0dyb3VwTGlzdFRvQ2hvb3NlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwucmVtb3ZlR3JvdXBlZFNlbGVjdFJvdyh7aW5kZXg6ICRpbmRleH0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPGhyLz5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBmb3I9XCJpbnB1dFRleHRMYWJlbFVwZGF0ZVwiXG4gICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICB7eydMQUJFTF9URVhUJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsXCJcbiAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBRERfRURJVF9MQUJFTF9IRVJFJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWFyZ2luVG9wRml2ZXBpeGVsc1wiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGZvcj1cImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXCJcbiAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgIHt7J0RFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBRERFRElUX0RFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzOiB7XG4gICAgbnlhU2VsZWN0OiAgICAgICAgICAgICAgICAgICc9JyxcbiAgICBncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbjogJz0nLFxuICAgIG5ld09wdGlvbkdyb3VwZWRTZWxlY3Q6ICAgICAnPScsXG4gICAgbmV3R3JvdXBHcm91cGVkU2VsZWN0OiAgICAgICc9JyxcbiAgICBncm91cFNlbGVjdEdyb3VwQ2xpY2s6ICAgICAgJz0nLFxuICAgIGdyb3VwZWRTZWxlY3RHcm91cHM6ICAgICAgICAnPScsXG5cbiAgICBhZGROZXdPcHRpb25Hcm91cGVkU2VsZWN0OiAgJyYnLFxuICAgIGFkZE5ld0dyb3VwVG9Hcm91cGVkU2VsZWN0OiAnJicsXG4gICAgdXBUaGlzR3JvdXBlZFNlbGVjdFJvdzogICAgICcmJyxcbiAgICBkb3duVGhpc0dyb3VwZWRTZWxlY3RSb3c6ICAgJyYnLFxuICAgIHNob3dHcm91cExpc3RUb0Nob29zZTogICAgICAnJicsXG4gICAgcmVtb3ZlR3JvdXBlZFNlbGVjdFJvdzogICAgICcmJ1xuICB9LFxuICBjb250cm9sbGVyICAgIDpcbiAgY2xhc3MgZWRpdEdyb3VwZWRTZWxlY3RDb250cm9sQ29udHJvbGxlciB7XG4gICAgc3RhdGljICRpbmplY3QgPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBlZGl0R3JvdXBlZFNlbGVjdE1vZHVsZU5hbWUgPSAnc3RlcHdheS5lZGl0R3JvdXBlZFNlbGVjdC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShlZGl0R3JvdXBlZFNlbGVjdE1vZHVsZU5hbWUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoRURJVF9HUk9VUEVEX1NFTEVDVF9DT01QT05FTlQsIGVkaXRHcm91cGVkU2VsZWN0Q29udHJvbENvbXBvbmVudCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9ncm91cGVkU2VsZWN0L2VkaXRHcm91cGVkU2VsZWN0L2VkaXRHcm91cGVkU2VsZWN0LmNvbXBvbmVudC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 31 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar HeaderConfig = exports.HeaderConfig = {\n id: 'Header',\n name: 'Header',\n subtitle: 'no control',\n group: 'Decoration',\n formlyType: 'header',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {}\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9oZWFkZXIvY29uZmlnL2hlYWRlci5jb25maWcuanM/NDBmZSJdLCJuYW1lcyI6WyJIZWFkZXJDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiZm9ybWx5VmFsaWRhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFNQSxzQ0FBZTtBQUMxQkMsTUFBSSxRQURzQjtBQUUxQkMsUUFBTSxRQUZvQjtBQUcxQkMsWUFBVSxZQUhnQjtBQUkxQkMsU0FBTyxZQUptQjtBQUsxQkMsY0FBWSxRQUxjO0FBTTFCQyxpQkFBZSxFQU5XO0FBTzFCQyxlQUFhLEVBUGE7QUFRMUJDLGtCQUFnQixLQVJVO0FBUzFCQyxxQkFBbUIsRUFUTztBQVUxQkMsaUJBQWUsRUFWVztBQVcxQkMsOEJBQTRCLEVBWEY7QUFZMUJDLG9CQUFrQixFQVpRO0FBYTFCQyxvQkFBa0I7QUFiUSxDQUFyQiIsImZpbGUiOiIzMS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBIZWFkZXJDb25maWcgPSB7XG4gIGlkOiAnSGVhZGVyJyxcbiAgbmFtZTogJ0hlYWRlcicsXG4gIHN1YnRpdGxlOiAnbm8gY29udHJvbCcsXG4gIGdyb3VwOiAnRGVjb3JhdGlvbicsXG4gIGZvcm1seVR5cGU6ICdoZWFkZXInLFxuICBmb3JtbHlTdWJ0eXBlOiAnJyxcbiAgZm9ybWx5TGFiZWw6ICcnLFxuICBmb3JtbHlSZXF1aXJlZDogZmFsc2UsXG4gIGZvcm1seURlc2NyaXB0aW9uOiAnJyxcbiAgZm9ybWx5T3B0aW9uczogW10gLFxuICBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllczoge30sXG4gIGZvcm1seVZhbGlkYXRvcnM6IHt9LFxuICBmb3JtbHlWYWxpZGF0aW9uOiB7fVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL2hlYWRlci9jb25maWcvaGVhZGVyLmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 32 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_HEADER_CONTROL_COMPONENT = exports.EDIT_HEADER_CONTROL_COMPONENT = 'editHeaderControl';\n\nvar editHeaderControlComponent = exports.editHeaderControlComponent = {\n template: '\\n
\\n
\\n
\\n
\\n
\\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n nyaSelect: '='\n },\n controller: (_temp = _class = function editHeaderControlController() {\n //\n\n _classCallCheck(this, editHeaderControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editHeaderControlModuleName = 'stepway.editHeaderControl.module';\n\nexports.default = angular.module(editHeaderControlModuleName, []).component(EDIT_HEADER_CONTROL_COMPONENT, editHeaderControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9oZWFkZXIvZWRpdEhlYWRlci9lZGl0SGVhZGVyQ29udHJvbC5jb21wb25lbnQuanM/NzU3NCJdLCJuYW1lcyI6WyJFRElUX0hFQURFUl9DT05UUk9MX0NPTVBPTkVOVCIsImVkaXRIZWFkZXJDb250cm9sQ29tcG9uZW50IiwidGVtcGxhdGUiLCJiaW5kaW5ncyIsIm55YVNlbGVjdCIsImNvbnRyb2xsZXIiLCIkaW5qZWN0IiwiZWRpdEhlYWRlckNvbnRyb2xNb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLHdFQUFnQyxtQkFBdEM7O0FBRUEsSUFBTUMsa0VBQTZCO0FBQ3hDQyw0MEVBRHdDO0FBOEV4Q0MsWUFBVTtBQUNSQyxlQUFXO0FBREgsR0E5RThCO0FBaUZ4Q0MsZ0NBSUUsdUNBQWM7QUFDWjs7QUFEWTtBQUViLEdBTkgsU0FFU0MsT0FGVCxHQUVtQixFQUZuQjtBQWpGd0MsQ0FBbkM7O0FBMkZQLElBQU1DLDhCQUE4QixrQ0FBcEM7O2tCQUVlQyxRQUNFQyxNQURGLENBQ1NGLDJCQURULEVBQ3NDLEVBRHRDLEVBRUVHLFNBRkYsQ0FFWVYsNkJBRlosRUFFMkNDLDBCQUYzQyxDIiwiZmlsZSI6IjMyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVESVRfSEVBREVSX0NPTlRST0xfQ09NUE9ORU5UID0gJ2VkaXRIZWFkZXJDb250cm9sJztcblxuZXhwb3J0IGNvbnN0IGVkaXRIZWFkZXJDb250cm9sQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZTogYFxuICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8aDUgY2xhc3M9XCJncmV5VGV4dFwiPjxpIGNsYXNzPVwiZmEgZmEtZXllXCI+PC9pPlxuICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICB7eydQUkVWSUVXX1RBQicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9oNT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoci8+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UGxhY2Vob2xkZXJ9fVxuICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8aDUgY2xhc3M9XCJncmV5VGV4dFwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cIj48L2k+XG4gICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGhyLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJpbnB1dEhlYWRlclRleHRVcGRhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICAgIHt7J0hFQURFUl9URVhUJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgaWQ9XCJpbnB1dEhlYWRlclRleHRVcGRhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FERF9FRElUX0hFQURFUl9IRVJFJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWFyZ2luVG9wRml2ZXBpeGVsc1wiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICAgIHt7J0RFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgaWQ9XCJpbnB1dFRleHREZXNjcmlwdGlvblVwZGF0ZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snQURERURJVF9ERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgYCxcbiAgYmluZGluZ3M6IHtcbiAgICBueWFTZWxlY3Q6ICc9J1xuICB9LFxuICBjb250cm9sbGVyOlxuICBjbGFzcyBlZGl0SGVhZGVyQ29udHJvbENvbnRyb2xsZXIge1xuICAgIHN0YXRpYyAkaW5qZWN0ID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIC8vXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBlZGl0SGVhZGVyQ29udHJvbE1vZHVsZU5hbWUgPSAnc3RlcHdheS5lZGl0SGVhZGVyQ29udHJvbC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShlZGl0SGVhZGVyQ29udHJvbE1vZHVsZU5hbWUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoRURJVF9IRUFERVJfQ09OVFJPTF9DT01QT05FTlQsIGVkaXRIZWFkZXJDb250cm9sQ29tcG9uZW50KTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9oZWFkZXIvZWRpdEhlYWRlci9lZGl0SGVhZGVyQ29udHJvbC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 33 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar PasswordConfig = exports.PasswordConfig = {\n id: 'Password',\n name: 'Password',\n subtitle: 'Password',\n group: 'input',\n formlyType: 'input',\n formlySubtype: 'password',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n var defaultReturnMsg = 'this Password field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9wYXNzd29yZC9jb25maWcvcGFzc3dvcmQuY29uZmlnLmpzPzY4YjMiXSwibmFtZXMiOlsiUGFzc3dvcmRDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiZm9ybWx5VmFsaWRhdGlvbiIsIm1lc3NhZ2VzIiwicmVxdWlyZWQiLCJ2aWV3VmFsdWUiLCJtb2RlbFZhbHVlIiwic2NvcGUiLCJkZWZhdWx0UmV0dXJuTXNnIiwicmV0dXJuTXNnIiwidG8iLCJsYWJlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFNQSwwQ0FBdUI7QUFDbENDLE1BQUksVUFEOEI7QUFFbENDLFFBQU0sVUFGNEI7QUFHbENDLFlBQVUsVUFId0I7QUFJbENDLFNBQU8sT0FKMkI7QUFLbENDLGNBQVksT0FMc0I7QUFNbENDLGlCQUFlLFVBTm1CO0FBT2xDQyxlQUFhLEVBUHFCO0FBUWxDQyxrQkFBZ0IsS0FSa0I7QUFTbENDLHFCQUFtQixFQVRlO0FBVWxDQyxpQkFBZSxFQVZtQjtBQVdsQ0MsOEJBQTRCLEVBWE07QUFZbENDLG9CQUFrQixFQVpnQjtBQWFsQ0Msb0JBQWtCO0FBQ2hCQyxjQUFVO0FBQ1JDLGdCQUFVLGtCQUFDQyxTQUFELEVBQVlDLFVBQVosRUFBd0JDLEtBQXhCLEVBQWtDO0FBQzFDLFlBQU1DLG1CQUFtQixpQ0FBekI7QUFDQSxZQUFNQyxZQUFhLE9BQU9GLE1BQU1HLEVBQU4sQ0FBU0MsS0FBaEIsS0FBMEIsV0FBM0IsR0FBNENKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxLQUFtQixFQUFwQixHQUEwQkosTUFBTUcsRUFBTixDQUFTQyxLQUFULEdBQWlCLGNBQTNDLEdBQTRESCxnQkFBdkcsR0FBMkhBLGdCQUE3STtBQUNBLGVBQU9DLFNBQVA7QUFDRDtBQUxPO0FBRE07QUFiZ0IsQ0FBN0IiLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUGFzc3dvcmRDb25maWcgPSAgICAgICB7XG4gIGlkOiAnUGFzc3dvcmQnLFxuICBuYW1lOiAnUGFzc3dvcmQnLFxuICBzdWJ0aXRsZTogJ1Bhc3N3b3JkJyxcbiAgZ3JvdXA6ICdpbnB1dCcsXG4gIGZvcm1seVR5cGU6ICdpbnB1dCcsXG4gIGZvcm1seVN1YnR5cGU6ICdwYXNzd29yZCcsXG4gIGZvcm1seUxhYmVsOiAnJyxcbiAgZm9ybWx5UmVxdWlyZWQ6IGZhbHNlLFxuICBmb3JtbHlEZXNjcmlwdGlvbjogJycsXG4gIGZvcm1seU9wdGlvbnM6IFtdICxcbiAgZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXM6IHt9LFxuICBmb3JtbHlWYWxpZGF0b3JzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdGlvbjoge1xuICAgIG1lc3NhZ2VzOiB7XG4gICAgICByZXF1aXJlZDogKHZpZXdWYWx1ZSwgbW9kZWxWYWx1ZSwgc2NvcGUpID0+IHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFJldHVybk1zZyA9ICd0aGlzIFBhc3N3b3JkIGZpZWxkIGlzIHJlcXVpcmVkJztcbiAgICAgICAgY29uc3QgcmV0dXJuTXNnID0gKHR5cGVvZiBzY29wZS50by5sYWJlbCAhPT0gJ3VuZGVmaW5lZCcpID8gKChzY29wZS50by5sYWJlbCAhPT0gJycpID8gc2NvcGUudG8ubGFiZWwgKyAnIGlzIHJlcXVpcmVkJyA6IGRlZmF1bHRSZXR1cm5Nc2cpIDogZGVmYXVsdFJldHVybk1zZztcbiAgICAgICAgcmV0dXJuIHJldHVybk1zZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9wYXNzd29yZC9jb25maWcvcGFzc3dvcmQuY29uZmlnLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 34 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_PASSWORD_CONTROL_COMPONENT = exports.EDIT_PASSWORD_CONTROL_COMPONENT = 'editPasswordControl';\n\nvar editPasswordControlComponent = exports.editPasswordControlComponent = {\n template: '\\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n nyaSelect: '='\n },\n controller: (_temp = _class = function editPasswordControlController() {\n //\n\n _classCallCheck(this, editPasswordControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editeditPasswordModuleName = 'stepway.editPasswordControl.module';\n\nexports.default = angular.module(editeditPasswordModuleName, []).component(EDIT_PASSWORD_CONTROL_COMPONENT, editPasswordControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9wYXNzd29yZC9lZGl0UGFzc3dvcmQvZWRpdFBhc3N3b3JkLmNvbXBvbmVudC5qcz8zYjA2Il0sIm5hbWVzIjpbIkVESVRfUEFTU1dPUkRfQ09OVFJPTF9DT01QT05FTlQiLCJlZGl0UGFzc3dvcmRDb250cm9sQ29tcG9uZW50IiwidGVtcGxhdGUiLCJiaW5kaW5ncyIsIm55YVNlbGVjdCIsImNvbnRyb2xsZXIiLCIkaW5qZWN0IiwiZWRpdGVkaXRQYXNzd29yZE1vZHVsZU5hbWUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sSUFBTUEsNEVBQWtDLHFCQUF4Qzs7QUFFQSxJQUFNQyxzRUFBK0I7QUFDMUNDLDhuSUFEMEM7QUFpSTFDQyxZQUFVO0FBQ1JDLGVBQVc7QUFESCxHQWpJZ0M7QUFvSTFDQyxnQ0FHRSx5Q0FBYztBQUNaOztBQURZO0FBRWIsR0FMSCxTQUVTQyxPQUZULEdBRW1CLEVBRm5CO0FBcEkwQyxDQUFyQzs7QUE2SVAsSUFBTUMsNkJBQTZCLG9DQUFuQzs7a0JBRWVDLFFBQ0VDLE1BREYsQ0FDU0YsMEJBRFQsRUFDcUMsRUFEckMsRUFFRUcsU0FGRixDQUVZViwrQkFGWixFQUU2Q0MsNEJBRjdDLEMiLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRURJVF9QQVNTV09SRF9DT05UUk9MX0NPTVBPTkVOVCA9ICdlZGl0UGFzc3dvcmRDb250cm9sJztcblxuZXhwb3J0IGNvbnN0IGVkaXRQYXNzd29yZENvbnRyb2xDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPGg1IGNsYXNzPVwiZ3JleVRleHRcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCI+PC9pPlxuICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICB7eydQUkVWSUVXX1RBQicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9oNT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoci8+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGZvcj1cImlucHV0UGFzc3dvcmRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWwgdGV4dENvbnRyb2xMYWJlbFwiPlxuICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsfX1cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBuZy1pZj1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHRDb250cm9sTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIGlkPVwiaW5wdXRQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVBsYWNlaG9sZGVyfX1cIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlbHAtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb259fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJncmV5VGV4dFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbC1zcXVhcmUtb1wiPjwvaT5cbiAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGhyLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dExhYmVsVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydMQUJFTF9URVhUJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsXCJcbiAgICAgICAgICAgICAgaWQ9XCJpbnB1dFRleHRMYWJlbFVwZGF0ZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snQUREX0VESVRfTEFCRUxfSEVSRScgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dHBsYWNlaG9sZGVyVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydQTEFDRUhPTERFUicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0cGxhY2Vob2xkZXJVcGRhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FERF9FRElUX1BMQUNFSE9MRCcgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydSRVFVSVJFRCcgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveENzc0NvcnJlY3Rpb25cIj5cbiAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgaWQ9XCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FEREVESVRfREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzOiB7XG4gICAgbnlhU2VsZWN0OiAnPSdcbiAgfSxcbiAgY29udHJvbGxlcjpcbiAgY2xhc3MgZWRpdFBhc3N3b3JkQ29udHJvbENvbnRyb2xsZXIge1xuICAgIHN0YXRpYyAkaW5qZWN0ID0gW107XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAvL1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgZWRpdGVkaXRQYXNzd29yZE1vZHVsZU5hbWUgPSAnc3RlcHdheS5lZGl0UGFzc3dvcmRDb250cm9sLm1vZHVsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAubW9kdWxlKGVkaXRlZGl0UGFzc3dvcmRNb2R1bGVOYW1lLCBbXSlcbiAgICAgICAgICAgICAgICAuY29tcG9uZW50KEVESVRfUEFTU1dPUkRfQ09OVFJPTF9DT01QT05FTlQsIGVkaXRQYXNzd29yZENvbnRyb2xDb21wb25lbnQpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvcGFzc3dvcmQvZWRpdFBhc3N3b3JkL2VkaXRQYXNzd29yZC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 35 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar RadioConfig = exports.RadioConfig = {\n id: 'Radio',\n name: 'Radio',\n subtitle: 'Radio',\n options: [],\n group: 'Radio',\n formlyType: 'radio',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> '
is required '\n //-> or if not exists or empty just 'this field is required'\n var defaultReturnMsg = 'this Password field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yYWRpby9jb25maWcvc3RlcHdheS5yYWRpby5jb25maWcuanM/NThiMiJdLCJuYW1lcyI6WyJSYWRpb0NvbmZpZyIsImlkIiwibmFtZSIsInN1YnRpdGxlIiwib3B0aW9ucyIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiZm9ybWx5VmFsaWRhdGlvbiIsIm1lc3NhZ2VzIiwicmVxdWlyZWQiLCJ2aWV3VmFsdWUiLCJtb2RlbFZhbHVlIiwic2NvcGUiLCJkZWZhdWx0UmV0dXJuTXNnIiwicmV0dXJuTXNnIiwidG8iLCJsYWJlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFNQSxvQ0FBb0I7QUFDL0JDLE1BQUksT0FEMkI7QUFFL0JDLFFBQU0sT0FGeUI7QUFHL0JDLFlBQVUsT0FIcUI7QUFJL0JDLFdBQVMsRUFKc0I7QUFLL0JDLFNBQU8sT0FMd0I7QUFNL0JDLGNBQVksT0FObUI7QUFPL0JDLGlCQUFlLEVBUGdCO0FBUS9CQyxlQUFhLEVBUmtCO0FBUy9CQyxrQkFBZ0IsS0FUZTtBQVUvQkMscUJBQW1CLEVBVlk7QUFXL0JDLGlCQUFlLEVBWGdCO0FBWS9CQyw4QkFBNEIsRUFaRztBQWEvQkMsb0JBQWtCLEVBYmE7QUFjL0JDLG9CQUFrQjtBQUNoQkMsY0FBVTtBQUNSQyxnQkFBVSxrQkFBU0MsU0FBVCxFQUFvQkMsVUFBcEIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLFlBQU1DLG1CQUFtQixpQ0FBekI7QUFDQSxZQUFNQyxZQUFhLE9BQU9GLE1BQU1HLEVBQU4sQ0FBU0MsS0FBaEIsS0FBMEIsV0FBM0IsR0FBNENKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxLQUFtQixFQUFwQixHQUEwQkosTUFBTUcsRUFBTixDQUFTQyxLQUFULEdBQWlCLGNBQTNDLEdBQTRESCxnQkFBdkcsR0FBMkhBLGdCQUE3STtBQUNBLGVBQU9DLFNBQVA7QUFDRDtBQVJPO0FBRE07QUFkYSxDQUExQiIsImZpbGUiOiIzNS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBSYWRpb0NvbmZpZyA9ICAgICAgIHtcbiAgaWQ6ICdSYWRpbycsXG4gIG5hbWU6ICdSYWRpbycsXG4gIHN1YnRpdGxlOiAnUmFkaW8nLFxuICBvcHRpb25zOiBbXSxcbiAgZ3JvdXA6ICdSYWRpbycsXG4gIGZvcm1seVR5cGU6ICdyYWRpbycsXG4gIGZvcm1seVN1YnR5cGU6ICcnLFxuICBmb3JtbHlMYWJlbDogJycsXG4gIGZvcm1seVJlcXVpcmVkOiBmYWxzZSxcbiAgZm9ybWx5RGVzY3JpcHRpb246ICcnICxcbiAgZm9ybWx5T3B0aW9uczogW10sXG4gIGZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdG9yczoge30sXG4gIGZvcm1seVZhbGlkYXRpb246IHtcbiAgICBtZXNzYWdlczoge1xuICAgICAgcmVxdWlyZWQ6IGZ1bmN0aW9uKHZpZXdWYWx1ZSwgbW9kZWxWYWx1ZSwgc2NvcGUpIHtcbiAgICAgICAgLy9yZXR1cm4gYSByZXF1aXJlZCB2YWxpZGF0aW9uIG1lc3NhZ2UgOlxuICAgICAgICAvLy0+ICc8bGFiZWwgYXMgbmFtZT4gaXMgcmVxdWlyZWQgJ1xuICAgICAgICAvLy0+IG9yIGlmIG5vdCBleGlzdHMgb3IgZW1wdHkganVzdCAndGhpcyBmaWVsZCBpcyByZXF1aXJlZCdcbiAgICAgICAgY29uc3QgZGVmYXVsdFJldHVybk1zZyA9ICd0aGlzIFBhc3N3b3JkIGZpZWxkIGlzIHJlcXVpcmVkJztcbiAgICAgICAgY29uc3QgcmV0dXJuTXNnID0gKHR5cGVvZiBzY29wZS50by5sYWJlbCAhPT0gJ3VuZGVmaW5lZCcpID8gKChzY29wZS50by5sYWJlbCAhPT0gJycpID8gc2NvcGUudG8ubGFiZWwgKyAnIGlzIHJlcXVpcmVkJyA6IGRlZmF1bHRSZXR1cm5Nc2cpIDogZGVmYXVsdFJldHVybk1zZztcbiAgICAgICAgcmV0dXJuIHJldHVybk1zZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yYWRpby9jb25maWcvc3RlcHdheS5yYWRpby5jb25maWcuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 36 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.editRadioControlComponent = exports.EDIT_RADIO_CONTROL_COMPONENT = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _stepwayEditRadioTemplate = __webpack_require__(37);\n\nvar _stepwayEditRadioTemplate2 = _interopRequireDefault(_stepwayEditRadioTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_RADIO_CONTROL_COMPONENT = exports.EDIT_RADIO_CONTROL_COMPONENT = 'editRadioControl';\n\nvar editRadioControlComponent = exports.editRadioControlComponent = {\n template: _stepwayEditRadioTemplate2.default,\n bindings: {\n nyaSelect: '=',\n radioRowCollection: '=',\n newOptionRadio: '=',\n addNewOptionRadio: '&',\n upThisRadioRow: '&',\n downThisRadioRow: '&',\n removeRadioRow: '&'\n },\n controller: function () {\n function editRadioControlController() {\n //\n\n _classCallCheck(this, editRadioControlController);\n }\n\n _createClass(editRadioControlController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return editRadioControlController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yYWRpby9lZGl0UmFkaW8vc3RlcHdheS5lZGl0UmFkaW8uY29tcG9uZW50LmpzPzQyODMiXSwibmFtZXMiOlsiRURJVF9SQURJT19DT05UUk9MX0NPTVBPTkVOVCIsImVkaXRSYWRpb0NvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0IiwicmFkaW9Sb3dDb2xsZWN0aW9uIiwibmV3T3B0aW9uUmFkaW8iLCJhZGROZXdPcHRpb25SYWRpbyIsInVwVGhpc1JhZGlvUm93IiwiZG93blRoaXNSYWRpb1JvdyIsInJlbW92ZVJhZGlvUm93IiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRU8sSUFBTUEsc0VBQStCLGtCQUFyQzs7QUFFQSxJQUFNQyxnRUFBNEI7QUFDdkNDLDhDQUR1QztBQUV2Q0MsWUFBZ0I7QUFDZEMsZUFBb0IsR0FETjtBQUVkQyx3QkFBb0IsR0FGTjtBQUdkQyxvQkFBb0IsR0FITjtBQUlkQyx1QkFBb0IsR0FKTjtBQUtkQyxvQkFBb0IsR0FMTjtBQU1kQyxzQkFBb0IsR0FOTjtBQU9kQyxvQkFBb0I7QUFQTixHQUZ1QjtBQVd2Q0M7QUFFRSwwQ0FBYztBQUNaOztBQURZO0FBRWI7O0FBSkg7QUFBQTtBQUFBLDBCQU11QjtBQUNuQixlQUFPLEVBQVA7QUFDRDtBQVJIOztBQUFBO0FBQUE7QUFYdUMsQ0FBbEMiLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZWRpdFJhZGlvQ29udHJvbFRlbXBsYXRlIGZyb20gJy4vc3RlcHdheS5lZGl0UmFkaW8udGVtcGxhdGUuaHRtbCc7XG5cbmV4cG9ydCBjb25zdCBFRElUX1JBRElPX0NPTlRST0xfQ09NUE9ORU5UID0gJ2VkaXRSYWRpb0NvbnRyb2wnO1xuXG5leHBvcnQgY29uc3QgZWRpdFJhZGlvQ29udHJvbENvbXBvbmVudCA9IHtcbiAgdGVtcGxhdGUgICAgICA6IGVkaXRSYWRpb0NvbnRyb2xUZW1wbGF0ZSxcbiAgYmluZGluZ3MgICAgICA6IHtcbiAgICBueWFTZWxlY3Q6ICAgICAgICAgICc9JyxcbiAgICByYWRpb1Jvd0NvbGxlY3Rpb246ICc9JyxcbiAgICBuZXdPcHRpb25SYWRpbzogICAgICc9JyxcbiAgICBhZGROZXdPcHRpb25SYWRpbzogICcmJyxcbiAgICB1cFRoaXNSYWRpb1JvdzogICAgICcmJyxcbiAgICBkb3duVGhpc1JhZGlvUm93OiAgICcmJyxcbiAgICByZW1vdmVSYWRpb1JvdzogICAgICcmJ1xuICB9LFxuICBjb250cm9sbGVyICAgIDpcbiAgY2xhc3MgZWRpdFJhZGlvQ29udHJvbENvbnRyb2xsZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgLy9cbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0ICRpbmplY3QoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvcmFkaW8vZWRpdFJhZGlvL3N0ZXB3YXkuZWRpdFJhZGlvLmNvbXBvbmVudC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 37 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n \\n {{'ADD_NEW_RADIO' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n {{'EDIT_REMOVE_RADIO' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yYWRpby9lZGl0UmFkaW8vc3RlcHdheS5lZGl0UmFkaW8udGVtcGxhdGUuaHRtbD82MWE2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVPQUF1TyxjQUFjLDJCQUEyQiw4UUFBOFEsMkNBQTJDLHllQUF5ZSwwQkFBMEIsNkZBQTZGLGlCQUFpQixvR0FBb0csaURBQWlELDhVQUE4VSxjQUFjLCtCQUErQiw4UEFBOFAsNkJBQTZCLDJWQUEyVixtQ0FBbUMsbVJBQW1SLG1CQUFtQiwyUkFBMlIsaUNBQWlDLDBZQUEwWSxnQ0FBZ0MsaVVBQWlVLHFCQUFxQix5RkFBeUYsc0JBQXNCLDBXQUEwVywrQkFBK0IsaWRBQWlkLFFBQVEsK0ZBQStGLGlCQUFpQiwwUUFBMFEsY0FBYyx3UEFBd1AsY0FBYyx1UEFBdVAsY0FBYyxpakJBQWlqQiwwQkFBMEIsa1NBQWtTLG1DQUFtQyxnVEFBZ1Qsd0JBQXdCLG1JQUFtSSxpZkFBaWYsMkJBQTJCLDhTQUE4UyxtQ0FBbUMiLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1leWVcXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIHt7J1BSRVZJRVdfVEFCJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvaDU+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8aHIvPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgPGxhYmVsXFxuICAgICAgICAgICAgZm9yPVxcXCJiYXNpY1NlbGVjdFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiY29udHJvbC1sYWJlbCB0ZXh0Q29udHJvbExhYmVsXFxcIj5cXG4gICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsfX1cXG4gICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgbmctaWY9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHRDb250cm9sTGFiZWxcXFwiPlxcbiAgICAgICAgICAgICAgKlxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICBjbGFzcz1cXFwicmFkaW9cXFwiXFxuICAgICAgICAgICAgICBuZy1yZXBlYXQ9XFxcInJhZGlvUm93IGluICRjdHJsLnJhZGlvUm93Q29sbGVjdGlvbi5yb3dzXFxcIj5cXG4gICAgICAgICAgICAgIDxsYWJlbD5cXG4gICAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgICAgdHlwZT1cXFwicmFkaW9cXFwiXFxuICAgICAgICAgICAgICAgICAgbmFtZT1cXFwib3B0aW9uc1JhZGlvc1xcXCJcXG4gICAgICAgICAgICAgICAgICBpZD1cXFwie3snb3B0aW9uc1JhZGlvLScgKyAkaW5kZXh9fVxcXCJcXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cXFwiJGluZGV4XFxcIlxcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9XFxcIlxcXCI+XFxuICAgICAgICAgICAgICAgICAge3tyYWRpb1Jvdy5vcHRpb259fVxcbiAgICAgICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwiaGVscC1ibG9ja1xcXCI+XFxuICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9ufX1cXG4gICAgICAgICAgICA8L3A+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1XFxuICAgICAgICAgIGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGhyLz5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbGctMyBjb2wtbWQtM1xcXCI+XFxuICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgZm9yPVxcXCJyYWRpb1Jvd0NvbGxlY3Rpb25cXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCIgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAge3snQUREX05FV19SQURJTycgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1zbS05IGNvbC14cy05IGNvbC1tZC05IGNvbC1sZy05XFxcIj5cXG4gICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgICAgaWQ9XFxcImlucHV0QWRkTmV3UmFkaW9PcHRpb25cXFwiXFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwie3snQUREX1JBRElPX1BMQUNFSE9MRCcgfCB0cmFuc2xhdGV9fVxcXCJcXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVxcXCIkY3RybC5uZXdPcHRpb25SYWRpby5zYWlzaWVcXFwiPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLXNtLTMgY29sLXhzLTMgY29sLW1kLTMgY29sLWxnLTNcXFwiPlxcbiAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnlcXFwiXFxuICAgICAgICAgICAgICBuZy1jbGljaz1cXFwiJGN0cmwuYWRkTmV3T3B0aW9uUmFkaW8oKVxcXCI+XFxuICAgICAgICAgICAgICB7eydBREQnIHwgdHJhbnNsYXRlfX1cXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLWxnLTMgY29sLW1kLTNcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwicmFkaW9Sb3dDb2xsZWN0aW9uXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFxcXCI+XFxuICAgICAgICAgIHt7J0VESVRfUkVNT1ZFX1JBRElPJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvbGFiZWw+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcy1cXFwiY29sLWxnLTEyIGNvbC1tZC0xMiBjb2wtc20tMTIgY29sLXhzLTEyXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb250YWluZXJcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdiBuZy1zaG93PVxcXCIkY3RybC5yYWRpb1Jvd0NvbGxlY3Rpb24ucm93cy5sZW5ndGggPT09IDBcXFwiPlxcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XFxcInRleHQtY2VudGVyIGdyZXlUZXh0XFxcIj5cXG4gICAgICAgICAgICAgICAgICA8ZW0+XFxuICAgICAgICAgICAgICAgICAgICAtIHt7J05PX1JBRElPX0FERF9ORVcnIHwgdHJhbnNsYXRlfX0gLVxcbiAgICAgICAgICAgICAgICAgIDwvZW0+XFxuICAgICAgICAgICAgICAgIDwvaDU+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDx0YWJsZVxcbiAgICAgICAgICAgICAgICBuZy1pZj1cXFwiJGN0cmwucmFkaW9Sb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID4gMFxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInRhYmxlIHRhYmxlLXN0cmlwZWRcXFwiPlxcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XFxuICAgICAgICAgICAgICAgIDx0cj5cXG4gICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XFxcIjIwXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIHt7J09SREVSJyB8IHRyYW5zbGF0ZX19XFxuICAgICAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XFxcIjU1XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIHt7J09QVElPTicgfCB0cmFuc2xhdGV9fVxcbiAgICAgICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVxcXCIyNVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgICAgICAgPHRyPlxcbiAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cXFwiMjBcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVxcXCI1NVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgICAgICAgbmctbW9kZWw9XFxcIiRjdHJsLnJhZGlvRmlsdGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwie3snU0VBUkNIXzRfT1BUSU9OJyB8IHRyYW5zbGF0ZX19XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiaW5wdXQtc20gZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVxcXCJzZWFyY2hcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVxcXCIyNVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cXG4gICAgICAgICAgICAgICAgPHRib2R5PlxcbiAgICAgICAgICAgICAgICAgIDx0ciBuZy1yZXBlYXQ9XFxcInJhZGlvUm93IGluICRjdHJsLnJhZGlvUm93Q29sbGVjdGlvbi5yb3dzIHwgZmlsdGVyOnJhZGlvRmlsdGVyIGFzIHJhZGlvUm93XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBzdC1yYXRpbz1cXFwiMjBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICB7eyRpbmRleH19XFxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgICAgICAgPHRkIHN0LXJhdGlvPVxcXCI1NVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgIHt7cmFkaW9Sb3cub3B0aW9ufX1cXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICAgICAgICA8dGQgc3QtcmF0aW89XFxcIjI1XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicHVsbC1yaWdodFxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVxcXCIkY3RybC51cFRoaXNSYWRpb1Jvdyh7aW5kZXg6ICRpbmRleH0pXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1hcnJvdy11cFxcXCI+PC9pPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cXFwiJGN0cmwuZG93blRoaXNSYWRpb1Jvdyh7aW5kZXg6ICRpbmRleH0pXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1hcnJvdy1kb3duXFxcIj48L2k+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImJ0biBidG4tZGFuZ2VyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XFxcIiRjdHJsLnJlbW92ZVJhZGlvUm93KHtpbmRleDogJGluZGV4fSlcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLXRyYXNoLW9cXFwiPjwvaT5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XFxuICAgICAgICAgICAgICA8L3RhYmxlPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxoci8+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dExhYmVsVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPnt7J0xBQkVMX1RFWFQnIHwgdHJhbnNsYXRlfX0gOlxcbiAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbGctOVxcXCI+XFxuICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVxcXCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlMYWJlbFxcXCJcXG4gICAgICAgICAgICAgIGlkPVxcXCJpbnB1dFRleHRMYWJlbFVwZGF0ZVxcXCJcXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJ7eydBRERfRURJVF9MQUJFTF9IRVJFJyB8IHRyYW5zbGF0ZX19XFxcIj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICAgICAgICAgIDxsYWJlbFxcbiAgICAgICAgICAgIGZvcj1cXFwiaW5wdXRUZXh0UmVxdWlyZWRVcGRhdGVcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFxcXCI+e3snUkVRVUlSRUQnIHwgdHJhbnNsYXRlfX0gOlxcbiAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbGctOVxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY2hlY2tib3hDc3NDb3JyZWN0aW9uXFxcIj5cXG4gICAgICAgICAgICAgICZuYnNwO1xcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgICBuZy1tb2RlbD1cXFwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UmVxdWlyZWRcXFwiXFxuICAgICAgICAgICAgICBpZD1cXFwiaW5wdXRUZXh0UmVxdWlyZWRVcGRhdGVcXFwiPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgPGxhYmVsXFxuICAgICAgICAgICAgZm9yPVxcXCJpbnB1dFRleHREZXNjcmlwdGlvblVwZGF0ZVxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj57eydERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1sZy05XFxcIj5cXG4gICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgICAgbmctbW9kZWw9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9uXFxcIlxcbiAgICAgICAgICAgICAgaWQ9XFxcImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcInt7J0FEREVESVRfREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX1cXFwiPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbjwvZGl2PlxcblwiXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yYWRpby9lZGl0UmFkaW8vc3RlcHdheS5lZGl0UmFkaW8udGVtcGxhdGUuaHRtbFxuLy8gbW9kdWxlIGlkID0gMzdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 38 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayEditRadio = __webpack_require__(36);\n\nvar editRadioControlModuleName = 'stepway.editRadioControl.module';\n\nexports.default = angular.module(editRadioControlModuleName, []).component(_stepwayEditRadio.EDIT_RADIO_CONTROL_COMPONENT, _stepwayEditRadio.editRadioControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yYWRpby9lZGl0UmFkaW8vc3RlcHdheS5lZGl0UmFkaW8ubW9kdWxlLmpzPzM5NGQiXSwibmFtZXMiOlsiZWRpdFJhZGlvQ29udHJvbE1vZHVsZU5hbWUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFLQSxJQUFNQSw2QkFBNkIsaUNBQW5DOztrQkFFZUMsUUFDRUMsTUFERixDQUNTRiwwQkFEVCxFQUNxQyxFQURyQyxFQUVFRyxTQUZGLDZGIiwiZmlsZSI6IjM4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZWRpdFJhZGlvQ29udHJvbENvbXBvbmVudCxcbiAgRURJVF9SQURJT19DT05UUk9MX0NPTVBPTkVOVFxufSBmcm9tICcuL3N0ZXB3YXkuZWRpdFJhZGlvLmNvbXBvbmVudCc7XG5cbmNvbnN0IGVkaXRSYWRpb0NvbnRyb2xNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdFJhZGlvQ29udHJvbC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShlZGl0UmFkaW9Db250cm9sTW9kdWxlTmFtZSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChFRElUX1JBRElPX0NPTlRST0xfQ09NUE9ORU5ULCBlZGl0UmFkaW9Db250cm9sQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3JhZGlvL2VkaXRSYWRpby9zdGVwd2F5LmVkaXRSYWRpby5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 39 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar RichTextEditorConfig = exports.RichTextEditorConfig = {\n id: 'RichTextEditor',\n name: 'RichTextEditor',\n subtitle: 'RichTextEditor',\n group: 'Textarea',\n formlyType: 'richEditor',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> '
is required '\n //-> or if not exists or empty just 'this field is required'\n var defaultReturnMsg = 'this RichTextEditor field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yaWNoVGV4dEVkaXRvci9jb25maWcvc3RlcHdheS5yaWNoVGV4dEVkaXRvci5jb25maWcuanM/NTU1YSJdLCJuYW1lcyI6WyJSaWNoVGV4dEVkaXRvckNvbmZpZyIsImlkIiwibmFtZSIsInN1YnRpdGxlIiwiZ3JvdXAiLCJmb3JtbHlUeXBlIiwiZm9ybWx5U3VidHlwZSIsImZvcm1seUxhYmVsIiwiZm9ybWx5UmVxdWlyZWQiLCJmb3JtbHlEZXNjcmlwdGlvbiIsImZvcm1seU9wdGlvbnMiLCJmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyIsImZvcm1seVZhbGlkYXRvcnMiLCJmb3JtbHlWYWxpZGF0aW9uIiwibWVzc2FnZXMiLCJyZXF1aXJlZCIsInZpZXdWYWx1ZSIsIm1vZGVsVmFsdWUiLCJzY29wZSIsImRlZmF1bHRSZXR1cm5Nc2ciLCJyZXR1cm5Nc2ciLCJ0byIsImxhYmVsIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFPLElBQU1BLHNEQUE2QjtBQUN4Q0MsTUFBSSxnQkFEb0M7QUFFeENDLFFBQU0sZ0JBRmtDO0FBR3hDQyxZQUFVLGdCQUg4QjtBQUl4Q0MsU0FBTyxVQUppQztBQUt4Q0MsY0FBWSxZQUw0QjtBQU14Q0MsaUJBQWUsRUFOeUI7QUFPeENDLGVBQWEsRUFQMkI7QUFReENDLGtCQUFnQixLQVJ3QjtBQVN4Q0MscUJBQW1CLEVBVHFCO0FBVXhDQyxpQkFBZSxFQVZ5QjtBQVd4Q0MsOEJBQTRCLEVBWFk7QUFZeENDLG9CQUFrQixFQVpzQjtBQWF4Q0Msb0JBQWtCO0FBQ2hCQyxjQUFVO0FBQ1JDLGdCQUFVLGtCQUFTQyxTQUFULEVBQW9CQyxVQUFwQixFQUFnQ0MsS0FBaEMsRUFBdUM7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsWUFBTUMsbUJBQW9CLHVDQUExQjtBQUNBLFlBQU1DLFlBQXFCLE9BQU9GLE1BQU1HLEVBQU4sQ0FBU0MsS0FBaEIsS0FBMEIsV0FBM0IsR0FBNENKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxLQUFtQixFQUFwQixHQUEwQkosTUFBTUcsRUFBTixDQUFTQyxLQUFULEdBQWlCLGNBQTNDLEdBQTRESCxnQkFBdkcsR0FBMkhBLGdCQUFySjtBQUNBLGVBQU9DLFNBQVA7QUFDRDtBQVJPO0FBRE07QUFic0IsQ0FBbkMiLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUmljaFRleHRFZGl0b3JDb25maWcgPSAgICAgICB7XG4gIGlkOiAnUmljaFRleHRFZGl0b3InLFxuICBuYW1lOiAnUmljaFRleHRFZGl0b3InLFxuICBzdWJ0aXRsZTogJ1JpY2hUZXh0RWRpdG9yJyxcbiAgZ3JvdXA6ICdUZXh0YXJlYScsXG4gIGZvcm1seVR5cGU6ICdyaWNoRWRpdG9yJyxcbiAgZm9ybWx5U3VidHlwZTogJycsXG4gIGZvcm1seUxhYmVsOiAnJyxcbiAgZm9ybWx5UmVxdWlyZWQ6IGZhbHNlLFxuICBmb3JtbHlEZXNjcmlwdGlvbjogJycsXG4gIGZvcm1seU9wdGlvbnM6IFtdLFxuICBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllczoge30sXG4gIGZvcm1seVZhbGlkYXRvcnM6IHt9LFxuICBmb3JtbHlWYWxpZGF0aW9uOiB7XG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHJlcXVpcmVkOiBmdW5jdGlvbih2aWV3VmFsdWUsIG1vZGVsVmFsdWUsIHNjb3BlKSB7XG4gICAgICAgIC8vcmV0dXJuIGEgcmVxdWlyZWQgdmFsaWRhdGlvbiBtZXNzYWdlIDpcbiAgICAgICAgLy8tPiAnPGxhYmVsIGFzIG5hbWU+IGlzIHJlcXVpcmVkICdcbiAgICAgICAgLy8tPiBvciBpZiBub3QgZXhpc3RzIG9yIGVtcHR5IGp1c3QgJ3RoaXMgZmllbGQgaXMgcmVxdWlyZWQnXG4gICAgICAgIGNvbnN0IGRlZmF1bHRSZXR1cm5Nc2cgID0gJ3RoaXMgUmljaFRleHRFZGl0b3IgZmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgICBjb25zdCByZXR1cm5Nc2cgICAgICAgICA9ICh0eXBlb2Ygc2NvcGUudG8ubGFiZWwgIT09ICd1bmRlZmluZWQnKSA/ICgoc2NvcGUudG8ubGFiZWwgIT09ICcnKSA/IHNjb3BlLnRvLmxhYmVsICsgJyBpcyByZXF1aXJlZCcgOiBkZWZhdWx0UmV0dXJuTXNnKSA6IGRlZmF1bHRSZXR1cm5Nc2c7XG4gICAgICAgIHJldHVybiByZXR1cm5Nc2c7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvcmljaFRleHRFZGl0b3IvY29uZmlnL3N0ZXB3YXkucmljaFRleHRFZGl0b3IuY29uZmlnLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 40 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.editRichTextEditorControlComponent = exports.EDIT_RICH_TEXT_EDITOR_COMPONENT = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _stepwayEditRichTextEditorTemplate = __webpack_require__(41);\n\nvar _stepwayEditRichTextEditorTemplate2 = _interopRequireDefault(_stepwayEditRichTextEditorTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_RICH_TEXT_EDITOR_COMPONENT = exports.EDIT_RICH_TEXT_EDITOR_COMPONENT = 'editRichTextEditorControl';\n\nvar editRichTextEditorControlComponent = exports.editRichTextEditorControlComponent = {\n template: _stepwayEditRichTextEditorTemplate2.default,\n bindings: {\n nyaSelect: '='\n },\n controller: function () {\n function editRichTextEditorControlController() {\n //\n\n _classCallCheck(this, editRichTextEditorControlController);\n }\n\n _createClass(editRichTextEditorControlController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return editRichTextEditorControlController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yaWNoVGV4dEVkaXRvci9lZGl0UmljaFRleHRFZGl0b3Ivc3RlcHdheS5lZGl0UmljaFRleHRFZGl0b3IuY29tcG9uZW50LmpzP2Q3ZTIiXSwibmFtZXMiOlsiRURJVF9SSUNIX1RFWFRfRURJVE9SX0NPTVBPTkVOVCIsImVkaXRSaWNoVGV4dEVkaXRvckNvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0IiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRU8sSUFBTUEsNEVBQWtDLDJCQUF4Qzs7QUFFQSxJQUFNQyxrRkFBcUM7QUFDaERDLHVEQURnRDtBQUVoREMsWUFBZ0I7QUFDZEMsZUFBVztBQURHLEdBRmdDO0FBS2hEQztBQUVFLG1EQUFjO0FBQ1o7O0FBRFk7QUFFYjs7QUFKSDtBQUFBO0FBQUEsMEJBTXVCO0FBQ25CLGVBQU8sRUFBUDtBQUNEO0FBUkg7O0FBQUE7QUFBQTtBQUxnRCxDQUEzQyIsImZpbGUiOiI0MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlZGl0UmljaFRleHRFZGl0b3JDb250cm9sVGVtcGxhdGUgZnJvbSAnLi9zdGVwd2F5LmVkaXRSaWNoVGV4dEVkaXRvci50ZW1wbGF0ZS5odG1sJztcblxuZXhwb3J0IGNvbnN0IEVESVRfUklDSF9URVhUX0VESVRPUl9DT01QT05FTlQgPSAnZWRpdFJpY2hUZXh0RWRpdG9yQ29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0UmljaFRleHRFZGl0b3JDb250cm9sQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZSAgICAgIDogZWRpdFJpY2hUZXh0RWRpdG9yQ29udHJvbFRlbXBsYXRlLFxuICBiaW5kaW5ncyAgICAgIDoge1xuICAgIG55YVNlbGVjdDogJz0nXG4gIH0sXG4gIGNvbnRyb2xsZXIgICAgOlxuICBjbGFzcyBlZGl0UmljaFRleHRFZGl0b3JDb250cm9sQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAvL1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgJGluamVjdCgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yaWNoVGV4dEVkaXRvci9lZGl0UmljaFRleHRFZGl0b3Ivc3RlcHdheS5lZGl0UmljaFRleHRFZGl0b3IuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 41 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n\\n\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yaWNoVGV4dEVkaXRvci9lZGl0UmljaFRleHRFZGl0b3Ivc3RlcHdheS5lZGl0UmljaFRleHRFZGl0b3IudGVtcGxhdGUuaHRtbD9hM2Y2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVPQUF1TyxjQUFjLDJCQUEyQixpUkFBaVIsMkNBQTJDLGdZQUFnWSxpREFBaUQsbVVBQW1VLGNBQWMsK0JBQStCLHljQUF5YyxpZEFBaWQsMkJBQTJCLDhSQUE4UixtQ0FBbUMiLCJmaWxlIjoiNDEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1leWVcXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIHt7J1BSRVZJRVdfVEFCJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvaDU+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8aHIvPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgPGxhYmVsXFxuICAgICAgICAgICAgZm9yPVxcXCJSaWNoVGV4dEVkaXRvclxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiY29udHJvbC1sYWJlbCB0ZXh0Q29udHJvbExhYmVsXFxcIj5cXG4gICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsfX1cXG4gICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgbmctaWY9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHRDb250cm9sTGFiZWxcXFwiPlxcbiAgICAgICAgICAgICAgKlxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgICA8dGV4dC1hbmd1bGFyXFxuICAgICAgICAgICAgICBuZy1tb2RlbD1cXFwiJGN0cmwubW9kZWxbb3B0aW9ucy5rZXldXFxcIj5cXG4gICAgICAgICAgICA8L3RleHQtYW5ndWxhcj5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwiaGVscC1ibG9ja1xcXCI+XFxuICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9ufX1cXG4gICAgICAgICAgICA8L3A+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGhyLz5cXG48IS0tIHJlcXVpcmVkIGNhbid0IGJlIGFwcGxpZWQgdG8gcmljaCB0ZXh0IGVkaXRvciAodGV4dEFuZ3VsYXIpIHJpZ2h0IG5vdyAtLT5cXG48IS0tPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5SZXF1aXJlZCA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLWxnLTlcXFwiPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjaGVja2JveENzc0NvcnJlY3Rpb25cXFwiPlxcbiAgICAgICAgICAgICZuYnNwO1xcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgbmctbW9kZWw9XFxcIm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXFxcIiBpZD1cXFwiaW5wdXRUZXh0UmVxdWlyZWRVcGRhdGVcXFwiPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj4tLT5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAge3snREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX0gOlxcbiAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1sZy05XFxcIj5cXG4gICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgIG5nLW1vZGVsPVxcXCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlEZXNjcmlwdGlvblxcXCJcXG4gICAgICAgICAgICBpZD1cXFwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcXFwiXFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcInt7J0FEREVESVRfREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX1cXFwiPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3JpY2hUZXh0RWRpdG9yL2VkaXRSaWNoVGV4dEVkaXRvci9zdGVwd2F5LmVkaXRSaWNoVGV4dEVkaXRvci50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSA0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 42 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayEditRichTextEditor = __webpack_require__(40);\n\nvar editRichTextEditorModuleName = 'stepway.editRichTextEditor.module';\n\nexports.default = angular.module(editRichTextEditorModuleName, []).component(_stepwayEditRichTextEditor.EDIT_RICH_TEXT_EDITOR_COMPONENT, _stepwayEditRichTextEditor.editRichTextEditorControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yaWNoVGV4dEVkaXRvci9lZGl0UmljaFRleHRFZGl0b3Ivc3RlcHdheS5lZGl0UmljaFRleHRFZGl0b3IubW9kdWxlLmpzPzgwZDEiXSwibmFtZXMiOlsiZWRpdFJpY2hUZXh0RWRpdG9yTW9kdWxlTmFtZSIsImFuZ3VsYXIiLCJtb2R1bGUiLCJjb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUtBLElBQU1BLCtCQUErQixtQ0FBckM7O2tCQUVlQyxRQUNFQyxNQURGLENBQ1NGLDRCQURULEVBQ3VDLEVBRHZDLEVBRUVHLFNBRkYsMkgiLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBlZGl0UmljaFRleHRFZGl0b3JDb250cm9sQ29tcG9uZW50LFxuICBFRElUX1JJQ0hfVEVYVF9FRElUT1JfQ09NUE9ORU5UXG59IGZyb20gJy4vc3RlcHdheS5lZGl0UmljaFRleHRFZGl0b3IuY29tcG9uZW50JztcblxuY29uc3QgZWRpdFJpY2hUZXh0RWRpdG9yTW9kdWxlTmFtZSA9ICdzdGVwd2F5LmVkaXRSaWNoVGV4dEVkaXRvci5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShlZGl0UmljaFRleHRFZGl0b3JNb2R1bGVOYW1lLCBbXSlcbiAgICAgICAgICAgICAgICAuY29tcG9uZW50KEVESVRfUklDSF9URVhUX0VESVRPUl9DT01QT05FTlQsIGVkaXRSaWNoVGV4dEVkaXRvckNvbnRyb2xDb21wb25lbnQpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvcmljaFRleHRFZGl0b3IvZWRpdFJpY2hUZXh0RWRpdG9yL3N0ZXB3YXkuZWRpdFJpY2hUZXh0RWRpdG9yLm1vZHVsZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 43 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar SubTitleConfig = exports.SubTitleConfig = {\n id: 'Subtitle',\n name: 'Subtitle',\n subtitle: 'no control',\n group: 'Decoration',\n formlyType: 'subTitle',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {}\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9zdWJUaXRsZS9jb25maWcvc3RlcHdheS5zdWJUaXRsZS5jb25maWcuanM/NWZjYiJdLCJuYW1lcyI6WyJTdWJUaXRsZUNvbmZpZyIsImlkIiwibmFtZSIsInN1YnRpdGxlIiwiZ3JvdXAiLCJmb3JtbHlUeXBlIiwiZm9ybWx5U3VidHlwZSIsImZvcm1seUxhYmVsIiwiZm9ybWx5UmVxdWlyZWQiLCJmb3JtbHlEZXNjcmlwdGlvbiIsImZvcm1seU9wdGlvbnMiLCJmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyIsImZvcm1seVZhbGlkYXRvcnMiLCJmb3JtbHlWYWxpZGF0aW9uIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFPLElBQU1BLDBDQUF1QjtBQUNsQ0MsTUFBSSxVQUQ4QjtBQUVsQ0MsUUFBTSxVQUY0QjtBQUdsQ0MsWUFBVSxZQUh3QjtBQUlsQ0MsU0FBTyxZQUoyQjtBQUtsQ0MsY0FBWSxVQUxzQjtBQU1sQ0MsaUJBQWUsRUFObUI7QUFPbENDLGVBQWEsRUFQcUI7QUFRbENDLGtCQUFnQixLQVJrQjtBQVNsQ0MscUJBQW1CLEVBVGU7QUFVbENDLGlCQUFlLEVBVm1CO0FBV2xDQyw4QkFBNEIsRUFYTTtBQVlsQ0Msb0JBQWtCLEVBWmdCO0FBYWxDQyxvQkFBa0I7QUFiZ0IsQ0FBN0IiLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU3ViVGl0bGVDb25maWcgPSAgICAgICB7XG4gIGlkOiAnU3VidGl0bGUnLFxuICBuYW1lOiAnU3VidGl0bGUnLFxuICBzdWJ0aXRsZTogJ25vIGNvbnRyb2wnLFxuICBncm91cDogJ0RlY29yYXRpb24nLFxuICBmb3JtbHlUeXBlOiAnc3ViVGl0bGUnLFxuICBmb3JtbHlTdWJ0eXBlOiAnJyxcbiAgZm9ybWx5TGFiZWw6ICcnLFxuICBmb3JtbHlSZXF1aXJlZDogZmFsc2UsXG4gIGZvcm1seURlc2NyaXB0aW9uOiAnJyxcbiAgZm9ybWx5T3B0aW9uczogW10gLFxuICBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllczoge30sXG4gIGZvcm1seVZhbGlkYXRvcnM6IHt9LFxuICBmb3JtbHlWYWxpZGF0aW9uOiB7fVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3N1YlRpdGxlL2NvbmZpZy9zdGVwd2F5LnN1YlRpdGxlLmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 44 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.editSubTitleControlComponent = exports.EDIT_SUBTITLE_CONTROL_COMPONENT = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _stepwayEditSubTitleTemplate = __webpack_require__(45);\n\nvar _stepwayEditSubTitleTemplate2 = _interopRequireDefault(_stepwayEditSubTitleTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_SUBTITLE_CONTROL_COMPONENT = exports.EDIT_SUBTITLE_CONTROL_COMPONENT = 'editSubTitleControl';\n\nvar editSubTitleControlComponent = exports.editSubTitleControlComponent = {\n template: _stepwayEditSubTitleTemplate2.default,\n bindings: {\n nyaSelect: '='\n },\n controller: function () {\n function editSubTitleControlController() {\n //\n\n _classCallCheck(this, editSubTitleControlController);\n }\n\n _createClass(editSubTitleControlController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return editSubTitleControlController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9zdWJUaXRsZS9lZGl0U3ViVGl0bGUvc3RlcHdheS5lZGl0U3ViVGl0bGUuY29tcG9uZW50LmpzPzc4NzgiXSwibmFtZXMiOlsiRURJVF9TVUJUSVRMRV9DT05UUk9MX0NPTVBPTkVOVCIsImVkaXRTdWJUaXRsZUNvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0IiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRU8sSUFBTUEsNEVBQWtDLHFCQUF4Qzs7QUFFQSxJQUFNQyxzRUFBK0I7QUFDMUNDLGlEQUQwQztBQUUxQ0MsWUFBZ0I7QUFDZEMsZUFBVztBQURHLEdBRjBCO0FBSzFDQztBQUVFLDZDQUFjO0FBQ1o7O0FBRFk7QUFFYjs7QUFKSDtBQUFBO0FBQUEsMEJBTXVCO0FBQ25CLGVBQU8sRUFBUDtBQUNEO0FBUkg7O0FBQUE7QUFBQTtBQUwwQyxDQUFyQyIsImZpbGUiOiI0NC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlZGl0U3ViVGl0bGVDb250cm9sVGVtcGxhdGUgZnJvbSAnLi9zdGVwd2F5LmVkaXRTdWJUaXRsZS50ZW1wbGF0ZS5odG1sJztcblxuZXhwb3J0IGNvbnN0IEVESVRfU1VCVElUTEVfQ09OVFJPTF9DT01QT05FTlQgPSAnZWRpdFN1YlRpdGxlQ29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0U3ViVGl0bGVDb250cm9sQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZSAgICAgIDogZWRpdFN1YlRpdGxlQ29udHJvbFRlbXBsYXRlLFxuICBiaW5kaW5ncyAgICAgIDoge1xuICAgIG55YVNlbGVjdDogJz0nXG4gIH0sXG4gIGNvbnRyb2xsZXIgICAgOlxuICBjbGFzcyBlZGl0U3ViVGl0bGVDb250cm9sQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAvL1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgJGluamVjdCgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9zdWJUaXRsZS9lZGl0U3ViVGl0bGUvc3RlcHdheS5lZGl0U3ViVGl0bGUuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 45 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9zdWJUaXRsZS9lZGl0U3ViVGl0bGUvc3RlcHdheS5lZGl0U3ViVGl0bGUudGVtcGxhdGUuaHRtbD80OTVmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9RQUFvUSxrQkFBa0IsMkJBQTJCLGtRQUFrUSxpREFBaUQsb1hBQW9YLGNBQWMsK0JBQStCLG1UQUFtVCw2QkFBNkIsMlJBQTJSLG9DQUFvQyIsImZpbGUiOiI0NS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG4gIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIj5cXG4gICAgICAgICAgICA8aDVcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgICAgICA8aSBjbGFzcz1cXFwiZmEgZmEtZXllXFxcIj48L2k+XFxuICAgICAgICAgICAgICAmbmJzcDtcXG4gICAgICAgICAgICAgIHt7J1BSRVZJRVdfVEFCJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgICAgICA8L2g1PlxcbiAgICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8aHIvPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIlxcXCI+XFxuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cXFwidGV4dC1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UGxhY2Vob2xkZXJ9fVxcbiAgICAgICAgICAgICAgICA8L2g0PlxcbiAgICAgICAgICAgICAgICA8aHIvPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG48L2Rpdj5cXG48ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG4gIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8aDVcXG4gICAgICAgICAgY2xhc3M9XFxcImdyZXlUZXh0XFxcIj5cXG4gICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLXBlbmNpbC1zcXVhcmUtb1xcXCI+PC9pPlxcbiAgICAgICAgICAmbmJzcDtcXG4gICAgICAgICAge3snRURJVF9QUk9QRVJUSUVTJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvaDU+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8aHIvPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcImlucHV0U3ViVGl0bGVUZXh0VXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAge3snU1VCVElUTEVfVEVYVCcgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLWxnLTlcXFwiPlxcbiAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgbmctbW9kZWw9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVBsYWNlaG9sZGVyXFxcIlxcbiAgICAgICAgICAgIGlkPVxcXCJpbnB1dFN1YlRpdGxlVGV4dFVwZGF0ZVxcXCJcXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwie3snQUREX0VESVRfU1VCVElMX0hFUkUnIHwgdHJhbnNsYXRlfX1cXFwiPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3N1YlRpdGxlL2VkaXRTdWJUaXRsZS9zdGVwd2F5LmVkaXRTdWJUaXRsZS50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSA0NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 46 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayEditSubTitle = __webpack_require__(44);\n\nvar editSubTitleModuleName = 'stepway.editSubTitleControl.module';\n\nexports.default = angular.module(editSubTitleModuleName, []).component(_stepwayEditSubTitle.EDIT_SUBTITLE_CONTROL_COMPONENT, _stepwayEditSubTitle.editSubTitleControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9zdWJUaXRsZS9lZGl0U3ViVGl0bGUvc3RlcHdheS5lZGl0U3ViVGl0bGUubW9kdWxlLmpzPzlmNTkiXSwibmFtZXMiOlsiZWRpdFN1YlRpdGxlTW9kdWxlTmFtZSIsImFuZ3VsYXIiLCJtb2R1bGUiLCJjb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUtBLElBQU1BLHlCQUF5QixvQ0FBL0I7O2tCQUVlQyxRQUNFQyxNQURGLENBQ1NGLHNCQURULEVBQ2lDLEVBRGpDLEVBRUVHLFNBRkYseUciLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBlZGl0U3ViVGl0bGVDb250cm9sQ29tcG9uZW50LFxuICBFRElUX1NVQlRJVExFX0NPTlRST0xfQ09NUE9ORU5UXG59IGZyb20gJy4vc3RlcHdheS5lZGl0U3ViVGl0bGUuY29tcG9uZW50JztcblxuY29uc3QgZWRpdFN1YlRpdGxlTW9kdWxlTmFtZSA9ICdzdGVwd2F5LmVkaXRTdWJUaXRsZUNvbnRyb2wubW9kdWxlJztcblxuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuICAgICAgICAgICAgICAgIC5tb2R1bGUoZWRpdFN1YlRpdGxlTW9kdWxlTmFtZSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChFRElUX1NVQlRJVExFX0NPTlRST0xfQ09NUE9ORU5ULCBlZGl0U3ViVGl0bGVDb250cm9sQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3N1YlRpdGxlL2VkaXRTdWJUaXRsZS9zdGVwd2F5LmVkaXRTdWJUaXRsZS5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 47 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar TextAreaConfig = exports.TextAreaConfig = {\n id: 'Texarea',\n name: 'Textarea',\n subtitle: 'Textarea',\n group: 'Textarea',\n formlyType: 'textarea',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> ' is required '\n //-> or if not exists or empty just 'this field is required'\n var defaultReturnMsg = 'this Textarea field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0QXJlYS9jb25maWcvc3RlcHdheS50ZXh0QXJlYS5jb25maWcuanM/ODJmYyJdLCJuYW1lcyI6WyJUZXh0QXJlYUNvbmZpZyIsImlkIiwibmFtZSIsInN1YnRpdGxlIiwiZ3JvdXAiLCJmb3JtbHlUeXBlIiwiZm9ybWx5U3VidHlwZSIsImZvcm1seUxhYmVsIiwiZm9ybWx5UmVxdWlyZWQiLCJmb3JtbHlEZXNjcmlwdGlvbiIsImZvcm1seU9wdGlvbnMiLCJmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyIsImZvcm1seVZhbGlkYXRvcnMiLCJmb3JtbHlWYWxpZGF0aW9uIiwibWVzc2FnZXMiLCJyZXF1aXJlZCIsInZpZXdWYWx1ZSIsIm1vZGVsVmFsdWUiLCJzY29wZSIsImRlZmF1bHRSZXR1cm5Nc2ciLCJyZXR1cm5Nc2ciLCJ0byIsImxhYmVsIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFPLElBQU1BLDBDQUF1QjtBQUNsQ0MsTUFBSSxTQUQ4QjtBQUVsQ0MsUUFBTSxVQUY0QjtBQUdsQ0MsWUFBVSxVQUh3QjtBQUlsQ0MsU0FBTyxVQUoyQjtBQUtsQ0MsY0FBWSxVQUxzQjtBQU1sQ0MsaUJBQWUsRUFObUI7QUFPbENDLGVBQWEsRUFQcUI7QUFRbENDLGtCQUFnQixLQVJrQjtBQVNsQ0MscUJBQW1CLEVBVGU7QUFVbENDLGlCQUFlLEVBVm1CO0FBV2xDQyw4QkFBNEIsRUFYTTtBQVlsQ0Msb0JBQWtCLEVBWmdCO0FBYWxDQyxvQkFBa0I7QUFDaEJDLGNBQVU7QUFDUkMsZ0JBQVUsa0JBQVNDLFNBQVQsRUFBb0JDLFVBQXBCLEVBQWdDQyxLQUFoQyxFQUF1QztBQUMvQztBQUNBO0FBQ0E7QUFDQSxZQUFNQyxtQkFBbUIsaUNBQXpCO0FBQ0EsWUFBTUMsWUFBYSxPQUFPRixNQUFNRyxFQUFOLENBQVNDLEtBQWhCLEtBQTBCLFdBQTNCLEdBQTRDSixNQUFNRyxFQUFOLENBQVNDLEtBQVQsS0FBbUIsRUFBcEIsR0FBMEJKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxHQUFpQixjQUEzQyxHQUE0REgsZ0JBQXZHLEdBQTJIQSxnQkFBN0k7QUFDQSxlQUFPQyxTQUFQO0FBQ0Q7QUFSTztBQURNO0FBYmdCLENBQTdCIiwiZmlsZSI6IjQ3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRleHRBcmVhQ29uZmlnID0gICAgICAge1xuICBpZDogJ1RleGFyZWEnLFxuICBuYW1lOiAnVGV4dGFyZWEnLFxuICBzdWJ0aXRsZTogJ1RleHRhcmVhJyxcbiAgZ3JvdXA6ICdUZXh0YXJlYScsXG4gIGZvcm1seVR5cGU6ICd0ZXh0YXJlYScsXG4gIGZvcm1seVN1YnR5cGU6ICcnLFxuICBmb3JtbHlMYWJlbDogJycsXG4gIGZvcm1seVJlcXVpcmVkOiBmYWxzZSxcbiAgZm9ybWx5RGVzY3JpcHRpb246ICcnLFxuICBmb3JtbHlPcHRpb25zOiBbXSxcbiAgZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXM6IHt9LFxuICBmb3JtbHlWYWxpZGF0b3JzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdGlvbjoge1xuICAgIG1lc3NhZ2VzOiB7XG4gICAgICByZXF1aXJlZDogZnVuY3Rpb24odmlld1ZhbHVlLCBtb2RlbFZhbHVlLCBzY29wZSkge1xuICAgICAgICAvL3JldHVybiBhIHJlcXVpcmVkIHZhbGlkYXRpb24gbWVzc2FnZSA6XG4gICAgICAgIC8vLT4gJzxsYWJlbCBhcyBuYW1lPiBpcyByZXF1aXJlZCAnXG4gICAgICAgIC8vLT4gb3IgaWYgbm90IGV4aXN0cyBvciBlbXB0eSBqdXN0ICd0aGlzIGZpZWxkIGlzIHJlcXVpcmVkJ1xuICAgICAgICBjb25zdCBkZWZhdWx0UmV0dXJuTXNnID0gJ3RoaXMgVGV4dGFyZWEgZmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgICBjb25zdCByZXR1cm5Nc2cgPSAodHlwZW9mIHNjb3BlLnRvLmxhYmVsICE9PSAndW5kZWZpbmVkJykgPyAoKHNjb3BlLnRvLmxhYmVsICE9PSAnJykgPyBzY29wZS50by5sYWJlbCArICcgaXMgcmVxdWlyZWQnIDogZGVmYXVsdFJldHVybk1zZykgOiBkZWZhdWx0UmV0dXJuTXNnO1xuICAgICAgICByZXR1cm4gcmV0dXJuTXNnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3RleHRBcmVhL2NvbmZpZy9zdGVwd2F5LnRleHRBcmVhLmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 48 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.editTextareaControlComponent = exports.EDIT_TEXTAREA_CONTROL_COMPONENT = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _stepwayEditTextAreaTemplate = __webpack_require__(49);\n\nvar _stepwayEditTextAreaTemplate2 = _interopRequireDefault(_stepwayEditTextAreaTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_TEXTAREA_CONTROL_COMPONENT = exports.EDIT_TEXTAREA_CONTROL_COMPONENT = 'editTextareaControl';\n\nvar editTextareaControlComponent = exports.editTextareaControlComponent = {\n template: _stepwayEditTextAreaTemplate2.default,\n bindings: {\n nyaSelect: '='\n },\n controller: function () {\n function editTextareaControlController() {\n //\n\n _classCallCheck(this, editTextareaControlController);\n }\n\n _createClass(editTextareaControlController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return editTextareaControlController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0QXJlYS9lZGl0VGV4dEFyZWEvc3RlcHdheS5lZGl0VGV4dEFyZWEuY29tcG9uZW50LmpzPzAzZTQiXSwibmFtZXMiOlsiRURJVF9URVhUQVJFQV9DT05UUk9MX0NPTVBPTkVOVCIsImVkaXRUZXh0YXJlYUNvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0IiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRU8sSUFBTUEsNEVBQWtDLHFCQUF4Qzs7QUFFQSxJQUFNQyxzRUFBK0I7QUFDMUNDLGlEQUQwQztBQUUxQ0MsWUFBZ0I7QUFDZEMsZUFBVztBQURHLEdBRjBCO0FBSzFDQztBQUVFLDZDQUFjO0FBQ1o7O0FBRFk7QUFFYjs7QUFKSDtBQUFBO0FBQUEsMEJBTXVCO0FBQ25CLGVBQU8sRUFBUDtBQUNEO0FBUkg7O0FBQUE7QUFBQTtBQUwwQyxDQUFyQyIsImZpbGUiOiI0OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlZGl0VGV4dGFyZWFDb250cm9sVGVtcGxhdGUgZnJvbSAnLi9zdGVwd2F5LmVkaXRUZXh0QXJlYS50ZW1wbGF0ZS5odG1sJztcblxuZXhwb3J0IGNvbnN0IEVESVRfVEVYVEFSRUFfQ09OVFJPTF9DT01QT05FTlQgPSAnZWRpdFRleHRhcmVhQ29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0VGV4dGFyZWFDb250cm9sQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZSAgICAgIDogZWRpdFRleHRhcmVhQ29udHJvbFRlbXBsYXRlLFxuICBiaW5kaW5ncyAgICAgIDoge1xuICAgIG55YVNlbGVjdDogJz0nXG4gIH0sXG4gIGNvbnRyb2xsZXIgICAgOlxuICBjbGFzcyBlZGl0VGV4dGFyZWFDb250cm9sQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAvL1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgJGluamVjdCgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0QXJlYS9lZGl0VGV4dEFyZWEvc3RlcHdheS5lZGl0VGV4dEFyZWEuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 49 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0QXJlYS9lZGl0VGV4dEFyZWEvc3RlcHdheS5lZGl0VGV4dEFyZWEudGVtcGxhdGUuaHRtbD80YmMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVPQUF1TyxjQUFjLDJCQUEyQiwyUUFBMlEsMkNBQTJDLGlkQUFpZCxpREFBaUQsbVVBQW1VLGNBQWMsK0JBQStCLGlRQUFpUSwwQkFBMEIsa1JBQWtSLG1DQUFtQyxzVEFBc1Qsd0JBQXdCLG1JQUFtSSxpZkFBaWYsMkJBQTJCLDhTQUE4UyxtQ0FBbUMiLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1leWVcXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIHt7J1BSRVZJRVdfVEFCJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvaDU+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8aHIvPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgPGxhYmVsXFxuICAgICAgICAgICAgZm9yPVxcXCJ0ZXh0QXJlYVxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiY29udHJvbC1sYWJlbCB0ZXh0Q29udHJvbExhYmVsXFxcIj5cXG4gICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsfX1cXG4gICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgbmctaWY9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHRDb250cm9sTGFiZWxcXFwiPlxcbiAgICAgICAgICAgICAgKlxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgICA8dGV4dGFyZWFcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgICBuZy1tb2RlbD1cXFwibW9kZWxbb3B0aW9ucy5rZXldXFxcIlxcbiAgICAgICAgICAgICAgcm93cz1cXFwiM1xcXCJcXG4gICAgICAgICAgICAgIGlkPVxcXCJ0ZXh0QXJlYVxcXCI+XFxuICAgICAgICAgICAgPC90ZXh0YXJlYT5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwiaGVscC1ibG9ja1xcXCI+XFxuICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9ufX1cXG4gICAgICAgICAgICA8L3A+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGhyLz5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dExhYmVsVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAge3snTEFCRUxfVEVYVCcgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLWxnLTlcXFwiPlxcbiAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgbmctbW9kZWw9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsXFxcIlxcbiAgICAgICAgICAgIGlkPVxcXCJpbnB1dFRleHRMYWJlbFVwZGF0ZVxcXCJcXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwie3snQUREX0VESVRfTEFCRUxfSEVSRScgfCB0cmFuc2xhdGV9fVxcXCI+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgPGxhYmVsXFxuICAgICAgICAgICAgZm9yPVxcXCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAgICB7eydSRVFVSVJFRCcgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1sZy05XFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjaGVja2JveENzc0NvcnJlY3Rpb25cXFwiPlxcbiAgICAgICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVxcXCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlSZXF1aXJlZFxcXCJcXG4gICAgICAgICAgICAgIGlkPVxcXCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVxcXCI+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPnt7J0RFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLWxnLTlcXFwiPlxcbiAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgICBuZy1tb2RlbD1cXFwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb25cXFwiXFxuICAgICAgICAgICAgICBpZD1cXFwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcXFwiXFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwie3snQURERURJVF9ERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fVxcXCI+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuXCJcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3RleHRBcmVhL2VkaXRUZXh0QXJlYS9zdGVwd2F5LmVkaXRUZXh0QXJlYS50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSA0OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 50 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayEditTextArea = __webpack_require__(48);\n\nvar edittextareaControlModuleName = 'stepway.editTextAreaControl.module';\n\nexports.default = angular.module(edittextareaControlModuleName, []).component(_stepwayEditTextArea.EDIT_TEXTAREA_CONTROL_COMPONENT, _stepwayEditTextArea.editTextareaControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0QXJlYS9lZGl0VGV4dEFyZWEvc3RlcHdheS5lZGl0VGV4dEFyZWEubW9kdWxlLmpzPzY1MjIiXSwibmFtZXMiOlsiZWRpdHRleHRhcmVhQ29udHJvbE1vZHVsZU5hbWUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFLQSxJQUFNQSxnQ0FBZ0Msb0NBQXRDOztrQkFFZUMsUUFDRUMsTUFERixDQUNTRiw2QkFEVCxFQUN3QyxFQUR4QyxFQUVFRyxTQUZGLHlHIiwiZmlsZSI6IjUwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZWRpdFRleHRhcmVhQ29udHJvbENvbXBvbmVudCxcbiAgRURJVF9URVhUQVJFQV9DT05UUk9MX0NPTVBPTkVOVFxufSBmcm9tICcuL3N0ZXB3YXkuZWRpdFRleHRBcmVhLmNvbXBvbmVudCc7XG5cbmNvbnN0IGVkaXR0ZXh0YXJlYUNvbnRyb2xNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdFRleHRBcmVhQ29udHJvbC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShlZGl0dGV4dGFyZWFDb250cm9sTW9kdWxlTmFtZSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChFRElUX1RFWFRBUkVBX0NPTlRST0xfQ09NUE9ORU5ULCBlZGl0VGV4dGFyZWFDb250cm9sQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3RleHRBcmVhL2VkaXRUZXh0QXJlYS9zdGVwd2F5LmVkaXRUZXh0QXJlYS5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 51 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar TextInputConfig = exports.TextInputConfig = {\n id: 'TextInput',\n name: 'Text input',\n subtitle: 'Text input',\n group: 'input',\n formlyType: 'input',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyDefaultValue: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> ' is required '\n //-> or if not exists or empty just 'this field is required'\n var defaultReturnMsg = 'this Text input field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0SW5wdXQvY29uZmlnL3N0ZXB3YXkudGV4dElucHV0LmNvbmZpZy5qcz9lYzBiIl0sIm5hbWVzIjpbIlRleHRJbnB1dENvbmZpZyIsImlkIiwibmFtZSIsInN1YnRpdGxlIiwiZ3JvdXAiLCJmb3JtbHlUeXBlIiwiZm9ybWx5U3VidHlwZSIsImZvcm1seUxhYmVsIiwiZm9ybWx5UmVxdWlyZWQiLCJmb3JtbHlEZXNjcmlwdGlvbiIsImZvcm1seURlZmF1bHRWYWx1ZSIsImZvcm1seU9wdGlvbnMiLCJmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyIsImZvcm1seVZhbGlkYXRvcnMiLCJmb3JtbHlWYWxpZGF0aW9uIiwibWVzc2FnZXMiLCJyZXF1aXJlZCIsInZpZXdWYWx1ZSIsIm1vZGVsVmFsdWUiLCJzY29wZSIsImRlZmF1bHRSZXR1cm5Nc2ciLCJyZXR1cm5Nc2ciLCJ0byIsImxhYmVsIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFPLElBQU1BLDRDQUF3QjtBQUNuQ0MsTUFBSSxXQUQrQjtBQUVuQ0MsUUFBTSxZQUY2QjtBQUduQ0MsWUFBVSxZQUh5QjtBQUluQ0MsU0FBTyxPQUo0QjtBQUtuQ0MsY0FBWSxPQUx1QjtBQU1uQ0MsaUJBQWUsRUFOb0I7QUFPbkNDLGVBQWEsRUFQc0I7QUFRbkNDLGtCQUFnQixLQVJtQjtBQVNuQ0MscUJBQW1CLEVBVGdCO0FBVW5DQyxzQkFBcUIsRUFWYztBQVduQ0MsaUJBQWUsRUFYb0I7QUFZbkNDLDhCQUE0QixFQVpPO0FBYW5DQyxvQkFBa0IsRUFiaUI7QUFjbkNDLG9CQUFrQjtBQUNoQkMsY0FBVTtBQUNSQyxnQkFBVSxrQkFBU0MsU0FBVCxFQUFvQkMsVUFBcEIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLFlBQU1DLG1CQUFtQixtQ0FBekI7QUFDQSxZQUFNQyxZQUFhLE9BQU9GLE1BQU1HLEVBQU4sQ0FBU0MsS0FBaEIsS0FBMEIsV0FBM0IsR0FBNENKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxLQUFtQixFQUFwQixHQUEwQkosTUFBTUcsRUFBTixDQUFTQyxLQUFULEdBQWlCLGNBQTNDLEdBQTRESCxnQkFBdkcsR0FBMkhBLGdCQUE3STtBQUNBLGVBQU9DLFNBQVA7QUFDRDtBQVJPO0FBRE07QUFkaUIsQ0FBOUIiLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVGV4dElucHV0Q29uZmlnID0gICAgICAge1xuICBpZDogJ1RleHRJbnB1dCcsXG4gIG5hbWU6ICdUZXh0IGlucHV0JyxcbiAgc3VidGl0bGU6ICdUZXh0IGlucHV0JyxcbiAgZ3JvdXA6ICdpbnB1dCcsXG4gIGZvcm1seVR5cGU6ICdpbnB1dCcsXG4gIGZvcm1seVN1YnR5cGU6ICcnLFxuICBmb3JtbHlMYWJlbDogJycsXG4gIGZvcm1seVJlcXVpcmVkOiBmYWxzZSxcbiAgZm9ybWx5RGVzY3JpcHRpb246ICcnLFxuICBmb3JtbHlEZWZhdWx0VmFsdWUgOiAnJyxcbiAgZm9ybWx5T3B0aW9uczogW10gLFxuICBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllczoge30sXG4gIGZvcm1seVZhbGlkYXRvcnM6IHt9LFxuICBmb3JtbHlWYWxpZGF0aW9uOiB7XG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHJlcXVpcmVkOiBmdW5jdGlvbih2aWV3VmFsdWUsIG1vZGVsVmFsdWUsIHNjb3BlKSB7XG4gICAgICAgIC8vcmV0dXJuIGEgcmVxdWlyZWQgdmFsaWRhdGlvbiBtZXNzYWdlIDpcbiAgICAgICAgLy8tPiAnPGxhYmVsIGFzIG5hbWU+IGlzIHJlcXVpcmVkICdcbiAgICAgICAgLy8tPiBvciBpZiBub3QgZXhpc3RzIG9yIGVtcHR5IGp1c3QgJ3RoaXMgZmllbGQgaXMgcmVxdWlyZWQnXG4gICAgICAgIGNvbnN0IGRlZmF1bHRSZXR1cm5Nc2cgPSAndGhpcyBUZXh0IGlucHV0IGZpZWxkIGlzIHJlcXVpcmVkJztcbiAgICAgICAgY29uc3QgcmV0dXJuTXNnID0gKHR5cGVvZiBzY29wZS50by5sYWJlbCAhPT0gJ3VuZGVmaW5lZCcpID8gKChzY29wZS50by5sYWJlbCAhPT0gJycpID8gc2NvcGUudG8ubGFiZWwgKyAnIGlzIHJlcXVpcmVkJyA6IGRlZmF1bHRSZXR1cm5Nc2cpIDogZGVmYXVsdFJldHVybk1zZztcbiAgICAgICAgcmV0dXJuIHJldHVybk1zZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0SW5wdXQvY29uZmlnL3N0ZXB3YXkudGV4dElucHV0LmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 52 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.editTextInputControlComponent = exports.EDIT_TEXTINPUT_CONTROL_COMPONENT = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _stepwayEditTextInputTemplate = __webpack_require__(53);\n\nvar _stepwayEditTextInputTemplate2 = _interopRequireDefault(_stepwayEditTextInputTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_TEXTINPUT_CONTROL_COMPONENT = exports.EDIT_TEXTINPUT_CONTROL_COMPONENT = 'editTextInputControl';\n\nvar editTextInputControlComponent = exports.editTextInputControlComponent = {\n template: _stepwayEditTextInputTemplate2.default,\n bindings: {\n nyaSelect: '='\n },\n controller: function () {\n function editTextInputControlController() {\n //\n\n _classCallCheck(this, editTextInputControlController);\n }\n\n _createClass(editTextInputControlController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return editTextInputControlController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0SW5wdXQvZWRpdFRleHRJbnB1dC9zdGVwd2F5LmVkaXRUZXh0SW5wdXQuY29tcG9uZW50LmpzPzMwMWIiXSwibmFtZXMiOlsiRURJVF9URVhUSU5QVVRfQ09OVFJPTF9DT01QT05FTlQiLCJlZGl0VGV4dElucHV0Q29udHJvbENvbXBvbmVudCIsInRlbXBsYXRlIiwiYmluZGluZ3MiLCJueWFTZWxlY3QiLCJjb250cm9sbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7QUFFTyxJQUFNQSw4RUFBbUMsc0JBQXpDOztBQUVBLElBQU1DLHdFQUFnQztBQUMzQ0Msa0RBRDJDO0FBRTNDQyxZQUFnQjtBQUNkQyxlQUFXO0FBREcsR0FGMkI7QUFLM0NDO0FBRUUsOENBQWM7QUFDWjs7QUFEWTtBQUViOztBQUpIO0FBQUE7QUFBQSwwQkFNdUI7QUFDbkIsZUFBTyxFQUFQO0FBQ0Q7QUFSSDs7QUFBQTtBQUFBO0FBTDJDLENBQXRDIiwiZmlsZSI6IjUyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVkaXRUZXh0SW5wdXRDb250cm9sVGVtcGxhdGUgZnJvbSAnLi9zdGVwd2F5LmVkaXRUZXh0SW5wdXQudGVtcGxhdGUuaHRtbCc7XG5cbmV4cG9ydCBjb25zdCBFRElUX1RFWFRJTlBVVF9DT05UUk9MX0NPTVBPTkVOVCA9ICdlZGl0VGV4dElucHV0Q29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0VGV4dElucHV0Q29udHJvbENvbXBvbmVudCA9IHtcbiAgdGVtcGxhdGUgICAgICA6IGVkaXRUZXh0SW5wdXRDb250cm9sVGVtcGxhdGUsXG4gIGJpbmRpbmdzICAgICAgOiB7XG4gICAgbnlhU2VsZWN0OiAnPSdcbiAgfSxcbiAgY29udHJvbGxlciAgICA6XG4gIGNsYXNzIGVkaXRUZXh0SW5wdXRDb250cm9sQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAvL1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgJGluamVjdCgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0SW5wdXQvZWRpdFRleHRJbnB1dC9zdGVwd2F5LmVkaXRUZXh0SW5wdXQuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 53 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0SW5wdXQvZWRpdFRleHRJbnB1dC9zdGVwd2F5LmVkaXRUZXh0SW5wdXQudGVtcGxhdGUuaHRtbD82MzQ0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVPQUF1TyxjQUFjLDJCQUEyQiw0UUFBNFEsMkNBQTJDLGlYQUFpWCxpREFBaUQsNkRBQTZELGlEQUFpRCxxVUFBcVUsY0FBYywrQkFBK0IsaVFBQWlRLDBCQUEwQixrUkFBa1IsbUNBQW1DLDZTQUE2UywyQkFBMkIsOFJBQThSLGtDQUFrQywwU0FBMFMsd0JBQXdCLDZHQUE2RyxxZEFBcWQsMkJBQTJCLDhSQUE4UixtQ0FBbUMsOFNBQThTLDRCQUE0QixnU0FBZ1MsK0NBQStDIiwiZmlsZSI6IjUzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIjxkaXYgY2xhc3M9XFxcInBhbmVsIHBhbmVsLWRlZmF1bHRcXFwiPlxcbiAgPGRpdiBjbGFzcz1cXFwicGFuZWwtYm9keVxcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIj5cXG4gICAgICAgIDxoNSBjbGFzcz1cXFwiZ3JleVRleHRcXFwiPlxcbiAgICAgICAgICA8aSBjbGFzcz1cXFwiZmEgZmEtZXllXFxcIj48L2k+XFxuICAgICAgICAgICZuYnNwO1xcbiAgICAgICAgICB7eydQUkVWSUVXX1RBQicgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGhyLz5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICAgICAgICAgIDxsYWJlbFxcbiAgICAgICAgICAgIGZvcj1cXFwiaW5wdXRUZXh0XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJjb250cm9sLWxhYmVsIHRleHRDb250cm9sTGFiZWxcXFwiPlxcbiAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWx9fVxcbiAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICBuZy1pZj1cXFwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UmVxdWlyZWRcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwidGV4dENvbnRyb2xMYWJlbFxcXCI+XFxuICAgICAgICAgICAgICAqXFxuICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJcXFwiPlxcbiAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgICBpZD1cXFwiaW5wdXRUZXh0XFxcIlxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcInt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UGxhY2Vob2xkZXJ9fVxcXCI+XFxuICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwiaGVscC1ibG9ja1xcXCI+XFxuICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9ufX1cXG4gICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG48L2Rpdj5cXG48ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG4gIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8aDUgY2xhc3M9XFxcImdyZXlUZXh0XFxcIj5cXG4gICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLXBlbmNpbC1zcXVhcmUtb1xcXCI+PC9pPlxcbiAgICAgICAgICAmbmJzcDtcXG4gICAgICAgICAge3snRURJVF9QUk9QRVJUSUVTJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvaDU+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8aHIvPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICB7eydMQUJFTF9URVhUJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvbGFiZWw+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbGctOVxcXCI+XFxuICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICBuZy1tb2RlbD1cXFwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWxcXFwiXFxuICAgICAgICAgICAgaWQ9XFxcImlucHV0VGV4dExhYmVsVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJ7eydBRERfRURJVF9MQUJFTF9IRVJFJyB8IHRyYW5zbGF0ZX19XFxcIj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgZm9yPVxcXCJpbnB1dFRleHRwbGFjZWhvbGRlclVwZGF0ZVxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFxcXCI+XFxuICAgICAgICAgIHt7J1BMQUNFSE9MREVSJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvbGFiZWw+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbGctOVxcXCI+XFxuICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICBuZy1tb2RlbD1cXFwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UGxhY2Vob2xkZXJcXFwiXFxuICAgICAgICAgICAgaWQ9XFxcImlucHV0VGV4dHBsYWNlaG9sZGVyVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJ7eydBRERfRURJVF9QTEFDRUhPTEQnIHwgdHJhbnNsYXRlfX1cXFwiPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAge3snUkVRVUlSRUQnIHwgdHJhbnNsYXRlfX0gOlxcbiAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1sZy05XFxcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY2hlY2tib3hDc3NDb3JyZWN0aW9uXFxcIj4mbmJzcDs8L2Rpdj5cXG4gICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgbmctbW9kZWw9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXFxcIlxcbiAgICAgICAgICAgIGlkPVxcXCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVxcXCI+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICB7eydERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLWxnLTlcXFwiPlxcbiAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgbmctbW9kZWw9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9uXFxcIlxcbiAgICAgICAgICAgIGlkPVxcXCJpbnB1dFRleHREZXNjcmlwdGlvblVwZGF0ZVxcXCJcXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwie3snQURERURJVF9ERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fVxcXCI+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwiaW5wdXRUZXh0RGVmYXVsdFZhbHVlVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAge3snREVGQVVMVFZBTFVFJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvbGFiZWw+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbGctOVxcXCI+XFxuICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICBuZy1tb2RlbD1cXFwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVmYXVsdFZhbHVlXFxcIlxcbiAgICAgICAgICAgIGlkPVxcXCJpbnB1dFRleHREZWZhdWx0VmFsdWVVcGRhdGVcXFwiXFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcInt7J0FERF9FRElUX0RFRkFVTFRWQUxVRV9QTEFDRUhPTEQnIHwgdHJhbnNsYXRlfX1cXFwiPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3RleHRJbnB1dC9lZGl0VGV4dElucHV0L3N0ZXB3YXkuZWRpdFRleHRJbnB1dC50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSA1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 54 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayEditTextInput = __webpack_require__(52);\n\nvar editTextInputControlModuleName = 'stepway.editTextInputControl.module';\n\nexports.default = angular.module(editTextInputControlModuleName, []).component(_stepwayEditTextInput.EDIT_TEXTINPUT_CONTROL_COMPONENT, _stepwayEditTextInput.editTextInputControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0SW5wdXQvZWRpdFRleHRJbnB1dC9zdGVwd2F5LmVkaXRUZXh0SW5wdXQubW9kdWxlLmpzPzc5NDQiXSwibmFtZXMiOlsiZWRpdFRleHRJbnB1dENvbnRyb2xNb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBS0EsSUFBTUEsaUNBQWlDLHFDQUF2Qzs7a0JBRWVDLFFBQ0VDLE1BREYsQ0FDU0YsOEJBRFQsRUFDeUMsRUFEekMsRUFFRUcsU0FGRiw2RyIsImZpbGUiOiI1NC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGVkaXRUZXh0SW5wdXRDb250cm9sQ29tcG9uZW50LFxuICBFRElUX1RFWFRJTlBVVF9DT05UUk9MX0NPTVBPTkVOVFxufSBmcm9tICcuL3N0ZXB3YXkuZWRpdFRleHRJbnB1dC5jb21wb25lbnQnO1xuXG5jb25zdCBlZGl0VGV4dElucHV0Q29udHJvbE1vZHVsZU5hbWUgPSAnc3RlcHdheS5lZGl0VGV4dElucHV0Q29udHJvbC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShlZGl0VGV4dElucHV0Q29udHJvbE1vZHVsZU5hbWUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoRURJVF9URVhUSU5QVVRfQ09OVFJPTF9DT01QT05FTlQsIGVkaXRUZXh0SW5wdXRDb250cm9sQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3RleHRJbnB1dC9lZGl0VGV4dElucHV0L3N0ZXB3YXkuZWRpdFRleHRJbnB1dC5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 55 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar configurationModelInit = {\n activeLine: 1,\n listConfigStep: ['init', 'first', 'second', 'third'],\n stepIndicators: [true, false, false, false],\n configStepCounter: 0,\n submitButtonText: 'submit',\n cancelButtonText: 'cancel',\n lines: [{\n line: 1,\n activeColumn: 1,\n columns: [{\n numColumn: 1,\n exist: true,\n control: {\n type: 'none',\n key: 'none' // ,\n // templateOptions: {\n // label: 'none',\n // placeholder: 'none',\n // required: false,\n // description: 'Descriptive text'\n // }\n }\n }]\n }]\n};\n\nvar configurationModelResult = {\n activeLine: 1,\n listConfigStep: ['init', 'first', 'second', 'third'],\n stepIndicators: [true, false, false, false],\n configStepCounter: 0,\n submitButtonText: 'submit',\n cancelButtonTex: 'cancel',\n lines: []\n};\n\nvar isTemplateOptionDefined = function isTemplateOptionDefined(obj) {\n var defaultValue = false;\n if (obj && obj.templateOptions) {\n return true;\n }\n return defaultValue;\n};\n\nvar extractTemplateOptionLabel = function extractTemplateOptionLabel(obj) {\n var defaultValue = '';\n if (isTemplateOptionDefined(obj) && obj.templateOptions.label) {\n return obj.templateOptions.label;\n }\n return defaultValue;\n};\n\nvar extractTemplateOptionDatepickerOptions = function extractTemplateOptionDatepickerOptions(obj) {\n var defaultValue = { format: '' };\n if (isTemplateOptionDefined(obj) && obj.templateOptions.datepickerOptions) {\n return _extends({}, obj.templateOptions.datepickerOptions);\n }\n return defaultValue;\n};\n\nvar extractTemplateOptionRequired = function extractTemplateOptionRequired(obj) {\n var defaultValue = false;\n if (isTemplateOptionDefined(obj) && obj.templateOptions.required) {\n return true;\n }\n return defaultValue;\n};\n\nvar extractTemplateOptionOptions = function extractTemplateOptionOptions(obj) {\n var defaultValue = '';\n if (isTemplateOptionDefined(obj) && obj.templateOptions.options) {\n return obj.templateOptions.options;\n }\n return defaultValue;\n};\n\nvar extractTemplateOptionType = function extractTemplateOptionType(obj) {\n var defaultValue = '';\n if (obj && obj.subtype) {\n return obj.subtype;\n }\n return defaultValue;\n};\n\nvar extractTemplateOptionPlaceholder = function extractTemplateOptionPlaceholder(obj) {\n var defaultValue = '';\n if (isTemplateOptionDefined(obj) && obj.templateOptions.placeholder) {\n return obj.templateOptions.placeholder;\n }\n return defaultValue;\n};\n\nvar extractTemplateOptionDescription = function extractTemplateOptionDescription(obj) {\n var defaultValue = '';\n if (isTemplateOptionDefined(obj) && obj.templateOptions.description) {\n return obj.templateOptions.description;\n }\n return defaultValue;\n};\n\nvar extractDefaultValue = function extractDefaultValue(obj) {\n var defaultValue = '';\n if (obj && obj.defaultValue) {\n return obj.defaultValue;\n }\n return defaultValue;\n};\n\nvar extractFormlyExpressionProperties = function extractFormlyExpressionProperties(obj) {\n var defaultValue = {};\n if (obj && obj.formlyExpressionProperties) {\n return angular.copy(obj.formlyExpressionProperties);\n }\n return defaultValue;\n};\n\nvar extractFormlyValidators = function extractFormlyValidators(obj) {\n var defaultValue = {};\n if (obj && obj.formlyValidators) {\n return angular.copy(obj.formlyValidators);\n }\n return defaultValue;\n};\n\nvar extractFormlyValidation = function extractFormlyValidation(obj) {\n var defaultValue = {};\n if (obj && obj.formlyValidation) {\n return angular.copy(obj.formlyValidation);\n }\n return defaultValue;\n};\n\nvar addDatepickerOptionsProperty = function addDatepickerOptionsProperty(fieldToPush, configurationModel, lineIndex) {\n var control = _extends({}, configurationModel.lines[lineIndex].columns[0].control);\n fieldToPush.templateOptions.datepickerOptions = extractTemplateOptionDatepickerOptions(control);\n};\n\n// const addOneColumnHeader = (formlyModel, configurationModel, lineIndex) => {\n// const control = { ...configurationModel.lines[lineIndex].columns[0].control };\n// const defaultTemplate = '
';\n// const headerTemplateCol0 = {\n// template : `\n// \n//
\n//
\n// ${extractTemplateOptionDescription(control)}\n// \n// \n// \n//
\n// `\n// };\n// if (control.type && control.type === 'header') {\n// return formlyModel.push({\n// template: headerTemplateCol0.template\n// });\n// }\n// return formlyModel.push({\n// template : defaultTemplate\n// });\n// };\n\nvar addOneColumnControl = function addOneColumnControl(formlyModel, configurationModel, lineIndex) {\n var control = _extends({}, configurationModel.lines[lineIndex].columns[0].control);\n var fieldToPush = {\n className: 'col-xs-12',\n type: control && control.type && control.type !== 'none' ? control.type : 'blank',\n key: control && control.key ? control.key : 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control),\n label: extractTemplateOptionLabel(control),\n required: extractTemplateOptionRequired(control),\n placeholder: extractTemplateOptionPlaceholder(control),\n description: extractTemplateOptionDescription(control),\n options: extractTemplateOptionOptions(control)\n },\n defaultValue: extractDefaultValue(control),\n expressionProperties: extractFormlyExpressionProperties(control),\n validators: extractFormlyValidators(control),\n validation: extractFormlyValidation(control)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control.type === 'datepicker') {\n addDatepickerOptionsProperty(fieldToPush, configurationModel, lineIndex);\n }\n formlyModel.push(fieldToPush);\n};\n\nvar addTwoColumnControl = function addTwoColumnControl(formlyModel, configurationModel, lineIndex) {\n var control0 = _extends({}, configurationModel.lines[lineIndex].columns[0].control);\n //text header is stored in \"description\" in templateOtion model\n var headerTemplateCol0 = {\n className: 'col-xs-6',\n template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control0) + '\\n \\n \\n \\n
\\n '\n };\n var controlCol0 = {\n className: 'col-xs-6',\n type: control0 && control0.type && control0.type !== 'none' ? control0.type : 'blank',\n key: control0 && control0.key ? control0.key : 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control0),\n label: extractTemplateOptionLabel(control0),\n required: extractTemplateOptionRequired(control0),\n placeholder: extractTemplateOptionPlaceholder(control0),\n description: extractTemplateOptionDescription(control0),\n options: extractTemplateOptionOptions(control0)\n },\n defaultValue: extractDefaultValue(control0),\n expressionProperties: extractFormlyExpressionProperties(control0),\n validators: extractFormlyValidators(control0),\n validation: extractFormlyValidation(control0)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control0.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol0, configurationModel, lineIndex);\n }\n\n var control1 = _extends({}, configurationModel.lines[lineIndex].columns[1].control);\n var headerTemplateCol1 = {\n className: 'col-xs-6',\n template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control1) + '\\n \\n \\n \\n
\\n '\n };\n var controlCol1 = {\n className: 'col-xs-6',\n type: control1 && control1.type && control1.type !== 'none' ? control1.type : 'none',\n key: control1 && control1.key ? control1.key : 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control1),\n label: extractTemplateOptionLabel(control1),\n required: extractTemplateOptionRequired(control1),\n placeholder: extractTemplateOptionPlaceholder(control1),\n description: extractTemplateOptionDescription(control1),\n options: extractTemplateOptionOptions(control1)\n },\n defaultValue: extractDefaultValue(control1),\n expressionProperties: extractFormlyExpressionProperties(control1),\n validators: extractFormlyValidators(control1),\n validation: extractFormlyValidation(control1)\n };\n //////////////////////////////////////////////\n // datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control1.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol1, configurationModel, lineIndex);\n }\n\n var FieldGroup = [];\n\n if (control0.type === 'header') {\n FieldGroup.push(headerTemplateCol0);\n } else {\n FieldGroup.push(controlCol0);\n }\n\n if (control1.type === 'header') {\n FieldGroup.push(headerTemplateCol1);\n } else {\n FieldGroup.push(controlCol1);\n }\n\n formlyModel.push({\n className: 'row',\n fieldGroup: FieldGroup\n });\n};\n\nvar addThreeColumnControl = function addThreeColumnControl(formlyModel, configurationModel, lineIndex) {\n var control0 = _extends({}, configurationModel.lines[lineIndex].columns[0].control);\n //text header is stored in \"description\" in templateOtion model\n var headerTemplateCol0 = {\n className: 'col-xs-4',\n template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control0) + '\\n \\n \\n \\n
\\n '\n };\n var controlCol0 = {\n className: 'col-xs-4',\n type: control0 && control0.type && control0.type !== 'none' ? control0.type : 'blank',\n key: control0 && control0.key ? control0.key : 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control0),\n label: extractTemplateOptionLabel(control0),\n required: extractTemplateOptionRequired(control0),\n placeholder: extractTemplateOptionPlaceholder(control0),\n description: extractTemplateOptionDescription(control0),\n options: extractTemplateOptionOptions(control0)\n },\n defaultValue: extractDefaultValue(control0),\n expressionProperties: extractFormlyExpressionProperties(control0),\n validators: extractFormlyValidators(control0),\n validation: extractFormlyValidation(control0)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control0.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol0, configurationModel, lineIndex);\n }\n\n var control1 = _extends({}, configurationModel.lines[lineIndex].columns[1].control);\n var headerTemplateCol1 = {\n className: 'col-xs-4',\n template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control1) + '\\n \\n \\n \\n
\\n '\n };\n var controlCol1 = {\n className: 'col-xs-4',\n type: control1 && control1.type && control1.type !== 'none' ? control1.type : 'blank',\n key: control1 && control1.key ? control1.key : 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control1),\n label: extractTemplateOptionLabel(control1),\n required: extractTemplateOptionRequired(control1),\n placeholder: extractTemplateOptionPlaceholder(control1),\n description: extractTemplateOptionDescription(control1),\n options: extractTemplateOptionOptions(control1)\n },\n defaultValue: extractDefaultValue(control1),\n expressionProperties: extractFormlyExpressionProperties(control1),\n validators: extractFormlyValidators(control1),\n validation: extractFormlyValidation(control1)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control1.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol1, configurationModel, lineIndex);\n }\n\n var control2 = _extends({}, configurationModel.lines[lineIndex].columns[2].control);\n var headerTemplateCol2 = {\n className: 'col-xs-4',\n template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control2) + '\\n \\n \\n \\n
\\n '\n };\n var controlCol2 = {\n className: 'col-xs-4',\n type: control2 && control2.type && control2.type !== 'none' ? control2.type : 'blank',\n key: control2 && control2.key ? control2.key : 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control2),\n label: extractTemplateOptionLabel(control2),\n required: extractTemplateOptionRequired(control2),\n placeholder: extractTemplateOptionPlaceholder(control2),\n description: extractTemplateOptionDescription(control2),\n options: extractTemplateOptionOptions(control2)\n },\n defaultValue: extractDefaultValue(control2),\n expressionProperties: extractFormlyExpressionProperties(control2),\n validators: extractFormlyValidators(control2),\n validation: extractFormlyValidation(control2)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control2.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol2, configurationModel, lineIndex);\n }\n\n var FieldGroup = [];\n\n if (control0.type === 'header') {\n FieldGroup.push(headerTemplateCol0);\n } else {\n FieldGroup.push(controlCol0);\n }\n\n if (control1.type === 'header') {\n FieldGroup.push(headerTemplateCol1);\n } else {\n FieldGroup.push(controlCol1);\n }\n\n if (control2.type === 'header') {\n FieldGroup.push(headerTemplateCol2);\n } else {\n FieldGroup.push(controlCol2);\n }\n\n formlyModel.push({\n className: 'row',\n fieldGroup: FieldGroup\n });\n};\n\nvar resetDataModel = function resetDataModel(obj) {\n var emptyDataModel = {};\n angular.copy(emptyDataModel, obj);\n return true;\n};\n\nvar resetFormlyModel = function resetFormlyModel(formlyModel) {\n var resetformly = [];\n angular.copy(resetformly, formlyModel);\n};\n\nexports.configurationModelInit = configurationModelInit;\nexports.configurationModelResult = configurationModelResult;\nexports.resetDataModel = resetDataModel;\nexports.resetFormlyModel = resetFormlyModel;\nexports.isTemplateOptionDefined = isTemplateOptionDefined;\nexports.extractTemplateOptionLabel = extractTemplateOptionLabel;\nexports.extractTemplateOptionDatepickerOptions = extractTemplateOptionDatepickerOptions;\nexports.extractDefaultValue = extractDefaultValue;\nexports.extractFormlyExpressionProperties = extractFormlyExpressionProperties;\nexports.extractFormlyValidators = extractFormlyValidators;\nexports.extractFormlyValidation = extractFormlyValidation;\nexports.extractTemplateOptionRequired = extractTemplateOptionRequired;\nexports.extractTemplateOptionOptions = extractTemplateOptionOptions;\nexports.extractTemplateOptionType = extractTemplateOptionType;\nexports.extractTemplateOptionPlaceholder = extractTemplateOptionPlaceholder;\nexports.extractTemplateOptionDescription = extractTemplateOptionDescription;\nexports.addDatepickerOptionsProperty = addDatepickerOptionsProperty;\nexports.addOneColumnControl = addOneColumnControl;\nexports.addTwoColumnControl = addTwoColumnControl;\nexports.addThreeColumnControl = addThreeColumnControl;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvc2VydmljZXMvZm9ybWx5UHJveHkvZm9ybWx5UHJveHkuc2VydmljZS5oZWxwZXJzLmpzPzgxNjgiXSwibmFtZXMiOlsiY29uZmlndXJhdGlvbk1vZGVsSW5pdCIsImFjdGl2ZUxpbmUiLCJsaXN0Q29uZmlnU3RlcCIsInN0ZXBJbmRpY2F0b3JzIiwiY29uZmlnU3RlcENvdW50ZXIiLCJzdWJtaXRCdXR0b25UZXh0IiwiY2FuY2VsQnV0dG9uVGV4dCIsImxpbmVzIiwibGluZSIsImFjdGl2ZUNvbHVtbiIsImNvbHVtbnMiLCJudW1Db2x1bW4iLCJleGlzdCIsImNvbnRyb2wiLCJ0eXBlIiwia2V5IiwiY29uZmlndXJhdGlvbk1vZGVsUmVzdWx0IiwiY2FuY2VsQnV0dG9uVGV4IiwiaXNUZW1wbGF0ZU9wdGlvbkRlZmluZWQiLCJvYmoiLCJkZWZhdWx0VmFsdWUiLCJ0ZW1wbGF0ZU9wdGlvbnMiLCJleHRyYWN0VGVtcGxhdGVPcHRpb25MYWJlbCIsImxhYmVsIiwiZXh0cmFjdFRlbXBsYXRlT3B0aW9uRGF0ZXBpY2tlck9wdGlvbnMiLCJmb3JtYXQiLCJkYXRlcGlja2VyT3B0aW9ucyIsImV4dHJhY3RUZW1wbGF0ZU9wdGlvblJlcXVpcmVkIiwicmVxdWlyZWQiLCJleHRyYWN0VGVtcGxhdGVPcHRpb25PcHRpb25zIiwib3B0aW9ucyIsImV4dHJhY3RUZW1wbGF0ZU9wdGlvblR5cGUiLCJzdWJ0eXBlIiwiZXh0cmFjdFRlbXBsYXRlT3B0aW9uUGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsImV4dHJhY3RUZW1wbGF0ZU9wdGlvbkRlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJleHRyYWN0RGVmYXVsdFZhbHVlIiwiZXh0cmFjdEZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJhbmd1bGFyIiwiY29weSIsImV4dHJhY3RGb3JtbHlWYWxpZGF0b3JzIiwiZm9ybWx5VmFsaWRhdG9ycyIsImV4dHJhY3RGb3JtbHlWYWxpZGF0aW9uIiwiZm9ybWx5VmFsaWRhdGlvbiIsImFkZERhdGVwaWNrZXJPcHRpb25zUHJvcGVydHkiLCJmaWVsZFRvUHVzaCIsImNvbmZpZ3VyYXRpb25Nb2RlbCIsImxpbmVJbmRleCIsImFkZE9uZUNvbHVtbkNvbnRyb2wiLCJmb3JtbHlNb2RlbCIsImNsYXNzTmFtZSIsIkRhdGUiLCJub3ciLCJleHByZXNzaW9uUHJvcGVydGllcyIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0aW9uIiwicHVzaCIsImFkZFR3b0NvbHVtbkNvbnRyb2wiLCJjb250cm9sMCIsImhlYWRlclRlbXBsYXRlQ29sMCIsInRlbXBsYXRlIiwiY29udHJvbENvbDAiLCJjb250cm9sMSIsImhlYWRlclRlbXBsYXRlQ29sMSIsImNvbnRyb2xDb2wxIiwiRmllbGRHcm91cCIsImZpZWxkR3JvdXAiLCJhZGRUaHJlZUNvbHVtbkNvbnRyb2wiLCJjb250cm9sMiIsImhlYWRlclRlbXBsYXRlQ29sMiIsImNvbnRyb2xDb2wyIiwicmVzZXREYXRhTW9kZWwiLCJlbXB0eURhdGFNb2RlbCIsInJlc2V0Rm9ybWx5TW9kZWwiLCJyZXNldGZvcm1seSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFNQSx5QkFBeUI7QUFDN0JDLGNBQVksQ0FEaUI7QUFFN0JDLGtCQUFnQixDQUNkLE1BRGMsRUFFZCxPQUZjLEVBR2QsUUFIYyxFQUlkLE9BSmMsQ0FGYTtBQVE3QkMsa0JBQWlCLENBQ2YsSUFEZSxFQUVmLEtBRmUsRUFHZixLQUhlLEVBSWYsS0FKZSxDQVJZO0FBYzdCQyxxQkFBbUIsQ0FkVTtBQWU3QkMsb0JBQWtCLFFBZlc7QUFnQjdCQyxvQkFBa0IsUUFoQlc7QUFpQjdCQyxTQUFPLENBQ0w7QUFDRUMsVUFBTSxDQURSO0FBRUVDLGtCQUFjLENBRmhCO0FBR0VDLGFBQWlCLENBQUM7QUFDaEJDLGlCQUFXLENBREs7QUFFaEJDLGFBQU0sSUFGVTtBQUdoQkMsZUFBUztB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aW9uTW9kZWxJbml0ID0ge1xuICBhY3RpdmVMaW5lOiAxLFxuICBsaXN0Q29uZmlnU3RlcDogW1xuICAgICdpbml0JyxcbiAgICAnZmlyc3QnLFxuICAgICdzZWNvbmQnLFxuICAgICd0aGlyZCdcbiAgXSxcbiAgc3RlcEluZGljYXRvcnM6ICBbXG4gICAgdHJ1ZSxcbiAgICBmYWxzZSxcbiAgICBmYWxzZSxcbiAgICBmYWxzZVxuICBdLFxuICBjb25maWdTdGVwQ291bnRlcjogMCxcbiAgc3VibWl0QnV0dG9uVGV4dDogJ3N1Ym1pdCcsXG4gIGNhbmNlbEJ1dHRvblRleHQ6ICdjYW5jZWwnLFxuICBsaW5lczogW1xuICAgIHtcbiAgICAgIGxpbmU6IDEsXG4gICAgICBhY3RpdmVDb2x1bW46IDEsXG4gICAgICBjb2x1bW5zICAgICAgICA6IFt7XG4gICAgICAgIG51bUNvbHVtbjogMSxcbiAgICAgICAgZXhpc3Q6dHJ1ZSxcbiAgICAgICAgY29udHJvbDoge1xuICAgICAgICAgIHR5cGU6J25vbmUnLFxuICAgICAgICAgIGtleTogJ25vbmUnIC8vICxcbiAgICAgICAgICAvLyB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAvLyAgIGxhYmVsOiAnbm9uZScsXG4gICAgICAgICAgLy8gICBwbGFjZWhvbGRlcjogJ25vbmUnLFxuICAgICAgICAgIC8vICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgIC8vICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGl2ZSB0ZXh0J1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIF1cbn07XG5cbmNvbnN0IGNvbmZpZ3VyYXRpb25Nb2RlbFJlc3VsdCA9IHtcbiAgYWN0aXZlTGluZTogMSxcbiAgbGlzdENvbmZpZ1N0ZXA6IFtcbiAgICAnaW5pdCcsXG4gICAgJ2ZpcnN0JyxcbiAgICAnc2Vjb25kJyxcbiAgICAndGhpcmQnXG4gIF0sXG4gIHN0ZXBJbmRpY2F0b3JzOiAgW1xuICAgIHRydWUsXG4gICAgZmFsc2UsXG4gICAgZmFsc2UsXG4gICAgZmFsc2VcbiAgXSxcbiAgY29uZmlnU3RlcENvdW50ZXI6IDAsXG4gIHN1Ym1pdEJ1dHRvblRleHQ6ICdzdWJtaXQnLFxuICBjYW5jZWxCdXR0b25UZXg6ICdjYW5jZWwnLFxuICBsaW5lczogW11cbn07XG5cbmNvbnN0IGlzVGVtcGxhdGVPcHRpb25EZWZpbmVkID0gKG9iaikgPT4ge1xuICBjb25zdCBkZWZhdWx0VmFsdWUgPSBmYWxzZTtcbiAgaWYgKG9iaiAmJiBvYmoudGVtcGxhdGVPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbkxhYmVsID0gKG9iaikgPT4ge1xuICBjb25zdCBkZWZhdWx0VmFsdWUgPSAnJztcbiAgaWYgKGlzVGVtcGxhdGVPcHRpb25EZWZpbmVkKG9iaikgJiYgb2JqLnRlbXBsYXRlT3B0aW9ucy5sYWJlbCkge1xuICAgIHJldHVybiBvYmoudGVtcGxhdGVPcHRpb25zLmxhYmVsO1xuICB9XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59O1xuXG5jb25zdCBleHRyYWN0VGVtcGxhdGVPcHRpb25EYXRlcGlja2VyT3B0aW9ucz0gKG9iaikgPT4ge1xuICBjb25zdCBkZWZhdWx0VmFsdWUgPSB7IGZvcm1hdDogJycgfTtcbiAgaWYgKGlzVGVtcGxhdGVPcHRpb25EZWZpbmVkKG9iaikgJiYgb2JqLnRlbXBsYXRlT3B0aW9ucy5kYXRlcGlja2VyT3B0aW9ucykge1xuICAgIHJldHVybiB7Li4ub2JqLnRlbXBsYXRlT3B0aW9ucy5kYXRlcGlja2VyT3B0aW9uc307XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGV4dHJhY3RUZW1wbGF0ZU9wdGlvblJlcXVpcmVkID0gKG9iaikgPT4ge1xuICBjb25zdCBkZWZhdWx0VmFsdWUgPSBmYWxzZTtcbiAgaWYgKGlzVGVtcGxhdGVPcHRpb25EZWZpbmVkKG9iaikgJiYgb2JqLnRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59O1xuXG5jb25zdCBleHRyYWN0VGVtcGxhdGVPcHRpb25PcHRpb25zID0gKG9iaikgPT4ge1xuICBjb25zdCBkZWZhdWx0VmFsdWUgPSAnJztcbiAgaWYgKGlzVGVtcGxhdGVPcHRpb25EZWZpbmVkKG9iaikgJiYgb2JqLnRlbXBsYXRlT3B0aW9ucy5vcHRpb25zKSB7XG4gICAgcmV0dXJuIG9iai50ZW1wbGF0ZU9wdGlvbnMub3B0aW9ucztcbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufTtcblxuY29uc3QgZXh0cmFjdFRlbXBsYXRlT3B0aW9uVHlwZSA9IChvYmopID0+IHtcbiAgY29uc3QgZGVmYXVsdFZhbHVlID0gJyc7XG4gIGlmIChvYmogJiYgb2JqLnN1YnR5cGUpIHtcbiAgICByZXR1cm4gb2JqLnN1YnR5cGU7XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGV4dHJhY3RUZW1wbGF0ZU9wdGlvblBsYWNlaG9sZGVyID0gKG9iaikgPT4ge1xuICBjb25zdCBkZWZhdWx0VmFsdWUgPSAnJztcbiAgaWYgKGlzVGVtcGxhdGVPcHRpb25EZWZpbmVkKG9iaikgJiYgb2JqLnRlbXBsYXRlT3B0aW9ucy5wbGFjZWhvbGRlcikge1xuICAgIHJldHVybiBvYmoudGVtcGxhdGVPcHRpb25zLnBsYWNlaG9sZGVyO1xuICB9XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59O1xuXG5jb25zdCBleHRyYWN0VGVtcGxhdGVPcHRpb25EZXNjcmlwdGlvbiA9IChvYmopID0+IHtcbiAgY29uc3QgZGVmYXVsdFZhbHVlID0gJyc7XG4gIGlmIChpc1RlbXBsYXRlT3B0aW9uRGVmaW5lZChvYmopICYmIG9iai50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24pIHtcbiAgICByZXR1cm4gb2JqLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbjtcbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufTtcblxuY29uc3QgZXh0cmFjdERlZmF1bHRWYWx1ZSA9IChvYmopID0+IHtcbiAgY29uc3QgZGVmYXVsdFZhbHVlID0gJyc7XG4gIGlmIChvYmogJiYgb2JqLmRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiBvYmouZGVmYXVsdFZhbHVlO1xuICB9XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59O1xuXG5jb25zdCBleHRyYWN0Rm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMgPSAob2JqKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHt9O1xuICBpZiAob2JqICYmIG9iai5mb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcykge1xuICAgIHJldHVybiBhbmd1bGFyLmNvcHkob2JqLmZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzKTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufTtcblxuY29uc3QgZXh0cmFjdEZvcm1seVZhbGlkYXRvcnMgPSAob2JqKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHt9O1xuICBpZiAob2JqICYmIG9iai5mb3JtbHlWYWxpZGF0b3JzKSB7XG4gICAgcmV0dXJuIGFuZ3VsYXIuY29weShvYmouZm9ybWx5VmFsaWRhdG9ycyk7XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGV4dHJhY3RGb3JtbHlWYWxpZGF0aW9uID0gKG9iaikgPT4ge1xuICBjb25zdCBkZWZhdWx0VmFsdWUgPSB7fTtcbiAgaWYgKG9iaiAmJiBvYmouZm9ybWx5VmFsaWRhdGlvbikge1xuICAgIHJldHVybiBhbmd1bGFyLmNvcHkob2JqLmZvcm1seVZhbGlkYXRpb24pO1xuICB9XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59O1xuXG5jb25zdCBhZGREYXRlcGlja2VyT3B0aW9uc1Byb3BlcnR5ID0gKGZpZWxkVG9QdXNoLCBjb25maWd1cmF0aW9uTW9kZWwsIGxpbmVJbmRleCkgPT4ge1xuICBjb25zdCBjb250cm9sID0gey4uLmNvbmZpZ3VyYXRpb25Nb2RlbC5saW5lc1tsaW5lSW5kZXhdLmNvbHVtbnNbMF0uY29udHJvbH07XG4gIGZpZWxkVG9QdXNoLnRlbXBsYXRlT3B0aW9ucy5kYXRlcGlja2VyT3B0aW9ucyA9IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbkRhdGVwaWNrZXJPcHRpb25zKGNvbnRyb2wpO1xufTtcblxuLy8gY29uc3QgYWRkT25lQ29sdW1uSGVhZGVyID0gKGZvcm1seU1vZGVsLCBjb25maWd1cmF0aW9uTW9kZWwsIGxpbmVJbmRleCkgPT4ge1xuLy8gICBjb25zdCBjb250cm9sID0geyAuLi5jb25maWd1cmF0aW9uTW9kZWwubGluZXNbbGluZUluZGV4XS5jb2x1bW5zWzBdLmNvbnRyb2wgfTtcbi8vICAgY29uc3QgZGVmYXVsdFRlbXBsYXRlID0gJzxkaXY+PC9kaXY+Jztcbi8vICAgY29uc3QgaGVhZGVyVGVtcGxhdGVDb2wwID0gIHtcbi8vICAgICB0ZW1wbGF0ZSA6IGBcbi8vICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4vLyAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4vLyAgICAgICAgIDxoMiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4vLyAgICAgICAgICAgJHtleHRyYWN0VGVtcGxhdGVPcHRpb25EZXNjcmlwdGlvbihjb250cm9sKX1cbi8vICAgICAgICAgPC9oMj5cbi8vICAgICAgICAgPGhyLz5cbi8vICAgICAgIDwvZGl2PlxuLy8gICAgIDwvZGl2PlxuLy8gICAgIGBcbi8vICAgfTtcbi8vICAgaWYgKGNvbnRyb2wudHlwZSAmJiBjb250cm9sLnR5cGUgID09PSAnaGVhZGVyJykge1xuLy8gICAgIHJldHVybiBmb3JtbHlNb2RlbC5wdXNoKHtcbi8vICAgICAgIHRlbXBsYXRlOiBoZWFkZXJUZW1wbGF0ZUNvbDAudGVtcGxhdGVcbi8vICAgICB9KTtcbi8vICAgfVxuLy8gICByZXR1cm4gZm9ybWx5TW9kZWwucHVzaCh7XG4vLyAgICAgdGVtcGxhdGUgOiBkZWZhdWx0VGVtcGxhdGVcbi8vICAgfSk7XG4vLyB9O1xuXG5jb25zdCBhZGRPbmVDb2x1bW5Db250cm9sID0gKGZvcm1seU1vZGVsLCBjb25maWd1cmF0aW9uTW9kZWwsbGluZUluZGV4KSA9PiB7XG4gIGNvbnN0IGNvbnRyb2wgPSB7IC4uLmNvbmZpZ3VyYXRpb25Nb2RlbC5saW5lc1tsaW5lSW5kZXhdLmNvbHVtbnNbMF0uY29udHJvbCB9O1xuICBjb25zdCBmaWVsZFRvUHVzaCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb2wteHMtMTInLFxuICAgIHR5cGU6IGNvbnRyb2wgJiYgY29udHJvbC50eXBlICYmIGNvbnRyb2wudHlwZSAhPT0gJ25vbmUnID8gY29udHJvbC50eXBlIDogJ2JsYW5rJyxcbiAgICBrZXk6IGNvbnRyb2wgJiYgY29udHJvbC5rZXkgPyBjb250cm9sLmtleSA6ICdibGFuaycgKyBEYXRlLm5vdygpLFxuICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgdHlwZTogZXh0cmFjdFRlbXBsYXRlT3B0aW9uVHlwZShjb250cm9sKSxcbiAgICAgIGxhYmVsOiBleHRyYWN0VGVtcGxhdGVPcHRpb25MYWJlbChjb250cm9sKSxcbiAgICAgIHJlcXVpcmVkOiBleHRyYWN0VGVtcGxhdGVPcHRpb25SZXF1aXJlZChjb250cm9sKSxcbiAgICAgIHBsYWNlaG9sZGVyOiBleHRyYWN0VGVtcGxhdGVPcHRpb25QbGFjZWhvbGRlcihjb250cm9sKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBleHRyYWN0VGVtcGxhdGVPcHRpb25EZXNjcmlwdGlvbihjb250cm9sKSxcbiAgICAgIG9wdGlvbnM6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbk9wdGlvbnMoY29udHJvbClcbiAgICB9LFxuICAgIGRlZmF1bHRWYWx1ZTogZXh0cmFjdERlZmF1bHRWYWx1ZShjb250cm9sKSxcbiAgICBleHByZXNzaW9uUHJvcGVydGllczogZXh0cmFjdEZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzKGNvbnRyb2wpLFxuICAgIHZhbGlkYXRvcnM6IGV4dHJhY3RGb3JtbHlWYWxpZGF0b3JzKGNvbnRyb2wpLFxuICAgIHZhbGlkYXRpb246IGV4dHJhY3RGb3JtbHlWYWxpZGF0aW9uKGNvbnRyb2wpXG4gIH07XG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy9kYXRlcGlja2VyIGFkZGl0aW9ubmFsIHBhcnRpY3VsYXIgcHJvcGVydHlcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBpZiAoY29udHJvbC50eXBlID09PSAnZGF0ZXBpY2tlcicpIHtcbiAgICBhZGREYXRlcGlja2VyT3B0aW9uc1Byb3BlcnR5KGZpZWxkVG9QdXNoLCBjb25maWd1cmF0aW9uTW9kZWwsIGxpbmVJbmRleCk7XG4gIH1cbiAgZm9ybWx5TW9kZWwucHVzaChmaWVsZFRvUHVzaCk7XG59O1xuXG5jb25zdCBhZGRUd29Db2x1bW5Db250cm9sID0gKGZvcm1seU1vZGVsLCBjb25maWd1cmF0aW9uTW9kZWwsbGluZUluZGV4KSA9PiB7XG4gIGNvbnN0IGNvbnRyb2wwID0geyAuLi5jb25maWd1cmF0aW9uTW9kZWwubGluZXNbbGluZUluZGV4XS5jb2x1bW5zWzBdLmNvbnRyb2wgfTtcbiAgLy90ZXh0IGhlYWRlciBpcyBzdG9yZWQgaW4gXCJkZXNjcmlwdGlvblwiIGluIHRlbXBsYXRlT3Rpb24gbW9kZWxcbiAgY29uc3QgaGVhZGVyVGVtcGxhdGVDb2wwID0gIHtcbiAgICBjbGFzc05hbWU6ICdjb2wteHMtNicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgJHtleHRyYWN0VGVtcGxhdGVPcHRpb25EZXNjcmlwdGlvbihjb250cm9sMCl9XG4gICAgICAgIDwvaDI+XG4gICAgICAgIDxoci8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYFxuICB9O1xuICBjb25zdCBjb250cm9sQ29sMCA9IHtcbiAgICBjbGFzc05hbWU6ICdjb2wteHMtNicsXG4gICAgdHlwZTogY29udHJvbDAgJiYgY29udHJvbDAudHlwZSAmJiBjb250cm9sMC50eXBlICE9PSAnbm9uZScgPyBjb250cm9sMC50eXBlOiAgJ2JsYW5rJyxcbiAgICBrZXk6IGNvbnRyb2wwICYmIGNvbnRyb2wwLmtleSA/IGNvbnRyb2wwLmtleTogJ2JsYW5rJyArIERhdGUubm93KCksXG4gICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICB0eXBlOiBleHRyYWN0VGVtcGxhdGVPcHRpb25UeXBlKGNvbnRyb2wwKSxcbiAgICAgIGxhYmVsOiBleHRyYWN0VGVtcGxhdGVPcHRpb25MYWJlbChjb250cm9sMCksXG4gICAgICByZXF1aXJlZDogZXh0cmFjdFRlbXBsYXRlT3B0aW9uUmVxdWlyZWQoY29udHJvbDApLFxuICAgICAgcGxhY2Vob2xkZXI6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvblBsYWNlaG9sZGVyKGNvbnRyb2wwKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBleHRyYWN0VGVtcGxhdGVPcHRpb25EZXNjcmlwdGlvbihjb250cm9sMCksXG4gICAgICBvcHRpb25zOiBleHRyYWN0VGVtcGxhdGVPcHRpb25PcHRpb25zKGNvbnRyb2wwKVxuICAgIH0sXG4gICAgZGVmYXVsdFZhbHVlOiBleHRyYWN0RGVmYXVsdFZhbHVlKGNvbnRyb2wwKSxcbiAgICBleHByZXNzaW9uUHJvcGVydGllczogZXh0cmFjdEZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzKGNvbnRyb2wwKSxcbiAgICB2YWxpZGF0b3JzOiBleHRyYWN0Rm9ybWx5VmFsaWRhdG9ycyhjb250cm9sMCksXG4gICAgdmFsaWRhdGlvbjogZXh0cmFjdEZvcm1seVZhbGlkYXRpb24oY29udHJvbDApXG4gIH07XG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy9kYXRlcGlja2VyIGFkZGl0aW9ubmFsIHBhcnRpY3VsYXIgcHJvcGVydHlcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBpZiAoY29udHJvbDAudHlwZSA9PT0gJ2RhdGVwaWNrZXInKSB7XG4gICAgYWRkRGF0ZXBpY2tlck9wdGlvbnNQcm9wZXJ0eShjb250cm9sQ29sMCwgY29uZmlndXJhdGlvbk1vZGVsLCBsaW5lSW5kZXgpO1xuICB9XG5cbiAgY29uc3QgY29udHJvbDEgPSB7IC4uLmNvbmZpZ3VyYXRpb25Nb2RlbC5saW5lc1tsaW5lSW5kZXhdLmNvbHVtbnNbMV0uY29udHJvbCB9O1xuICBjb25zdCBoZWFkZXJUZW1wbGF0ZUNvbDEgPSAge1xuICAgIGNsYXNzTmFtZTogJ2NvbC14cy02JyxcbiAgICB0ZW1wbGF0ZTpgXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICR7ZXh0cmFjdFRlbXBsYXRlT3B0aW9uRGVzY3JpcHRpb24oY29udHJvbDEpfVxuICAgICAgICA8L2gyPlxuICAgICAgICA8aHIvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGBcbiAgfTtcbiAgY29uc3QgY29udHJvbENvbDEgPSAge1xuICAgIGNsYXNzTmFtZTogJ2NvbC14cy02JyxcbiAgICB0eXBlOiBjb250cm9sMSAmJiBjb250cm9sMS50eXBlICYmIGNvbnRyb2wxLnR5cGUgIT09ICdub25lJyA/IGNvbnRyb2wxLnR5cGUgOiAnbm9uZScsXG4gICAga2V5OiBjb250cm9sMSAmJiBjb250cm9sMS5rZXkgPyBjb250cm9sMS5rZXkgOiAnYmxhbmsnICsgRGF0ZS5ub3coKSxcbiAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgIHR5cGU6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvblR5cGUoY29udHJvbDEpLFxuICAgICAgbGFiZWw6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbkxhYmVsKGNvbnRyb2wxKSxcbiAgICAgIHJlcXVpcmVkOiBleHRyYWN0VGVtcGxhdGVPcHRpb25SZXF1aXJlZChjb250cm9sMSksXG4gICAgICBwbGFjZWhvbGRlcjogZXh0cmFjdFRlbXBsYXRlT3B0aW9uUGxhY2Vob2xkZXIoY29udHJvbDEpLFxuICAgICAgZGVzY3JpcHRpb246IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbkRlc2NyaXB0aW9uKGNvbnRyb2wxKSxcbiAgICAgIG9wdGlvbnM6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbk9wdGlvbnMoY29udHJvbDEpXG4gICAgfSxcbiAgICBkZWZhdWx0VmFsdWU6IGV4dHJhY3REZWZhdWx0VmFsdWUoY29udHJvbDEpLFxuICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiBleHRyYWN0Rm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMoY29udHJvbDEpLFxuICAgIHZhbGlkYXRvcnM6IGV4dHJhY3RGb3JtbHlWYWxpZGF0b3JzKGNvbnRyb2wxKSxcbiAgICB2YWxpZGF0aW9uOiBleHRyYWN0Rm9ybWx5VmFsaWRhdGlvbihjb250cm9sMSlcbiAgfTtcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBkYXRlcGlja2VyIGFkZGl0aW9ubmFsIHBhcnRpY3VsYXIgcHJvcGVydHlcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBpZiAoY29udHJvbDEudHlwZSA9PT0gJ2RhdGVwaWNrZXInKSB7XG4gICAgYWRkRGF0ZXBpY2tlck9wdGlvbnNQcm9wZXJ0eShjb250cm9sQ29sMSwgY29uZmlndXJhdGlvbk1vZGVsLCBsaW5lSW5kZXgpO1xuICB9XG5cbiAgY29uc3QgRmllbGRHcm91cCA9IFtdO1xuXG4gIGlmIChjb250cm9sMC50eXBlID09PSAnaGVhZGVyJykge1xuICAgRmllbGRHcm91cC5wdXNoKGhlYWRlclRlbXBsYXRlQ29sMCk7XG4gIH0gZWxzZSB7XG4gICBGaWVsZEdyb3VwLnB1c2goY29udHJvbENvbDApO1xuICB9XG5cbiAgaWYgKGNvbnRyb2wxLnR5cGUgPT09ICdoZWFkZXInKSB7XG4gICBGaWVsZEdyb3VwLnB1c2goaGVhZGVyVGVtcGxhdGVDb2wxKTtcbiAgfSBlbHNlIHtcbiAgIEZpZWxkR3JvdXAucHVzaChjb250cm9sQ29sMSk7XG4gIH1cblxuICBmb3JtbHlNb2RlbC5wdXNoKHtcbiAgICBjbGFzc05hbWU6ICdyb3cnLFxuICAgIGZpZWxkR3JvdXA6IEZpZWxkR3JvdXBcbiAgfSk7XG59O1xuXG5cbmNvbnN0IGFkZFRocmVlQ29sdW1uQ29udHJvbCA9IChmb3JtbHlNb2RlbCwgY29uZmlndXJhdGlvbk1vZGVsLGxpbmVJbmRleCkgPT4ge1xuICBjb25zdCBjb250cm9sMCA9IHsgLi4uY29uZmlndXJhdGlvbk1vZGVsLmxpbmVzW2xpbmVJbmRleF0uY29sdW1uc1swXS5jb250cm9sIH07XG4gIC8vdGV4dCBoZWFkZXIgaXMgc3RvcmVkIGluIFwiZGVzY3JpcHRpb25cIiBpbiB0ZW1wbGF0ZU90aW9uIG1vZGVsXG4gIGNvbnN0IGhlYWRlclRlbXBsYXRlQ29sMCA9ICB7XG4gICAgY2xhc3NOYW1lOiAnY29sLXhzLTQnLFxuICAgIHRlbXBsYXRlIDogYFxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAke2V4dHJhY3RUZW1wbGF0ZU9wdGlvbkRlc2NyaXB0aW9uKGNvbnRyb2wwKX1cbiAgICAgICAgPC9oMj5cbiAgICAgICAgPGhyLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIGBcbiAgfTtcbiAgY29uc3QgY29udHJvbENvbDAgPSAge1xuICAgIGNsYXNzTmFtZTogJ2NvbC14cy00JyxcbiAgICB0eXBlOiBjb250cm9sMCAmJiBjb250cm9sMC50eXBlICYmIGNvbnRyb2wwLnR5cGUgIT09ICdub25lJyA/IGNvbnRyb2wwLnR5cGU6ICAnYmxhbmsnLFxuICAgIGtleTogY29udHJvbDAgJiYgY29udHJvbDAua2V5ID8gY29udHJvbDAua2V5OiAnYmxhbmsnICsgRGF0ZS5ub3coKSxcbiAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgIHR5cGU6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvblR5cGUoY29udHJvbDApLFxuICAgICAgbGFiZWw6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbkxhYmVsKGNvbnRyb2wwKSxcbiAgICAgIHJlcXVpcmVkOiBleHRyYWN0VGVtcGxhdGVPcHRpb25SZXF1aXJlZChjb250cm9sMCksXG4gICAgICBwbGFjZWhvbGRlcjogZXh0cmFjdFRlbXBsYXRlT3B0aW9uUGxhY2Vob2xkZXIoY29udHJvbDApLFxuICAgICAgZGVzY3JpcHRpb246IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbkRlc2NyaXB0aW9uKGNvbnRyb2wwKSxcbiAgICAgIG9wdGlvbnM6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbk9wdGlvbnMoY29udHJvbDApXG4gICAgfSxcbiAgICBkZWZhdWx0VmFsdWU6IGV4dHJhY3REZWZhdWx0VmFsdWUoY29udHJvbDApLFxuICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiBleHRyYWN0Rm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMoY29udHJvbDApLFxuICAgIHZhbGlkYXRvcnM6IGV4dHJhY3RGb3JtbHlWYWxpZGF0b3JzKGNvbnRyb2wwKSxcbiAgICB2YWxpZGF0aW9uOiBleHRyYWN0Rm9ybWx5VmFsaWRhdGlvbihjb250cm9sMClcbiAgfTtcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvL2RhdGVwaWNrZXIgYWRkaXRpb25uYWwgcGFydGljdWxhciBwcm9wZXJ0eVxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIGlmIChjb250cm9sMC50eXBlID09PSAnZGF0ZXBpY2tlcicpIHtcbiAgYWRkRGF0ZXBpY2tlck9wdGlvbnNQcm9wZXJ0eShjb250cm9sQ29sMCwgY29uZmlndXJhdGlvbk1vZGVsLGxpbmVJbmRleCk7XG4gIH1cblxuICBjb25zdCBjb250cm9sMSA9IHsgLi4uY29uZmlndXJhdGlvbk1vZGVsLmxpbmVzW2xpbmVJbmRleF0uY29sdW1uc1sxXS5jb250cm9sIH07XG4gIGNvbnN0IGhlYWRlclRlbXBsYXRlQ29sMSA9ICB7XG4gICAgY2xhc3NOYW1lOiAnY29sLXhzLTQnLFxuICAgIHRlbXBsYXRlOmBcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgJHtleHRyYWN0VGVtcGxhdGVPcHRpb25EZXNjcmlwdGlvbihjb250cm9sMSl9XG4gICAgICAgIDwvaDI+XG4gICAgICAgIDxoci8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBgXG4gIH07XG4gIGNvbnN0IGNvbnRyb2xDb2wxID0ge1xuICAgIGNsYXNzTmFtZTogJ2NvbC14cy00JyxcbiAgICB0eXBlOiBjb250cm9sMSAmJiBjb250cm9sMS50eXBlICYmIGNvbnRyb2wxLnR5cGUgIT09ICdub25lJyA/IGNvbnRyb2wxLnR5cGU6ICAnYmxhbmsnLFxuICAgIGtleTogY29udHJvbDEgJiYgY29udHJvbDEua2V5ID8gY29udHJvbDEua2V5OiAnYmxhbmsnICsgRGF0ZS5ub3coKSxcbiAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgIHR5cGU6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvblR5cGUoY29udHJvbDEpLFxuICAgICAgbGFiZWw6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbkxhYmVsKGNvbnRyb2wxKSxcbiAgICAgIHJlcXVpcmVkOiBleHRyYWN0VGVtcGxhdGVPcHRpb25SZXF1aXJlZChjb250cm9sMSksXG4gICAgICBwbGFjZWhvbGRlcjogZXh0cmFjdFRlbXBsYXRlT3B0aW9uUGxhY2Vob2xkZXIoY29udHJvbDEpLFxuICAgICAgZGVzY3JpcHRpb246IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbkRlc2NyaXB0aW9uKGNvbnRyb2wxKSxcbiAgICAgIG9wdGlvbnM6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbk9wdGlvbnMoY29udHJvbDEpXG4gICAgfSxcbiAgICBkZWZhdWx0VmFsdWU6IGV4dHJhY3REZWZhdWx0VmFsdWUoY29udHJvbDEpLFxuICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiBleHRyYWN0Rm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMoY29udHJvbDEpLFxuICAgIHZhbGlkYXRvcnM6IGV4dHJhY3RGb3JtbHlWYWxpZGF0b3JzKGNvbnRyb2wxKSxcbiAgICB2YWxpZGF0aW9uOiBleHRyYWN0Rm9ybWx5VmFsaWRhdGlvbihjb250cm9sMSlcbiAgfTtcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvL2RhdGVwaWNrZXIgYWRkaXRpb25uYWwgcGFydGljdWxhciBwcm9wZXJ0eVxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIGlmIChjb250cm9sMS50eXBlID09PSAnZGF0ZXBpY2tlcicpIHtcbiAgYWRkRGF0ZXBpY2tlck9wdGlvbnNQcm9wZXJ0eShjb250cm9sQ29sMSwgY29uZmlndXJhdGlvbk1vZGVsLGxpbmVJbmRleCk7XG4gIH1cblxuICBjb25zdCBjb250cm9sMiA9IHsgLi4uY29uZmlndXJhdGlvbk1vZGVsLmxpbmVzW2xpbmVJbmRleF0uY29sdW1uc1syXS5jb250cm9sIH07XG4gIGNvbnN0IGhlYWRlclRlbXBsYXRlQ29sMiA9ICB7XG4gICAgY2xhc3NOYW1lOiAnY29sLXhzLTQnLFxuICAgIHRlbXBsYXRlOmBcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgJHtleHRyYWN0VGVtcGxhdGVPcHRpb25EZXNjcmlwdGlvbihjb250cm9sMil9XG4gICAgICAgIDwvaDI+XG4gICAgICAgIDxoci8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBgXG4gIH07XG4gIGNvbnN0IGNvbnRyb2xDb2wyID0ge1xuICAgIGNsYXNzTmFtZTogJ2NvbC14cy00JyxcbiAgICB0eXBlOiBjb250cm9sMiAmJiBjb250cm9sMi50eXBlICYmIGNvbnRyb2wyLnR5cGUgIT09ICdub25lJyA/IGNvbnRyb2wyLnR5cGU6ICAnYmxhbmsnLFxuICAgIGtleTogY29udHJvbDIgJiYgY29udHJvbDIua2V5ID8gY29udHJvbDIua2V5OiAnYmxhbmsnICsgRGF0ZS5ub3coKSxcbiAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgIHR5cGU6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvblR5cGUoY29udHJvbDIpLFxuICAgICAgbGFiZWw6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbkxhYmVsKGNvbnRyb2wyKSxcbiAgICAgIHJlcXVpcmVkOiBleHRyYWN0VGVtcGxhdGVPcHRpb25SZXF1aXJlZChjb250cm9sMiksXG4gICAgICBwbGFjZWhvbGRlcjogZXh0cmFjdFRlbXBsYXRlT3B0aW9uUGxhY2Vob2xkZXIoY29udHJvbDIpLFxuICAgICAgZGVzY3JpcHRpb246IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbkRlc2NyaXB0aW9uKGNvbnRyb2wyKSxcbiAgICAgIG9wdGlvbnM6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvbk9wdGlvbnMoY29udHJvbDIpXG4gICAgfSxcbiAgICBkZWZhdWx0VmFsdWU6IGV4dHJhY3REZWZhdWx0VmFsdWUoY29udHJvbDIpLFxuICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiBleHRyYWN0Rm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMoY29udHJvbDIpLFxuICAgIHZhbGlkYXRvcnM6IGV4dHJhY3RGb3JtbHlWYWxpZGF0b3JzKGNvbnRyb2wyKSxcbiAgICB2YWxpZGF0aW9uOiBleHRyYWN0Rm9ybWx5VmFsaWRhdGlvbihjb250cm9sMilcbiAgfTtcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvL2RhdGVwaWNrZXIgYWRkaXRpb25uYWwgcGFydGljdWxhciBwcm9wZXJ0eVxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIGlmIChjb250cm9sMi50eXBlID09PSAnZGF0ZXBpY2tlcicpIHtcbiAgYWRkRGF0ZXBpY2tlck9wdGlvbnNQcm9wZXJ0eShjb250cm9sQ29sMiwgY29uZmlndXJhdGlvbk1vZGVsLGxpbmVJbmRleCk7XG4gIH1cblxuICBjb25zdCBGaWVsZEdyb3VwID0gW107XG5cbiAgaWYgKGNvbnRyb2wwLnR5cGUgPT09ICdoZWFkZXInKSB7XG4gICAgRmllbGRHcm91cC5wdXNoKGhlYWRlclRlbXBsYXRlQ29sMCk7XG4gIH1lbHNle1xuICAgIEZpZWxkR3JvdXAucHVzaChjb250cm9sQ29sMCk7XG4gIH1cblxuICBpZiAoY29udHJvbDEudHlwZSA9PT0gJ2hlYWRlcicpIHtcbiAgICBGaWVsZEdyb3VwLnB1c2goaGVhZGVyVGVtcGxhdGVDb2wxKTtcbiAgfWVsc2V7XG4gICAgRmllbGRHcm91cC5wdXNoKGNvbnRyb2xDb2wxKTtcbiAgfVxuXG4gIGlmIChjb250cm9sMi50eXBlID09PSAnaGVhZGVyJykge1xuICAgIEZpZWxkR3JvdXAucHVzaChoZWFkZXJUZW1wbGF0ZUNvbDIpO1xuICB9ZWxzZXtcbiAgICBGaWVsZEdyb3VwLnB1c2goY29udHJvbENvbDIpO1xuICB9XG5cbiAgZm9ybWx5TW9kZWwucHVzaCh7XG4gICAgY2xhc3NOYW1lOiAncm93JyxcbiAgICBmaWVsZEdyb3VwOiBGaWVsZEdyb3VwXG4gIH0pO1xufTtcblxuXG5jb25zdCByZXNldERhdGFNb2RlbCA9IChvYmopID0+IHtcbiAgY29uc3QgZW1wdHlEYXRhTW9kZWwgPSB7fTtcbiAgYW5ndWxhci5jb3B5KGVtcHR5RGF0YU1vZGVsLCBvYmopO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cblxuY29uc3QgcmVzZXRGb3JtbHlNb2RlbCA9IChmb3JtbHlNb2RlbCkgPT4ge1xuICBjb25zdCByZXNldGZvcm1seSA9IFtdO1xuICBhbmd1bGFyLmNvcHkocmVzZXRmb3JtbHksIGZvcm1seU1vZGVsKTtcbn07XG5cblxuZXhwb3J0IHtcbiAgY29uZmlndXJhdGlvbk1vZGVsSW5pdCxcbiAgY29uZmlndXJhdGlvbk1vZGVsUmVzdWx0LFxuICByZXNldERhdGFNb2RlbCxcbiAgcmVzZXRGb3JtbHlNb2RlbCxcblxuICBpc1RlbXBsYXRlT3B0aW9uRGVmaW5lZCxcbiAgZXh0cmFjdFRlbXBsYXRlT3B0aW9uTGFiZWwsXG4gIGV4dHJhY3RUZW1wbGF0ZU9wdGlvbkRhdGVwaWNrZXJPcHRpb25zLFxuICBleHRyYWN0RGVmYXVsdFZhbHVlLFxuICBleHRyYWN0Rm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMsXG4gIGV4dHJhY3RGb3JtbHlWYWxpZGF0b3JzLFxuICBleHRyYWN0Rm9ybWx5VmFsaWRhdGlvbixcbiAgZXh0cmFjdFRlbXBsYXRlT3B0aW9uUmVxdWlyZWQsXG4gIGV4dHJhY3RUZW1wbGF0ZU9wdGlvbk9wdGlvbnMsXG4gIGV4dHJhY3RUZW1wbGF0ZU9wdGlvblR5cGUsXG4gIGV4dHJhY3RUZW1wbGF0ZU9wdGlvblBsYWNlaG9sZGVyLFxuICBleHRyYWN0VGVtcGxhdGVPcHRpb25EZXNjcmlwdGlvbixcblxuICBhZGREYXRlcGlja2VyT3B0aW9uc1Byb3BlcnR5LFxuICBhZGRPbmVDb2x1bW5Db250cm9sLFxuICBhZGRUd29Db2x1bW5Db250cm9sLFxuICBhZGRUaHJlZUNvbHVtbkNvbnRyb2xcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvc2VydmljZXMvZm9ybWx5UHJveHkvZm9ybWx5UHJveHkuc2VydmljZS5oZWxwZXJzLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 56 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _formlyConfig = __webpack_require__(57);\n\nfunction formlyConfig(formlyConfigProvider) {\n formlyConfigProvider.setType({\n name: 'richEditor',\n template: _formlyConfig.richTextTemplate.template,\n wrapper: ['bootstrapLabel', 'bootstrapHasError']\n });\n\n formlyConfigProvider.setType({\n name: 'blank',\n template: _formlyConfig.blankTemplate.template\n });\n\n formlyConfigProvider.setType({\n name: 'header',\n template: _formlyConfig.headerTemplate.template\n });\n\n formlyConfigProvider.setType({\n name: 'subTitle',\n template: _formlyConfig.subTitleTemplate.template\n });\n\n formlyConfigProvider.setType({\n name: 'basicSelect',\n template: _formlyConfig.basicSelectTemplate.template,\n wrapper: ['bootstrapLabel', 'bootstrapHasError']\n });\n\n formlyConfigProvider.setType({\n name: 'groupedSelect',\n template: _formlyConfig.groupedSelectTemplate.template,\n wrapper: ['bootstrapLabel', 'bootstrapHasError']\n });\n\n // implement from : http://jsbin.com/koredu/edit?js,output\n // formlyConfigProvider.setType({\n // name: 'upload',\n // extends: 'input',\n // wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n // link: function(scope, el, attrs) {\n // el.on(\"change\", function(changeEvent) {\n // var file = changeEvent.target.files[0];\n // if (file) {\n // // console.log('scope.id', scope.id);\n // var fd = new FormData();\n // // use key on backEnd\n // fd.append('uploadFile', file);\n // scope.$emit('fileToUpload', fd);\n // var fileProp = {};\n // for (var properties in file) {\n // if (!angular.isFunction(file[properties])) {\n // fileProp[properties] = file[properties];\n // }\n // }\n // scope.fc.$setViewValue(fileProp);\n // } else {\n // scope.fc.$setViewValue(undefined);\n // }\n // });\n // el.on(\"focusout\", (focusoutEvent) => {\n // // dont run validation , user still opening pop up file dialog\n // if ($window.document.activeElement.id === scope.id) {\n // // so we set it untouched\n // scope.$apply(function(scope) {\n // scope.fc.$setUntouched();\n // });\n // } else {\n // // element losing focus so we trigger validation\n // scope.fc.$validate();\n // }\n // });\n // },\n // defaultOptions: {\n // templateOptions: {\n // type: 'file',\n // required: true\n // }\n // }\n // });\n\n ////////////////////////////\n // angular UI date picker\n ////////////////////////////\n // thx Kent C. Dodds\n\n var attributes = ['date-disabled', 'custom-class', 'show-weeks', 'starting-day', 'init-date', 'min-mode', 'max-mode', 'format-day', 'format-month', 'format-year', 'format-day-header', 'format-day-title', 'format-month-title', 'year-range', 'shortcut-propagation', 'datepicker-popup', 'show-button-bar', 'current-text', 'clear-text', 'close-text', 'close-on-date-selection', 'datepicker-append-to-body'];\n\n var bindings = ['datepicker-mode', 'min-date', 'max-date'];\n\n var ngModelAttrs = {};\n angular.forEach(attributes, function (attr) {\n ngModelAttrs[camelize(attr)] = { attribute: attr };\n });\n\n angular.forEach(bindings, function (binding) {\n ngModelAttrs[camelize(binding)] = { bound: binding };\n });\n\n formlyConfigProvider.setType({\n name: 'datepicker',\n template: _formlyConfig.datepickerTemplate.template,\n defaultOptions: {\n ngModelAttrs: ngModelAttrs,\n templateOptions: {\n datepickerOptions: {\n format: 'dd/MM/yyyy',\n initDate: new Date(),\n showWeeks: false\n }\n }\n },\n wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n controller: ['$scope', function ($scope) {\n $scope.datepicker = {};\n // make sure the initial value is of type DATE!\n var currentModelVal = $scope.model[$scope.options.key];\n if (typeof currentModelVal == 'string') {\n $scope.model[$scope.options.key] = new Date(currentModelVal);\n }\n $scope.datepicker.opened = false;\n $scope.datepicker.open = function ($event) {\n $event.preventDefault();\n $event.stopPropagation();\n $scope.datepicker.opened = !$scope.datepicker.opened;\n };\n }]\n });\n\n /**\n * wrappers to show validation errors\n * without having to rewrite formly types\n */\n formlyConfigProvider.setWrapper([{\n template: _formlyConfig.validationTemplate.template\n }]);\n\n function camelize(string) {\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n });\n // Ensure 1st char is always lowercase\n return string.replace(/^([A-Z])/, function (match, chr) {\n return chr ? chr.toLowerCase() : '';\n });\n }\n}\n\nformlyConfig.$inject = ['formlyConfigProvider'];\n\nexports.default = formlyConfig;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29uZmlnL2Zvcm1seS9mb3JtbHkuY29uZmlnLmpzP2M1ZDciXSwibmFtZXMiOlsiZm9ybWx5Q29uZmlnIiwiZm9ybWx5Q29uZmlnUHJvdmlkZXIiLCJzZXRUeXBlIiwibmFtZSIsInRlbXBsYXRlIiwid3JhcHBlciIsImF0dHJpYnV0ZXMiLCJiaW5kaW5ncyIsIm5nTW9kZWxBdHRycyIsImFuZ3VsYXIiLCJmb3JFYWNoIiwiYXR0ciIsImNhbWVsaXplIiwiYXR0cmlidXRlIiwiYmluZGluZyIsImJvdW5kIiwiZGVmYXVsdE9wdGlvbnMiLCJ0ZW1wbGF0ZU9wdGlvbnMiLCJkYXRlcGlja2VyT3B0aW9ucyIsImZvcm1hdCIsImluaXREYXRlIiwiRGF0ZSIsInNob3dXZWVrcyIsImNvbnRyb2xsZXIiLCIkc2NvcGUiLCJkYXRlcGlja2VyIiwiY3VycmVudE1vZGVsVmFsIiwibW9kZWwiLCJvcHRpb25zIiwia2V5Iiwib3BlbmVkIiwib3BlbiIsIiRldmVudCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwic2V0V3JhcHBlciIsInN0cmluZyIsInJlcGxhY2UiLCJtYXRjaCIsImNociIsInRvVXBwZXJDYXNlIiwidG9Mb3dlckNhc2UiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFZQSxTQUFTQSxZQUFULENBQXNCQyxvQkFBdEIsRUFBMkM7QUFDekNBLHVCQUFxQkMsT0FBckIsQ0FDRTtBQUNFQyxVQUFNLFlBRFI7QUFFRUMsY0FBVSwrQkFBaUJBLFFBRjdCO0FBR0VDLGFBQVMsQ0FBQyxnQkFBRCxFQUFtQixtQkFBbkI7QUFIWCxHQURGOztBQVFBSix1QkFBcUJDLE9BQXJCLENBQ0U7QUFDRUMsVUFBTSxPQURSO0FBRUVDLGNBQVUsNEJBQWNBO0FBRjFCLEdBREY7O0FBT0FILHVCQUFxQkMsT0FBckIsQ0FDRTtBQUNFQyxVQUFNLFFBRFI7QUFFRUMsY0FBVSw2QkFB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a0I7QUFDekNBLGVBQU9DLGNBQVA7QUFDQUQsZUFBT0UsZUFBUDtBQUNBVixlQUFPQyxVQUFQLENBQWtCSyxNQUFsQixHQUEyQixDQUFDTixPQUFPQyxVQUFQLENBQWtCSyxNQUE5QztBQUNELE9BSkQ7QUFLRCxLQWJXO0FBZGUsR0FBN0I7O0FBOEJBOzs7O0FBSUE3Qix1QkFBcUJrQyxVQUFyQixDQUFnQyxDQUM5QjtBQUNFL0IsY0FBVSxpQ0FBbUJBO0FBRC9CLEdBRDhCLENBQWhDOztBQU1BLFdBQVNRLFFBQVQsQ0FBa0J3QixNQUFsQixFQUEwQjtBQUN4QkEsYUFBU0EsT0FBT0MsT0FBUCxDQUFlLGVBQWYsRUFBZ0MsVUFBU0MsS0FBVCxFQUFnQkMsR0FBaEIsRUFBcUI7QUFDNUQsYUFBT0EsTUFBTUEsSUFBSUMsV0FBSixFQUFOLEdBQTBCLEVBQWpDO0FBQ0QsS0FGUSxDQUFUO0FBR0E7QUFDQSxXQUFPSixPQUFPQyxPQUFQLENBQWUsVUFBZixFQUEyQixVQUFTQyxLQUFULEVBQWdCQyxHQUFoQixFQUFxQjtBQUNyRCxhQUFPQSxNQUFNQSxJQUFJRSxXQUFKLEVBQU4sR0FBMEIsRUFBakM7QUFDRCxLQUZNLENBQVA7QUFHRDtBQUNGOztBQUVEekMsYUFBYTBDLE9BQWIsR0FBdUIsQ0FBQyxzQkFBRCxDQUF2Qjs7a0JBRWUxQyxZIiwiZmlsZSI6IjU2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgcmljaFRleHRUZW1wbGF0ZSxcbiAgYmxhbmtUZW1wbGF0ZSxcbiAgaGVhZGVyVGVtcGxhdGUsXG4gIHN1YlRpdGxlVGVtcGxhdGUsXG4gIGJhc2ljU2VsZWN0VGVtcGxhdGUsXG4gIGdyb3VwZWRTZWxlY3RUZW1wbGF0ZSxcbiAgZGF0ZXBpY2tlclRlbXBsYXRlLFxuICB2YWxpZGF0aW9uVGVtcGxhdGVcbn0gZnJvbSAnLi9mb3JtbHkuY29uZmlnLnRlbXBsYXRlcyc7XG5cblxuZnVuY3Rpb24gZm9ybWx5Q29uZmlnKGZvcm1seUNvbmZpZ1Byb3ZpZGVyKXtcbiAgZm9ybWx5Q29uZmlnUHJvdmlkZXIuc2V0VHlwZShcbiAgICB7XG4gICAgICBuYW1lOiAncmljaEVkaXRvcicsXG4gICAgICB0ZW1wbGF0ZTogcmljaFRleHRUZW1wbGF0ZS50ZW1wbGF0ZSxcbiAgICAgIHdyYXBwZXI6IFsnYm9vdHN0cmFwTGFiZWwnLCAnYm9vdHN0cmFwSGFzRXJyb3InXVxuICAgIH1cbiAgKTtcblxuICBmb3JtbHlDb25maWdQcm92aWRlci5zZXRUeXBlKFxuICAgIHtcbiAgICAgIG5hbWU6ICdibGFuaycsXG4gICAgICB0ZW1wbGF0ZTogYmxhbmtUZW1wbGF0ZS50ZW1wbGF0ZVxuICAgIH1cbiAgKTtcblxuICBmb3JtbHlDb25maWdQcm92aWRlci5zZXRUeXBlKFxuICAgIHtcbiAgICAgIG5hbWU6ICdoZWFkZXInLFxuICAgICAgdGVtcGxhdGU6IGhlYWRlclRlbXBsYXRlLnRlbXBsYXRlXG4gICAgfVxuICApO1xuXG4gIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoXG4gICAge1xuICAgICAgbmFtZTogJ3N1YlRpdGxlJyxcbiAgICAgIHRlbXBsYXRlOiBzdWJUaXRsZVRlbXBsYXRlLnRlbXBsYXRlXG4gICAgfVxuICApO1xuXG4gIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoXG4gICAge1xuICAgICAgbmFtZTogJ2Jhc2ljU2VsZWN0JyxcbiAgICAgIHRlbXBsYXRlOiBiYXNpY1NlbGVjdFRlbXBsYXRlLnRlbXBsYXRlLFxuICAgICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddXG4gICAgfVxuICApO1xuXG4gIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoXG4gICAge1xuICAgICAgbmFtZTogJ2dyb3VwZWRTZWxlY3QnLFxuICAgICAgdGVtcGxhdGU6IGdyb3VwZWRTZWxlY3RUZW1wbGF0ZS50ZW1wbGF0ZSxcbiAgICAgIHdyYXBwZXI6IFsnYm9vdHN0cmFwTGFiZWwnLCAnYm9vdHN0cmFwSGFzRXJyb3InXVxuICAgIH1cbiAgKTtcblxuICAvLyBpbXBsZW1lbnQgZnJvbSA6IGh0dHA6Ly9qc2Jpbi5jb20va29yZWR1L2VkaXQ/anMsb3V0cHV0XG4gIC8vIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuICAvLyAgICAgbmFtZTogJ3VwbG9hZCcsXG4gIC8vICAgICBleHRlbmRzOiAnaW5wdXQnLFxuICAvLyAgICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddLFxuICAvLyAgICAgbGluazogZnVuY3Rpb24oc2NvcGUsIGVsLCBhdHRycykge1xuICAvLyAgICAgICBlbC5vbihcImNoYW5nZVwiLCBmdW5jdGlvbihjaGFuZ2VFdmVudCkge1xuICAvLyAgICAgICAgIHZhciBmaWxlID0gY2hhbmdlRXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuICAvLyAgICAgICAgIGlmIChmaWxlKSB7XG4gIC8vICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnc2NvcGUuaWQnLCBzY29wZS5pZCk7XG4gIC8vICAgICAgICAgICB2YXIgZmQgPSBuZXcgRm9ybURhdGEoKTtcbiAgLy8gICAgICAgICAgIC8vIHVzZSBrZXkgb24gYmFja0VuZFxuICAvLyAgICAgICAgICAgZmQuYXBwZW5kKCd1cGxvYWRGaWxlJywgZmlsZSk7XG4gIC8vICAgICAgICAgICBzY29wZS4kZW1pdCgnZmlsZVRvVXBsb2FkJywgZmQpO1xuICAvLyAgICAgICAgICAgdmFyIGZpbGVQcm9wID0ge307XG4gIC8vICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0aWVzIGluIGZpbGUpIHtcbiAgLy8gICAgICAgICAgICAgaWYgKCFhbmd1bGFyLmlzRnVuY3Rpb24oZmlsZVtwcm9wZXJ0aWVzXSkpIHtcbiAgLy8gICAgICAgICAgICAgICBmaWxlUHJvcFtwcm9wZXJ0aWVzXSA9IGZpbGVbcHJvcGVydGllc107XG4gIC8vICAgICAgICAgICAgIH1cbiAgLy8gICAgICAgICAgIH1cbiAgLy8gICAgICAgICAgIHNjb3BlLmZjLiRzZXRWaWV3VmFsdWUoZmlsZVByb3ApO1xuICAvLyAgICAgICAgIH0gZWxzZSB7XG4gIC8vICAgICAgICAgICBzY29wZS5mYy4kc2V0Vmlld1ZhbHVlKHVuZGVmaW5lZCk7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9KTtcbiAgLy8gICAgICAgZWwub24oXCJmb2N1c291dFwiLCAoZm9jdXNvdXRFdmVudCkgPT4ge1xuICAvLyAgICAgICAgIC8vIGRvbnQgcnVuIHZhbGlkYXRpb24gLCB1c2VyIHN0aWxsIG9wZW5pbmcgcG9wIHVwIGZpbGUgZGlhbG9nXG4gIC8vICAgICAgICAgaWYgKCR3aW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5pZCA9PT0gc2NvcGUuaWQpIHtcbiAgLy8gICAgICAgICAgIC8vIHNvIHdlIHNldCBpdCB1bnRvdWNoZWRcbiAgLy8gICAgICAgICAgIHNjb3BlLiRhcHBseShmdW5jdGlvbihzY29wZSkge1xuICAvLyAgICAgICAgICAgICBzY29wZS5mYy4kc2V0VW50b3VjaGVkKCk7XG4gIC8vICAgICAgICAgICB9KTtcbiAgLy8gICAgICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAgICAgLy8gZWxlbWVudCBsb3NpbmcgZm9jdXMgc28gd2UgdHJpZ2dlciB2YWxpZGF0aW9uXG4gIC8vICAgICAgICAgICBzY29wZS5mYy4kdmFsaWRhdGUoKTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH0pO1xuICAvLyAgICAgfSxcbiAgLy8gICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gIC8vICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAvLyAgICAgICAgIHR5cGU6ICdmaWxlJyxcbiAgLy8gICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfSk7XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBhbmd1bGFyIFVJIGRhdGUgcGlja2VyXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gdGh4IEtlbnQgQy4gRG9kZHNcblxuICBjb25zdCBhdHRyaWJ1dGVzID0gW1xuICAgICAnZGF0ZS1kaXNhYmxlZCcsXG4gICAgICdjdXN0b20tY2xhc3MnLFxuICAgICAnc2hvdy13ZWVrcycsXG4gICAgICdzdGFydGluZy1kYXknLFxuICAgICAnaW5pdC1kYXRlJyxcbiAgICAgJ21pbi1tb2RlJyxcbiAgICAgJ21heC1tb2RlJyxcbiAgICAgJ2Zvcm1hdC1kYXknLFxuICAgICAnZm9ybWF0LW1vbnRoJyxcbiAgICAgJ2Zvcm1hdC15ZWFyJyxcbiAgICAgJ2Zvcm1hdC1kYXktaGVhZGVyJyxcbiAgICAgJ2Zvcm1hdC1kYXktdGl0bGUnLFxuICAgICAnZm9ybWF0LW1vbnRoLXRpdGxlJyxcbiAgICAgJ3llYXItcmFuZ2UnLFxuICAgICAnc2hvcnRjdXQtcHJvcGFnYXRpb24nLFxuICAgICAnZGF0ZXBpY2tlci1wb3B1cCcsXG4gICAgICdzaG93LWJ1dHRvbi1iYXInLFxuICAgICAnY3VycmVudC10ZXh0JyxcbiAgICAgJ2NsZWFyLXRleHQnLFxuICAgICAnY2xvc2UtdGV4dCcsXG4gICAgICdjbG9zZS1vbi1kYXRlLXNlbGVjdGlvbicsXG4gICAgICdkYXRlcGlja2VyLWFwcGVuZC10by1ib2R5J1xuICAgXTtcblxuICBjb25zdCBiaW5kaW5ncyA9IFtcbiAgICAnZGF0ZXBpY2tlci1tb2RlJyxcbiAgICAnbWluLWRhdGUnLFxuICAgICdtYXgtZGF0ZSdcbiAgXTtcblxuICBjb25zdCBuZ01vZGVsQXR0cnMgPSB7fTtcbiAgYW5ndWxhci5mb3JFYWNoKGF0dHJpYnV0ZXMsIChhdHRyKSA9PiB7XG4gICAgbmdNb2RlbEF0dHJzW2NhbWVsaXplKGF0dHIpXSA9IHthdHRyaWJ1dGU6IGF0dHJ9O1xuICB9KTtcblxuICBhbmd1bGFyLmZvckVhY2goYmluZGluZ3MsIChiaW5kaW5nKSA9PiB7XG4gICAgbmdNb2RlbEF0dHJzW2NhbWVsaXplKGJpbmRpbmcpXSA9IHtib3VuZDogYmluZGluZ307XG4gIH0pO1xuXG4gIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuICAgIG5hbWU6ICdkYXRlcGlja2VyJyxcbiAgICB0ZW1wbGF0ZTogZGF0ZXBpY2tlclRlbXBsYXRlLnRlbXBsYXRlLFxuICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICBuZ01vZGVsQXR0cnM6IG5nTW9kZWxBdHRycyxcbiAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICBkYXRlcGlja2VyT3B0aW9uczoge1xuICAgICAgICAgIGZvcm1hdDogJ2RkL01NL3l5eXknLFxuICAgICAgICAgIGluaXREYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIHNob3dXZWVrczogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddLFxuICAgIGNvbnRyb2xsZXI6IFsnJHNjb3BlJywgKCRzY29wZSkgPT4ge1xuICAgICAgJHNjb3BlLmRhdGVwaWNrZXIgPSB7fTtcbiAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgaW5pdGlhbCB2YWx1ZSBpcyBvZiB0eXBlIERBVEUhXG4gICAgICB2YXIgY3VycmVudE1vZGVsVmFsID0gJHNjb3BlLm1vZGVsWyRzY29wZS5vcHRpb25zLmtleV07XG4gICAgICBpZiAodHlwZW9mIChjdXJyZW50TW9kZWxWYWwpID09ICdzdHJpbmcnKXtcbiAgICAgICAgJHNjb3BlLm1vZGVsWyRzY29wZS5vcHRpb25zLmtleV0gPSBuZXcgRGF0ZShjdXJyZW50TW9kZWxWYWwpO1xuICAgICAgfVxuICAgICAgJHNjb3BlLmRhdGVwaWNrZXIub3BlbmVkID0gZmFsc2U7XG4gICAgICAkc2NvcGUuZGF0ZXBpY2tlci5vcGVuID0gZnVuY3Rpb24gKCRldmVudCkge1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAkc2NvcGUuZGF0ZXBpY2tlci5vcGVuZWQgPSAhJHNjb3BlLmRhdGVwaWNrZXIub3BlbmVkO1xuICAgICAgfTtcbiAgICB9XVxuICB9KTtcblxuICAvKipcbiAgICAqIHdyYXBwZXJzIHRvIHNob3cgdmFsaWRhdGlvbiBlcnJvcnNcbiAgICAqIHdpdGhvdXQgaGF2aW5nIHRvIHJld3JpdGUgZm9ybWx5IHR5cGVzXG4gICAgKi9cbiAgZm9ybWx5Q29uZmlnUHJvdmlkZXIuc2V0V3JhcHBlcihbXG4gICAge1xuICAgICAgdGVtcGxhdGU6IHZhbGlkYXRpb25UZW1wbGF0ZS50ZW1wbGF0ZVxuICAgIH1cbiAgXSk7XG5cbiAgZnVuY3Rpb24gY2FtZWxpemUoc3RyaW5nKSB7XG4gICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoL1tcXC1fXFxzXSsoLik/L2csIGZ1bmN0aW9uKG1hdGNoLCBjaHIpIHtcbiAgICAgIHJldHVybiBjaHIgPyBjaHIudG9VcHBlckNhc2UoKSA6ICcnO1xuICAgIH0pO1xuICAgIC8vIEVuc3VyZSAxc3QgY2hhciBpcyBhbHdheXMgbG93ZXJjYXNlXG4gICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9eKFtBLVpdKS8sIGZ1bmN0aW9uKG1hdGNoLCBjaHIpIHtcbiAgICAgIHJldHVybiBjaHIgPyBjaHIudG9Mb3dlckNhc2UoKSA6ICcnO1xuICAgIH0pO1xuICB9XG59XG5cbmZvcm1seUNvbmZpZy4kaW5qZWN0ID0gWydmb3JtbHlDb25maWdQcm92aWRlciddO1xuXG5leHBvcnQgZGVmYXVsdCBmb3JtbHlDb25maWc7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29uZmlnL2Zvcm1seS9mb3JtbHkuY29uZmlnLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 57 */
+/***/ function(module, exports) {
+
+ eval("\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n// tips: use some plugin like atom-typescript to highlight html templates inside backticks\nvar richTextTemplate = exports.richTextTemplate = {\n template: \"\\n \\n \\n \"\n};\n\n/* eslint-disable quotes */\nvar blankTemplate = exports.blankTemplate = {\n template: \"
\"\n};\n/* eslint-enable quotes */\n\nvar headerTemplate = exports.headerTemplate = {\n template: \"\\n \\n
\\n
\\n {{ options.templateOptions.placeholder }}\\n \\n \\n \\n
\\n \"\n};\n\nvar subTitleTemplate = exports.subTitleTemplate = {\n template: \"\\n \\n
\\n
\\n {{ options.templateOptions.placeholder }}\\n \\n \\n \\n
\\n \"\n};\n\nvar basicSelectTemplate = exports.basicSelectTemplate = {\n template: \"\\n \\n \\n \\n {{option.name}}\\n \\n \\n \\n \"\n};\n\nvar groupedSelectTemplate = exports.groupedSelectTemplate = {\n template: \"\\n \\n \\n \\n \\n \\n {{option.name}}\\n \\n \\n \\n \\n \\n \"\n};\n\nvar datepickerTemplate = exports.datepickerTemplate = {\n template: \"\\n \\n \\n \\n \\n \\n \\n \\n
\\n \"\n};\n\nvar validationTemplate = exports.validationTemplate = {\n template: \"\\n \\n \"\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29uZmlnL2Zvcm1seS9mb3JtbHkuY29uZmlnLnRlbXBsYXRlcy5qcz9iYmVhIl0sIm5hbWVzIjpbInJpY2hUZXh0VGVtcGxhdGUiLCJ0ZW1wbGF0ZSIsImJsYW5rVGVtcGxhdGUiLCJoZWFkZXJUZW1wbGF0ZSIsInN1YlRpdGxlVGVtcGxhdGUiLCJiYXNpY1NlbGVjdFRlbXBsYXRlIiwiZ3JvdXBlZFNlbGVjdFRlbXBsYXRlIiwiZGF0ZXBpY2tlclRlbXBsYXRlIiwidmFsaWRhdGlvblRlbXBsYXRlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ08sSUFBTUEsOENBQW1CO0FBQzlCQztBQUQ4QixDQUF6Qjs7QUFVUDtBQUNPLElBQU1DLHdDQUFnQjtBQUMzQkQ7QUFEMkIsQ0FBdEI7QUFHUDs7QUFFTyxJQUFNRSwwQ0FBaUI7QUFDNUJGO0FBRDRCLENBQXZCOztBQWFBLElBQU1HLDhDQUFtQjtBQUM5Qkg7QUFEOEIsQ0FBekI7O0FBYUEsSUFBTUksb0RBQXNCO0FBQ2pDSjtBQURpQyxDQUE1Qjs7QUFrQkEsSUFBTUssd0RBQXdCO0FBQ25DTDtBQURtQyxDQUE5Qjs7QUFzQkEsSUFBTU0sa0RBQXFCO0FBQ2hDTjtBQURnQyxDQUEzQjs7QUEwQkEsSUFBTU8sa0RBQXFCO0FBQ2hDUDtBQURnQyxDQUEzQiIsImZpbGUiOiI1Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRpcHM6IHVzZSBzb21lIHBsdWdpbiBsaWtlIGF0b20tdHlwZXNjcmlwdCB0byBoaWdobGlnaHQgaHRtbCB0ZW1wbGF0ZXMgaW5zaWRlIGJhY2t0aWNrc1xuZXhwb3J0IGNvbnN0IHJpY2hUZXh0VGVtcGxhdGUgPSB7XG4gIHRlbXBsYXRlOiBgXG4gIDx0ZXh0LWFuZ3VsYXJcbiAgICBuYW1lPVwie3tpZH19XCJcbiAgICBjbGFzcz1cInJpY2hUZXh0QW5ndWxhclwiXG4gICAgbmctbW9kZWw9XCJtb2RlbFtvcHRpb25zLmtleSB8fCBpbmRleF1cIj5cbiAgPC90ZXh0LWFuZ3VsYXI+XG4gIGBcbn07XG5cbi8qIGVzbGludC1kaXNhYmxlIHF1b3RlcyAqL1xuZXhwb3J0IGNvbnN0IGJsYW5rVGVtcGxhdGUgPSB7XG4gIHRlbXBsYXRlOiBgPGRpdj48L2Rpdj5gXG59O1xuLyogZXNsaW50LWVuYWJsZSBxdW90ZXMgKi9cblxuZXhwb3J0IGNvbnN0IGhlYWRlclRlbXBsYXRlID0ge1xuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICB7eyBvcHRpb25zLnRlbXBsYXRlT3B0aW9ucy5wbGFjZWhvbGRlciB9fVxuICAgICAgICA8L2gyPlxuICAgICAgICA8aHIvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgYFxufTtcblxuZXhwb3J0IGNvbnN0IHN1YlRpdGxlVGVtcGxhdGUgPSB7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIHt7IG9wdGlvbnMudGVtcGxhdGVPcHRpb25zLnBsYWNlaG9sZGVyIH19XG4gICAgICAgIDwvaDQ+XG4gICAgICAgIDxoci8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBgXG59O1xuXG5leHBvcnQgY29uc3QgYmFzaWNTZWxlY3RUZW1wbGF0ZSA9IHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8b2xcbiAgICAgIGNsYXNzPVwibnlhLWJzLXNlbGVjdCBjb2wtc20tMTIgY29sLXhzLTEyIGNvbC1tZC0xMiBjb2wtbGcxMlwiXG4gICAgICBuZy1tb2RlbD1cIm1vZGVsW29wdGlvbnMua2V5IHx8IGluZGV4XVwiXG4gICAgICBpZD1cInt7aWR9fVwiXG4gICAgICBkaXNhYmxlZD1cIm9wdGlvbnMudGVtcGxhdGVPcHRpb25zLm9wdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJueWEtYnMtb3B0aW9uXCJcbiAgICAgICAgbnlhLWJzLW9wdGlvbj1cIm9wdGlvbiBpbiBvcHRpb25zLnRlbXBsYXRlT3B0aW9ucy5vcHRpb25zXCI+XG4gICAgICAgIDxhPlxuICAgICAgICAgIHt7b3B0aW9uLm5hbWV9fVxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIDwvb2w+XG4gIGBcbn07XG5cbmV4cG9ydCBjb25zdCBncm91cGVkU2VsZWN0VGVtcGxhdGUgPSB7XG4gIHRlbXBsYXRlOiBgXG4gICAgPG9sXG4gICAgICBjbGFzcz1cIm55YS1icy1zZWxlY3QgY29sLXNtLTEyIGNvbC14cy0xMiBjb2wtbWQtMTIgY29sLWxnMTJcIlxuICAgICAgbmctbW9kZWw9XCJtb2RlbFtvcHRpb25zLmtleSB8fCBpbmRleF1cIlxuICAgICAgZGF0YS1saXZlLXNlYXJjaD1cInRydWVcIlxuICAgICAgZGlzYWJsZWQ9XCJvcHRpb25zLnRlbXBsYXRlT3B0aW9ucy5vcHRpb25zLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgPGxpIG55YS1icy1vcHRpb249XCJvcHRpb24gaW4gIG9wdGlvbnMudGVtcGxhdGVPcHRpb25zLm9wdGlvbnMgZ3JvdXAgYnkgb3B0aW9uLmdyb3VwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24taGVhZGVyXCI+XG4gICAgICAgICAge3skZ3JvdXB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxhPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAge3tvcHRpb24ubmFtZX19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1vayBjaGVjay1tYXJrXCI+PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIDwvb2w+XG4gICAgYFxufTtcblxuZXhwb3J0IGNvbnN0IGRhdGVwaWNrZXJUZW1wbGF0ZSA9IHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8cCBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgIG5nLWNsaWNrPVwiZGF0ZXBpY2tlci5vcGVuKCRldmVudClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImdseXBoaWNvbiBnbHlwaGljb24tY2FsZW5kYXJcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zcGFuPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgaWQ9XCJ7ezo6aWR9fVwiXG4gICAgICAgIG5hbWU9XCJ7ezo6aWR9fVwiXG4gICAgICAgIG5nLW1vZGVsPVwibW9kZWxbb3B0aW9ucy5rZXldXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBuZy1jbGljaz1cImRhdGVwaWNrZXIub3BlbigkZXZlbnQpXCJcbiAgICAgICAgdWliLWRhdGVwaWNrZXItcG9wdXA9XCJ7e3RvLmRhdGVwaWNrZXJPcHRpb25zLmZvcm1hdH19XCJcbiAgICAgICAgaXMtb3Blbj1cImRhdGVwaWNrZXIub3BlbmVkXCJcbiAgICAgICAgZGF0ZXBpY2tlci1vcHRpb25zPVwidG8uZGF0ZXBpY2tlck9wdGlvbnNcIlxuICAgICAgLz5cbiAgICA8L3A+XG4gIGBcbn07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0aW9uVGVtcGxhdGUgPSB7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtbHktdGVtcGxhdGUtd3JhcHBlciBmb3JtLWdyb3VwXCJcbiAgICAgIG5nLWNsYXNzPVwie1xcJ2hhcy1lcnJvclxcJzogb3B0aW9ucy52YWxpZGF0aW9uLmVycm9yRXhpc3RzQW5kU2hvdWxkQmVWaXNpYmxlfVwiPlxuICAgICAgPGZvcm1seS10cmFuc2NsdWRlPjwvZm9ybWx5LXRyYW5zY2x1ZGU+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidmFsaWRhdGlvblwiXG4gICAgICAgIG5nLWlmPVwib3B0aW9ucy52YWxpZGF0aW9uLmVycm9yRXhpc3RzQW5kU2hvdWxkQmVWaXNpYmxlXCJcbiAgICAgICAgbmctbWVzc2FnZXM9XCJvcHRpb25zLmZvcm1Db250cm9sLiRlcnJvclwiPlxuICAgICAgICA8ZGl2IG5nLW1lc3NhZ2VzLWluY2x1ZGU9XCJ2YWxpZGF0aW9uLmh0bWxcIj48L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIG5nLW1lc3NhZ2U9XCJ7ezo6bmFtZX19XCJcbiAgICAgICAgICBuZy1yZXBlYXQ9XCIobmFtZSwgbWVzc2FnZSkgaW4gOjpvcHRpb25zLnZhbGlkYXRpb24ubWVzc2FnZXNcIj5cbiAgICAgICAgICB7e21lc3NhZ2Uob3B0aW9ucy5mb3JtQ29udHJvbC4kdmlld1ZhbHVlLCBvcHRpb25zLmZvcm1Db250cm9sLiRtb2RlbFZhbHVlLCB0aGlzKX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGBcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29uZmlnL2Zvcm1seS9mb3JtbHkuY29uZmlnLnRlbXBsYXRlcy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 58 */
+/***/ function(module, exports) {
+
+ eval("module.exports = {\n\t\"stepway\": {\n\t\t\"version\": \"2.1.4\"\n\t},\n\t\"dragdropway\": {\n\t\t\"version\": \"2.1.4\"\n\t},\n\t\"formviewer\": {\n\t\t\"version\": \"2.1.4\"\n\t}\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Vhc3lGb3JtQ29uZmlnLmpzb24/MzFjYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI1OC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge1xuXHRcInN0ZXB3YXlcIjoge1xuXHRcdFwidmVyc2lvblwiOiBcIjIuMS40XCJcblx0fSxcblx0XCJkcmFnZHJvcHdheVwiOiB7XG5cdFx0XCJ2ZXJzaW9uXCI6IFwiMi4xLjRcIlxuXHR9LFxuXHRcImZvcm12aWV3ZXJcIjoge1xuXHRcdFwidmVyc2lvblwiOiBcIjIuMS40XCJcblx0fVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvZWFzeUZvcm1Db25maWcuanNvblxuLy8gbW9kdWxlIGlkID0gNThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 59 */
+/***/ function(module, exports) {
+
+ eval("// removed by extract-text-webpack-plugin//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Zvcm12aWV3ZXIvc3R5bGUvZm9ybXZpZXdlci5zY3NzPzA3ODgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9mb3Jtdmlld2VyL3N0eWxlL2Zvcm12aWV3ZXIuc2Nzc1xuLy8gbW9kdWxlIGlkID0gNTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ }
+/******/ ]);
\ No newline at end of file
diff --git a/static/js/eda.easyFormViewer.min.js b/static/js/eda.easyFormViewer.min.js
index c5bb019..ee6f58e 100644
--- a/static/js/eda.easyFormViewer.min.js
+++ b/static/js/eda.easyFormViewer.min.js
@@ -1,3 +1,8 @@
-!function(a){function b(a,b,e){return 4===arguments.length?c.apply(this,arguments):void d(a,{declarative:!0,deps:b,declare:e})}function c(a,b,c,e){d(a,{declarative:!1,deps:b,executingRequire:c,execute:e})}function d(a,b){b.name=a,a in n||(n[a]=b),b.normalizedDeps=b.deps}function e(a,b){if(b[a.groupIndex]=b[a.groupIndex]||[],-1==o.call(b[a.groupIndex],a)){b[a.groupIndex].push(a);for(var c=0,d=a.normalizedDeps.length;d>c;c++){var f=a.normalizedDeps[c],g=n[f];if(g&&!g.evaluated){var h=a.groupIndex+(g.declarative!=a.declarative);if(void 0===g.groupIndex||g.groupIndex=0;f--){for(var g=c[f],i=0;if;f++){var h=c.importers[f];if(!h.locked)for(var i=0;if;f++){var j,k=b.normalizedDeps[f],l=n[k],o=s[k];o?j=o.exports:l&&!l.declarative?j=l.esModule:l?(h(l),o=l.module,j=o.exports):j=m(k),o&&o.importers?(o.importers.push(c),c.dependencies.push(o)):c.dependencies.push(null),c.setters[f]&&c.setters[f](j)}}}function i(a){var b,c=n[a];if(c)c.declarative?l(a,[]):c.evaluated||j(c),b=c.module.exports;else if(b=m(a),!b)throw new Error("Unable to load dependency "+a+".");return(!c||c.declarative)&&b&&b.__useDefault?b["default"]:b}function j(b){if(!b.module){var c={},d=b.module={exports:c,id:b.name};if(!b.executingRequire)for(var e=0,f=b.normalizedDeps.length;f>e;e++){var g=b.normalizedDeps[e],h=n[g];h&&j(h)}b.evaluated=!0;var l=b.execute.call(a,function(a){for(var c=0,d=b.deps.length;d>c;c++)if(b.deps[c]==a)return i(b.normalizedDeps[c]);throw new TypeError("Module "+a+" not declared as a dependency.")},c,d);l&&(d.exports=l),c=d.exports,c&&c.__esModule?b.esModule=c:b.esModule=k(c)}}function k(b){if(b===a)return b;var c={};if("object"==typeof b||"function"==typeof b)if(p){var d;for(var e in b)(d=Object.getOwnPropertyDescriptor(b,e))&&r(c,e,d)}else{var f=b&&b.hasOwnProperty;for(var e in b)(!f||b.hasOwnProperty(e))&&(c[e]=b[e])}return c["default"]=b,r(c,"__useDefault",{value:!0}),c}function l(b,c){var d=n[b];if(d&&!d.evaluated&&d.declarative){c.push(b);for(var e=0,f=d.normalizedDeps.length;f>e;e++){var g=d.normalizedDeps[e];-1==o.call(c,g)&&(n[g]?l(g,c):m(g))}d.evaluated||(d.evaluated=!0,d.module.execute.call(a))}}function m(a){if(u[a])return u[a];if("@node/"==a.substr(0,6))return t(a.substr(6));var b=n[a];if(!b)throw"Module "+a+" not present.";return f(a),l(a,[]),n[a]=void 0,b.declarative&&r(b.module.exports,"__esModule",{value:!0}),u[a]=b.declarative?b.module.exports:b.esModule}var n={},o=Array.prototype.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},p=!0;try{Object.getOwnPropertyDescriptor({a:0},"a")}catch(q){p=!1}var r;!function(){try{Object.defineProperty({},"a",{})&&(r=Object.defineProperty)}catch(a){r=function(a,b,c){try{a[b]=c.value||c.get.call(a)}catch(d){}}}}();var s={},t="undefined"!=typeof System&&System._nodeRequire||"undefined"!=typeof require&&require.resolve&&"undefined"!=typeof process&&require,u={"@empty":{}};return function(a,d,e){return function(f){f(function(f){for(var g={_nodeRequire:t,register:b,registerDynamic:c,get:m,set:function(a,b){u[a]=b},newModule:function(a){return a}},h=0;h1)for(var h=1;h\n \n \n\n ',d.define=e,c.exports}),a.register("4",[],function(a){"use strict";var b,c,d,e;return{setters:[],execute:function(){b=[{line:1,activeColumn:1,columns:[{numColumn:1,exist:!0,control:{type:"none",key:"none"}}]}],c=function(){return angular.copy(b)},d=function(a){var b=angular.isArray(a.dataModel)&&a.dataModel.length>0?a.dataModel:[];return b},e=function(a){var b=angular.isArray(a)&&a.length>0?a:c();return b},a("emptyEdaFieldsModel",c),a("returnAttributeDataModelIfNotEmpty",d),a("returnAttributeConfigurationLinesIfNotEmpty",e)}}}),a.register("5",["3","4","6"],function(a){"use strict";function b(a){function b(b){function c(){return b.vm.model}function e(){return b.edaEasyFormViewerEasyFormGeneratorFieldsModel}function f(){return b.edaEasyFormViewerSubmitButtonText}function g(){return b.edaEasyFormViewerCancelButtonText}function h(){return b.vm.hasJustSumitted}function i(){return b.vm.hasJustCancelled}function j(a){b.vm.fields=q(a)}function k(a,c){a!==c&&(b.vm.submitText=a||"Submit")}function l(a,c){a!==c&&(b.vm.cancelText=a||"Submit")}function m(a){b.edaEasyFormViewerDataModel=a}function n(a){if(a===!0&&angular.isFunction(b.edaEasyFormViewerSubmitFormEvent)){var c=b.vm.model;b.edaEasyFormViewerSubmitFormEvent({dataModelSubmitted:c})}b.vm.hasJustSumitted=!1}function o(a){a===!0&&angular.isFunction(b.edaEasyFormViewerCancelFormEvent)&&b.edaEasyFormViewerCancelFormEvent(),b.vm.hasJustCancelled=!1}function p(){var a=angular.isArray(b.edaEasyFormViewerEasyFormGeneratorFieldsModel)?q(b.edaEasyFormViewerEasyFormGeneratorFieldsModel):{};return a}function q(c){if(angular.isArray(c)){var e=d(c),f=[];return b.configurationLoaded={},a.bindConfigurationLines(b.configurationLoaded,e),a.refreshControlFormlyExpressionProperties(b.configurationLoaded),a.refreshControlFormlyValidators(b.configurationLoaded),a.refreshControlFormlyValidation(b.configurationLoaded),b.configuration=angular.copy(b.configurationLoaded),a.applyConfigurationToformlyModel(b.configurationLoaded,f,b.vm.model),f}}b.vm.model={},b.vm.fields=p(),b.vm.submitText=b.edaEasyFormViewerSubmitButtonText||"Submit",b.vm.cancelText=b.edaEasyFormViewerCancelButtonText||"Cancel",b.$watch(e,j,!0),b.$watch(c,m,!0),b.$watch(f,k),b.$watch(g,l),b.$watch(h,n),b.$watch(i,o)}var g={restrict:"E",scope:{edaEasyFormViewerDataModel:"=?",edaEasyFormViewerEasyFormGeneratorFieldsModel:"=?",edaEasyFormViewerSubmitButtonText:"@?",edaEasyFormViewerCancelButtonText:"@?",edaEasyFormViewerSubmitFormEvent:"&?",edaEasyFormViewerCancelFormEvent:"&?"},replace:!1,controller:e,controllerAs:f,template:c,link:b};return g}var c,d,e,f,g;return{setters:[function(a){c=a["default"]},function(a){d=a.returnAttributeConfigurationLinesIfNotEmpty},function(a){e=a.EASY_FORM_VIEWER_CONTROLLER,f=a.EASY_FORM_VIEWER_CONTROLLERAS}],execute:function(){g="edaEasyFormViewer",b.$inject=["$modelsTranslator"],a("default",b),a("EASY_FORM_VIEWER_DIRECTIVE_NAME",g)}}}),a.register("6",["7","8"],function(a){var b,c,d,e,f;return{setters:[function(a){b=a["default"]},function(a){c=a["default"]}],execute:function(){"use strict";d="edaEasyFormViewerCtrl",e="vm",f=function(){function a(){c(this,a),this.init()}return b(a,[{key:"init",value:function(){this.model={},this.fields={},this.hasJustSumitted=!1,this.hasJustCancelled=!1}},{key:"edaSubmitThisDataModel",value:function(){this.hasJustSumitted=!0}},{key:"edaCancelEvent",value:function(){this.hasJustCancelled=!0}}]),a}(),f.$inject=[],a("default",f),a("EASY_FORM_VIEWER_CONTROLLER",d),a("EASY_FORM_VIEWER_CONTROLLERAS",e)}}}),a.register("9",["5","6"],function(a){"use strict";var b,c,d,e,f;return{setters:[function(a){b=a["default"],c=a.EASY_FORM_VIEWER_DIRECTIVE_NAME},function(a){d=a["default"],e=a.EASY_FORM_VIEWER_CONTROLLER}],execute:function(){f="edaFormViewerMainModule",a("default",angular.module(f,[]).directive(c,b).controller(e,d))}}}),a.register("a",[],function(a){"use strict";var b,c;return{setters:[],execute:function(){b=["textAngular","formly","ngAnimate","formlyBootstrap","ui.bootstrap","nya.bootstrap.select"],c="edaEasyFormViewerCore.module",a("default",angular.module(c,b))}}}),a.registerDynamic("b",[],!0,function(a,b,c){var d=this,e=d.define;d.define=void 0;var f=Object;return c.exports={create:f.create,getProto:f.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:f.getOwnPropertyDescriptor,setDesc:f.defineProperty,setDescs:f.defineProperties,getKeys:f.keys,getNames:f.getOwnPropertyNames,getSymbols:f.getOwnPropertySymbols,each:[].forEach},d.define=e,c.exports}),a.registerDynamic("c",["b"],!0,function(a,b,c){var d=this,e=d.define;d.define=void 0;var f=a("b");return c.exports=function(a,b,c){return f.setDesc(a,b,c)},d.define=e,c.exports}),a.registerDynamic("d",["c"],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports={"default":a("c"),__esModule:!0},d.define=e,c.exports}),a.registerDynamic("7",["d"],!0,function(a,b,c){"use strict";var d=this,e=d.define;d.define=void 0;var f=a("d")["default"];return b["default"]=function(){function a(a,b){for(var c=0;c ";a.push({template:"undefined"!=typeof b.lines[c].columns[0].control.type&&"header"===b.lines[c].columns[0].control.type?d:"
"})},u=function(a,b,c){var d={className:"col-xs-12",type:"undefined"!=typeof b.lines[c].columns[0].control.type?"none"===b.lines[c].columns[0].control.type?"blank":b.lines[c].columns[0].control.type:"blank",key:"undefined"!=typeof b.lines[c].columns[0].control.key?b.lines[c].columns[0].control.key:"blank"+Date.now(),templateOptions:{type:k(b.lines[c].columns[0].control),label:l(b.lines[c].columns[0].control),required:q(b.lines[c].columns[0].control),placeholder:j(b.lines[c].columns[0].control),description:i(b.lines[c].columns[0].control),options:r(b.lines[c].columns[0].control)},expressionProperties:n(b.lines[c].columns[0].control),validators:o(b.lines[c].columns[0].control),validation:p(b.lines[c].columns[0].control)};"datepicker"===b.lines[c].columns[0].control.type&&s(d,b,c),a.push(d)},v=function(a,b,c){var d={className:"col-xs-6",template:'
'+i(b.lines[c].columns[0].control)+" "},e={className:"col-xs-6",template:'
'+i(b.lines[c].columns[1].control)+" "},f={className:"col-xs-6",type:"undefined"!=typeof b.lines[c].columns[0].control.type?"none"===b.lines[c].columns[0].control.type?"blank":b.lines[c].columns[0].control.type:"blank",key:"undefined"!=typeof b.lines[c].columns[0].control.key?b.lines[c].columns[0].control.key:"blank"+Date.now(),templateOptions:{type:k(b.lines[c].columns[0].control),label:l(b.lines[c].columns[0].control),required:q(b.lines[c].columns[0].control),placeholder:j(b.lines[c].columns[0].control),description:i(b.lines[c].columns[0].control),options:r(b.lines[c].columns[0].control)},expressionProperties:n(b.lines[c].columns[0].control),validators:o(b.lines[c].columns[0].control),validation:p(b.lines[c].columns[0].control)};"datepicker"===b.lines[c].columns[0].control.type&&s(f,b,c);var g={className:"col-xs-6",type:"undefined"!=typeof b.lines[c].columns[1].control.type?"none"===b.lines[c].columns[1].control.type?"blank":b.lines[c].columns[1].control.type:"blank",key:"undefined"!=typeof b.lines[c].columns[1].control.key?b.lines[c].columns[1].control.key:"blank"+Date.now(),templateOptions:{type:k(b.lines[c].columns[1].control),label:l(b.lines[c].columns[1].control),required:q(b.lines[c].columns[1].control),placeholder:j(b.lines[c].columns[1].control),description:i(b.lines[c].columns[1].control),options:r(b.lines[c].columns[1].control)},expressionProperties:n(b.lines[c].columns[1].control),validators:o(b.lines[c].columns[1].control),validation:p(b.lines[c].columns[1].control)};"datepicker"===b.lines[c].columns[1].control.type&&s(g,b,c);var h=[];"header"===b.lines[c].columns[0].control.type?h.push(d):h.push(f),"header"===b.lines[c].columns[1].control.type?h.push(e):h.push(g),a.push({className:"row",fieldGroup:h})},w=function(a,b,c){var d={className:"col-xs-4",template:'
'+i(b.lines[c].columns[0].control)+" "},e={className:"col-xs-4",template:'
'+i(b.lines[c].columns[1].control)+" "},f={className:"col-xs-4",template:'
'+i(b.lines[c].columns[2].control)+" "},g={className:"col-xs-4",type:"undefined"!=typeof b.lines[c].columns[0].control.type?"none"===b.lines[c].columns[0].control.type?"blank":b.lines[c].columns[0].control.type:"blank",key:"undefined"!=typeof b.lines[c].columns[0].control.key?b.lines[c].columns[0].control.key:"blank"+Date.now(),templateOptions:{type:k(b.lines[c].columns[0].control),label:l(b.lines[c].columns[0].control),required:q(b.lines[c].columns[0].control),placeholder:j(b.lines[c].columns[0].control),description:i(b.lines[c].columns[0].control),options:r(b.lines[c].columns[0].control)},expressionProperties:n(b.lines[c].columns[0].control),validators:o(b.lines[c].columns[0].control),validation:p(b.lines[c].columns[0].control)};"datepicker"===b.lines[c].columns[0].control.type&&s(g,b,c);var h={className:"col-xs-4",type:"undefined"!=typeof b.lines[c].columns[1].control.type?"none"===b.lines[c].columns[1].control.type?"blank":b.lines[c].columns[1].control.type:"blank",key:"undefined"!=typeof b.lines[c].columns[1].control.key?b.lines[c].columns[1].control.key:"blank"+Date.now(),templateOptions:{type:k(b.lines[c].columns[1].control),label:l(b.lines[c].columns[1].control),required:q(b.lines[c].columns[1].control),placeholder:j(b.lines[c].columns[1].control),description:i(b.lines[c].columns[1].control),options:r(b.lines[c].columns[1].control)},expressionProperties:n(b.lines[c].columns[1].control),validators:o(b.lines[c].columns[1].control),validation:p(b.lines[c].columns[1].control)};"datepicker"===b.lines[c].columns[1].control.type&&s(h,b,c);var m={className:"col-xs-4",type:"undefined"!=typeof b.lines[c].columns[2].control.type?"none"===b.lines[c].columns[2].control.type?"blank":b.lines[c].columns[2].control.type:"blank",key:"undefined"!=typeof b.lines[c].columns[2].control.key?b.lines[c].columns[2].control.key:"blank"+Date.now(),templateOptions:{type:k(b.lines[c].columns[2].control),label:l(b.lines[c].columns[2].control),required:q(b.lines[c].columns[2].control),placeholder:j(b.lines[c].columns[2].control),description:i(b.lines[c].columns[2].control),options:r(b.lines[c].columns[2].control)},expressionProperties:n(b.lines[c].columns[2].control),validators:o(b.lines[c].columns[2].control),validation:p(b.lines[c].columns[2].control)};"datepicker"===b.lines[c].columns[2].control.type&&s(m,b,c);var t=[];"header"===b.lines[c].columns[0].control.type?t.push(d):t.push(g),"header"===b.lines[c].columns[1].control.type?t.push(e):t.push(h),"header"===b.lines[c].columns[2].control.type?t.push(f):t.push(m),a.push({className:"row",fieldGroup:t})},a("resetNyaSelect",b),a("getConfigurationModelInit",c),a("getEmptyConfigModelResult",d),a("resetDataModel",e),a("getErrorObject",f),a("getMessageObject",g),a("resetFormlyModel",h),a("addOneColumnHeader",t),a("addOneColumnControl",u),a("addTwoColumnControl",v),a("addThreeColumnControl",w)}}}),a.register("f",["7","8","e"],function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o;return{setters:[function(a){b=a["default"]},function(a){c=a["default"]},function(a){d=a.resetNyaSelect,e=a.getEmptyConfigModelResult,f=a.resetDataModel,g=a.getErrorObject,h=a.getMessageObject,i=a.resetFormlyModel,j=a.addOneColumnHeader,k=a.addOneColumnControl,l=a.addTwoColumnControl,m=a.addThreeColumnControl}],execute:function(){"use strict";n="$modelsTranslator",o=function(){function a(){c(this,a)}return b(a,[{key:"initNyaSelect",value:function(a){return d(a)}},{key:"getControlsDefinition",value:function(){var a={};return d(a),a}},{key:"refreshControlFormlyExpressionProperties",value:function(a){var b=this;angular.isObject(a)&&angular.forEach(a.lines,function(a){angular.forEach(a.columns,function(a){var c=b.getControlsDefinition();angular.forEach(c.controls,function(b){a.control.type===b.formlyType&&a.control.subtype===b.formlySubtype&&(a.control.formlyExpressionProperties=b.formlyExpressionProperties)})})})}},{key:"refreshControlFormlyValidators",value:function(a){var b=this;angular.isObject(a)&&angular.forEach(a.lines,function(a){angular.forEach(a.columns,function(a){var c=b.getControlsDefinition();angular.forEach(c.controls,function(b){a.control.type===b.formlyType&&a.control.subtype===b.formlySubtype&&(a.control.formlyValidators=b.formlyValidators)})})})}},{key:"refreshControlFormlyValidation",value:function(a){var b=this;angular.isObject(a)&&angular.forEach(a.lines,function(a){angular.forEach(a.columns,function(a){var c=b.getControlsDefinition();angular.forEach(c.controls,function(b){a.control.type===b.formlyType&&a.control.subtype===b.formlySubtype&&(a.control.formlyValidation=b.formlyValidation)})})})}},{key:"bindConfigurationLines",value:function(a,b){if(angular.isArray(b)){var c=e();return c.lines=[].concat(b),angular.copy(c,a),h("configuration model is bound","lines are bound to configuration model.")}return g("lines is not an array","Checks lines type, it is not an array.")}},{key:"applyConfigurationToformlyModel",value:function(a,b,c){i(b),f(c);for(var d=a.lines.length,e=0;d>e;e++)1===a.lines[e].columns.length&&("header"===a.lines[e].columns[0].control.type?j(b,a,e):k(b,a,e)),2===a.lines[e].columns.length&&l(b,a,e),3===a.lines[e].columns.length&&m(b,a,e)}}]),a}(),o.$inject=[],a("default",o),a("MODEL_TRANSLATOR_SERVICE",n)}}}),a.register("10",["f"],function(a){"use strict";var b,c,d;return{setters:[function(a){b=a["default"],c=a.MODEL_TRANSLATOR_SERVICE}],execute:function(){d="edaFormViewerModelTranslatorModule",a("default",angular.module(d,[]).service(c,b))}}}),a.register("11",[],function(a){"use strict";var b,c,d,e,f,g,h;return{setters:[],execute:function(){b='\n
\n ',c="
",d='\n
\n
\n
\n {{options.templateOptions.placeholder}}\n \n \n
',e=' \n
\n \n {{option.name}} \n \n ',f='\n
\n \n \n \n {{option.name}} \n \n \n \n ',g='
',h='\n
',a("richTextTemplate",b),a("blankTemplate",c),a("subTitleTemplate",d),a("basicSelectTemplate",e),a("groupedSelectTemplate",f),a("datepickerTemplate",g),a("validationTemplate",h)}}}),a.register("12",["11"],function(a){"use strict";function b(a){function b(a){return a=a.replace(/[\-_\s]+(.)?/g,function(a,b){return b?b.toUpperCase():""}),a.replace(/^([A-Z])/,function(a,b){return b?b.toLowerCase():""})}a.setType({name:"richEditor",template:c,wrapper:["bootstrapLabel","bootstrapHasError"]}),a.setType({name:"blank",template:d}),a.setType({name:"subTitle",template:e}),a.setType({name:"basicSelect",template:f,wrapper:["bootstrapLabel","bootstrapHasError"]}),a.setType({name:"groupedSelect",template:g,wrapper:["bootstrapLabel","bootstrapHasError"]});var j=["date-disabled","custom-class","show-weeks","starting-day","init-date","min-mode","max-mode","format-day","format-month","format-year","format-day-header","format-day-title","format-month-title","year-range","shortcut-propagation","datepicker-popup","show-button-bar","current-text","clear-text","close-text","close-on-date-selection","datepicker-append-to-body"],k=["datepicker-mode","min-date","max-date"],l={};angular.forEach(j,function(a){l[b(a)]={attribute:a}}),angular.forEach(k,function(a){l[b(a)]={bound:a}}),a.setType({name:"datepicker",template:h,wrapper:["bootstrapLabel","bootstrapHasError"],controller:["$scope",function(a){a.open=function(b){b.preventDefault(),b.stopPropagation(),a.opened=!0}}],defaultOptions:{ngModelAttrs:l,templateOptions:{addonLeft:{"class":"glyphicon glyphicon-calendar",onClick:function(a){return a.templateOptions.isOpen=!a.templateOptions.isOpen}},onFocus:function(a,b,c){return c.to.isOpen=!c.to.isOpen},datepickerOptions:{}}}}),a.setWrapper([{template:i}])}var c,d,e,f,g,h,i;return{setters:[function(a){c=a.richTextTemplate,d=a.blankTemplate,e=a.subTitleTemplate,f=a.basicSelectTemplate,g=a.groupedSelectTemplate,h=a.datepickerTemplate,i=a.validationTemplate}],execute:function(){b.$inject=["formlyConfigProvider"],a("default",b)}}}),a.registerDynamic("13",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports={stepway:{version:"1.1.0"},dragdropway:{version:"1.1.0"},formviewer:{version:"1.1.0"}},d.define=e,c.exports}),a.register("1",["2","9","10","12","13","a"],function(a){
-"use strict";var b,c,d,e,f,g,h,i,j,k;return{setters:[function(a){},function(a){b=a["default"]},function(a){c=a["default"]},function(a){d=a["default"]},function(a){e=a["default"]},function(a){f=a["default"]}],execute:function(){g=[b.name,f.name,c.name],h="easyFormViewerVersion",i=e.formviewer.version,j="eda.easyFormViewer",k=angular.module(j,g).config(d).value(h,i),a("default",k)}}})})(function(a){a()});
+!function(e){function n(o){if(t[o])return t[o].exports;var r=t[o]={exports:{},id:o,loaded:!1};return e[o].call(r.exports,r,r.exports,n),r.loaded=!0,r.exports}var t={};return n.m=e,n.c=t,n.p="/",n(0)}([function(e,n,t){"use strict";t(1),t(6),t(59)},function(e,n,t){"use strict";t(2),t(3),t(5)},function(e,n,t){
+//! api-check version 7.5.5 built with ♥ by Kent C. Dodds
(http://kent.doddsfamily.us) (ó ì_í)=óò=(ì_í ò)
+!function(n,t){e.exports=t()}(this,function(){return function(e){function n(o){if(t[o])return t[o].exports;var r=t[o]={exports:{},id:o,loaded:!1};return e[o].call(r.exports,r,r.exports,n),r.loaded=!0,r.exports}var t={};return n.m=e,n.c=t,n.p="",n(0)}([function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var r=t(1),i=o(r);n.default=i.default,e.exports=n.default},function(e,n,t){"use strict";function o(){function n(o,i,l){if(n.config.disabled||e.exports.globalConfig.disabled)return{apiTypes:{},argTypes:{},passed:!0,message:"",failed:!1};t(arguments),Array.isArray(o)?i=Array.prototype.slice.call(i):(o=[o],i=[i]);var a=s(o,i);a.length||(a=r(o,i));var c=d(o,i);return c.args=i,a.length?(c.message=n.getErrorMessage(o,i,a,l),c.failed=!0,c.passed=!1):(c.message="",c.failed=!1,c.passed=!0),c}function t(e){var t=e[0],o=e[1],i=Array.isArray(o)||o&&"object"==typeof o&&"number"==typeof o.length;if(Array.isArray(t)&&!i)throw new Error(l(t,[o],["If an array is provided for the api, an array must be provided for the args as well."],{prefix:"apiCheck"}));var a=r(C.checkApiCheckApi,e);if(a.length){var s=n.getErrorMessage(C.checkApiCheckApi,e,a,{prefix:"apiCheck"});n.handleErrorMessage(s,!0)}}function o(e){return function(t,o,r){var i=n(t,o,r);return n.handleErrorMessage(i.message,e),i}}function i(e,n){if(n&&e)throw new Error(e);e&&console.warn(e)}function l(e,t){function o(){var e=s.onlyPrefix;return e||(e=((c.prefix||"")+" "+(s.prefix||"")).trim()),e}function r(){var e=s.onlySuffix;return e||(e=((s.suffix||"")+" "+(c.suffix||"")).trim()),e}function i(){var e=s.url;return e||(e=c.docsBaseUrl&&s.urlSuffix&&(""+c.docsBaseUrl+s.urlSuffix).trim()),e}var l=arguments.length<=2||void 0===arguments[2]?[]:arguments[2],s=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],c=n.config.output||{},d=o(),p=r(),u=i(),f="apiCheck failed! "+l.join(", "),m="\n\n"+a(e,t);return(d+" "+f+" "+p+" "+(u||"")+m).trim()}function a(e,n){function t(e){m(e,function(n,o){c.indexOf(n)===-1&&(c.push(n),"object"==typeof n?t(e):"function"==typeof n&&(e[o]=n.displayName||n.name||"anonymous function"))})}function o(e){return e&&e.length?(e&&1===e.length&&(e=e[0]),u(e,null,2)):"nothing"}function r(){var e="\n",t=!0;n&&1===n.length&&(t="object"==typeof n[0]&&null!==n[0]&&!!Object.keys(n[0]).length);var o="type"+(t?"s":""),r=e+e;return"You passed:"+e+p+r+("With the "+o+":"+e+a+r)+("The API calls for:"+e+l)}var i=d(e,n),l=i.apiTypes,a=i.argTypes,s=Array.prototype.slice.call(n||[]),c=[];t(s);var p=o(s);return a=o(a),l=o(l),r()}function d(t,o){t=g(t),o=g(o);var r=t.map(function(t,r){var i=e.exports.globalConfig.hasOwnProperty("verbose");return b(t,{terse:i?!e.exports.globalConfig.verbose:!n.config.verbose,obj:o[r],addHelpers:!0})}),i=o.map(function(e){return c(e,[])});return{argTypes:i,apiTypes:r}}var p=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],v=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];E&&arguments.length&&E.throw(C.getApiCheckInstanceCheckers,arguments,{prefix:"creating an apiCheck instance"});var y={throw:o(!0),warn:o(!1),getErrorMessage:l,handleErrorMessage:i,config:{output:p.output||{prefix:"",suffix:"",docsBaseUrl:""},verbose:p.verbose||!1,disabled:p.disabled||!1},utils:f};m(y,function(e,t){return n[t]=e});var h=n.disabled||e.exports.globalConfig.disabled;return m(x.getCheckers(h),function(e,t){return n[t]=e}),m(v,function(e,t){return n[t]=e}),n}function r(e,n){for(var t=[],o=!1,r=0,i=0,a=void 0,s=void 0,c=void 0,d=void 0,p=void 0,u=void 0,f=void 0;(s=e[r++])&&i=e.length,f=r>1&&e[r-1].isOptional,u&&d||u&&!d&&!s.isOptional&&!f?(o=!0,t.push(l(c,s,a))):u&&s.isOptional?i--:t.push(y(p)+" passed");return o?t:[]}function i(e,n,t){var o=x.shape({type:x.string,optional:x.bool}),r=x.func.withProperties({__apiCheckData:o}),l=x.shape({__apiCheckData:o}),a=x.oneOfType([r,l])(e,n,t);return v(a)?a:"function"==typeof e||e.hasOwnProperty(e.__apiCheckData.type)?void 0:T(n,t,i.type)}function l(e,n,t){var o=a(n,t);return o=o?" - "+o:"",e.message+o}function a(e,n){var t=e.help;return t?("function"==typeof t&&(t=t(n)),t):""}function s(e,n){var t=e.filter(function(e){return!e.isOptional});return n.length=0;o--)n[o][r[0]]===e&&(e=n[o],r.unshift(t[o]));return"~"+r.join(".")}function r(e,n,o,r){return JSON.stringify(e,t(n,r),o)}e.exports=r,r.getSerialize=t},function(e,n,t){"use strict";function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e){var n=i(e),t=void 0;if("array"===n)t=[];else{if("object"!==n)return e;t={}}return c(e,function(e,n){t[n]=e}),t}function i(e){return Array.isArray(e)?"array":e instanceof RegExp?"object":typeof e}function l(e,n){var t=void 0,o=n&&n.short;return t=o&&e.shortType?e.shortType:!o&&"object"==typeof e.type||"function"===e.type?a(e,n):a(e,n)||e.displayName||e.name}function a(e,n){var t=e.type;if("function"==typeof t){var r=t.__apiCheckData,i=t(n);t=o({__apiCheckData:r},r.type,i)}return t}function s(e){return e?Array.isArray(e)?e:[e]:[]}function c(e,n,t){return Array.isArray(e)?p(e,n,t):d(e,n,t)}function d(e,n,t){var o=void 0,r=Object.prototype.hasOwnProperty;for(var i in e)if(r.call(e,i)&&(o=n.call(t,e[i],i,e),o===!1))return o;return!0}function p(e,n,t){for(var o=void 0,r=e.length,i=0;it)return f(r,i,o)},{type:o},e)}function R(n){var t="lessThan["+n+"]";return b(function(e,o,r){if("number"!=typeof e||e>n)return f(o,r,t)},{type:t},e)}function k(n){var t="greaterThan["+n+"]";return b(function(e,o,r){if("number"!=typeof e||e" in it: '+e+"\nAdditional information: "+JSON.stringify(n))}var s=this;i.extend(this,{getFormlyError:o,getFieldError:t,checkWrapper:l,checkWrapperTemplate:a,$get:function(){return s}})}var r=function(e){return e&&e.__esModule?e.default:e},i=r(t(15));e.exports=o,o.$inject=["formlyApiCheck","formlyErrorAndWarningsUrlPrefix"]},function(e,n,t){"use strict";function o(e,n){function t(e){if(i.isArray(e))i.forEach(e,t);else{if(!i.isObject(e))throw R("You must provide an object or array for setType. You provided: "+JSON.stringify(arguments));o(e),e.extends&&r(e),_[e.name]=e}}function o(e){n.throw(n.formlyTypeOptions,e,{prefix:"formlyConfig.setType",url:"settype-validation-failed"}),e.overwriteOk?e.overwriteOk=void 0:b(e.name,_,e,"types")}function r(e){var n=u(e.extends,!0,e);s(e,n),c(e,n),d(e,n),p(e,n),l.reverseDeepMerge(e,n),a(e,n)}function a(e,n){e.template&&n.templateUrl?delete e.templateUrl:e.templateUrl&&n.template&&delete e.template}function s(e,n){var t=n.controller;if(i.isDefined(t)){var o=e.controller;i.isDefined(o)?(e.controller=function(e,n){n(t,{$scope:e}),n(o,{$scope:e})},e.controller.$inject=["$scope","$controller"]):e.controller=t}}function c(e,n){var t=n.link;if(i.isDefined(t)){var o=e.link;i.isDefined(o)?e.link=function(){t.apply(void 0,arguments),o.apply(void 0,arguments)}:e.link=t}}function d(e,n){var t=n.validateOptions;if(i.isDefined(t)){var o=e.validateOptions,r=e.defaultOptions;i.isDefined(o)?e.validateOptions=function(e){o(e);var n=i.copy(e),a=r;a&&(i.isFunction(a)&&(a=a(n)),l.reverseDeepMerge(n,a)),t(n)}:e.validateOptions=t}}function p(e,n){var t=n.defaultOptions;if(i.isDefined(t)){var o=e.defaultOptions,r=i.isFunction(o),a=i.isFunction(t);a?e.defaultOptions=function(e){var n=t(e),i={};l.reverseDeepMerge(i,e,n);var a=o;return r&&(a=a(i)),l.reverseDeepMerge(n,a),n}:r&&(e.defaultOptions=function(e){var n={};return l.reverseDeepMerge(n,e,t),o(n)})}}function u(e,n,t){if(e){var o=_[e];if(o||n!==!0)return o;throw R('There is no type by the name of "'+e+'": '+JSON.stringify(t))}}function f(e,n){for(var t=!0;t;){t=!1;var o=e,r=n;if(i.isArray(o))return o.map(function(e){return f(e)});if(i.isObject(o))return o.types=m(o),o.name=v(o,r),y(o),w[o.name]=o,o;i.isString(o)&&(e={template:o,name:r},t=!0)}}function m(e){return i.isString(e.types)?[e.types]:i.isDefined(e.types)?e.types:[]}function v(e,n){return e.name||n||e.types.join(" ")||D}function y(n){e.checkWrapper(n),n.template&&e.checkWrapperTemplate(n.template,n),n.overwriteOk?delete n.overwriteOk:b(n.name,w,n,"templateWrappers"),g(n)}function g(e){var n=!i.isArray(e.types)||!e.types.every(i.isString);if(n)throw R("Attempted to create a template wrapper with types that is not a string or an array of strings")}function b(e,n,t,o){n.hasOwnProperty(e)&&E(["Attempting to overwrite "+e+" on "+o+" which is currently",""+JSON.stringify(n[e])+" with "+JSON.stringify(t),'To supress this warning, specify the property "overwriteOk: true"'].join(" "))}function h(e){return w[e||D]}function T(e){var n=[];for(var t in w)w.hasOwnProperty(t)&&w[t].types&&w[t].types.indexOf(e)!==-1&&n.push(w[t]);return n}function x(e){var n=w[e];return delete w[e],n}function C(e){var n=T(e);if(n)return i.isArray(n)?(n.forEach(function(e){return x(e.name)}),n):x(n.name)}function E(){S.disableWarnings||console.warn.apply(console,arguments)}var O=this,_={},w={},D="default",S=this,R=e.getFormlyError;i.extend(this,{setType:t,getType:u,setWrapper:f,getWrapper:h,getWrapperByType:T,removeWrapperByName:x,removeWrappersForType:C,disableWarnings:!1,extras:{disableNgModelAttrsManipulator:!1,ngModelAttrsManipulatorPreferUnbound:!1,removeChromeAutoComplete:!1,defaultHideDirective:"ng-if",getFieldId:null},templateManipulators:{preWrapper:[],postWrapper:[]},$get:function(){return O}})}var r=function(e){return e&&e.__esModule?e.default:e},i=r(t(15)),l=r(t(18));e.exports=o,o.$inject=["formlyUsabilityProvider","formlyApiCheck"]},function(e,n,t){"use strict";function o(){function e(e,n,r,i,l){o.messages[e]=t(n,r,i,l)}function n(e,n){o.messages[e]=function(){return n}}function t(e,n,t,o){return function(r,i,l){return l.options.templateOptions[e]?""+n+" "+l.options.templateOptions[e]+" "+t:o}}var o={addTemplateOptionValueMessage:e,addStringMessage:n,messages:{}};return o}e.exports=o},function(e,n,t){"use strict";function o(){return i}var r=function(e){return e&&e.__esModule?e.default:e},i=r(t(18));e.exports=o},function(e,n,t){"use strict";function o(e,n,t){return function(){if(!e.disableWarnings){var o=Array.prototype.slice.call(arguments),i=o.shift();o.unshift("Formly Warning:"),o.push(""+n+i),t.warn.apply(t,r(o))}}}var r=function(e){if(Array.isArray(e)){for(var n=0,t=Array(e.length);n\n \n ")}function a(){e.options.elementAttributes&&o.attr(e.options.elementAttributes)}function c(){e.options.className&&o.addClass(e.options.className),e.options.type&&o.addClass("formly-field-"+e.options.type)}function p(n){return o.html(f(n)),t(o.contents())(e),n}function u(n){function t(e){var n=/\{\{(.*?)}}/,t=n.exec(e);t?o(t[1]):l(e)}function o(n){e.$watch(n,function(e){e&&(c(),l(e))})}function l(n){c=e.$watch('form["'+n+'"]',function(n){n&&(e.fc=n,e.options.formControl=n,d(),a())})}function a(){d=e.$watch(function(){var n=r.extras.errorExistsAndShouldBeVisibleExpression,t=e.options,o=e.fc;if(o.$invalid){if("boolean"==typeof t.validation.show)return t.validation.show;if(n)return s.formlyEval(e,n,o.$modelValue,o.$viewValue);var l=i.isUndefined(o.$touched)&&o.$dirty;
+return e.fc.$touched||l}return!1},function(n){e.options.validation.errorExistsAndShouldBeVisible=n,e.showError=n})}var c=i.noop,d=i.noop;if(!e.options.noFormControl){var p=i.element(""+n+"
"),u=p[0].querySelector("[ng-model],[data-ng-model]");u&&u.getAttribute("name")&&t(u.getAttribute("name"))}}function y(){h&&h.link&&h.link.apply(C,T),e.options.link&&e.options.link.apply(C,T)}function b(t){return function(o){var r=n.when(o);return i.forEach(t,function(t){r=r.then(function(o){return n.when(t(o,e.options,e)).then(function(e){return i.isString(e)?e:f(e)})})}),r}}if(e.options.fieldGroup)return void l();a(),c();var h=m(e.options),T=arguments,C=this;v(e.options).then(b(r.templateManipulators.preWrapper)).then(g(e.options)).then(b(r.templateManipulators.postWrapper)).then(p).then(u).then(y).catch(function(n){d("there-was-a-problem-setting-the-template-for-this-field","There was a problem setting the template for this field ",e.options,n)})}function f(e){var n=i.element(" ");return n.append(e).html()}function m(e){return e.type&&r.getType(e.type)}function v(e){function n(n,t){return i.isDefined(e[n])?e[n]:t&&i.isDefined(t[n])?t[n]:void 0}var t=r.getType(e.type,!0,e),o=n("template",t),l=n("templateUrl",t);if(i.isUndefined(o)&&!l)throw c.getFieldError("type-type-has-no-template","Type '"+e.type+"' has not template. On element:",e);return y(l||o,i.isUndefined(o),e)}function y(t,r,l){var a=void 0;if(a=i.isFunction(t)?n.when(t(l)):n.when(t),!r)return a;var s=function(){var n={cache:o};return{v:a.then(function(t){return e.get(t,n)}).then(function(e){return e.data}).catch(function(e){d("problem-loading-template-for-templateurl","Problem loading template for "+t,e)})}}();return"object"==typeof s?s.v:void 0}function g(e){var t=h(e);return function(o){if(!t.length)return n.when(o);t.forEach(function(n){c.checkWrapper(n,e),n.validateOptions&&n.validateOptions(e),C(n,e)});var r=t.map(function(e){return y(e.template||e.templateUrl,!e.template)});return n.all(r).then(function(e){e.forEach(function(e,n){c.checkWrapperTemplate(e,t[n])}),e.reverse();var n=e.shift();return e.forEach(function(e){n=b(n,e)}),b(n,o)})}}function b(e,n){var t=i.element(" ");t.append(e);var o=t.find("formly-transclude");return o.length||(o=s.findByNodeName(t,"formly-transclude")),o.replaceWith(n),t.html()}function h(e){var n=e.wrapper;if(null===n)return[];n=n?E(n).map(r.getWrapper):E(r.getWrapperByType(e.type));var t=r.getType(e.type,!0,e);if(t&&t.wrapper){var o=E(t.wrapper).map(r.getWrapper);n=n.concat(o)}var i=r.getWrapper();return i&&n.push(i),n}function T(e){a.throw(a.formlyFieldOptions,e,{prefix:"formly-field directive",url:"formly-field-directive-validation-failed"});var n=e.type&&r.getType(e.type);n&&(n.validateOptions&&n.validateOptions(e),C(n,e))}function x(e){a.throw(a.fieldGroup,e,{prefix:"formly-field directive",url:"formly-field-directive-validation-failed"})}function C(e,n){var t=e.apiCheck,o=e.apiCheckInstance,r=e.apiCheckFunction,i=e.apiCheckOptions;if(t){var l=o||a,s=r||"warn",c=l.shape(t);l[s](c,n,i||{prefix:"formly-field "+name,url:a.config.output.docsBaseUrl+"formly-field-type-apicheck-failed"})}}var E=s.arrayify;return p.$inject=["$scope","$timeout","$parse","$controller"],{restrict:"AE",transclude:!0,scope:{options:"=",model:"=",formId:"@",index:"=?",fields:"=?",formState:"=?",form:"=?"},controller:p,link:u}}var r=function(e){return e&&e.__esModule?e.default:e},i=r(t(15));e.exports=o,o.$inject=["$http","$q","$compile","$templateCache","formlyConfig","formlyValidationMessages","formlyApiCheck","formlyUtil","formlyUsability","formlyWarn"]},function(e,n,t){"use strict";function o(e,n){return{restrict:"A",link:function(t,o,r){var i=null,l=o[0],a=n[0];r.$observe("formlyFocus",function(n){"true"===n?e(function(){i=a.activeElement,l.focus()},~~r.focusWait):"false"===n&&a.activeElement===l&&(l.blur(),r.hasOwnProperty("refocus")&&i&&i.focus())})}}}e.exports=o,o.$inject=["$timeout","$document"]},function(e,n,t){"use strict";function o(e,n,t,o){var r=1;return{restrict:"E",template:function(n,t){function i(){return t.rootEl||"ng-form"}function l(){return t.fieldRootEl||"div"}function s(){return t.hideDirective||o.extras.defaultHideDirective||"ng-if"}function c(){return t.trackBy?"track by "+t.trackBy:""}function d(){var n=v,o=t.bindName;if(o){if(a.version.minor<3)throw e.getFormlyError("bind-name attribute on formly-form not allowed in > angular 1.3");n="{{::'formly_' + "+o+"}}"}return n}function p(e){var n=["model","form","fields","options","name","role","class"],t=[];return a.forEach(e,function(e){var o=e.nodeName,r=e.nodeValue;"undefined"!==o&&n.indexOf(o)===-1&&t.push(""+u(o)+'="'+r+'"')}),t.join(" ")}function u(e){return e?e.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):""}var f=i(),m=l(),v="formly_"+r++,y="";return t.hasOwnProperty("isFieldGroup")&&n.parent().parent().hasClass("formly")&&(y=p(n.parent().parent()[0].attributes)),"\n <"+f+' class="formly"\n name="'+d()+'"\n role="form" '+y+">\n <"+m+' formly-field\n ng-repeat="field in fields '+c()+'"\n '+s()+'="!field.hide"\n class="formly-field"\n options="field"\n model="field.model || model"\n fields="fields"\n form="theFormlyForm"\n form-id="'+d()+'"\n form-state="options.formState"\n index="$index">\n '+m+">\n
\n "+f+">\n "},replace:!0,transclude:!0,scope:{fields:"=",model:"=",form:"=?",options:"=?"},controller:["$scope","formlyUtil",function(n,o){function r(){a.forEach(n.fields,function(e,t){var r=e.model||n.model;if(e.runExpressions&&e.runExpressions(r),e.hideExpression){var i=r[e.key],l={options:e,index:t,formState:n.options.formState,formId:n.formId};e.hide=o.formlyEval(n,e.hideExpression,i,i,l)}})}function s(){t.throw([t.formOptionsApi.optional],[n.options],{prefix:"formly-form options check"}),n.options=n.options||{},n.options.formState=n.options.formState||{},a.extend(n.options,{updateInitialValue:c,resetModel:d})}function c(){a.forEach(n.fields,function(e){g(e)?e.options.updateInitialValue():e.updateInitialValue()})}function d(){a.forEach(n.fields,function(e){g(e)?e.options.resetModel():e.resetModel()})}function p(e){e.model&&"formState"===e.model&&(e.model=n.options.formState)}function u(e,n){g(e)||(e.key=e.key||n||0)}function f(t,o){if(!g(t)&&a.isDefined(t.watcher)){var r=t.watcher;a.isArray(r)||(r=[r]),a.forEach(r,function(r){if(!a.isDefined(r.listener))throw e.getFieldError("all-field-watchers-must-have-a-listener","All field watchers must have a listener",t);var i=m(r,t,o),l=v(r,t,o),s=r.type||"$watch";r.stopWatching=n[s](i,l,r.watchDeep)})}}function m(e,n,t){var o=e.expression||"model['"+n.key+"']";if(a.isFunction(o)){var r=o;o=function(){var n=y.apply(void 0,[e,t].concat(l.call(arguments)));return r.apply(void 0,i(n))},o.displayName="Formly Watch Expression for field for "+n.key}return o}function v(e,n,t){var o=e.listener;if(a.isFunction(o)){var r=o;o=function(){var n=y.apply(void 0,[e,t].concat(l.call(arguments)));return r.apply(void 0,i(n))},o.displayName="Formly Watch Listener for field for "+n.key}return o}function y(e,t){for(var o=arguments.length,r=Array(o>2?o-2:0),i=2;i ";var o=1===t.getElementsByTagName("i").length;if(o){var r=["formly-field","formly-form","formly-custom-validation","formly-focus","formly-transpose"];angular.forEach(r,function(e){n.createElement(e)})}}()}e.exports=o,o.$inject=["$document"]},function(e,n,t){"use strict";var o=function(e){return e&&e.__esModule?e.default:e},r=o(t(17));r.version||(r=window.angular),e.exports=r},function(n,t,o){n.exports=e},function(e,t,o){e.exports=n},function(e,n,t){"use strict";function o(e,n,t,o,r){return p.isFunction(n)?n(o,t,e,r):e.$eval(n,p.extend({$viewValue:o,$modelValue:t},r))}function r(e,n,t){if(n.id)return n.id;var o=n.type;return!o&&n.template?o="template":!o&&n.templateUrl&&(o="templateUrl"),[e,o,n.key,t].join("_")}function i(e){p.forEach(arguments,function(n,t){t&&p.forEach(n,function(n,t){p.isDefined(e[t])?l(e[t],n)&&i(e[t],n):e[t]=p.copy(n)})})}function l(e,n){return p.isObject(e)&&p.isObject(n)&&Object.getPrototypeOf(e)===Object.getPrototypeOf(n)}function a(e,n){if(e.prop||(e=p.element(e)),e.prop("nodeName")===n.toUpperCase())return e;for(var t=e.children(),o=0;t&&o0&&n;e.fc.$setValidity("required",t)}function t(){e.model[r.key]=[],angular.forEach(e.multiCheckbox.checked,function(n,t){n&&e.model[r.key].push(o.options[t][o.valueProp||"value"])}),e.fc.$setTouched(),n(!0)}var o=e.to,r=e.options;e.multiCheckbox={checked:[],change:t};var i=e.model[r.key];if(angular.isArray(i)&&!function(){var n=o.valueProp||"value";angular.forEach(o.options,function(t,o){e.multiCheckbox.checked[o]=i.indexOf(t[n])!==-1})}(),r.expressionProperties&&r.expressionProperties.required&&e.$watch(e.options.expressionProperties.required,function(e){n(e)}),e.to.required){e.$watch("fc",function(e){e&&n(!0)})}}]})}e.config(n),n.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},e.exports=n.default},function(n,t,o){n.exports=e},function(e,t,o){e.exports=n},function(e,n,t){"use strict";var o=t(8);o.version||(o=window.angular),e.exports=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e,n){var o=n;e.setWrapper([{name:"bootstrapLabel",template:t(17),apiCheck:{templateOptions:o.shape({label:o.string,required:o.bool.optional})},apiCheckInstance:o},{name:"bootstrapHasError",template:t(18)}])}e.config(n),n.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},e.exports=n.default},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){t(10)(e),t(1)(e),t(12)(e),t(9)(e),t(13)(e),t(14)(e)},e.exports=n.default},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var r=t(15),i=o(r),l=t(16),a=o(l);n.default=function(e){(0,i.default)(e),(0,a.default)(e)},e.exports=n.default},function(e,n,o){e.exports=t},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e,n){var o=n;e.setType({name:"radio",template:t(19),wrapper:["bootstrapLabel","bootstrapHasError"],defaultOptions:{noFormControl:!1},apiCheck:{templateOptions:o.shape({options:o.arrayOf(o.object),labelProp:o.string.optional,valueProp:o.string.optional})},apiCheckInstance:o})}e.config(n),n.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},e.exports=n.default},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e,n){var o=n;e.setType({name:"checkbox",template:t(20),wrapper:["bootstrapHasError"],apiCheck:{templateOptions:o.shape({label:o.string})},apiCheckInstance:o})}e.config(n),n.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},e.exports=n.default},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o="formlyBootstrap",r=t(4),i=r.module(o,[t(2)]);i.constant("formlyBootstrapApiCheck",t(3)({output:{prefix:"angular-formly-bootstrap"}})),i.constant("formlyBootstrapVersion","4.3.2"),t(5)(i),t(6)(i),t(7)(i),n.default=o,e.exports=n.default},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e){e.setType({name:"input",template:' ',wrapper:["bootstrapLabel","bootstrapHasError"]})}e.config(n),n.$inject=["formlyConfigProvider"]},e.exports=n.default},function(e,n,t){"use strict";function o(e,n,t){return Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0})}Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e,n){var r=n;e.setType({name:"select",template:t,wrapper:["bootstrapLabel","bootstrapHasError"],defaultOptions:function(e){var n=e.templateOptions.ngOptions||"option[to.valueProp || 'value'] as option[to.labelProp || 'name'] group by option[to.groupProp || 'group'] for option in to.options";return{ngModelAttrs:o({},n,{value:"ng-options"})}},apiCheck:{templateOptions:r.shape({options:r.arrayOf(r.object),labelProp:r.string.optional,valueProp:r.string.optional,groupProp:r.string.optional})},apiCheckInstance:r})}e.config(n);var t=' ';n.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},e.exports=n.default},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e,n){var t=n;e.setType({name:"textarea",template:'',wrapper:["bootstrapLabel","bootstrapHasError"],defaultOptions:{ngModelAttrs:{rows:{attribute:"rows"},cols:{attribute:"cols"}}},apiCheck:{templateOptions:t.shape({rows:t.number.optional,cols:t.number.optional})},apiCheckInstance:t})}e.config(n),n.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},e.exports=n.default},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e,n){var o=t(22),r=n.shape({class:n.string.optional,text:n.string.optional,onClick:n.func.optional}).strict.optional,i=n.shape({templateOptions:n.shape({addonLeft:r,addonRight:r})});e.templateManipulators.preWrapper.push(function(e,t){return t.templateOptions.addonLeft||t.templateOptions.addonRight?(n.warn([i],[t]),o.replace(" ",e)):e})}e.run(n),n.$inject=["formlyConfig","formlyBootstrapApiCheck"]},e.exports=n.default},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e){e.templateManipulators.preWrapper.push(function(e,n,t){if(angular.isDefined(n.templateOptions.description)){var o=document.createElement("div");o.appendChild(angular.element(e)[0]),o.appendChild(angular.element('{{to.description}}
')[0]);var r=angular.element(o.querySelectorAll("[ng-model]"));return r&&r.attr("aria-describedby",t.id+"_description"),o.innerHTML}return e})}e.run(n),n.$inject=["formlyConfig"]},e.exports=n.default},function(e,n,t){e.exports="\n \n {{to.label}}\n {{to.required ? '*' : ''}}\n \n \n
\n"},function(e,n,t){e.exports='\n \n
\n'},function(e,n,t){e.exports='\n
\n \n \n {{option[to.labelProp || \'name\']}}\n \n
\n
\n'},function(e,n,t){e.exports='\n\t\n\t\t \n\t\t{{to.label}}\n\t\t{{to.required ? \'*\' : \'\'}}\n\t \n
\n'},function(e,n,t){e.exports='\n
\n \n \n {{option[to.labelProp || \'name\']}}\n \n
\n
\n'},function(e,n,t){e.exports='\n
\n \n {{to.addonLeft.text}} \n
\n
\n
\n \n {{to.addonRight.text}} \n
\n
\n'}])})},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var r=t(7),i=o(r),l=t(12),a=o(l),s=t(13),c=o(s),d=t(56),p=o(d),u=t(58),f=o(u),m=[i.default.name,a.default.name,c.default.name],v="easyFormViewerVersion",y=f.default.formviewer.version,g="eda.easyFormViewer",b=angular.module(g,m).config(p.default).value(v,y);n.default=b},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var r=t(8),i=o(r),l=t(11),a=o(l),s="edaFormViewerMainModule";n.default=angular.module(s,[]).directive(r.EASY_FORM_VIEWER_DIRECTIVE_NAME,i.default).controller(l.EASY_FORM_VIEWER_CONTROLLER,a.default)},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){function n(n){function t(){return n.edaEasyFormViewerDataModel}function o(){return n.edaEasyFormViewerEasyFormGeneratorFieldsModel}function r(){return n.edaEasyFormViewerSubmitButtonText}function i(){return n.edaEasyFormViewerCancelButtonText}function l(){return n.vm.hasJustSumitted}function s(){return n.vm.hasJustCancelled}function c(e){n.vm.fields=y(e)}function d(e,t){e!==t&&(n.vm.submitText=e||"Submit")}function p(e,t){e!==t&&(n.vm.cancelText=e||"Submit")}function u(e){n.vm.model=angular.copy(e)}function f(e){if(e===!0&&angular.isFunction(n.edaEasyFormViewerSubmitFormEvent)){var t=n.vm.model;n.edaEasyFormViewerSubmitFormEvent({dataModelSubmitted:t})}n.vm.hasJustSumitted=!1}function m(e){e===!0&&angular.isFunction(n.edaEasyFormViewerCancelFormEvent)&&n.edaEasyFormViewerCancelFormEvent(),n.vm.hasJustCancelled=!1}function v(){var e=angular.isArray(n.edaEasyFormViewerEasyFormGeneratorFieldsModel)?y(n.edaEasyFormViewerEasyFormGeneratorFieldsModel):{};return e}function y(t){if(angular.isArray(t)){var o=(0,a.returnAttributeConfigurationLinesIfNotEmpty)(t),r=[];return n.configurationLoaded={},e.bindConfigurationLines(n.configurationLoaded,o),e.refreshControlFormlyExpressionProperties(n.configurationLoaded),e.refreshControlFormlyValidators(n.configurationLoaded),e.refreshControlFormlyValidation(n.configurationLoaded),n.configuration=angular.copy(n.configurationLoaded),e.applyConfigurationToformlyModel(n.configurationLoaded,r,n.vm.model),r}}n.vm.model=n.edaEasyFormViewerDataModel,n.vm.fields=v(),n.vm.submitText=n.edaEasyFormViewerSubmitButtonText||"Submit",n.vm.cancelText=n.edaEasyFormViewerCancelButtonText||"Cancel",n.$watch(o,c,!0),n.$watch(t,u,!0),n.$watch(r,d),n.$watch(i,p),n.$watch(l,f),n.$watch(s,m)}var t={restrict:"E",scope:{edaEasyFormViewerDataModel:"=?",edaEasyFormViewerEasyFormGeneratorFieldsModel:"=?",edaEasyFormViewerSubmitButtonText:"@?",edaEasyFormViewerCancelButtonText:"@?",edaEasyFormViewerSubmitFormEvent:"&?",edaEasyFormViewerCancelFormEvent:"&?"},replace:!1,controller:s.EASY_FORM_VIEWER_CONTROLLER,controllerAs:s.EASY_FORM_VIEWER_CONTROLLERAS,template:l.default,link:n};return t}Object.defineProperty(n,"__esModule",{value:!0}),n.EASY_FORM_VIEWER_DIRECTIVE_NAME=void 0;var i=t(9),l=o(i),a=t(10),s=t(11),c="edaEasyFormViewer";r.$inject=["$modelsTranslator"],n.default=r,n.EASY_FORM_VIEWER_DIRECTIVE_NAME=c},function(e,n){e.exports=''},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=[{line:1,activeColumn:1,columns:[{numColumn:1,exist:!0,control:{type:"none",key:"none"}}]}],o=function(){return angular.copy(t)},r=function(e){var n=angular.isArray(e.dataModel)&&e.dataModel.length>0?e.dataModel:[];return n},i=function(e){var n=angular.isArray(e)&&e.length>0?e:o();return n};n.emptyEdaFieldsModel=o,n.returnAttributeDataModelIfNotEmpty=r,n.returnAttributeConfigurationLinesIfNotEmpty=i},function(e,n){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(e,n){for(var t=0;t\n \n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n {{\'COL_WILL_BE_BLANK\' | translate}}\n \n \n
\n
\n
\n \n ',bindings:{},controller:(r=o=function e(){t(this,e)},o.$inject=[],r)},a="stepway.editBlankControl.module";n.default=angular.module(a,[]).component(i,l)},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.IpAdressConfig={id:"IpAdress",name:"IpAdress",subtitle:"IpAdress",group:"input",formlyType:"input",formlySubtype:"ipadress",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{ipAddressShape:{expression:function(e,n){var t=n||e;return/(\d{1,3}\.){3}\d{1,3}/.test(t)},message:"$viewValue + ' is not a valid IP Address'"}},formlyValidation:{messages:{required:function(e,n,t){var o="this IP Adress field is required",r="undefined"!=typeof t.to.label&&""!==t.to.label?t.to.label+" is required":o;if(t.to.required)return r}}}}},function(e,n){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o,r,i=n.EDIT_IP_ADRESS_COMPONENT="editIpAdressControl",l=n.editIpAdressControlComponent={template:'\n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ',bindings:{nyaSelect:"="},controller:(r=o=function e(){t(this,e)},o.$inject=[],r)},a="stepway.editIpAdress.module";n.default=angular.module(a,[]).component(i,l)},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.DateConfig={id:"Date",name:"Date",subtitle:"Date",group:"input",formlyType:"datepicker",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[],datepickerOptions:{format:"dd-MMMM-yyyy"},formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(e,n,t){var o="this Date field is required",r="undefined"!=typeof t.to.label&&""!==t.to.label?t.to.label+" is required":o;return r}}}}},function(e,n){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o,r,i=n.EDIT_DATE_COMPONENT="editDateControl",l=n.editDateControlComponent={template:'\n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ',bindings:{nyaSelect:"=",demodt:"=",dateOptions:"=",open:"&"},controller:(r=o=function e(){t(this,e)},o.$inject=[],r)},a="stepway.editDateControl.module";n.default=angular.module(a,[]).component(i,l)},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.CheckBoxConfig={id:"Checkbox",name:"Checkbox",subtitle:"Checkbox",group:"Checkbox",formlyType:"checkbox",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(e,n,t){var o="this Checkbox field is required",r="undefined"!=typeof t.to.label&&""!==t.to.label?t.to.label+" is required":o;return r}}}}},function(e,n){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o,r,i=n.EDIT_CHECKBOX_COMPONENT="editCheckBoxControl",l=n.editCheckBoxControlComponent={template:'\n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ',bindings:{nyaSelect:"="},controller:(r=o=function e(){t(this,e)},o.$inject=[],r)},a="stepway.editCheckBox.module";n.default=angular.module(a,[]).component(i,l)},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.EmailConfig={id:"Email",name:"Email",subtitle:"Email",group:"input",formlyType:"input",formlySubtype:"email",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{emailShape:{expression:function(e,n){var t=n||e;return/^[a-z]+[a-z0-9._]+@[a-z]+\.[a-z.]{2,5}$/.test(t)},message:"$viewValue + ' is not a valid email'"}},formlyValidation:{messages:{required:function(e,n,t){var o="this Email field is required",r="undefined"!=typeof t.to.label&&""!==t.to.label?t.to.label+" is required":o;if(t.to.required)return r}}}}},function(e,n){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o,r,i=n.EDIT_EMAIL_COMPONENT="editEmailControl",l=n.editEmailControlComponent={template:'\n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ',bindings:{nyaSelect:"="},controller:(r=o=function e(){t(this,e)},o.$inject=[],r)},a="stepway.editEmailControl.module";n.default=angular.module(a,[]).component(i,l)},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.BasicSelectConfig={id:"BasicSelect",name:"Basic select",subtitle:"Basic select",options:[],group:"Select",formlyType:"basicSelect",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(e,n,t){var o="this Basic select field is required",r="undefined"!=typeof t.to.label&&""!==t.to.label?t.to.label+" is required":o;return r}}}}},function(e,n){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o,r,i=n.EDIT_BASIC_SELECT_COMPONENT="editBasicSelectControl",l=n.editBasicSelectControlComponent={template:'\n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n \n {{\'ADD_NEW_OPTIONS\' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{\'EDIT_REMOVE_OPTIONS\' | translate}} :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ',
+bindings:{nyaSelect:"=",basicSelectRowCollection:"=",newOptionBasicSelect:"=",addNewOptionBasicSelect:"&",upThisRow:"&",downThisRow:"&",removeRow:"&"},controller:(r=o=function e(){t(this,e)},o.$inject=[],r)},a="stepway.editBasicSelect.module";n.default=angular.module(a,[]).component(i,l)},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.GroupedSelectConfig={id:"GroupedSelect",name:"Grouped Select",subtitle:"Grouped Select",options:[],group:"Select",formlyType:"groupedSelect",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(e,n,t){var o="this Grouped Select field is required",r="undefined"!=typeof t.to.label&&""!==t.to.label?t.to.label+" is required":o;return r}}}}},function(e,n){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o,r,i=n.EDIT_GROUPED_SELECT_COMPONENT="editGroupedSelectControl",l=n.editGroupedSelectControlComponent={template:'\n \n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n \n {{\'ADD_NEW_OPTIONS\' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{\'ADD_NEW_GROUPS\' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{\'EDIT_GROUPS_OPTIONS\' | translate}} :\n \n
\n
\n
\n
\n
\n
\n
\n
\n ',bindings:{nyaSelect:"=",groupedSelectRowCollection:"=",newOptionGroupedSelect:"=",newGroupGroupedSelect:"=",groupSelectGroupClick:"=",groupedSelectGroups:"=",addNewOptionGroupedSelect:"&",addNewGroupToGroupedSelect:"&",upThisGroupedSelectRow:"&",downThisGroupedSelectRow:"&",showGroupListToChoose:"&",removeGroupedSelectRow:"&"},controller:(r=o=function e(){t(this,e)},o.$inject=[],r)},a="stepway.editGroupedSelect.module";n.default=angular.module(a,[]).component(i,l)},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.HeaderConfig={id:"Header",name:"Header",subtitle:"no control",group:"Decoration",formlyType:"header",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{}}},function(e,n){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o,r,i=n.EDIT_HEADER_CONTROL_COMPONENT="editHeaderControl",l=n.editHeaderControlComponent={template:'\n
\n
\n
\n
\n
\n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n ',bindings:{nyaSelect:"="},controller:(r=o=function e(){t(this,e)},o.$inject=[],r)},a="stepway.editHeaderControl.module";n.default=angular.module(a,[]).component(i,l)},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.PasswordConfig={id:"Password",name:"Password",subtitle:"Password",group:"input",formlyType:"input",formlySubtype:"password",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(e,n,t){var o="this Password field is required",r="undefined"!=typeof t.to.label&&""!==t.to.label?t.to.label+" is required":o;return r}}}}},function(e,n){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o,r,i=n.EDIT_PASSWORD_CONTROL_COMPONENT="editPasswordControl",l=n.editPasswordControlComponent={template:'\n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n ',bindings:{nyaSelect:"="},controller:(r=o=function e(){t(this,e)},o.$inject=[],r)},a="stepway.editPasswordControl.module";n.default=angular.module(a,[]).component(i,l)},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.RadioConfig={id:"Radio",name:"Radio",subtitle:"Radio",options:[],group:"Radio",formlyType:"radio",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(e,n,t){var o="this Password field is required",r="undefined"!=typeof t.to.label&&""!==t.to.label?t.to.label+" is required":o;return r}}}}},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.editRadioControlComponent=n.EDIT_RADIO_CONTROL_COMPONENT=void 0;var i=function(){function e(e,n){for(var t=0;t
\n \n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n \n {{\'ADD_NEW_RADIO\' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{\'EDIT_REMOVE_RADIO\' | translate}} :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n'},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=t(36),r="stepway.editRadioControl.module";n.default=angular.module(r,[]).component(o.EDIT_RADIO_CONTROL_COMPONENT,o.editRadioControlComponent)},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.RichTextEditorConfig={id:"RichTextEditor",name:"RichTextEditor",subtitle:"RichTextEditor",group:"Textarea",formlyType:"richEditor",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(e,n,t){var o="this RichTextEditor field is required",r="undefined"!=typeof t.to.label&&""!==t.to.label?t.to.label+" is required":o;return r}}}}},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.editRichTextEditorControlComponent=n.EDIT_RICH_TEXT_EDITOR_COMPONENT=void 0;var i=function(){function e(e,n){for(var t=0;t\n \n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n \n\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n\n\n
\n
\n
\n';
+},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=t(40),r="stepway.editRichTextEditor.module";n.default=angular.module(r,[]).component(o.EDIT_RICH_TEXT_EDITOR_COMPONENT,o.editRichTextEditorControlComponent)},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.SubTitleConfig={id:"Subtitle",name:"Subtitle",subtitle:"no control",group:"Decoration",formlyType:"subTitle",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{}}},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.editSubTitleControlComponent=n.EDIT_SUBTITLE_CONTROL_COMPONENT=void 0;var i=function(){function e(e,n){for(var t=0;t\n \n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n \n\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n'},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=t(44),r="stepway.editSubTitleControl.module";n.default=angular.module(r,[]).component(o.EDIT_SUBTITLE_CONTROL_COMPONENT,o.editSubTitleControlComponent)},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.TextAreaConfig={id:"Texarea",name:"Textarea",subtitle:"Textarea",group:"Textarea",formlyType:"textarea",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(e,n,t){var o="this Textarea field is required",r="undefined"!=typeof t.to.label&&""!==t.to.label?t.to.label+" is required":o;return r}}}}},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.editTextareaControlComponent=n.EDIT_TEXTAREA_CONTROL_COMPONENT=void 0;var i=function(){function e(e,n){for(var t=0;t\n \n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n'},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=t(48),r="stepway.editTextAreaControl.module";n.default=angular.module(r,[]).component(o.EDIT_TEXTAREA_CONTROL_COMPONENT,o.editTextareaControlComponent)},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.TextInputConfig={id:"TextInput",name:"Text input",subtitle:"Text input",group:"input",formlyType:"input",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDescription:"",formlyDefaultValue:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(e,n,t){var o="this Text input field is required",r="undefined"!=typeof t.to.label&&""!==t.to.label?t.to.label+" is required":o;return r}}}}},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.editTextInputControlComponent=n.EDIT_TEXTINPUT_CONTROL_COMPONENT=void 0;var i=function(){function e(e,n){for(var t=0;t
\n \n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n'},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=t(52),r="stepway.editTextInputControl.module";n.default=angular.module(r,[]).component(o.EDIT_TEXTINPUT_CONTROL_COMPONENT,o.editTextInputControlComponent)},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=Object.assign||function(e){for(var n=1;n
\n \n
\n '+u(r)+"\n \n \n \n \n "},a={className:"col-xs-6",type:r&&r.type&&"none"!==r.type?r.type:"blank",key:r&&r.key?r.key:"blank"+Date.now(),templateOptions:{type:d(r),label:l(r),required:s(r),placeholder:p(r),description:u(r),options:c(r)},defaultValue:f(r),expressionProperties:m(r),validators:v(r),validation:y(r)};"datepicker"===r.type&&g(a,n,o);var b=t({},n.lines[o].columns[1].control),h={className:"col-xs-6",template:'\n \n
\n
\n '+u(b)+"\n \n \n \n
\n "},T={className:"col-xs-6",type:b&&b.type&&"none"!==b.type?b.type:"none",key:b&&b.key?b.key:"blank"+Date.now(),templateOptions:{type:d(b),label:l(b),required:s(b),placeholder:p(b),description:u(b),options:c(b)},defaultValue:f(b),expressionProperties:m(b),validators:v(b),validation:y(b)};"datepicker"===b.type&&g(T,n,o);var x=[];"header"===r.type?x.push(i):x.push(a),"header"===b.type?x.push(h):x.push(T),e.push({className:"row",fieldGroup:x})},T=function(e,n,o){var r=t({},n.lines[o].columns[0].control),i={className:"col-xs-4",template:'\n \n
\n
\n '+u(r)+"\n \n \n \n
\n "},a={className:"col-xs-4",type:r&&r.type&&"none"!==r.type?r.type:"blank",key:r&&r.key?r.key:"blank"+Date.now(),templateOptions:{type:d(r),label:l(r),required:s(r),placeholder:p(r),description:u(r),options:c(r)},defaultValue:f(r),expressionProperties:m(r),validators:v(r),validation:y(r)};"datepicker"===r.type&&g(a,n,o);var b=t({},n.lines[o].columns[1].control),h={className:"col-xs-4",template:'\n \n
\n
\n '+u(b)+"\n \n \n \n
\n "},T={className:"col-xs-4",type:b&&b.type&&"none"!==b.type?b.type:"blank",key:b&&b.key?b.key:"blank"+Date.now(),templateOptions:{type:d(b),label:l(b),required:s(b),placeholder:p(b),description:u(b),options:c(b)},defaultValue:f(b),expressionProperties:m(b),validators:v(b),validation:y(b)};"datepicker"===b.type&&g(T,n,o);var x=t({},n.lines[o].columns[2].control),C={className:"col-xs-4",template:'\n \n
\n
\n '+u(x)+"\n \n \n \n
\n "},E={className:"col-xs-4",type:x&&x.type&&"none"!==x.type?x.type:"blank",key:x&&x.key?x.key:"blank"+Date.now(),templateOptions:{type:d(x),label:l(x),required:s(x),placeholder:p(x),description:u(x),options:c(x)},defaultValue:f(x),expressionProperties:m(x),validators:v(x),validation:y(x)};"datepicker"===x.type&&g(E,n,o);var O=[];"header"===r.type?O.push(i):O.push(a),"header"===b.type?O.push(h):O.push(T),"header"===x.type?O.push(C):O.push(E),e.push({className:"row",fieldGroup:O})},x=function(e){var n={};return angular.copy(n,e),!0},C=function(e){var n=[];angular.copy(n,e)};n.configurationModelInit=o,n.configurationModelResult=r,n.resetDataModel=x,n.resetFormlyModel=C,n.isTemplateOptionDefined=i,n.extractTemplateOptionLabel=l,n.extractTemplateOptionDatepickerOptions=a,n.extractDefaultValue=f,n.extractFormlyExpressionProperties=m,n.extractFormlyValidators=v,n.extractFormlyValidation=y,n.extractTemplateOptionRequired=s,n.extractTemplateOptionOptions=c,n.extractTemplateOptionType=d,n.extractTemplateOptionPlaceholder=p,n.extractTemplateOptionDescription=u,n.addDatepickerOptionsProperty=g,n.addOneColumnControl=b,n.addTwoColumnControl=h,n.addThreeColumnControl=T},function(e,n,t){"use strict";function o(e){function n(e){return e=e.replace(/[\-_\s]+(.)?/g,function(e,n){return n?n.toUpperCase():""}),e.replace(/^([A-Z])/,function(e,n){return n?n.toLowerCase():""})}e.setType({name:"richEditor",template:r.richTextTemplate.template,wrapper:["bootstrapLabel","bootstrapHasError"]}),e.setType({name:"blank",template:r.blankTemplate.template}),e.setType({name:"header",template:r.headerTemplate.template}),e.setType({name:"subTitle",template:r.subTitleTemplate.template}),e.setType({name:"basicSelect",template:r.basicSelectTemplate.template,wrapper:["bootstrapLabel","bootstrapHasError"]}),e.setType({name:"groupedSelect",template:r.groupedSelectTemplate.template,wrapper:["bootstrapLabel","bootstrapHasError"]});var t=["date-disabled","custom-class","show-weeks","starting-day","init-date","min-mode","max-mode","format-day","format-month","format-year","format-day-header","format-day-title","format-month-title","year-range","shortcut-propagation","datepicker-popup","show-button-bar","current-text","clear-text","close-text","close-on-date-selection","datepicker-append-to-body"],o=["datepicker-mode","min-date","max-date"],i={};angular.forEach(t,function(e){i[n(e)]={attribute:e}}),angular.forEach(o,function(e){i[n(e)]={bound:e}}),e.setType({name:"datepicker",template:r.datepickerTemplate.template,defaultOptions:{ngModelAttrs:i,templateOptions:{datepickerOptions:{format:"dd/MM/yyyy",initDate:new Date,showWeeks:!1}}},wrapper:["bootstrapLabel","bootstrapHasError"],controller:["$scope",function(e){e.datepicker={};var n=e.model[e.options.key];"string"==typeof n&&(e.model[e.options.key]=new Date(n)),e.datepicker.opened=!1,e.datepicker.open=function(n){n.preventDefault(),n.stopPropagation(),e.datepicker.opened=!e.datepicker.opened}}]}),e.setWrapper([{template:r.validationTemplate.template}])}Object.defineProperty(n,"__esModule",{value:!0});var r=t(57);o.$inject=["formlyConfigProvider"],n.default=o},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.richTextTemplate={template:'\n \n \n '},n.blankTemplate={template:"
"},n.headerTemplate={template:'\n \n
\n
\n {{ options.templateOptions.placeholder }}\n \n \n \n
\n '},n.subTitleTemplate={template:'\n \n
\n
\n {{ options.templateOptions.placeholder }}\n \n \n \n
\n '},n.basicSelectTemplate={template:'\n \n \n \n {{option.name}}\n \n \n \n '},n.groupedSelectTemplate={template:'\n \n \n \n \n \n {{option.name}}\n \n \n \n \n \n '},n.datepickerTemplate={template:'\n \n \n \n \n \n \n \n
\n '},n.validationTemplate={template:'\n \n '}},function(e,n){e.exports={stepway:{version:"2.1.4"},dragdropway:{version:"2.1.4"},formviewer:{version:"2.1.4"}}},function(e,n){}]);
//# sourceMappingURL=eda.easyFormViewer.min.js.map
\ No newline at end of file
diff --git a/static/js/eda.easyFormViewer.min.js.map b/static/js/eda.easyFormViewer.min.js.map
new file mode 100644
index 0000000..c61dc25
--- /dev/null
+++ b/static/js/eda.easyFormViewer.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///eda.easyFormViewer.min.js","webpack:///webpack/bootstrap 6111d7e782a51f9ef704","webpack:///./src/app/formviewer/index.js","webpack:///./src/app/formviewer/vendors.js","webpack:///./~/api-check/dist/api-check.js","webpack:///./~/angular-formly/dist/formly.js","webpack:///external \"angular\"","webpack:///./~/angular-formly-templates-bootstrap/dist/angular-formly-templates-bootstrap.js","webpack:///./src/app/formviewer/main.js","webpack:///./src/app/formviewer/components/main/eda.easyFormViewer.main.module.js","webpack:///./src/app/formviewer/components/main/eda.easyFormViewer.main.directive.js","webpack:///./src/app/formviewer/components/main/eda.easyFormViewer.main.template.html","webpack:///./src/app/formviewer/components/main/eda.easyFormViewer.main.directive.helpers.js","webpack:///./src/app/formviewer/components/main/eda.easyFormViewer.main.controller.js","webpack:///./src/app/formviewer/components/core/eda.easyFormViewer.core.module.js","webpack:///./src/app/formviewer/components/modelsTranslator/eda.easyFormViewer.modelTranslator.module.js","webpack:///./src/app/formviewer/components/modelsTranslator/eda.easyFormViewer.modelTranslator.service.js","webpack:///./src/app/formviewer/components/modelsTranslator/eda.easyFormViewer.modelTranslator.service.helpers.js","webpack:///./src/app/stepway/components/controls/index.js","webpack:///./src/app/stepway/components/controls/blank/config/blank.config.js","webpack:///./src/app/stepway/components/controls/blank/editBlank/editBlankControl.component.js","webpack:///./src/app/stepway/components/controls/IpAdress/config/IpAdress.config.js","webpack:///./src/app/stepway/components/controls/IpAdress/editIpAdress/editIpAdress.component.js","webpack:///./src/app/stepway/components/controls/Date/config/date.config.js","webpack:///./src/app/stepway/components/controls/Date/editDate/editDate.component.js","webpack:///./src/app/stepway/components/controls/CheckBox/config/checkbox.config.js","webpack:///./src/app/stepway/components/controls/CheckBox/editCheckBox/editCheckBox.component.js","webpack:///./src/app/stepway/components/controls/Email/config/email.config.js","webpack:///./src/app/stepway/components/controls/Email/editEmail/editEmail.component.js","webpack:///./src/app/stepway/components/controls/basicSelect/config/basicSelect.config.js","webpack:///./src/app/stepway/components/controls/basicSelect/editBasicSelect/editBasicSelect.component.js","webpack:///./src/app/stepway/components/controls/groupedSelect/config/groupedSelect.config.js","webpack:///./src/app/stepway/components/controls/groupedSelect/editGroupedSelect/editGroupedSelect.component.js","webpack:///./src/app/stepway/components/controls/header/config/header.config.js","webpack:///./src/app/stepway/components/controls/header/editHeader/editHeaderControl.component.js","webpack:///./src/app/stepway/components/controls/password/config/password.config.js","webpack:///./src/app/stepway/components/controls/password/editPassword/editPassword.component.js","webpack:///./src/app/stepway/components/controls/radio/config/stepway.radio.config.js","webpack:///./src/app/stepway/components/controls/radio/editRadio/stepway.editRadio.component.js","webpack:///./src/app/stepway/components/controls/radio/editRadio/stepway.editRadio.template.html","webpack:///./src/app/stepway/components/controls/radio/editRadio/stepway.editRadio.module.js","webpack:///./src/app/stepway/components/controls/richTextEditor/config/stepway.richTextEditor.config.js","webpack:///./src/app/stepway/components/controls/richTextEditor/editRichTextEditor/stepway.editRichTextEditor.component.js","webpack:///./src/app/stepway/components/controls/richTextEditor/editRichTextEditor/stepway.editRichTextEditor.template.html","webpack:///./src/app/stepway/components/controls/richTextEditor/editRichTextEditor/stepway.editRichTextEditor.module.js","webpack:///./src/app/stepway/components/controls/subTitle/config/stepway.subTitle.config.js","webpack:///./src/app/stepway/components/controls/subTitle/editSubTitle/stepway.editSubTitle.component.js","webpack:///./src/app/stepway/components/controls/subTitle/editSubTitle/stepway.editSubTitle.template.html","webpack:///./src/app/stepway/components/controls/subTitle/editSubTitle/stepway.editSubTitle.module.js","webpack:///./src/app/stepway/components/controls/textArea/config/stepway.textArea.config.js","webpack:///./src/app/stepway/components/controls/textArea/editTextArea/stepway.editTextArea.component.js","webpack:///./src/app/stepway/components/controls/textArea/editTextArea/stepway.editTextArea.template.html","webpack:///./src/app/stepway/components/controls/textArea/editTextArea/stepway.editTextArea.module.js","webpack:///./src/app/stepway/components/controls/textInput/config/stepway.textInput.config.js","webpack:///./src/app/stepway/components/controls/textInput/editTextInput/stepway.editTextInput.component.js","webpack:///./src/app/stepway/components/controls/textInput/editTextInput/stepway.editTextInput.template.html","webpack:///./src/app/stepway/components/controls/textInput/editTextInput/stepway.editTextInput.module.js","webpack:///./src/app/stepway/services/formlyProxy/formlyProxy.service.helpers.js","webpack:///./src/app/stepway/config/formly/formly.config.js","webpack:///./src/app/stepway/config/formly/formly.config.templates.js","webpack:///./src/app/easyFormConfig.json"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","root","factory","this","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_apiCheck","_apiCheck2","getApiCheckInstance","apiCheck","api","args","output","config","disabled","globalConfig","apiTypes","argTypes","passed","message","failed","checkApiCheckApi","arguments","Array","isArray","prototype","slice","messages","checkEnoughArgs","length","checkApiWithArgs","returnObject","getTypes","getErrorMessage","checkApiArgs","isArrayOrArgs","Error","prefix","errors","apiCheckApis","handleErrorMessage","getApiCheck","shouldThrow","result","console","warn","getPrefix","onlyPrefix","gOut","trim","getSuffix","s","onlySuffix","suffix","getUrl","u","url","docsBaseUrl","urlSuffix","undefined","join","passedAndShouldHavePassed","buildMessageFromApiAndArgs","replaceFunctionWithName","each","val","name","replacedItems","indexOf","push","displayName","getObjectString","types","stringify","generateMessage","n","useS","keys","newLine","passedArgs","_getTypes","copy","arrayify","map","checker","index","specified","hasOwnProperty","getCheckerDisplay","terse","verbose","addHelpers","arg","getArgDisplay","extraCheckers","apiCheckApiCheck","getApiCheckInstanceCheckers","additionalProperties","throw","utils","apiCheckUtil","wrapper","checkers","getCheckers","checkerIndex","argIndex","res","lastChecker","argName","argFailed","skipPreviousChecker","isOptional","isError","getCheckerErrorMessage","t","checkerTypeType","checkerType","location","apiCheckDataChecker","shape","type","string","optional","bool","asFunc","func","withProperties","__apiCheckData","asShape","wrongShape","oneOfType","getError","checkerHelp","getCheckerHelp","_ref","help","requiredArgs","filter","a","gottenArgs","hasKeys","getDisplayIfNotGotten","getDisplay","cName","constructor","typeOf","properties","argDisplay","v","k","getApiCheckApis","os","checkerFnChecker","shortType","notOptional","notRequired","strict","objectOf","typeOrArrayOf","any","VERSION","internalChecker","getSerialize","fn","decycle","seen","key","getPath","ret","path","unshift","spaces","JSON","_defineProperty","enumerable","configurable","writable","daCopy","RegExp","options","display","short","getCheckerType","typeTypes","iterator","context","eachArry","eachObj","hasOwn","i","list","arry","finalJoin","last","pop","stringType","nAtL","tName","tLocation","thing","undef","setupChecker","getNoop","isNoop","prop","getRequiredVersion","notNullable","addNullable","addOptional","requiredChecker","copyProps","originalChecker","optionalCheck","fixType","nullableCheck","isNullable","nullable","checkerCopy","apply","src","dest","noop","checkerHelpers","typeOfCheckGetter","lType","toLowerCase","funcCheckGetter","functionChecker","apiError","shapeChecker","notFunction","objectCheckGetter","nullType","objectNullOkChecker","objectChecker","nullOk","instanceCheckGetter","classToCheck","oneOfCheckGetter","enums","enum","enm","some","oneOfTypeCheckGetter","typeCheckers","checkersDisplay","arrayOfCheckGetter","shortCheckerDisplay","array","every","item","objectOfCheckGetter","checkerDisplay","notObject","object","allTypesSuccess","typeOrArrayOfCheckGetter","arrayOf","getShapeCheckGetter","shapeCheckGetter","nonObject","modifyTypeDisplayToHelpOut","theRet","required","addHelper","property","objectMessage","stringMessage","error","toUpperCase","parentRequired","strictType","shapeTypes","isObject","shapePropError","shapeError","allowedProperties","extraProps","getRequiredIfNotChecker","all","otherProps","propChecker","props","ifProps","description","getTypeForShapeChild","propName","propExists","iteration","otherPropsExist","otherProp","ifNot","onlyIf","othersPresent","requiredIfNot","argumentsCheckerGetter","number","anyCheckGetter","nullCheckGetter","rangeCheckGetter","min","max","lessThanCheckGetter","greaterThanCheckGetter","emptyObjectCheckGetter","emptyObject","instanceOf","oneOf","range","lessThan","greaterThan","null","_require","__WEBPACK_EXTERNAL_MODULE_16__","__WEBPACK_EXTERNAL_MODULE_17__","_interopRequire","angular","formlyApiCheck","formlyErrorAndWarningsUrlPrefix","formlyUsability","formlyConfig","formlyValidationMessages","formlyUtil","formlyWarn","formlyCustomValidation","formlyField","formlyFocus","formlyForm","formlyNgModelAttrsManipulator","formlyCustomTags","ngModuleName","ngModule","constant","provider","directive","run","shapeRequiredIfNot","shapeRequiredIfNotDefinition","apiCheckFactory","formlyExpression","specifyWrapperType","apiCheckProperty","apiCheckInstanceProperty","apiCheckFunctionProperty","formlyWrapperType","template","templateUrl","overwriteOk","validateOptions","apiCheckInstance","apiCheckFunction","apiCheckOptions","expressionProperties","expression","modelChecker","fieldOptionsApiShape","$$hashKey","model","className","data","templateOptions","modelOptions","updateOn","debounce","allowInvalid","getterSetter","timezone","watcher","listener","validators","noFormControl","hide","hideExpression","ngModelAttrs","attribute","bound","elementAttributes","optionsTypes","link","controller","validation","show","errorExistsAndShouldBeVisible","formControl","runExpressions","resetModel","updateInitialValue","initialValue","defaultValue","formlyFieldOptions","formOptionsApi","formState","removeChromeAutoComplete","fieldGroup","form","typeOptionsDefaultOptions","formlyTypeOptions","defaultOptions","extends","extend","getFieldError","errorInfoSlug","field","toJson","getFormlyError","checkWrapper","checkWrapperTemplate","additionalInfo","formlyTransclude","_this","$get","$inject","formlyUsabilityProvider","setType","forEach","checkType","extendTypeOptions","typeMap","checkOverwrite","extendsType","getType","extendTypeControllerFunction","extendTypeLinkFunction","extendTypeValidateOptionsFunction","extendTypeDefaultOptions","reverseDeepMerge","extendTemplate","extendsCtrl","isDefined","optionsCtrl","$scope","$controller","extendsFn","optionsFn","originalDefaultOptions","mergedOptions","isFunction","extendsDO","optionsDO","optionsDOIsFn","extendsDOIsFn","extendsDefaultOptions","mergedDefaultOptions","extenderOptionsDefaultOptions","newDefaultOptions","throwError","errorContext","setWrapper","_x","_x2","_again","wrapperOptions","getOptionsTypes","getOptionsName","checkWrapperAPI","templateWrappersMap","isString","defaultWrapperName","checkWrapperTypes","newValue","objectName","getWrapper","getWrapperByType","wrappers","removeWrapperByName","removeWrappersForType","disableWarnings","_this2","extras","disableNgModelAttrsManipulator","ngModelAttrsManipulatorPreferUnbound","defaultHideDirective","getFieldId","templateManipulators","preWrapper","postWrapper","addTemplateOptionValueMessage","alternate","validationMessages","templateOptionValue","addStringMessage","viewValue","modelValue","scope","$log","warnInfoSlug","shift","_toConsumableArray","arr","arr2","from","$q","isPromiseLike","then","checkValidators","validatorsWithExtraProps","validator","restrict","require","el","attrs","ctrl","opts","formlyEval","$modelValue","$viewValue","useNewValidatorsApi","setupWithValidators","validatorCollection","isPossiblyAsync","when","reject","setupWithParsers","inFlightValidator","$parsers","isValid","$pending","$setValidity","$http","$compile","$templateCache","FormlyFieldController","$timeout","$parse","currentValue","valueGetterSetter","setter","assign","promise","newVal","simplifyLife","to","setFieldId","formName","$name","formId","setDefaultValue","setInitialValue","mergeFieldOptionsWithTypeDefaults","mergeOptions","properOrder","reverse","typeName","extraOptions","extendOptionsWithDefaults","addModelWatcher","$watch","$setViewValue","$render","$setUntouched","$setPristine","addValidationMessages","invokeControllers","setupFieldGroup","fieldType","getFieldType","checkApi","fieldLink","setFieldGroupTemplate","checkFieldGroupApi","addClass","extraAttributes","setElementTemplate","addAttributes","attr","addClasses","templateString","html","asHtml","contents","watchFormControl","watchFieldNameOrExistence","nameExpressionRegex","nameExpression","exec","watchFieldName","watchFieldExistence","stopWatchingField","fc","stopWatchingShowError","addShowMessagesWatcher","customExpression","errorExistsAndShouldBeVisibleExpression","$invalid","noTouchedButDirty","isUndefined","$touched","$dirty","showError","templateEl","element","ngModelNode","querySelector","getAttribute","callLinkFunctions","thusly","runManipulators","manipulators","chain","manipulator","newTemplate","getFieldTemplate","transcludeInWrappers","append","fromOptionsOrType","getTemplate","isUrl","templatePromise","_ret","httpOptions","cache","get","response","getWrapperOption","runApiCheck","promises","w","wrappersTemplates","wrapperTemplate","totalWrapper","doTransclusion","superWrapper","transcludeEl","find","findByNodeName","replaceWith","typeWrappers","concat","defaultWrapper","instance","transclude","fields","$document","previousEl","doc","$observe","activeElement","focus","focusWait","blur","currentFormId","getRootEl","rootEl","getFieldRootEl","fieldRootEl","getHideDirective","hideDirective","getTrackBy","trackBy","getFormName","bindName","version","minor","copyAttributes","attributes","excluded","arrayAttrs","nodeName","nodeValue","toKebabCase","replace","$1","parentFormAttributes","parent","hasClass","onModelOrFormStateChange","extraLocals","setupOptions","isFieldGroup","initModel","attachKey","setupWatchers","watchers","watchExpression","getWatchExpression","watchListener","getWatchListener","stopWatching","watchDeep","originalExpression","modifyArgs","_slice","originalListener","_len","originalArgs","_key","theFormlyForm","$parent","global","offInstance","onInstance","input","document","createElement","setAttribute","appendChild","addFormlyNgModelAttrsManipulator","ngModelAttrsManipulator","addValidation","addIfNotPresent","modelNodes","addModelOptions","node","addTemplateOptionsAttrs","ep","ngModelAttributes","getBuiltInAttributes","attrVal","attrName","ref","toVal","epVal","getEpValue","inTo","inEp","boolean","skipNgModelAttrsManipulator","innerHTML","querySelectorAll","boundOnly","bothBooleanAndBound","bothAttributeAndBound","expressionOnly","attributeOnly","substr","nodes","addCustomTags","div","isIeLessThan9","getElementsByTagName","customElements","window","$eval","objAndSameType","obj1","obj2","getPrototypeOf","children","extendFunction","fns","__WEBPACK_EXTERNAL_MODULE_2__","__WEBPACK_EXTERNAL_MODULE_3__","__WEBPACK_EXTERNAL_MODULE_8__","addCheckboxType","formlyConfigProvider","formlyBootstrapApiCheck","labelProp","valueProp","checkValidity","expressionValue","valid","setModel","multiCheckbox","checked","checkbox","$setTouched","change","addWrappers","label","_addons","_addons2","_description","_description2","addRadioType","addInputType","addSelectType","ngOptions","groupProp","addTextareaType","rows","cols","addAddonsManipulator","addonTemplate","addonChecker","class","text","onClick","addonLeft","addonRight","addDescriptionManipulator","modelEls","_edaEasyFormViewerMain","_edaEasyFormViewerMain2","_edaEasyFormViewerCore","_edaEasyFormViewerCore2","_edaEasyFormViewerModelTranslator","_edaEasyFormViewerModelTranslator2","_formlyConfig","_formlyConfig2","_easyFormConfig","_easyFormConfig2","DEP_TO_INJECT_IN_MAIN","EASY_FORM_VIEWER_VERSION_NAME","EASY_FORM_VIEWER_VERSION_VALUE","formviewer","MAIN_MODULE_NAME","mainModule","_edaEasyFormViewerMain3","_edaEasyFormViewerMain4","FORM_VIEWER_MAIN_MODULE_NAME","EASY_FORM_VIEWER_DIRECTIVE_NAME","EASY_FORM_VIEWER_CONTROLLER","edaFormViewerDirective","$modelsTranslator","linkFct","dataModelToWatch","edaEasyFormViewerDataModel","fieldsModelToWatch","edaEasyFormViewerEasyFormGeneratorFieldsModel","submitBtnTextToWatch","edaEasyFormViewerSubmitButtonText","cancelBtnTextToWatch","edaEasyFormViewerCancelButtonText","submitEventToWatch","vm","hasJustSumitted","cancelEventToWatch","hasJustCancelled","fieldsModelWatcher","newFieldsModel","loadExistingConfigurationModel","submitBtnTextWatcher","newSubmitBtntext","oldSubmitBtntext","submitText","cancelBtnTextWatcher","newCancelBtntext","oldCancelBtntext","cancelText","dataModelWatcher","newDataModel","submitEventWatcher","newSubmitEvent","edaEasyFormViewerSubmitFormEvent","_dataModelSubmitted","dataModelSubmitted","cancelEventWatcher","newCancelEvent","edaEasyFormViewerCancelFormEvent","loadFieldsModel","initialFieldsModel","loadedFieldModel","configlines","_edaEasyFormViewerMainDirective","returnAttributeConfigurationLinesIfNotEmpty","formlyFieldsModel","configurationLoaded","bindConfigurationLines","refreshControlFormlyExpressionProperties","refreshControlFormlyValidators","refreshControlFormlyValidation","configuration","applyConfigurationToformlyModel","controllerAs","_edaEasyFormViewerMainTemplate","_edaEasyFormViewerMainTemplate2","EMPTY_FIELD_MODEL","line","activeColumn","columns","numColumn","exist","control","emptyEdaFieldsModel","returnAttributeDataModelIfNotEmpty","edaEasyFormGeneratorModel","dataModelToReturn","dataModel","edaEasyFormGeneratorModelToReturn","_classCallCheck","Constructor","TypeError","_createClass","defineProperties","target","descriptor","protoProps","staticProps","EASY_FORM_VIEWER_CONTROLLERAS","edaEasyFormViewerController","init","CORE_MODULES","FORMVIEWER_CORE_MODULE_NAME","FORM_VIEWER_MODEL_TRANSLATOR_MODULE_NAME","service","MODEL_TRANSLATOR_SERVICE","_edaEasyFormViewerModelTranslatorService","nyaSelectObj","resetNyaSelect","controls","configurationModel","lines","column","_controlsDefinition","getControlsDefinition","aControl","formlyType","subtype","formlySubtype","formlyExpressionProperties","formlyValidators","_this3","formlyValidation","configurationModelResult","getEmptyConfigModelResult","getMessageObject","getErrorObject","formlyModel","formlyDataModel","resetFormlyModel","resetDataModel","lineIndex","addOneColumnControl","addTwoColumnControl","addThreeColumnControl","getConfigurationModelInit","_extends","source","_controls","_formlyProxyService","configurationModelInit","emptyDataModel","errorTitle","errorMessage","messageObj","noError","title","Message","messageTitle","messageBody","resetformly","configs","_blank","_editBlankControl","_editBlankControl2","_IpAdress","_editIpAdress","_editIpAdress2","_date","_editDate","_editDate2","_checkbox","_editCheckBox","_editCheckBox2","_email","_editEmail","_editEmail2","_basicSelect","_editBasicSelect","_editBasicSelect2","_groupedSelect","_editGroupedSelect","_editGroupedSelect2","_header","_editHeaderControl","_editHeaderControl2","_password","_editPassword","_editPassword2","_stepwayRadio","_stepwayEditRadio","_stepwayEditRadio2","_stepwayEditRadio3","_stepwayRichTextEditor","_stepwayEditRichTextEditor","_stepwayEditRichTextEditor2","_stepwayEditRichTextEditor3","_stepwaySubTitle","_stepwayEditSubTitle","_stepwayEditSubTitle2","_stepwayEditSubTitle3","_stepwayTextArea","_stepwayEditTextArea","_stepwayEditTextArea2","_stepwayEditTextArea3","_stepwayTextInput","_stepwayEditTextInput","_stepwayEditTextInput2","_stepwayEditTextInput3","IpAdressConfig","DateConfig","CheckBoxConfig","EmailConfig","BasicSelectConfig","BlankConfig","GroupedSelectConfig","HeaderConfig","PasswordConfig","RadioConfig","RichTextEditorConfig","SubTitleConfig","TextAreaConfig","TextInputConfig","component","moduleName","subtitle","group","formlyLabel","formlyRequired","formlyDescription","formlyOptions","_class","_temp","EDIT_BLANK_CONTROL_COMPONENT","editBlankControlComponent","bindings","editBlankControlController","editBlankModuleName","ipAddressShape","test","defaultReturnMsg","returnMsg","EDIT_IP_ADRESS_COMPONENT","editIpAdressControlComponent","nyaSelect","editIpAdressControlController","editIpAdressModuleName","datepickerOptions","format","EDIT_DATE_COMPONENT","editDateControlComponent","demodt","dateOptions","open","editDateControlController","editDateControlModuleName","EDIT_CHECKBOX_COMPONENT","editCheckBoxControlComponent","editCheckBoxControlController","editCheckBoxModuleName","emailShape","EDIT_EMAIL_COMPONENT","editEmailControlComponent","editEmailControlController","editEmailControlModuleName","EDIT_BASIC_SELECT_COMPONENT","editBasicSelectControlComponent","basicSelectRowCollection","newOptionBasicSelect","addNewOptionBasicSelect","upThisRow","downThisRow","removeRow","editBasicSelectController","editBasicSelectModuleName","EDIT_GROUPED_SELECT_COMPONENT","editGroupedSelectControlComponent","groupedSelectRowCollection","newOptionGroupedSelect","newGroupGroupedSelect","groupSelectGroupClick","groupedSelectGroups","addNewOptionGroupedSelect","addNewGroupToGroupedSelect","upThisGroupedSelectRow","downThisGroupedSelectRow","showGroupListToChoose","removeGroupedSelectRow","editGroupedSelectControlController","editGroupedSelectModuleName","EDIT_HEADER_CONTROL_COMPONENT","editHeaderControlComponent","editHeaderControlController","editHeaderControlModuleName","EDIT_PASSWORD_CONTROL_COMPONENT","editPasswordControlComponent","editPasswordControlController","editeditPasswordModuleName","editRadioControlComponent","EDIT_RADIO_CONTROL_COMPONENT","_stepwayEditRadioTemplate","_stepwayEditRadioTemplate2","radioRowCollection","newOptionRadio","addNewOptionRadio","upThisRadioRow","downThisRadioRow","removeRadioRow","editRadioControlController","editRadioControlModuleName","editRichTextEditorControlComponent","EDIT_RICH_TEXT_EDITOR_COMPONENT","_stepwayEditRichTextEditorTemplate","_stepwayEditRichTextEditorTemplate2","editRichTextEditorControlController","editRichTextEditorModuleName","editSubTitleControlComponent","EDIT_SUBTITLE_CONTROL_COMPONENT","_stepwayEditSubTitleTemplate","_stepwayEditSubTitleTemplate2","editSubTitleControlController","editSubTitleModuleName","editTextareaControlComponent","EDIT_TEXTAREA_CONTROL_COMPONENT","_stepwayEditTextAreaTemplate","_stepwayEditTextAreaTemplate2","editTextareaControlController","edittextareaControlModuleName","formlyDefaultValue","editTextInputControlComponent","EDIT_TEXTINPUT_CONTROL_COMPONENT","_stepwayEditTextInputTemplate","_stepwayEditTextInputTemplate2","editTextInputControlController","editTextInputControlModuleName","activeLine","listConfigStep","stepIndicators","configStepCounter","submitButtonText","cancelButtonText","cancelButtonTex","isTemplateOptionDefined","extractTemplateOptionLabel","extractTemplateOptionDatepickerOptions","extractTemplateOptionRequired","extractTemplateOptionOptions","extractTemplateOptionType","extractTemplateOptionPlaceholder","placeholder","extractTemplateOptionDescription","extractDefaultValue","extractFormlyExpressionProperties","extractFormlyValidators","extractFormlyValidation","addDatepickerOptionsProperty","fieldToPush","Date","now","control0","headerTemplateCol0","controlCol0","control1","headerTemplateCol1","controlCol1","FieldGroup","control2","headerTemplateCol2","controlCol2","camelize","match","chr","richTextTemplate","blankTemplate","headerTemplate","subTitleTemplate","basicSelectTemplate","groupedSelectTemplate","binding","datepickerTemplate","initDate","showWeeks","datepicker","currentModelVal","opened","$event","preventDefault","stopPropagation","validationTemplate","stepway","dragdropway"],"mappings":"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","file":"eda.easyFormViewer.min.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t__webpack_require__(1);\n\t\n\t__webpack_require__(6);\n\t\n\t__webpack_require__(59);\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t__webpack_require__(2);\n\t\n\t__webpack_require__(3);\n\t\n\t__webpack_require__(5);\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t//! api-check version 7.5.5 built with ♥ by Kent C. Dodds (http://kent.doddsfamily.us) (ó ì_í)=óò=(ì_í ò)\n\t\n\t(function webpackUniversalModuleDefinition(root, factory) {\n\t\tif(true)\n\t\t\tmodule.exports = factory();\n\t\telse if(typeof define === 'function' && define.amd)\n\t\t\tdefine(factory);\n\t\telse if(typeof exports === 'object')\n\t\t\texports[\"apiCheck\"] = factory();\n\t\telse\n\t\t\troot[\"apiCheck\"] = factory();\n\t})(this, function() {\n\treturn /******/ (function(modules) { // webpackBootstrap\n\t/******/ \t// The module cache\n\t/******/ \tvar installedModules = {};\n\t\n\t/******/ \t// The require function\n\t/******/ \tfunction __webpack_require__(moduleId) {\n\t\n\t/******/ \t\t// Check if module is in cache\n\t/******/ \t\tif(installedModules[moduleId])\n\t/******/ \t\t\treturn installedModules[moduleId].exports;\n\t\n\t/******/ \t\t// Create a new module (and put it into the cache)\n\t/******/ \t\tvar module = installedModules[moduleId] = {\n\t/******/ \t\t\texports: {},\n\t/******/ \t\t\tid: moduleId,\n\t/******/ \t\t\tloaded: false\n\t/******/ \t\t};\n\t\n\t/******/ \t\t// Execute the module function\n\t/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\n\t/******/ \t\t// Flag the module as loaded\n\t/******/ \t\tmodule.loaded = true;\n\t\n\t/******/ \t\t// Return the exports of the module\n\t/******/ \t\treturn module.exports;\n\t/******/ \t}\n\t\n\t\n\t/******/ \t// expose the modules object (__webpack_modules__)\n\t/******/ \t__webpack_require__.m = modules;\n\t\n\t/******/ \t// expose the module cache\n\t/******/ \t__webpack_require__.c = installedModules;\n\t\n\t/******/ \t// __webpack_public_path__\n\t/******/ \t__webpack_require__.p = \"\";\n\t\n\t/******/ \t// Load entry module and return exports\n\t/******/ \treturn __webpack_require__(0);\n\t/******/ })\n\t/************************************************************************/\n\t/******/ ([\n\t/* 0 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\t\tvar _apiCheck = __webpack_require__(1);\n\t\n\t\tvar _apiCheck2 = _interopRequireDefault(_apiCheck);\n\t\n\t\texports['default'] = _apiCheck2['default'];\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 1 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tvar stringify = __webpack_require__(2);\n\t\tvar apiCheckUtil = __webpack_require__(3);\n\t\tvar each = apiCheckUtil.each;\n\t\tvar isError = apiCheckUtil.isError;\n\t\tvar t = apiCheckUtil.t;\n\t\tvar arrayify = apiCheckUtil.arrayify;\n\t\tvar getCheckerDisplay = apiCheckUtil.getCheckerDisplay;\n\t\tvar typeOf = apiCheckUtil.typeOf;\n\t\tvar getError = apiCheckUtil.getError;\n\t\n\t\tvar checkers = __webpack_require__(4);\n\t\tvar apiCheckApis = getApiCheckApis();\n\t\n\t\tmodule.exports = getApiCheckInstance;\n\t\tmodule.exports.VERSION = (\"7.5.5\");\n\t\tmodule.exports.utils = apiCheckUtil;\n\t\tmodule.exports.globalConfig = {\n\t\t verbose: false,\n\t\t disabled: false\n\t\t};\n\t\n\t\tvar apiCheckApiCheck = getApiCheckInstance({\n\t\t output: { prefix: 'apiCheck' }\n\t\t});\n\t\tmodule.exports.internalChecker = apiCheckApiCheck;\n\t\n\t\teach(checkers, function (checker, name) {\n\t\t return module.exports[name] = checker;\n\t\t});\n\t\n\t\tfunction getApiCheckInstance() {\n\t\t var config = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t\t var extraCheckers = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\t\n\t\t /* eslint complexity:[2, 6] */\n\t\t if (apiCheckApiCheck && arguments.length) {\n\t\t apiCheckApiCheck['throw'](apiCheckApis.getApiCheckInstanceCheckers, arguments, {\n\t\t prefix: 'creating an apiCheck instance'\n\t\t });\n\t\t }\n\t\n\t\t var additionalProperties = {\n\t\t 'throw': getApiCheck(true),\n\t\t warn: getApiCheck(false),\n\t\t getErrorMessage: getErrorMessage,\n\t\t handleErrorMessage: handleErrorMessage,\n\t\t config: {\n\t\t output: config.output || {\n\t\t prefix: '',\n\t\t suffix: '',\n\t\t docsBaseUrl: ''\n\t\t },\n\t\t verbose: config.verbose || false,\n\t\t disabled: config.disabled || false\n\t\t },\n\t\t utils: apiCheckUtil\n\t\t };\n\t\n\t\t each(additionalProperties, function (wrapper, name) {\n\t\t return apiCheck[name] = wrapper;\n\t\t });\n\t\n\t\t var disabled = apiCheck.disabled || module.exports.globalConfig.disabled;\n\t\t each(checkers.getCheckers(disabled), function (checker, name) {\n\t\t return apiCheck[name] = checker;\n\t\t });\n\t\t each(extraCheckers, function (checker, name) {\n\t\t return apiCheck[name] = checker;\n\t\t });\n\t\n\t\t return apiCheck;\n\t\n\t\t /**\n\t\t * This is the instance function. Other things are attached to this see additional properties above.\n\t\t * @param {Array} api - the checkers to check with\n\t\t * @param {Array} args - the args to check\n\t\t * @param {Object} output - output options\n\t\t * @returns {Object} - if this has a failed = true property, then it failed\n\t\t */\n\t\t function apiCheck(api, args, output) {\n\t\t /* eslint complexity:[2, 8] */\n\t\t if (apiCheck.config.disabled || module.exports.globalConfig.disabled) {\n\t\t return {\n\t\t apiTypes: {}, argTypes: {},\n\t\t passed: true, message: '',\n\t\t failed: false\n\t\t }; // empty version of what is normally returned\n\t\t }\n\t\t checkApiCheckApi(arguments);\n\t\t if (!Array.isArray(api)) {\n\t\t api = [api];\n\t\t args = [args];\n\t\t } else {\n\t\t // turn arguments into an array\n\t\t args = Array.prototype.slice.call(args);\n\t\t }\n\t\t var messages = checkEnoughArgs(api, args);\n\t\t if (!messages.length) {\n\t\t // this is where we actually go perform the checks.\n\t\t messages = checkApiWithArgs(api, args);\n\t\t }\n\t\n\t\t var returnObject = getTypes(api, args);\n\t\t returnObject.args = args;\n\t\t if (messages.length) {\n\t\t returnObject.message = apiCheck.getErrorMessage(api, args, messages, output);\n\t\t returnObject.failed = true;\n\t\t returnObject.passed = false;\n\t\t } else {\n\t\t returnObject.message = '';\n\t\t returnObject.failed = false;\n\t\t returnObject.passed = true;\n\t\t }\n\t\t return returnObject;\n\t\t }\n\t\n\t\t /**\n\t\t * checkApiCheckApi, should be read like: check apiCheck api. As in, check the api for apiCheck :-)\n\t\t * @param {Array} checkApiArgs - args provided to apiCheck function\n\t\t */\n\t\t function checkApiCheckApi(checkApiArgs) {\n\t\t var api = checkApiArgs[0];\n\t\t var args = checkApiArgs[1];\n\t\t var isArrayOrArgs = Array.isArray(args) || args && typeof args === 'object' && typeof args.length === 'number';\n\t\n\t\t if (Array.isArray(api) && !isArrayOrArgs) {\n\t\t throw new Error(getErrorMessage(api, [args], ['If an array is provided for the api, an array must be provided for the args as well.'], { prefix: 'apiCheck' }));\n\t\t }\n\t\t // dog fooding here\n\t\t var errors = checkApiWithArgs(apiCheckApis.checkApiCheckApi, checkApiArgs);\n\t\t if (errors.length) {\n\t\t var message = apiCheck.getErrorMessage(apiCheckApis.checkApiCheckApi, checkApiArgs, errors, {\n\t\t prefix: 'apiCheck'\n\t\t });\n\t\t apiCheck.handleErrorMessage(message, true);\n\t\t }\n\t\t }\n\t\n\t\t function getApiCheck(shouldThrow) {\n\t\t return function apiCheckWrapper(api, args, output) {\n\t\t var result = apiCheck(api, args, output);\n\t\t apiCheck.handleErrorMessage(result.message, shouldThrow);\n\t\t return result; // wont get here if an error is thrown\n\t\t };\n\t\t }\n\t\n\t\t function handleErrorMessage(message, shouldThrow) {\n\t\t if (shouldThrow && message) {\n\t\t throw new Error(message);\n\t\t } else if (message) {\n\t\t /* eslint no-console:0 */\n\t\t console.warn(message);\n\t\t }\n\t\t }\n\t\n\t\t function getErrorMessage(api, args) {\n\t\t var messages = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];\n\t\t var output = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];\n\t\n\t\t var gOut = apiCheck.config.output || {};\n\t\t var prefix = getPrefix();\n\t\t var suffix = getSuffix();\n\t\t var url = getUrl();\n\t\t var message = 'apiCheck failed! ' + messages.join(', ');\n\t\t var passedAndShouldHavePassed = '\\n\\n' + buildMessageFromApiAndArgs(api, args);\n\t\t return (prefix + ' ' + message + ' ' + suffix + ' ' + (url || '') + passedAndShouldHavePassed).trim();\n\t\n\t\t function getPrefix() {\n\t\t var p = output.onlyPrefix;\n\t\t if (!p) {\n\t\t p = ((gOut.prefix || '') + ' ' + (output.prefix || '')).trim();\n\t\t }\n\t\t return p;\n\t\t }\n\t\n\t\t function getSuffix() {\n\t\t var s = output.onlySuffix;\n\t\t if (!s) {\n\t\t s = ((output.suffix || '') + ' ' + (gOut.suffix || '')).trim();\n\t\t }\n\t\t return s;\n\t\t }\n\t\n\t\t function getUrl() {\n\t\t var u = output.url;\n\t\t if (!u) {\n\t\t u = gOut.docsBaseUrl && output.urlSuffix && ('' + gOut.docsBaseUrl + output.urlSuffix).trim();\n\t\t }\n\t\t return u;\n\t\t }\n\t\t }\n\t\n\t\t function buildMessageFromApiAndArgs(api, args) {\n\t\t var _getTypes = getTypes(api, args);\n\t\n\t\t var apiTypes = _getTypes.apiTypes;\n\t\t var argTypes = _getTypes.argTypes;\n\t\n\t\t var copy = Array.prototype.slice.call(args || []);\n\t\t var replacedItems = [];\n\t\t replaceFunctionWithName(copy);\n\t\t var passedArgs = getObjectString(copy);\n\t\t argTypes = getObjectString(argTypes);\n\t\t apiTypes = getObjectString(apiTypes);\n\t\n\t\t return generateMessage();\n\t\n\t\t // functions\n\t\n\t\t function replaceFunctionWithName(obj) {\n\t\t each(obj, function (val, name) {\n\t\t /* eslint complexity:[2, 6] */\n\t\t if (replacedItems.indexOf(val) === -1) {\n\t\t // avoid recursive problems\n\t\t replacedItems.push(val);\n\t\t if (typeof val === 'object') {\n\t\t replaceFunctionWithName(obj);\n\t\t } else if (typeof val === 'function') {\n\t\t obj[name] = val.displayName || val.name || 'anonymous function';\n\t\t }\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function getObjectString(types) {\n\t\t if (!types || !types.length) {\n\t\t return 'nothing';\n\t\t } else if (types && types.length === 1) {\n\t\t types = types[0];\n\t\t }\n\t\t return stringify(types, null, 2);\n\t\t }\n\t\n\t\t function generateMessage() {\n\t\t var n = '\\n';\n\t\t var useS = true;\n\t\t if (args && args.length === 1) {\n\t\t if (typeof args[0] === 'object' && args[0] !== null) {\n\t\t useS = !!Object.keys(args[0]).length;\n\t\t } else {\n\t\t useS = false;\n\t\t }\n\t\t }\n\t\t var types = 'type' + (useS ? 's' : '');\n\t\t var newLine = n + n;\n\t\t return 'You passed:' + n + passedArgs + newLine + ('With the ' + types + ':' + n + argTypes + newLine) + ('The API calls for:' + n + apiTypes);\n\t\t }\n\t\t }\n\t\n\t\t function getTypes(api, args) {\n\t\t api = arrayify(api);\n\t\t args = arrayify(args);\n\t\t var apiTypes = api.map(function (checker, index) {\n\t\t var specified = module.exports.globalConfig.hasOwnProperty('verbose');\n\t\t return getCheckerDisplay(checker, {\n\t\t terse: specified ? !module.exports.globalConfig.verbose : !apiCheck.config.verbose,\n\t\t obj: args[index],\n\t\t addHelpers: true\n\t\t });\n\t\t });\n\t\t var argTypes = args.map(function (arg) {\n\t\t return getArgDisplay(arg, []);\n\t\t });\n\t\t return { argTypes: argTypes, apiTypes: apiTypes };\n\t\t }\n\t\t}\n\t\n\t\t// STATELESS FUNCTIONS\n\t\n\t\t/**\n\t\t * This is where the magic happens for actually checking the arguments with the api.\n\t\t * @param {Array} api - checkers\n\t\t * @param {Array} args - and arguments object\n\t\t * @returns {Array} - the error messages\n\t\t */\n\t\tfunction checkApiWithArgs(api, args) {\n\t\t /* eslint complexity:[2, 7] */\n\t\t var messages = [];\n\t\t var failed = false;\n\t\t var checkerIndex = 0;\n\t\t var argIndex = 0;\n\t\t var arg = undefined,\n\t\t checker = undefined,\n\t\t res = undefined,\n\t\t lastChecker = undefined,\n\t\t argName = undefined,\n\t\t argFailed = undefined,\n\t\t skipPreviousChecker = undefined;\n\t\t /* jshint -W084 */\n\t\t while ((checker = api[checkerIndex++]) && argIndex < args.length) {\n\t\t arg = args[argIndex++];\n\t\t argName = 'Argument ' + argIndex + (checker.isOptional ? ' (optional)' : '');\n\t\t res = checker(arg, 'value', argName);\n\t\t argFailed = isError(res);\n\t\t lastChecker = checkerIndex >= api.length;\n\t\t skipPreviousChecker = checkerIndex > 1 && api[checkerIndex - 1].isOptional;\n\t\t if (argFailed && lastChecker || argFailed && !lastChecker && !checker.isOptional && !skipPreviousChecker) {\n\t\t failed = true;\n\t\t messages.push(getCheckerErrorMessage(res, checker, arg));\n\t\t } else if (argFailed && checker.isOptional) {\n\t\t argIndex--;\n\t\t } else {\n\t\t messages.push(t(argName) + ' passed');\n\t\t }\n\t\t }\n\t\t return failed ? messages : [];\n\t\t}\n\t\n\t\tcheckerTypeType.type = 'function with __apiCheckData property and `${function.type}` property';\n\t\tfunction checkerTypeType(checkerType, name, location) {\n\t\t var apiCheckDataChecker = checkers.shape({\n\t\t type: checkers.string,\n\t\t optional: checkers.bool\n\t\t });\n\t\t var asFunc = checkers.func.withProperties({ __apiCheckData: apiCheckDataChecker });\n\t\t var asShape = checkers.shape({ __apiCheckData: apiCheckDataChecker });\n\t\t var wrongShape = checkers.oneOfType([asFunc, asShape])(checkerType, name, location);\n\t\t if (isError(wrongShape)) {\n\t\t return wrongShape;\n\t\t }\n\t\t if (typeof checkerType !== 'function' && !checkerType.hasOwnProperty(checkerType.__apiCheckData.type)) {\n\t\t return getError(name, location, checkerTypeType.type);\n\t\t }\n\t\t}\n\t\n\t\tfunction getCheckerErrorMessage(res, checker, val) {\n\t\t var checkerHelp = getCheckerHelp(checker, val);\n\t\t checkerHelp = checkerHelp ? ' - ' + checkerHelp : '';\n\t\t return res.message + checkerHelp;\n\t\t}\n\t\n\t\tfunction getCheckerHelp(_ref, val) {\n\t\t var help = _ref.help;\n\t\n\t\t if (!help) {\n\t\t return '';\n\t\t }\n\t\t if (typeof help === 'function') {\n\t\t help = help(val);\n\t\t }\n\t\t return help;\n\t\t}\n\t\n\t\tfunction checkEnoughArgs(api, args) {\n\t\t var requiredArgs = api.filter(function (a) {\n\t\t return !a.isOptional;\n\t\t });\n\t\t if (args.length < requiredArgs.length) {\n\t\t return ['Not enough arguments specified. Requires `' + requiredArgs.length + '`, you passed `' + args.length + '`'];\n\t\t } else {\n\t\t return [];\n\t\t }\n\t\t}\n\t\n\t\tfunction getArgDisplay(arg, gottenArgs) {\n\t\t /* eslint complexity:[2, 7] */\n\t\t var cName = arg && arg.constructor && arg.constructor.name;\n\t\t var type = typeOf(arg);\n\t\t if (type === 'function') {\n\t\t if (hasKeys()) {\n\t\t var properties = stringify(getDisplayIfNotGotten());\n\t\t return cName + ' (with properties: ' + properties + ')';\n\t\t }\n\t\t return cName;\n\t\t }\n\t\n\t\t if (arg === null) {\n\t\t return 'null';\n\t\t }\n\t\n\t\t if (type !== 'array' && type !== 'object') {\n\t\t return type;\n\t\t }\n\t\n\t\t if (hasKeys()) {\n\t\t return getDisplayIfNotGotten();\n\t\t }\n\t\n\t\t return cName;\n\t\n\t\t // utility functions\n\t\t function hasKeys() {\n\t\t return arg && Object.keys(arg).length;\n\t\t }\n\t\n\t\t function getDisplayIfNotGotten() {\n\t\t if (gottenArgs.indexOf(arg) !== -1) {\n\t\t return '[Circular]';\n\t\t }\n\t\t gottenArgs.push(arg);\n\t\t return getDisplay(arg, gottenArgs);\n\t\t }\n\t\t}\n\t\n\t\tfunction getDisplay(obj, gottenArgs) {\n\t\t var argDisplay = {};\n\t\t each(obj, function (v, k) {\n\t\t return argDisplay[k] = getArgDisplay(v, gottenArgs);\n\t\t });\n\t\t return argDisplay;\n\t\t}\n\t\n\t\tfunction getApiCheckApis() {\n\t\t var os = checkers.string.optional;\n\t\n\t\t var checkerFnChecker = checkers.func.withProperties({\n\t\t type: checkers.oneOfType([checkers.string, checkerTypeType]).optional,\n\t\t displayName: checkers.string.optional,\n\t\t shortType: checkers.string.optional,\n\t\t notOptional: checkers.bool.optional,\n\t\t notRequired: checkers.bool.optional\n\t\t });\n\t\n\t\t var getApiCheckInstanceCheckers = [checkers.shape({\n\t\t output: checkers.shape({\n\t\t prefix: checkers.string.optional,\n\t\t suffix: checkers.string.optional,\n\t\t docsBaseUrl: checkers.string.optional\n\t\t }).strict.optional,\n\t\t verbose: checkers.bool.optional,\n\t\t disabled: checkers.bool.optional\n\t\t }).strict.optional, checkers.objectOf(checkerFnChecker).optional];\n\t\n\t\t var checkApiCheckApi = [checkers.typeOrArrayOf(checkerFnChecker), checkers.any.optional, checkers.shape({\n\t\t prefix: os, suffix: os, urlSuffix: os, // appended case\n\t\t onlyPrefix: os, onlySuffix: os, url: os // override case\n\t\t }).strict.optional];\n\t\n\t\t return {\n\t\t checkerFnChecker: checkerFnChecker,\n\t\t getApiCheckInstanceCheckers: getApiCheckInstanceCheckers,\n\t\t checkApiCheckApi: checkApiCheckApi\n\t\t };\n\t\t}\n\t\n\t/***/ },\n\t/* 2 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = stringify;\n\t\n\t\tfunction getSerialize (fn, decycle) {\n\t\t var seen = [], keys = [];\n\t\t decycle = decycle || function(key, value) {\n\t\t return '[Circular ' + getPath(value, seen, keys) + ']'\n\t\t };\n\t\t return function(key, value) {\n\t\t var ret = value;\n\t\t if (typeof value === 'object' && value) {\n\t\t if (seen.indexOf(value) !== -1)\n\t\t ret = decycle(key, value);\n\t\t else {\n\t\t seen.push(value);\n\t\t keys.push(key);\n\t\t }\n\t\t }\n\t\t if (fn) ret = fn(key, ret);\n\t\t return ret;\n\t\t }\n\t\t}\n\t\n\t\tfunction getPath (value, seen, keys) {\n\t\t var index = seen.indexOf(value);\n\t\t var path = [ keys[index] ];\n\t\t for (index--; index >= 0; index--) {\n\t\t if (seen[index][ path[0] ] === value) {\n\t\t value = seen[index];\n\t\t path.unshift(keys[index]);\n\t\t }\n\t\t }\n\t\t return '~' + path.join('.');\n\t\t}\n\t\n\t\tfunction stringify(obj, fn, spaces, decycle) {\n\t\t return JSON.stringify(obj, getSerialize(fn, decycle), spaces);\n\t\t}\n\t\n\t\tstringify.getSerialize = getSerialize;\n\t\n\t\n\t/***/ },\n\t/* 3 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\t\tvar stringify = __webpack_require__(2);\n\t\tvar checkerHelpers = {\n\t\t addOptional: addOptional, getRequiredVersion: getRequiredVersion, setupChecker: setupChecker, addNullable: addNullable\n\t\t};\n\t\n\t\tmodule.exports = {\n\t\t each: each, copy: copy, typeOf: typeOf, arrayify: arrayify, getCheckerDisplay: getCheckerDisplay,\n\t\t isError: isError, list: list, getError: getError, nAtL: nAtL, t: t, undef: undef, checkerHelpers: checkerHelpers,\n\t\t noop: noop\n\t\t};\n\t\n\t\tfunction copy(obj) {\n\t\t var type = typeOf(obj);\n\t\t var daCopy = undefined;\n\t\t if (type === 'array') {\n\t\t daCopy = [];\n\t\t } else if (type === 'object') {\n\t\t daCopy = {};\n\t\t } else {\n\t\t return obj;\n\t\t }\n\t\t each(obj, function (val, key) {\n\t\t daCopy[key] = val; // cannot single-line this because we don't want to abort the each\n\t\t });\n\t\t return daCopy;\n\t\t}\n\t\n\t\tfunction typeOf(obj) {\n\t\t if (Array.isArray(obj)) {\n\t\t return 'array';\n\t\t } else if (obj instanceof RegExp) {\n\t\t return 'object';\n\t\t } else {\n\t\t return typeof obj;\n\t\t }\n\t\t}\n\t\n\t\tfunction getCheckerDisplay(checker, options) {\n\t\t /* eslint complexity:[2, 7] */\n\t\t var display = undefined;\n\t\t var short = options && options.short;\n\t\t if (short && checker.shortType) {\n\t\t display = checker.shortType;\n\t\t } else if (!short && typeof checker.type === 'object' || checker.type === 'function') {\n\t\t display = getCheckerType(checker, options);\n\t\t } else {\n\t\t display = getCheckerType(checker, options) || checker.displayName || checker.name;\n\t\t }\n\t\t return display;\n\t\t}\n\t\n\t\tfunction getCheckerType(_ref, options) {\n\t\t var type = _ref.type;\n\t\n\t\t if (typeof type === 'function') {\n\t\t var __apiCheckData = type.__apiCheckData;\n\t\t var typeTypes = type(options);\n\t\t type = _defineProperty({\n\t\t __apiCheckData: __apiCheckData\n\t\t }, __apiCheckData.type, typeTypes);\n\t\t }\n\t\t return type;\n\t\t}\n\t\n\t\tfunction arrayify(obj) {\n\t\t if (!obj) {\n\t\t return [];\n\t\t } else if (Array.isArray(obj)) {\n\t\t return obj;\n\t\t } else {\n\t\t return [obj];\n\t\t }\n\t\t}\n\t\n\t\tfunction each(obj, iterator, context) {\n\t\t if (Array.isArray(obj)) {\n\t\t return eachArry(obj, iterator, context);\n\t\t } else {\n\t\t return eachObj(obj, iterator, context);\n\t\t }\n\t\t}\n\t\n\t\tfunction eachObj(obj, iterator, context) {\n\t\t var ret = undefined;\n\t\t var hasOwn = Object.prototype.hasOwnProperty;\n\t\t /* eslint prefer-const:0 */ // some weird eslint bug?\n\t\t for (var key in obj) {\n\t\t if (hasOwn.call(obj, key)) {\n\t\t ret = iterator.call(context, obj[key], key, obj);\n\t\t if (ret === false) {\n\t\t return ret;\n\t\t }\n\t\t }\n\t\t }\n\t\t return true;\n\t\t}\n\t\n\t\tfunction eachArry(obj, iterator, context) {\n\t\t var ret = undefined;\n\t\t var length = obj.length;\n\t\t for (var i = 0; i < length; i++) {\n\t\t ret = iterator.call(context, obj[i], i, obj);\n\t\t if (ret === false) {\n\t\t return ret;\n\t\t }\n\t\t }\n\t\t return true;\n\t\t}\n\t\n\t\tfunction isError(obj) {\n\t\t return obj instanceof Error;\n\t\t}\n\t\n\t\tfunction list(arry, join, finalJoin) {\n\t\t arry = arrayify(arry);\n\t\t var copy = arry.slice();\n\t\t var last = copy.pop();\n\t\t if (copy.length === 1) {\n\t\t join = ' ';\n\t\t }\n\t\t return copy.join(join) + ('' + (copy.length ? join + finalJoin : '') + last);\n\t\t}\n\t\n\t\tfunction getError(name, location, checkerType) {\n\t\t if (typeof checkerType === 'function') {\n\t\t checkerType = checkerType({ short: true });\n\t\t }\n\t\t var stringType = typeof checkerType !== 'object' ? checkerType : stringify(checkerType);\n\t\t return new Error(nAtL(name, location) + ' must be ' + t(stringType));\n\t\t}\n\t\n\t\tfunction nAtL(name, location) {\n\t\t var tName = t(name || 'value');\n\t\t var tLocation = !location ? '' : ' at ' + t(location);\n\t\t return '' + tName + tLocation;\n\t\t}\n\t\n\t\tfunction t(thing) {\n\t\t return '`' + thing + '`';\n\t\t}\n\t\n\t\tfunction undef(thing) {\n\t\t return typeof thing === 'undefined';\n\t\t}\n\t\n\t\t/**\n\t\t * This will set up the checker with all of the defaults that most checkers want like required by default and an\n\t\t * optional version\n\t\t *\n\t\t * @param {Function} checker - the checker to setup with properties\n\t\t * @param {Object} properties - properties to add to the checker\n\t\t * @param {boolean} disabled - when set to true, this will set the checker to a no-op function\n\t\t * @returns {Function} checker - the setup checker\n\t\t */\n\t\tfunction setupChecker(checker, properties, disabled) {\n\t\t /* eslint complexity:[2, 9] */\n\t\t if (disabled) {\n\t\t // swap out the checker for its own copy of noop\n\t\t checker = getNoop();\n\t\t checker.isNoop = true;\n\t\t }\n\t\n\t\t if (typeof checker.type === 'string') {\n\t\t checker.shortType = checker.type;\n\t\t }\n\t\n\t\t // assign all properties given\n\t\t each(properties, function (prop, name) {\n\t\t return checker[name] = prop;\n\t\t });\n\t\n\t\t if (!checker.displayName) {\n\t\t checker.displayName = 'apiCheck ' + t(checker.shortType || checker.type || checker.name) + ' type checker';\n\t\t }\n\t\n\t\t if (!checker.notRequired) {\n\t\t checker = getRequiredVersion(checker, disabled);\n\t\t }\n\t\n\t\t if (!checker.notNullable) {\n\t\t addNullable(checker, disabled);\n\t\t }\n\t\n\t\t if (!checker.notOptional) {\n\t\t addOptional(checker, disabled);\n\t\t }\n\t\n\t\t return checker;\n\t\t}\n\t\n\t\tfunction getRequiredVersion(checker, disabled) {\n\t\t var requiredChecker = disabled ? getNoop() : function requiredChecker(val, name, location, obj) {\n\t\t if (undef(val) && !checker.isOptional) {\n\t\t var tLocation = location ? ' in ' + t(location) : '';\n\t\t var type = getCheckerDisplay(checker, { short: true });\n\t\t var stringType = typeof type !== 'object' ? type : stringify(type);\n\t\t return new Error('Required ' + t(name) + ' not specified' + tLocation + '. Must be ' + t(stringType));\n\t\t } else {\n\t\t return checker(val, name, location, obj);\n\t\t }\n\t\t };\n\t\t copyProps(checker, requiredChecker);\n\t\t requiredChecker.originalChecker = checker;\n\t\t return requiredChecker;\n\t\t}\n\t\n\t\tfunction addOptional(checker, disabled) {\n\t\t var optionalCheck = disabled ? getNoop() : function optionalCheck(val, name, location, obj) {\n\t\t if (!undef(val)) {\n\t\t return checker(val, name, location, obj);\n\t\t }\n\t\t };\n\t\t // inherit all properties on the original checker\n\t\t copyProps(checker, optionalCheck);\n\t\n\t\t optionalCheck.isOptional = true;\n\t\t optionalCheck.displayName = checker.displayName + ' (optional)';\n\t\t optionalCheck.originalChecker = checker;\n\t\n\t\t // the magic line that allows you to add .optional to the end of the checkers\n\t\t checker.optional = optionalCheck;\n\t\n\t\t fixType(checker, checker.optional);\n\t\t}\n\t\n\t\tfunction addNullable(checker, disabled) {\n\t\t var nullableCheck = disabled ? getNoop() : function nullableCheck(val, name, location, obj) {\n\t\t if (val !== null) {\n\t\t return checker(val, name, location, obj);\n\t\t }\n\t\t };\n\t\t // inherit all properties on the original checker\n\t\t copyProps(checker, nullableCheck);\n\t\n\t\t nullableCheck.isNullable = true;\n\t\t nullableCheck.displayName = checker.displayName + ' (nullable)';\n\t\t nullableCheck.originalChecker = checker;\n\t\n\t\t // the magic line that allows you to add .nullable to the end of the checkers\n\t\t checker.nullable = nullableCheck;\n\t\n\t\t fixType(checker, checker.nullable);\n\t\t if (!checker.notOptional) {\n\t\t addOptional(checker.nullable, disabled);\n\t\t }\n\t\t}\n\t\n\t\tfunction fixType(checker, checkerCopy) {\n\t\t // fix type, because it's not a straight copy...\n\t\t // the reason is we need to specify type.__apiCheckData.optional as true for the terse/verbose option.\n\t\t // we also want to add \"(optional)\" to the types with a string\n\t\t if (typeof checkerCopy.type === 'object') {\n\t\t checkerCopy.type = copy(checkerCopy.type); // make our own copy of this\n\t\t } else if (typeof checkerCopy.type === 'function') {\n\t\t checkerCopy.type = function () {\n\t\t return checker.type.apply(checker, arguments);\n\t\t };\n\t\t } else {\n\t\t checkerCopy.type += ' (optional)';\n\t\t return;\n\t\t }\n\t\t checkerCopy.type.__apiCheckData = copy(checker.type.__apiCheckData) || {}; // and this\n\t\t checkerCopy.type.__apiCheckData.optional = true;\n\t\t}\n\t\n\t\t// UTILS\n\t\n\t\tfunction copyProps(src, dest) {\n\t\t each(Object.keys(src), function (key) {\n\t\t return dest[key] = src[key];\n\t\t });\n\t\t}\n\t\n\t\tfunction noop() {}\n\t\n\t\tfunction getNoop() {\n\t\t /* eslint no-shadow:0 */\n\t\t /* istanbul ignore next */\n\t\t return function noop() {};\n\t\t}\n\t\n\t/***/ },\n\t/* 4 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tvar stringify = __webpack_require__(2);\n\t\n\t\tvar _require = __webpack_require__(3);\n\t\n\t\tvar typeOf = _require.typeOf;\n\t\tvar each = _require.each;\n\t\tvar copy = _require.copy;\n\t\tvar getCheckerDisplay = _require.getCheckerDisplay;\n\t\tvar isError = _require.isError;\n\t\tvar arrayify = _require.arrayify;\n\t\tvar list = _require.list;\n\t\tvar getError = _require.getError;\n\t\tvar nAtL = _require.nAtL;\n\t\tvar t = _require.t;\n\t\tvar checkerHelpers = _require.checkerHelpers;\n\t\tvar undef = _require.undef;\n\t\tvar setupChecker = checkerHelpers.setupChecker;\n\t\n\t\tvar checkers = module.exports = getCheckers();\n\t\tmodule.exports.getCheckers = getCheckers;\n\t\n\t\tfunction getCheckers(disabled) {\n\t\t return {\n\t\t array: typeOfCheckGetter('Array'),\n\t\t bool: typeOfCheckGetter('Boolean'),\n\t\t number: typeOfCheckGetter('Number'),\n\t\t string: typeOfCheckGetter('String'),\n\t\t func: funcCheckGetter(),\n\t\t object: objectCheckGetter(),\n\t\n\t\t emptyObject: emptyObjectCheckGetter(),\n\t\n\t\t instanceOf: instanceCheckGetter,\n\t\t oneOf: oneOfCheckGetter,\n\t\t oneOfType: oneOfTypeCheckGetter,\n\t\n\t\t arrayOf: arrayOfCheckGetter,\n\t\t objectOf: objectOfCheckGetter,\n\t\t typeOrArrayOf: typeOrArrayOfCheckGetter,\n\t\n\t\t range: rangeCheckGetter,\n\t\t lessThan: lessThanCheckGetter,\n\t\t greaterThan: greaterThanCheckGetter,\n\t\n\t\t shape: getShapeCheckGetter(),\n\t\t args: argumentsCheckerGetter(),\n\t\n\t\t any: anyCheckGetter(),\n\t\t 'null': nullCheckGetter()\n\t\n\t\t };\n\t\n\t\t function typeOfCheckGetter(type) {\n\t\t var lType = type.toLowerCase();\n\t\t return setupChecker(function typeOfCheckerDefinition(val, name, location) {\n\t\t if (typeOf(val) !== lType) {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\t }\n\t\n\t\t function funcCheckGetter() {\n\t\t var type = 'Function';\n\t\t var functionChecker = setupChecker(function functionCheckerDefinition(val, name, location) {\n\t\t if (typeOf(val) !== 'function') {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\n\t\t functionChecker.withProperties = function getWithPropertiesChecker(properties) {\n\t\t var apiError = checkers.objectOf(checkers.func)(properties, 'properties', 'apiCheck.func.withProperties');\n\t\t if (isError(apiError)) {\n\t\t throw apiError;\n\t\t }\n\t\t var shapeChecker = checkers.shape(properties, true);\n\t\t shapeChecker.type.__apiCheckData.type = 'func.withProperties';\n\t\n\t\t return setupChecker(function functionWithPropertiesChecker(val, name, location) {\n\t\t var notFunction = checkers.func(val, name, location);\n\t\t if (isError(notFunction)) {\n\t\t return notFunction;\n\t\t }\n\t\t return shapeChecker(val, name, location);\n\t\t }, { type: shapeChecker.type, shortType: 'func.withProperties' }, disabled);\n\t\t };\n\t\t return functionChecker;\n\t\t }\n\t\n\t\t function objectCheckGetter() {\n\t\t var type = 'Object';\n\t\t var nullType = 'Object (null ok)';\n\t\t var objectNullOkChecker = setupChecker(function objectNullOkCheckerDefinition(val, name, location) {\n\t\t if (typeOf(val) !== 'object') {\n\t\t return getError(name, location, nullType);\n\t\t }\n\t\t }, { type: nullType }, disabled);\n\t\n\t\t var objectChecker = setupChecker(function objectCheckerDefinition(val, name, location) {\n\t\t if (val === null || isError(objectNullOkChecker(val, name, location))) {\n\t\t return getError(name, location, objectChecker.type);\n\t\t }\n\t\t }, { type: type, nullOk: objectNullOkChecker }, disabled);\n\t\n\t\t return objectChecker;\n\t\t }\n\t\n\t\t function instanceCheckGetter(classToCheck) {\n\t\t return setupChecker(function instanceCheckerDefinition(val, name, location) {\n\t\t if (!(val instanceof classToCheck)) {\n\t\t return getError(name, location, classToCheck.name);\n\t\t }\n\t\t }, { type: classToCheck.name }, disabled);\n\t\t }\n\t\n\t\t function oneOfCheckGetter(enums) {\n\t\t var type = {\n\t\t __apiCheckData: { optional: false, type: 'enum' },\n\t\t 'enum': enums\n\t\t };\n\t\t var shortType = 'oneOf[' + enums.map(function (enm) {\n\t\t return stringify(enm);\n\t\t }).join(', ') + ']';\n\t\t return setupChecker(function oneOfCheckerDefinition(val, name, location) {\n\t\t if (!enums.some(function (enm) {\n\t\t return enm === val;\n\t\t })) {\n\t\t return getError(name, location, shortType);\n\t\t }\n\t\t }, { type: type, shortType: shortType }, disabled);\n\t\t }\n\t\n\t\t function oneOfTypeCheckGetter(typeCheckers) {\n\t\t var checkersDisplay = typeCheckers.map(function (checker) {\n\t\t return getCheckerDisplay(checker, { short: true });\n\t\t });\n\t\t var shortType = 'oneOfType[' + checkersDisplay.join(', ') + ']';\n\t\t function type(options) {\n\t\t if (options && options.short) {\n\t\t return shortType;\n\t\t }\n\t\t return typeCheckers.map(function (checker) {\n\t\t return getCheckerDisplay(checker, options);\n\t\t });\n\t\t }\n\t\t type.__apiCheckData = { optional: false, type: 'oneOfType' };\n\t\t return setupChecker(function oneOfTypeCheckerDefinition(val, name, location) {\n\t\t if (!typeCheckers.some(function (checker) {\n\t\t return !isError(checker(val, name, location));\n\t\t })) {\n\t\t return getError(name, location, shortType);\n\t\t }\n\t\t }, { type: type, shortType: shortType }, disabled);\n\t\t }\n\t\n\t\t function arrayOfCheckGetter(checker) {\n\t\t var shortCheckerDisplay = getCheckerDisplay(checker, { short: true });\n\t\t var shortType = 'arrayOf[' + shortCheckerDisplay + ']';\n\t\n\t\t function type(options) {\n\t\t if (options && options.short) {\n\t\t return shortType;\n\t\t }\n\t\t return getCheckerDisplay(checker, options);\n\t\t }\n\t\t type.__apiCheckData = { optional: false, type: 'arrayOf' };\n\t\n\t\t return setupChecker(function arrayOfCheckerDefinition(val, name, location) {\n\t\t if (isError(checkers.array(val)) || !val.every(function (item) {\n\t\t return !isError(checker(item));\n\t\t })) {\n\t\t return getError(name, location, shortType);\n\t\t }\n\t\t }, { type: type, shortType: shortType }, disabled);\n\t\t }\n\t\n\t\t function objectOfCheckGetter(checker) {\n\t\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t\t var shortType = 'objectOf[' + checkerDisplay + ']';\n\t\n\t\t function type(options) {\n\t\t if (options && options.short) {\n\t\t return shortType;\n\t\t }\n\t\t return getCheckerDisplay(checker, options);\n\t\t }\n\t\t type.__apiCheckData = { optional: false, type: 'objectOf' };\n\t\n\t\t return setupChecker(function objectOfCheckerDefinition(val, name, location) {\n\t\t var notObject = checkers.object(val, name, location);\n\t\t if (isError(notObject)) {\n\t\t return notObject;\n\t\t }\n\t\t var allTypesSuccess = each(val, function (item, key) {\n\t\t if (isError(checker(item, key, name))) {\n\t\t return false;\n\t\t }\n\t\t });\n\t\t if (!allTypesSuccess) {\n\t\t return getError(name, location, shortType);\n\t\t }\n\t\t }, { type: type, shortType: shortType }, disabled);\n\t\t }\n\t\n\t\t function typeOrArrayOfCheckGetter(checker) {\n\t\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t\t var shortType = 'typeOrArrayOf[' + checkerDisplay + ']';\n\t\n\t\t function type(options) {\n\t\t if (options && options.short) {\n\t\t return shortType;\n\t\t }\n\t\t return getCheckerDisplay(checker, options);\n\t\t }\n\t\n\t\t type.__apiCheckData = { optional: false, type: 'typeOrArrayOf' };\n\t\t return setupChecker(function typeOrArrayOfDefinition(val, name, location, obj) {\n\t\t if (isError(checkers.oneOfType([checker, checkers.arrayOf(checker)])(val, name, location, obj))) {\n\t\t return getError(name, location, shortType);\n\t\t }\n\t\t }, { type: type, shortType: shortType }, disabled);\n\t\t }\n\t\n\t\t function getShapeCheckGetter() {\n\t\t function shapeCheckGetter(shape, nonObject) {\n\t\t var shapeTypes = {};\n\t\t each(shape, function (checker, prop) {\n\t\t shapeTypes[prop] = getCheckerDisplay(checker);\n\t\t });\n\t\t function type() {\n\t\t var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t\n\t\t var ret = {};\n\t\t var terse = options.terse;\n\t\t var obj = options.obj;\n\t\t var addHelpers = options.addHelpers;\n\t\n\t\t var parentRequired = options.required;\n\t\t each(shape, function (checker, prop) {\n\t\t /* eslint complexity:[2, 6] */\n\t\t var specified = obj && obj.hasOwnProperty(prop);\n\t\t var required = undef(parentRequired) ? !checker.isOptional : parentRequired;\n\t\t if (!terse || (specified || !checker.isOptional)) {\n\t\t ret[prop] = getCheckerDisplay(checker, { terse: terse, obj: obj && obj[prop], required: required, addHelpers: addHelpers });\n\t\t }\n\t\t if (addHelpers) {\n\t\t modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required);\n\t\t }\n\t\t });\n\t\t return ret;\n\t\n\t\t function modifyTypeDisplayToHelpOut(theRet, prop, specified, checker, required) {\n\t\t if (!specified && required && !checker.isOptional) {\n\t\t var item = 'ITEM';\n\t\t if (checker.type && checker.type.__apiCheckData) {\n\t\t item = checker.type.__apiCheckData.type.toUpperCase();\n\t\t }\n\t\t addHelper('missing', 'MISSING THIS ' + item, ' <-- YOU ARE MISSING THIS');\n\t\t } else if (specified) {\n\t\t var error = checker(obj[prop], prop, null, obj);\n\t\t if (isError(error)) {\n\t\t addHelper('error', 'THIS IS THE PROBLEM: ' + error.message, ' <-- THIS IS THE PROBLEM: ' + error.message);\n\t\t }\n\t\t }\n\t\n\t\t function addHelper(property, objectMessage, stringMessage) {\n\t\t if (typeof theRet[prop] === 'string') {\n\t\t theRet[prop] += stringMessage;\n\t\t } else {\n\t\t theRet[prop].__apiCheckData[property] = objectMessage;\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\n\t\t type.__apiCheckData = { strict: false, optional: false, type: 'shape' };\n\t\t var shapeChecker = setupChecker(function shapeCheckerDefinition(val, name, location) {\n\t\t /* eslint complexity:[2, 6] */\n\t\t var isObject = !nonObject && checkers.object(val, name, location);\n\t\t if (isError(isObject)) {\n\t\t return isObject;\n\t\t }\n\t\t var shapePropError = undefined;\n\t\t location = location ? location + (name ? '/' : '') : '';\n\t\t name = name || '';\n\t\t each(shape, function (checker, prop) {\n\t\t if (val.hasOwnProperty(prop) || !checker.isOptional) {\n\t\t shapePropError = checker(val[prop], prop, '' + location + name, val);\n\t\t return !isError(shapePropError);\n\t\t }\n\t\t });\n\t\t if (isError(shapePropError)) {\n\t\t return shapePropError;\n\t\t }\n\t\t }, { type: type, shortType: 'shape' }, disabled);\n\t\n\t\t function strictType() {\n\t\t return type.apply(undefined, arguments);\n\t\t }\n\t\n\t\t strictType.__apiCheckData = copy(shapeChecker.type.__apiCheckData);\n\t\t strictType.__apiCheckData.strict = true;\n\t\t shapeChecker.strict = setupChecker(function strictShapeCheckerDefinition(val, name, location) {\n\t\t var shapeError = shapeChecker(val, name, location);\n\t\t if (isError(shapeError)) {\n\t\t return shapeError;\n\t\t }\n\t\t var allowedProperties = Object.keys(shape);\n\t\t var extraProps = Object.keys(val).filter(function (prop) {\n\t\t return allowedProperties.indexOf(prop) === -1;\n\t\t });\n\t\t if (extraProps.length) {\n\t\t return new Error(nAtL(name, location) + ' cannot have extra properties: ' + t(extraProps.join('`, `')) + '.' + ('It is limited to ' + t(allowedProperties.join('`, `'))));\n\t\t }\n\t\t }, { type: strictType, shortType: 'strict shape' }, disabled);\n\t\n\t\t return shapeChecker;\n\t\t }\n\t\n\t\t shapeCheckGetter.ifNot = function ifNot(otherProps, propChecker) {\n\t\t if (!Array.isArray(otherProps)) {\n\t\t otherProps = [otherProps];\n\t\t }\n\t\t var description = undefined;\n\t\t if (otherProps.length === 1) {\n\t\t description = 'specified only if ' + otherProps[0] + ' is not specified';\n\t\t } else {\n\t\t description = 'specified only if none of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t\t }\n\t\t var shortType = 'ifNot[' + otherProps.join(', ') + ']';\n\t\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t\t return setupChecker(function ifNotChecker(prop, propName, location, obj) {\n\t\t var propExists = obj && obj.hasOwnProperty(propName);\n\t\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t\t return obj && obj.hasOwnProperty(otherProp);\n\t\t });\n\t\t if (propExists === otherPropsExist) {\n\t\t return getError(propName, location, type);\n\t\t } else if (propExists) {\n\t\t return propChecker(prop, propName, location, obj);\n\t\t }\n\t\t }, { notRequired: true, type: type, shortType: shortType }, disabled);\n\t\t };\n\t\n\t\t shapeCheckGetter.onlyIf = function onlyIf(otherProps, propChecker) {\n\t\t otherProps = arrayify(otherProps);\n\t\t var description = undefined;\n\t\t if (otherProps.length === 1) {\n\t\t description = 'specified only if ' + otherProps[0] + ' is also specified';\n\t\t } else {\n\t\t description = 'specified only if all of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t\t }\n\t\t var shortType = 'onlyIf[' + otherProps.join(', ') + ']';\n\t\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t\t return setupChecker(function onlyIfCheckerDefinition(prop, propName, location, obj) {\n\t\t var othersPresent = otherProps.every(function (property) {\n\t\t return obj.hasOwnProperty(property);\n\t\t });\n\t\t if (!othersPresent) {\n\t\t return getError(propName, location, type);\n\t\t } else {\n\t\t return propChecker(prop, propName, location, obj);\n\t\t }\n\t\t }, { type: type, shortType: shortType }, disabled);\n\t\t };\n\t\n\t\t shapeCheckGetter.requiredIfNot = function shapeRequiredIfNot(otherProps, propChecker) {\n\t\t if (!Array.isArray(otherProps)) {\n\t\t otherProps = [otherProps];\n\t\t }\n\t\t return getRequiredIfNotChecker(false, otherProps, propChecker);\n\t\t };\n\t\n\t\t shapeCheckGetter.requiredIfNot.all = function shapeRequiredIfNotAll(otherProps, propChecker) {\n\t\t if (!Array.isArray(otherProps)) {\n\t\t throw new Error('requiredIfNot.all must be passed an array');\n\t\t }\n\t\t return getRequiredIfNotChecker(true, otherProps, propChecker);\n\t\t };\n\t\n\t\t function getRequiredIfNotChecker(all, otherProps, propChecker) {\n\t\t var props = t(otherProps.join(', '));\n\t\t var ifProps = 'if ' + (all ? 'all of' : 'at least one of');\n\t\t var description = 'specified ' + ifProps + ' these are not specified: ' + props + ' (otherwise it\\'s optional)';\n\t\t var shortType = 'requiredIfNot' + (all ? '.all' : '') + '[' + otherProps.join(', ') + '}]';\n\t\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t\t return setupChecker(function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t\t var propExists = obj && obj.hasOwnProperty(propName);\n\t\t var iteration = all ? 'every' : 'some';\n\t\t var otherPropsExist = otherProps[iteration](function (otherProp) {\n\t\t return obj && obj.hasOwnProperty(otherProp);\n\t\t });\n\t\t if (!otherPropsExist && !propExists) {\n\t\t return getError(propName, location, type);\n\t\t } else if (propExists) {\n\t\t return propChecker(prop, propName, location, obj);\n\t\t }\n\t\t }, { type: type, notRequired: true }, disabled);\n\t\t }\n\t\n\t\t return shapeCheckGetter;\n\t\n\t\t function getTypeForShapeChild(propChecker, description, shortType) {\n\t\t function type(options) {\n\t\t if (options && options.short) {\n\t\t return shortType;\n\t\t }\n\t\t return getCheckerDisplay(propChecker);\n\t\t }\n\t\t type.__apiCheckData = { optional: false, type: 'ifNot', description: description };\n\t\t return type;\n\t\t }\n\t\t }\n\t\n\t\t function argumentsCheckerGetter() {\n\t\t var type = 'function arguments';\n\t\t return setupChecker(function argsCheckerDefinition(val, name, location) {\n\t\t if (Array.isArray(val) || isError(checkers.object(val)) || isError(checkers.number(val.length))) {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\t }\n\t\n\t\t function anyCheckGetter() {\n\t\t return setupChecker(function anyCheckerDefinition() {\n\t\t // don't do anything\n\t\t }, { type: 'any' }, disabled);\n\t\t }\n\t\n\t\t function nullCheckGetter() {\n\t\t var type = 'null';\n\t\t return setupChecker(function nullChecker(val, name, location) {\n\t\t if (val !== null) {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\t }\n\t\n\t\t function rangeCheckGetter(min, max) {\n\t\t var type = 'Range (' + min + ' - ' + max + ')';\n\t\t return setupChecker(function rangeChecker(val, name, location) {\n\t\t if (typeof val !== 'number' || val < min || val > max) {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\t }\n\t\n\t\t function lessThanCheckGetter(min) {\n\t\t var type = 'lessThan[' + min + ']';\n\t\t return setupChecker(function lessThanChecker(val, name, location) {\n\t\t if (typeof val !== 'number' || val > min) {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\t }\n\t\n\t\t function greaterThanCheckGetter(max) {\n\t\t var type = 'greaterThan[' + max + ']';\n\t\t return setupChecker(function greaterThanChecker(val, name, location) {\n\t\t if (typeof val !== 'number' || val < max) {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\t }\n\t\n\t\t function emptyObjectCheckGetter() {\n\t\t var type = 'empty object';\n\t\t return setupChecker(function emptyObjectChecker(val, name, location) {\n\t\t if (typeOf(val) !== 'object' || val === null || Object.keys(val).length) {\n\t\t return getError(name, location, type);\n\t\t }\n\t\t }, { type: type }, disabled);\n\t\t }\n\t\t}\n\t\n\t/***/ }\n\t/******/ ])\n\t});\n\t;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// angular-formly version 6.8.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\t\n\t(function webpackUniversalModuleDefinition(root, factory) {\n\t\tif(true)\n\t\t\tmodule.exports = factory(__webpack_require__(2), __webpack_require__(4));\n\t\telse if(typeof define === 'function' && define.amd)\n\t\t\tdefine([\"api-check\", \"angular\"], factory);\n\t\telse if(typeof exports === 'object')\n\t\t\texports[\"ngFormly\"] = factory(require(\"api-check\"), require(\"angular\"));\n\t\telse\n\t\t\troot[\"ngFormly\"] = factory(root[\"apiCheck\"], root[\"angular\"]);\n\t})(this, function(__WEBPACK_EXTERNAL_MODULE_16__, __WEBPACK_EXTERNAL_MODULE_17__) {\n\treturn /******/ (function(modules) { // webpackBootstrap\n\t/******/ \t// The module cache\n\t/******/ \tvar installedModules = {};\n\t\n\t/******/ \t// The require function\n\t/******/ \tfunction __webpack_require__(moduleId) {\n\t\n\t/******/ \t\t// Check if module is in cache\n\t/******/ \t\tif(installedModules[moduleId])\n\t/******/ \t\t\treturn installedModules[moduleId].exports;\n\t\n\t/******/ \t\t// Create a new module (and put it into the cache)\n\t/******/ \t\tvar module = installedModules[moduleId] = {\n\t/******/ \t\t\texports: {},\n\t/******/ \t\t\tid: moduleId,\n\t/******/ \t\t\tloaded: false\n\t/******/ \t\t};\n\t\n\t/******/ \t\t// Execute the module function\n\t/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\n\t/******/ \t\t// Flag the module as loaded\n\t/******/ \t\tmodule.loaded = true;\n\t\n\t/******/ \t\t// Return the exports of the module\n\t/******/ \t\treturn module.exports;\n\t/******/ \t}\n\t\n\t\n\t/******/ \t// expose the modules object (__webpack_modules__)\n\t/******/ \t__webpack_require__.m = modules;\n\t\n\t/******/ \t// expose the module cache\n\t/******/ \t__webpack_require__.c = installedModules;\n\t\n\t/******/ \t// __webpack_public_path__\n\t/******/ \t__webpack_require__.p = \"\";\n\t\n\t/******/ \t// Load entry module and return exports\n\t/******/ \treturn __webpack_require__(0);\n\t/******/ })\n\t/************************************************************************/\n\t/******/ ([\n\t/* 0 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar index = _interopRequire(__webpack_require__(1));\n\t\n\t\tmodule.exports = index;\n\t\n\t/***/ },\n\t/* 1 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(15));\n\t\n\t\tvar formlyApiCheck = _interopRequire(__webpack_require__(2));\n\t\n\t\tvar formlyErrorAndWarningsUrlPrefix = _interopRequire(__webpack_require__(3));\n\t\n\t\tvar formlyUsability = _interopRequire(__webpack_require__(4));\n\t\n\t\tvar formlyConfig = _interopRequire(__webpack_require__(5));\n\t\n\t\tvar formlyValidationMessages = _interopRequire(__webpack_require__(6));\n\t\n\t\tvar formlyUtil = _interopRequire(__webpack_require__(7));\n\t\n\t\tvar formlyWarn = _interopRequire(__webpack_require__(8));\n\t\n\t\tvar formlyCustomValidation = _interopRequire(__webpack_require__(9));\n\t\n\t\tvar formlyField = _interopRequire(__webpack_require__(10));\n\t\n\t\tvar formlyFocus = _interopRequire(__webpack_require__(11));\n\t\n\t\tvar formlyForm = _interopRequire(__webpack_require__(12));\n\t\n\t\tvar formlyNgModelAttrsManipulator = _interopRequire(__webpack_require__(13));\n\t\n\t\tvar formlyCustomTags = _interopRequire(__webpack_require__(14));\n\t\n\t\tvar ngModuleName = \"formly\";\n\t\n\t\tmodule.exports = ngModuleName;\n\t\n\t\tvar ngModule = angular.module(ngModuleName, []);\n\t\n\t\tngModule.constant(\"formlyApiCheck\", formlyApiCheck);\n\t\tngModule.constant(\"formlyErrorAndWarningsUrlPrefix\", formlyErrorAndWarningsUrlPrefix);\n\t\tngModule.constant(\"formlyVersion\", (\"6.8.2\")); // <-- webpack variable\n\t\n\t\tngModule.provider(\"formlyUsability\", formlyUsability);\n\t\tngModule.provider(\"formlyConfig\", formlyConfig);\n\t\n\t\tngModule.factory(\"formlyValidationMessages\", formlyValidationMessages);\n\t\tngModule.factory(\"formlyUtil\", formlyUtil);\n\t\tngModule.factory(\"formlyWarn\", formlyWarn);\n\t\n\t\tngModule.directive(\"formlyCustomValidation\", formlyCustomValidation);\n\t\tngModule.directive(\"formlyField\", formlyField);\n\t\tngModule.directive(\"formlyFocus\", formlyFocus);\n\t\tngModule.directive(\"formlyForm\", formlyForm);\n\t\n\t\tngModule.run(formlyNgModelAttrsManipulator);\n\t\tngModule.run(formlyCustomTags);\n\t\n\t/***/ },\n\t/* 2 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar apiCheckFactory = _interopRequire(__webpack_require__(16));\n\t\n\t\tvar apiCheck = apiCheckFactory({\n\t\t output: {\n\t\t prefix: \"angular-formly:\",\n\t\t docsBaseUrl: __webpack_require__(3)\n\t\t }\n\t\t});\n\t\n\t\tfunction shapeRequiredIfNot(otherProps, propChecker) {\n\t\t if (!angular.isArray(otherProps)) {\n\t\t otherProps = [otherProps];\n\t\t }\n\t\t var type = \"specified if these are not specified: `\" + otherProps.join(\", \") + \"` (otherwise it's optional)\";\n\t\t function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t\t var propExists = obj && obj.hasOwnProperty(propName);\n\t\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t\t return obj && obj.hasOwnProperty(otherProp);\n\t\t });\n\t\t if (!otherPropsExist && !propExists) {\n\t\t return apiCheck.utils.getError(propName, location, type);\n\t\t } else if (propExists) {\n\t\t return propChecker(prop, propName, location, obj);\n\t\t }\n\t\t }\n\t\t shapeRequiredIfNotDefinition.type = type;\n\t\t return apiCheck.utils.checkerHelpers.setupChecker(shapeRequiredIfNotDefinition);\n\t\t}\n\t\n\t\tvar formlyExpression = apiCheck.oneOfType([apiCheck.string, apiCheck.func]);\n\t\tvar specifyWrapperType = apiCheck.oneOfType([apiCheck.oneOf([null]), apiCheck.typeOrArrayOf(apiCheck.string)]);\n\t\n\t\tvar apiCheckProperty = apiCheck.objectOf(apiCheck.func);\n\t\n\t\tvar apiCheckInstanceProperty = apiCheck.shape.onlyIf(\"apiCheck\", apiCheck.func.withProperties({\n\t\t warn: apiCheck.func,\n\t\t \"throw\": apiCheck.func,\n\t\t shape: apiCheck.func\n\t\t}));\n\t\n\t\tvar apiCheckFunctionProperty = apiCheck.shape.onlyIf(\"apiCheck\", apiCheck.oneOf([\"throw\", \"warn\"]));\n\t\n\t\tvar formlyWrapperType = apiCheck.shape({\n\t\t name: shapeRequiredIfNot(\"types\", apiCheck.string).optional,\n\t\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.string).optional,\n\t\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.string).optional,\n\t\t types: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t\t overwriteOk: apiCheck.bool.optional,\n\t\t validateOptions: apiCheck.func.optional,\n\t\t apiCheck: apiCheckProperty.optional,\n\t\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t\t apiCheckOptions: apiCheck.object.optional\n\t\t}).strict;\n\t\n\t\tvar expressionProperties = apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t\t expression: formlyExpression,\n\t\t message: formlyExpression.optional\n\t\t}).strict]));\n\t\n\t\tvar modelChecker = apiCheck.oneOfType([apiCheck.oneOf([\"formState\"]), apiCheck.object]);\n\t\n\t\tvar fieldOptionsApiShape = {\n\t\t $$hashKey: apiCheck.any.optional,\n\t\t type: apiCheck.shape.ifNot([\"template\", \"templateUrl\"], apiCheck.string).optional,\n\t\t template: apiCheck.shape.ifNot([\"type\", \"templateUrl\"], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t\t templateUrl: apiCheck.shape.ifNot([\"type\", \"template\"], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t\t key: apiCheck.oneOfType([apiCheck.string, apiCheck.number]).optional,\n\t\t model: modelChecker.optional,\n\t\t className: apiCheck.string.optional,\n\t\t id: apiCheck.string.optional,\n\t\t expressionProperties: expressionProperties.optional,\n\t\t data: apiCheck.object.optional,\n\t\t templateOptions: apiCheck.object.optional,\n\t\t wrapper: specifyWrapperType.optional,\n\t\t modelOptions: apiCheck.shape({\n\t\t updateOn: apiCheck.string.optional,\n\t\t debounce: apiCheck.oneOfType([apiCheck.objectOf(apiCheck.number), apiCheck.number]).optional,\n\t\t allowInvalid: apiCheck.bool.optional,\n\t\t getterSetter: apiCheck.bool.optional,\n\t\t timezone: apiCheck.string.optional\n\t\t }).optional,\n\t\t watcher: apiCheck.typeOrArrayOf(apiCheck.shape({\n\t\t expression: formlyExpression.optional,\n\t\t listener: formlyExpression\n\t\t })).optional,\n\t\t validators: apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t\t expression: formlyExpression,\n\t\t message: formlyExpression.optional\n\t\t }).strict])).optional,\n\t\t noFormControl: apiCheck.bool.optional,\n\t\t hide: apiCheck.bool.optional,\n\t\t hideExpression: formlyExpression.optional,\n\t\t ngModelAttrs: apiCheck.objectOf(apiCheck.shape({\n\t\t expression: apiCheck.shape.ifNot([\"value\", \"attribute\", \"bound\"], apiCheck.any).optional,\n\t\t value: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional,\n\t\t attribute: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional,\n\t\t bound: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional\n\t\t }).strict).optional,\n\t\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional,\n\t\t optionsTypes: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t\t link: apiCheck.func.optional,\n\t\t controller: apiCheck.oneOfType([apiCheck.string, apiCheck.func, apiCheck.array]).optional,\n\t\t validation: apiCheck.shape({\n\t\t show: apiCheck.oneOfType([apiCheck.bool, apiCheck.oneOf([null])]).optional,\n\t\t messages: apiCheck.objectOf(formlyExpression).optional,\n\t\t errorExistsAndShouldBeVisible: apiCheck.bool.optional\n\t\t }).optional,\n\t\t formControl: apiCheck.object.optional,\n\t\t value: apiCheck.func.optional,\n\t\t runExpressions: apiCheck.func.optional,\n\t\t resetModel: apiCheck.func.optional,\n\t\t updateInitialValue: apiCheck.func.optional,\n\t\t initialValue: apiCheck.any.optional,\n\t\t defaultValue: apiCheck.any.optional\n\t\t};\n\t\n\t\tvar formlyFieldOptions = apiCheck.shape(fieldOptionsApiShape).strict;\n\t\n\t\tvar formOptionsApi = apiCheck.shape({\n\t\t formState: apiCheck.object.optional,\n\t\t resetModel: apiCheck.func.optional,\n\t\t updateInitialValue: apiCheck.func.optional,\n\t\t removeChromeAutoComplete: apiCheck.bool.optional\n\t\t}).strict;\n\t\n\t\tvar fieldGroup = apiCheck.shape({\n\t\t $$hashKey: apiCheck.any.optional,\n\t\t // danger. Nested field groups wont get api-checked...\n\t\t fieldGroup: apiCheck.arrayOf(apiCheck.oneOfType([formlyFieldOptions, apiCheck.object])),\n\t\t className: apiCheck.string.optional,\n\t\t options: formOptionsApi.optional,\n\t\t hide: apiCheck.bool.optional,\n\t\t hideExpression: formlyExpression.optional,\n\t\t model: modelChecker.optional,\n\t\t form: apiCheck.object.optional,\n\t\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional\n\t\t}).strict;\n\t\n\t\tvar typeOptionsDefaultOptions = angular.copy(fieldOptionsApiShape);\n\t\ttypeOptionsDefaultOptions.key = apiCheck.string.optional;\n\t\n\t\tvar formlyTypeOptions = apiCheck.shape({\n\t\t name: apiCheck.string,\n\t\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t\t controller: apiCheck.oneOfType([apiCheck.func, apiCheck.string, apiCheck.array]).optional,\n\t\t link: apiCheck.func.optional,\n\t\t defaultOptions: apiCheck.oneOfType([apiCheck.func, apiCheck.shape(typeOptionsDefaultOptions)]).optional,\n\t\t \"extends\": apiCheck.string.optional,\n\t\t wrapper: specifyWrapperType.optional,\n\t\t data: apiCheck.object.optional,\n\t\t validateOptions: apiCheck.func.optional,\n\t\t apiCheck: apiCheckProperty.optional,\n\t\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t\t apiCheckOptions: apiCheck.object.optional,\n\t\t overwriteOk: apiCheck.bool.optional\n\t\t}).strict;\n\t\tangular.extend(apiCheck, {\n\t\t formlyTypeOptions: formlyTypeOptions, formlyFieldOptions: formlyFieldOptions, formlyExpression: formlyExpression, formlyWrapperType: formlyWrapperType, fieldGroup: fieldGroup, formOptionsApi: formOptionsApi\n\t\t});\n\t\n\t\tmodule.exports = apiCheck;\n\t\n\t/***/ },\n\t/* 3 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tmodule.exports = \"https://github.com/formly-js/angular-formly/blob/\" + (\"6.8.2\") + \"/other/ERRORS_AND_WARNINGS.md#\";\n\t\n\t/***/ },\n\t/* 4 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(15));\n\t\n\t\tmodule.exports = formlyUsability;\n\t\n\t\t// @ngInject\n\t\tfunction formlyUsability(formlyApiCheck, formlyErrorAndWarningsUrlPrefix) {\n\t\t var _this = this;\n\t\n\t\t angular.extend(this, {\n\t\t getFormlyError: getFormlyError,\n\t\t getFieldError: getFieldError,\n\t\t checkWrapper: checkWrapper,\n\t\t checkWrapperTemplate: checkWrapperTemplate,\n\t\t $get: function () {\n\t\t return _this;\n\t\t }\n\t\t });\n\t\n\t\t function getFieldError(errorInfoSlug, message, field) {\n\t\t if (arguments.length < 3) {\n\t\t field = message;\n\t\t message = errorInfoSlug;\n\t\t errorInfoSlug = null;\n\t\t }\n\t\t return new Error(getErrorMessage(errorInfoSlug, message) + (\" Field definition: \" + angular.toJson(field)));\n\t\t }\n\t\n\t\t function getFormlyError(errorInfoSlug, message) {\n\t\t if (!message) {\n\t\t message = errorInfoSlug;\n\t\t errorInfoSlug = null;\n\t\t }\n\t\t return new Error(getErrorMessage(errorInfoSlug, message));\n\t\t }\n\t\n\t\t function getErrorMessage(errorInfoSlug, message) {\n\t\t var url = \"\";\n\t\t if (errorInfoSlug !== null) {\n\t\t url = \"\" + formlyErrorAndWarningsUrlPrefix + \"\" + errorInfoSlug;\n\t\t }\n\t\t return \"Formly Error: \" + message + \". \" + url;\n\t\t }\n\t\n\t\t function checkWrapper(wrapper) {\n\t\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyWrapperType, wrapper, {\n\t\t prefix: \"formlyConfig.setWrapper\",\n\t\t urlSuffix: \"setwrapper-validation-failed\"\n\t\t });\n\t\t }\n\t\n\t\t function checkWrapperTemplate(template, additionalInfo) {\n\t\t var formlyTransclude = \" \";\n\t\t if (template.indexOf(formlyTransclude) === -1) {\n\t\t throw getFormlyError(\"Template wrapper templates must use \\\"\" + formlyTransclude + \"\\\" somewhere in them. \" + (\"This one does not have \\\" \\\" in it: \" + template) + \"\\n\" + (\"Additional information: \" + JSON.stringify(additionalInfo)));\n\t\t }\n\t\t }\n\t\t}\n\t\tformlyUsability.$inject = [\"formlyApiCheck\", \"formlyErrorAndWarningsUrlPrefix\"];\n\t\n\t/***/ },\n\t/* 5 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(15));\n\t\n\t\tvar utils = _interopRequire(__webpack_require__(18));\n\t\n\t\tmodule.exports = formlyConfig;\n\t\n\t\t// @ngInject\n\t\tfunction formlyConfig(formlyUsabilityProvider, formlyApiCheck) {\n\t\t var _this2 = this;\n\t\n\t\t var typeMap = {};\n\t\t var templateWrappersMap = {};\n\t\t var defaultWrapperName = \"default\";\n\t\t var _this = this;\n\t\t var getError = formlyUsabilityProvider.getFormlyError;\n\t\n\t\t angular.extend(this, {\n\t\t setType: setType,\n\t\t getType: getType,\n\t\t setWrapper: setWrapper,\n\t\t getWrapper: getWrapper,\n\t\t getWrapperByType: getWrapperByType,\n\t\t removeWrapperByName: removeWrapperByName,\n\t\t removeWrappersForType: removeWrappersForType,\n\t\t disableWarnings: false,\n\t\t extras: {\n\t\t disableNgModelAttrsManipulator: false,\n\t\t ngModelAttrsManipulatorPreferUnbound: false,\n\t\t removeChromeAutoComplete: false,\n\t\t defaultHideDirective: \"ng-if\",\n\t\t getFieldId: null\n\t\t },\n\t\t templateManipulators: {\n\t\t preWrapper: [],\n\t\t postWrapper: []\n\t\t },\n\t\t $get: function () {\n\t\t return _this2;\n\t\t }\n\t\t });\n\t\n\t\t function setType(options) {\n\t\t if (angular.isArray(options)) {\n\t\t angular.forEach(options, setType);\n\t\t } else if (angular.isObject(options)) {\n\t\t checkType(options);\n\t\t if (options[\"extends\"]) {\n\t\t extendTypeOptions(options);\n\t\t }\n\t\t typeMap[options.name] = options;\n\t\t } else {\n\t\t throw getError(\"You must provide an object or array for setType. You provided: \" + JSON.stringify(arguments));\n\t\t }\n\t\t }\n\t\n\t\t function checkType(options) {\n\t\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyTypeOptions, options, {\n\t\t prefix: \"formlyConfig.setType\",\n\t\t url: \"settype-validation-failed\"\n\t\t });\n\t\t if (!options.overwriteOk) {\n\t\t checkOverwrite(options.name, typeMap, options, \"types\");\n\t\t } else {\n\t\t options.overwriteOk = undefined;\n\t\t }\n\t\t }\n\t\n\t\t function extendTypeOptions(options) {\n\t\t var extendsType = getType(options[\"extends\"], true, options);\n\t\t extendTypeControllerFunction(options, extendsType);\n\t\t extendTypeLinkFunction(options, extendsType);\n\t\t extendTypeValidateOptionsFunction(options, extendsType);\n\t\t extendTypeDefaultOptions(options, extendsType);\n\t\t utils.reverseDeepMerge(options, extendsType);\n\t\t extendTemplate(options, extendsType);\n\t\t }\n\t\n\t\t function extendTemplate(options, extendsType) {\n\t\t if (options.template && extendsType.templateUrl) {\n\t\t delete options.templateUrl;\n\t\t } else if (options.templateUrl && extendsType.template) {\n\t\t delete options.template;\n\t\t }\n\t\t }\n\t\n\t\t function extendTypeControllerFunction(options, extendsType) {\n\t\t var extendsCtrl = extendsType.controller;\n\t\t if (!angular.isDefined(extendsCtrl)) {\n\t\t return;\n\t\t }\n\t\t var optionsCtrl = options.controller;\n\t\t if (angular.isDefined(optionsCtrl)) {\n\t\t options.controller = function ($scope, $controller) {\n\t\t $controller(extendsCtrl, { $scope: $scope });\n\t\t $controller(optionsCtrl, { $scope: $scope });\n\t\t };\n\t\t options.controller.$inject = [\"$scope\", \"$controller\"];\n\t\t } else {\n\t\t options.controller = extendsCtrl;\n\t\t }\n\t\t }\n\t\n\t\t function extendTypeLinkFunction(options, extendsType) {\n\t\t var extendsFn = extendsType.link;\n\t\t if (!angular.isDefined(extendsFn)) {\n\t\t return;\n\t\t }\n\t\t var optionsFn = options.link;\n\t\t if (angular.isDefined(optionsFn)) {\n\t\t options.link = function () {\n\t\t extendsFn.apply(undefined, arguments);\n\t\t optionsFn.apply(undefined, arguments);\n\t\t };\n\t\t } else {\n\t\t options.link = extendsFn;\n\t\t }\n\t\t }\n\t\n\t\t function extendTypeValidateOptionsFunction(options, extendsType) {\n\t\t var extendsFn = extendsType.validateOptions;\n\t\t if (!angular.isDefined(extendsFn)) {\n\t\t return;\n\t\t }\n\t\t var optionsFn = options.validateOptions;\n\t\t var originalDefaultOptions = options.defaultOptions;\n\t\t if (angular.isDefined(optionsFn)) {\n\t\t options.validateOptions = function (options) {\n\t\t optionsFn(options);\n\t\t var mergedOptions = angular.copy(options);\n\t\t var defaultOptions = originalDefaultOptions;\n\t\t if (defaultOptions) {\n\t\t if (angular.isFunction(defaultOptions)) {\n\t\t defaultOptions = defaultOptions(mergedOptions);\n\t\t }\n\t\t utils.reverseDeepMerge(mergedOptions, defaultOptions);\n\t\t }\n\t\t extendsFn(mergedOptions);\n\t\t };\n\t\t } else {\n\t\t options.validateOptions = extendsFn;\n\t\t }\n\t\t }\n\t\n\t\t function extendTypeDefaultOptions(options, extendsType) {\n\t\t var extendsDO = extendsType.defaultOptions;\n\t\t if (!angular.isDefined(extendsDO)) {\n\t\t return;\n\t\t }\n\t\t var optionsDO = options.defaultOptions;\n\t\t var optionsDOIsFn = angular.isFunction(optionsDO);\n\t\t var extendsDOIsFn = angular.isFunction(extendsDO);\n\t\t if (extendsDOIsFn) {\n\t\t options.defaultOptions = function defaultOptions(options) {\n\t\t var extendsDefaultOptions = extendsDO(options);\n\t\t var mergedDefaultOptions = {};\n\t\t utils.reverseDeepMerge(mergedDefaultOptions, options, extendsDefaultOptions);\n\t\t var extenderOptionsDefaultOptions = optionsDO;\n\t\t if (optionsDOIsFn) {\n\t\t extenderOptionsDefaultOptions = extenderOptionsDefaultOptions(mergedDefaultOptions);\n\t\t }\n\t\t utils.reverseDeepMerge(extendsDefaultOptions, extenderOptionsDefaultOptions);\n\t\t return extendsDefaultOptions;\n\t\t };\n\t\t } else if (optionsDOIsFn) {\n\t\t options.defaultOptions = function defaultOptions(options) {\n\t\t var newDefaultOptions = {};\n\t\t utils.reverseDeepMerge(newDefaultOptions, options, extendsDO);\n\t\t return optionsDO(newDefaultOptions);\n\t\t };\n\t\t }\n\t\t }\n\t\n\t\t function getType(name, throwError, errorContext) {\n\t\t if (!name) {\n\t\t return undefined;\n\t\t }\n\t\t var type = typeMap[name];\n\t\t if (!type && throwError === true) {\n\t\t throw getError(\"There is no type by the name of \\\"\" + name + \"\\\": \" + JSON.stringify(errorContext));\n\t\t } else {\n\t\t return type;\n\t\t }\n\t\t }\n\t\n\t\t function setWrapper(_x, _x2) {\n\t\t var _again = true;\n\t\n\t\t _function: while (_again) {\n\t\t _again = false;\n\t\t var options = _x,\n\t\t name = _x2;\n\t\n\t\t if (angular.isArray(options)) {\n\t\t return options.map(function (wrapperOptions) {\n\t\t return setWrapper(wrapperOptions);\n\t\t });\n\t\t } else if (angular.isObject(options)) {\n\t\t options.types = getOptionsTypes(options);\n\t\t options.name = getOptionsName(options, name);\n\t\t checkWrapperAPI(options);\n\t\t templateWrappersMap[options.name] = options;\n\t\t return options;\n\t\t } else if (angular.isString(options)) {\n\t\t _x = {\n\t\t template: options,\n\t\t name: name\n\t\t };\n\t\t _again = true;\n\t\t continue _function;\n\t\t }\n\t\t }\n\t\t }\n\t\n\t\t function getOptionsTypes(options) {\n\t\t if (angular.isString(options.types)) {\n\t\t return [options.types];\n\t\t }\n\t\t if (!angular.isDefined(options.types)) {\n\t\t return [];\n\t\t } else {\n\t\t return options.types;\n\t\t }\n\t\t }\n\t\n\t\t function getOptionsName(options, name) {\n\t\t return options.name || name || options.types.join(\" \") || defaultWrapperName;\n\t\t }\n\t\n\t\t function checkWrapperAPI(options) {\n\t\t formlyUsabilityProvider.checkWrapper(options);\n\t\t if (options.template) {\n\t\t formlyUsabilityProvider.checkWrapperTemplate(options.template, options);\n\t\t }\n\t\t if (!options.overwriteOk) {\n\t\t checkOverwrite(options.name, templateWrappersMap, options, \"templateWrappers\");\n\t\t } else {\n\t\t delete options.overwriteOk;\n\t\t }\n\t\t checkWrapperTypes(options);\n\t\t }\n\t\n\t\t function checkWrapperTypes(options) {\n\t\t var shouldThrow = !angular.isArray(options.types) || !options.types.every(angular.isString);\n\t\t if (shouldThrow) {\n\t\t throw getError(\"Attempted to create a template wrapper with types that is not a string or an array of strings\");\n\t\t }\n\t\t }\n\t\n\t\t function checkOverwrite(property, object, newValue, objectName) {\n\t\t if (object.hasOwnProperty(property)) {\n\t\t warn([\"Attempting to overwrite \" + property + \" on \" + objectName + \" which is currently\", \"\" + JSON.stringify(object[property]) + \" with \" + JSON.stringify(newValue), \"To supress this warning, specify the property \\\"overwriteOk: true\\\"\"].join(\" \"));\n\t\t }\n\t\t }\n\t\n\t\t function getWrapper(name) {\n\t\t return templateWrappersMap[name || defaultWrapperName];\n\t\t }\n\t\n\t\t function getWrapperByType(type) {\n\t\t /* jshint maxcomplexity:6 */\n\t\t var wrappers = [];\n\t\t for (var name in templateWrappersMap) {\n\t\t if (templateWrappersMap.hasOwnProperty(name)) {\n\t\t if (templateWrappersMap[name].types && templateWrappersMap[name].types.indexOf(type) !== -1) {\n\t\t wrappers.push(templateWrappersMap[name]);\n\t\t }\n\t\t }\n\t\t }\n\t\t return wrappers;\n\t\t }\n\t\n\t\t function removeWrapperByName(name) {\n\t\t var wrapper = templateWrappersMap[name];\n\t\t delete templateWrappersMap[name];\n\t\t return wrapper;\n\t\t }\n\t\n\t\t function removeWrappersForType(type) {\n\t\t var wrappers = getWrapperByType(type);\n\t\t if (!wrappers) {\n\t\t return;\n\t\t }\n\t\t if (!angular.isArray(wrappers)) {\n\t\t return removeWrapperByName(wrappers.name);\n\t\t } else {\n\t\t wrappers.forEach(function (wrapper) {\n\t\t return removeWrapperByName(wrapper.name);\n\t\t });\n\t\t return wrappers;\n\t\t }\n\t\t }\n\t\n\t\t function warn() {\n\t\t if (!_this.disableWarnings) {\n\t\t console.warn.apply(console, arguments);\n\t\t }\n\t\t }\n\t\t}\n\t\tformlyConfig.$inject = [\"formlyUsabilityProvider\", \"formlyApiCheck\"];\n\t\n\t/***/ },\n\t/* 6 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tmodule.exports = formlyValidationMessages;\n\t\n\t\t// @ngInject\n\t\tfunction formlyValidationMessages() {\n\t\n\t\t var validationMessages = {\n\t\t addTemplateOptionValueMessage: addTemplateOptionValueMessage,\n\t\t addStringMessage: addStringMessage,\n\t\t messages: {}\n\t\t };\n\t\n\t\t return validationMessages;\n\t\n\t\t function addTemplateOptionValueMessage(name, prop, prefix, suffix, alternate) {\n\t\t validationMessages.messages[name] = templateOptionValue(prop, prefix, suffix, alternate);\n\t\t }\n\t\n\t\t function addStringMessage(name, string) {\n\t\t validationMessages.messages[name] = function () {\n\t\t return string;\n\t\t };\n\t\t }\n\t\n\t\t function templateOptionValue(prop, prefix, suffix, alternate) {\n\t\t return function getValidationMessage(viewValue, modelValue, scope) {\n\t\t if (scope.options.templateOptions[prop]) {\n\t\t return \"\" + prefix + \" \" + scope.options.templateOptions[prop] + \" \" + suffix;\n\t\t } else {\n\t\t return alternate;\n\t\t }\n\t\t };\n\t\t }\n\t\t}\n\t\n\t/***/ },\n\t/* 7 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar utils = _interopRequire(__webpack_require__(18));\n\t\n\t\tmodule.exports = formlyUtil;\n\t\n\t\t// @ngInject\n\t\tfunction formlyUtil() {\n\t\t return utils;\n\t\t}\n\t\n\t/***/ },\n\t/* 8 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\t\n\t\tmodule.exports = formlyWarn;\n\t\n\t\t// @ngInject\n\t\tfunction formlyWarn(formlyConfig, formlyErrorAndWarningsUrlPrefix, $log) {\n\t\t return function warn() {\n\t\t if (!formlyConfig.disableWarnings) {\n\t\t var args = Array.prototype.slice.call(arguments);\n\t\t var warnInfoSlug = args.shift();\n\t\t args.unshift(\"Formly Warning:\");\n\t\t args.push(\"\" + formlyErrorAndWarningsUrlPrefix + \"\" + warnInfoSlug);\n\t\t $log.warn.apply($log, _toConsumableArray(args));\n\t\t }\n\t\t };\n\t\t}\n\t\tformlyWarn.$inject = [\"formlyConfig\", \"formlyErrorAndWarningsUrlPrefix\", \"$log\"];\n\t\n\t/***/ },\n\t/* 9 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tmodule.exports = formlyCustomValidation;\n\t\n\t\t// @ngInject\n\t\tfunction formlyCustomValidation(formlyUtil, $q) {\n\t\t return {\n\t\t restrict: \"A\",\n\t\t require: \"ngModel\",\n\t\t link: function formlyCustomValidationLink(scope, el, attrs, ctrl) {\n\t\t var opts = scope.options;\n\t\t if (opts.validators) {\n\t\t checkValidators(opts.validators);\n\t\t }\n\t\t opts.validation.messages = opts.validation.messages || {};\n\t\t angular.forEach(opts.validation.messages, function (message, key) {\n\t\t opts.validation.messages[key] = function () {\n\t\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t\t };\n\t\t });\n\t\n\t\t var useNewValidatorsApi = ctrl.hasOwnProperty(\"$validators\") && !attrs.hasOwnProperty(\"useParsers\");\n\t\t angular.forEach(opts.validators, function addValidatorToPipeline(validator, name) {\n\t\t var message = validator.message;\n\t\t if (message) {\n\t\t opts.validation.messages[name] = function () {\n\t\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t\t };\n\t\t }\n\t\t validator = angular.isObject(validator) ? validator.expression : validator;\n\t\t var isPossiblyAsync = !angular.isString(validator);\n\t\t if (useNewValidatorsApi) {\n\t\t setupWithValidators();\n\t\t } else {\n\t\t setupWithParsers();\n\t\t }\n\t\n\t\t function setupWithValidators() {\n\t\t var validatorCollection = isPossiblyAsync ? \"$asyncValidators\" : \"$validators\";\n\t\t ctrl[validatorCollection][name] = function evalValidity(modelValue, viewValue) {\n\t\t var value = formlyUtil.formlyEval(scope, validator, modelValue, viewValue);\n\t\t if (isPossiblyAsync) {\n\t\t return isPromiseLike(value) ? value : value ? $q.when(value) : $q.reject(value);\n\t\t } else {\n\t\t return value;\n\t\t }\n\t\t };\n\t\t }\n\t\n\t\t function setupWithParsers() {\n\t\t var inFlightValidator = undefined;\n\t\t ctrl.$parsers.unshift(function evalValidityOfParser(viewValue) {\n\t\t var isValid = formlyUtil.formlyEval(scope, validator, ctrl.$modelValue, viewValue);\n\t\t if (isPromiseLike(isValid)) {\n\t\t ctrl.$pending = ctrl.$pending || {};\n\t\t ctrl.$pending[name] = true;\n\t\t inFlightValidator = isValid;\n\t\t isValid.then(function () {\n\t\t if (inFlightValidator === isValid) {\n\t\t ctrl.$setValidity(name, true);\n\t\t }\n\t\t })[\"catch\"](function () {\n\t\t if (inFlightValidator === isValid) {\n\t\t ctrl.$setValidity(name, false);\n\t\t }\n\t\t })[\"finally\"](function () {\n\t\t if (Object.keys(ctrl.$pending).length === 1) {\n\t\t delete ctrl.$pending;\n\t\t } else {\n\t\t delete ctrl.$pending[name];\n\t\t }\n\t\t });\n\t\t } else {\n\t\t ctrl.$setValidity(name, isValid);\n\t\t }\n\t\t return viewValue;\n\t\t });\n\t\t }\n\t\t });\n\t\t }\n\t\t };\n\t\n\t\t function isPromiseLike(obj) {\n\t\t return obj && angular.isFunction(obj.then);\n\t\t }\n\t\n\t\t function checkValidators(validators) {\n\t\t var allowedProperties = [\"expression\", \"message\"];\n\t\t var validatorsWithExtraProps = {};\n\t\t angular.forEach(validators, function (validator, name) {\n\t\t if (angular.isString(validator)) {\n\t\t return;\n\t\t }\n\t\t var extraProps = [];\n\t\t angular.forEach(validator, function (v, key) {\n\t\t if (allowedProperties.indexOf(key) === -1) {\n\t\t extraProps.push(key);\n\t\t }\n\t\t });\n\t\t if (extraProps.length) {\n\t\t validatorsWithExtraProps[name] = extraProps;\n\t\t }\n\t\t });\n\t\t if (Object.keys(validatorsWithExtraProps).length) {\n\t\t throw new Error([\"Validators are only allowed to be functions or objects that have \" + allowedProperties.join(\", \") + \".\", \"You provided some extra properties: \" + JSON.stringify(validatorsWithExtraProps)].join(\" \"));\n\t\t }\n\t\t }\n\t\t}\n\t\tformlyCustomValidation.$inject = [\"formlyUtil\", \"$q\"];\n\t\n\t/***/ },\n\t/* 10 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(15));\n\t\n\t\tmodule.exports = formlyField;\n\t\n\t\t/**\n\t\t * @ngdoc directive\n\t\t * @name formlyField\n\t\t * @restrict AE\n\t\t */\n\t\t// @ngInject\n\t\tfunction formlyField($http, $q, $compile, $templateCache, formlyConfig, formlyValidationMessages, formlyApiCheck, formlyUtil, formlyUsability, formlyWarn) {\n\t\t var arrayify = formlyUtil.arrayify;\n\t\n\t\t FormlyFieldController.$inject = [\"$scope\", \"$timeout\", \"$parse\", \"$controller\"];\n\t\t return {\n\t\t restrict: \"AE\",\n\t\t transclude: true,\n\t\t scope: {\n\t\t options: \"=\",\n\t\t model: \"=\",\n\t\t formId: \"@\", // TODO remove formId in a breaking release\n\t\t index: \"=?\",\n\t\t fields: \"=?\",\n\t\t formState: \"=?\",\n\t\t form: \"=?\" // TODO require form in a breaking release\n\t\t },\n\t\t controller: FormlyFieldController,\n\t\t link: fieldLink\n\t\t };\n\t\n\t\t // @ngInject\n\t\t function FormlyFieldController($scope, $timeout, $parse, $controller) {\n\t\t /* jshint maxstatements:31 */\n\t\t if ($scope.options.fieldGroup) {\n\t\t setupFieldGroup();\n\t\t return;\n\t\t }\n\t\n\t\t var fieldType = getFieldType($scope.options);\n\t\t simplifyLife($scope.options);\n\t\t mergeFieldOptionsWithTypeDefaults($scope.options, fieldType);\n\t\t extendOptionsWithDefaults($scope.options, $scope.index);\n\t\t checkApi($scope.options);\n\t\t // set field id to link labels and fields\n\t\n\t\t // initalization\n\t\t setFieldId();\n\t\t setDefaultValue();\n\t\t setInitialValue();\n\t\t runExpressions();\n\t\t addModelWatcher($scope, $scope.options);\n\t\t addValidationMessages($scope.options);\n\t\t invokeControllers($scope, $scope.options, fieldType);\n\t\n\t\t // function definitions\n\t\t function runExpressions() {\n\t\t // must run on next tick to make sure that the current value is correct.\n\t\t $timeout(function runExpressionsOnNextTick() {\n\t\t var field = $scope.options;\n\t\t var currentValue = valueGetterSetter();\n\t\t angular.forEach(field.expressionProperties, function runExpression(expression, prop) {\n\t\t var setter = $parse(prop).assign;\n\t\t var promise = $q.when(formlyUtil.formlyEval($scope, expression, currentValue));\n\t\t promise.then(function setFieldValue(value) {\n\t\t setter(field, value);\n\t\t });\n\t\t });\n\t\t });\n\t\t }\n\t\n\t\t function valueGetterSetter(newVal) {\n\t\t if (!$scope.model || !$scope.options.key) {\n\t\t return;\n\t\t }\n\t\t if (angular.isDefined(newVal)) {\n\t\t $scope.model[$scope.options.key] = newVal;\n\t\t }\n\t\t return $scope.model[$scope.options.key];\n\t\t }\n\t\n\t\t function simplifyLife(options) {\n\t\t // add a few empty objects (if they don't already exist) so you don't have to undefined check everywhere\n\t\t formlyUtil.reverseDeepMerge(options, {\n\t\t data: {},\n\t\t templateOptions: {},\n\t\t validation: {}\n\t\t });\n\t\t // create $scope.to so template authors can reference to instead of $scope.options.templateOptions\n\t\t $scope.to = $scope.options.templateOptions;\n\t\t }\n\t\n\t\t function setFieldId() {\n\t\t if (angular.isFunction(formlyConfig.extras.getFieldId)) {\n\t\t $scope.id = formlyConfig.extras.getFieldId($scope.options, $scope.model, $scope);\n\t\t } else {\n\t\t var formName = $scope.form && $scope.form.$name || $scope.formId;\n\t\t $scope.id = formlyUtil.getFieldId(formName, $scope.options, $scope.index);\n\t\t }\n\t\t $scope.options.id = $scope.id;\n\t\t }\n\t\n\t\t function setDefaultValue() {\n\t\t if (angular.isDefined($scope.options.defaultValue) && !angular.isDefined($scope.model[$scope.options.key])) {\n\t\t $scope.model[$scope.options.key] = $scope.options.defaultValue;\n\t\t }\n\t\t }\n\t\n\t\t function setInitialValue() {\n\t\t $scope.options.initialValue = $scope.model && $scope.model[$scope.options.key];\n\t\t }\n\t\n\t\t function mergeFieldOptionsWithTypeDefaults(options, type) {\n\t\t if (type) {\n\t\t mergeOptions(options, type.defaultOptions);\n\t\t }\n\t\t var properOrder = arrayify(options.optionsTypes).reverse(); // so the right things are overridden\n\t\t angular.forEach(properOrder, function (typeName) {\n\t\t mergeOptions(options, formlyConfig.getType(typeName, true, options).defaultOptions);\n\t\t });\n\t\t }\n\t\n\t\t function mergeOptions(options, extraOptions) {\n\t\t if (extraOptions) {\n\t\t if (angular.isFunction(extraOptions)) {\n\t\t extraOptions = extraOptions(options);\n\t\t }\n\t\t formlyUtil.reverseDeepMerge(options, extraOptions);\n\t\t }\n\t\t }\n\t\n\t\t function extendOptionsWithDefaults(options, index) {\n\t\t var key = options.key || index || 0;\n\t\t angular.extend(options, {\n\t\t // attach the key in case the formly-field directive is used directly\n\t\t key: key,\n\t\t value: valueGetterSetter,\n\t\t runExpressions: runExpressions,\n\t\t resetModel: resetModel,\n\t\t updateInitialValue: updateInitialValue\n\t\t });\n\t\t }\n\t\n\t\t // initialization functions\n\t\t function addModelWatcher(scope, options) {\n\t\t if (options.model) {\n\t\t scope.$watch(\"options.model\", runExpressions, true);\n\t\t }\n\t\t }\n\t\n\t\t function resetModel() {\n\t\t $scope.model[$scope.options.key] = $scope.options.initialValue;\n\t\t if ($scope.options.formControl) {\n\t\t $scope.options.formControl.$setViewValue($scope.model[$scope.options.key]);\n\t\t $scope.options.formControl.$render();\n\t\t $scope.options.formControl.$setUntouched();\n\t\t $scope.options.formControl.$setPristine();\n\t\t }\n\t\t }\n\t\n\t\t function updateInitialValue() {\n\t\t $scope.options.initialValue = $scope.model[$scope.options.key];\n\t\t }\n\t\n\t\t function addValidationMessages(options) {\n\t\t options.validation.messages = options.validation.messages || {};\n\t\t angular.forEach(formlyValidationMessages.messages, function createFunctionForMessage(expression, name) {\n\t\t if (!options.validation.messages[name]) {\n\t\t options.validation.messages[name] = function evaluateMessage(viewValue, modelValue, scope) {\n\t\t return formlyUtil.formlyEval(scope, expression, modelValue, viewValue);\n\t\t };\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function invokeControllers(scope) {\n\t\t var options = arguments[1] === undefined ? {} : arguments[1];\n\t\t var type = arguments[2] === undefined ? {} : arguments[2];\n\t\n\t\t angular.forEach([type.controller, options.controller], function (controller) {\n\t\t if (controller) {\n\t\t $controller(controller, { $scope: scope });\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function setupFieldGroup() {\n\t\t $scope.options.options = $scope.options.options || {};\n\t\t $scope.options.options.formState = $scope.formState;\n\t\t }\n\t\t }\n\t\n\t\t // link function\n\t\t function fieldLink(scope, el) {\n\t\t if (scope.options.fieldGroup) {\n\t\t setFieldGroupTemplate();\n\t\t return;\n\t\t }\n\t\n\t\t addAttributes();\n\t\t addClasses();\n\t\n\t\t var type = getFieldType(scope.options);\n\t\t var args = arguments;\n\t\t var thusly = this;\n\t\t getFieldTemplate(scope.options).then(runManipulators(formlyConfig.templateManipulators.preWrapper)).then(transcludeInWrappers(scope.options)).then(runManipulators(formlyConfig.templateManipulators.postWrapper)).then(setElementTemplate).then(watchFormControl).then(callLinkFunctions)[\"catch\"](function (error) {\n\t\t formlyWarn(\"there-was-a-problem-setting-the-template-for-this-field\", \"There was a problem setting the template for this field \", scope.options, error);\n\t\t });\n\t\n\t\t function setFieldGroupTemplate() {\n\t\t checkFieldGroupApi(scope.options);\n\t\t el.addClass(\"formly-field-group\");\n\t\t var extraAttributes = \"\";\n\t\t if (scope.options.elementAttributes) {\n\t\t extraAttributes = Object.keys(scope.options.elementAttributes).map(function (key) {\n\t\t return \"\" + key + \"=\\\"\" + scope.options.elementAttributes[key] + \"\\\"\";\n\t\t }).join(\" \");\n\t\t }\n\t\t setElementTemplate(\"\\n \\n \\n \");\n\t\t }\n\t\n\t\t function addAttributes() {\n\t\t if (scope.options.elementAttributes) {\n\t\t el.attr(scope.options.elementAttributes);\n\t\t }\n\t\t }\n\t\n\t\t function addClasses() {\n\t\t if (scope.options.className) {\n\t\t el.addClass(scope.options.className);\n\t\t }\n\t\t if (scope.options.type) {\n\t\t el.addClass(\"formly-field-\" + scope.options.type);\n\t\t }\n\t\t }\n\t\n\t\t function setElementTemplate(templateString) {\n\t\t el.html(asHtml(templateString));\n\t\t $compile(el.contents())(scope);\n\t\t return templateString;\n\t\t }\n\t\n\t\t function watchFormControl(templateString) {\n\t\t var stopWatchingField = angular.noop;\n\t\t var stopWatchingShowError = angular.noop;\n\t\t if (scope.options.noFormControl) {\n\t\t return;\n\t\t }\n\t\t var templateEl = angular.element(\"\" + templateString + \"
\");\n\t\t var ngModelNode = templateEl[0].querySelector(\"[ng-model],[data-ng-model]\");\n\t\t if (ngModelNode && ngModelNode.getAttribute(\"name\")) {\n\t\t watchFieldNameOrExistence(ngModelNode.getAttribute(\"name\"));\n\t\t }\n\t\n\t\t function watchFieldNameOrExistence(name) {\n\t\t var nameExpressionRegex = /\\{\\{(.*?)}}/;\n\t\t var nameExpression = nameExpressionRegex.exec(name);\n\t\t if (nameExpression) {\n\t\t watchFieldName(nameExpression[1]);\n\t\t } else {\n\t\t watchFieldExistence(name);\n\t\t }\n\t\t }\n\t\n\t\t function watchFieldName(expression) {\n\t\t scope.$watch(expression, function oneFieldNameChange(name) {\n\t\t if (name) {\n\t\t stopWatchingField();\n\t\t watchFieldExistence(name);\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function watchFieldExistence(name) {\n\t\t stopWatchingField = scope.$watch(\"form[\\\"\" + name + \"\\\"]\", function formControlChange(formControl) {\n\t\t if (formControl) {\n\t\t scope.fc = formControl; // shortcut for template authors\n\t\t scope.options.formControl = formControl;\n\t\t stopWatchingShowError();\n\t\t addShowMessagesWatcher();\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function addShowMessagesWatcher() {\n\t\t stopWatchingShowError = scope.$watch(function watchShowValidationChange() {\n\t\t var customExpression = formlyConfig.extras.errorExistsAndShouldBeVisibleExpression;\n\t\t var options = scope.options;\n\t\t var fc = scope.fc;\n\t\n\t\t if (!fc.$invalid) {\n\t\t return false;\n\t\t } else if (typeof options.validation.show === \"boolean\") {\n\t\t return options.validation.show;\n\t\t } else if (customExpression) {\n\t\t return formlyUtil.formlyEval(scope, customExpression, fc.$modelValue, fc.$viewValue);\n\t\t } else {\n\t\t var noTouchedButDirty = angular.isUndefined(fc.$touched) && fc.$dirty;\n\t\t return scope.fc.$touched || noTouchedButDirty;\n\t\t }\n\t\t }, function onShowValidationChange(show) {\n\t\t scope.options.validation.errorExistsAndShouldBeVisible = show;\n\t\t scope.showError = show; // shortcut for template authors\n\t\t });\n\t\t }\n\t\t }\n\t\n\t\t function callLinkFunctions() {\n\t\t if (type && type.link) {\n\t\t type.link.apply(thusly, args);\n\t\t }\n\t\t if (scope.options.link) {\n\t\t scope.options.link.apply(thusly, args);\n\t\t }\n\t\t }\n\t\n\t\t function runManipulators(manipulators) {\n\t\t return function runManipulatorsOnTemplate(template) {\n\t\t var chain = $q.when(template);\n\t\t angular.forEach(manipulators, function (manipulator) {\n\t\t chain = chain.then(function (template) {\n\t\t return $q.when(manipulator(template, scope.options, scope)).then(function (newTemplate) {\n\t\t return angular.isString(newTemplate) ? newTemplate : asHtml(newTemplate);\n\t\t });\n\t\t });\n\t\t });\n\t\t return chain;\n\t\t };\n\t\t }\n\t\t }\n\t\n\t\t // stateless util functions\n\t\t function asHtml(el) {\n\t\t var wrapper = angular.element(\" \");\n\t\t return wrapper.append(el).html();\n\t\t }\n\t\n\t\t function getFieldType(options) {\n\t\t return options.type && formlyConfig.getType(options.type);\n\t\t }\n\t\n\t\t function getFieldTemplate(options) {\n\t\t function fromOptionsOrType(key, type) {\n\t\t if (angular.isDefined(options[key])) {\n\t\t return options[key];\n\t\t } else if (type && angular.isDefined(type[key])) {\n\t\t return type[key];\n\t\t }\n\t\t }\n\t\n\t\t var type = formlyConfig.getType(options.type, true, options);\n\t\t var template = fromOptionsOrType(\"template\", type);\n\t\t var templateUrl = fromOptionsOrType(\"templateUrl\", type);\n\t\t if (angular.isUndefined(template) && !templateUrl) {\n\t\t throw formlyUsability.getFieldError(\"type-type-has-no-template\", \"Type '\" + options.type + \"' has not template. On element:\", options);\n\t\t }\n\t\n\t\t return getTemplate(templateUrl || template, angular.isUndefined(template), options);\n\t\t }\n\t\n\t\t function getTemplate(template, isUrl, options) {\n\t\t var templatePromise = undefined;\n\t\t if (angular.isFunction(template)) {\n\t\t templatePromise = $q.when(template(options));\n\t\t } else {\n\t\t templatePromise = $q.when(template);\n\t\t }\n\t\n\t\t if (!isUrl) {\n\t\t return templatePromise;\n\t\t } else {\n\t\t var _ret = (function () {\n\t\t var httpOptions = { cache: $templateCache };\n\t\t return {\n\t\t v: templatePromise.then(function (url) {\n\t\t return $http.get(url, httpOptions);\n\t\t }).then(function (response) {\n\t\t return response.data;\n\t\t })[\"catch\"](function handleErrorGettingATemplate(error) {\n\t\t formlyWarn(\"problem-loading-template-for-templateurl\", \"Problem loading template for \" + template, error);\n\t\t })\n\t\t };\n\t\t })();\n\t\n\t\t if (typeof _ret === \"object\") {\n\t\t return _ret.v;\n\t\t }\n\t\t }\n\t\t }\n\t\n\t\t function transcludeInWrappers(options) {\n\t\t var wrapper = getWrapperOption(options);\n\t\n\t\t return function transcludeTemplate(template) {\n\t\t if (!wrapper.length) {\n\t\t return $q.when(template);\n\t\t }\n\t\n\t\t wrapper.forEach(function (wrapper) {\n\t\t formlyUsability.checkWrapper(wrapper, options);\n\t\t wrapper.validateOptions && wrapper.validateOptions(options);\n\t\t runApiCheck(wrapper, options);\n\t\t });\n\t\t var promises = wrapper.map(function (w) {\n\t\t return getTemplate(w.template || w.templateUrl, !w.template);\n\t\t });\n\t\t return $q.all(promises).then(function (wrappersTemplates) {\n\t\t wrappersTemplates.forEach(function (wrapperTemplate, index) {\n\t\t formlyUsability.checkWrapperTemplate(wrapperTemplate, wrapper[index]);\n\t\t });\n\t\t wrappersTemplates.reverse(); // wrapper 0 is wrapped in wrapper 1 and so on...\n\t\t var totalWrapper = wrappersTemplates.shift();\n\t\t wrappersTemplates.forEach(function (wrapperTemplate) {\n\t\t totalWrapper = doTransclusion(totalWrapper, wrapperTemplate);\n\t\t });\n\t\t return doTransclusion(totalWrapper, template);\n\t\t });\n\t\t };\n\t\t }\n\t\n\t\t function doTransclusion(wrapper, template) {\n\t\t var superWrapper = angular.element(\" \"); // this allows people not have to have a single root in wrappers\n\t\t superWrapper.append(wrapper);\n\t\t var transcludeEl = superWrapper.find(\"formly-transclude\");\n\t\t if (!transcludeEl.length) {\n\t\t //try it using our custom find function\n\t\t transcludeEl = formlyUtil.findByNodeName(superWrapper, \"formly-transclude\");\n\t\t }\n\t\t transcludeEl.replaceWith(template);\n\t\t return superWrapper.html();\n\t\t }\n\t\n\t\t function getWrapperOption(options) {\n\t\t var wrapper = options.wrapper;\n\t\t // explicit null means no wrapper\n\t\t if (wrapper === null) {\n\t\t return [];\n\t\t }\n\t\n\t\t // nothing specified means use the default wrapper for the type\n\t\t if (!wrapper) {\n\t\t // get all wrappers that specify they apply to this type\n\t\t wrapper = arrayify(formlyConfig.getWrapperByType(options.type));\n\t\t } else {\n\t\t wrapper = arrayify(wrapper).map(formlyConfig.getWrapper);\n\t\t }\n\t\n\t\t // get all wrappers for that this type specified that it uses.\n\t\t var type = formlyConfig.getType(options.type, true, options);\n\t\t if (type && type.wrapper) {\n\t\t var typeWrappers = arrayify(type.wrapper).map(formlyConfig.getWrapper);\n\t\t wrapper = wrapper.concat(typeWrappers);\n\t\t }\n\t\n\t\t // add the default wrapper last\n\t\t var defaultWrapper = formlyConfig.getWrapper();\n\t\t if (defaultWrapper) {\n\t\t wrapper.push(defaultWrapper);\n\t\t }\n\t\t return wrapper;\n\t\t }\n\t\n\t\t function checkApi(options) {\n\t\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyFieldOptions, options, {\n\t\t prefix: \"formly-field directive\",\n\t\t url: \"formly-field-directive-validation-failed\"\n\t\t });\n\t\t // validate with the type\n\t\t var type = options.type && formlyConfig.getType(options.type);\n\t\t if (type) {\n\t\t if (type.validateOptions) {\n\t\t type.validateOptions(options);\n\t\t }\n\t\t runApiCheck(type, options);\n\t\t }\n\t\t }\n\t\n\t\t function checkFieldGroupApi(options) {\n\t\t formlyApiCheck[\"throw\"](formlyApiCheck.fieldGroup, options, {\n\t\t prefix: \"formly-field directive\",\n\t\t url: \"formly-field-directive-validation-failed\"\n\t\t });\n\t\t }\n\t\n\t\t function runApiCheck(_ref, options) {\n\t\t var apiCheck = _ref.apiCheck;\n\t\t var apiCheckInstance = _ref.apiCheckInstance;\n\t\t var apiCheckFunction = _ref.apiCheckFunction;\n\t\t var apiCheckOptions = _ref.apiCheckOptions;\n\t\n\t\t if (!apiCheck) {\n\t\t return;\n\t\t }\n\t\t var instance = apiCheckInstance || formlyApiCheck;\n\t\t var fn = apiCheckFunction || \"warn\";\n\t\t var shape = instance.shape(apiCheck);\n\t\t instance[fn](shape, options, apiCheckOptions || {\n\t\t prefix: \"formly-field \" + name,\n\t\t url: formlyApiCheck.config.output.docsBaseUrl + \"formly-field-type-apicheck-failed\"\n\t\t });\n\t\t }\n\t\t}\n\t\tformlyField.$inject = [\"$http\", \"$q\", \"$compile\", \"$templateCache\", \"formlyConfig\", \"formlyValidationMessages\", \"formlyApiCheck\", \"formlyUtil\", \"formlyUsability\", \"formlyWarn\"];\n\t\n\t/***/ },\n\t/* 11 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tmodule.exports = formlyFocus;\n\t\n\t\t// @ngInject\n\t\tfunction formlyFocus($timeout, $document) {\n\t\t /* jshint -W052 */\n\t\t return {\n\t\t restrict: \"A\",\n\t\t link: function formlyFocusLink(scope, element, attrs) {\n\t\t var previousEl = null;\n\t\t var el = element[0];\n\t\t var doc = $document[0];\n\t\t attrs.$observe(\"formlyFocus\", function respondToFocusExpressionChange(value) {\n\t\t if (value === \"true\") {\n\t\t $timeout(function setElementFocus() {\n\t\t previousEl = doc.activeElement;\n\t\t el.focus();\n\t\t }, ~ ~attrs.focusWait);\n\t\t } else if (value === \"false\") {\n\t\t if (doc.activeElement === el) {\n\t\t el.blur();\n\t\t if (attrs.hasOwnProperty(\"refocus\") && previousEl) {\n\t\t previousEl.focus();\n\t\t }\n\t\t }\n\t\t }\n\t\t });\n\t\t }\n\t\t };\n\t\t}\n\t\tformlyFocus.$inject = [\"$timeout\", \"$document\"];\n\t\n\t/***/ },\n\t/* 12 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\t\n\t\tvar _slice = Array.prototype.slice;\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(15));\n\t\n\t\tmodule.exports = formlyForm;\n\t\n\t\t/**\n\t\t * @ngdoc directive\n\t\t * @name formlyForm\n\t\t * @restrict E\n\t\t */\n\t\t// @ngInject\n\t\tfunction formlyForm(formlyUsability, $parse, formlyApiCheck, formlyConfig) {\n\t\t var currentFormId = 1;\n\t\t return {\n\t\t restrict: \"E\",\n\t\t template: function formlyFormGetTemplate(el, attrs) {\n\t\t /* jshint -W033 */ // this because jshint is broken I guess...\n\t\t var rootEl = getRootEl();\n\t\t var fieldRootEl = getFieldRootEl();\n\t\t var formId = \"formly_\" + currentFormId++;\n\t\t var parentFormAttributes = \"\";\n\t\t if (attrs.hasOwnProperty(\"isFieldGroup\") && el.parent().parent().hasClass(\"formly\")) {\n\t\t parentFormAttributes = copyAttributes(el.parent().parent()[0].attributes);\n\t\t }\n\t\t return \"\\n <\" + rootEl + \" class=\\\"formly\\\"\\n name=\\\"\" + getFormName() + \"\\\"\\n role=\\\"form\\\" \" + parentFormAttributes + \">\\n <\" + fieldRootEl + \" formly-field\\n ng-repeat=\\\"field in fields \" + getTrackBy() + \"\\\"\\n \" + getHideDirective() + \"=\\\"!field.hide\\\"\\n class=\\\"formly-field\\\"\\n options=\\\"field\\\"\\n model=\\\"field.model || model\\\"\\n fields=\\\"fields\\\"\\n form=\\\"theFormlyForm\\\"\\n form-id=\\\"\" + getFormName() + \"\\\"\\n form-state=\\\"options.formState\\\"\\n index=\\\"$index\\\">\\n \" + fieldRootEl + \">\\n
\\n \" + rootEl + \">\\n \";\n\t\n\t\t function getRootEl() {\n\t\t return attrs.rootEl || \"ng-form\";\n\t\t }\n\t\n\t\t function getFieldRootEl() {\n\t\t return attrs.fieldRootEl || \"div\";\n\t\t }\n\t\n\t\t function getHideDirective() {\n\t\t return attrs.hideDirective || formlyConfig.extras.defaultHideDirective || \"ng-if\";\n\t\t }\n\t\n\t\t function getTrackBy() {\n\t\t if (!attrs.trackBy) {\n\t\t return \"\";\n\t\t } else {\n\t\t return \"track by \" + attrs.trackBy;\n\t\t }\n\t\t }\n\t\n\t\t function getFormName() {\n\t\t var formName = formId;\n\t\t var bindName = attrs.bindName;\n\t\t if (bindName) {\n\t\t if (angular.version.minor < 3) {\n\t\t throw formlyUsability.getFormlyError(\"bind-name attribute on formly-form not allowed in > angular 1.3\");\n\t\t }\n\t\t // we can do a one-time binding here because we know we're in 1.3.x territory\n\t\t formName = \"{{::'formly_' + \" + bindName + \"}}\";\n\t\t }\n\t\t return formName;\n\t\t }\n\t\n\t\t function copyAttributes(attributes) {\n\t\t var excluded = [\"model\", \"form\", \"fields\", \"options\", \"name\", \"role\", \"class\"];\n\t\t var arrayAttrs = [];\n\t\t angular.forEach(attributes, function (_ref) {\n\t\t var nodeName = _ref.nodeName;\n\t\t var nodeValue = _ref.nodeValue;\n\t\n\t\t if (nodeName !== \"undefined\" && excluded.indexOf(nodeName) === -1) {\n\t\t arrayAttrs.push(\"\" + toKebabCase(nodeName) + \"=\\\"\" + nodeValue + \"\\\"\");\n\t\t }\n\t\t });\n\t\t return arrayAttrs.join(\" \");\n\t\t }\n\t\n\t\t function toKebabCase(string) {\n\t\t if (string) {\n\t\t return string.replace(/([A-Z])/g, function ($1) {\n\t\t return \"-\" + $1.toLowerCase();\n\t\t });\n\t\t } else {\n\t\t return \"\";\n\t\t }\n\t\t }\n\t\t },\n\t\t replace: true,\n\t\t transclude: true,\n\t\t scope: {\n\t\t fields: \"=\",\n\t\t model: \"=\",\n\t\t form: \"=?\",\n\t\t options: \"=?\"\n\t\t },\n\t\t controller: /* @ngInject */[\"$scope\", \"formlyUtil\", function FormlyFormController($scope, formlyUtil) {\n\t\t setupOptions();\n\t\t $scope.model = $scope.model || {};\n\t\t $scope.fields = $scope.fields || [];\n\t\n\t\t angular.forEach($scope.fields, initModel); // initializes the model property if set to 'formState'\n\t\t angular.forEach($scope.fields, attachKey); // attaches a key based on the index if a key isn't specified\n\t\t angular.forEach($scope.fields, setupWatchers); // setup watchers for all fields\n\t\n\t\t // watch the model and evaluate watch expressions that depend on it.\n\t\t $scope.$watch(\"model\", onModelOrFormStateChange, true);\n\t\t if ($scope.options.formState) {\n\t\t $scope.$watch(\"options.formState\", onModelOrFormStateChange, true);\n\t\t }\n\t\n\t\t function onModelOrFormStateChange() {\n\t\t angular.forEach($scope.fields, function runFieldExpressionProperties(field, index) {\n\t\t /*jshint -W030 */\n\t\t var model = field.model || $scope.model;\n\t\t field.runExpressions && field.runExpressions(model);\n\t\t if (field.hideExpression) {\n\t\t // can't use hide with expressionProperties reliably\n\t\t var val = model[field.key];\n\t\t // this makes it closer to what a regular expressionProperty would be\n\t\t var extraLocals = {\n\t\t options: field,\n\t\t index: index,\n\t\t formState: $scope.options.formState,\n\t\t formId: $scope.formId\n\t\t };\n\t\t field.hide = formlyUtil.formlyEval($scope, field.hideExpression, val, val, extraLocals);\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function setupOptions() {\n\t\t formlyApiCheck[\"throw\"]([formlyApiCheck.formOptionsApi.optional], [$scope.options], { prefix: \"formly-form options check\" });\n\t\t $scope.options = $scope.options || {};\n\t\t $scope.options.formState = $scope.options.formState || {};\n\t\n\t\t angular.extend($scope.options, {\n\t\t updateInitialValue: updateInitialValue,\n\t\t resetModel: resetModel\n\t\t });\n\t\t }\n\t\n\t\t function updateInitialValue() {\n\t\t angular.forEach($scope.fields, function (field) {\n\t\t if (isFieldGroup(field)) {\n\t\t field.options.updateInitialValue();\n\t\t } else {\n\t\t field.updateInitialValue();\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function resetModel() {\n\t\t angular.forEach($scope.fields, function (field) {\n\t\t if (isFieldGroup(field)) {\n\t\t field.options.resetModel();\n\t\t } else {\n\t\t field.resetModel();\n\t\t }\n\t\t });\n\t\t }\n\t\n\t\t function initModel(field) {\n\t\t if (field.model && field.model === \"formState\") {\n\t\t field.model = $scope.options.formState;\n\t\t }\n\t\t }\n\t\n\t\t function attachKey(field, index) {\n\t\t if (!isFieldGroup(field)) {\n\t\t field.key = field.key || index || 0;\n\t\t }\n\t\t }\n\t\n\t\t function setupWatchers(field, index) {\n\t\t if (isFieldGroup(field) || !angular.isDefined(field.watcher)) {\n\t\t return;\n\t\t }\n\t\t var watchers = field.watcher;\n\t\t if (!angular.isArray(watchers)) {\n\t\t watchers = [watchers];\n\t\t }\n\t\t angular.forEach(watchers, function setupWatcher(watcher) {\n\t\t if (!angular.isDefined(watcher.listener)) {\n\t\t throw formlyUsability.getFieldError(\"all-field-watchers-must-have-a-listener\", \"All field watchers must have a listener\", field);\n\t\t }\n\t\t var watchExpression = getWatchExpression(watcher, field, index);\n\t\t var watchListener = getWatchListener(watcher, field, index);\n\t\n\t\t var type = watcher.type || \"$watch\";\n\t\t watcher.stopWatching = $scope[type](watchExpression, watchListener, watcher.watchDeep);\n\t\t });\n\t\t }\n\t\n\t\t function getWatchExpression(watcher, field, index) {\n\t\t var watchExpression = watcher.expression || \"model['\" + field.key + \"']\";\n\t\t if (angular.isFunction(watchExpression)) {\n\t\t // wrap the field's watch expression so we can call it with the field as the first arg\n\t\t // and the stop function as the last arg as a helper\n\t\t var originalExpression = watchExpression;\n\t\t watchExpression = function formlyWatchExpression() {\n\t\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t\t return originalExpression.apply(undefined, _toConsumableArray(args));\n\t\t };\n\t\t watchExpression.displayName = \"Formly Watch Expression for field for \" + field.key;\n\t\t }\n\t\t return watchExpression;\n\t\t }\n\t\n\t\t function getWatchListener(watcher, field, index) {\n\t\t var watchListener = watcher.listener;\n\t\t if (angular.isFunction(watchListener)) {\n\t\t // wrap the field's watch listener so we can call it with the field as the first arg\n\t\t // and the stop function as the last arg as a helper\n\t\t var originalListener = watchListener;\n\t\t watchListener = function formlyWatchListener() {\n\t\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t\t return originalListener.apply(undefined, _toConsumableArray(args));\n\t\t };\n\t\t watchListener.displayName = \"Formly Watch Listener for field for \" + field.key;\n\t\t }\n\t\t return watchListener;\n\t\t }\n\t\n\t\t function modifyArgs(watcher, index) {\n\t\t for (var _len = arguments.length, originalArgs = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n\t\t originalArgs[_key - 2] = arguments[_key];\n\t\t }\n\t\n\t\t return [$scope.fields[index]].concat(originalArgs, [watcher.stopWatching]);\n\t\t }\n\t\n\t\t function isFieldGroup(field) {\n\t\t return field && !!field.fieldGroup;\n\t\t }\n\t\t }],\n\t\t link: function link(scope, el, attrs) {\n\t\t var formId = attrs.name;\n\t\t scope.formId = formId;\n\t\t scope.theFormlyForm = scope[formId];\n\t\t if (attrs.form) {\n\t\t $parse(attrs.form).assign(scope.$parent, scope[formId]);\n\t\t }\n\t\n\t\t // chrome autocomplete lameness\n\t\t // see https://code.google.com/p/chromium/issues/detail?id=468153#c14\n\t\t // ლ(ಠ益ಠლ) (╯°□°)╯︵ ┻━┻ (◞‸◟;)\n\t\t var global = formlyConfig.extras.removeChromeAutoComplete === true;\n\t\t var offInstance = scope.options && scope.options.removeChromeAutoComplete === false;\n\t\t var onInstance = scope.options && scope.options.removeChromeAutoComplete === true;\n\t\t if (global && !offInstance || onInstance) {\n\t\t var input = document.createElement(\"input\");\n\t\t input.setAttribute(\"autocomplete\", \"address-level4\");\n\t\t input.setAttribute(\"hidden\", true);\n\t\t el[0].appendChild(input);\n\t\t }\n\t\t }\n\t\t };\n\t\t}\n\t\tformlyForm.$inject = [\"formlyUsability\", \"$parse\", \"formlyApiCheck\", \"formlyConfig\"];\n\t\n\t/***/ },\n\t/* 13 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(15));\n\t\n\t\tmodule.exports = addFormlyNgModelAttrsManipulator;\n\t\n\t\t// @ngInject\n\t\tfunction addFormlyNgModelAttrsManipulator(formlyConfig) {\n\t\t if (formlyConfig.extras.disableNgModelAttrsManipulator) {\n\t\t return;\n\t\t }\n\t\t formlyConfig.templateManipulators.preWrapper.push(ngModelAttrsManipulator);\n\t\n\t\t function ngModelAttrsManipulator(template, options, scope) {\n\t\t /* jshint maxcomplexity:6 */\n\t\t var el = document.createElement(\"div\");\n\t\t var data = options.data;\n\t\t if (data.skipNgModelAttrsManipulator === true) {\n\t\t return template;\n\t\t }\n\t\t el.innerHTML = template;\n\t\t var modelNodes = el.querySelectorAll(\"[ng-model], [data-ng-model]\");\n\t\t if (!modelNodes || !modelNodes.length) {\n\t\t return template;\n\t\t }\n\t\n\t\t addIfNotPresent(modelNodes, \"id\", scope.id);\n\t\t addIfNotPresent(modelNodes, \"name\", scope.id);\n\t\n\t\t addValidation();\n\t\t addModelOptions();\n\t\t addTemplateOptionsAttrs();\n\t\n\t\t return el.innerHTML;\n\t\n\t\t function addValidation() {\n\t\t if (angular.isDefined(options.validators) || angular.isDefined(options.validation.messages)) {\n\t\t addIfNotPresent(modelNodes, \"formly-custom-validation\", \"\");\n\t\t }\n\t\t }\n\t\n\t\t function addModelOptions() {\n\t\t if (angular.isDefined(options.modelOptions)) {\n\t\t addIfNotPresent(modelNodes, \"ng-model-options\", \"options.modelOptions\");\n\t\t if (options.modelOptions.getterSetter) {\n\t\t angular.forEach(modelNodes, function (node) {\n\t\t node.setAttribute(\"ng-model\", \"options.value\");\n\t\t });\n\t\t }\n\t\t }\n\t\t }\n\t\n\t\t function addTemplateOptionsAttrs() {\n\t\t if (!options.templateOptions && !options.expressionProperties) {\n\t\t // no need to run these if there are no templateOptions or expressionProperties\n\t\t return;\n\t\t }\n\t\t var to = options.templateOptions || {};\n\t\t var ep = options.expressionProperties || {};\n\t\n\t\t var ngModelAttributes = getBuiltInAttributes();\n\t\n\t\t // extend with the user's specifications winning\n\t\t angular.extend(ngModelAttributes, options.ngModelAttrs);\n\t\n\t\t // Feel free to make this more simple :-)\n\t\t angular.forEach(ngModelAttributes, function (val, name) {\n\t\t /* jshint maxcomplexity:14 */\n\t\t var attrVal = undefined;\n\t\t var attrName = undefined;\n\t\t var ref = \"options.templateOptions['\" + name + \"']\";\n\t\t var toVal = to[name];\n\t\t var epVal = getEpValue(ep, name);\n\t\n\t\t var inTo = angular.isDefined(toVal);\n\t\t var inEp = angular.isDefined(epVal);\n\t\t if (val.value) {\n\t\t // I realize this looks backwards, but it's right, trust me...\n\t\t attrName = val.value;\n\t\t attrVal = name;\n\t\t } else if (val.expression && inTo) {\n\t\t attrName = val.expression;\n\t\t if (angular.isString(to[name])) {\n\t\t attrVal = \"$eval(\" + ref + \")\";\n\t\t } else if (angular.isFunction(to[name])) {\n\t\t attrVal = \"\" + ref + \"(model[options.key], options, this, $event)\";\n\t\t } else {\n\t\t throw new Error(\"options.templateOptions.\" + name + \" must be a string or function: \" + JSON.stringify(options));\n\t\t }\n\t\t } else if (val.bound && inEp) {\n\t\t attrName = val.bound;\n\t\t attrVal = ref;\n\t\t } else if ((val.attribute || val.boolean) && inEp) {\n\t\t attrName = val.attribute || val.boolean;\n\t\t attrVal = \"{{\" + ref + \"}}\";\n\t\t } else if (val.attribute && inTo) {\n\t\t attrName = val.attribute;\n\t\t attrVal = toVal;\n\t\t } else if (val.boolean) {\n\t\t if (inTo && !inEp && toVal) {\n\t\t attrName = val.boolean;\n\t\t attrVal = true;\n\t\t } else {}\n\t\t } else if (val.bound && inTo) {\n\t\t attrName = val.bound;\n\t\t attrVal = ref;\n\t\t }\n\t\n\t\t if (angular.isDefined(attrName) && angular.isDefined(attrVal)) {\n\t\t addIfNotPresent(modelNodes, attrName, attrVal);\n\t\t }\n\t\t });\n\t\t }\n\t\t }\n\t\n\t\t // Utility functions\n\t\t function getBuiltInAttributes() {\n\t\t var ngModelAttributes = {\n\t\t focus: {\n\t\t attribute: \"formly-focus\"\n\t\t }\n\t\t };\n\t\t var boundOnly = [];\n\t\t var bothBooleanAndBound = [\"required\", \"disabled\"];\n\t\t var bothAttributeAndBound = [\"pattern\", \"minlength\"];\n\t\t var expressionOnly = [\"change\", \"keydown\", \"keyup\", \"keypress\", \"click\", \"focus\", \"blur\"];\n\t\t var attributeOnly = [\"placeholder\", \"min\", \"max\", \"tabindex\", \"type\"];\n\t\t if (formlyConfig.extras.ngModelAttrsManipulatorPreferUnbound) {\n\t\t bothAttributeAndBound.push(\"maxlength\");\n\t\t } else {\n\t\t boundOnly.push(\"maxlength\");\n\t\t }\n\t\n\t\t angular.forEach(boundOnly, function (item) {\n\t\t ngModelAttributes[item] = { bound: \"ng-\" + item };\n\t\t });\n\t\n\t\t angular.forEach(bothBooleanAndBound, function (item) {\n\t\t ngModelAttributes[item] = { boolean: item, bound: \"ng-\" + item };\n\t\t });\n\t\n\t\t angular.forEach(bothAttributeAndBound, function (item) {\n\t\t ngModelAttributes[item] = { attribute: item, bound: \"ng-\" + item };\n\t\t });\n\t\n\t\t angular.forEach(expressionOnly, function (item) {\n\t\t var propName = \"on\" + item.substr(0, 1).toUpperCase() + item.substr(1);\n\t\t ngModelAttributes[propName] = { expression: \"ng-\" + item };\n\t\t });\n\t\n\t\t angular.forEach(attributeOnly, function (item) {\n\t\t ngModelAttributes[item] = { attribute: item };\n\t\t });\n\t\t return ngModelAttributes;\n\t\t }\n\t\n\t\t function getEpValue(ep, name) {\n\t\t return ep[\"templateOptions.\" + name] || ep[\"templateOptions['\" + name + \"']\"] || ep[\"templateOptions[\\\"\" + name + \"\\\"]\"];\n\t\t }\n\t\n\t\t function addIfNotPresent(nodes, attr, val) {\n\t\t angular.forEach(nodes, function (node) {\n\t\t if (!node.getAttribute(attr)) {\n\t\t node.setAttribute(attr, val);\n\t\t }\n\t\t });\n\t\t }\n\t\t}\n\t\taddFormlyNgModelAttrsManipulator.$inject = [\"formlyConfig\"];\n\t\n\t\t// jshint -W035\n\t\t// empty to illustrate that a boolean will not be added via val.bound\n\t\t// if you want it added via val.bound, then put it in expressionProperties\n\t\n\t/***/ },\n\t/* 14 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tmodule.exports = addCustomTags;\n\t\n\t\t// @ngInject\n\t\tfunction addCustomTags($document) {\n\t\t if ($document && $document.get) {\n\t\t (function () {\n\t\t //IE8 check ->\n\t\t // http://stackoverflow.com/questions/10964966/detect-ie-version-prior-to-v9-in-javascript/10965203#10965203\n\t\t var document = $document.get(0);\n\t\t var div = document.createElement(\"div\");\n\t\t div.innerHTML = \"\";\n\t\t var isIeLessThan9 = div.getElementsByTagName(\"i\").length === 1;\n\t\n\t\t if (isIeLessThan9) {\n\t\t //add the custom elements that we need for formly\n\t\t var customElements = [\"formly-field\", \"formly-form\", \"formly-custom-validation\", \"formly-focus\", \"formly-transpose\"];\n\t\t angular.forEach(customElements, function (el) {\n\t\t document.createElement(el);\n\t\t });\n\t\t }\n\t\t })();\n\t\t }\n\t\t}\n\t\taddCustomTags.$inject = [\"$document\"];\n\t\n\t/***/ },\n\t/* 15 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\t// some versions of angular don't export the angular module properly,\n\t\t// so we get it from window in this case.\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(17));\n\t\n\t\tif (!angular.version) {\n\t\t angular = window.angular;\n\t\t}\n\t\tmodule.exports = angular;\n\t\n\t/***/ },\n\t/* 16 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_16__;\n\t\n\t/***/ },\n\t/* 17 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_17__;\n\t\n\t/***/ },\n\t/* 18 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\n\t\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\t\n\t\tvar angular = _interopRequire(__webpack_require__(15));\n\t\n\t\tmodule.exports = { formlyEval: formlyEval, getFieldId: getFieldId, reverseDeepMerge: reverseDeepMerge, findByNodeName: findByNodeName, arrayify: arrayify, extendFunction: extendFunction };\n\t\n\t\tfunction formlyEval(scope, expression, $modelValue, $viewValue, extraLocals) {\n\t\t if (angular.isFunction(expression)) {\n\t\t return expression($viewValue, $modelValue, scope, extraLocals);\n\t\t } else {\n\t\t return scope.$eval(expression, angular.extend({ $viewValue: $viewValue, $modelValue: $modelValue }, extraLocals));\n\t\t }\n\t\t}\n\t\n\t\tfunction getFieldId(formId, options, index) {\n\t\t if (options.id) {\n\t\t return options.id;\n\t\t }\n\t\t var type = options.type;\n\t\t if (!type && options.template) {\n\t\t type = \"template\";\n\t\t } else if (!type && options.templateUrl) {\n\t\t type = \"templateUrl\";\n\t\t }\n\t\n\t\t return [formId, type, options.key, index].join(\"_\");\n\t\t}\n\t\n\t\tfunction reverseDeepMerge(dest) {\n\t\t angular.forEach(arguments, function (src, index) {\n\t\t if (!index) {\n\t\t return;\n\t\t }\n\t\t angular.forEach(src, function (val, prop) {\n\t\t if (!angular.isDefined(dest[prop])) {\n\t\t dest[prop] = angular.copy(val);\n\t\t } else if (objAndSameType(dest[prop], val)) {\n\t\t reverseDeepMerge(dest[prop], val);\n\t\t }\n\t\t });\n\t\t });\n\t\t}\n\t\n\t\tfunction objAndSameType(obj1, obj2) {\n\t\t return angular.isObject(obj1) && angular.isObject(obj2) && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2);\n\t\t}\n\t\n\t\t//recurse down a node tree to find a node with matching nodeName, for custom tags jQuery.find doesn't work in IE8\n\t\tfunction findByNodeName(el, nodeName) {\n\t\t if (!el.prop) {\n\t\t // not a jQuery or jqLite object -> wrap it\n\t\t el = angular.element(el);\n\t\t }\n\t\n\t\t if (el.prop(\"nodeName\") === nodeName.toUpperCase()) {\n\t\t return el;\n\t\t }\n\t\n\t\t var c = el.children();\n\t\t for (var i = 0; c && i < c.length; i++) {\n\t\t var node = findByNodeName(c[i], nodeName);\n\t\t if (node) {\n\t\t return node;\n\t\t }\n\t\t }\n\t\t}\n\t\n\t\tfunction arrayify(obj) {\n\t\t if (obj && !angular.isArray(obj)) {\n\t\t obj = [obj];\n\t\t } else if (!obj) {\n\t\t obj = [];\n\t\t }\n\t\t return obj;\n\t\t}\n\t\n\t\tfunction extendFunction() {\n\t\t for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t fns[_key] = arguments[_key];\n\t\t }\n\t\n\t\t return function extendedFunction() {\n\t\t var args = arguments;\n\t\t fns.forEach(function (fn) {\n\t\t return fn.apply(null, args);\n\t\t });\n\t\t };\n\t\t}\n\t\n\t/***/ }\n\t/******/ ])\n\t});\n\t;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\tmodule.exports = angular;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// angular-formly-templates-bootstrap version 4.3.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\t\n\t(function webpackUniversalModuleDefinition(root, factory) {\n\t\tif(true)\n\t\t\tmodule.exports = factory(__webpack_require__(3), __webpack_require__(2), __webpack_require__(4));\n\t\telse if(typeof define === 'function' && define.amd)\n\t\t\tdefine([\"angular-formly\", \"api-check\", \"angular\"], factory);\n\t\telse if(typeof exports === 'object')\n\t\t\texports[\"ngFormlyTemplatesBootstrap\"] = factory(require(\"angular-formly\"), require(\"api-check\"), require(\"angular\"));\n\t\telse\n\t\t\troot[\"ngFormlyTemplatesBootstrap\"] = factory(root[\"ngFormly\"], root[\"apiCheck\"], root[\"angular\"]);\n\t})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_8__) {\n\treturn /******/ (function(modules) { // webpackBootstrap\n\t/******/ \t// The module cache\n\t/******/ \tvar installedModules = {};\n\t/******/\n\t/******/ \t// The require function\n\t/******/ \tfunction __webpack_require__(moduleId) {\n\t/******/\n\t/******/ \t\t// Check if module is in cache\n\t/******/ \t\tif(installedModules[moduleId])\n\t/******/ \t\t\treturn installedModules[moduleId].exports;\n\t/******/\n\t/******/ \t\t// Create a new module (and put it into the cache)\n\t/******/ \t\tvar module = installedModules[moduleId] = {\n\t/******/ \t\t\texports: {},\n\t/******/ \t\t\tid: moduleId,\n\t/******/ \t\t\tloaded: false\n\t/******/ \t\t};\n\t/******/\n\t/******/ \t\t// Execute the module function\n\t/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t/******/\n\t/******/ \t\t// Flag the module as loaded\n\t/******/ \t\tmodule.loaded = true;\n\t/******/\n\t/******/ \t\t// Return the exports of the module\n\t/******/ \t\treturn module.exports;\n\t/******/ \t}\n\t/******/\n\t/******/\n\t/******/ \t// expose the modules object (__webpack_modules__)\n\t/******/ \t__webpack_require__.m = modules;\n\t/******/\n\t/******/ \t// expose the module cache\n\t/******/ \t__webpack_require__.c = installedModules;\n\t/******/\n\t/******/ \t// __webpack_public_path__\n\t/******/ \t__webpack_require__.p = \"\";\n\t/******/\n\t/******/ \t// Load entry module and return exports\n\t/******/ \treturn __webpack_require__(0);\n\t/******/ })\n\t/************************************************************************/\n\t/******/ ([\n\t/* 0 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tmodule.exports = __webpack_require__(11);\n\t\n\t/***/ },\n\t/* 1 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.config(addCheckboxType);\n\t\t\n\t\t function addCheckboxType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t\t var c = formlyBootstrapApiCheck;\n\t\t formlyConfigProvider.setType({\n\t\t name: 'multiCheckbox',\n\t\t template: __webpack_require__(21),\n\t\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t\t apiCheck: {\n\t\t templateOptions: c.shape({\n\t\t options: c.arrayOf(c.object),\n\t\t labelProp: c.string.optional,\n\t\t valueProp: c.string.optional\n\t\t })\n\t\t },\n\t\t defaultOptions: {\n\t\t noFormControl: false,\n\t\t ngModelAttrs: {\n\t\t required: {\n\t\t attribute: '',\n\t\t bound: ''\n\t\t }\n\t\t }\n\t\t },\n\t\t apiCheckInstance: c,\n\t\t controller: /* @ngInject */[\"$scope\", function controller($scope) {\n\t\t var to = $scope.to;\n\t\t var opts = $scope.options;\n\t\t $scope.multiCheckbox = {\n\t\t checked: [],\n\t\t change: setModel\n\t\t };\n\t\t\n\t\t // initialize the checkboxes check property\n\t\t var modelValue = $scope.model[opts.key];\n\t\t if (angular.isArray(modelValue)) {\n\t\t (function () {\n\t\t var valueProp = to.valueProp || 'value';\n\t\t angular.forEach(to.options, function (v, index) {\n\t\t $scope.multiCheckbox.checked[index] = modelValue.indexOf(v[valueProp]) !== -1;\n\t\t });\n\t\t })();\n\t\t }\n\t\t\n\t\t function checkValidity(expressionValue) {\n\t\t var valid = angular.isArray($scope.model[opts.key]) && $scope.model[opts.key].length > 0 && expressionValue;\n\t\t\n\t\t $scope.fc.$setValidity('required', valid);\n\t\t }\n\t\t\n\t\t function setModel() {\n\t\t $scope.model[opts.key] = [];\n\t\t angular.forEach($scope.multiCheckbox.checked, function (checkbox, index) {\n\t\t if (checkbox) {\n\t\t $scope.model[opts.key].push(to.options[index][to.valueProp || 'value']);\n\t\t }\n\t\t });\n\t\t\n\t\t // Must make sure we mark as touched because only the last checkbox due to a bug in angular.\n\t\t $scope.fc.$setTouched();\n\t\t checkValidity(true);\n\t\t }\n\t\t\n\t\t if (opts.expressionProperties && opts.expressionProperties.required) {\n\t\t $scope.$watch($scope.options.expressionProperties.required, function (newValue) {\n\t\t checkValidity(newValue);\n\t\t });\n\t\t }\n\t\t\n\t\t if ($scope.to.required) {\n\t\t var unwatchFormControl = $scope.$watch('fc', function (newValue) {\n\t\t if (!newValue) {\n\t\t return;\n\t\t }\n\t\t checkValidity(true);\n\t\t unwatchFormControl;\n\t\t });\n\t\t }\n\t\t }]\n\t\t });\n\t\t }\n\t\t addCheckboxType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 2 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\t\n\t/***/ },\n\t/* 3 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\t\n\t/***/ },\n\t/* 4 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t// some versions of angular don't export the angular module properly,\n\t\t// so we get it from window in this case.\n\t\t'use strict';\n\t\t\n\t\tvar angular = __webpack_require__(8);\n\t\tif (!angular.version) {\n\t\t angular = window.angular;\n\t\t}\n\t\tmodule.exports = angular;\n\t\n\t/***/ },\n\t/* 5 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.config(addWrappers);\n\t\t\n\t\t function addWrappers(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t\t var c = formlyBootstrapApiCheck;\n\t\t formlyConfigProvider.setWrapper([{\n\t\t name: 'bootstrapLabel',\n\t\t template: __webpack_require__(17),\n\t\t apiCheck: {\n\t\t templateOptions: c.shape({\n\t\t label: c.string,\n\t\t required: c.bool.optional\n\t\t })\n\t\t },\n\t\t apiCheckInstance: c\n\t\t }, { name: 'bootstrapHasError', template: __webpack_require__(18) }]);\n\t\t }\n\t\t addWrappers.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 6 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t __webpack_require__(10)(ngModule);\n\t\t __webpack_require__(1)(ngModule);\n\t\t __webpack_require__(12)(ngModule);\n\t\t __webpack_require__(9)(ngModule);\n\t\t __webpack_require__(13)(ngModule);\n\t\t __webpack_require__(14)(ngModule);\n\t\t};\n\t\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 7 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\t\n\t\tvar _addons = __webpack_require__(15);\n\t\t\n\t\tvar _addons2 = _interopRequireDefault(_addons);\n\t\t\n\t\tvar _description = __webpack_require__(16);\n\t\t\n\t\tvar _description2 = _interopRequireDefault(_description);\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t (0, _addons2['default'])(ngModule);\n\t\t (0, _description2['default'])(ngModule);\n\t\t};\n\t\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 8 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_8__;\n\t\n\t/***/ },\n\t/* 9 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.config(addRadioType);\n\t\t\n\t\t function addRadioType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t\t var c = formlyBootstrapApiCheck;\n\t\t formlyConfigProvider.setType({\n\t\t name: 'radio',\n\t\t template: __webpack_require__(19),\n\t\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t\t defaultOptions: {\n\t\t noFormControl: false\n\t\t },\n\t\t apiCheck: {\n\t\t templateOptions: c.shape({\n\t\t options: c.arrayOf(c.object),\n\t\t labelProp: c.string.optional,\n\t\t valueProp: c.string.optional\n\t\t })\n\t\t },\n\t\t apiCheckInstance: c\n\t\t });\n\t\t }\n\t\t addRadioType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 10 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.config(addCheckboxType);\n\t\t\n\t\t function addCheckboxType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t\t var c = formlyBootstrapApiCheck;\n\t\t formlyConfigProvider.setType({\n\t\t name: 'checkbox',\n\t\t template: __webpack_require__(20),\n\t\t wrapper: ['bootstrapHasError'],\n\t\t apiCheck: {\n\t\t templateOptions: c.shape({\n\t\t label: c.string\n\t\t })\n\t\t },\n\t\t apiCheckInstance: c\n\t\t });\n\t\t }\n\t\t addCheckboxType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 11 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\tvar ngModuleName = 'formlyBootstrap';\n\t\tvar angular = __webpack_require__(4);\n\t\tvar ngModule = angular.module(ngModuleName, [__webpack_require__(2)]);\n\t\tngModule.constant('formlyBootstrapApiCheck', __webpack_require__(3)({\n\t\t output: {\n\t\t prefix: 'angular-formly-bootstrap'\n\t\t }\n\t\t}));\n\t\tngModule.constant('formlyBootstrapVersion', (\"4.3.2\"));\n\t\t\n\t\t__webpack_require__(5)(ngModule);\n\t\t__webpack_require__(6)(ngModule);\n\t\t__webpack_require__(7)(ngModule);\n\t\t\n\t\texports['default'] = ngModuleName;\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 12 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.config(addInputType);\n\t\t\n\t\t function addInputType(formlyConfigProvider) {\n\t\t formlyConfigProvider.setType({\n\t\t name: 'input',\n\t\t template: ' ',\n\t\t wrapper: ['bootstrapLabel', 'bootstrapHasError']\n\t\t });\n\t\t }\n\t\t addInputType.$inject = [\"formlyConfigProvider\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 13 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\tfunction _defineProperty(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); }\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.config(addSelectType);\n\t\t\n\t\t var template = ' ';\n\t\t\n\t\t function addSelectType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t\t var c = formlyBootstrapApiCheck;\n\t\t formlyConfigProvider.setType({\n\t\t name: 'select',\n\t\t template: template,\n\t\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t\t defaultOptions: function defaultOptions(options) {\n\t\t /* jshint maxlen:195 */\n\t\t var ngOptions = options.templateOptions.ngOptions || 'option[to.valueProp || \\'value\\'] as option[to.labelProp || \\'name\\'] group by option[to.groupProp || \\'group\\'] for option in to.options';\n\t\t return {\n\t\t ngModelAttrs: _defineProperty({}, ngOptions, {\n\t\t value: 'ng-options'\n\t\t })\n\t\t };\n\t\t },\n\t\t apiCheck: {\n\t\t templateOptions: c.shape({\n\t\t options: c.arrayOf(c.object),\n\t\t labelProp: c.string.optional,\n\t\t valueProp: c.string.optional,\n\t\t groupProp: c.string.optional\n\t\t })\n\t\t },\n\t\t apiCheckInstance: c\n\t\t });\n\t\t }\n\t\t addSelectType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 14 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.config(addTextareaType);\n\t\t\n\t\t function addTextareaType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t\t var c = formlyBootstrapApiCheck;\n\t\t formlyConfigProvider.setType({\n\t\t name: 'textarea',\n\t\t template: '',\n\t\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t\t defaultOptions: {\n\t\t ngModelAttrs: {\n\t\t rows: { attribute: 'rows' },\n\t\t cols: { attribute: 'cols' }\n\t\t }\n\t\t },\n\t\t apiCheck: {\n\t\t templateOptions: c.shape({\n\t\t rows: c.number.optional,\n\t\t cols: c.number.optional\n\t\t })\n\t\t },\n\t\t apiCheckInstance: c\n\t\t });\n\t\t }\n\t\t addTextareaType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 15 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.run(addAddonsManipulator);\n\t\t\n\t\t function addAddonsManipulator(formlyConfig, formlyBootstrapApiCheck) {\n\t\t var addonTemplate = __webpack_require__(22);\n\t\t var addonChecker = formlyBootstrapApiCheck.shape({\n\t\t 'class': formlyBootstrapApiCheck.string.optional,\n\t\t text: formlyBootstrapApiCheck.string.optional,\n\t\t onClick: formlyBootstrapApiCheck.func.optional\n\t\t }).strict.optional;\n\t\t var api = formlyBootstrapApiCheck.shape({\n\t\t templateOptions: formlyBootstrapApiCheck.shape({\n\t\t addonLeft: addonChecker,\n\t\t addonRight: addonChecker\n\t\t })\n\t\t });\n\t\t formlyConfig.templateManipulators.preWrapper.push(function (template, options) {\n\t\t if (!options.templateOptions.addonLeft && !options.templateOptions.addonRight) {\n\t\t return template;\n\t\t }\n\t\t formlyBootstrapApiCheck.warn([api], [options]);\n\t\t return addonTemplate.replace(' ', template);\n\t\t });\n\t\t }\n\t\t addAddonsManipulator.$inject = [\"formlyConfig\", \"formlyBootstrapApiCheck\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 16 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\t\n\t\tObject.defineProperty(exports, '__esModule', {\n\t\t value: true\n\t\t});\n\t\t\n\t\texports['default'] = function (ngModule) {\n\t\t ngModule.run(addDescriptionManipulator);\n\t\t\n\t\t function addDescriptionManipulator(formlyConfig) {\n\t\t formlyConfig.templateManipulators.preWrapper.push(function ariaDescribedBy(template, options, scope) {\n\t\t if (angular.isDefined(options.templateOptions.description)) {\n\t\t var el = document.createElement('div');\n\t\t el.appendChild(angular.element(template)[0]);\n\t\t el.appendChild(angular.element('' + '{{to.description}}' + '
')[0]);\n\t\t var modelEls = angular.element(el.querySelectorAll('[ng-model]'));\n\t\t if (modelEls) {\n\t\t modelEls.attr('aria-describedby', scope.id + '_description');\n\t\t }\n\t\t return el.innerHTML;\n\t\t } else {\n\t\t return template;\n\t\t }\n\t\t });\n\t\t }\n\t\t addDescriptionManipulator.$inject = [\"formlyConfig\"];\n\t\t};\n\t\n\t\tmodule.exports = exports['default'];\n\t\n\t/***/ },\n\t/* 17 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = \"\\n \\n {{to.label}}\\n {{to.required ? '*' : ''}}\\n \\n \\n
\\n\"\n\t\n\t/***/ },\n\t/* 18 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = \"\\n \\n
\\n\"\n\t\n\t/***/ },\n\t/* 19 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = \"\\n
\\n \\n \\n {{option[to.labelProp || 'name']}}\\n \\n
\\n
\\n\"\n\t\n\t/***/ },\n\t/* 20 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = \"\\n\\t\\n\\t\\t \\n\\t\\t{{to.label}}\\n\\t\\t{{to.required ? '*' : ''}}\\n\\t \\n
\\n\"\n\t\n\t/***/ },\n\t/* 21 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = \"\\n
\\n \\n \\n {{option[to.labelProp || 'name']}}\\n \\n
\\n
\\n\"\n\t\n\t/***/ },\n\t/* 22 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = \"\\n
\\n \\n {{to.addonLeft.text}} \\n
\\n
\\n
\\n \\n {{to.addonRight.text}} \\n
\\n
\\n\"\n\t\n\t/***/ }\n\t/******/ ])\n\t});\n\t;\n\t//# sourceMappingURL=angular-formly-templates-bootstrap.js.map\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _edaEasyFormViewerMain = __webpack_require__(7);\n\t\n\tvar _edaEasyFormViewerMain2 = _interopRequireDefault(_edaEasyFormViewerMain);\n\t\n\tvar _edaEasyFormViewerCore = __webpack_require__(12);\n\t\n\tvar _edaEasyFormViewerCore2 = _interopRequireDefault(_edaEasyFormViewerCore);\n\t\n\tvar _edaEasyFormViewerModelTranslator = __webpack_require__(13);\n\t\n\tvar _edaEasyFormViewerModelTranslator2 = _interopRequireDefault(_edaEasyFormViewerModelTranslator);\n\t\n\tvar _formlyConfig = __webpack_require__(56);\n\t\n\tvar _formlyConfig2 = _interopRequireDefault(_formlyConfig);\n\t\n\tvar _easyFormConfig = __webpack_require__(58);\n\t\n\tvar _easyFormConfig2 = _interopRequireDefault(_easyFormConfig);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar DEP_TO_INJECT_IN_MAIN = [_edaEasyFormViewerMain2.default.name, _edaEasyFormViewerCore2.default.name, _edaEasyFormViewerModelTranslator2.default.name];\n\t\n\tvar EASY_FORM_VIEWER_VERSION_NAME = 'easyFormViewerVersion';\n\tvar EASY_FORM_VIEWER_VERSION_VALUE = _easyFormConfig2.default.formviewer.version;\n\tvar MAIN_MODULE_NAME = 'eda.easyFormViewer';\n\t\n\tvar mainModule = angular.module(MAIN_MODULE_NAME, DEP_TO_INJECT_IN_MAIN).config(_formlyConfig2.default).value(EASY_FORM_VIEWER_VERSION_NAME, EASY_FORM_VIEWER_VERSION_VALUE);\n\t\n\texports.default = mainModule;\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _edaEasyFormViewerMain = __webpack_require__(8);\n\t\n\tvar _edaEasyFormViewerMain2 = _interopRequireDefault(_edaEasyFormViewerMain);\n\t\n\tvar _edaEasyFormViewerMain3 = __webpack_require__(11);\n\t\n\tvar _edaEasyFormViewerMain4 = _interopRequireDefault(_edaEasyFormViewerMain3);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t/* global angular */\n\tvar FORM_VIEWER_MAIN_MODULE_NAME = 'edaFormViewerMainModule';\n\t\n\texports.default = angular.module(FORM_VIEWER_MAIN_MODULE_NAME, []).directive(_edaEasyFormViewerMain.EASY_FORM_VIEWER_DIRECTIVE_NAME, _edaEasyFormViewerMain2.default).controller(_edaEasyFormViewerMain3.EASY_FORM_VIEWER_CONTROLLER, _edaEasyFormViewerMain4.default);\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports.EASY_FORM_VIEWER_DIRECTIVE_NAME = undefined;\n\t\n\tvar _edaEasyFormViewerMainTemplate = __webpack_require__(9);\n\t\n\tvar _edaEasyFormViewerMainTemplate2 = _interopRequireDefault(_edaEasyFormViewerMainTemplate);\n\t\n\tvar _edaEasyFormViewerMainDirective = __webpack_require__(10);\n\t\n\tvar _edaEasyFormViewerMain = __webpack_require__(11);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar EASY_FORM_VIEWER_DIRECTIVE_NAME = 'edaEasyFormViewer'; /* global angular */\n\t\n\t\n\tfunction edaFormViewerDirective($modelsTranslator) {\n\t\tvar directive = {\n\t\t\trestrict: 'E',\n\t\t\tscope: {\n\t\t\t\tedaEasyFormViewerDataModel: '=?',\n\t\t\t\tedaEasyFormViewerEasyFormGeneratorFieldsModel: '=?',\n\t\t\t\tedaEasyFormViewerSubmitButtonText: '@?',\n\t\t\t\tedaEasyFormViewerCancelButtonText: '@?',\n\t\t\t\tedaEasyFormViewerSubmitFormEvent: '&?',\n\t\t\t\tedaEasyFormViewerCancelFormEvent: '&?'\n\t\t\t},\n\t\t\treplace: false,\n\t\t\tcontroller: _edaEasyFormViewerMain.EASY_FORM_VIEWER_CONTROLLER,\n\t\t\tcontrollerAs: _edaEasyFormViewerMain.EASY_FORM_VIEWER_CONTROLLERAS,\n\t\t\ttemplate: _edaEasyFormViewerMainTemplate2.default,\n\t\t\tlink: linkFct\n\t\t};\n\t\treturn directive;\n\t\n\t\tfunction linkFct(scope) {\n\t\t\tscope.vm.model = scope.edaEasyFormViewerDataModel;\n\t\t\tscope.vm.fields = loadFieldsModel();\n\t\t\tscope.vm.submitText = scope.edaEasyFormViewerSubmitButtonText || 'Submit';\n\t\t\tscope.vm.cancelText = scope.edaEasyFormViewerCancelButtonText || 'Cancel';\n\t\n\t\t\tscope.$watch(fieldsModelToWatch, fieldsModelWatcher, true);\n\t\t\tscope.$watch(dataModelToWatch, dataModelWatcher, true);\n\t\t\tscope.$watch(submitBtnTextToWatch, submitBtnTextWatcher);\n\t\t\tscope.$watch(cancelBtnTextToWatch, cancelBtnTextWatcher);\n\t\t\tscope.$watch(submitEventToWatch, submitEventWatcher);\n\t\t\tscope.$watch(cancelEventToWatch, cancelEventWatcher);\n\t\n\t\t\tfunction dataModelToWatch() {\n\t\t\t\treturn scope.edaEasyFormViewerDataModel;\n\t\t\t}\n\t\n\t\t\tfunction fieldsModelToWatch() {\n\t\t\t\treturn scope.edaEasyFormViewerEasyFormGeneratorFieldsModel;\n\t\t\t}\n\t\n\t\t\tfunction submitBtnTextToWatch() {\n\t\t\t\treturn scope.edaEasyFormViewerSubmitButtonText;\n\t\t\t}\n\t\n\t\t\tfunction cancelBtnTextToWatch() {\n\t\t\t\treturn scope.edaEasyFormViewerCancelButtonText;\n\t\t\t}\n\t\n\t\t\tfunction submitEventToWatch() {\n\t\t\t\treturn scope.vm.hasJustSumitted;\n\t\t\t}\n\t\n\t\t\tfunction cancelEventToWatch() {\n\t\t\t\treturn scope.vm.hasJustCancelled;\n\t\t\t}\n\t\n\t\t\tfunction fieldsModelWatcher(newFieldsModel) {\n\t\t\t\tscope.vm.fields = loadExistingConfigurationModel(newFieldsModel);\n\t\t\t}\n\t\n\t\t\tfunction submitBtnTextWatcher(newSubmitBtntext, oldSubmitBtntext) {\n\t\t\t\tif (newSubmitBtntext !== oldSubmitBtntext) {\n\t\t\t\t\tscope.vm.submitText = newSubmitBtntext || 'Submit';\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfunction cancelBtnTextWatcher(newCancelBtntext, oldCancelBtntext) {\n\t\t\t\tif (newCancelBtntext !== oldCancelBtntext) {\n\t\t\t\t\tscope.vm.cancelText = newCancelBtntext || 'Submit';\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfunction dataModelWatcher(newDataModel) {\n\t\t\t\tscope.vm.model = angular.copy(newDataModel);\n\t\t\t}\n\t\n\t\t\tfunction submitEventWatcher(newSubmitEvent) {\n\t\t\t\tif (newSubmitEvent === true) {\n\t\t\t\t\tif (angular.isFunction(scope.edaEasyFormViewerSubmitFormEvent)) {\n\t\t\t\t\t\tvar _dataModelSubmitted = scope.vm.model;\n\t\t\t\t\t\tscope.edaEasyFormViewerSubmitFormEvent({ dataModelSubmitted: _dataModelSubmitted });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tscope.vm.hasJustSumitted = false;\n\t\t\t}\n\t\n\t\t\tfunction cancelEventWatcher(newCancelEvent) {\n\t\t\t\tif (newCancelEvent === true) {\n\t\t\t\t\tif (angular.isFunction(scope.edaEasyFormViewerCancelFormEvent)) {\n\t\t\t\t\t\tscope.edaEasyFormViewerCancelFormEvent();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tscope.vm.hasJustCancelled = false;\n\t\t\t}\n\t\n\t\t\t/**\n\t \t* TODO : check if formly or easy form generato fields model\n\t \t*\n\t \t* by default or if both -> easy for generator is chosen\n\t \t*/\n\t\t\tfunction loadFieldsModel() {\n\t\t\t\tvar initialFieldsModel = angular.isArray(scope.edaEasyFormViewerEasyFormGeneratorFieldsModel) ? loadExistingConfigurationModel(scope.edaEasyFormViewerEasyFormGeneratorFieldsModel) //translate easy form generator to formly fields model\n\t\t\t\t: {};\n\t\t\t\treturn initialFieldsModel;\n\t\t\t}\n\t\n\t\t\tfunction loadExistingConfigurationModel(loadedFieldModel) {\n\t\n\t\t\t\tif (angular.isArray(loadedFieldModel)) {\n\t\t\t\t\tvar configlines = (0, _edaEasyFormViewerMainDirective.returnAttributeConfigurationLinesIfNotEmpty)(loadedFieldModel);\n\t\t\t\t\tvar formlyFieldsModel = [];\n\t\n\t\t\t\t\tscope.configurationLoaded = {};\n\t\n\t\t\t\t\t$modelsTranslator.bindConfigurationLines(scope.configurationLoaded, configlines);\n\t\t\t\t\t/**\n\t \t* rebind special control properties :\n\t \t*\n\t \t* formly expression properties\n\t \t* Validators\n\t \t* Validation\n\t \t*/\n\t\t\t\t\t$modelsTranslator.refreshControlFormlyExpressionProperties(scope.configurationLoaded);\n\t\t\t\t\t$modelsTranslator.refreshControlFormlyValidators(scope.configurationLoaded);\n\t\t\t\t\t$modelsTranslator.refreshControlFormlyValidation(scope.configurationLoaded);\n\t\n\t\t\t\t\t//apply configuration model\n\t\t\t\t\tscope.configuration = angular.copy(scope.configurationLoaded);\n\t\n\t\t\t\t\t//apply formly model\n\t\t\t\t\t$modelsTranslator.applyConfigurationToformlyModel(scope.configurationLoaded, formlyFieldsModel, scope.vm.model);\n\t\n\t\t\t\t\treturn formlyFieldsModel;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\tedaFormViewerDirective.$inject = ['$modelsTranslator'];\n\texports.default = edaFormViewerDirective;\n\texports.EASY_FORM_VIEWER_DIRECTIVE_NAME = EASY_FORM_VIEWER_DIRECTIVE_NAME;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\"\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t/* global angular */\n\t\n\tvar EMPTY_FIELD_MODEL = [{\n\t\t'line': 1,\n\t\t'activeColumn': 1,\n\t\t'columns': [{\n\t\t\t'numColumn': 1,\n\t\t\t'exist': true,\n\t\t\t'control': {\n\t\t\t\t'type': 'none',\n\t\t\t\t'key': 'none'\n\t\t\t}\n\t\t}]\n\t}];\n\t\n\t/**\n\t\t* empty fields model : to display at least an empty line\n\t\t* otherwise would look like ugly empty line like it were a bug\n\t\t*/\n\tvar emptyEdaFieldsModel = function emptyEdaFieldsModel() {\n\t\treturn angular.copy(EMPTY_FIELD_MODEL);\n\t};\n\t\n\tvar returnAttributeDataModelIfNotEmpty = function returnAttributeDataModelIfNotEmpty(edaEasyFormGeneratorModel) {\n\t\tvar dataModelToReturn = angular.isArray(edaEasyFormGeneratorModel.dataModel) ? edaEasyFormGeneratorModel.dataModel.length > 0 ? edaEasyFormGeneratorModel.dataModel : [] : [];\n\t\treturn dataModelToReturn;\n\t};\n\t\n\tvar returnAttributeConfigurationLinesIfNotEmpty = function returnAttributeConfigurationLinesIfNotEmpty(loadedFieldModel) {\n\t\tvar edaEasyFormGeneratorModelToReturn = angular.isArray(loadedFieldModel) ? loadedFieldModel.length > 0 ? loadedFieldModel : emptyEdaFieldsModel() : emptyEdaFieldsModel();\n\t\treturn edaEasyFormGeneratorModelToReturn;\n\t};\n\t\n\texports.emptyEdaFieldsModel = emptyEdaFieldsModel;\n\texports.returnAttributeDataModelIfNotEmpty = returnAttributeDataModelIfNotEmpty;\n\texports.returnAttributeConfigurationLinesIfNotEmpty = returnAttributeConfigurationLinesIfNotEmpty;\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EASY_FORM_VIEWER_CONTROLLER = 'edaEasyFormViewerCtrl';\n\tvar EASY_FORM_VIEWER_CONTROLLERAS = 'vm';\n\t\n\tvar edaEasyFormViewerController = function () {\n\t\tfunction edaEasyFormViewerController() {\n\t\t\t_classCallCheck(this, edaEasyFormViewerController);\n\t\n\t\t\tthis.init();\n\t\t}\n\t\n\t\t_createClass(edaEasyFormViewerController, [{\n\t\t\tkey: 'init',\n\t\t\tvalue: function init() {\n\t\t\t\tthis.model = {};\n\t\t\t\tthis.fields = {};\n\t\t\t\tthis.hasJustSumitted = false;\n\t\t\t\tthis.hasJustCancelled = false;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'edaSubmitThisDataModel',\n\t\t\tvalue: function edaSubmitThisDataModel() {\n\t\t\t\tthis.hasJustSumitted = true;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'edaCancelEvent',\n\t\t\tvalue: function edaCancelEvent() {\n\t\t\t\tthis.hasJustCancelled = true;\n\t\t\t}\n\t\t}]);\n\t\n\t\treturn edaEasyFormViewerController;\n\t}();\n\t\n\tedaEasyFormViewerController.$inject = [];\n\t\n\texports.default = edaEasyFormViewerController;\n\texports.EASY_FORM_VIEWER_CONTROLLER = EASY_FORM_VIEWER_CONTROLLER;\n\texports.EASY_FORM_VIEWER_CONTROLLERAS = EASY_FORM_VIEWER_CONTROLLERAS;\n\n/***/ },\n/* 12 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\tvar CORE_MODULES = ['textAngular', 'formly', 'ngAnimate', 'formlyBootstrap', 'ui.bootstrap', 'nya.bootstrap.select'];\n\t\n\tvar FORMVIEWER_CORE_MODULE_NAME = 'edaEasyFormViewerCore.module';\n\t\n\texports.default = angular.module(FORMVIEWER_CORE_MODULE_NAME, CORE_MODULES);\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\t\n\tvar _edaEasyFormViewerModelTranslator = __webpack_require__(14);\n\t\n\tvar _edaEasyFormViewerModelTranslator2 = _interopRequireDefault(_edaEasyFormViewerModelTranslator);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar FORM_VIEWER_MODEL_TRANSLATOR_MODULE_NAME = 'edaFormViewerModelTranslatorModule'; /* global angular */\n\texports.default = angular.module(FORM_VIEWER_MODEL_TRANSLATOR_MODULE_NAME, []).service(_edaEasyFormViewerModelTranslator.MODEL_TRANSLATOR_SERVICE, _edaEasyFormViewerModelTranslator2.default);\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.MODEL_TRANSLATOR_SERVICE = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _edaEasyFormViewerModelTranslatorService = __webpack_require__(15);\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar MODEL_TRANSLATOR_SERVICE = '$modelsTranslator';\n\t\n\tvar $modelsTranslator = function () {\n\t function $modelsTranslator() {\n\t _classCallCheck(this, $modelsTranslator);\n\t }\n\t\n\t _createClass($modelsTranslator, [{\n\t key: 'initNyaSelect',\n\t value: function initNyaSelect(nyaSelectObj) {\n\t return (0, _edaEasyFormViewerModelTranslatorService.resetNyaSelect)(nyaSelectObj);\n\t }\n\t\n\t /**\n\t * get all controls definition (nyaSelectObj)\n\t *\n\t * needed to bind these properties :\n\t *\n\t * formlyExpressionProperties: {},\n\t * formlyValidators: {},\n\t * formlyValidation\n\t */\n\t\n\t }, {\n\t key: 'getControlsDefinition',\n\t value: function getControlsDefinition() {\n\t var controls = {};\n\t (0, _edaEasyFormViewerModelTranslatorService.resetNyaSelect)(controls);\n\t return controls;\n\t }\n\t\n\t /**\n\t * loading forms will not be able to retrieve formlyExpressionProperties\n\t * -> here does the job\n\t */\n\t\n\t }, {\n\t key: 'refreshControlFormlyExpressionProperties',\n\t value: function refreshControlFormlyExpressionProperties(configurationModel) {\n\t var _this = this;\n\t\n\t if (angular.isObject(configurationModel)) {\n\t //iterates lines\n\t angular.forEach(configurationModel.lines, function (line) {\n\t angular.forEach(line.columns, function (column) {\n\t var _controlsDefinition = _this.getControlsDefinition();\n\t angular.forEach(_controlsDefinition.controls, function (aControl) {\n\t if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {\n\t //----> update control formlyExpressionProperties property\n\t column.control.formlyExpressionProperties = aControl.formlyExpressionProperties;\n\t }\n\t });\n\t });\n\t });\n\t }\n\t }\n\t\n\t /**\n\t * loading forms will not be able to retrieve formlyValidators\n\t * -> here does the job\n\t */\n\t\n\t }, {\n\t key: 'refreshControlFormlyValidators',\n\t value: function refreshControlFormlyValidators(configurationModel) {\n\t var _this2 = this;\n\t\n\t if (angular.isObject(configurationModel)) {\n\t //iterates lines\n\t angular.forEach(configurationModel.lines, function (line) {\n\t angular.forEach(line.columns, function (column) {\n\t var _controlsDefinition = _this2.getControlsDefinition();\n\t angular.forEach(_controlsDefinition.controls, function (aControl) {\n\t if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {\n\t //----> update control formlyValidators property\n\t column.control.formlyValidators = aControl.formlyValidators;\n\t }\n\t });\n\t });\n\t });\n\t }\n\t }\n\t\n\t /**\n\t * loading forms will not be able to retrieve formlyValidation\n\t * -> here does the job\n\t */\n\t\n\t }, {\n\t key: 'refreshControlFormlyValidation',\n\t value: function refreshControlFormlyValidation(configurationModel) {\n\t var _this3 = this;\n\t\n\t if (angular.isObject(configurationModel)) {\n\t //iterates lines\n\t angular.forEach(configurationModel.lines, function (line) {\n\t angular.forEach(line.columns, function (column) {\n\t var _controlsDefinition = _this3.getControlsDefinition();\n\t angular.forEach(_controlsDefinition.controls, function (aControl) {\n\t if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {\n\t //----> update control formlyValidation property\n\t column.control.formlyValidation = aControl.formlyValidation;\n\t }\n\t });\n\t });\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'bindConfigurationLines',\n\t value: function bindConfigurationLines(configurationModel, lines) {\n\t if (angular.isArray(lines)) {\n\t var configurationModelResult = (0, _edaEasyFormViewerModelTranslatorService.getEmptyConfigModelResult)();\n\t configurationModelResult.lines = [].concat(lines);\n\t angular.copy(configurationModelResult, configurationModel);\n\t return (0, _edaEasyFormViewerModelTranslatorService.getMessageObject)('configuration model is bound', 'lines are bound to configuration model.');\n\t } else {\n\t return (0, _edaEasyFormViewerModelTranslatorService.getErrorObject)('lines is not an array', 'Checks lines type, it is not an array.');\n\t }\n\t }\n\t }, {\n\t key: 'applyConfigurationToformlyModel',\n\t value: function applyConfigurationToformlyModel(configurationModel, formlyModel, formlyDataModel) {\n\t (0, _edaEasyFormViewerModelTranslatorService.resetFormlyModel)(formlyModel);\n\t (0, _edaEasyFormViewerModelTranslatorService.resetDataModel)(formlyDataModel);\n\t\n\t configurationModel.lines.forEach(function (line, lineIndex) {\n\t if (line.columns.length === 1) {\n\t (0, _edaEasyFormViewerModelTranslatorService.addOneColumnControl)(formlyModel, configurationModel, lineIndex);\n\t }\n\t if (line.columns.length === 2) {\n\t (0, _edaEasyFormViewerModelTranslatorService.addTwoColumnControl)(formlyModel, configurationModel, lineIndex);\n\t }\n\t if (line.columns.length === 3) {\n\t (0, _edaEasyFormViewerModelTranslatorService.addThreeColumnControl)(formlyModel, configurationModel, lineIndex);\n\t }\n\t });\n\t }\n\t }]);\n\t\n\t return $modelsTranslator;\n\t}();\n\t\n\t$modelsTranslator.$inject = [];\n\texports.default = $modelsTranslator;\n\texports.MODEL_TRANSLATOR_SERVICE = MODEL_TRANSLATOR_SERVICE;\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.addThreeColumnControl = exports.addTwoColumnControl = exports.addOneColumnControl = exports.resetFormlyModel = exports.getMessageObject = exports.getErrorObject = exports.resetDataModel = exports.getEmptyConfigModelResult = exports.getConfigurationModelInit = exports.resetNyaSelect = undefined;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _controls = __webpack_require__(16);\n\t\n\tvar _formlyProxyService = __webpack_require__(55);\n\t\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\t\n\tvar resetNyaSelect = function resetNyaSelect(nyaSelectObj) {\n\t //reset\n\t angular.copy({ controls: [].concat(_toConsumableArray(_controls.configs)) }, nyaSelectObj);\n\t return true;\n\t};\n\t\n\tvar getConfigurationModelInit = function getConfigurationModelInit() {\n\t return _extends({}, _formlyProxyService.configurationModelInit);\n\t};\n\t\n\tvar getEmptyConfigModelResult = function getEmptyConfigModelResult() {\n\t return _extends({}, _formlyProxyService.configurationModelResult);\n\t};\n\t\n\tvar resetDataModel = function resetDataModel(obj) {\n\t var emptyDataModel = {};\n\t angular.copy(emptyDataModel, obj);\n\t return true;\n\t};\n\t\n\tvar getErrorObject = function getErrorObject(errorTitle, errorMessage) {\n\t var messageObj = {\n\t noError: false,\n\t title: '',\n\t Message: ''\n\t };\n\t messageObj.noError = false;\n\t messageObj.title = errorTitle;\n\t messageObj.Message = errorMessage;\n\t return messageObj;\n\t};\n\t\n\tvar getMessageObject = function getMessageObject(messageTitle, messageBody) {\n\t var messageObj = {\n\t noError: false,\n\t title: '',\n\t Message: ''\n\t };\n\t messageObj.noError = true;\n\t messageObj.title = messageTitle;\n\t messageObj.Message = messageBody;\n\t return messageObj;\n\t};\n\t\n\tvar resetFormlyModel = function resetFormlyModel(formlyModel) {\n\t var resetformly = [];\n\t angular.copy(resetformly, formlyModel);\n\t};\n\t\n\texports.resetNyaSelect = resetNyaSelect;\n\texports.getConfigurationModelInit = getConfigurationModelInit;\n\texports.getEmptyConfigModelResult = getEmptyConfigModelResult;\n\texports.resetDataModel = resetDataModel;\n\texports.getErrorObject = getErrorObject;\n\texports.getMessageObject = getMessageObject;\n\texports.resetFormlyModel = resetFormlyModel;\n\texports.addOneColumnControl = _formlyProxyService.addOneColumnControl;\n\texports.addTwoColumnControl = _formlyProxyService.addTwoColumnControl;\n\texports.addThreeColumnControl = _formlyProxyService.addThreeColumnControl;\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.controls = exports.configs = undefined;\n\t\n\tvar _blank = __webpack_require__(17);\n\t\n\tvar _editBlankControl = __webpack_require__(18);\n\t\n\tvar _editBlankControl2 = _interopRequireDefault(_editBlankControl);\n\t\n\tvar _IpAdress = __webpack_require__(19);\n\t\n\tvar _editIpAdress = __webpack_require__(20);\n\t\n\tvar _editIpAdress2 = _interopRequireDefault(_editIpAdress);\n\t\n\tvar _date = __webpack_require__(21);\n\t\n\tvar _editDate = __webpack_require__(22);\n\t\n\tvar _editDate2 = _interopRequireDefault(_editDate);\n\t\n\tvar _checkbox = __webpack_require__(23);\n\t\n\tvar _editCheckBox = __webpack_require__(24);\n\t\n\tvar _editCheckBox2 = _interopRequireDefault(_editCheckBox);\n\t\n\tvar _email = __webpack_require__(25);\n\t\n\tvar _editEmail = __webpack_require__(26);\n\t\n\tvar _editEmail2 = _interopRequireDefault(_editEmail);\n\t\n\tvar _basicSelect = __webpack_require__(27);\n\t\n\tvar _editBasicSelect = __webpack_require__(28);\n\t\n\tvar _editBasicSelect2 = _interopRequireDefault(_editBasicSelect);\n\t\n\tvar _groupedSelect = __webpack_require__(29);\n\t\n\tvar _editGroupedSelect = __webpack_require__(30);\n\t\n\tvar _editGroupedSelect2 = _interopRequireDefault(_editGroupedSelect);\n\t\n\tvar _header = __webpack_require__(31);\n\t\n\tvar _editHeaderControl = __webpack_require__(32);\n\t\n\tvar _editHeaderControl2 = _interopRequireDefault(_editHeaderControl);\n\t\n\tvar _password = __webpack_require__(33);\n\t\n\tvar _editPassword = __webpack_require__(34);\n\t\n\tvar _editPassword2 = _interopRequireDefault(_editPassword);\n\t\n\tvar _stepwayRadio = __webpack_require__(35);\n\t\n\tvar _stepwayEditRadio = __webpack_require__(36);\n\t\n\tvar _stepwayEditRadio2 = __webpack_require__(38);\n\t\n\tvar _stepwayEditRadio3 = _interopRequireDefault(_stepwayEditRadio2);\n\t\n\tvar _stepwayRichTextEditor = __webpack_require__(39);\n\t\n\tvar _stepwayEditRichTextEditor = __webpack_require__(40);\n\t\n\tvar _stepwayEditRichTextEditor2 = __webpack_require__(42);\n\t\n\tvar _stepwayEditRichTextEditor3 = _interopRequireDefault(_stepwayEditRichTextEditor2);\n\t\n\tvar _stepwaySubTitle = __webpack_require__(43);\n\t\n\tvar _stepwayEditSubTitle = __webpack_require__(44);\n\t\n\tvar _stepwayEditSubTitle2 = __webpack_require__(46);\n\t\n\tvar _stepwayEditSubTitle3 = _interopRequireDefault(_stepwayEditSubTitle2);\n\t\n\tvar _stepwayTextArea = __webpack_require__(47);\n\t\n\tvar _stepwayEditTextArea = __webpack_require__(48);\n\t\n\tvar _stepwayEditTextArea2 = __webpack_require__(50);\n\t\n\tvar _stepwayEditTextArea3 = _interopRequireDefault(_stepwayEditTextArea2);\n\t\n\tvar _stepwayTextInput = __webpack_require__(51);\n\t\n\tvar _stepwayEditTextInput = __webpack_require__(52);\n\t\n\tvar _stepwayEditTextInput2 = __webpack_require__(54);\n\t\n\tvar _stepwayEditTextInput3 = _interopRequireDefault(_stepwayEditTextInput2);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t// controls configs\n\tvar configs = [_IpAdress.IpAdressConfig, _date.DateConfig, _checkbox.CheckBoxConfig, _email.EmailConfig, _basicSelect.BasicSelectConfig, _blank.BlankConfig, _groupedSelect.GroupedSelectConfig, _header.HeaderConfig, _password.PasswordConfig, _stepwayRadio.RadioConfig, _stepwayRichTextEditor.RichTextEditorConfig, _stepwaySubTitle.SubTitleConfig, _stepwayTextArea.TextAreaConfig, _stepwayTextInput.TextInputConfig];\n\t\n\t// controls component (for edit control modal)\n\tvar controls = [\n\t// editBlankControl:\n\t{\n\t name: _editBlankControl.EDIT_BLANK_CONTROL_COMPONENT,\n\t component: _editBlankControl.editBlankControlComponent,\n\t moduleName: _editBlankControl2.default.name\n\t},\n\t// editIpAdress:\n\t{\n\t name: _editIpAdress.EDIT_IP_ADRESS_COMPONENT,\n\t component: _editIpAdress.editIpAdressControlComponent,\n\t moduleName: _editIpAdress2.default.name\n\t},\n\t// editDate:\n\t{\n\t name: _editDate.EDIT_DATE_COMPONENT,\n\t component: _editDate.editDateControlComponent,\n\t moduleName: _editDate2.default.name\n\t},\n\t// editBasicSelect:\n\t{\n\t name: _editBasicSelect.EDIT_BASIC_SELECT_COMPONENT,\n\t component: _editBasicSelect.editBasicSelectControlComponent,\n\t moduleName: _editBasicSelect2.default.name\n\t},\n\t// editGroupedSelect:\n\t{\n\t name: _editGroupedSelect.EDIT_GROUPED_SELECT_COMPONENT,\n\t component: _editGroupedSelect.editGroupedSelectControlComponent,\n\t moduleName: _editGroupedSelect2.default.name\n\t},\n\t// editCheckBox:\n\t{\n\t name: _editCheckBox.EDIT_CHECKBOX_COMPONENT,\n\t component: _editCheckBox.editCheckBoxControlComponent,\n\t moduleName: _editCheckBox2.default.name\n\t},\n\t// editEmail:\n\t{\n\t name: _editEmail.EDIT_EMAIL_COMPONENT,\n\t component: _editEmail.editEmailControlComponent,\n\t moduleName: _editEmail2.default.name\n\t},\n\t// editHeader:\n\t{\n\t name: _editHeaderControl.EDIT_HEADER_CONTROL_COMPONENT,\n\t component: _editHeaderControl.editHeaderControlComponent,\n\t moduleName: _editHeaderControl2.default.name\n\t},\n\t// editPassword:\n\t{\n\t name: _editPassword.EDIT_PASSWORD_CONTROL_COMPONENT,\n\t component: _editPassword.editPasswordControlComponent,\n\t moduleName: _editPassword2.default.name\n\t},\n\t// editRadio:\n\t{\n\t name: _stepwayEditRadio.EDIT_RADIO_CONTROL_COMPONENT,\n\t component: _stepwayEditRadio.editRadioControlComponent,\n\t moduleName: _stepwayEditRadio3.default.name\n\t},\n\t// editRichTextEditor:\n\t{\n\t name: _stepwayEditRichTextEditor.EDIT_RICH_TEXT_EDITOR_COMPONENT,\n\t component: _stepwayEditRichTextEditor.editRichTextEditorControlComponent,\n\t moduleName: _stepwayEditRichTextEditor3.default.name\n\t},\n\t// editSubTitle:\n\t{\n\t name: _stepwayEditSubTitle.EDIT_SUBTITLE_CONTROL_COMPONENT,\n\t component: _stepwayEditSubTitle.editSubTitleControlComponent,\n\t moduleName: _stepwayEditSubTitle3.default.name\n\t},\n\t// editTextArea:\n\t{\n\t name: _stepwayEditTextArea.EDIT_TEXTAREA_CONTROL_COMPONENT,\n\t component: _stepwayEditTextArea.editTextareaControlComponent,\n\t moduleName: _stepwayEditTextArea3.default.name\n\t},\n\t// editTextInput:\n\t{\n\t name: _stepwayEditTextInput.EDIT_TEXTINPUT_CONTROL_COMPONENT,\n\t component: _stepwayEditTextInput.editTextInputControlComponent,\n\t moduleName: _stepwayEditTextInput3.default.name\n\t}];\n\t\n\texports.configs = configs;\n\texports.controls = controls;\n\n/***/ },\n/* 17 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar BlankConfig = exports.BlankConfig = {\n\t id: 'empty',\n\t name: 'no control',\n\t subtitle: 'no control',\n\t group: 'Blank',\n\t formlyType: 'blank',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: [],\n\t formlyExpressionProperties: {},\n\t formlyValidators: {},\n\t formlyValidation: {}\n\t};\n\n/***/ },\n/* 18 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _class, _temp;\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDIT_BLANK_CONTROL_COMPONENT = exports.EDIT_BLANK_CONTROL_COMPONENT = 'editBlankControl';\n\t\n\tvar editBlankControlComponent = exports.editBlankControlComponent = {\n\t template: '\\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n {{\\'COL_WILL_BE_BLANK\\' | translate}}\\n \\n \\n
\\n
\\n
\\n
\\n ',\n\t bindings: {},\n\t controller: (_temp = _class = function editBlankControlController() {\n\t //\n\t\n\t _classCallCheck(this, editBlankControlController);\n\t }, _class.$inject = [], _temp)\n\t};\n\t\n\tvar editBlankModuleName = 'stepway.editBlankControl.module';\n\texports.default = angular.module(editBlankModuleName, []).component(EDIT_BLANK_CONTROL_COMPONENT, editBlankControlComponent);\n\n/***/ },\n/* 19 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar IpAdressConfig = exports.IpAdressConfig = {\n\t id: 'IpAdress',\n\t name: 'IpAdress',\n\t subtitle: 'IpAdress',\n\t group: 'input',\n\t formlyType: 'input',\n\t formlySubtype: 'ipadress',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: [],\n\t formlyExpressionProperties: {},\n\t formlyValidators: {\n\t ipAddressShape: {\n\t expression: function expression(viewValue, modelValue) {\n\t var value = modelValue || viewValue;\n\t return (/(\\d{1,3}\\.){3}\\d{1,3}/.test(value)\n\t );\n\t },\n\t message: '$viewValue + \\' is not a valid IP Address\\''\n\t }\n\t },\n\t formlyValidation: {\n\t messages: {\n\t required: function required(viewValue, modelValue, scope) {\n\t var defaultReturnMsg = 'this IP Adress field is required';\n\t var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n\t if (scope.to.required) return returnMsg;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n/* 20 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _class, _temp;\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDIT_IP_ADRESS_COMPONENT = exports.EDIT_IP_ADRESS_COMPONENT = 'editIpAdressControl';\n\t\n\tvar editIpAdressControlComponent = exports.editIpAdressControlComponent = {\n\t template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n\t bindings: {\n\t nyaSelect: '='\n\t },\n\t controller: (_temp = _class = function editIpAdressControlController() {\n\t _classCallCheck(this, editIpAdressControlController);\n\t }, _class.$inject = [], _temp)\n\t};\n\t\n\tvar editIpAdressModuleName = 'stepway.editIpAdress.module';\n\t\n\texports.default = angular.module(editIpAdressModuleName, []).component(EDIT_IP_ADRESS_COMPONENT, editIpAdressControlComponent);\n\n/***/ },\n/* 21 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar DateConfig = exports.DateConfig = {\n\t id: 'Date',\n\t name: 'Date',\n\t subtitle: 'Date',\n\t group: 'input',\n\t formlyType: 'datepicker',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: [],\n\t datepickerOptions: { format: 'dd-MMMM-yyyy' },\n\t formlyExpressionProperties: {},\n\t formlyValidators: {},\n\t formlyValidation: {\n\t messages: {\n\t required: function required(viewValue, modelValue, scope) {\n\t //return a required validation message :\n\t //-> ' is required '\n\t //-> or if not exists or empty just 'this field is required'\n\t var defaultReturnMsg = 'this Date field is required';\n\t var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n\t return returnMsg;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n/* 22 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _class, _temp;\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDIT_DATE_COMPONENT = exports.EDIT_DATE_COMPONENT = 'editDateControl';\n\t\n\tvar editDateControlComponent = exports.editDateControlComponent = {\n\t template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n\t bindings: {\n\t nyaSelect: '=',\n\t demodt: '=',\n\t dateOptions: '=',\n\t open: '&'\n\t },\n\t controller: (_temp = _class = function editDateControlController() {\n\t _classCallCheck(this, editDateControlController);\n\t }, _class.$inject = [], _temp)\n\t};\n\t\n\tvar editDateControlModuleName = 'stepway.editDateControl.module';\n\t\n\texports.default = angular.module(editDateControlModuleName, []).component(EDIT_DATE_COMPONENT, editDateControlComponent);\n\n/***/ },\n/* 23 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar CheckBoxConfig = exports.CheckBoxConfig = {\n\t id: 'Checkbox',\n\t name: 'Checkbox',\n\t subtitle: 'Checkbox',\n\t group: 'Checkbox',\n\t formlyType: 'checkbox',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: [],\n\t formlyExpressionProperties: {},\n\t formlyValidators: {},\n\t formlyValidation: {\n\t messages: {\n\t required: function required(viewValue, modelValue, scope) {\n\t var defaultReturnMsg = 'this Checkbox field is required';\n\t var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n\t return returnMsg;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n/* 24 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _class, _temp;\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDIT_CHECKBOX_COMPONENT = exports.EDIT_CHECKBOX_COMPONENT = 'editCheckBoxControl';\n\t\n\tvar editCheckBoxControlComponent = exports.editCheckBoxControlComponent = {\n\t template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n\t bindings: {\n\t nyaSelect: '='\n\t },\n\t controller: (_temp = _class = function editCheckBoxControlController() {\n\t _classCallCheck(this, editCheckBoxControlController);\n\t }, _class.$inject = [], _temp)\n\t};\n\t\n\tvar editCheckBoxModuleName = 'stepway.editCheckBox.module';\n\t\n\texports.default = angular.module(editCheckBoxModuleName, []).component(EDIT_CHECKBOX_COMPONENT, editCheckBoxControlComponent);\n\n/***/ },\n/* 25 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar EmailConfig = exports.EmailConfig = {\n\t id: 'Email',\n\t name: 'Email',\n\t subtitle: 'Email',\n\t group: 'input',\n\t formlyType: 'input',\n\t formlySubtype: 'email',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: [],\n\t formlyExpressionProperties: {},\n\t formlyValidators: {\n\t emailShape: {\n\t expression: function expression(viewValue, modelValue) {\n\t var value = modelValue || viewValue;\n\t return (/^[a-z]+[a-z0-9._]+@[a-z]+\\.[a-z.]{2,5}$/.test(value)\n\t );\n\t },\n\t message: '$viewValue + \\' is not a valid email\\''\n\t }\n\t },\n\t formlyValidation: {\n\t messages: {\n\t required: function required(viewValue, modelValue, scope) {\n\t var defaultReturnMsg = 'this Email field is required';\n\t var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n\t if (scope.to.required) return returnMsg;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n/* 26 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _class, _temp;\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDIT_EMAIL_COMPONENT = exports.EDIT_EMAIL_COMPONENT = 'editEmailControl';\n\t\n\tvar editEmailControlComponent = exports.editEmailControlComponent = {\n\t template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n\t bindings: {\n\t nyaSelect: '='\n\t },\n\t controller: (_temp = _class = function editEmailControlController() {\n\t _classCallCheck(this, editEmailControlController);\n\t }, _class.$inject = [], _temp)\n\t};\n\t\n\tvar editEmailControlModuleName = 'stepway.editEmailControl.module';\n\t\n\texports.default = angular.module(editEmailControlModuleName, []).component(EDIT_EMAIL_COMPONENT, editEmailControlComponent);\n\n/***/ },\n/* 27 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar BasicSelectConfig = exports.BasicSelectConfig = {\n\t id: 'BasicSelect',\n\t name: 'Basic select',\n\t subtitle: 'Basic select',\n\t options: [],\n\t group: 'Select',\n\t formlyType: 'basicSelect',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: [],\n\t formlyExpressionProperties: {},\n\t formlyValidators: {},\n\t formlyValidation: {\n\t messages: {\n\t required: function required(viewValue, modelValue, scope) {\n\t //return a required validation message :\n\t //-> ' is required '\n\t //-> or if not exists or empty just 'this field is required'\n\t var defaultReturnMsg = 'this Basic select field is required';\n\t var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n\t return returnMsg;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n/* 28 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _class, _temp;\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDIT_BASIC_SELECT_COMPONENT = exports.EDIT_BASIC_SELECT_COMPONENT = 'editBasicSelectControl';\n\t\n\tvar editBasicSelectControlComponent = exports.editBasicSelectControlComponent = {\n\t template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n \\n {{\\'ADD_NEW_OPTIONS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n {{\\'EDIT_REMOVE_OPTIONS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n ',\n\t bindings: {\n\t nyaSelect: '=',\n\t basicSelectRowCollection: '=',\n\t newOptionBasicSelect: '=',\n\t addNewOptionBasicSelect: '&',\n\t upThisRow: '&',\n\t downThisRow: '&',\n\t removeRow: '&'\n\t },\n\t controller: (_temp = _class = function editBasicSelectController() {\n\t _classCallCheck(this, editBasicSelectController);\n\t }, _class.$inject = [], _temp)\n\t};\n\t\n\tvar editBasicSelectModuleName = 'stepway.editBasicSelect.module';\n\texports.default = angular.module(editBasicSelectModuleName, []).component(EDIT_BASIC_SELECT_COMPONENT, editBasicSelectControlComponent);\n\n/***/ },\n/* 29 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar GroupedSelectConfig = exports.GroupedSelectConfig = {\n\t id: 'GroupedSelect',\n\t name: 'Grouped Select',\n\t subtitle: 'Grouped Select',\n\t options: [],\n\t group: 'Select',\n\t formlyType: 'groupedSelect',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: [],\n\t formlyExpressionProperties: {},\n\t formlyValidators: {},\n\t formlyValidation: {\n\t messages: {\n\t required: function required(viewValue, modelValue, scope) {\n\t //return a required validation message :\n\t //-> '
is required '\n\t //-> or if not exists or empty just 'this field is required'\n\t var defaultReturnMsg = 'this Grouped Select field is required';\n\t var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n\t return returnMsg;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n/* 30 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _class, _temp;\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDIT_GROUPED_SELECT_COMPONENT = exports.EDIT_GROUPED_SELECT_COMPONENT = 'editGroupedSelectControl';\n\t\n\tvar editGroupedSelectControlComponent = exports.editGroupedSelectControlComponent = {\n\t template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n \\n {{\\'ADD_NEW_OPTIONS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n {{\\'ADD_NEW_GROUPS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n {{\\'EDIT_GROUPS_OPTIONS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n\t bindings: {\n\t nyaSelect: '=',\n\t groupedSelectRowCollection: '=',\n\t newOptionGroupedSelect: '=',\n\t newGroupGroupedSelect: '=',\n\t groupSelectGroupClick: '=',\n\t groupedSelectGroups: '=',\n\t\n\t addNewOptionGroupedSelect: '&',\n\t addNewGroupToGroupedSelect: '&',\n\t upThisGroupedSelectRow: '&',\n\t downThisGroupedSelectRow: '&',\n\t showGroupListToChoose: '&',\n\t removeGroupedSelectRow: '&'\n\t },\n\t controller: (_temp = _class = function editGroupedSelectControlController() {\n\t _classCallCheck(this, editGroupedSelectControlController);\n\t }, _class.$inject = [], _temp)\n\t};\n\t\n\tvar editGroupedSelectModuleName = 'stepway.editGroupedSelect.module';\n\t\n\texports.default = angular.module(editGroupedSelectModuleName, []).component(EDIT_GROUPED_SELECT_COMPONENT, editGroupedSelectControlComponent);\n\n/***/ },\n/* 31 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar HeaderConfig = exports.HeaderConfig = {\n\t id: 'Header',\n\t name: 'Header',\n\t subtitle: 'no control',\n\t group: 'Decoration',\n\t formlyType: 'header',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: [],\n\t formlyExpressionProperties: {},\n\t formlyValidators: {},\n\t formlyValidation: {}\n\t};\n\n/***/ },\n/* 32 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _class, _temp;\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDIT_HEADER_CONTROL_COMPONENT = exports.EDIT_HEADER_CONTROL_COMPONENT = 'editHeaderControl';\n\t\n\tvar editHeaderControlComponent = exports.editHeaderControlComponent = {\n\t template: '\\n
\\n
\\n
\\n
\\n
\\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n\t bindings: {\n\t nyaSelect: '='\n\t },\n\t controller: (_temp = _class = function editHeaderControlController() {\n\t //\n\t\n\t _classCallCheck(this, editHeaderControlController);\n\t }, _class.$inject = [], _temp)\n\t};\n\t\n\tvar editHeaderControlModuleName = 'stepway.editHeaderControl.module';\n\t\n\texports.default = angular.module(editHeaderControlModuleName, []).component(EDIT_HEADER_CONTROL_COMPONENT, editHeaderControlComponent);\n\n/***/ },\n/* 33 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar PasswordConfig = exports.PasswordConfig = {\n\t id: 'Password',\n\t name: 'Password',\n\t subtitle: 'Password',\n\t group: 'input',\n\t formlyType: 'input',\n\t formlySubtype: 'password',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: [],\n\t formlyExpressionProperties: {},\n\t formlyValidators: {},\n\t formlyValidation: {\n\t messages: {\n\t required: function required(viewValue, modelValue, scope) {\n\t var defaultReturnMsg = 'this Password field is required';\n\t var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n\t return returnMsg;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n/* 34 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _class, _temp;\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDIT_PASSWORD_CONTROL_COMPONENT = exports.EDIT_PASSWORD_CONTROL_COMPONENT = 'editPasswordControl';\n\t\n\tvar editPasswordControlComponent = exports.editPasswordControlComponent = {\n\t template: '\\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n\t bindings: {\n\t nyaSelect: '='\n\t },\n\t controller: (_temp = _class = function editPasswordControlController() {\n\t //\n\t\n\t _classCallCheck(this, editPasswordControlController);\n\t }, _class.$inject = [], _temp)\n\t};\n\t\n\tvar editeditPasswordModuleName = 'stepway.editPasswordControl.module';\n\t\n\texports.default = angular.module(editeditPasswordModuleName, []).component(EDIT_PASSWORD_CONTROL_COMPONENT, editPasswordControlComponent);\n\n/***/ },\n/* 35 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar RadioConfig = exports.RadioConfig = {\n\t id: 'Radio',\n\t name: 'Radio',\n\t subtitle: 'Radio',\n\t options: [],\n\t group: 'Radio',\n\t formlyType: 'radio',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: [],\n\t formlyExpressionProperties: {},\n\t formlyValidators: {},\n\t formlyValidation: {\n\t messages: {\n\t required: function required(viewValue, modelValue, scope) {\n\t //return a required validation message :\n\t //-> '
is required '\n\t //-> or if not exists or empty just 'this field is required'\n\t var defaultReturnMsg = 'this Password field is required';\n\t var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n\t return returnMsg;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n/* 36 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.editRadioControlComponent = exports.EDIT_RADIO_CONTROL_COMPONENT = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _stepwayEditRadioTemplate = __webpack_require__(37);\n\t\n\tvar _stepwayEditRadioTemplate2 = _interopRequireDefault(_stepwayEditRadioTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDIT_RADIO_CONTROL_COMPONENT = exports.EDIT_RADIO_CONTROL_COMPONENT = 'editRadioControl';\n\t\n\tvar editRadioControlComponent = exports.editRadioControlComponent = {\n\t template: _stepwayEditRadioTemplate2.default,\n\t bindings: {\n\t nyaSelect: '=',\n\t radioRowCollection: '=',\n\t newOptionRadio: '=',\n\t addNewOptionRadio: '&',\n\t upThisRadioRow: '&',\n\t downThisRadioRow: '&',\n\t removeRadioRow: '&'\n\t },\n\t controller: function () {\n\t function editRadioControlController() {\n\t //\n\t\n\t _classCallCheck(this, editRadioControlController);\n\t }\n\t\n\t _createClass(editRadioControlController, null, [{\n\t key: '$inject',\n\t get: function get() {\n\t return [];\n\t }\n\t }]);\n\t\n\t return editRadioControlController;\n\t }()\n\t};\n\n/***/ },\n/* 37 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n \\n {{'ADD_NEW_RADIO' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n {{'EDIT_REMOVE_RADIO' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n\"\n\n/***/ },\n/* 38 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _stepwayEditRadio = __webpack_require__(36);\n\t\n\tvar editRadioControlModuleName = 'stepway.editRadioControl.module';\n\t\n\texports.default = angular.module(editRadioControlModuleName, []).component(_stepwayEditRadio.EDIT_RADIO_CONTROL_COMPONENT, _stepwayEditRadio.editRadioControlComponent);\n\n/***/ },\n/* 39 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar RichTextEditorConfig = exports.RichTextEditorConfig = {\n\t id: 'RichTextEditor',\n\t name: 'RichTextEditor',\n\t subtitle: 'RichTextEditor',\n\t group: 'Textarea',\n\t formlyType: 'richEditor',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: [],\n\t formlyExpressionProperties: {},\n\t formlyValidators: {},\n\t formlyValidation: {\n\t messages: {\n\t required: function required(viewValue, modelValue, scope) {\n\t //return a required validation message :\n\t //-> '
is required '\n\t //-> or if not exists or empty just 'this field is required'\n\t var defaultReturnMsg = 'this RichTextEditor field is required';\n\t var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n\t return returnMsg;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n/* 40 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.editRichTextEditorControlComponent = exports.EDIT_RICH_TEXT_EDITOR_COMPONENT = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _stepwayEditRichTextEditorTemplate = __webpack_require__(41);\n\t\n\tvar _stepwayEditRichTextEditorTemplate2 = _interopRequireDefault(_stepwayEditRichTextEditorTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDIT_RICH_TEXT_EDITOR_COMPONENT = exports.EDIT_RICH_TEXT_EDITOR_COMPONENT = 'editRichTextEditorControl';\n\t\n\tvar editRichTextEditorControlComponent = exports.editRichTextEditorControlComponent = {\n\t template: _stepwayEditRichTextEditorTemplate2.default,\n\t bindings: {\n\t nyaSelect: '='\n\t },\n\t controller: function () {\n\t function editRichTextEditorControlController() {\n\t //\n\t\n\t _classCallCheck(this, editRichTextEditorControlController);\n\t }\n\t\n\t _createClass(editRichTextEditorControlController, null, [{\n\t key: '$inject',\n\t get: function get() {\n\t return [];\n\t }\n\t }]);\n\t\n\t return editRichTextEditorControlController;\n\t }()\n\t};\n\n/***/ },\n/* 41 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n\\n\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 42 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _stepwayEditRichTextEditor = __webpack_require__(40);\n\t\n\tvar editRichTextEditorModuleName = 'stepway.editRichTextEditor.module';\n\t\n\texports.default = angular.module(editRichTextEditorModuleName, []).component(_stepwayEditRichTextEditor.EDIT_RICH_TEXT_EDITOR_COMPONENT, _stepwayEditRichTextEditor.editRichTextEditorControlComponent);\n\n/***/ },\n/* 43 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar SubTitleConfig = exports.SubTitleConfig = {\n\t id: 'Subtitle',\n\t name: 'Subtitle',\n\t subtitle: 'no control',\n\t group: 'Decoration',\n\t formlyType: 'subTitle',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: [],\n\t formlyExpressionProperties: {},\n\t formlyValidators: {},\n\t formlyValidation: {}\n\t};\n\n/***/ },\n/* 44 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.editSubTitleControlComponent = exports.EDIT_SUBTITLE_CONTROL_COMPONENT = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _stepwayEditSubTitleTemplate = __webpack_require__(45);\n\t\n\tvar _stepwayEditSubTitleTemplate2 = _interopRequireDefault(_stepwayEditSubTitleTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDIT_SUBTITLE_CONTROL_COMPONENT = exports.EDIT_SUBTITLE_CONTROL_COMPONENT = 'editSubTitleControl';\n\t\n\tvar editSubTitleControlComponent = exports.editSubTitleControlComponent = {\n\t template: _stepwayEditSubTitleTemplate2.default,\n\t bindings: {\n\t nyaSelect: '='\n\t },\n\t controller: function () {\n\t function editSubTitleControlController() {\n\t //\n\t\n\t _classCallCheck(this, editSubTitleControlController);\n\t }\n\t\n\t _createClass(editSubTitleControlController, null, [{\n\t key: '$inject',\n\t get: function get() {\n\t return [];\n\t }\n\t }]);\n\t\n\t return editSubTitleControlController;\n\t }()\n\t};\n\n/***/ },\n/* 45 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 46 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _stepwayEditSubTitle = __webpack_require__(44);\n\t\n\tvar editSubTitleModuleName = 'stepway.editSubTitleControl.module';\n\t\n\texports.default = angular.module(editSubTitleModuleName, []).component(_stepwayEditSubTitle.EDIT_SUBTITLE_CONTROL_COMPONENT, _stepwayEditSubTitle.editSubTitleControlComponent);\n\n/***/ },\n/* 47 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar TextAreaConfig = exports.TextAreaConfig = {\n\t id: 'Texarea',\n\t name: 'Textarea',\n\t subtitle: 'Textarea',\n\t group: 'Textarea',\n\t formlyType: 'textarea',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyOptions: [],\n\t formlyExpressionProperties: {},\n\t formlyValidators: {},\n\t formlyValidation: {\n\t messages: {\n\t required: function required(viewValue, modelValue, scope) {\n\t //return a required validation message :\n\t //-> ' is required '\n\t //-> or if not exists or empty just 'this field is required'\n\t var defaultReturnMsg = 'this Textarea field is required';\n\t var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n\t return returnMsg;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n/* 48 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.editTextareaControlComponent = exports.EDIT_TEXTAREA_CONTROL_COMPONENT = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _stepwayEditTextAreaTemplate = __webpack_require__(49);\n\t\n\tvar _stepwayEditTextAreaTemplate2 = _interopRequireDefault(_stepwayEditTextAreaTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDIT_TEXTAREA_CONTROL_COMPONENT = exports.EDIT_TEXTAREA_CONTROL_COMPONENT = 'editTextareaControl';\n\t\n\tvar editTextareaControlComponent = exports.editTextareaControlComponent = {\n\t template: _stepwayEditTextAreaTemplate2.default,\n\t bindings: {\n\t nyaSelect: '='\n\t },\n\t controller: function () {\n\t function editTextareaControlController() {\n\t //\n\t\n\t _classCallCheck(this, editTextareaControlController);\n\t }\n\t\n\t _createClass(editTextareaControlController, null, [{\n\t key: '$inject',\n\t get: function get() {\n\t return [];\n\t }\n\t }]);\n\t\n\t return editTextareaControlController;\n\t }()\n\t};\n\n/***/ },\n/* 49 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 50 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _stepwayEditTextArea = __webpack_require__(48);\n\t\n\tvar edittextareaControlModuleName = 'stepway.editTextAreaControl.module';\n\t\n\texports.default = angular.module(edittextareaControlModuleName, []).component(_stepwayEditTextArea.EDIT_TEXTAREA_CONTROL_COMPONENT, _stepwayEditTextArea.editTextareaControlComponent);\n\n/***/ },\n/* 51 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar TextInputConfig = exports.TextInputConfig = {\n\t id: 'TextInput',\n\t name: 'Text input',\n\t subtitle: 'Text input',\n\t group: 'input',\n\t formlyType: 'input',\n\t formlySubtype: '',\n\t formlyLabel: '',\n\t formlyRequired: false,\n\t formlyDescription: '',\n\t formlyDefaultValue: '',\n\t formlyOptions: [],\n\t formlyExpressionProperties: {},\n\t formlyValidators: {},\n\t formlyValidation: {\n\t messages: {\n\t required: function required(viewValue, modelValue, scope) {\n\t //return a required validation message :\n\t //-> ' is required '\n\t //-> or if not exists or empty just 'this field is required'\n\t var defaultReturnMsg = 'this Text input field is required';\n\t var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n\t return returnMsg;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n/* 52 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.editTextInputControlComponent = exports.EDIT_TEXTINPUT_CONTROL_COMPONENT = undefined;\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _stepwayEditTextInputTemplate = __webpack_require__(53);\n\t\n\tvar _stepwayEditTextInputTemplate2 = _interopRequireDefault(_stepwayEditTextInputTemplate);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar EDIT_TEXTINPUT_CONTROL_COMPONENT = exports.EDIT_TEXTINPUT_CONTROL_COMPONENT = 'editTextInputControl';\n\t\n\tvar editTextInputControlComponent = exports.editTextInputControlComponent = {\n\t template: _stepwayEditTextInputTemplate2.default,\n\t bindings: {\n\t nyaSelect: '='\n\t },\n\t controller: function () {\n\t function editTextInputControlController() {\n\t //\n\t\n\t _classCallCheck(this, editTextInputControlController);\n\t }\n\t\n\t _createClass(editTextInputControlController, null, [{\n\t key: '$inject',\n\t get: function get() {\n\t return [];\n\t }\n\t }]);\n\t\n\t return editTextInputControlController;\n\t }()\n\t};\n\n/***/ },\n/* 53 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ },\n/* 54 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _stepwayEditTextInput = __webpack_require__(52);\n\t\n\tvar editTextInputControlModuleName = 'stepway.editTextInputControl.module';\n\t\n\texports.default = angular.module(editTextInputControlModuleName, []).component(_stepwayEditTextInput.EDIT_TEXTINPUT_CONTROL_COMPONENT, _stepwayEditTextInput.editTextInputControlComponent);\n\n/***/ },\n/* 55 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar configurationModelInit = {\n\t activeLine: 1,\n\t listConfigStep: ['init', 'first', 'second', 'third'],\n\t stepIndicators: [true, false, false, false],\n\t configStepCounter: 0,\n\t submitButtonText: 'submit',\n\t cancelButtonText: 'cancel',\n\t lines: [{\n\t line: 1,\n\t activeColumn: 1,\n\t columns: [{\n\t numColumn: 1,\n\t exist: true,\n\t control: {\n\t type: 'none',\n\t key: 'none' // ,\n\t // templateOptions: {\n\t // label: 'none',\n\t // placeholder: 'none',\n\t // required: false,\n\t // description: 'Descriptive text'\n\t // }\n\t }\n\t }]\n\t }]\n\t};\n\t\n\tvar configurationModelResult = {\n\t activeLine: 1,\n\t listConfigStep: ['init', 'first', 'second', 'third'],\n\t stepIndicators: [true, false, false, false],\n\t configStepCounter: 0,\n\t submitButtonText: 'submit',\n\t cancelButtonTex: 'cancel',\n\t lines: []\n\t};\n\t\n\tvar isTemplateOptionDefined = function isTemplateOptionDefined(obj) {\n\t var defaultValue = false;\n\t if (obj && obj.templateOptions) {\n\t return true;\n\t }\n\t return defaultValue;\n\t};\n\t\n\tvar extractTemplateOptionLabel = function extractTemplateOptionLabel(obj) {\n\t var defaultValue = '';\n\t if (isTemplateOptionDefined(obj) && obj.templateOptions.label) {\n\t return obj.templateOptions.label;\n\t }\n\t return defaultValue;\n\t};\n\t\n\tvar extractTemplateOptionDatepickerOptions = function extractTemplateOptionDatepickerOptions(obj) {\n\t var defaultValue = { format: '' };\n\t if (isTemplateOptionDefined(obj) && obj.templateOptions.datepickerOptions) {\n\t return _extends({}, obj.templateOptions.datepickerOptions);\n\t }\n\t return defaultValue;\n\t};\n\t\n\tvar extractTemplateOptionRequired = function extractTemplateOptionRequired(obj) {\n\t var defaultValue = false;\n\t if (isTemplateOptionDefined(obj) && obj.templateOptions.required) {\n\t return true;\n\t }\n\t return defaultValue;\n\t};\n\t\n\tvar extractTemplateOptionOptions = function extractTemplateOptionOptions(obj) {\n\t var defaultValue = '';\n\t if (isTemplateOptionDefined(obj) && obj.templateOptions.options) {\n\t return obj.templateOptions.options;\n\t }\n\t return defaultValue;\n\t};\n\t\n\tvar extractTemplateOptionType = function extractTemplateOptionType(obj) {\n\t var defaultValue = '';\n\t if (obj && obj.subtype) {\n\t return obj.subtype;\n\t }\n\t return defaultValue;\n\t};\n\t\n\tvar extractTemplateOptionPlaceholder = function extractTemplateOptionPlaceholder(obj) {\n\t var defaultValue = '';\n\t if (isTemplateOptionDefined(obj) && obj.templateOptions.placeholder) {\n\t return obj.templateOptions.placeholder;\n\t }\n\t return defaultValue;\n\t};\n\t\n\tvar extractTemplateOptionDescription = function extractTemplateOptionDescription(obj) {\n\t var defaultValue = '';\n\t if (isTemplateOptionDefined(obj) && obj.templateOptions.description) {\n\t return obj.templateOptions.description;\n\t }\n\t return defaultValue;\n\t};\n\t\n\tvar extractDefaultValue = function extractDefaultValue(obj) {\n\t var defaultValue = '';\n\t if (obj && obj.defaultValue) {\n\t return obj.defaultValue;\n\t }\n\t return defaultValue;\n\t};\n\t\n\tvar extractFormlyExpressionProperties = function extractFormlyExpressionProperties(obj) {\n\t var defaultValue = {};\n\t if (obj && obj.formlyExpressionProperties) {\n\t return angular.copy(obj.formlyExpressionProperties);\n\t }\n\t return defaultValue;\n\t};\n\t\n\tvar extractFormlyValidators = function extractFormlyValidators(obj) {\n\t var defaultValue = {};\n\t if (obj && obj.formlyValidators) {\n\t return angular.copy(obj.formlyValidators);\n\t }\n\t return defaultValue;\n\t};\n\t\n\tvar extractFormlyValidation = function extractFormlyValidation(obj) {\n\t var defaultValue = {};\n\t if (obj && obj.formlyValidation) {\n\t return angular.copy(obj.formlyValidation);\n\t }\n\t return defaultValue;\n\t};\n\t\n\tvar addDatepickerOptionsProperty = function addDatepickerOptionsProperty(fieldToPush, configurationModel, lineIndex) {\n\t var control = _extends({}, configurationModel.lines[lineIndex].columns[0].control);\n\t fieldToPush.templateOptions.datepickerOptions = extractTemplateOptionDatepickerOptions(control);\n\t};\n\t\n\t// const addOneColumnHeader = (formlyModel, configurationModel, lineIndex) => {\n\t// const control = { ...configurationModel.lines[lineIndex].columns[0].control };\n\t// const defaultTemplate = '
';\n\t// const headerTemplateCol0 = {\n\t// template : `\n\t// \n\t//
\n\t//
\n\t// ${extractTemplateOptionDescription(control)}\n\t// \n\t// \n\t// \n\t//
\n\t// `\n\t// };\n\t// if (control.type && control.type === 'header') {\n\t// return formlyModel.push({\n\t// template: headerTemplateCol0.template\n\t// });\n\t// }\n\t// return formlyModel.push({\n\t// template : defaultTemplate\n\t// });\n\t// };\n\t\n\tvar addOneColumnControl = function addOneColumnControl(formlyModel, configurationModel, lineIndex) {\n\t var control = _extends({}, configurationModel.lines[lineIndex].columns[0].control);\n\t var fieldToPush = {\n\t className: 'col-xs-12',\n\t type: control && control.type && control.type !== 'none' ? control.type : 'blank',\n\t key: control && control.key ? control.key : 'blank' + Date.now(),\n\t templateOptions: {\n\t type: extractTemplateOptionType(control),\n\t label: extractTemplateOptionLabel(control),\n\t required: extractTemplateOptionRequired(control),\n\t placeholder: extractTemplateOptionPlaceholder(control),\n\t description: extractTemplateOptionDescription(control),\n\t options: extractTemplateOptionOptions(control)\n\t },\n\t defaultValue: extractDefaultValue(control),\n\t expressionProperties: extractFormlyExpressionProperties(control),\n\t validators: extractFormlyValidators(control),\n\t validation: extractFormlyValidation(control)\n\t };\n\t //////////////////////////////////////////////\n\t //datepicker additionnal particular property\n\t //////////////////////////////////////////////\n\t if (control.type === 'datepicker') {\n\t addDatepickerOptionsProperty(fieldToPush, configurationModel, lineIndex);\n\t }\n\t formlyModel.push(fieldToPush);\n\t};\n\t\n\tvar addTwoColumnControl = function addTwoColumnControl(formlyModel, configurationModel, lineIndex) {\n\t var control0 = _extends({}, configurationModel.lines[lineIndex].columns[0].control);\n\t //text header is stored in \"description\" in templateOtion model\n\t var headerTemplateCol0 = {\n\t className: 'col-xs-6',\n\t template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control0) + '\\n \\n \\n \\n
\\n '\n\t };\n\t var controlCol0 = {\n\t className: 'col-xs-6',\n\t type: control0 && control0.type && control0.type !== 'none' ? control0.type : 'blank',\n\t key: control0 && control0.key ? control0.key : 'blank' + Date.now(),\n\t templateOptions: {\n\t type: extractTemplateOptionType(control0),\n\t label: extractTemplateOptionLabel(control0),\n\t required: extractTemplateOptionRequired(control0),\n\t placeholder: extractTemplateOptionPlaceholder(control0),\n\t description: extractTemplateOptionDescription(control0),\n\t options: extractTemplateOptionOptions(control0)\n\t },\n\t defaultValue: extractDefaultValue(control0),\n\t expressionProperties: extractFormlyExpressionProperties(control0),\n\t validators: extractFormlyValidators(control0),\n\t validation: extractFormlyValidation(control0)\n\t };\n\t //////////////////////////////////////////////\n\t //datepicker additionnal particular property\n\t //////////////////////////////////////////////\n\t if (control0.type === 'datepicker') {\n\t addDatepickerOptionsProperty(controlCol0, configurationModel, lineIndex);\n\t }\n\t\n\t var control1 = _extends({}, configurationModel.lines[lineIndex].columns[1].control);\n\t var headerTemplateCol1 = {\n\t className: 'col-xs-6',\n\t template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control1) + '\\n \\n \\n \\n
\\n '\n\t };\n\t var controlCol1 = {\n\t className: 'col-xs-6',\n\t type: control1 && control1.type && control1.type !== 'none' ? control1.type : 'none',\n\t key: control1 && control1.key ? control1.key : 'blank' + Date.now(),\n\t templateOptions: {\n\t type: extractTemplateOptionType(control1),\n\t label: extractTemplateOptionLabel(control1),\n\t required: extractTemplateOptionRequired(control1),\n\t placeholder: extractTemplateOptionPlaceholder(control1),\n\t description: extractTemplateOptionDescription(control1),\n\t options: extractTemplateOptionOptions(control1)\n\t },\n\t defaultValue: extractDefaultValue(control1),\n\t expressionProperties: extractFormlyExpressionProperties(control1),\n\t validators: extractFormlyValidators(control1),\n\t validation: extractFormlyValidation(control1)\n\t };\n\t //////////////////////////////////////////////\n\t // datepicker additionnal particular property\n\t //////////////////////////////////////////////\n\t if (control1.type === 'datepicker') {\n\t addDatepickerOptionsProperty(controlCol1, configurationModel, lineIndex);\n\t }\n\t\n\t var FieldGroup = [];\n\t\n\t if (control0.type === 'header') {\n\t FieldGroup.push(headerTemplateCol0);\n\t } else {\n\t FieldGroup.push(controlCol0);\n\t }\n\t\n\t if (control1.type === 'header') {\n\t FieldGroup.push(headerTemplateCol1);\n\t } else {\n\t FieldGroup.push(controlCol1);\n\t }\n\t\n\t formlyModel.push({\n\t className: 'row',\n\t fieldGroup: FieldGroup\n\t });\n\t};\n\t\n\tvar addThreeColumnControl = function addThreeColumnControl(formlyModel, configurationModel, lineIndex) {\n\t var control0 = _extends({}, configurationModel.lines[lineIndex].columns[0].control);\n\t //text header is stored in \"description\" in templateOtion model\n\t var headerTemplateCol0 = {\n\t className: 'col-xs-4',\n\t template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control0) + '\\n \\n \\n \\n
\\n '\n\t };\n\t var controlCol0 = {\n\t className: 'col-xs-4',\n\t type: control0 && control0.type && control0.type !== 'none' ? control0.type : 'blank',\n\t key: control0 && control0.key ? control0.key : 'blank' + Date.now(),\n\t templateOptions: {\n\t type: extractTemplateOptionType(control0),\n\t label: extractTemplateOptionLabel(control0),\n\t required: extractTemplateOptionRequired(control0),\n\t placeholder: extractTemplateOptionPlaceholder(control0),\n\t description: extractTemplateOptionDescription(control0),\n\t options: extractTemplateOptionOptions(control0)\n\t },\n\t defaultValue: extractDefaultValue(control0),\n\t expressionProperties: extractFormlyExpressionProperties(control0),\n\t validators: extractFormlyValidators(control0),\n\t validation: extractFormlyValidation(control0)\n\t };\n\t //////////////////////////////////////////////\n\t //datepicker additionnal particular property\n\t //////////////////////////////////////////////\n\t if (control0.type === 'datepicker') {\n\t addDatepickerOptionsProperty(controlCol0, configurationModel, lineIndex);\n\t }\n\t\n\t var control1 = _extends({}, configurationModel.lines[lineIndex].columns[1].control);\n\t var headerTemplateCol1 = {\n\t className: 'col-xs-4',\n\t template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control1) + '\\n \\n \\n \\n
\\n '\n\t };\n\t var controlCol1 = {\n\t className: 'col-xs-4',\n\t type: control1 && control1.type && control1.type !== 'none' ? control1.type : 'blank',\n\t key: control1 && control1.key ? control1.key : 'blank' + Date.now(),\n\t templateOptions: {\n\t type: extractTemplateOptionType(control1),\n\t label: extractTemplateOptionLabel(control1),\n\t required: extractTemplateOptionRequired(control1),\n\t placeholder: extractTemplateOptionPlaceholder(control1),\n\t description: extractTemplateOptionDescription(control1),\n\t options: extractTemplateOptionOptions(control1)\n\t },\n\t defaultValue: extractDefaultValue(control1),\n\t expressionProperties: extractFormlyExpressionProperties(control1),\n\t validators: extractFormlyValidators(control1),\n\t validation: extractFormlyValidation(control1)\n\t };\n\t //////////////////////////////////////////////\n\t //datepicker additionnal particular property\n\t //////////////////////////////////////////////\n\t if (control1.type === 'datepicker') {\n\t addDatepickerOptionsProperty(controlCol1, configurationModel, lineIndex);\n\t }\n\t\n\t var control2 = _extends({}, configurationModel.lines[lineIndex].columns[2].control);\n\t var headerTemplateCol2 = {\n\t className: 'col-xs-4',\n\t template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control2) + '\\n \\n \\n \\n
\\n '\n\t };\n\t var controlCol2 = {\n\t className: 'col-xs-4',\n\t type: control2 && control2.type && control2.type !== 'none' ? control2.type : 'blank',\n\t key: control2 && control2.key ? control2.key : 'blank' + Date.now(),\n\t templateOptions: {\n\t type: extractTemplateOptionType(control2),\n\t label: extractTemplateOptionLabel(control2),\n\t required: extractTemplateOptionRequired(control2),\n\t placeholder: extractTemplateOptionPlaceholder(control2),\n\t description: extractTemplateOptionDescription(control2),\n\t options: extractTemplateOptionOptions(control2)\n\t },\n\t defaultValue: extractDefaultValue(control2),\n\t expressionProperties: extractFormlyExpressionProperties(control2),\n\t validators: extractFormlyValidators(control2),\n\t validation: extractFormlyValidation(control2)\n\t };\n\t //////////////////////////////////////////////\n\t //datepicker additionnal particular property\n\t //////////////////////////////////////////////\n\t if (control2.type === 'datepicker') {\n\t addDatepickerOptionsProperty(controlCol2, configurationModel, lineIndex);\n\t }\n\t\n\t var FieldGroup = [];\n\t\n\t if (control0.type === 'header') {\n\t FieldGroup.push(headerTemplateCol0);\n\t } else {\n\t FieldGroup.push(controlCol0);\n\t }\n\t\n\t if (control1.type === 'header') {\n\t FieldGroup.push(headerTemplateCol1);\n\t } else {\n\t FieldGroup.push(controlCol1);\n\t }\n\t\n\t if (control2.type === 'header') {\n\t FieldGroup.push(headerTemplateCol2);\n\t } else {\n\t FieldGroup.push(controlCol2);\n\t }\n\t\n\t formlyModel.push({\n\t className: 'row',\n\t fieldGroup: FieldGroup\n\t });\n\t};\n\t\n\tvar resetDataModel = function resetDataModel(obj) {\n\t var emptyDataModel = {};\n\t angular.copy(emptyDataModel, obj);\n\t return true;\n\t};\n\t\n\tvar resetFormlyModel = function resetFormlyModel(formlyModel) {\n\t var resetformly = [];\n\t angular.copy(resetformly, formlyModel);\n\t};\n\t\n\texports.configurationModelInit = configurationModelInit;\n\texports.configurationModelResult = configurationModelResult;\n\texports.resetDataModel = resetDataModel;\n\texports.resetFormlyModel = resetFormlyModel;\n\texports.isTemplateOptionDefined = isTemplateOptionDefined;\n\texports.extractTemplateOptionLabel = extractTemplateOptionLabel;\n\texports.extractTemplateOptionDatepickerOptions = extractTemplateOptionDatepickerOptions;\n\texports.extractDefaultValue = extractDefaultValue;\n\texports.extractFormlyExpressionProperties = extractFormlyExpressionProperties;\n\texports.extractFormlyValidators = extractFormlyValidators;\n\texports.extractFormlyValidation = extractFormlyValidation;\n\texports.extractTemplateOptionRequired = extractTemplateOptionRequired;\n\texports.extractTemplateOptionOptions = extractTemplateOptionOptions;\n\texports.extractTemplateOptionType = extractTemplateOptionType;\n\texports.extractTemplateOptionPlaceholder = extractTemplateOptionPlaceholder;\n\texports.extractTemplateOptionDescription = extractTemplateOptionDescription;\n\texports.addDatepickerOptionsProperty = addDatepickerOptionsProperty;\n\texports.addOneColumnControl = addOneColumnControl;\n\texports.addTwoColumnControl = addTwoColumnControl;\n\texports.addThreeColumnControl = addThreeColumnControl;\n\n/***/ },\n/* 56 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _formlyConfig = __webpack_require__(57);\n\t\n\tfunction formlyConfig(formlyConfigProvider) {\n\t formlyConfigProvider.setType({\n\t name: 'richEditor',\n\t template: _formlyConfig.richTextTemplate.template,\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError']\n\t });\n\t\n\t formlyConfigProvider.setType({\n\t name: 'blank',\n\t template: _formlyConfig.blankTemplate.template\n\t });\n\t\n\t formlyConfigProvider.setType({\n\t name: 'header',\n\t template: _formlyConfig.headerTemplate.template\n\t });\n\t\n\t formlyConfigProvider.setType({\n\t name: 'subTitle',\n\t template: _formlyConfig.subTitleTemplate.template\n\t });\n\t\n\t formlyConfigProvider.setType({\n\t name: 'basicSelect',\n\t template: _formlyConfig.basicSelectTemplate.template,\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError']\n\t });\n\t\n\t formlyConfigProvider.setType({\n\t name: 'groupedSelect',\n\t template: _formlyConfig.groupedSelectTemplate.template,\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError']\n\t });\n\t\n\t // implement from : http://jsbin.com/koredu/edit?js,output\n\t // formlyConfigProvider.setType({\n\t // name: 'upload',\n\t // extends: 'input',\n\t // wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t // link: function(scope, el, attrs) {\n\t // el.on(\"change\", function(changeEvent) {\n\t // var file = changeEvent.target.files[0];\n\t // if (file) {\n\t // // console.log('scope.id', scope.id);\n\t // var fd = new FormData();\n\t // // use key on backEnd\n\t // fd.append('uploadFile', file);\n\t // scope.$emit('fileToUpload', fd);\n\t // var fileProp = {};\n\t // for (var properties in file) {\n\t // if (!angular.isFunction(file[properties])) {\n\t // fileProp[properties] = file[properties];\n\t // }\n\t // }\n\t // scope.fc.$setViewValue(fileProp);\n\t // } else {\n\t // scope.fc.$setViewValue(undefined);\n\t // }\n\t // });\n\t // el.on(\"focusout\", (focusoutEvent) => {\n\t // // dont run validation , user still opening pop up file dialog\n\t // if ($window.document.activeElement.id === scope.id) {\n\t // // so we set it untouched\n\t // scope.$apply(function(scope) {\n\t // scope.fc.$setUntouched();\n\t // });\n\t // } else {\n\t // // element losing focus so we trigger validation\n\t // scope.fc.$validate();\n\t // }\n\t // });\n\t // },\n\t // defaultOptions: {\n\t // templateOptions: {\n\t // type: 'file',\n\t // required: true\n\t // }\n\t // }\n\t // });\n\t\n\t ////////////////////////////\n\t // angular UI date picker\n\t ////////////////////////////\n\t // thx Kent C. Dodds\n\t\n\t var attributes = ['date-disabled', 'custom-class', 'show-weeks', 'starting-day', 'init-date', 'min-mode', 'max-mode', 'format-day', 'format-month', 'format-year', 'format-day-header', 'format-day-title', 'format-month-title', 'year-range', 'shortcut-propagation', 'datepicker-popup', 'show-button-bar', 'current-text', 'clear-text', 'close-text', 'close-on-date-selection', 'datepicker-append-to-body'];\n\t\n\t var bindings = ['datepicker-mode', 'min-date', 'max-date'];\n\t\n\t var ngModelAttrs = {};\n\t angular.forEach(attributes, function (attr) {\n\t ngModelAttrs[camelize(attr)] = { attribute: attr };\n\t });\n\t\n\t angular.forEach(bindings, function (binding) {\n\t ngModelAttrs[camelize(binding)] = { bound: binding };\n\t });\n\t\n\t formlyConfigProvider.setType({\n\t name: 'datepicker',\n\t template: _formlyConfig.datepickerTemplate.template,\n\t defaultOptions: {\n\t ngModelAttrs: ngModelAttrs,\n\t templateOptions: {\n\t datepickerOptions: {\n\t format: 'dd/MM/yyyy',\n\t initDate: new Date(),\n\t showWeeks: false\n\t }\n\t }\n\t },\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t controller: ['$scope', function ($scope) {\n\t $scope.datepicker = {};\n\t // make sure the initial value is of type DATE!\n\t var currentModelVal = $scope.model[$scope.options.key];\n\t if (typeof currentModelVal == 'string') {\n\t $scope.model[$scope.options.key] = new Date(currentModelVal);\n\t }\n\t $scope.datepicker.opened = false;\n\t $scope.datepicker.open = function ($event) {\n\t $event.preventDefault();\n\t $event.stopPropagation();\n\t $scope.datepicker.opened = !$scope.datepicker.opened;\n\t };\n\t }]\n\t });\n\t\n\t /**\n\t * wrappers to show validation errors\n\t * without having to rewrite formly types\n\t */\n\t formlyConfigProvider.setWrapper([{\n\t template: _formlyConfig.validationTemplate.template\n\t }]);\n\t\n\t function camelize(string) {\n\t string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n\t return chr ? chr.toUpperCase() : '';\n\t });\n\t // Ensure 1st char is always lowercase\n\t return string.replace(/^([A-Z])/, function (match, chr) {\n\t return chr ? chr.toLowerCase() : '';\n\t });\n\t }\n\t}\n\t\n\tformlyConfig.$inject = ['formlyConfigProvider'];\n\t\n\texports.default = formlyConfig;\n\n/***/ },\n/* 57 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t// tips: use some plugin like atom-typescript to highlight html templates inside backticks\n\tvar richTextTemplate = exports.richTextTemplate = {\n\t template: \"\\n \\n \\n \"\n\t};\n\t\n\t/* eslint-disable quotes */\n\tvar blankTemplate = exports.blankTemplate = {\n\t template: \"
\"\n\t};\n\t/* eslint-enable quotes */\n\t\n\tvar headerTemplate = exports.headerTemplate = {\n\t template: \"\\n \\n
\\n
\\n {{ options.templateOptions.placeholder }}\\n \\n \\n \\n
\\n \"\n\t};\n\t\n\tvar subTitleTemplate = exports.subTitleTemplate = {\n\t template: \"\\n \\n
\\n
\\n {{ options.templateOptions.placeholder }}\\n \\n \\n \\n
\\n \"\n\t};\n\t\n\tvar basicSelectTemplate = exports.basicSelectTemplate = {\n\t template: \"\\n \\n \\n \\n {{option.name}}\\n \\n \\n \\n \"\n\t};\n\t\n\tvar groupedSelectTemplate = exports.groupedSelectTemplate = {\n\t template: \"\\n \\n \\n \\n \\n \\n {{option.name}}\\n \\n \\n \\n \\n \\n \"\n\t};\n\t\n\tvar datepickerTemplate = exports.datepickerTemplate = {\n\t template: \"\\n \\n \\n \\n \\n \\n \\n \\n
\\n \"\n\t};\n\t\n\tvar validationTemplate = exports.validationTemplate = {\n\t template: \"\\n \\n \"\n\t};\n\n/***/ },\n/* 58 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t\t\"stepway\": {\n\t\t\t\"version\": \"2.1.4\"\n\t\t},\n\t\t\"dragdropway\": {\n\t\t\t\"version\": \"2.1.4\"\n\t\t},\n\t\t\"formviewer\": {\n\t\t\t\"version\": \"2.1.4\"\n\t\t}\n\t};\n\n/***/ },\n/* 59 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// eda.easyFormViewer.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 6111d7e782a51f9ef704","import './vendors';\nrequire('./style/formviewer.scss');\nimport './main';\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/formviewer/index.js","import 'api-check'; // NOTE: always imported before angular-formly!\nimport 'angular-formly';\nimport 'angular-formly-templates-bootstrap';\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/formviewer/vendors.js","//! api-check version 7.5.5 built with ♥ by Kent C. Dodds (http://kent.doddsfamily.us) (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apiCheck\"] = factory();\n\telse\n\t\troot[\"apiCheck\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n\tvar _apiCheck = __webpack_require__(1);\n\n\tvar _apiCheck2 = _interopRequireDefault(_apiCheck);\n\n\texports['default'] = _apiCheck2['default'];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar stringify = __webpack_require__(2);\n\tvar apiCheckUtil = __webpack_require__(3);\n\tvar each = apiCheckUtil.each;\n\tvar isError = apiCheckUtil.isError;\n\tvar t = apiCheckUtil.t;\n\tvar arrayify = apiCheckUtil.arrayify;\n\tvar getCheckerDisplay = apiCheckUtil.getCheckerDisplay;\n\tvar typeOf = apiCheckUtil.typeOf;\n\tvar getError = apiCheckUtil.getError;\n\n\tvar checkers = __webpack_require__(4);\n\tvar apiCheckApis = getApiCheckApis();\n\n\tmodule.exports = getApiCheckInstance;\n\tmodule.exports.VERSION = (\"7.5.5\");\n\tmodule.exports.utils = apiCheckUtil;\n\tmodule.exports.globalConfig = {\n\t verbose: false,\n\t disabled: false\n\t};\n\n\tvar apiCheckApiCheck = getApiCheckInstance({\n\t output: { prefix: 'apiCheck' }\n\t});\n\tmodule.exports.internalChecker = apiCheckApiCheck;\n\n\teach(checkers, function (checker, name) {\n\t return module.exports[name] = checker;\n\t});\n\n\tfunction getApiCheckInstance() {\n\t var config = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t var extraCheckers = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n\t /* eslint complexity:[2, 6] */\n\t if (apiCheckApiCheck && arguments.length) {\n\t apiCheckApiCheck['throw'](apiCheckApis.getApiCheckInstanceCheckers, arguments, {\n\t prefix: 'creating an apiCheck instance'\n\t });\n\t }\n\n\t var additionalProperties = {\n\t 'throw': getApiCheck(true),\n\t warn: getApiCheck(false),\n\t getErrorMessage: getErrorMessage,\n\t handleErrorMessage: handleErrorMessage,\n\t config: {\n\t output: config.output || {\n\t prefix: '',\n\t suffix: '',\n\t docsBaseUrl: ''\n\t },\n\t verbose: config.verbose || false,\n\t disabled: config.disabled || false\n\t },\n\t utils: apiCheckUtil\n\t };\n\n\t each(additionalProperties, function (wrapper, name) {\n\t return apiCheck[name] = wrapper;\n\t });\n\n\t var disabled = apiCheck.disabled || module.exports.globalConfig.disabled;\n\t each(checkers.getCheckers(disabled), function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\t each(extraCheckers, function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\n\t return apiCheck;\n\n\t /**\n\t * This is the instance function. Other things are attached to this see additional properties above.\n\t * @param {Array} api - the checkers to check with\n\t * @param {Array} args - the args to check\n\t * @param {Object} output - output options\n\t * @returns {Object} - if this has a failed = true property, then it failed\n\t */\n\t function apiCheck(api, args, output) {\n\t /* eslint complexity:[2, 8] */\n\t if (apiCheck.config.disabled || module.exports.globalConfig.disabled) {\n\t return {\n\t apiTypes: {}, argTypes: {},\n\t passed: true, message: '',\n\t failed: false\n\t }; // empty version of what is normally returned\n\t }\n\t checkApiCheckApi(arguments);\n\t if (!Array.isArray(api)) {\n\t api = [api];\n\t args = [args];\n\t } else {\n\t // turn arguments into an array\n\t args = Array.prototype.slice.call(args);\n\t }\n\t var messages = checkEnoughArgs(api, args);\n\t if (!messages.length) {\n\t // this is where we actually go perform the checks.\n\t messages = checkApiWithArgs(api, args);\n\t }\n\n\t var returnObject = getTypes(api, args);\n\t returnObject.args = args;\n\t if (messages.length) {\n\t returnObject.message = apiCheck.getErrorMessage(api, args, messages, output);\n\t returnObject.failed = true;\n\t returnObject.passed = false;\n\t } else {\n\t returnObject.message = '';\n\t returnObject.failed = false;\n\t returnObject.passed = true;\n\t }\n\t return returnObject;\n\t }\n\n\t /**\n\t * checkApiCheckApi, should be read like: check apiCheck api. As in, check the api for apiCheck :-)\n\t * @param {Array} checkApiArgs - args provided to apiCheck function\n\t */\n\t function checkApiCheckApi(checkApiArgs) {\n\t var api = checkApiArgs[0];\n\t var args = checkApiArgs[1];\n\t var isArrayOrArgs = Array.isArray(args) || args && typeof args === 'object' && typeof args.length === 'number';\n\n\t if (Array.isArray(api) && !isArrayOrArgs) {\n\t throw new Error(getErrorMessage(api, [args], ['If an array is provided for the api, an array must be provided for the args as well.'], { prefix: 'apiCheck' }));\n\t }\n\t // dog fooding here\n\t var errors = checkApiWithArgs(apiCheckApis.checkApiCheckApi, checkApiArgs);\n\t if (errors.length) {\n\t var message = apiCheck.getErrorMessage(apiCheckApis.checkApiCheckApi, checkApiArgs, errors, {\n\t prefix: 'apiCheck'\n\t });\n\t apiCheck.handleErrorMessage(message, true);\n\t }\n\t }\n\n\t function getApiCheck(shouldThrow) {\n\t return function apiCheckWrapper(api, args, output) {\n\t var result = apiCheck(api, args, output);\n\t apiCheck.handleErrorMessage(result.message, shouldThrow);\n\t return result; // wont get here if an error is thrown\n\t };\n\t }\n\n\t function handleErrorMessage(message, shouldThrow) {\n\t if (shouldThrow && message) {\n\t throw new Error(message);\n\t } else if (message) {\n\t /* eslint no-console:0 */\n\t console.warn(message);\n\t }\n\t }\n\n\t function getErrorMessage(api, args) {\n\t var messages = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];\n\t var output = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];\n\n\t var gOut = apiCheck.config.output || {};\n\t var prefix = getPrefix();\n\t var suffix = getSuffix();\n\t var url = getUrl();\n\t var message = 'apiCheck failed! ' + messages.join(', ');\n\t var passedAndShouldHavePassed = '\\n\\n' + buildMessageFromApiAndArgs(api, args);\n\t return (prefix + ' ' + message + ' ' + suffix + ' ' + (url || '') + passedAndShouldHavePassed).trim();\n\n\t function getPrefix() {\n\t var p = output.onlyPrefix;\n\t if (!p) {\n\t p = ((gOut.prefix || '') + ' ' + (output.prefix || '')).trim();\n\t }\n\t return p;\n\t }\n\n\t function getSuffix() {\n\t var s = output.onlySuffix;\n\t if (!s) {\n\t s = ((output.suffix || '') + ' ' + (gOut.suffix || '')).trim();\n\t }\n\t return s;\n\t }\n\n\t function getUrl() {\n\t var u = output.url;\n\t if (!u) {\n\t u = gOut.docsBaseUrl && output.urlSuffix && ('' + gOut.docsBaseUrl + output.urlSuffix).trim();\n\t }\n\t return u;\n\t }\n\t }\n\n\t function buildMessageFromApiAndArgs(api, args) {\n\t var _getTypes = getTypes(api, args);\n\n\t var apiTypes = _getTypes.apiTypes;\n\t var argTypes = _getTypes.argTypes;\n\n\t var copy = Array.prototype.slice.call(args || []);\n\t var replacedItems = [];\n\t replaceFunctionWithName(copy);\n\t var passedArgs = getObjectString(copy);\n\t argTypes = getObjectString(argTypes);\n\t apiTypes = getObjectString(apiTypes);\n\n\t return generateMessage();\n\n\t // functions\n\n\t function replaceFunctionWithName(obj) {\n\t each(obj, function (val, name) {\n\t /* eslint complexity:[2, 6] */\n\t if (replacedItems.indexOf(val) === -1) {\n\t // avoid recursive problems\n\t replacedItems.push(val);\n\t if (typeof val === 'object') {\n\t replaceFunctionWithName(obj);\n\t } else if (typeof val === 'function') {\n\t obj[name] = val.displayName || val.name || 'anonymous function';\n\t }\n\t }\n\t });\n\t }\n\n\t function getObjectString(types) {\n\t if (!types || !types.length) {\n\t return 'nothing';\n\t } else if (types && types.length === 1) {\n\t types = types[0];\n\t }\n\t return stringify(types, null, 2);\n\t }\n\n\t function generateMessage() {\n\t var n = '\\n';\n\t var useS = true;\n\t if (args && args.length === 1) {\n\t if (typeof args[0] === 'object' && args[0] !== null) {\n\t useS = !!Object.keys(args[0]).length;\n\t } else {\n\t useS = false;\n\t }\n\t }\n\t var types = 'type' + (useS ? 's' : '');\n\t var newLine = n + n;\n\t return 'You passed:' + n + passedArgs + newLine + ('With the ' + types + ':' + n + argTypes + newLine) + ('The API calls for:' + n + apiTypes);\n\t }\n\t }\n\n\t function getTypes(api, args) {\n\t api = arrayify(api);\n\t args = arrayify(args);\n\t var apiTypes = api.map(function (checker, index) {\n\t var specified = module.exports.globalConfig.hasOwnProperty('verbose');\n\t return getCheckerDisplay(checker, {\n\t terse: specified ? !module.exports.globalConfig.verbose : !apiCheck.config.verbose,\n\t obj: args[index],\n\t addHelpers: true\n\t });\n\t });\n\t var argTypes = args.map(function (arg) {\n\t return getArgDisplay(arg, []);\n\t });\n\t return { argTypes: argTypes, apiTypes: apiTypes };\n\t }\n\t}\n\n\t// STATELESS FUNCTIONS\n\n\t/**\n\t * This is where the magic happens for actually checking the arguments with the api.\n\t * @param {Array} api - checkers\n\t * @param {Array} args - and arguments object\n\t * @returns {Array} - the error messages\n\t */\n\tfunction checkApiWithArgs(api, args) {\n\t /* eslint complexity:[2, 7] */\n\t var messages = [];\n\t var failed = false;\n\t var checkerIndex = 0;\n\t var argIndex = 0;\n\t var arg = undefined,\n\t checker = undefined,\n\t res = undefined,\n\t lastChecker = undefined,\n\t argName = undefined,\n\t argFailed = undefined,\n\t skipPreviousChecker = undefined;\n\t /* jshint -W084 */\n\t while ((checker = api[checkerIndex++]) && argIndex < args.length) {\n\t arg = args[argIndex++];\n\t argName = 'Argument ' + argIndex + (checker.isOptional ? ' (optional)' : '');\n\t res = checker(arg, 'value', argName);\n\t argFailed = isError(res);\n\t lastChecker = checkerIndex >= api.length;\n\t skipPreviousChecker = checkerIndex > 1 && api[checkerIndex - 1].isOptional;\n\t if (argFailed && lastChecker || argFailed && !lastChecker && !checker.isOptional && !skipPreviousChecker) {\n\t failed = true;\n\t messages.push(getCheckerErrorMessage(res, checker, arg));\n\t } else if (argFailed && checker.isOptional) {\n\t argIndex--;\n\t } else {\n\t messages.push(t(argName) + ' passed');\n\t }\n\t }\n\t return failed ? messages : [];\n\t}\n\n\tcheckerTypeType.type = 'function with __apiCheckData property and `${function.type}` property';\n\tfunction checkerTypeType(checkerType, name, location) {\n\t var apiCheckDataChecker = checkers.shape({\n\t type: checkers.string,\n\t optional: checkers.bool\n\t });\n\t var asFunc = checkers.func.withProperties({ __apiCheckData: apiCheckDataChecker });\n\t var asShape = checkers.shape({ __apiCheckData: apiCheckDataChecker });\n\t var wrongShape = checkers.oneOfType([asFunc, asShape])(checkerType, name, location);\n\t if (isError(wrongShape)) {\n\t return wrongShape;\n\t }\n\t if (typeof checkerType !== 'function' && !checkerType.hasOwnProperty(checkerType.__apiCheckData.type)) {\n\t return getError(name, location, checkerTypeType.type);\n\t }\n\t}\n\n\tfunction getCheckerErrorMessage(res, checker, val) {\n\t var checkerHelp = getCheckerHelp(checker, val);\n\t checkerHelp = checkerHelp ? ' - ' + checkerHelp : '';\n\t return res.message + checkerHelp;\n\t}\n\n\tfunction getCheckerHelp(_ref, val) {\n\t var help = _ref.help;\n\n\t if (!help) {\n\t return '';\n\t }\n\t if (typeof help === 'function') {\n\t help = help(val);\n\t }\n\t return help;\n\t}\n\n\tfunction checkEnoughArgs(api, args) {\n\t var requiredArgs = api.filter(function (a) {\n\t return !a.isOptional;\n\t });\n\t if (args.length < requiredArgs.length) {\n\t return ['Not enough arguments specified. Requires `' + requiredArgs.length + '`, you passed `' + args.length + '`'];\n\t } else {\n\t return [];\n\t }\n\t}\n\n\tfunction getArgDisplay(arg, gottenArgs) {\n\t /* eslint complexity:[2, 7] */\n\t var cName = arg && arg.constructor && arg.constructor.name;\n\t var type = typeOf(arg);\n\t if (type === 'function') {\n\t if (hasKeys()) {\n\t var properties = stringify(getDisplayIfNotGotten());\n\t return cName + ' (with properties: ' + properties + ')';\n\t }\n\t return cName;\n\t }\n\n\t if (arg === null) {\n\t return 'null';\n\t }\n\n\t if (type !== 'array' && type !== 'object') {\n\t return type;\n\t }\n\n\t if (hasKeys()) {\n\t return getDisplayIfNotGotten();\n\t }\n\n\t return cName;\n\n\t // utility functions\n\t function hasKeys() {\n\t return arg && Object.keys(arg).length;\n\t }\n\n\t function getDisplayIfNotGotten() {\n\t if (gottenArgs.indexOf(arg) !== -1) {\n\t return '[Circular]';\n\t }\n\t gottenArgs.push(arg);\n\t return getDisplay(arg, gottenArgs);\n\t }\n\t}\n\n\tfunction getDisplay(obj, gottenArgs) {\n\t var argDisplay = {};\n\t each(obj, function (v, k) {\n\t return argDisplay[k] = getArgDisplay(v, gottenArgs);\n\t });\n\t return argDisplay;\n\t}\n\n\tfunction getApiCheckApis() {\n\t var os = checkers.string.optional;\n\n\t var checkerFnChecker = checkers.func.withProperties({\n\t type: checkers.oneOfType([checkers.string, checkerTypeType]).optional,\n\t displayName: checkers.string.optional,\n\t shortType: checkers.string.optional,\n\t notOptional: checkers.bool.optional,\n\t notRequired: checkers.bool.optional\n\t });\n\n\t var getApiCheckInstanceCheckers = [checkers.shape({\n\t output: checkers.shape({\n\t prefix: checkers.string.optional,\n\t suffix: checkers.string.optional,\n\t docsBaseUrl: checkers.string.optional\n\t }).strict.optional,\n\t verbose: checkers.bool.optional,\n\t disabled: checkers.bool.optional\n\t }).strict.optional, checkers.objectOf(checkerFnChecker).optional];\n\n\t var checkApiCheckApi = [checkers.typeOrArrayOf(checkerFnChecker), checkers.any.optional, checkers.shape({\n\t prefix: os, suffix: os, urlSuffix: os, // appended case\n\t onlyPrefix: os, onlySuffix: os, url: os // override case\n\t }).strict.optional];\n\n\t return {\n\t checkerFnChecker: checkerFnChecker,\n\t getApiCheckInstanceCheckers: getApiCheckInstanceCheckers,\n\t checkApiCheckApi: checkApiCheckApi\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = stringify;\n\n\tfunction getSerialize (fn, decycle) {\n\t var seen = [], keys = [];\n\t decycle = decycle || function(key, value) {\n\t return '[Circular ' + getPath(value, seen, keys) + ']'\n\t };\n\t return function(key, value) {\n\t var ret = value;\n\t if (typeof value === 'object' && value) {\n\t if (seen.indexOf(value) !== -1)\n\t ret = decycle(key, value);\n\t else {\n\t seen.push(value);\n\t keys.push(key);\n\t }\n\t }\n\t if (fn) ret = fn(key, ret);\n\t return ret;\n\t }\n\t}\n\n\tfunction getPath (value, seen, keys) {\n\t var index = seen.indexOf(value);\n\t var path = [ keys[index] ];\n\t for (index--; index >= 0; index--) {\n\t if (seen[index][ path[0] ] === value) {\n\t value = seen[index];\n\t path.unshift(keys[index]);\n\t }\n\t }\n\t return '~' + path.join('.');\n\t}\n\n\tfunction stringify(obj, fn, spaces, decycle) {\n\t return JSON.stringify(obj, getSerialize(fn, decycle), spaces);\n\t}\n\n\tstringify.getSerialize = getSerialize;\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\tvar stringify = __webpack_require__(2);\n\tvar checkerHelpers = {\n\t addOptional: addOptional, getRequiredVersion: getRequiredVersion, setupChecker: setupChecker, addNullable: addNullable\n\t};\n\n\tmodule.exports = {\n\t each: each, copy: copy, typeOf: typeOf, arrayify: arrayify, getCheckerDisplay: getCheckerDisplay,\n\t isError: isError, list: list, getError: getError, nAtL: nAtL, t: t, undef: undef, checkerHelpers: checkerHelpers,\n\t noop: noop\n\t};\n\n\tfunction copy(obj) {\n\t var type = typeOf(obj);\n\t var daCopy = undefined;\n\t if (type === 'array') {\n\t daCopy = [];\n\t } else if (type === 'object') {\n\t daCopy = {};\n\t } else {\n\t return obj;\n\t }\n\t each(obj, function (val, key) {\n\t daCopy[key] = val; // cannot single-line this because we don't want to abort the each\n\t });\n\t return daCopy;\n\t}\n\n\tfunction typeOf(obj) {\n\t if (Array.isArray(obj)) {\n\t return 'array';\n\t } else if (obj instanceof RegExp) {\n\t return 'object';\n\t } else {\n\t return typeof obj;\n\t }\n\t}\n\n\tfunction getCheckerDisplay(checker, options) {\n\t /* eslint complexity:[2, 7] */\n\t var display = undefined;\n\t var short = options && options.short;\n\t if (short && checker.shortType) {\n\t display = checker.shortType;\n\t } else if (!short && typeof checker.type === 'object' || checker.type === 'function') {\n\t display = getCheckerType(checker, options);\n\t } else {\n\t display = getCheckerType(checker, options) || checker.displayName || checker.name;\n\t }\n\t return display;\n\t}\n\n\tfunction getCheckerType(_ref, options) {\n\t var type = _ref.type;\n\n\t if (typeof type === 'function') {\n\t var __apiCheckData = type.__apiCheckData;\n\t var typeTypes = type(options);\n\t type = _defineProperty({\n\t __apiCheckData: __apiCheckData\n\t }, __apiCheckData.type, typeTypes);\n\t }\n\t return type;\n\t}\n\n\tfunction arrayify(obj) {\n\t if (!obj) {\n\t return [];\n\t } else if (Array.isArray(obj)) {\n\t return obj;\n\t } else {\n\t return [obj];\n\t }\n\t}\n\n\tfunction each(obj, iterator, context) {\n\t if (Array.isArray(obj)) {\n\t return eachArry(obj, iterator, context);\n\t } else {\n\t return eachObj(obj, iterator, context);\n\t }\n\t}\n\n\tfunction eachObj(obj, iterator, context) {\n\t var ret = undefined;\n\t var hasOwn = Object.prototype.hasOwnProperty;\n\t /* eslint prefer-const:0 */ // some weird eslint bug?\n\t for (var key in obj) {\n\t if (hasOwn.call(obj, key)) {\n\t ret = iterator.call(context, obj[key], key, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t }\n\t return true;\n\t}\n\n\tfunction eachArry(obj, iterator, context) {\n\t var ret = undefined;\n\t var length = obj.length;\n\t for (var i = 0; i < length; i++) {\n\t ret = iterator.call(context, obj[i], i, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t return true;\n\t}\n\n\tfunction isError(obj) {\n\t return obj instanceof Error;\n\t}\n\n\tfunction list(arry, join, finalJoin) {\n\t arry = arrayify(arry);\n\t var copy = arry.slice();\n\t var last = copy.pop();\n\t if (copy.length === 1) {\n\t join = ' ';\n\t }\n\t return copy.join(join) + ('' + (copy.length ? join + finalJoin : '') + last);\n\t}\n\n\tfunction getError(name, location, checkerType) {\n\t if (typeof checkerType === 'function') {\n\t checkerType = checkerType({ short: true });\n\t }\n\t var stringType = typeof checkerType !== 'object' ? checkerType : stringify(checkerType);\n\t return new Error(nAtL(name, location) + ' must be ' + t(stringType));\n\t}\n\n\tfunction nAtL(name, location) {\n\t var tName = t(name || 'value');\n\t var tLocation = !location ? '' : ' at ' + t(location);\n\t return '' + tName + tLocation;\n\t}\n\n\tfunction t(thing) {\n\t return '`' + thing + '`';\n\t}\n\n\tfunction undef(thing) {\n\t return typeof thing === 'undefined';\n\t}\n\n\t/**\n\t * This will set up the checker with all of the defaults that most checkers want like required by default and an\n\t * optional version\n\t *\n\t * @param {Function} checker - the checker to setup with properties\n\t * @param {Object} properties - properties to add to the checker\n\t * @param {boolean} disabled - when set to true, this will set the checker to a no-op function\n\t * @returns {Function} checker - the setup checker\n\t */\n\tfunction setupChecker(checker, properties, disabled) {\n\t /* eslint complexity:[2, 9] */\n\t if (disabled) {\n\t // swap out the checker for its own copy of noop\n\t checker = getNoop();\n\t checker.isNoop = true;\n\t }\n\n\t if (typeof checker.type === 'string') {\n\t checker.shortType = checker.type;\n\t }\n\n\t // assign all properties given\n\t each(properties, function (prop, name) {\n\t return checker[name] = prop;\n\t });\n\n\t if (!checker.displayName) {\n\t checker.displayName = 'apiCheck ' + t(checker.shortType || checker.type || checker.name) + ' type checker';\n\t }\n\n\t if (!checker.notRequired) {\n\t checker = getRequiredVersion(checker, disabled);\n\t }\n\n\t if (!checker.notNullable) {\n\t addNullable(checker, disabled);\n\t }\n\n\t if (!checker.notOptional) {\n\t addOptional(checker, disabled);\n\t }\n\n\t return checker;\n\t}\n\n\tfunction getRequiredVersion(checker, disabled) {\n\t var requiredChecker = disabled ? getNoop() : function requiredChecker(val, name, location, obj) {\n\t if (undef(val) && !checker.isOptional) {\n\t var tLocation = location ? ' in ' + t(location) : '';\n\t var type = getCheckerDisplay(checker, { short: true });\n\t var stringType = typeof type !== 'object' ? type : stringify(type);\n\t return new Error('Required ' + t(name) + ' not specified' + tLocation + '. Must be ' + t(stringType));\n\t } else {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t copyProps(checker, requiredChecker);\n\t requiredChecker.originalChecker = checker;\n\t return requiredChecker;\n\t}\n\n\tfunction addOptional(checker, disabled) {\n\t var optionalCheck = disabled ? getNoop() : function optionalCheck(val, name, location, obj) {\n\t if (!undef(val)) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, optionalCheck);\n\n\t optionalCheck.isOptional = true;\n\t optionalCheck.displayName = checker.displayName + ' (optional)';\n\t optionalCheck.originalChecker = checker;\n\n\t // the magic line that allows you to add .optional to the end of the checkers\n\t checker.optional = optionalCheck;\n\n\t fixType(checker, checker.optional);\n\t}\n\n\tfunction addNullable(checker, disabled) {\n\t var nullableCheck = disabled ? getNoop() : function nullableCheck(val, name, location, obj) {\n\t if (val !== null) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, nullableCheck);\n\n\t nullableCheck.isNullable = true;\n\t nullableCheck.displayName = checker.displayName + ' (nullable)';\n\t nullableCheck.originalChecker = checker;\n\n\t // the magic line that allows you to add .nullable to the end of the checkers\n\t checker.nullable = nullableCheck;\n\n\t fixType(checker, checker.nullable);\n\t if (!checker.notOptional) {\n\t addOptional(checker.nullable, disabled);\n\t }\n\t}\n\n\tfunction fixType(checker, checkerCopy) {\n\t // fix type, because it's not a straight copy...\n\t // the reason is we need to specify type.__apiCheckData.optional as true for the terse/verbose option.\n\t // we also want to add \"(optional)\" to the types with a string\n\t if (typeof checkerCopy.type === 'object') {\n\t checkerCopy.type = copy(checkerCopy.type); // make our own copy of this\n\t } else if (typeof checkerCopy.type === 'function') {\n\t checkerCopy.type = function () {\n\t return checker.type.apply(checker, arguments);\n\t };\n\t } else {\n\t checkerCopy.type += ' (optional)';\n\t return;\n\t }\n\t checkerCopy.type.__apiCheckData = copy(checker.type.__apiCheckData) || {}; // and this\n\t checkerCopy.type.__apiCheckData.optional = true;\n\t}\n\n\t// UTILS\n\n\tfunction copyProps(src, dest) {\n\t each(Object.keys(src), function (key) {\n\t return dest[key] = src[key];\n\t });\n\t}\n\n\tfunction noop() {}\n\n\tfunction getNoop() {\n\t /* eslint no-shadow:0 */\n\t /* istanbul ignore next */\n\t return function noop() {};\n\t}\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar stringify = __webpack_require__(2);\n\n\tvar _require = __webpack_require__(3);\n\n\tvar typeOf = _require.typeOf;\n\tvar each = _require.each;\n\tvar copy = _require.copy;\n\tvar getCheckerDisplay = _require.getCheckerDisplay;\n\tvar isError = _require.isError;\n\tvar arrayify = _require.arrayify;\n\tvar list = _require.list;\n\tvar getError = _require.getError;\n\tvar nAtL = _require.nAtL;\n\tvar t = _require.t;\n\tvar checkerHelpers = _require.checkerHelpers;\n\tvar undef = _require.undef;\n\tvar setupChecker = checkerHelpers.setupChecker;\n\n\tvar checkers = module.exports = getCheckers();\n\tmodule.exports.getCheckers = getCheckers;\n\n\tfunction getCheckers(disabled) {\n\t return {\n\t array: typeOfCheckGetter('Array'),\n\t bool: typeOfCheckGetter('Boolean'),\n\t number: typeOfCheckGetter('Number'),\n\t string: typeOfCheckGetter('String'),\n\t func: funcCheckGetter(),\n\t object: objectCheckGetter(),\n\n\t emptyObject: emptyObjectCheckGetter(),\n\n\t instanceOf: instanceCheckGetter,\n\t oneOf: oneOfCheckGetter,\n\t oneOfType: oneOfTypeCheckGetter,\n\n\t arrayOf: arrayOfCheckGetter,\n\t objectOf: objectOfCheckGetter,\n\t typeOrArrayOf: typeOrArrayOfCheckGetter,\n\n\t range: rangeCheckGetter,\n\t lessThan: lessThanCheckGetter,\n\t greaterThan: greaterThanCheckGetter,\n\n\t shape: getShapeCheckGetter(),\n\t args: argumentsCheckerGetter(),\n\n\t any: anyCheckGetter(),\n\t 'null': nullCheckGetter()\n\n\t };\n\n\t function typeOfCheckGetter(type) {\n\t var lType = type.toLowerCase();\n\t return setupChecker(function typeOfCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== lType) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function funcCheckGetter() {\n\t var type = 'Function';\n\t var functionChecker = setupChecker(function functionCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== 'function') {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\n\t functionChecker.withProperties = function getWithPropertiesChecker(properties) {\n\t var apiError = checkers.objectOf(checkers.func)(properties, 'properties', 'apiCheck.func.withProperties');\n\t if (isError(apiError)) {\n\t throw apiError;\n\t }\n\t var shapeChecker = checkers.shape(properties, true);\n\t shapeChecker.type.__apiCheckData.type = 'func.withProperties';\n\n\t return setupChecker(function functionWithPropertiesChecker(val, name, location) {\n\t var notFunction = checkers.func(val, name, location);\n\t if (isError(notFunction)) {\n\t return notFunction;\n\t }\n\t return shapeChecker(val, name, location);\n\t }, { type: shapeChecker.type, shortType: 'func.withProperties' }, disabled);\n\t };\n\t return functionChecker;\n\t }\n\n\t function objectCheckGetter() {\n\t var type = 'Object';\n\t var nullType = 'Object (null ok)';\n\t var objectNullOkChecker = setupChecker(function objectNullOkCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== 'object') {\n\t return getError(name, location, nullType);\n\t }\n\t }, { type: nullType }, disabled);\n\n\t var objectChecker = setupChecker(function objectCheckerDefinition(val, name, location) {\n\t if (val === null || isError(objectNullOkChecker(val, name, location))) {\n\t return getError(name, location, objectChecker.type);\n\t }\n\t }, { type: type, nullOk: objectNullOkChecker }, disabled);\n\n\t return objectChecker;\n\t }\n\n\t function instanceCheckGetter(classToCheck) {\n\t return setupChecker(function instanceCheckerDefinition(val, name, location) {\n\t if (!(val instanceof classToCheck)) {\n\t return getError(name, location, classToCheck.name);\n\t }\n\t }, { type: classToCheck.name }, disabled);\n\t }\n\n\t function oneOfCheckGetter(enums) {\n\t var type = {\n\t __apiCheckData: { optional: false, type: 'enum' },\n\t 'enum': enums\n\t };\n\t var shortType = 'oneOf[' + enums.map(function (enm) {\n\t return stringify(enm);\n\t }).join(', ') + ']';\n\t return setupChecker(function oneOfCheckerDefinition(val, name, location) {\n\t if (!enums.some(function (enm) {\n\t return enm === val;\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function oneOfTypeCheckGetter(typeCheckers) {\n\t var checkersDisplay = typeCheckers.map(function (checker) {\n\t return getCheckerDisplay(checker, { short: true });\n\t });\n\t var shortType = 'oneOfType[' + checkersDisplay.join(', ') + ']';\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return typeCheckers.map(function (checker) {\n\t return getCheckerDisplay(checker, options);\n\t });\n\t }\n\t type.__apiCheckData = { optional: false, type: 'oneOfType' };\n\t return setupChecker(function oneOfTypeCheckerDefinition(val, name, location) {\n\t if (!typeCheckers.some(function (checker) {\n\t return !isError(checker(val, name, location));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function arrayOfCheckGetter(checker) {\n\t var shortCheckerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'arrayOf[' + shortCheckerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'arrayOf' };\n\n\t return setupChecker(function arrayOfCheckerDefinition(val, name, location) {\n\t if (isError(checkers.array(val)) || !val.every(function (item) {\n\t return !isError(checker(item));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function objectOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'objectOf[' + checkerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'objectOf' };\n\n\t return setupChecker(function objectOfCheckerDefinition(val, name, location) {\n\t var notObject = checkers.object(val, name, location);\n\t if (isError(notObject)) {\n\t return notObject;\n\t }\n\t var allTypesSuccess = each(val, function (item, key) {\n\t if (isError(checker(item, key, name))) {\n\t return false;\n\t }\n\t });\n\t if (!allTypesSuccess) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function typeOrArrayOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'typeOrArrayOf[' + checkerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\n\t type.__apiCheckData = { optional: false, type: 'typeOrArrayOf' };\n\t return setupChecker(function typeOrArrayOfDefinition(val, name, location, obj) {\n\t if (isError(checkers.oneOfType([checker, checkers.arrayOf(checker)])(val, name, location, obj))) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function getShapeCheckGetter() {\n\t function shapeCheckGetter(shape, nonObject) {\n\t var shapeTypes = {};\n\t each(shape, function (checker, prop) {\n\t shapeTypes[prop] = getCheckerDisplay(checker);\n\t });\n\t function type() {\n\t var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n\t var ret = {};\n\t var terse = options.terse;\n\t var obj = options.obj;\n\t var addHelpers = options.addHelpers;\n\n\t var parentRequired = options.required;\n\t each(shape, function (checker, prop) {\n\t /* eslint complexity:[2, 6] */\n\t var specified = obj && obj.hasOwnProperty(prop);\n\t var required = undef(parentRequired) ? !checker.isOptional : parentRequired;\n\t if (!terse || (specified || !checker.isOptional)) {\n\t ret[prop] = getCheckerDisplay(checker, { terse: terse, obj: obj && obj[prop], required: required, addHelpers: addHelpers });\n\t }\n\t if (addHelpers) {\n\t modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required);\n\t }\n\t });\n\t return ret;\n\n\t function modifyTypeDisplayToHelpOut(theRet, prop, specified, checker, required) {\n\t if (!specified && required && !checker.isOptional) {\n\t var item = 'ITEM';\n\t if (checker.type && checker.type.__apiCheckData) {\n\t item = checker.type.__apiCheckData.type.toUpperCase();\n\t }\n\t addHelper('missing', 'MISSING THIS ' + item, ' <-- YOU ARE MISSING THIS');\n\t } else if (specified) {\n\t var error = checker(obj[prop], prop, null, obj);\n\t if (isError(error)) {\n\t addHelper('error', 'THIS IS THE PROBLEM: ' + error.message, ' <-- THIS IS THE PROBLEM: ' + error.message);\n\t }\n\t }\n\n\t function addHelper(property, objectMessage, stringMessage) {\n\t if (typeof theRet[prop] === 'string') {\n\t theRet[prop] += stringMessage;\n\t } else {\n\t theRet[prop].__apiCheckData[property] = objectMessage;\n\t }\n\t }\n\t }\n\t }\n\n\t type.__apiCheckData = { strict: false, optional: false, type: 'shape' };\n\t var shapeChecker = setupChecker(function shapeCheckerDefinition(val, name, location) {\n\t /* eslint complexity:[2, 6] */\n\t var isObject = !nonObject && checkers.object(val, name, location);\n\t if (isError(isObject)) {\n\t return isObject;\n\t }\n\t var shapePropError = undefined;\n\t location = location ? location + (name ? '/' : '') : '';\n\t name = name || '';\n\t each(shape, function (checker, prop) {\n\t if (val.hasOwnProperty(prop) || !checker.isOptional) {\n\t shapePropError = checker(val[prop], prop, '' + location + name, val);\n\t return !isError(shapePropError);\n\t }\n\t });\n\t if (isError(shapePropError)) {\n\t return shapePropError;\n\t }\n\t }, { type: type, shortType: 'shape' }, disabled);\n\n\t function strictType() {\n\t return type.apply(undefined, arguments);\n\t }\n\n\t strictType.__apiCheckData = copy(shapeChecker.type.__apiCheckData);\n\t strictType.__apiCheckData.strict = true;\n\t shapeChecker.strict = setupChecker(function strictShapeCheckerDefinition(val, name, location) {\n\t var shapeError = shapeChecker(val, name, location);\n\t if (isError(shapeError)) {\n\t return shapeError;\n\t }\n\t var allowedProperties = Object.keys(shape);\n\t var extraProps = Object.keys(val).filter(function (prop) {\n\t return allowedProperties.indexOf(prop) === -1;\n\t });\n\t if (extraProps.length) {\n\t return new Error(nAtL(name, location) + ' cannot have extra properties: ' + t(extraProps.join('`, `')) + '.' + ('It is limited to ' + t(allowedProperties.join('`, `'))));\n\t }\n\t }, { type: strictType, shortType: 'strict shape' }, disabled);\n\n\t return shapeChecker;\n\t }\n\n\t shapeCheckGetter.ifNot = function ifNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = 'specified only if ' + otherProps[0] + ' is not specified';\n\t } else {\n\t description = 'specified only if none of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t }\n\t var shortType = 'ifNot[' + otherProps.join(', ') + ']';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function ifNotChecker(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (propExists === otherPropsExist) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { notRequired: true, type: type, shortType: shortType }, disabled);\n\t };\n\n\t shapeCheckGetter.onlyIf = function onlyIf(otherProps, propChecker) {\n\t otherProps = arrayify(otherProps);\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = 'specified only if ' + otherProps[0] + ' is also specified';\n\t } else {\n\t description = 'specified only if all of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t }\n\t var shortType = 'onlyIf[' + otherProps.join(', ') + ']';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function onlyIfCheckerDefinition(prop, propName, location, obj) {\n\t var othersPresent = otherProps.every(function (property) {\n\t return obj.hasOwnProperty(property);\n\t });\n\t if (!othersPresent) {\n\t return getError(propName, location, type);\n\t } else {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t };\n\n\t shapeCheckGetter.requiredIfNot = function shapeRequiredIfNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t return getRequiredIfNotChecker(false, otherProps, propChecker);\n\t };\n\n\t shapeCheckGetter.requiredIfNot.all = function shapeRequiredIfNotAll(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t throw new Error('requiredIfNot.all must be passed an array');\n\t }\n\t return getRequiredIfNotChecker(true, otherProps, propChecker);\n\t };\n\n\t function getRequiredIfNotChecker(all, otherProps, propChecker) {\n\t var props = t(otherProps.join(', '));\n\t var ifProps = 'if ' + (all ? 'all of' : 'at least one of');\n\t var description = 'specified ' + ifProps + ' these are not specified: ' + props + ' (otherwise it\\'s optional)';\n\t var shortType = 'requiredIfNot' + (all ? '.all' : '') + '[' + otherProps.join(', ') + '}]';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var iteration = all ? 'every' : 'some';\n\t var otherPropsExist = otherProps[iteration](function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (!otherPropsExist && !propExists) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, notRequired: true }, disabled);\n\t }\n\n\t return shapeCheckGetter;\n\n\t function getTypeForShapeChild(propChecker, description, shortType) {\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(propChecker);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'ifNot', description: description };\n\t return type;\n\t }\n\t }\n\n\t function argumentsCheckerGetter() {\n\t var type = 'function arguments';\n\t return setupChecker(function argsCheckerDefinition(val, name, location) {\n\t if (Array.isArray(val) || isError(checkers.object(val)) || isError(checkers.number(val.length))) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function anyCheckGetter() {\n\t return setupChecker(function anyCheckerDefinition() {\n\t // don't do anything\n\t }, { type: 'any' }, disabled);\n\t }\n\n\t function nullCheckGetter() {\n\t var type = 'null';\n\t return setupChecker(function nullChecker(val, name, location) {\n\t if (val !== null) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function rangeCheckGetter(min, max) {\n\t var type = 'Range (' + min + ' - ' + max + ')';\n\t return setupChecker(function rangeChecker(val, name, location) {\n\t if (typeof val !== 'number' || val < min || val > max) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function lessThanCheckGetter(min) {\n\t var type = 'lessThan[' + min + ']';\n\t return setupChecker(function lessThanChecker(val, name, location) {\n\t if (typeof val !== 'number' || val > min) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function greaterThanCheckGetter(max) {\n\t var type = 'greaterThan[' + max + ']';\n\t return setupChecker(function greaterThanChecker(val, name, location) {\n\t if (typeof val !== 'number' || val < max) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function emptyObjectCheckGetter() {\n\t var type = 'empty object';\n\t return setupChecker(function emptyObjectChecker(val, name, location) {\n\t if (typeOf(val) !== 'object' || val === null || Object.keys(val).length) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t}\n\n/***/ }\n/******/ ])\n});\n;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/api-check/dist/api-check.js\n// module id = 2\n// module chunks = 0","// angular-formly version 6.8.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"api-check\"), require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"api-check\", \"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ngFormly\"] = factory(require(\"api-check\"), require(\"angular\"));\n\telse\n\t\troot[\"ngFormly\"] = factory(root[\"apiCheck\"], root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_16__, __WEBPACK_EXTERNAL_MODULE_17__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar index = _interopRequire(__webpack_require__(1));\n\n\tmodule.exports = index;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tvar formlyApiCheck = _interopRequire(__webpack_require__(2));\n\n\tvar formlyErrorAndWarningsUrlPrefix = _interopRequire(__webpack_require__(3));\n\n\tvar formlyUsability = _interopRequire(__webpack_require__(4));\n\n\tvar formlyConfig = _interopRequire(__webpack_require__(5));\n\n\tvar formlyValidationMessages = _interopRequire(__webpack_require__(6));\n\n\tvar formlyUtil = _interopRequire(__webpack_require__(7));\n\n\tvar formlyWarn = _interopRequire(__webpack_require__(8));\n\n\tvar formlyCustomValidation = _interopRequire(__webpack_require__(9));\n\n\tvar formlyField = _interopRequire(__webpack_require__(10));\n\n\tvar formlyFocus = _interopRequire(__webpack_require__(11));\n\n\tvar formlyForm = _interopRequire(__webpack_require__(12));\n\n\tvar formlyNgModelAttrsManipulator = _interopRequire(__webpack_require__(13));\n\n\tvar formlyCustomTags = _interopRequire(__webpack_require__(14));\n\n\tvar ngModuleName = \"formly\";\n\n\tmodule.exports = ngModuleName;\n\n\tvar ngModule = angular.module(ngModuleName, []);\n\n\tngModule.constant(\"formlyApiCheck\", formlyApiCheck);\n\tngModule.constant(\"formlyErrorAndWarningsUrlPrefix\", formlyErrorAndWarningsUrlPrefix);\n\tngModule.constant(\"formlyVersion\", (\"6.8.2\")); // <-- webpack variable\n\n\tngModule.provider(\"formlyUsability\", formlyUsability);\n\tngModule.provider(\"formlyConfig\", formlyConfig);\n\n\tngModule.factory(\"formlyValidationMessages\", formlyValidationMessages);\n\tngModule.factory(\"formlyUtil\", formlyUtil);\n\tngModule.factory(\"formlyWarn\", formlyWarn);\n\n\tngModule.directive(\"formlyCustomValidation\", formlyCustomValidation);\n\tngModule.directive(\"formlyField\", formlyField);\n\tngModule.directive(\"formlyFocus\", formlyFocus);\n\tngModule.directive(\"formlyForm\", formlyForm);\n\n\tngModule.run(formlyNgModelAttrsManipulator);\n\tngModule.run(formlyCustomTags);\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar apiCheckFactory = _interopRequire(__webpack_require__(16));\n\n\tvar apiCheck = apiCheckFactory({\n\t output: {\n\t prefix: \"angular-formly:\",\n\t docsBaseUrl: __webpack_require__(3)\n\t }\n\t});\n\n\tfunction shapeRequiredIfNot(otherProps, propChecker) {\n\t if (!angular.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t var type = \"specified if these are not specified: `\" + otherProps.join(\", \") + \"` (otherwise it's optional)\";\n\t function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (!otherPropsExist && !propExists) {\n\t return apiCheck.utils.getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }\n\t shapeRequiredIfNotDefinition.type = type;\n\t return apiCheck.utils.checkerHelpers.setupChecker(shapeRequiredIfNotDefinition);\n\t}\n\n\tvar formlyExpression = apiCheck.oneOfType([apiCheck.string, apiCheck.func]);\n\tvar specifyWrapperType = apiCheck.oneOfType([apiCheck.oneOf([null]), apiCheck.typeOrArrayOf(apiCheck.string)]);\n\n\tvar apiCheckProperty = apiCheck.objectOf(apiCheck.func);\n\n\tvar apiCheckInstanceProperty = apiCheck.shape.onlyIf(\"apiCheck\", apiCheck.func.withProperties({\n\t warn: apiCheck.func,\n\t \"throw\": apiCheck.func,\n\t shape: apiCheck.func\n\t}));\n\n\tvar apiCheckFunctionProperty = apiCheck.shape.onlyIf(\"apiCheck\", apiCheck.oneOf([\"throw\", \"warn\"]));\n\n\tvar formlyWrapperType = apiCheck.shape({\n\t name: shapeRequiredIfNot(\"types\", apiCheck.string).optional,\n\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.string).optional,\n\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.string).optional,\n\t types: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t overwriteOk: apiCheck.bool.optional,\n\t validateOptions: apiCheck.func.optional,\n\t apiCheck: apiCheckProperty.optional,\n\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t apiCheckOptions: apiCheck.object.optional\n\t}).strict;\n\n\tvar expressionProperties = apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t expression: formlyExpression,\n\t message: formlyExpression.optional\n\t}).strict]));\n\n\tvar modelChecker = apiCheck.oneOfType([apiCheck.oneOf([\"formState\"]), apiCheck.object]);\n\n\tvar fieldOptionsApiShape = {\n\t $$hashKey: apiCheck.any.optional,\n\t type: apiCheck.shape.ifNot([\"template\", \"templateUrl\"], apiCheck.string).optional,\n\t template: apiCheck.shape.ifNot([\"type\", \"templateUrl\"], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t templateUrl: apiCheck.shape.ifNot([\"type\", \"template\"], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t key: apiCheck.oneOfType([apiCheck.string, apiCheck.number]).optional,\n\t model: modelChecker.optional,\n\t className: apiCheck.string.optional,\n\t id: apiCheck.string.optional,\n\t expressionProperties: expressionProperties.optional,\n\t data: apiCheck.object.optional,\n\t templateOptions: apiCheck.object.optional,\n\t wrapper: specifyWrapperType.optional,\n\t modelOptions: apiCheck.shape({\n\t updateOn: apiCheck.string.optional,\n\t debounce: apiCheck.oneOfType([apiCheck.objectOf(apiCheck.number), apiCheck.number]).optional,\n\t allowInvalid: apiCheck.bool.optional,\n\t getterSetter: apiCheck.bool.optional,\n\t timezone: apiCheck.string.optional\n\t }).optional,\n\t watcher: apiCheck.typeOrArrayOf(apiCheck.shape({\n\t expression: formlyExpression.optional,\n\t listener: formlyExpression\n\t })).optional,\n\t validators: apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t expression: formlyExpression,\n\t message: formlyExpression.optional\n\t }).strict])).optional,\n\t noFormControl: apiCheck.bool.optional,\n\t hide: apiCheck.bool.optional,\n\t hideExpression: formlyExpression.optional,\n\t ngModelAttrs: apiCheck.objectOf(apiCheck.shape({\n\t expression: apiCheck.shape.ifNot([\"value\", \"attribute\", \"bound\"], apiCheck.any).optional,\n\t value: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional,\n\t attribute: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional,\n\t bound: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional\n\t }).strict).optional,\n\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional,\n\t optionsTypes: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t link: apiCheck.func.optional,\n\t controller: apiCheck.oneOfType([apiCheck.string, apiCheck.func, apiCheck.array]).optional,\n\t validation: apiCheck.shape({\n\t show: apiCheck.oneOfType([apiCheck.bool, apiCheck.oneOf([null])]).optional,\n\t messages: apiCheck.objectOf(formlyExpression).optional,\n\t errorExistsAndShouldBeVisible: apiCheck.bool.optional\n\t }).optional,\n\t formControl: apiCheck.object.optional,\n\t value: apiCheck.func.optional,\n\t runExpressions: apiCheck.func.optional,\n\t resetModel: apiCheck.func.optional,\n\t updateInitialValue: apiCheck.func.optional,\n\t initialValue: apiCheck.any.optional,\n\t defaultValue: apiCheck.any.optional\n\t};\n\n\tvar formlyFieldOptions = apiCheck.shape(fieldOptionsApiShape).strict;\n\n\tvar formOptionsApi = apiCheck.shape({\n\t formState: apiCheck.object.optional,\n\t resetModel: apiCheck.func.optional,\n\t updateInitialValue: apiCheck.func.optional,\n\t removeChromeAutoComplete: apiCheck.bool.optional\n\t}).strict;\n\n\tvar fieldGroup = apiCheck.shape({\n\t $$hashKey: apiCheck.any.optional,\n\t // danger. Nested field groups wont get api-checked...\n\t fieldGroup: apiCheck.arrayOf(apiCheck.oneOfType([formlyFieldOptions, apiCheck.object])),\n\t className: apiCheck.string.optional,\n\t options: formOptionsApi.optional,\n\t hide: apiCheck.bool.optional,\n\t hideExpression: formlyExpression.optional,\n\t model: modelChecker.optional,\n\t form: apiCheck.object.optional,\n\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional\n\t}).strict;\n\n\tvar typeOptionsDefaultOptions = angular.copy(fieldOptionsApiShape);\n\ttypeOptionsDefaultOptions.key = apiCheck.string.optional;\n\n\tvar formlyTypeOptions = apiCheck.shape({\n\t name: apiCheck.string,\n\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t controller: apiCheck.oneOfType([apiCheck.func, apiCheck.string, apiCheck.array]).optional,\n\t link: apiCheck.func.optional,\n\t defaultOptions: apiCheck.oneOfType([apiCheck.func, apiCheck.shape(typeOptionsDefaultOptions)]).optional,\n\t \"extends\": apiCheck.string.optional,\n\t wrapper: specifyWrapperType.optional,\n\t data: apiCheck.object.optional,\n\t validateOptions: apiCheck.func.optional,\n\t apiCheck: apiCheckProperty.optional,\n\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t apiCheckOptions: apiCheck.object.optional,\n\t overwriteOk: apiCheck.bool.optional\n\t}).strict;\n\tangular.extend(apiCheck, {\n\t formlyTypeOptions: formlyTypeOptions, formlyFieldOptions: formlyFieldOptions, formlyExpression: formlyExpression, formlyWrapperType: formlyWrapperType, fieldGroup: fieldGroup, formOptionsApi: formOptionsApi\n\t});\n\n\tmodule.exports = apiCheck;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = \"https://github.com/formly-js/angular-formly/blob/\" + (\"6.8.2\") + \"/other/ERRORS_AND_WARNINGS.md#\";\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyUsability;\n\n\t// @ngInject\n\tfunction formlyUsability(formlyApiCheck, formlyErrorAndWarningsUrlPrefix) {\n\t var _this = this;\n\n\t angular.extend(this, {\n\t getFormlyError: getFormlyError,\n\t getFieldError: getFieldError,\n\t checkWrapper: checkWrapper,\n\t checkWrapperTemplate: checkWrapperTemplate,\n\t $get: function () {\n\t return _this;\n\t }\n\t });\n\n\t function getFieldError(errorInfoSlug, message, field) {\n\t if (arguments.length < 3) {\n\t field = message;\n\t message = errorInfoSlug;\n\t errorInfoSlug = null;\n\t }\n\t return new Error(getErrorMessage(errorInfoSlug, message) + (\" Field definition: \" + angular.toJson(field)));\n\t }\n\n\t function getFormlyError(errorInfoSlug, message) {\n\t if (!message) {\n\t message = errorInfoSlug;\n\t errorInfoSlug = null;\n\t }\n\t return new Error(getErrorMessage(errorInfoSlug, message));\n\t }\n\n\t function getErrorMessage(errorInfoSlug, message) {\n\t var url = \"\";\n\t if (errorInfoSlug !== null) {\n\t url = \"\" + formlyErrorAndWarningsUrlPrefix + \"\" + errorInfoSlug;\n\t }\n\t return \"Formly Error: \" + message + \". \" + url;\n\t }\n\n\t function checkWrapper(wrapper) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyWrapperType, wrapper, {\n\t prefix: \"formlyConfig.setWrapper\",\n\t urlSuffix: \"setwrapper-validation-failed\"\n\t });\n\t }\n\n\t function checkWrapperTemplate(template, additionalInfo) {\n\t var formlyTransclude = \" \";\n\t if (template.indexOf(formlyTransclude) === -1) {\n\t throw getFormlyError(\"Template wrapper templates must use \\\"\" + formlyTransclude + \"\\\" somewhere in them. \" + (\"This one does not have \\\" \\\" in it: \" + template) + \"\\n\" + (\"Additional information: \" + JSON.stringify(additionalInfo)));\n\t }\n\t }\n\t}\n\tformlyUsability.$inject = [\"formlyApiCheck\", \"formlyErrorAndWarningsUrlPrefix\"];\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tvar utils = _interopRequire(__webpack_require__(18));\n\n\tmodule.exports = formlyConfig;\n\n\t// @ngInject\n\tfunction formlyConfig(formlyUsabilityProvider, formlyApiCheck) {\n\t var _this2 = this;\n\n\t var typeMap = {};\n\t var templateWrappersMap = {};\n\t var defaultWrapperName = \"default\";\n\t var _this = this;\n\t var getError = formlyUsabilityProvider.getFormlyError;\n\n\t angular.extend(this, {\n\t setType: setType,\n\t getType: getType,\n\t setWrapper: setWrapper,\n\t getWrapper: getWrapper,\n\t getWrapperByType: getWrapperByType,\n\t removeWrapperByName: removeWrapperByName,\n\t removeWrappersForType: removeWrappersForType,\n\t disableWarnings: false,\n\t extras: {\n\t disableNgModelAttrsManipulator: false,\n\t ngModelAttrsManipulatorPreferUnbound: false,\n\t removeChromeAutoComplete: false,\n\t defaultHideDirective: \"ng-if\",\n\t getFieldId: null\n\t },\n\t templateManipulators: {\n\t preWrapper: [],\n\t postWrapper: []\n\t },\n\t $get: function () {\n\t return _this2;\n\t }\n\t });\n\n\t function setType(options) {\n\t if (angular.isArray(options)) {\n\t angular.forEach(options, setType);\n\t } else if (angular.isObject(options)) {\n\t checkType(options);\n\t if (options[\"extends\"]) {\n\t extendTypeOptions(options);\n\t }\n\t typeMap[options.name] = options;\n\t } else {\n\t throw getError(\"You must provide an object or array for setType. You provided: \" + JSON.stringify(arguments));\n\t }\n\t }\n\n\t function checkType(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyTypeOptions, options, {\n\t prefix: \"formlyConfig.setType\",\n\t url: \"settype-validation-failed\"\n\t });\n\t if (!options.overwriteOk) {\n\t checkOverwrite(options.name, typeMap, options, \"types\");\n\t } else {\n\t options.overwriteOk = undefined;\n\t }\n\t }\n\n\t function extendTypeOptions(options) {\n\t var extendsType = getType(options[\"extends\"], true, options);\n\t extendTypeControllerFunction(options, extendsType);\n\t extendTypeLinkFunction(options, extendsType);\n\t extendTypeValidateOptionsFunction(options, extendsType);\n\t extendTypeDefaultOptions(options, extendsType);\n\t utils.reverseDeepMerge(options, extendsType);\n\t extendTemplate(options, extendsType);\n\t }\n\n\t function extendTemplate(options, extendsType) {\n\t if (options.template && extendsType.templateUrl) {\n\t delete options.templateUrl;\n\t } else if (options.templateUrl && extendsType.template) {\n\t delete options.template;\n\t }\n\t }\n\n\t function extendTypeControllerFunction(options, extendsType) {\n\t var extendsCtrl = extendsType.controller;\n\t if (!angular.isDefined(extendsCtrl)) {\n\t return;\n\t }\n\t var optionsCtrl = options.controller;\n\t if (angular.isDefined(optionsCtrl)) {\n\t options.controller = function ($scope, $controller) {\n\t $controller(extendsCtrl, { $scope: $scope });\n\t $controller(optionsCtrl, { $scope: $scope });\n\t };\n\t options.controller.$inject = [\"$scope\", \"$controller\"];\n\t } else {\n\t options.controller = extendsCtrl;\n\t }\n\t }\n\n\t function extendTypeLinkFunction(options, extendsType) {\n\t var extendsFn = extendsType.link;\n\t if (!angular.isDefined(extendsFn)) {\n\t return;\n\t }\n\t var optionsFn = options.link;\n\t if (angular.isDefined(optionsFn)) {\n\t options.link = function () {\n\t extendsFn.apply(undefined, arguments);\n\t optionsFn.apply(undefined, arguments);\n\t };\n\t } else {\n\t options.link = extendsFn;\n\t }\n\t }\n\n\t function extendTypeValidateOptionsFunction(options, extendsType) {\n\t var extendsFn = extendsType.validateOptions;\n\t if (!angular.isDefined(extendsFn)) {\n\t return;\n\t }\n\t var optionsFn = options.validateOptions;\n\t var originalDefaultOptions = options.defaultOptions;\n\t if (angular.isDefined(optionsFn)) {\n\t options.validateOptions = function (options) {\n\t optionsFn(options);\n\t var mergedOptions = angular.copy(options);\n\t var defaultOptions = originalDefaultOptions;\n\t if (defaultOptions) {\n\t if (angular.isFunction(defaultOptions)) {\n\t defaultOptions = defaultOptions(mergedOptions);\n\t }\n\t utils.reverseDeepMerge(mergedOptions, defaultOptions);\n\t }\n\t extendsFn(mergedOptions);\n\t };\n\t } else {\n\t options.validateOptions = extendsFn;\n\t }\n\t }\n\n\t function extendTypeDefaultOptions(options, extendsType) {\n\t var extendsDO = extendsType.defaultOptions;\n\t if (!angular.isDefined(extendsDO)) {\n\t return;\n\t }\n\t var optionsDO = options.defaultOptions;\n\t var optionsDOIsFn = angular.isFunction(optionsDO);\n\t var extendsDOIsFn = angular.isFunction(extendsDO);\n\t if (extendsDOIsFn) {\n\t options.defaultOptions = function defaultOptions(options) {\n\t var extendsDefaultOptions = extendsDO(options);\n\t var mergedDefaultOptions = {};\n\t utils.reverseDeepMerge(mergedDefaultOptions, options, extendsDefaultOptions);\n\t var extenderOptionsDefaultOptions = optionsDO;\n\t if (optionsDOIsFn) {\n\t extenderOptionsDefaultOptions = extenderOptionsDefaultOptions(mergedDefaultOptions);\n\t }\n\t utils.reverseDeepMerge(extendsDefaultOptions, extenderOptionsDefaultOptions);\n\t return extendsDefaultOptions;\n\t };\n\t } else if (optionsDOIsFn) {\n\t options.defaultOptions = function defaultOptions(options) {\n\t var newDefaultOptions = {};\n\t utils.reverseDeepMerge(newDefaultOptions, options, extendsDO);\n\t return optionsDO(newDefaultOptions);\n\t };\n\t }\n\t }\n\n\t function getType(name, throwError, errorContext) {\n\t if (!name) {\n\t return undefined;\n\t }\n\t var type = typeMap[name];\n\t if (!type && throwError === true) {\n\t throw getError(\"There is no type by the name of \\\"\" + name + \"\\\": \" + JSON.stringify(errorContext));\n\t } else {\n\t return type;\n\t }\n\t }\n\n\t function setWrapper(_x, _x2) {\n\t var _again = true;\n\n\t _function: while (_again) {\n\t _again = false;\n\t var options = _x,\n\t name = _x2;\n\n\t if (angular.isArray(options)) {\n\t return options.map(function (wrapperOptions) {\n\t return setWrapper(wrapperOptions);\n\t });\n\t } else if (angular.isObject(options)) {\n\t options.types = getOptionsTypes(options);\n\t options.name = getOptionsName(options, name);\n\t checkWrapperAPI(options);\n\t templateWrappersMap[options.name] = options;\n\t return options;\n\t } else if (angular.isString(options)) {\n\t _x = {\n\t template: options,\n\t name: name\n\t };\n\t _again = true;\n\t continue _function;\n\t }\n\t }\n\t }\n\n\t function getOptionsTypes(options) {\n\t if (angular.isString(options.types)) {\n\t return [options.types];\n\t }\n\t if (!angular.isDefined(options.types)) {\n\t return [];\n\t } else {\n\t return options.types;\n\t }\n\t }\n\n\t function getOptionsName(options, name) {\n\t return options.name || name || options.types.join(\" \") || defaultWrapperName;\n\t }\n\n\t function checkWrapperAPI(options) {\n\t formlyUsabilityProvider.checkWrapper(options);\n\t if (options.template) {\n\t formlyUsabilityProvider.checkWrapperTemplate(options.template, options);\n\t }\n\t if (!options.overwriteOk) {\n\t checkOverwrite(options.name, templateWrappersMap, options, \"templateWrappers\");\n\t } else {\n\t delete options.overwriteOk;\n\t }\n\t checkWrapperTypes(options);\n\t }\n\n\t function checkWrapperTypes(options) {\n\t var shouldThrow = !angular.isArray(options.types) || !options.types.every(angular.isString);\n\t if (shouldThrow) {\n\t throw getError(\"Attempted to create a template wrapper with types that is not a string or an array of strings\");\n\t }\n\t }\n\n\t function checkOverwrite(property, object, newValue, objectName) {\n\t if (object.hasOwnProperty(property)) {\n\t warn([\"Attempting to overwrite \" + property + \" on \" + objectName + \" which is currently\", \"\" + JSON.stringify(object[property]) + \" with \" + JSON.stringify(newValue), \"To supress this warning, specify the property \\\"overwriteOk: true\\\"\"].join(\" \"));\n\t }\n\t }\n\n\t function getWrapper(name) {\n\t return templateWrappersMap[name || defaultWrapperName];\n\t }\n\n\t function getWrapperByType(type) {\n\t /* jshint maxcomplexity:6 */\n\t var wrappers = [];\n\t for (var name in templateWrappersMap) {\n\t if (templateWrappersMap.hasOwnProperty(name)) {\n\t if (templateWrappersMap[name].types && templateWrappersMap[name].types.indexOf(type) !== -1) {\n\t wrappers.push(templateWrappersMap[name]);\n\t }\n\t }\n\t }\n\t return wrappers;\n\t }\n\n\t function removeWrapperByName(name) {\n\t var wrapper = templateWrappersMap[name];\n\t delete templateWrappersMap[name];\n\t return wrapper;\n\t }\n\n\t function removeWrappersForType(type) {\n\t var wrappers = getWrapperByType(type);\n\t if (!wrappers) {\n\t return;\n\t }\n\t if (!angular.isArray(wrappers)) {\n\t return removeWrapperByName(wrappers.name);\n\t } else {\n\t wrappers.forEach(function (wrapper) {\n\t return removeWrapperByName(wrapper.name);\n\t });\n\t return wrappers;\n\t }\n\t }\n\n\t function warn() {\n\t if (!_this.disableWarnings) {\n\t console.warn.apply(console, arguments);\n\t }\n\t }\n\t}\n\tformlyConfig.$inject = [\"formlyUsabilityProvider\", \"formlyApiCheck\"];\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyValidationMessages;\n\n\t// @ngInject\n\tfunction formlyValidationMessages() {\n\n\t var validationMessages = {\n\t addTemplateOptionValueMessage: addTemplateOptionValueMessage,\n\t addStringMessage: addStringMessage,\n\t messages: {}\n\t };\n\n\t return validationMessages;\n\n\t function addTemplateOptionValueMessage(name, prop, prefix, suffix, alternate) {\n\t validationMessages.messages[name] = templateOptionValue(prop, prefix, suffix, alternate);\n\t }\n\n\t function addStringMessage(name, string) {\n\t validationMessages.messages[name] = function () {\n\t return string;\n\t };\n\t }\n\n\t function templateOptionValue(prop, prefix, suffix, alternate) {\n\t return function getValidationMessage(viewValue, modelValue, scope) {\n\t if (scope.options.templateOptions[prop]) {\n\t return \"\" + prefix + \" \" + scope.options.templateOptions[prop] + \" \" + suffix;\n\t } else {\n\t return alternate;\n\t }\n\t };\n\t }\n\t}\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar utils = _interopRequire(__webpack_require__(18));\n\n\tmodule.exports = formlyUtil;\n\n\t// @ngInject\n\tfunction formlyUtil() {\n\t return utils;\n\t}\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\n\tmodule.exports = formlyWarn;\n\n\t// @ngInject\n\tfunction formlyWarn(formlyConfig, formlyErrorAndWarningsUrlPrefix, $log) {\n\t return function warn() {\n\t if (!formlyConfig.disableWarnings) {\n\t var args = Array.prototype.slice.call(arguments);\n\t var warnInfoSlug = args.shift();\n\t args.unshift(\"Formly Warning:\");\n\t args.push(\"\" + formlyErrorAndWarningsUrlPrefix + \"\" + warnInfoSlug);\n\t $log.warn.apply($log, _toConsumableArray(args));\n\t }\n\t };\n\t}\n\tformlyWarn.$inject = [\"formlyConfig\", \"formlyErrorAndWarningsUrlPrefix\", \"$log\"];\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyCustomValidation;\n\n\t// @ngInject\n\tfunction formlyCustomValidation(formlyUtil, $q) {\n\t return {\n\t restrict: \"A\",\n\t require: \"ngModel\",\n\t link: function formlyCustomValidationLink(scope, el, attrs, ctrl) {\n\t var opts = scope.options;\n\t if (opts.validators) {\n\t checkValidators(opts.validators);\n\t }\n\t opts.validation.messages = opts.validation.messages || {};\n\t angular.forEach(opts.validation.messages, function (message, key) {\n\t opts.validation.messages[key] = function () {\n\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t };\n\t });\n\n\t var useNewValidatorsApi = ctrl.hasOwnProperty(\"$validators\") && !attrs.hasOwnProperty(\"useParsers\");\n\t angular.forEach(opts.validators, function addValidatorToPipeline(validator, name) {\n\t var message = validator.message;\n\t if (message) {\n\t opts.validation.messages[name] = function () {\n\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t };\n\t }\n\t validator = angular.isObject(validator) ? validator.expression : validator;\n\t var isPossiblyAsync = !angular.isString(validator);\n\t if (useNewValidatorsApi) {\n\t setupWithValidators();\n\t } else {\n\t setupWithParsers();\n\t }\n\n\t function setupWithValidators() {\n\t var validatorCollection = isPossiblyAsync ? \"$asyncValidators\" : \"$validators\";\n\t ctrl[validatorCollection][name] = function evalValidity(modelValue, viewValue) {\n\t var value = formlyUtil.formlyEval(scope, validator, modelValue, viewValue);\n\t if (isPossiblyAsync) {\n\t return isPromiseLike(value) ? value : value ? $q.when(value) : $q.reject(value);\n\t } else {\n\t return value;\n\t }\n\t };\n\t }\n\n\t function setupWithParsers() {\n\t var inFlightValidator = undefined;\n\t ctrl.$parsers.unshift(function evalValidityOfParser(viewValue) {\n\t var isValid = formlyUtil.formlyEval(scope, validator, ctrl.$modelValue, viewValue);\n\t if (isPromiseLike(isValid)) {\n\t ctrl.$pending = ctrl.$pending || {};\n\t ctrl.$pending[name] = true;\n\t inFlightValidator = isValid;\n\t isValid.then(function () {\n\t if (inFlightValidator === isValid) {\n\t ctrl.$setValidity(name, true);\n\t }\n\t })[\"catch\"](function () {\n\t if (inFlightValidator === isValid) {\n\t ctrl.$setValidity(name, false);\n\t }\n\t })[\"finally\"](function () {\n\t if (Object.keys(ctrl.$pending).length === 1) {\n\t delete ctrl.$pending;\n\t } else {\n\t delete ctrl.$pending[name];\n\t }\n\t });\n\t } else {\n\t ctrl.$setValidity(name, isValid);\n\t }\n\t return viewValue;\n\t });\n\t }\n\t });\n\t }\n\t };\n\n\t function isPromiseLike(obj) {\n\t return obj && angular.isFunction(obj.then);\n\t }\n\n\t function checkValidators(validators) {\n\t var allowedProperties = [\"expression\", \"message\"];\n\t var validatorsWithExtraProps = {};\n\t angular.forEach(validators, function (validator, name) {\n\t if (angular.isString(validator)) {\n\t return;\n\t }\n\t var extraProps = [];\n\t angular.forEach(validator, function (v, key) {\n\t if (allowedProperties.indexOf(key) === -1) {\n\t extraProps.push(key);\n\t }\n\t });\n\t if (extraProps.length) {\n\t validatorsWithExtraProps[name] = extraProps;\n\t }\n\t });\n\t if (Object.keys(validatorsWithExtraProps).length) {\n\t throw new Error([\"Validators are only allowed to be functions or objects that have \" + allowedProperties.join(\", \") + \".\", \"You provided some extra properties: \" + JSON.stringify(validatorsWithExtraProps)].join(\" \"));\n\t }\n\t }\n\t}\n\tformlyCustomValidation.$inject = [\"formlyUtil\", \"$q\"];\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyField;\n\n\t/**\n\t * @ngdoc directive\n\t * @name formlyField\n\t * @restrict AE\n\t */\n\t// @ngInject\n\tfunction formlyField($http, $q, $compile, $templateCache, formlyConfig, formlyValidationMessages, formlyApiCheck, formlyUtil, formlyUsability, formlyWarn) {\n\t var arrayify = formlyUtil.arrayify;\n\n\t FormlyFieldController.$inject = [\"$scope\", \"$timeout\", \"$parse\", \"$controller\"];\n\t return {\n\t restrict: \"AE\",\n\t transclude: true,\n\t scope: {\n\t options: \"=\",\n\t model: \"=\",\n\t formId: \"@\", // TODO remove formId in a breaking release\n\t index: \"=?\",\n\t fields: \"=?\",\n\t formState: \"=?\",\n\t form: \"=?\" // TODO require form in a breaking release\n\t },\n\t controller: FormlyFieldController,\n\t link: fieldLink\n\t };\n\n\t // @ngInject\n\t function FormlyFieldController($scope, $timeout, $parse, $controller) {\n\t /* jshint maxstatements:31 */\n\t if ($scope.options.fieldGroup) {\n\t setupFieldGroup();\n\t return;\n\t }\n\n\t var fieldType = getFieldType($scope.options);\n\t simplifyLife($scope.options);\n\t mergeFieldOptionsWithTypeDefaults($scope.options, fieldType);\n\t extendOptionsWithDefaults($scope.options, $scope.index);\n\t checkApi($scope.options);\n\t // set field id to link labels and fields\n\n\t // initalization\n\t setFieldId();\n\t setDefaultValue();\n\t setInitialValue();\n\t runExpressions();\n\t addModelWatcher($scope, $scope.options);\n\t addValidationMessages($scope.options);\n\t invokeControllers($scope, $scope.options, fieldType);\n\n\t // function definitions\n\t function runExpressions() {\n\t // must run on next tick to make sure that the current value is correct.\n\t $timeout(function runExpressionsOnNextTick() {\n\t var field = $scope.options;\n\t var currentValue = valueGetterSetter();\n\t angular.forEach(field.expressionProperties, function runExpression(expression, prop) {\n\t var setter = $parse(prop).assign;\n\t var promise = $q.when(formlyUtil.formlyEval($scope, expression, currentValue));\n\t promise.then(function setFieldValue(value) {\n\t setter(field, value);\n\t });\n\t });\n\t });\n\t }\n\n\t function valueGetterSetter(newVal) {\n\t if (!$scope.model || !$scope.options.key) {\n\t return;\n\t }\n\t if (angular.isDefined(newVal)) {\n\t $scope.model[$scope.options.key] = newVal;\n\t }\n\t return $scope.model[$scope.options.key];\n\t }\n\n\t function simplifyLife(options) {\n\t // add a few empty objects (if they don't already exist) so you don't have to undefined check everywhere\n\t formlyUtil.reverseDeepMerge(options, {\n\t data: {},\n\t templateOptions: {},\n\t validation: {}\n\t });\n\t // create $scope.to so template authors can reference to instead of $scope.options.templateOptions\n\t $scope.to = $scope.options.templateOptions;\n\t }\n\n\t function setFieldId() {\n\t if (angular.isFunction(formlyConfig.extras.getFieldId)) {\n\t $scope.id = formlyConfig.extras.getFieldId($scope.options, $scope.model, $scope);\n\t } else {\n\t var formName = $scope.form && $scope.form.$name || $scope.formId;\n\t $scope.id = formlyUtil.getFieldId(formName, $scope.options, $scope.index);\n\t }\n\t $scope.options.id = $scope.id;\n\t }\n\n\t function setDefaultValue() {\n\t if (angular.isDefined($scope.options.defaultValue) && !angular.isDefined($scope.model[$scope.options.key])) {\n\t $scope.model[$scope.options.key] = $scope.options.defaultValue;\n\t }\n\t }\n\n\t function setInitialValue() {\n\t $scope.options.initialValue = $scope.model && $scope.model[$scope.options.key];\n\t }\n\n\t function mergeFieldOptionsWithTypeDefaults(options, type) {\n\t if (type) {\n\t mergeOptions(options, type.defaultOptions);\n\t }\n\t var properOrder = arrayify(options.optionsTypes).reverse(); // so the right things are overridden\n\t angular.forEach(properOrder, function (typeName) {\n\t mergeOptions(options, formlyConfig.getType(typeName, true, options).defaultOptions);\n\t });\n\t }\n\n\t function mergeOptions(options, extraOptions) {\n\t if (extraOptions) {\n\t if (angular.isFunction(extraOptions)) {\n\t extraOptions = extraOptions(options);\n\t }\n\t formlyUtil.reverseDeepMerge(options, extraOptions);\n\t }\n\t }\n\n\t function extendOptionsWithDefaults(options, index) {\n\t var key = options.key || index || 0;\n\t angular.extend(options, {\n\t // attach the key in case the formly-field directive is used directly\n\t key: key,\n\t value: valueGetterSetter,\n\t runExpressions: runExpressions,\n\t resetModel: resetModel,\n\t updateInitialValue: updateInitialValue\n\t });\n\t }\n\n\t // initialization functions\n\t function addModelWatcher(scope, options) {\n\t if (options.model) {\n\t scope.$watch(\"options.model\", runExpressions, true);\n\t }\n\t }\n\n\t function resetModel() {\n\t $scope.model[$scope.options.key] = $scope.options.initialValue;\n\t if ($scope.options.formControl) {\n\t $scope.options.formControl.$setViewValue($scope.model[$scope.options.key]);\n\t $scope.options.formControl.$render();\n\t $scope.options.formControl.$setUntouched();\n\t $scope.options.formControl.$setPristine();\n\t }\n\t }\n\n\t function updateInitialValue() {\n\t $scope.options.initialValue = $scope.model[$scope.options.key];\n\t }\n\n\t function addValidationMessages(options) {\n\t options.validation.messages = options.validation.messages || {};\n\t angular.forEach(formlyValidationMessages.messages, function createFunctionForMessage(expression, name) {\n\t if (!options.validation.messages[name]) {\n\t options.validation.messages[name] = function evaluateMessage(viewValue, modelValue, scope) {\n\t return formlyUtil.formlyEval(scope, expression, modelValue, viewValue);\n\t };\n\t }\n\t });\n\t }\n\n\t function invokeControllers(scope) {\n\t var options = arguments[1] === undefined ? {} : arguments[1];\n\t var type = arguments[2] === undefined ? {} : arguments[2];\n\n\t angular.forEach([type.controller, options.controller], function (controller) {\n\t if (controller) {\n\t $controller(controller, { $scope: scope });\n\t }\n\t });\n\t }\n\n\t function setupFieldGroup() {\n\t $scope.options.options = $scope.options.options || {};\n\t $scope.options.options.formState = $scope.formState;\n\t }\n\t }\n\n\t // link function\n\t function fieldLink(scope, el) {\n\t if (scope.options.fieldGroup) {\n\t setFieldGroupTemplate();\n\t return;\n\t }\n\n\t addAttributes();\n\t addClasses();\n\n\t var type = getFieldType(scope.options);\n\t var args = arguments;\n\t var thusly = this;\n\t getFieldTemplate(scope.options).then(runManipulators(formlyConfig.templateManipulators.preWrapper)).then(transcludeInWrappers(scope.options)).then(runManipulators(formlyConfig.templateManipulators.postWrapper)).then(setElementTemplate).then(watchFormControl).then(callLinkFunctions)[\"catch\"](function (error) {\n\t formlyWarn(\"there-was-a-problem-setting-the-template-for-this-field\", \"There was a problem setting the template for this field \", scope.options, error);\n\t });\n\n\t function setFieldGroupTemplate() {\n\t checkFieldGroupApi(scope.options);\n\t el.addClass(\"formly-field-group\");\n\t var extraAttributes = \"\";\n\t if (scope.options.elementAttributes) {\n\t extraAttributes = Object.keys(scope.options.elementAttributes).map(function (key) {\n\t return \"\" + key + \"=\\\"\" + scope.options.elementAttributes[key] + \"\\\"\";\n\t }).join(\" \");\n\t }\n\t setElementTemplate(\"\\n \\n \\n \");\n\t }\n\n\t function addAttributes() {\n\t if (scope.options.elementAttributes) {\n\t el.attr(scope.options.elementAttributes);\n\t }\n\t }\n\n\t function addClasses() {\n\t if (scope.options.className) {\n\t el.addClass(scope.options.className);\n\t }\n\t if (scope.options.type) {\n\t el.addClass(\"formly-field-\" + scope.options.type);\n\t }\n\t }\n\n\t function setElementTemplate(templateString) {\n\t el.html(asHtml(templateString));\n\t $compile(el.contents())(scope);\n\t return templateString;\n\t }\n\n\t function watchFormControl(templateString) {\n\t var stopWatchingField = angular.noop;\n\t var stopWatchingShowError = angular.noop;\n\t if (scope.options.noFormControl) {\n\t return;\n\t }\n\t var templateEl = angular.element(\"\" + templateString + \"
\");\n\t var ngModelNode = templateEl[0].querySelector(\"[ng-model],[data-ng-model]\");\n\t if (ngModelNode && ngModelNode.getAttribute(\"name\")) {\n\t watchFieldNameOrExistence(ngModelNode.getAttribute(\"name\"));\n\t }\n\n\t function watchFieldNameOrExistence(name) {\n\t var nameExpressionRegex = /\\{\\{(.*?)}}/;\n\t var nameExpression = nameExpressionRegex.exec(name);\n\t if (nameExpression) {\n\t watchFieldName(nameExpression[1]);\n\t } else {\n\t watchFieldExistence(name);\n\t }\n\t }\n\n\t function watchFieldName(expression) {\n\t scope.$watch(expression, function oneFieldNameChange(name) {\n\t if (name) {\n\t stopWatchingField();\n\t watchFieldExistence(name);\n\t }\n\t });\n\t }\n\n\t function watchFieldExistence(name) {\n\t stopWatchingField = scope.$watch(\"form[\\\"\" + name + \"\\\"]\", function formControlChange(formControl) {\n\t if (formControl) {\n\t scope.fc = formControl; // shortcut for template authors\n\t scope.options.formControl = formControl;\n\t stopWatchingShowError();\n\t addShowMessagesWatcher();\n\t }\n\t });\n\t }\n\n\t function addShowMessagesWatcher() {\n\t stopWatchingShowError = scope.$watch(function watchShowValidationChange() {\n\t var customExpression = formlyConfig.extras.errorExistsAndShouldBeVisibleExpression;\n\t var options = scope.options;\n\t var fc = scope.fc;\n\n\t if (!fc.$invalid) {\n\t return false;\n\t } else if (typeof options.validation.show === \"boolean\") {\n\t return options.validation.show;\n\t } else if (customExpression) {\n\t return formlyUtil.formlyEval(scope, customExpression, fc.$modelValue, fc.$viewValue);\n\t } else {\n\t var noTouchedButDirty = angular.isUndefined(fc.$touched) && fc.$dirty;\n\t return scope.fc.$touched || noTouchedButDirty;\n\t }\n\t }, function onShowValidationChange(show) {\n\t scope.options.validation.errorExistsAndShouldBeVisible = show;\n\t scope.showError = show; // shortcut for template authors\n\t });\n\t }\n\t }\n\n\t function callLinkFunctions() {\n\t if (type && type.link) {\n\t type.link.apply(thusly, args);\n\t }\n\t if (scope.options.link) {\n\t scope.options.link.apply(thusly, args);\n\t }\n\t }\n\n\t function runManipulators(manipulators) {\n\t return function runManipulatorsOnTemplate(template) {\n\t var chain = $q.when(template);\n\t angular.forEach(manipulators, function (manipulator) {\n\t chain = chain.then(function (template) {\n\t return $q.when(manipulator(template, scope.options, scope)).then(function (newTemplate) {\n\t return angular.isString(newTemplate) ? newTemplate : asHtml(newTemplate);\n\t });\n\t });\n\t });\n\t return chain;\n\t };\n\t }\n\t }\n\n\t // stateless util functions\n\t function asHtml(el) {\n\t var wrapper = angular.element(\" \");\n\t return wrapper.append(el).html();\n\t }\n\n\t function getFieldType(options) {\n\t return options.type && formlyConfig.getType(options.type);\n\t }\n\n\t function getFieldTemplate(options) {\n\t function fromOptionsOrType(key, type) {\n\t if (angular.isDefined(options[key])) {\n\t return options[key];\n\t } else if (type && angular.isDefined(type[key])) {\n\t return type[key];\n\t }\n\t }\n\n\t var type = formlyConfig.getType(options.type, true, options);\n\t var template = fromOptionsOrType(\"template\", type);\n\t var templateUrl = fromOptionsOrType(\"templateUrl\", type);\n\t if (angular.isUndefined(template) && !templateUrl) {\n\t throw formlyUsability.getFieldError(\"type-type-has-no-template\", \"Type '\" + options.type + \"' has not template. On element:\", options);\n\t }\n\n\t return getTemplate(templateUrl || template, angular.isUndefined(template), options);\n\t }\n\n\t function getTemplate(template, isUrl, options) {\n\t var templatePromise = undefined;\n\t if (angular.isFunction(template)) {\n\t templatePromise = $q.when(template(options));\n\t } else {\n\t templatePromise = $q.when(template);\n\t }\n\n\t if (!isUrl) {\n\t return templatePromise;\n\t } else {\n\t var _ret = (function () {\n\t var httpOptions = { cache: $templateCache };\n\t return {\n\t v: templatePromise.then(function (url) {\n\t return $http.get(url, httpOptions);\n\t }).then(function (response) {\n\t return response.data;\n\t })[\"catch\"](function handleErrorGettingATemplate(error) {\n\t formlyWarn(\"problem-loading-template-for-templateurl\", \"Problem loading template for \" + template, error);\n\t })\n\t };\n\t })();\n\n\t if (typeof _ret === \"object\") {\n\t return _ret.v;\n\t }\n\t }\n\t }\n\n\t function transcludeInWrappers(options) {\n\t var wrapper = getWrapperOption(options);\n\n\t return function transcludeTemplate(template) {\n\t if (!wrapper.length) {\n\t return $q.when(template);\n\t }\n\n\t wrapper.forEach(function (wrapper) {\n\t formlyUsability.checkWrapper(wrapper, options);\n\t wrapper.validateOptions && wrapper.validateOptions(options);\n\t runApiCheck(wrapper, options);\n\t });\n\t var promises = wrapper.map(function (w) {\n\t return getTemplate(w.template || w.templateUrl, !w.template);\n\t });\n\t return $q.all(promises).then(function (wrappersTemplates) {\n\t wrappersTemplates.forEach(function (wrapperTemplate, index) {\n\t formlyUsability.checkWrapperTemplate(wrapperTemplate, wrapper[index]);\n\t });\n\t wrappersTemplates.reverse(); // wrapper 0 is wrapped in wrapper 1 and so on...\n\t var totalWrapper = wrappersTemplates.shift();\n\t wrappersTemplates.forEach(function (wrapperTemplate) {\n\t totalWrapper = doTransclusion(totalWrapper, wrapperTemplate);\n\t });\n\t return doTransclusion(totalWrapper, template);\n\t });\n\t };\n\t }\n\n\t function doTransclusion(wrapper, template) {\n\t var superWrapper = angular.element(\" \"); // this allows people not have to have a single root in wrappers\n\t superWrapper.append(wrapper);\n\t var transcludeEl = superWrapper.find(\"formly-transclude\");\n\t if (!transcludeEl.length) {\n\t //try it using our custom find function\n\t transcludeEl = formlyUtil.findByNodeName(superWrapper, \"formly-transclude\");\n\t }\n\t transcludeEl.replaceWith(template);\n\t return superWrapper.html();\n\t }\n\n\t function getWrapperOption(options) {\n\t var wrapper = options.wrapper;\n\t // explicit null means no wrapper\n\t if (wrapper === null) {\n\t return [];\n\t }\n\n\t // nothing specified means use the default wrapper for the type\n\t if (!wrapper) {\n\t // get all wrappers that specify they apply to this type\n\t wrapper = arrayify(formlyConfig.getWrapperByType(options.type));\n\t } else {\n\t wrapper = arrayify(wrapper).map(formlyConfig.getWrapper);\n\t }\n\n\t // get all wrappers for that this type specified that it uses.\n\t var type = formlyConfig.getType(options.type, true, options);\n\t if (type && type.wrapper) {\n\t var typeWrappers = arrayify(type.wrapper).map(formlyConfig.getWrapper);\n\t wrapper = wrapper.concat(typeWrappers);\n\t }\n\n\t // add the default wrapper last\n\t var defaultWrapper = formlyConfig.getWrapper();\n\t if (defaultWrapper) {\n\t wrapper.push(defaultWrapper);\n\t }\n\t return wrapper;\n\t }\n\n\t function checkApi(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyFieldOptions, options, {\n\t prefix: \"formly-field directive\",\n\t url: \"formly-field-directive-validation-failed\"\n\t });\n\t // validate with the type\n\t var type = options.type && formlyConfig.getType(options.type);\n\t if (type) {\n\t if (type.validateOptions) {\n\t type.validateOptions(options);\n\t }\n\t runApiCheck(type, options);\n\t }\n\t }\n\n\t function checkFieldGroupApi(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.fieldGroup, options, {\n\t prefix: \"formly-field directive\",\n\t url: \"formly-field-directive-validation-failed\"\n\t });\n\t }\n\n\t function runApiCheck(_ref, options) {\n\t var apiCheck = _ref.apiCheck;\n\t var apiCheckInstance = _ref.apiCheckInstance;\n\t var apiCheckFunction = _ref.apiCheckFunction;\n\t var apiCheckOptions = _ref.apiCheckOptions;\n\n\t if (!apiCheck) {\n\t return;\n\t }\n\t var instance = apiCheckInstance || formlyApiCheck;\n\t var fn = apiCheckFunction || \"warn\";\n\t var shape = instance.shape(apiCheck);\n\t instance[fn](shape, options, apiCheckOptions || {\n\t prefix: \"formly-field \" + name,\n\t url: formlyApiCheck.config.output.docsBaseUrl + \"formly-field-type-apicheck-failed\"\n\t });\n\t }\n\t}\n\tformlyField.$inject = [\"$http\", \"$q\", \"$compile\", \"$templateCache\", \"formlyConfig\", \"formlyValidationMessages\", \"formlyApiCheck\", \"formlyUtil\", \"formlyUsability\", \"formlyWarn\"];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyFocus;\n\n\t// @ngInject\n\tfunction formlyFocus($timeout, $document) {\n\t /* jshint -W052 */\n\t return {\n\t restrict: \"A\",\n\t link: function formlyFocusLink(scope, element, attrs) {\n\t var previousEl = null;\n\t var el = element[0];\n\t var doc = $document[0];\n\t attrs.$observe(\"formlyFocus\", function respondToFocusExpressionChange(value) {\n\t if (value === \"true\") {\n\t $timeout(function setElementFocus() {\n\t previousEl = doc.activeElement;\n\t el.focus();\n\t }, ~ ~attrs.focusWait);\n\t } else if (value === \"false\") {\n\t if (doc.activeElement === el) {\n\t el.blur();\n\t if (attrs.hasOwnProperty(\"refocus\") && previousEl) {\n\t previousEl.focus();\n\t }\n\t }\n\t }\n\t });\n\t }\n\t };\n\t}\n\tformlyFocus.$inject = [\"$timeout\", \"$document\"];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\n\tvar _slice = Array.prototype.slice;\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyForm;\n\n\t/**\n\t * @ngdoc directive\n\t * @name formlyForm\n\t * @restrict E\n\t */\n\t// @ngInject\n\tfunction formlyForm(formlyUsability, $parse, formlyApiCheck, formlyConfig) {\n\t var currentFormId = 1;\n\t return {\n\t restrict: \"E\",\n\t template: function formlyFormGetTemplate(el, attrs) {\n\t /* jshint -W033 */ // this because jshint is broken I guess...\n\t var rootEl = getRootEl();\n\t var fieldRootEl = getFieldRootEl();\n\t var formId = \"formly_\" + currentFormId++;\n\t var parentFormAttributes = \"\";\n\t if (attrs.hasOwnProperty(\"isFieldGroup\") && el.parent().parent().hasClass(\"formly\")) {\n\t parentFormAttributes = copyAttributes(el.parent().parent()[0].attributes);\n\t }\n\t return \"\\n <\" + rootEl + \" class=\\\"formly\\\"\\n name=\\\"\" + getFormName() + \"\\\"\\n role=\\\"form\\\" \" + parentFormAttributes + \">\\n <\" + fieldRootEl + \" formly-field\\n ng-repeat=\\\"field in fields \" + getTrackBy() + \"\\\"\\n \" + getHideDirective() + \"=\\\"!field.hide\\\"\\n class=\\\"formly-field\\\"\\n options=\\\"field\\\"\\n model=\\\"field.model || model\\\"\\n fields=\\\"fields\\\"\\n form=\\\"theFormlyForm\\\"\\n form-id=\\\"\" + getFormName() + \"\\\"\\n form-state=\\\"options.formState\\\"\\n index=\\\"$index\\\">\\n \" + fieldRootEl + \">\\n
\\n \" + rootEl + \">\\n \";\n\n\t function getRootEl() {\n\t return attrs.rootEl || \"ng-form\";\n\t }\n\n\t function getFieldRootEl() {\n\t return attrs.fieldRootEl || \"div\";\n\t }\n\n\t function getHideDirective() {\n\t return attrs.hideDirective || formlyConfig.extras.defaultHideDirective || \"ng-if\";\n\t }\n\n\t function getTrackBy() {\n\t if (!attrs.trackBy) {\n\t return \"\";\n\t } else {\n\t return \"track by \" + attrs.trackBy;\n\t }\n\t }\n\n\t function getFormName() {\n\t var formName = formId;\n\t var bindName = attrs.bindName;\n\t if (bindName) {\n\t if (angular.version.minor < 3) {\n\t throw formlyUsability.getFormlyError(\"bind-name attribute on formly-form not allowed in > angular 1.3\");\n\t }\n\t // we can do a one-time binding here because we know we're in 1.3.x territory\n\t formName = \"{{::'formly_' + \" + bindName + \"}}\";\n\t }\n\t return formName;\n\t }\n\n\t function copyAttributes(attributes) {\n\t var excluded = [\"model\", \"form\", \"fields\", \"options\", \"name\", \"role\", \"class\"];\n\t var arrayAttrs = [];\n\t angular.forEach(attributes, function (_ref) {\n\t var nodeName = _ref.nodeName;\n\t var nodeValue = _ref.nodeValue;\n\n\t if (nodeName !== \"undefined\" && excluded.indexOf(nodeName) === -1) {\n\t arrayAttrs.push(\"\" + toKebabCase(nodeName) + \"=\\\"\" + nodeValue + \"\\\"\");\n\t }\n\t });\n\t return arrayAttrs.join(\" \");\n\t }\n\n\t function toKebabCase(string) {\n\t if (string) {\n\t return string.replace(/([A-Z])/g, function ($1) {\n\t return \"-\" + $1.toLowerCase();\n\t });\n\t } else {\n\t return \"\";\n\t }\n\t }\n\t },\n\t replace: true,\n\t transclude: true,\n\t scope: {\n\t fields: \"=\",\n\t model: \"=\",\n\t form: \"=?\",\n\t options: \"=?\"\n\t },\n\t controller: /* @ngInject */[\"$scope\", \"formlyUtil\", function FormlyFormController($scope, formlyUtil) {\n\t setupOptions();\n\t $scope.model = $scope.model || {};\n\t $scope.fields = $scope.fields || [];\n\n\t angular.forEach($scope.fields, initModel); // initializes the model property if set to 'formState'\n\t angular.forEach($scope.fields, attachKey); // attaches a key based on the index if a key isn't specified\n\t angular.forEach($scope.fields, setupWatchers); // setup watchers for all fields\n\n\t // watch the model and evaluate watch expressions that depend on it.\n\t $scope.$watch(\"model\", onModelOrFormStateChange, true);\n\t if ($scope.options.formState) {\n\t $scope.$watch(\"options.formState\", onModelOrFormStateChange, true);\n\t }\n\n\t function onModelOrFormStateChange() {\n\t angular.forEach($scope.fields, function runFieldExpressionProperties(field, index) {\n\t /*jshint -W030 */\n\t var model = field.model || $scope.model;\n\t field.runExpressions && field.runExpressions(model);\n\t if (field.hideExpression) {\n\t // can't use hide with expressionProperties reliably\n\t var val = model[field.key];\n\t // this makes it closer to what a regular expressionProperty would be\n\t var extraLocals = {\n\t options: field,\n\t index: index,\n\t formState: $scope.options.formState,\n\t formId: $scope.formId\n\t };\n\t field.hide = formlyUtil.formlyEval($scope, field.hideExpression, val, val, extraLocals);\n\t }\n\t });\n\t }\n\n\t function setupOptions() {\n\t formlyApiCheck[\"throw\"]([formlyApiCheck.formOptionsApi.optional], [$scope.options], { prefix: \"formly-form options check\" });\n\t $scope.options = $scope.options || {};\n\t $scope.options.formState = $scope.options.formState || {};\n\n\t angular.extend($scope.options, {\n\t updateInitialValue: updateInitialValue,\n\t resetModel: resetModel\n\t });\n\t }\n\n\t function updateInitialValue() {\n\t angular.forEach($scope.fields, function (field) {\n\t if (isFieldGroup(field)) {\n\t field.options.updateInitialValue();\n\t } else {\n\t field.updateInitialValue();\n\t }\n\t });\n\t }\n\n\t function resetModel() {\n\t angular.forEach($scope.fields, function (field) {\n\t if (isFieldGroup(field)) {\n\t field.options.resetModel();\n\t } else {\n\t field.resetModel();\n\t }\n\t });\n\t }\n\n\t function initModel(field) {\n\t if (field.model && field.model === \"formState\") {\n\t field.model = $scope.options.formState;\n\t }\n\t }\n\n\t function attachKey(field, index) {\n\t if (!isFieldGroup(field)) {\n\t field.key = field.key || index || 0;\n\t }\n\t }\n\n\t function setupWatchers(field, index) {\n\t if (isFieldGroup(field) || !angular.isDefined(field.watcher)) {\n\t return;\n\t }\n\t var watchers = field.watcher;\n\t if (!angular.isArray(watchers)) {\n\t watchers = [watchers];\n\t }\n\t angular.forEach(watchers, function setupWatcher(watcher) {\n\t if (!angular.isDefined(watcher.listener)) {\n\t throw formlyUsability.getFieldError(\"all-field-watchers-must-have-a-listener\", \"All field watchers must have a listener\", field);\n\t }\n\t var watchExpression = getWatchExpression(watcher, field, index);\n\t var watchListener = getWatchListener(watcher, field, index);\n\n\t var type = watcher.type || \"$watch\";\n\t watcher.stopWatching = $scope[type](watchExpression, watchListener, watcher.watchDeep);\n\t });\n\t }\n\n\t function getWatchExpression(watcher, field, index) {\n\t var watchExpression = watcher.expression || \"model['\" + field.key + \"']\";\n\t if (angular.isFunction(watchExpression)) {\n\t // wrap the field's watch expression so we can call it with the field as the first arg\n\t // and the stop function as the last arg as a helper\n\t var originalExpression = watchExpression;\n\t watchExpression = function formlyWatchExpression() {\n\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t return originalExpression.apply(undefined, _toConsumableArray(args));\n\t };\n\t watchExpression.displayName = \"Formly Watch Expression for field for \" + field.key;\n\t }\n\t return watchExpression;\n\t }\n\n\t function getWatchListener(watcher, field, index) {\n\t var watchListener = watcher.listener;\n\t if (angular.isFunction(watchListener)) {\n\t // wrap the field's watch listener so we can call it with the field as the first arg\n\t // and the stop function as the last arg as a helper\n\t var originalListener = watchListener;\n\t watchListener = function formlyWatchListener() {\n\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t return originalListener.apply(undefined, _toConsumableArray(args));\n\t };\n\t watchListener.displayName = \"Formly Watch Listener for field for \" + field.key;\n\t }\n\t return watchListener;\n\t }\n\n\t function modifyArgs(watcher, index) {\n\t for (var _len = arguments.length, originalArgs = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n\t originalArgs[_key - 2] = arguments[_key];\n\t }\n\n\t return [$scope.fields[index]].concat(originalArgs, [watcher.stopWatching]);\n\t }\n\n\t function isFieldGroup(field) {\n\t return field && !!field.fieldGroup;\n\t }\n\t }],\n\t link: function link(scope, el, attrs) {\n\t var formId = attrs.name;\n\t scope.formId = formId;\n\t scope.theFormlyForm = scope[formId];\n\t if (attrs.form) {\n\t $parse(attrs.form).assign(scope.$parent, scope[formId]);\n\t }\n\n\t // chrome autocomplete lameness\n\t // see https://code.google.com/p/chromium/issues/detail?id=468153#c14\n\t // ლ(ಠ益ಠლ) (╯°□°)╯︵ ┻━┻ (◞‸◟;)\n\t var global = formlyConfig.extras.removeChromeAutoComplete === true;\n\t var offInstance = scope.options && scope.options.removeChromeAutoComplete === false;\n\t var onInstance = scope.options && scope.options.removeChromeAutoComplete === true;\n\t if (global && !offInstance || onInstance) {\n\t var input = document.createElement(\"input\");\n\t input.setAttribute(\"autocomplete\", \"address-level4\");\n\t input.setAttribute(\"hidden\", true);\n\t el[0].appendChild(input);\n\t }\n\t }\n\t };\n\t}\n\tformlyForm.$inject = [\"formlyUsability\", \"$parse\", \"formlyApiCheck\", \"formlyConfig\"];\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = addFormlyNgModelAttrsManipulator;\n\n\t// @ngInject\n\tfunction addFormlyNgModelAttrsManipulator(formlyConfig) {\n\t if (formlyConfig.extras.disableNgModelAttrsManipulator) {\n\t return;\n\t }\n\t formlyConfig.templateManipulators.preWrapper.push(ngModelAttrsManipulator);\n\n\t function ngModelAttrsManipulator(template, options, scope) {\n\t /* jshint maxcomplexity:6 */\n\t var el = document.createElement(\"div\");\n\t var data = options.data;\n\t if (data.skipNgModelAttrsManipulator === true) {\n\t return template;\n\t }\n\t el.innerHTML = template;\n\t var modelNodes = el.querySelectorAll(\"[ng-model], [data-ng-model]\");\n\t if (!modelNodes || !modelNodes.length) {\n\t return template;\n\t }\n\n\t addIfNotPresent(modelNodes, \"id\", scope.id);\n\t addIfNotPresent(modelNodes, \"name\", scope.id);\n\n\t addValidation();\n\t addModelOptions();\n\t addTemplateOptionsAttrs();\n\n\t return el.innerHTML;\n\n\t function addValidation() {\n\t if (angular.isDefined(options.validators) || angular.isDefined(options.validation.messages)) {\n\t addIfNotPresent(modelNodes, \"formly-custom-validation\", \"\");\n\t }\n\t }\n\n\t function addModelOptions() {\n\t if (angular.isDefined(options.modelOptions)) {\n\t addIfNotPresent(modelNodes, \"ng-model-options\", \"options.modelOptions\");\n\t if (options.modelOptions.getterSetter) {\n\t angular.forEach(modelNodes, function (node) {\n\t node.setAttribute(\"ng-model\", \"options.value\");\n\t });\n\t }\n\t }\n\t }\n\n\t function addTemplateOptionsAttrs() {\n\t if (!options.templateOptions && !options.expressionProperties) {\n\t // no need to run these if there are no templateOptions or expressionProperties\n\t return;\n\t }\n\t var to = options.templateOptions || {};\n\t var ep = options.expressionProperties || {};\n\n\t var ngModelAttributes = getBuiltInAttributes();\n\n\t // extend with the user's specifications winning\n\t angular.extend(ngModelAttributes, options.ngModelAttrs);\n\n\t // Feel free to make this more simple :-)\n\t angular.forEach(ngModelAttributes, function (val, name) {\n\t /* jshint maxcomplexity:14 */\n\t var attrVal = undefined;\n\t var attrName = undefined;\n\t var ref = \"options.templateOptions['\" + name + \"']\";\n\t var toVal = to[name];\n\t var epVal = getEpValue(ep, name);\n\n\t var inTo = angular.isDefined(toVal);\n\t var inEp = angular.isDefined(epVal);\n\t if (val.value) {\n\t // I realize this looks backwards, but it's right, trust me...\n\t attrName = val.value;\n\t attrVal = name;\n\t } else if (val.expression && inTo) {\n\t attrName = val.expression;\n\t if (angular.isString(to[name])) {\n\t attrVal = \"$eval(\" + ref + \")\";\n\t } else if (angular.isFunction(to[name])) {\n\t attrVal = \"\" + ref + \"(model[options.key], options, this, $event)\";\n\t } else {\n\t throw new Error(\"options.templateOptions.\" + name + \" must be a string or function: \" + JSON.stringify(options));\n\t }\n\t } else if (val.bound && inEp) {\n\t attrName = val.bound;\n\t attrVal = ref;\n\t } else if ((val.attribute || val.boolean) && inEp) {\n\t attrName = val.attribute || val.boolean;\n\t attrVal = \"{{\" + ref + \"}}\";\n\t } else if (val.attribute && inTo) {\n\t attrName = val.attribute;\n\t attrVal = toVal;\n\t } else if (val.boolean) {\n\t if (inTo && !inEp && toVal) {\n\t attrName = val.boolean;\n\t attrVal = true;\n\t } else {}\n\t } else if (val.bound && inTo) {\n\t attrName = val.bound;\n\t attrVal = ref;\n\t }\n\n\t if (angular.isDefined(attrName) && angular.isDefined(attrVal)) {\n\t addIfNotPresent(modelNodes, attrName, attrVal);\n\t }\n\t });\n\t }\n\t }\n\n\t // Utility functions\n\t function getBuiltInAttributes() {\n\t var ngModelAttributes = {\n\t focus: {\n\t attribute: \"formly-focus\"\n\t }\n\t };\n\t var boundOnly = [];\n\t var bothBooleanAndBound = [\"required\", \"disabled\"];\n\t var bothAttributeAndBound = [\"pattern\", \"minlength\"];\n\t var expressionOnly = [\"change\", \"keydown\", \"keyup\", \"keypress\", \"click\", \"focus\", \"blur\"];\n\t var attributeOnly = [\"placeholder\", \"min\", \"max\", \"tabindex\", \"type\"];\n\t if (formlyConfig.extras.ngModelAttrsManipulatorPreferUnbound) {\n\t bothAttributeAndBound.push(\"maxlength\");\n\t } else {\n\t boundOnly.push(\"maxlength\");\n\t }\n\n\t angular.forEach(boundOnly, function (item) {\n\t ngModelAttributes[item] = { bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(bothBooleanAndBound, function (item) {\n\t ngModelAttributes[item] = { boolean: item, bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(bothAttributeAndBound, function (item) {\n\t ngModelAttributes[item] = { attribute: item, bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(expressionOnly, function (item) {\n\t var propName = \"on\" + item.substr(0, 1).toUpperCase() + item.substr(1);\n\t ngModelAttributes[propName] = { expression: \"ng-\" + item };\n\t });\n\n\t angular.forEach(attributeOnly, function (item) {\n\t ngModelAttributes[item] = { attribute: item };\n\t });\n\t return ngModelAttributes;\n\t }\n\n\t function getEpValue(ep, name) {\n\t return ep[\"templateOptions.\" + name] || ep[\"templateOptions['\" + name + \"']\"] || ep[\"templateOptions[\\\"\" + name + \"\\\"]\"];\n\t }\n\n\t function addIfNotPresent(nodes, attr, val) {\n\t angular.forEach(nodes, function (node) {\n\t if (!node.getAttribute(attr)) {\n\t node.setAttribute(attr, val);\n\t }\n\t });\n\t }\n\t}\n\taddFormlyNgModelAttrsManipulator.$inject = [\"formlyConfig\"];\n\n\t// jshint -W035\n\t// empty to illustrate that a boolean will not be added via val.bound\n\t// if you want it added via val.bound, then put it in expressionProperties\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = addCustomTags;\n\n\t// @ngInject\n\tfunction addCustomTags($document) {\n\t if ($document && $document.get) {\n\t (function () {\n\t //IE8 check ->\n\t // http://stackoverflow.com/questions/10964966/detect-ie-version-prior-to-v9-in-javascript/10965203#10965203\n\t var document = $document.get(0);\n\t var div = document.createElement(\"div\");\n\t div.innerHTML = \"\";\n\t var isIeLessThan9 = div.getElementsByTagName(\"i\").length === 1;\n\n\t if (isIeLessThan9) {\n\t //add the custom elements that we need for formly\n\t var customElements = [\"formly-field\", \"formly-form\", \"formly-custom-validation\", \"formly-focus\", \"formly-transpose\"];\n\t angular.forEach(customElements, function (el) {\n\t document.createElement(el);\n\t });\n\t }\n\t })();\n\t }\n\t}\n\taddCustomTags.$inject = [\"$document\"];\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\t// some versions of angular don't export the angular module properly,\n\t// so we get it from window in this case.\n\n\tvar angular = _interopRequire(__webpack_require__(17));\n\n\tif (!angular.version) {\n\t angular = window.angular;\n\t}\n\tmodule.exports = angular;\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_16__;\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_17__;\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = { formlyEval: formlyEval, getFieldId: getFieldId, reverseDeepMerge: reverseDeepMerge, findByNodeName: findByNodeName, arrayify: arrayify, extendFunction: extendFunction };\n\n\tfunction formlyEval(scope, expression, $modelValue, $viewValue, extraLocals) {\n\t if (angular.isFunction(expression)) {\n\t return expression($viewValue, $modelValue, scope, extraLocals);\n\t } else {\n\t return scope.$eval(expression, angular.extend({ $viewValue: $viewValue, $modelValue: $modelValue }, extraLocals));\n\t }\n\t}\n\n\tfunction getFieldId(formId, options, index) {\n\t if (options.id) {\n\t return options.id;\n\t }\n\t var type = options.type;\n\t if (!type && options.template) {\n\t type = \"template\";\n\t } else if (!type && options.templateUrl) {\n\t type = \"templateUrl\";\n\t }\n\n\t return [formId, type, options.key, index].join(\"_\");\n\t}\n\n\tfunction reverseDeepMerge(dest) {\n\t angular.forEach(arguments, function (src, index) {\n\t if (!index) {\n\t return;\n\t }\n\t angular.forEach(src, function (val, prop) {\n\t if (!angular.isDefined(dest[prop])) {\n\t dest[prop] = angular.copy(val);\n\t } else if (objAndSameType(dest[prop], val)) {\n\t reverseDeepMerge(dest[prop], val);\n\t }\n\t });\n\t });\n\t}\n\n\tfunction objAndSameType(obj1, obj2) {\n\t return angular.isObject(obj1) && angular.isObject(obj2) && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2);\n\t}\n\n\t//recurse down a node tree to find a node with matching nodeName, for custom tags jQuery.find doesn't work in IE8\n\tfunction findByNodeName(el, nodeName) {\n\t if (!el.prop) {\n\t // not a jQuery or jqLite object -> wrap it\n\t el = angular.element(el);\n\t }\n\n\t if (el.prop(\"nodeName\") === nodeName.toUpperCase()) {\n\t return el;\n\t }\n\n\t var c = el.children();\n\t for (var i = 0; c && i < c.length; i++) {\n\t var node = findByNodeName(c[i], nodeName);\n\t if (node) {\n\t return node;\n\t }\n\t }\n\t}\n\n\tfunction arrayify(obj) {\n\t if (obj && !angular.isArray(obj)) {\n\t obj = [obj];\n\t } else if (!obj) {\n\t obj = [];\n\t }\n\t return obj;\n\t}\n\n\tfunction extendFunction() {\n\t for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n\t fns[_key] = arguments[_key];\n\t }\n\n\t return function extendedFunction() {\n\t var args = arguments;\n\t fns.forEach(function (fn) {\n\t return fn.apply(null, args);\n\t });\n\t };\n\t}\n\n/***/ }\n/******/ ])\n});\n;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/angular-formly/dist/formly.js\n// module id = 3\n// module chunks = 0","module.exports = angular;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"angular\"\n// module id = 4\n// module chunks = 0","// angular-formly-templates-bootstrap version 4.3.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular-formly\"), require(\"api-check\"), require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular-formly\", \"api-check\", \"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ngFormlyTemplatesBootstrap\"] = factory(require(\"angular-formly\"), require(\"api-check\"), require(\"angular\"));\n\telse\n\t\troot[\"ngFormlyTemplatesBootstrap\"] = factory(root[\"ngFormly\"], root[\"apiCheck\"], root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_8__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(11);\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addCheckboxType);\n\t\n\t function addCheckboxType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'multiCheckbox',\n\t template: __webpack_require__(21),\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional\n\t })\n\t },\n\t defaultOptions: {\n\t noFormControl: false,\n\t ngModelAttrs: {\n\t required: {\n\t attribute: '',\n\t bound: ''\n\t }\n\t }\n\t },\n\t apiCheckInstance: c,\n\t controller: /* @ngInject */[\"$scope\", function controller($scope) {\n\t var to = $scope.to;\n\t var opts = $scope.options;\n\t $scope.multiCheckbox = {\n\t checked: [],\n\t change: setModel\n\t };\n\t\n\t // initialize the checkboxes check property\n\t var modelValue = $scope.model[opts.key];\n\t if (angular.isArray(modelValue)) {\n\t (function () {\n\t var valueProp = to.valueProp || 'value';\n\t angular.forEach(to.options, function (v, index) {\n\t $scope.multiCheckbox.checked[index] = modelValue.indexOf(v[valueProp]) !== -1;\n\t });\n\t })();\n\t }\n\t\n\t function checkValidity(expressionValue) {\n\t var valid = angular.isArray($scope.model[opts.key]) && $scope.model[opts.key].length > 0 && expressionValue;\n\t\n\t $scope.fc.$setValidity('required', valid);\n\t }\n\t\n\t function setModel() {\n\t $scope.model[opts.key] = [];\n\t angular.forEach($scope.multiCheckbox.checked, function (checkbox, index) {\n\t if (checkbox) {\n\t $scope.model[opts.key].push(to.options[index][to.valueProp || 'value']);\n\t }\n\t });\n\t\n\t // Must make sure we mark as touched because only the last checkbox due to a bug in angular.\n\t $scope.fc.$setTouched();\n\t checkValidity(true);\n\t }\n\t\n\t if (opts.expressionProperties && opts.expressionProperties.required) {\n\t $scope.$watch($scope.options.expressionProperties.required, function (newValue) {\n\t checkValidity(newValue);\n\t });\n\t }\n\t\n\t if ($scope.to.required) {\n\t var unwatchFormControl = $scope.$watch('fc', function (newValue) {\n\t if (!newValue) {\n\t return;\n\t }\n\t checkValidity(true);\n\t unwatchFormControl;\n\t });\n\t }\n\t }]\n\t });\n\t }\n\t addCheckboxType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// some versions of angular don't export the angular module properly,\n\t// so we get it from window in this case.\n\t'use strict';\n\t\n\tvar angular = __webpack_require__(8);\n\tif (!angular.version) {\n\t angular = window.angular;\n\t}\n\tmodule.exports = angular;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addWrappers);\n\t\n\t function addWrappers(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setWrapper([{\n\t name: 'bootstrapLabel',\n\t template: __webpack_require__(17),\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t label: c.string,\n\t required: c.bool.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t }, { name: 'bootstrapHasError', template: __webpack_require__(18) }]);\n\t }\n\t addWrappers.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t __webpack_require__(10)(ngModule);\n\t __webpack_require__(1)(ngModule);\n\t __webpack_require__(12)(ngModule);\n\t __webpack_require__(9)(ngModule);\n\t __webpack_require__(13)(ngModule);\n\t __webpack_require__(14)(ngModule);\n\t};\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _addons = __webpack_require__(15);\n\t\n\tvar _addons2 = _interopRequireDefault(_addons);\n\t\n\tvar _description = __webpack_require__(16);\n\t\n\tvar _description2 = _interopRequireDefault(_description);\n\t\n\texports['default'] = function (ngModule) {\n\t (0, _addons2['default'])(ngModule);\n\t (0, _description2['default'])(ngModule);\n\t};\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_8__;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addRadioType);\n\t\n\t function addRadioType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'radio',\n\t template: __webpack_require__(19),\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: {\n\t noFormControl: false\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addRadioType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addCheckboxType);\n\t\n\t function addCheckboxType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'checkbox',\n\t template: __webpack_require__(20),\n\t wrapper: ['bootstrapHasError'],\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t label: c.string\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addCheckboxType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\tvar ngModuleName = 'formlyBootstrap';\n\tvar angular = __webpack_require__(4);\n\tvar ngModule = angular.module(ngModuleName, [__webpack_require__(2)]);\n\tngModule.constant('formlyBootstrapApiCheck', __webpack_require__(3)({\n\t output: {\n\t prefix: 'angular-formly-bootstrap'\n\t }\n\t}));\n\tngModule.constant('formlyBootstrapVersion', (\"4.3.2\"));\n\t\n\t__webpack_require__(5)(ngModule);\n\t__webpack_require__(6)(ngModule);\n\t__webpack_require__(7)(ngModule);\n\t\n\texports['default'] = ngModuleName;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addInputType);\n\t\n\t function addInputType(formlyConfigProvider) {\n\t formlyConfigProvider.setType({\n\t name: 'input',\n\t template: ' ',\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError']\n\t });\n\t }\n\t addInputType.$inject = [\"formlyConfigProvider\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _defineProperty(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); }\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addSelectType);\n\t\n\t var template = ' ';\n\t\n\t function addSelectType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'select',\n\t template: template,\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: function defaultOptions(options) {\n\t /* jshint maxlen:195 */\n\t var ngOptions = options.templateOptions.ngOptions || 'option[to.valueProp || \\'value\\'] as option[to.labelProp || \\'name\\'] group by option[to.groupProp || \\'group\\'] for option in to.options';\n\t return {\n\t ngModelAttrs: _defineProperty({}, ngOptions, {\n\t value: 'ng-options'\n\t })\n\t };\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional,\n\t groupProp: c.string.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addSelectType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addTextareaType);\n\t\n\t function addTextareaType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'textarea',\n\t template: '',\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: {\n\t ngModelAttrs: {\n\t rows: { attribute: 'rows' },\n\t cols: { attribute: 'cols' }\n\t }\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t rows: c.number.optional,\n\t cols: c.number.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addTextareaType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.run(addAddonsManipulator);\n\t\n\t function addAddonsManipulator(formlyConfig, formlyBootstrapApiCheck) {\n\t var addonTemplate = __webpack_require__(22);\n\t var addonChecker = formlyBootstrapApiCheck.shape({\n\t 'class': formlyBootstrapApiCheck.string.optional,\n\t text: formlyBootstrapApiCheck.string.optional,\n\t onClick: formlyBootstrapApiCheck.func.optional\n\t }).strict.optional;\n\t var api = formlyBootstrapApiCheck.shape({\n\t templateOptions: formlyBootstrapApiCheck.shape({\n\t addonLeft: addonChecker,\n\t addonRight: addonChecker\n\t })\n\t });\n\t formlyConfig.templateManipulators.preWrapper.push(function (template, options) {\n\t if (!options.templateOptions.addonLeft && !options.templateOptions.addonRight) {\n\t return template;\n\t }\n\t formlyBootstrapApiCheck.warn([api], [options]);\n\t return addonTemplate.replace(' ', template);\n\t });\n\t }\n\t addAddonsManipulator.$inject = [\"formlyConfig\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.run(addDescriptionManipulator);\n\t\n\t function addDescriptionManipulator(formlyConfig) {\n\t formlyConfig.templateManipulators.preWrapper.push(function ariaDescribedBy(template, options, scope) {\n\t if (angular.isDefined(options.templateOptions.description)) {\n\t var el = document.createElement('div');\n\t el.appendChild(angular.element(template)[0]);\n\t el.appendChild(angular.element('' + '{{to.description}}' + '
')[0]);\n\t var modelEls = angular.element(el.querySelectorAll('[ng-model]'));\n\t if (modelEls) {\n\t modelEls.attr('aria-describedby', scope.id + '_description');\n\t }\n\t return el.innerHTML;\n\t } else {\n\t return template;\n\t }\n\t });\n\t }\n\t addDescriptionManipulator.$inject = [\"formlyConfig\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n \\n {{to.label}}\\n {{to.required ? '*' : ''}}\\n \\n \\n
\\n\"\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n \\n
\\n\"\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n \\n {{option[to.labelProp || 'name']}}\\n \\n
\\n
\\n\"\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n\\t\\n\\t\\t \\n\\t\\t{{to.label}}\\n\\t\\t{{to.required ? '*' : ''}}\\n\\t \\n
\\n\"\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n \\n {{option[to.labelProp || 'name']}}\\n \\n
\\n
\\n\"\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n {{to.addonLeft.text}} \\n
\\n
\\n
\\n \\n {{to.addonRight.text}} \\n
\\n
\\n\"\n\n/***/ }\n/******/ ])\n});\n;\n//# sourceMappingURL=angular-formly-templates-bootstrap.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/angular-formly-templates-bootstrap/dist/angular-formly-templates-bootstrap.js\n// module id = 5\n// module chunks = 0","import edaFormViewerMainModule from './components/main/eda.easyFormViewer.main.module';\nimport edaFormViewerCoreModule from './components/core/eda.easyFormViewer.core.module';\nimport edaFormViewerModelTranslatorModule from './components/modelsTranslator/eda.easyFormViewer.modelTranslator.module';\n\nimport edaEasyFormViewerConfig from '../stepway/config/formly/formly.config.js';\n\nimport easyFormConfig from '../easyFormConfig.json';\n\nconst DEP_TO_INJECT_IN_MAIN = [\n edaFormViewerMainModule.name,\n edaFormViewerCoreModule.name,\n edaFormViewerModelTranslatorModule.name\n];\n\nconst EASY_FORM_VIEWER_VERSION_NAME = 'easyFormViewerVersion';\nconst EASY_FORM_VIEWER_VERSION_VALUE = easyFormConfig.formviewer.version;\nconst MAIN_MODULE_NAME = 'eda.easyFormViewer';\n\nconst mainModule = angular\n .module(MAIN_MODULE_NAME, DEP_TO_INJECT_IN_MAIN)\n .config(edaEasyFormViewerConfig)\n .value(EASY_FORM_VIEWER_VERSION_NAME, EASY_FORM_VIEWER_VERSION_VALUE);\n\nexport default mainModule;\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/formviewer/main.js","/* global angular */\nimport edaFormViewerDirective, {\n\tEASY_FORM_VIEWER_DIRECTIVE_NAME\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './eda.easyFormViewer.main.directive';\n\nimport edaEasyFormViewerController, {\n\tEASY_FORM_VIEWER_CONTROLLER\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './eda.easyFormViewer.main.controller';\n\nconst FORM_VIEWER_MAIN_MODULE_NAME = 'edaFormViewerMainModule';\n\nexport default angular\n\t\t\t\t\t\t\t\t.module(FORM_VIEWER_MAIN_MODULE_NAME, [])\n\t\t\t\t\t\t\t\t.directive(EASY_FORM_VIEWER_DIRECTIVE_NAME, edaFormViewerDirective)\n\t\t\t\t\t\t\t\t.controller(EASY_FORM_VIEWER_CONTROLLER, edaEasyFormViewerController);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/formviewer/components/main/eda.easyFormViewer.main.module.js","/* global angular */\nimport easyFormViewerTemplate \t\t\t\tfrom './eda.easyFormViewer.main.template.html';\n\nimport {\n\treturnAttributeConfigurationLinesIfNotEmpty\n\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './eda.easyFormViewer.main.directive.helpers';\n\nimport {\n\tEASY_FORM_VIEWER_CONTROLLER,\n\tEASY_FORM_VIEWER_CONTROLLERAS\n} \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './eda.easyFormViewer.main.controller';\n\nconst EASY_FORM_VIEWER_DIRECTIVE_NAME = 'edaEasyFormViewer';\n\nfunction edaFormViewerDirective($modelsTranslator){\n\t\tvar directive = {\n\t\t\trestrict \t: 'E',\n\t\t\tscope \t\t: {\n\t\t\t\tedaEasyFormViewerDataModel \t\t\t\t\t\t\t\t\t\t: '=?',\n\t\t\t\tedaEasyFormViewerEasyFormGeneratorFieldsModel : '=?',\n\t\t\t\tedaEasyFormViewerSubmitButtonText \t\t\t\t\t\t: '@?',\n\t\t\t\tedaEasyFormViewerCancelButtonText \t\t\t\t\t\t: '@?',\n\t\t\t\tedaEasyFormViewerSubmitFormEvent \t\t\t\t\t\t: '&?',\n\t\t\t\tedaEasyFormViewerCancelFormEvent\t\t\t\t\t\t\t: '&?'\n\t\t\t},\n\t\t\treplace \t\t\t: false,\n\t\t\tcontroller\t\t: EASY_FORM_VIEWER_CONTROLLER,\n\t\t\tcontrollerAs \t: EASY_FORM_VIEWER_CONTROLLERAS,\n\t\t\ttemplate \t\t\t: easyFormViewerTemplate,\n\t\t\tlink \t\t\t\t\t: linkFct\n\t\t};\n\treturn directive;\n\n\n\tfunction linkFct(scope) {\n\t\tscope.vm.model \t\t\t\t= scope.edaEasyFormViewerDataModel;\n\t\tscope.vm.fields \t\t\t= loadFieldsModel();\n\t\tscope.vm.submitText \t= scope.edaEasyFormViewerSubmitButtonText || 'Submit';\n\t\tscope.vm.cancelText \t= scope.edaEasyFormViewerCancelButtonText || 'Cancel';\n\n\t\tscope.$watch(fieldsModelToWatch, \t\tfieldsModelWatcher, \ttrue);\n\t\tscope.$watch(dataModelToWatch,\t\t\tdataModelWatcher,\t\t\ttrue);\n\t\tscope.$watch(submitBtnTextToWatch, \tsubmitBtnTextWatcher);\n\t\tscope.$watch(cancelBtnTextToWatch, \tcancelBtnTextWatcher);\n\t\tscope.$watch(submitEventToWatch, \t\tsubmitEventWatcher);\n\t\tscope.$watch(cancelEventToWatch, \t\tcancelEventWatcher);\n\n\t\tfunction dataModelToWatch() {\n\t\t\treturn scope.edaEasyFormViewerDataModel;\n\t\t}\n\n\t\tfunction fieldsModelToWatch() {\n\t\t\treturn scope.edaEasyFormViewerEasyFormGeneratorFieldsModel;\n\t\t}\n\n\t\tfunction submitBtnTextToWatch(){\n\t\t\treturn scope.edaEasyFormViewerSubmitButtonText;\n\t\t}\n\n\t\tfunction cancelBtnTextToWatch(){\n\t\t\treturn scope.edaEasyFormViewerCancelButtonText;\n\t\t}\n\n\t\tfunction submitEventToWatch(){\n\t\t\treturn scope.vm.hasJustSumitted;\n\t\t}\n\n\t\tfunction cancelEventToWatch(){\n\t\t\treturn scope.vm.hasJustCancelled;\n\t\t}\n\n\t\tfunction fieldsModelWatcher(newFieldsModel){\n\t\t\tscope.vm.fields = loadExistingConfigurationModel(newFieldsModel);\n\t\t}\n\n\t\tfunction submitBtnTextWatcher(newSubmitBtntext, oldSubmitBtntext){\n\t\t\tif (newSubmitBtntext !== oldSubmitBtntext) {\n\t\t\t\tscope.vm.submitText \t= newSubmitBtntext || 'Submit';\n\t\t\t}\n\t\t}\n\n\t\tfunction cancelBtnTextWatcher(newCancelBtntext, oldCancelBtntext){\n\t\t\tif (newCancelBtntext !== oldCancelBtntext) {\n\t\t\t\tscope.vm.cancelText \t= newCancelBtntext || 'Submit';\n\t\t\t}\n\t\t}\n\n\t\tfunction dataModelWatcher(newDataModel) {\n\t\t\tscope.vm.model = angular.copy(newDataModel);\n\t\t}\n\n\t\tfunction submitEventWatcher(newSubmitEvent){\n\t\t\tif (newSubmitEvent === true) {\n\t\t\t\t\tif (angular.isFunction(scope.edaEasyFormViewerSubmitFormEvent)) {\n\t\t\t\t\t\tconst _dataModelSubmitted = scope.vm.model ;\n\t\t\t\t\t\tscope.edaEasyFormViewerSubmitFormEvent({ dataModelSubmitted : _dataModelSubmitted });\n\t\t\t\t\t}\n\t\t\t}\n\t\t\tscope.vm.hasJustSumitted = false;\n\t\t}\n\n\t\tfunction cancelEventWatcher(newCancelEvent){\n\t\t\tif (newCancelEvent === true) {\n\t\t\t\t\tif (angular.isFunction(scope.edaEasyFormViewerCancelFormEvent)) {\n\t\t\t\t\t\tscope.edaEasyFormViewerCancelFormEvent();\n\t\t\t\t\t}\n\t\t\t}\n\t\t\tscope.vm.hasJustCancelled = false;\n\t\t}\n\n\t\t/**\n\t\t\t* TODO : check if formly or easy form generato fields model\n\t\t\t*\n\t\t\t* by default or if both -> easy for generator is chosen\n\t\t\t*/\n\t\tfunction loadFieldsModel(){\n\t\t\tconst initialFieldsModel = angular.isArray(scope.edaEasyFormViewerEasyFormGeneratorFieldsModel)\n ? loadExistingConfigurationModel(scope.edaEasyFormViewerEasyFormGeneratorFieldsModel) //translate easy form generator to formly fields model\n\t\t\t\t: {};\n\t\t\treturn initialFieldsModel;\n\t\t}\n\n\t\tfunction loadExistingConfigurationModel(loadedFieldModel){\n\n\t\t\tif (angular.isArray(loadedFieldModel)) {\n\t\t\t\tconst configlines = returnAttributeConfigurationLinesIfNotEmpty(loadedFieldModel);\n\t\t\t\tconst formlyFieldsModel \t\t= [];\n\n\t\t\t\tscope.configurationLoaded = {};\n\n\t\t\t\t$modelsTranslator.bindConfigurationLines(scope.configurationLoaded,configlines);\n\t\t\t\t/**\n\t\t\t\t\t* rebind special control properties :\n\t\t\t\t\t*\n\t\t\t\t\t* formly expression properties\n\t\t\t\t\t* Validators\n\t\t\t\t\t* Validation\n\t\t\t\t\t*/\n\t\t\t\t$modelsTranslator.refreshControlFormlyExpressionProperties(scope.configurationLoaded);\n\t\t\t\t$modelsTranslator.refreshControlFormlyValidators(scope.configurationLoaded);\n\t\t\t\t$modelsTranslator.refreshControlFormlyValidation(scope.configurationLoaded);\n\n\t\t\t\t//apply configuration model\n\t\t\t\tscope.configuration = angular.copy(scope.configurationLoaded);\n\n\t\t\t\t//apply formly model\n\t\t\t\t$modelsTranslator.applyConfigurationToformlyModel(scope.configurationLoaded, formlyFieldsModel, scope.vm.model);\n\n\t\t\t\treturn formlyFieldsModel;\n\t\t\t}\n\n\t\t}\n\n\n\n\n\t}\n\n\n}\n\nedaFormViewerDirective.$inject = [\n\t'$modelsTranslator'\n];\nexport default edaFormViewerDirective;\nexport {EASY_FORM_VIEWER_DIRECTIVE_NAME};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/formviewer/components/main/eda.easyFormViewer.main.directive.js","module.exports = \"\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/formviewer/components/main/eda.easyFormViewer.main.template.html\n// module id = 9\n// module chunks = 0","/* global angular */\n\nconst EMPTY_FIELD_MODEL = [\n\t{\n\t\t'line': 1,\n\t\t'activeColumn': 1,\n\t\t'columns': [\n\t\t\t{\n\t\t\t\t'numColumn': 1,\n\t\t\t\t'exist': true,\n\t\t\t\t'control': {\n\t\t\t\t\t'type': 'none',\n\t\t\t\t\t'key': 'none'\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}\n];\n\n/**\n\t* empty fields model : to display at least an empty line\n\t* otherwise would look like ugly empty line like it were a bug\n\t*/\nconst emptyEdaFieldsModel = ()=>{\n\treturn angular.copy(EMPTY_FIELD_MODEL);\n};\n\n\n\nconst returnAttributeDataModelIfNotEmpty = (edaEasyFormGeneratorModel)=>{\n\tlet dataModelToReturn = (\n\t\t\tangular.isArray(edaEasyFormGeneratorModel.dataModel) ? ( \n\t\t\t\t\tedaEasyFormGeneratorModel.dataModel.length > 0 ? \n\t\t\t\t\tedaEasyFormGeneratorModel.dataModel \n\t\t\t\t\t: []\n\t\t\t\t\t) \n\t\t\t: []\n\t);\n\t\treturn dataModelToReturn; \n};\n\n\nconst returnAttributeConfigurationLinesIfNotEmpty = (loadedFieldModel)=>{\n\tlet edaEasyFormGeneratorModelToReturn = (\n\t\t\tangular.isArray(loadedFieldModel) ? ( \n\t\t\t\t\tloadedFieldModel.length > 0 ? \n\t\t\t\t\t\tloadedFieldModel \n\t\t\t\t\t: emptyEdaFieldsModel()\n\t\t\t\t\t) \n\t\t\t: emptyEdaFieldsModel()\n\t);\n\t\treturn edaEasyFormGeneratorModelToReturn; \n}; \n\n\nexport {\n\temptyEdaFieldsModel,\n\treturnAttributeDataModelIfNotEmpty,\n\treturnAttributeConfigurationLinesIfNotEmpty\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/formviewer/components/main/eda.easyFormViewer.main.directive.helpers.js","const EASY_FORM_VIEWER_CONTROLLER \t= 'edaEasyFormViewerCtrl';\nconst EASY_FORM_VIEWER_CONTROLLERAS\t= 'vm';\n\nclass edaEasyFormViewerController{\n\t\n\tconstructor(){\n\t\tthis.init();\n\t}\n\t\n\tinit(){\n\t\tthis.model \t\t\t\t\t\t= {};\n\t\tthis.fields \t\t\t\t\t= {};\n\t\tthis.hasJustSumitted \t= false;\n\t\tthis.hasJustCancelled = false;\n\t}\n\t\n\tedaSubmitThisDataModel(){\n\t\tthis.hasJustSumitted = true;\n\t}\n\t\n\tedaCancelEvent(){\n\t\tthis.hasJustCancelled = true;\n\t}\t\n\t\n}\n\nedaEasyFormViewerController.$inject = [];\n\nexport default edaEasyFormViewerController;\n\nexport {\n\tEASY_FORM_VIEWER_CONTROLLER,\n\tEASY_FORM_VIEWER_CONTROLLERAS\n};\n\n\n// WEBPACK FOOTER //\n// ./src/app/formviewer/components/main/eda.easyFormViewer.main.controller.js","const CORE_MODULES = [\n\t'textAngular', \n\t'formly', \n\t'ngAnimate',\n\t'formlyBootstrap', \n\t'ui.bootstrap', \n\t'nya.bootstrap.select' \n];\n\nconst FORMVIEWER_CORE_MODULE_NAME = 'edaEasyFormViewerCore.module';\n\nexport default angular\n\t\t\t\t\t\t\t\t.module(FORMVIEWER_CORE_MODULE_NAME, CORE_MODULES);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/formviewer/components/core/eda.easyFormViewer.core.module.js","/* global angular */\nimport $modelsTranslator, {\n\tMODEL_TRANSLATOR_SERVICE\n}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom './eda.easyFormViewer.modelTranslator.service';\n\n\n\nconst FORM_VIEWER_MODEL_TRANSLATOR_MODULE_NAME = 'edaFormViewerModelTranslatorModule';\n\nexport default angular\n\t\t\t\t\t\t\t\t.module(FORM_VIEWER_MODEL_TRANSLATOR_MODULE_NAME, [])\n\t\t\t\t\t\t\t\t.service(MODEL_TRANSLATOR_SERVICE, $modelsTranslator);\n\n\n// WEBPACK FOOTER //\n// ./src/app/formviewer/components/modelsTranslator/eda.easyFormViewer.modelTranslator.module.js","import {\n resetNyaSelect,\n getEmptyConfigModelResult,\n resetDataModel,\n getErrorObject,\n getMessageObject,\n resetFormlyModel,\n addOneColumnControl,\n addTwoColumnControl,\n addThreeColumnControl\n} from './eda.easyFormViewer.modelTranslator.service.helpers';\n\nconst MODEL_TRANSLATOR_SERVICE = '$modelsTranslator';\n\nclass $modelsTranslator {\n static $inject = [];\n\n constructor() {\n\n }\n\n initNyaSelect(nyaSelectObj){\n return resetNyaSelect(nyaSelectObj);\n }\n\n /**\n * get all controls definition (nyaSelectObj)\n *\n * needed to bind these properties :\n *\n * formlyExpressionProperties: {},\n * formlyValidators: {},\n * formlyValidation\n */\n getControlsDefinition(){\n const controls = {};\n resetNyaSelect(controls);\n return controls;\n }\n\n /**\n * loading forms will not be able to retrieve formlyExpressionProperties\n * -> here does the job\n */\n refreshControlFormlyExpressionProperties(configurationModel){\n if (angular.isObject(configurationModel)) {\n //iterates lines\n angular.forEach(configurationModel.lines, (line) => {\n angular.forEach(line.columns, (column) => {\n const _controlsDefinition = this.getControlsDefinition();\n angular.forEach(_controlsDefinition.controls, (aControl) => {\n if (column.control.type === aControl.formlyType &&\n column.control.subtype === aControl.formlySubtype) {\n //----> update control formlyExpressionProperties property\n column.control.formlyExpressionProperties = aControl.formlyExpressionProperties;\n }\n });\n });\n });\n }\n }\n\n /**\n * loading forms will not be able to retrieve formlyValidators\n * -> here does the job\n */\n refreshControlFormlyValidators(configurationModel){\n if (angular.isObject(configurationModel)) {\n //iterates lines\n angular.forEach(configurationModel.lines, (line) => {\n angular.forEach(line.columns, (column) => {\n const _controlsDefinition = this.getControlsDefinition();\n angular.forEach(_controlsDefinition.controls, (aControl) => {\n if (column.control.type === aControl.formlyType &&\n column.control.subtype === aControl.formlySubtype) {\n //----> update control formlyValidators property\n column.control.formlyValidators = aControl.formlyValidators;\n }\n });\n });\n });\n }\n }\n\n /**\n * loading forms will not be able to retrieve formlyValidation\n * -> here does the job\n */\n refreshControlFormlyValidation(configurationModel){\n if (angular.isObject(configurationModel)) {\n //iterates lines\n angular.forEach(configurationModel.lines, (line) => {\n angular.forEach(line.columns, (column) => {\n const _controlsDefinition = this.getControlsDefinition();\n angular.forEach(_controlsDefinition.controls, (aControl) => {\n if (column.control.type === aControl.formlyType &&\n column.control.subtype === aControl.formlySubtype) {\n //----> update control formlyValidation property\n column.control.formlyValidation = aControl.formlyValidation;\n }\n });\n });\n });\n }\n }\n\n bindConfigurationLines(configurationModel, lines){\n if(angular.isArray(lines)){\n const configurationModelResult = getEmptyConfigModelResult();\n configurationModelResult.lines = [].concat(lines);\n angular.copy(configurationModelResult, configurationModel);\n return getMessageObject('configuration model is bound','lines are bound to configuration model.');\n } else {\n return getErrorObject('lines is not an array', 'Checks lines type, it is not an array.');\n }\n }\n\n applyConfigurationToformlyModel(configurationModel, formlyModel, formlyDataModel) {\n resetFormlyModel(formlyModel);\n resetDataModel(formlyDataModel);\n\n configurationModel.lines.forEach(\n (line, lineIndex) => {\n if (line.columns.length === 1) {\n addOneColumnControl(formlyModel, configurationModel, lineIndex);\n }\n if (line.columns.length === 2) {\n addTwoColumnControl(formlyModel, configurationModel, lineIndex);\n }\n if (line.columns.length === 3) {\n addThreeColumnControl(formlyModel, configurationModel, lineIndex);\n }\n }\n );\n }\n}\n\nexport default $modelsTranslator;\n\nexport {MODEL_TRANSLATOR_SERVICE};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/formviewer/components/modelsTranslator/eda.easyFormViewer.modelTranslator.service.js","import { configs as stepwayControls } from '../../../stepway/components/controls';\nimport {\n configurationModelInit,\n configurationModelResult,\n addOneColumnControl,\n addTwoColumnControl,\n addThreeColumnControl\n} from '../../../stepway/services/formlyProxy/formlyProxy.service.helpers';\n\nconst resetNyaSelect = (nyaSelectObj) => {\n //reset\n angular.copy({controls: [...stepwayControls]}, nyaSelectObj);\n return true;\n};\n\nconst getConfigurationModelInit = () => ({ ...configurationModelInit });\n\nconst getEmptyConfigModelResult = () => ({ ...configurationModelResult });\n\nconst resetDataModel = (obj) => {\n const emptyDataModel = {};\n angular.copy(emptyDataModel, obj);\n return true;\n};\n\nconst getErrorObject = (errorTitle, errorMessage) => {\n const messageObj = {\n noError : false,\n title : '',\n Message : ''\n };\n messageObj.noError = false;\n messageObj.title = errorTitle;\n messageObj.Message = errorMessage;\n return messageObj;\n};\n\nconst getMessageObject = (messageTitle, messageBody) => {\n const messageObj = {\n noError : false,\n title : '',\n Message : ''\n };\n messageObj.noError = true;\n messageObj.title = messageTitle;\n messageObj.Message = messageBody;\n return messageObj;\n};\n\nconst resetFormlyModel = (formlyModel) => {\n var resetformly = [];\n angular.copy(resetformly, formlyModel);\n};\n\nexport {\n resetNyaSelect,\n getConfigurationModelInit,\n getEmptyConfigModelResult,\n resetDataModel,\n getErrorObject,\n getMessageObject,\n resetFormlyModel,\n addOneColumnControl,\n addTwoColumnControl,\n addThreeColumnControl\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/formviewer/components/modelsTranslator/eda.easyFormViewer.modelTranslator.service.helpers.js","import { BlankConfig } from './blank/config/blank.config';\nimport editBlankModule, {editBlankControlComponent, EDIT_BLANK_CONTROL_COMPONENT} from './blank/editBlank/editBlankControl.component';\n\nimport { IpAdressConfig } from './IpAdress/config/IpAdress.config';\nimport editIpAdressModule, {editIpAdressControlComponent, EDIT_IP_ADRESS_COMPONENT} from './IpAdress/editIpAdress/editIpAdress.component';\n\nimport { DateConfig } from './Date/config/date.config';\nimport editDateModule, {editDateControlComponent, EDIT_DATE_COMPONENT} from './Date/editDate/editDate.component';\n\nimport { CheckBoxConfig } from './CheckBox/config/checkbox.config';\nimport editCheckBoxModule, {editCheckBoxControlComponent, EDIT_CHECKBOX_COMPONENT} from './CheckBox/editCheckBox/editCheckBox.component';\n\nimport { EmailConfig } from './Email/config/email.config';\nimport editEmailControlModule, {editEmailControlComponent, EDIT_EMAIL_COMPONENT} from './Email/editEmail/editEmail.component';\n\nimport { BasicSelectConfig } from './basicSelect/config/basicSelect.config';\nimport editBasicSelectModule, { editBasicSelectControlComponent, EDIT_BASIC_SELECT_COMPONENT } from './basicSelect/editBasicSelect/editBasicSelect.component';\n\nimport { GroupedSelectConfig } from './groupedSelect/config/groupedSelect.config';\nimport editGroupedSelectModule, {editGroupedSelectControlComponent, EDIT_GROUPED_SELECT_COMPONENT} from './groupedSelect/editGroupedSelect/editGroupedSelect.component';\n\nimport { HeaderConfig } from './header/config/header.config';\nimport editHeaderControl, {editHeaderControlComponent, EDIT_HEADER_CONTROL_COMPONENT} from './header/editHeader/editHeaderControl.component';\n\nimport { PasswordConfig } from './password/config/password.config';\nimport editPasswordModule, {editPasswordControlComponent, EDIT_PASSWORD_CONTROL_COMPONENT} from './password/editPassword/editPassword.component';\n\nimport { RadioConfig } from './radio/config/stepway.radio.config';\nimport {editRadioControlComponent, EDIT_RADIO_CONTROL_COMPONENT} from './radio/editRadio/stepway.editRadio.component';\nimport editRadioModule from './radio/editRadio/stepway.editRadio.module';\n\nimport { RichTextEditorConfig } from './richTextEditor/config/stepway.richTextEditor.config';\nimport {editRichTextEditorControlComponent, EDIT_RICH_TEXT_EDITOR_COMPONENT} from './richTextEditor/editRichTextEditor/stepway.editRichTextEditor.component';\nimport editRichTextEditorModule from './richTextEditor/editRichTextEditor/stepway.editRichTextEditor.module';\n\nimport { SubTitleConfig } from './subTitle/config/stepway.subTitle.config';\nimport {editSubTitleControlComponent, EDIT_SUBTITLE_CONTROL_COMPONENT} from './subTitle/editSubTitle/stepway.editSubTitle.component';\nimport editSubTitle from './subTitle/editSubTitle/stepway.editSubTitle.module';\n\nimport { TextAreaConfig } from './textArea/config/stepway.textArea.config';\nimport {editTextareaControlComponent, EDIT_TEXTAREA_CONTROL_COMPONENT} from './textArea/editTextArea/stepway.editTextArea.component';\nimport editTextareaControlModule from './textArea/editTextArea/stepway.editTextArea.module';\n\nimport { TextInputConfig } from './textInput/config/stepway.textInput.config';\nimport {editTextInputControlComponent, EDIT_TEXTINPUT_CONTROL_COMPONENT} from './textInput/editTextInput/stepway.editTextInput.component';\nimport editTextInputControlModule from './textInput/editTextInput/stepway.editTextInput.module';\n\n\n// controls configs\nconst configs = [\n IpAdressConfig,\n DateConfig,\n CheckBoxConfig,\n EmailConfig,\n BasicSelectConfig,\n BlankConfig,\n GroupedSelectConfig,\n HeaderConfig,\n PasswordConfig,\n RadioConfig,\n RichTextEditorConfig,\n SubTitleConfig,\n TextAreaConfig,\n TextInputConfig\n];\n\n// controls component (for edit control modal)\nconst controls = [\n // editBlankControl:\n {\n name: EDIT_BLANK_CONTROL_COMPONENT,\n component: editBlankControlComponent,\n moduleName: editBlankModule.name\n },\n // editIpAdress:\n {\n name: EDIT_IP_ADRESS_COMPONENT,\n component: editIpAdressControlComponent,\n moduleName: editIpAdressModule.name\n },\n // editDate:\n {\n name: EDIT_DATE_COMPONENT,\n component: editDateControlComponent,\n moduleName: editDateModule.name\n },\n // editBasicSelect:\n {\n name: EDIT_BASIC_SELECT_COMPONENT,\n component: editBasicSelectControlComponent,\n moduleName: editBasicSelectModule.name\n },\n // editGroupedSelect:\n {\n name: EDIT_GROUPED_SELECT_COMPONENT,\n component: editGroupedSelectControlComponent,\n moduleName: editGroupedSelectModule.name\n },\n // editCheckBox:\n {\n name: EDIT_CHECKBOX_COMPONENT,\n component: editCheckBoxControlComponent,\n moduleName: editCheckBoxModule.name\n },\n // editEmail:\n {\n name: EDIT_EMAIL_COMPONENT,\n component: editEmailControlComponent,\n moduleName: editEmailControlModule.name\n },\n // editHeader:\n {\n name: EDIT_HEADER_CONTROL_COMPONENT,\n component: editHeaderControlComponent,\n moduleName: editHeaderControl.name\n },\n // editPassword:\n {\n name: EDIT_PASSWORD_CONTROL_COMPONENT,\n component: editPasswordControlComponent,\n moduleName: editPasswordModule.name\n },\n // editRadio:\n {\n name: EDIT_RADIO_CONTROL_COMPONENT,\n component: editRadioControlComponent,\n moduleName: editRadioModule.name\n },\n // editRichTextEditor:\n {\n name: EDIT_RICH_TEXT_EDITOR_COMPONENT,\n component: editRichTextEditorControlComponent,\n moduleName: editRichTextEditorModule.name\n },\n // editSubTitle:\n {\n name: EDIT_SUBTITLE_CONTROL_COMPONENT,\n component: editSubTitleControlComponent,\n moduleName: editSubTitle.name\n },\n // editTextArea:\n {\n name: EDIT_TEXTAREA_CONTROL_COMPONENT,\n component: editTextareaControlComponent,\n moduleName: editTextareaControlModule.name\n },\n // editTextInput:\n {\n name: EDIT_TEXTINPUT_CONTROL_COMPONENT,\n component: editTextInputControlComponent,\n moduleName: editTextInputControlModule.name\n }\n];\n\nexport {\n configs,\n controls\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/index.js","export const BlankConfig = {\n id: 'empty',\n name: 'no control',\n subtitle: 'no control',\n group: 'Blank',\n formlyType: 'blank',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [] ,\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {}\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/blank/config/blank.config.js","export const EDIT_BLANK_CONTROL_COMPONENT = 'editBlankControl';\n\nexport const editBlankControlComponent = {\n template: `\n \n
\n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n {{'COL_WILL_BE_BLANK' | translate}}\n \n \n
\n
\n
\n
\n `,\n bindings: {},\n controller:\n class editBlankControlController {\n static $inject = [];\n\n constructor() {\n //\n }\n }\n};\n\nconst editBlankModuleName = 'stepway.editBlankControl.module';\nexport default angular\n .module(editBlankModuleName, [])\n .component(EDIT_BLANK_CONTROL_COMPONENT, editBlankControlComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/blank/editBlank/editBlankControl.component.js","export const IpAdressConfig = {\n id: 'IpAdress',\n name: 'IpAdress',\n subtitle: 'IpAdress',\n group: 'input',\n formlyType: 'input',\n formlySubtype: 'ipadress',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {\n ipAddressShape: {\n expression: function(viewValue, modelValue) {\n const value = modelValue || viewValue;\n return /(\\d{1,3}\\.){3}\\d{1,3}/.test(value);\n },\n message: '$viewValue + \\' is not a valid IP Address\\''\n }\n },\n formlyValidation: {\n messages: {\n required: function(viewValue, modelValue, scope) {\n const defaultReturnMsg = 'this IP Adress field is required';\n const returnMsg = (typeof scope.to.label !== 'undefined') ? ((scope.to.label !== '') ? scope.to.label + ' is required' : defaultReturnMsg) : defaultReturnMsg;\n if (scope.to.required) return returnMsg;\n }\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/IpAdress/config/IpAdress.config.js","export const EDIT_IP_ADRESS_COMPONENT = 'editIpAdressControl';\n\nexport const editIpAdressControlComponent = {\n template: `\n \n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n `,\n bindings: {\n nyaSelect: '='\n },\n controller:\n class editIpAdressControlController {\n static $inject = [];\n constructor() {\n\n }\n }\n};\n\nconst editIpAdressModuleName = 'stepway.editIpAdress.module';\n\nexport default angular\n .module(editIpAdressModuleName, [])\n .component(EDIT_IP_ADRESS_COMPONENT, editIpAdressControlComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/IpAdress/editIpAdress/editIpAdress.component.js","export const DateConfig = {\n id: 'Date',\n name: 'Date',\n subtitle: 'Date',\n group: 'input',\n formlyType: 'datepicker',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n datepickerOptions: { format: 'dd-MMMM-yyyy' },\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> ' is required '\n //-> or if not exists or empty just 'this field is required'\n const defaultReturnMsg = 'this Date field is required';\n const returnMsg = (typeof scope.to.label !== 'undefined') ? ((scope.to.label !== '') ? scope.to.label + ' is required' : defaultReturnMsg) : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/Date/config/date.config.js","export const EDIT_DATE_COMPONENT = 'editDateControl';\n\nexport const editDateControlComponent = {\n template: `\n \n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n\n \n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n `,\n bindings: {\n nyaSelect: '=',\n demodt: '=',\n dateOptions: '=',\n open: '&'\n },\n controller:\n class editDateControlController {\n static $inject = [];\n\n constructor() {\n\n }\n }\n};\n\nconst editDateControlModuleName = 'stepway.editDateControl.module';\n\nexport default angular\n .module(editDateControlModuleName, [])\n .component(EDIT_DATE_COMPONENT, editDateControlComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/Date/editDate/editDate.component.js","export const CheckBoxConfig = {\n id: 'Checkbox',\n name: 'Checkbox',\n subtitle: 'Checkbox',\n group: 'Checkbox',\n formlyType: 'checkbox',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function(viewValue, modelValue, scope) {\n const defaultReturnMsg = 'this Checkbox field is required';\n const returnMsg = (typeof scope.to.label !== 'undefined') ? ((scope.to.label !== '') ? scope.to.label + ' is required' : defaultReturnMsg) : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/CheckBox/config/checkbox.config.js","export const EDIT_CHECKBOX_COMPONENT = 'editCheckBoxControl';\n\nexport const editCheckBoxControlComponent = {\n template: `\n \n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n `,\n bindings: {\n nyaSelect: '='\n },\n controller:\n class editCheckBoxControlController {\n static $inject = [];\n\n constructor() {\n\n }\n }\n};\n\nconst editCheckBoxModuleName = 'stepway.editCheckBox.module';\n\nexport default angular\n .module(editCheckBoxModuleName, [])\n .component(EDIT_CHECKBOX_COMPONENT, editCheckBoxControlComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/CheckBox/editCheckBox/editCheckBox.component.js","export const EmailConfig = {\n id: 'Email',\n name: 'Email',\n subtitle: 'Email',\n group: 'input',\n formlyType: 'input',\n formlySubtype: 'email',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {\n emailShape: {\n expression: function(viewValue, modelValue) {\n const value = modelValue || viewValue;\n return /^[a-z]+[a-z0-9._]+@[a-z]+\\.[a-z.]{2,5}$/.test(value);\n },\n message: '$viewValue + \\' is not a valid email\\''\n }\n },\n formlyValidation: {\n messages: {\n required: function(viewValue, modelValue, scope) {\n const defaultReturnMsg = 'this Email field is required';\n const returnMsg = (typeof scope.to.label !== 'undefined') ? ((scope.to.label !== '') ? scope.to.label + ' is required' : defaultReturnMsg) : defaultReturnMsg;\n if (scope.to.required) return returnMsg;\n }\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/Email/config/email.config.js","export const EDIT_EMAIL_COMPONENT = 'editEmailControl';\n\nexport const editEmailControlComponent = {\n template: `\n \n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n `,\n bindings: {\n nyaSelect: '='\n },\n controller:\n class editEmailControlController {\n static $inject = [];\n constructor() {\n\n }\n }\n};\n\nconst editEmailControlModuleName = 'stepway.editEmailControl.module';\n\nexport default angular\n .module(editEmailControlModuleName, [])\n .component(EDIT_EMAIL_COMPONENT, editEmailControlComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/Email/editEmail/editEmail.component.js","export const BasicSelectConfig = {\n id: 'BasicSelect',\n name: 'Basic select',\n subtitle: 'Basic select',\n options: [],\n group: 'Select',\n formlyType: 'basicSelect',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> ' is required '\n //-> or if not exists or empty just 'this field is required'\n const defaultReturnMsg = 'this Basic select field is required';\n const returnMsg = (typeof scope.to.label !== 'undefined') ? ((scope.to.label !== '') ? scope.to.label + ' is required' : defaultReturnMsg) : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/basicSelect/config/basicSelect.config.js","export const EDIT_BASIC_SELECT_COMPONENT = 'editBasicSelectControl';\n\nexport const editBasicSelectControlComponent = {\n template: `\n \n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n \n {{'ADD_NEW_OPTIONS' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{'EDIT_REMOVE_OPTIONS' | translate}} :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n `,\n bindings: {\n nyaSelect: '=',\n basicSelectRowCollection: '=',\n newOptionBasicSelect: '=',\n addNewOptionBasicSelect: '&',\n upThisRow: '&',\n downThisRow: '&',\n removeRow: '&'\n },\n controller:\n class editBasicSelectController {\n static $inject = [];\n\n constructor() {\n\n }\n }\n};\n\nconst editBasicSelectModuleName = 'stepway.editBasicSelect.module';\nexport default angular\n .module(editBasicSelectModuleName, [])\n .component(EDIT_BASIC_SELECT_COMPONENT, editBasicSelectControlComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/basicSelect/editBasicSelect/editBasicSelect.component.js","export const GroupedSelectConfig = {\n id: 'GroupedSelect',\n name: 'Grouped Select',\n subtitle: 'Grouped Select',\n options: [],\n group: 'Select',\n formlyType: 'groupedSelect',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: (viewValue, modelValue, scope) => {\n //return a required validation message :\n //-> ' is required '\n //-> or if not exists or empty just 'this field is required'\n const defaultReturnMsg = 'this Grouped Select field is required';\n const returnMsg = (typeof scope.to.label !== 'undefined') ? ((scope.to.label !== '') ? scope.to.label + ' is required' : defaultReturnMsg) : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/groupedSelect/config/groupedSelect.config.js","export const EDIT_GROUPED_SELECT_COMPONENT = 'editGroupedSelectControl';\n\nexport const editGroupedSelectControlComponent = {\n template: `\n \n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n \n {{'ADD_NEW_OPTIONS' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{'ADD_NEW_GROUPS' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{'EDIT_GROUPS_OPTIONS' | translate}} :\n \n
\n
\n
\n
\n
\n
\n
\n
\n `,\n bindings: {\n nyaSelect: '=',\n groupedSelectRowCollection: '=',\n newOptionGroupedSelect: '=',\n newGroupGroupedSelect: '=',\n groupSelectGroupClick: '=',\n groupedSelectGroups: '=',\n\n addNewOptionGroupedSelect: '&',\n addNewGroupToGroupedSelect: '&',\n upThisGroupedSelectRow: '&',\n downThisGroupedSelectRow: '&',\n showGroupListToChoose: '&',\n removeGroupedSelectRow: '&'\n },\n controller :\n class editGroupedSelectControlController {\n static $inject = [];\n\n constructor() {\n\n }\n }\n};\n\nconst editGroupedSelectModuleName = 'stepway.editGroupedSelect.module';\n\nexport default angular\n .module(editGroupedSelectModuleName, [])\n .component(EDIT_GROUPED_SELECT_COMPONENT, editGroupedSelectControlComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/groupedSelect/editGroupedSelect/editGroupedSelect.component.js","export const HeaderConfig = {\n id: 'Header',\n name: 'Header',\n subtitle: 'no control',\n group: 'Decoration',\n formlyType: 'header',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [] ,\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {}\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/header/config/header.config.js","export const EDIT_HEADER_CONTROL_COMPONENT = 'editHeaderControl';\n\nexport const editHeaderControlComponent = {\n template: `\n
\n
\n
\n
\n
\n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n `,\n bindings: {\n nyaSelect: '='\n },\n controller:\n class editHeaderControlController {\n static $inject = [];\n\n constructor() {\n //\n }\n }\n};\n\nconst editHeaderControlModuleName = 'stepway.editHeaderControl.module';\n\nexport default angular\n .module(editHeaderControlModuleName, [])\n .component(EDIT_HEADER_CONTROL_COMPONENT, editHeaderControlComponent);\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/header/editHeader/editHeaderControl.component.js","export const PasswordConfig = {\n id: 'Password',\n name: 'Password',\n subtitle: 'Password',\n group: 'input',\n formlyType: 'input',\n formlySubtype: 'password',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [] ,\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: (viewValue, modelValue, scope) => {\n const defaultReturnMsg = 'this Password field is required';\n const returnMsg = (typeof scope.to.label !== 'undefined') ? ((scope.to.label !== '') ? scope.to.label + ' is required' : defaultReturnMsg) : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/password/config/password.config.js","export const EDIT_PASSWORD_CONTROL_COMPONENT = 'editPasswordControl';\n\nexport const editPasswordControlComponent = {\n template: `\n
\n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n `,\n bindings: {\n nyaSelect: '='\n },\n controller:\n class editPasswordControlController {\n static $inject = [];\n constructor() {\n //\n }\n }\n};\n\nconst editeditPasswordModuleName = 'stepway.editPasswordControl.module';\n\nexport default angular\n .module(editeditPasswordModuleName, [])\n .component(EDIT_PASSWORD_CONTROL_COMPONENT, editPasswordControlComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/password/editPassword/editPassword.component.js","export const RadioConfig = {\n id: 'Radio',\n name: 'Radio',\n subtitle: 'Radio',\n options: [],\n group: 'Radio',\n formlyType: 'radio',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '' ,\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> '
is required '\n //-> or if not exists or empty just 'this field is required'\n const defaultReturnMsg = 'this Password field is required';\n const returnMsg = (typeof scope.to.label !== 'undefined') ? ((scope.to.label !== '') ? scope.to.label + ' is required' : defaultReturnMsg) : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/radio/config/stepway.radio.config.js","import editRadioControlTemplate from './stepway.editRadio.template.html';\n\nexport const EDIT_RADIO_CONTROL_COMPONENT = 'editRadioControl';\n\nexport const editRadioControlComponent = {\n template : editRadioControlTemplate,\n bindings : {\n nyaSelect: '=',\n radioRowCollection: '=',\n newOptionRadio: '=',\n addNewOptionRadio: '&',\n upThisRadioRow: '&',\n downThisRadioRow: '&',\n removeRadioRow: '&'\n },\n controller :\n class editRadioControlController {\n constructor() {\n //\n }\n\n static get $inject() {\n return [];\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/radio/editRadio/stepway.editRadio.component.js","module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n \\n {{'ADD_NEW_RADIO' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n {{'EDIT_REMOVE_RADIO' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/stepway/components/controls/radio/editRadio/stepway.editRadio.template.html\n// module id = 37\n// module chunks = 0","import {\n editRadioControlComponent,\n EDIT_RADIO_CONTROL_COMPONENT\n} from './stepway.editRadio.component';\n\nconst editRadioControlModuleName = 'stepway.editRadioControl.module';\n\nexport default angular\n .module(editRadioControlModuleName, [])\n .component(EDIT_RADIO_CONTROL_COMPONENT, editRadioControlComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/radio/editRadio/stepway.editRadio.module.js","export const RichTextEditorConfig = {\n id: 'RichTextEditor',\n name: 'RichTextEditor',\n subtitle: 'RichTextEditor',\n group: 'Textarea',\n formlyType: 'richEditor',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> '
is required '\n //-> or if not exists or empty just 'this field is required'\n const defaultReturnMsg = 'this RichTextEditor field is required';\n const returnMsg = (typeof scope.to.label !== 'undefined') ? ((scope.to.label !== '') ? scope.to.label + ' is required' : defaultReturnMsg) : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/richTextEditor/config/stepway.richTextEditor.config.js","import editRichTextEditorControlTemplate from './stepway.editRichTextEditor.template.html';\n\nexport const EDIT_RICH_TEXT_EDITOR_COMPONENT = 'editRichTextEditorControl';\n\nexport const editRichTextEditorControlComponent = {\n template : editRichTextEditorControlTemplate,\n bindings : {\n nyaSelect: '='\n },\n controller :\n class editRichTextEditorControlController {\n constructor() {\n //\n }\n\n static get $inject() {\n return [];\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/richTextEditor/editRichTextEditor/stepway.editRichTextEditor.component.js","module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n\\n\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/stepway/components/controls/richTextEditor/editRichTextEditor/stepway.editRichTextEditor.template.html\n// module id = 41\n// module chunks = 0","import {\n editRichTextEditorControlComponent,\n EDIT_RICH_TEXT_EDITOR_COMPONENT\n} from './stepway.editRichTextEditor.component';\n\nconst editRichTextEditorModuleName = 'stepway.editRichTextEditor.module';\n\nexport default angular\n .module(editRichTextEditorModuleName, [])\n .component(EDIT_RICH_TEXT_EDITOR_COMPONENT, editRichTextEditorControlComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/richTextEditor/editRichTextEditor/stepway.editRichTextEditor.module.js","export const SubTitleConfig = {\n id: 'Subtitle',\n name: 'Subtitle',\n subtitle: 'no control',\n group: 'Decoration',\n formlyType: 'subTitle',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [] ,\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {}\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/subTitle/config/stepway.subTitle.config.js","import editSubTitleControlTemplate from './stepway.editSubTitle.template.html';\n\nexport const EDIT_SUBTITLE_CONTROL_COMPONENT = 'editSubTitleControl';\n\nexport const editSubTitleControlComponent = {\n template : editSubTitleControlTemplate,\n bindings : {\n nyaSelect: '='\n },\n controller :\n class editSubTitleControlController {\n constructor() {\n //\n }\n\n static get $inject() {\n return [];\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/subTitle/editSubTitle/stepway.editSubTitle.component.js","module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/stepway/components/controls/subTitle/editSubTitle/stepway.editSubTitle.template.html\n// module id = 45\n// module chunks = 0","import {\n editSubTitleControlComponent,\n EDIT_SUBTITLE_CONTROL_COMPONENT\n} from './stepway.editSubTitle.component';\n\nconst editSubTitleModuleName = 'stepway.editSubTitleControl.module';\n\nexport default angular\n .module(editSubTitleModuleName, [])\n .component(EDIT_SUBTITLE_CONTROL_COMPONENT, editSubTitleControlComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/subTitle/editSubTitle/stepway.editSubTitle.module.js","export const TextAreaConfig = {\n id: 'Texarea',\n name: 'Textarea',\n subtitle: 'Textarea',\n group: 'Textarea',\n formlyType: 'textarea',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> ' is required '\n //-> or if not exists or empty just 'this field is required'\n const defaultReturnMsg = 'this Textarea field is required';\n const returnMsg = (typeof scope.to.label !== 'undefined') ? ((scope.to.label !== '') ? scope.to.label + ' is required' : defaultReturnMsg) : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/textArea/config/stepway.textArea.config.js","import editTextareaControlTemplate from './stepway.editTextArea.template.html';\n\nexport const EDIT_TEXTAREA_CONTROL_COMPONENT = 'editTextareaControl';\n\nexport const editTextareaControlComponent = {\n template : editTextareaControlTemplate,\n bindings : {\n nyaSelect: '='\n },\n controller :\n class editTextareaControlController {\n constructor() {\n //\n }\n\n static get $inject() {\n return [];\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/textArea/editTextArea/stepway.editTextArea.component.js","module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/stepway/components/controls/textArea/editTextArea/stepway.editTextArea.template.html\n// module id = 49\n// module chunks = 0","import {\n editTextareaControlComponent,\n EDIT_TEXTAREA_CONTROL_COMPONENT\n} from './stepway.editTextArea.component';\n\nconst edittextareaControlModuleName = 'stepway.editTextAreaControl.module';\n\nexport default angular\n .module(edittextareaControlModuleName, [])\n .component(EDIT_TEXTAREA_CONTROL_COMPONENT, editTextareaControlComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/textArea/editTextArea/stepway.editTextArea.module.js","export const TextInputConfig = {\n id: 'TextInput',\n name: 'Text input',\n subtitle: 'Text input',\n group: 'input',\n formlyType: 'input',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyDefaultValue : '',\n formlyOptions: [] ,\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> ' is required '\n //-> or if not exists or empty just 'this field is required'\n const defaultReturnMsg = 'this Text input field is required';\n const returnMsg = (typeof scope.to.label !== 'undefined') ? ((scope.to.label !== '') ? scope.to.label + ' is required' : defaultReturnMsg) : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/textInput/config/stepway.textInput.config.js","import editTextInputControlTemplate from './stepway.editTextInput.template.html';\n\nexport const EDIT_TEXTINPUT_CONTROL_COMPONENT = 'editTextInputControl';\n\nexport const editTextInputControlComponent = {\n template : editTextInputControlTemplate,\n bindings : {\n nyaSelect: '='\n },\n controller :\n class editTextInputControlController {\n constructor() {\n //\n }\n\n static get $inject() {\n return [];\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/textInput/editTextInput/stepway.editTextInput.component.js","module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/stepway/components/controls/textInput/editTextInput/stepway.editTextInput.template.html\n// module id = 53\n// module chunks = 0","import {\n editTextInputControlComponent,\n EDIT_TEXTINPUT_CONTROL_COMPONENT\n} from './stepway.editTextInput.component';\n\nconst editTextInputControlModuleName = 'stepway.editTextInputControl.module';\n\nexport default angular\n .module(editTextInputControlModuleName, [])\n .component(EDIT_TEXTINPUT_CONTROL_COMPONENT, editTextInputControlComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/components/controls/textInput/editTextInput/stepway.editTextInput.module.js","const configurationModelInit = {\n activeLine: 1,\n listConfigStep: [\n 'init',\n 'first',\n 'second',\n 'third'\n ],\n stepIndicators: [\n true,\n false,\n false,\n false\n ],\n configStepCounter: 0,\n submitButtonText: 'submit',\n cancelButtonText: 'cancel',\n lines: [\n {\n line: 1,\n activeColumn: 1,\n columns : [{\n numColumn: 1,\n exist:true,\n control: {\n type:'none',\n key: 'none' // ,\n // templateOptions: {\n // label: 'none',\n // placeholder: 'none',\n // required: false,\n // description: 'Descriptive text'\n // }\n }\n }\n ]\n }\n ]\n};\n\nconst configurationModelResult = {\n activeLine: 1,\n listConfigStep: [\n 'init',\n 'first',\n 'second',\n 'third'\n ],\n stepIndicators: [\n true,\n false,\n false,\n false\n ],\n configStepCounter: 0,\n submitButtonText: 'submit',\n cancelButtonTex: 'cancel',\n lines: []\n};\n\nconst isTemplateOptionDefined = (obj) => {\n const defaultValue = false;\n if (obj && obj.templateOptions) {\n return true;\n }\n return defaultValue;\n};\n\nconst extractTemplateOptionLabel = (obj) => {\n const defaultValue = '';\n if (isTemplateOptionDefined(obj) && obj.templateOptions.label) {\n return obj.templateOptions.label;\n }\n return defaultValue;\n};\n\nconst extractTemplateOptionDatepickerOptions= (obj) => {\n const defaultValue = { format: '' };\n if (isTemplateOptionDefined(obj) && obj.templateOptions.datepickerOptions) {\n return {...obj.templateOptions.datepickerOptions};\n }\n return defaultValue;\n};\n\nconst extractTemplateOptionRequired = (obj) => {\n const defaultValue = false;\n if (isTemplateOptionDefined(obj) && obj.templateOptions.required) {\n return true;\n }\n return defaultValue;\n};\n\nconst extractTemplateOptionOptions = (obj) => {\n const defaultValue = '';\n if (isTemplateOptionDefined(obj) && obj.templateOptions.options) {\n return obj.templateOptions.options;\n }\n return defaultValue;\n};\n\nconst extractTemplateOptionType = (obj) => {\n const defaultValue = '';\n if (obj && obj.subtype) {\n return obj.subtype;\n }\n return defaultValue;\n};\n\nconst extractTemplateOptionPlaceholder = (obj) => {\n const defaultValue = '';\n if (isTemplateOptionDefined(obj) && obj.templateOptions.placeholder) {\n return obj.templateOptions.placeholder;\n }\n return defaultValue;\n};\n\nconst extractTemplateOptionDescription = (obj) => {\n const defaultValue = '';\n if (isTemplateOptionDefined(obj) && obj.templateOptions.description) {\n return obj.templateOptions.description;\n }\n return defaultValue;\n};\n\nconst extractDefaultValue = (obj) => {\n const defaultValue = '';\n if (obj && obj.defaultValue) {\n return obj.defaultValue;\n }\n return defaultValue;\n};\n\nconst extractFormlyExpressionProperties = (obj) => {\n const defaultValue = {};\n if (obj && obj.formlyExpressionProperties) {\n return angular.copy(obj.formlyExpressionProperties);\n }\n return defaultValue;\n};\n\nconst extractFormlyValidators = (obj) => {\n const defaultValue = {};\n if (obj && obj.formlyValidators) {\n return angular.copy(obj.formlyValidators);\n }\n return defaultValue;\n};\n\nconst extractFormlyValidation = (obj) => {\n const defaultValue = {};\n if (obj && obj.formlyValidation) {\n return angular.copy(obj.formlyValidation);\n }\n return defaultValue;\n};\n\nconst addDatepickerOptionsProperty = (fieldToPush, configurationModel, lineIndex) => {\n const control = {...configurationModel.lines[lineIndex].columns[0].control};\n fieldToPush.templateOptions.datepickerOptions = extractTemplateOptionDatepickerOptions(control);\n};\n\n// const addOneColumnHeader = (formlyModel, configurationModel, lineIndex) => {\n// const control = { ...configurationModel.lines[lineIndex].columns[0].control };\n// const defaultTemplate = '
';\n// const headerTemplateCol0 = {\n// template : `\n// \n//
\n//
\n// ${extractTemplateOptionDescription(control)}\n// \n// \n// \n//
\n// `\n// };\n// if (control.type && control.type === 'header') {\n// return formlyModel.push({\n// template: headerTemplateCol0.template\n// });\n// }\n// return formlyModel.push({\n// template : defaultTemplate\n// });\n// };\n\nconst addOneColumnControl = (formlyModel, configurationModel,lineIndex) => {\n const control = { ...configurationModel.lines[lineIndex].columns[0].control };\n const fieldToPush = {\n className: 'col-xs-12',\n type: control && control.type && control.type !== 'none' ? control.type : 'blank',\n key: control && control.key ? control.key : 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control),\n label: extractTemplateOptionLabel(control),\n required: extractTemplateOptionRequired(control),\n placeholder: extractTemplateOptionPlaceholder(control),\n description: extractTemplateOptionDescription(control),\n options: extractTemplateOptionOptions(control)\n },\n defaultValue: extractDefaultValue(control),\n expressionProperties: extractFormlyExpressionProperties(control),\n validators: extractFormlyValidators(control),\n validation: extractFormlyValidation(control)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control.type === 'datepicker') {\n addDatepickerOptionsProperty(fieldToPush, configurationModel, lineIndex);\n }\n formlyModel.push(fieldToPush);\n};\n\nconst addTwoColumnControl = (formlyModel, configurationModel,lineIndex) => {\n const control0 = { ...configurationModel.lines[lineIndex].columns[0].control };\n //text header is stored in \"description\" in templateOtion model\n const headerTemplateCol0 = {\n className: 'col-xs-6',\n template: `\n \n
\n
\n ${extractTemplateOptionDescription(control0)}\n \n \n \n
\n `\n };\n const controlCol0 = {\n className: 'col-xs-6',\n type: control0 && control0.type && control0.type !== 'none' ? control0.type: 'blank',\n key: control0 && control0.key ? control0.key: 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control0),\n label: extractTemplateOptionLabel(control0),\n required: extractTemplateOptionRequired(control0),\n placeholder: extractTemplateOptionPlaceholder(control0),\n description: extractTemplateOptionDescription(control0),\n options: extractTemplateOptionOptions(control0)\n },\n defaultValue: extractDefaultValue(control0),\n expressionProperties: extractFormlyExpressionProperties(control0),\n validators: extractFormlyValidators(control0),\n validation: extractFormlyValidation(control0)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control0.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol0, configurationModel, lineIndex);\n }\n\n const control1 = { ...configurationModel.lines[lineIndex].columns[1].control };\n const headerTemplateCol1 = {\n className: 'col-xs-6',\n template:`\n \n
\n
\n ${extractTemplateOptionDescription(control1)}\n \n \n \n
\n `\n };\n const controlCol1 = {\n className: 'col-xs-6',\n type: control1 && control1.type && control1.type !== 'none' ? control1.type : 'none',\n key: control1 && control1.key ? control1.key : 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control1),\n label: extractTemplateOptionLabel(control1),\n required: extractTemplateOptionRequired(control1),\n placeholder: extractTemplateOptionPlaceholder(control1),\n description: extractTemplateOptionDescription(control1),\n options: extractTemplateOptionOptions(control1)\n },\n defaultValue: extractDefaultValue(control1),\n expressionProperties: extractFormlyExpressionProperties(control1),\n validators: extractFormlyValidators(control1),\n validation: extractFormlyValidation(control1)\n };\n //////////////////////////////////////////////\n // datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control1.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol1, configurationModel, lineIndex);\n }\n\n const FieldGroup = [];\n\n if (control0.type === 'header') {\n FieldGroup.push(headerTemplateCol0);\n } else {\n FieldGroup.push(controlCol0);\n }\n\n if (control1.type === 'header') {\n FieldGroup.push(headerTemplateCol1);\n } else {\n FieldGroup.push(controlCol1);\n }\n\n formlyModel.push({\n className: 'row',\n fieldGroup: FieldGroup\n });\n};\n\n\nconst addThreeColumnControl = (formlyModel, configurationModel,lineIndex) => {\n const control0 = { ...configurationModel.lines[lineIndex].columns[0].control };\n //text header is stored in \"description\" in templateOtion model\n const headerTemplateCol0 = {\n className: 'col-xs-4',\n template : `\n \n
\n
\n ${extractTemplateOptionDescription(control0)}\n \n \n \n
\n `\n };\n const controlCol0 = {\n className: 'col-xs-4',\n type: control0 && control0.type && control0.type !== 'none' ? control0.type: 'blank',\n key: control0 && control0.key ? control0.key: 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control0),\n label: extractTemplateOptionLabel(control0),\n required: extractTemplateOptionRequired(control0),\n placeholder: extractTemplateOptionPlaceholder(control0),\n description: extractTemplateOptionDescription(control0),\n options: extractTemplateOptionOptions(control0)\n },\n defaultValue: extractDefaultValue(control0),\n expressionProperties: extractFormlyExpressionProperties(control0),\n validators: extractFormlyValidators(control0),\n validation: extractFormlyValidation(control0)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control0.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol0, configurationModel,lineIndex);\n }\n\n const control1 = { ...configurationModel.lines[lineIndex].columns[1].control };\n const headerTemplateCol1 = {\n className: 'col-xs-4',\n template:`\n \n
\n
\n ${extractTemplateOptionDescription(control1)}\n \n \n \n
\n `\n };\n const controlCol1 = {\n className: 'col-xs-4',\n type: control1 && control1.type && control1.type !== 'none' ? control1.type: 'blank',\n key: control1 && control1.key ? control1.key: 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control1),\n label: extractTemplateOptionLabel(control1),\n required: extractTemplateOptionRequired(control1),\n placeholder: extractTemplateOptionPlaceholder(control1),\n description: extractTemplateOptionDescription(control1),\n options: extractTemplateOptionOptions(control1)\n },\n defaultValue: extractDefaultValue(control1),\n expressionProperties: extractFormlyExpressionProperties(control1),\n validators: extractFormlyValidators(control1),\n validation: extractFormlyValidation(control1)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control1.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol1, configurationModel,lineIndex);\n }\n\n const control2 = { ...configurationModel.lines[lineIndex].columns[2].control };\n const headerTemplateCol2 = {\n className: 'col-xs-4',\n template:`\n \n
\n
\n ${extractTemplateOptionDescription(control2)}\n \n \n \n
\n `\n };\n const controlCol2 = {\n className: 'col-xs-4',\n type: control2 && control2.type && control2.type !== 'none' ? control2.type: 'blank',\n key: control2 && control2.key ? control2.key: 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control2),\n label: extractTemplateOptionLabel(control2),\n required: extractTemplateOptionRequired(control2),\n placeholder: extractTemplateOptionPlaceholder(control2),\n description: extractTemplateOptionDescription(control2),\n options: extractTemplateOptionOptions(control2)\n },\n defaultValue: extractDefaultValue(control2),\n expressionProperties: extractFormlyExpressionProperties(control2),\n validators: extractFormlyValidators(control2),\n validation: extractFormlyValidation(control2)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control2.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol2, configurationModel,lineIndex);\n }\n\n const FieldGroup = [];\n\n if (control0.type === 'header') {\n FieldGroup.push(headerTemplateCol0);\n }else{\n FieldGroup.push(controlCol0);\n }\n\n if (control1.type === 'header') {\n FieldGroup.push(headerTemplateCol1);\n }else{\n FieldGroup.push(controlCol1);\n }\n\n if (control2.type === 'header') {\n FieldGroup.push(headerTemplateCol2);\n }else{\n FieldGroup.push(controlCol2);\n }\n\n formlyModel.push({\n className: 'row',\n fieldGroup: FieldGroup\n });\n};\n\n\nconst resetDataModel = (obj) => {\n const emptyDataModel = {};\n angular.copy(emptyDataModel, obj);\n return true;\n};\n\n\nconst resetFormlyModel = (formlyModel) => {\n const resetformly = [];\n angular.copy(resetformly, formlyModel);\n};\n\n\nexport {\n configurationModelInit,\n configurationModelResult,\n resetDataModel,\n resetFormlyModel,\n\n isTemplateOptionDefined,\n extractTemplateOptionLabel,\n extractTemplateOptionDatepickerOptions,\n extractDefaultValue,\n extractFormlyExpressionProperties,\n extractFormlyValidators,\n extractFormlyValidation,\n extractTemplateOptionRequired,\n extractTemplateOptionOptions,\n extractTemplateOptionType,\n extractTemplateOptionPlaceholder,\n extractTemplateOptionDescription,\n\n addDatepickerOptionsProperty,\n addOneColumnControl,\n addTwoColumnControl,\n addThreeColumnControl\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/services/formlyProxy/formlyProxy.service.helpers.js","import {\n richTextTemplate,\n blankTemplate,\n headerTemplate,\n subTitleTemplate,\n basicSelectTemplate,\n groupedSelectTemplate,\n datepickerTemplate,\n validationTemplate\n} from './formly.config.templates';\n\n\nfunction formlyConfig(formlyConfigProvider){\n formlyConfigProvider.setType(\n {\n name: 'richEditor',\n template: richTextTemplate.template,\n wrapper: ['bootstrapLabel', 'bootstrapHasError']\n }\n );\n\n formlyConfigProvider.setType(\n {\n name: 'blank',\n template: blankTemplate.template\n }\n );\n\n formlyConfigProvider.setType(\n {\n name: 'header',\n template: headerTemplate.template\n }\n );\n\n formlyConfigProvider.setType(\n {\n name: 'subTitle',\n template: subTitleTemplate.template\n }\n );\n\n formlyConfigProvider.setType(\n {\n name: 'basicSelect',\n template: basicSelectTemplate.template,\n wrapper: ['bootstrapLabel', 'bootstrapHasError']\n }\n );\n\n formlyConfigProvider.setType(\n {\n name: 'groupedSelect',\n template: groupedSelectTemplate.template,\n wrapper: ['bootstrapLabel', 'bootstrapHasError']\n }\n );\n\n // implement from : http://jsbin.com/koredu/edit?js,output\n // formlyConfigProvider.setType({\n // name: 'upload',\n // extends: 'input',\n // wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n // link: function(scope, el, attrs) {\n // el.on(\"change\", function(changeEvent) {\n // var file = changeEvent.target.files[0];\n // if (file) {\n // // console.log('scope.id', scope.id);\n // var fd = new FormData();\n // // use key on backEnd\n // fd.append('uploadFile', file);\n // scope.$emit('fileToUpload', fd);\n // var fileProp = {};\n // for (var properties in file) {\n // if (!angular.isFunction(file[properties])) {\n // fileProp[properties] = file[properties];\n // }\n // }\n // scope.fc.$setViewValue(fileProp);\n // } else {\n // scope.fc.$setViewValue(undefined);\n // }\n // });\n // el.on(\"focusout\", (focusoutEvent) => {\n // // dont run validation , user still opening pop up file dialog\n // if ($window.document.activeElement.id === scope.id) {\n // // so we set it untouched\n // scope.$apply(function(scope) {\n // scope.fc.$setUntouched();\n // });\n // } else {\n // // element losing focus so we trigger validation\n // scope.fc.$validate();\n // }\n // });\n // },\n // defaultOptions: {\n // templateOptions: {\n // type: 'file',\n // required: true\n // }\n // }\n // });\n\n ////////////////////////////\n // angular UI date picker\n ////////////////////////////\n // thx Kent C. Dodds\n\n const attributes = [\n 'date-disabled',\n 'custom-class',\n 'show-weeks',\n 'starting-day',\n 'init-date',\n 'min-mode',\n 'max-mode',\n 'format-day',\n 'format-month',\n 'format-year',\n 'format-day-header',\n 'format-day-title',\n 'format-month-title',\n 'year-range',\n 'shortcut-propagation',\n 'datepicker-popup',\n 'show-button-bar',\n 'current-text',\n 'clear-text',\n 'close-text',\n 'close-on-date-selection',\n 'datepicker-append-to-body'\n ];\n\n const bindings = [\n 'datepicker-mode',\n 'min-date',\n 'max-date'\n ];\n\n const ngModelAttrs = {};\n angular.forEach(attributes, (attr) => {\n ngModelAttrs[camelize(attr)] = {attribute: attr};\n });\n\n angular.forEach(bindings, (binding) => {\n ngModelAttrs[camelize(binding)] = {bound: binding};\n });\n\n formlyConfigProvider.setType({\n name: 'datepicker',\n template: datepickerTemplate.template,\n defaultOptions: {\n ngModelAttrs: ngModelAttrs,\n templateOptions: {\n datepickerOptions: {\n format: 'dd/MM/yyyy',\n initDate: new Date(),\n showWeeks: false\n }\n }\n },\n wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n controller: ['$scope', ($scope) => {\n $scope.datepicker = {};\n // make sure the initial value is of type DATE!\n var currentModelVal = $scope.model[$scope.options.key];\n if (typeof (currentModelVal) == 'string'){\n $scope.model[$scope.options.key] = new Date(currentModelVal);\n }\n $scope.datepicker.opened = false;\n $scope.datepicker.open = function ($event) {\n $event.preventDefault();\n $event.stopPropagation();\n $scope.datepicker.opened = !$scope.datepicker.opened;\n };\n }]\n });\n\n /**\n * wrappers to show validation errors\n * without having to rewrite formly types\n */\n formlyConfigProvider.setWrapper([\n {\n template: validationTemplate.template\n }\n ]);\n\n function camelize(string) {\n string = string.replace(/[\\-_\\s]+(.)?/g, function(match, chr) {\n return chr ? chr.toUpperCase() : '';\n });\n // Ensure 1st char is always lowercase\n return string.replace(/^([A-Z])/, function(match, chr) {\n return chr ? chr.toLowerCase() : '';\n });\n }\n}\n\nformlyConfig.$inject = ['formlyConfigProvider'];\n\nexport default formlyConfig;\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/config/formly/formly.config.js","// tips: use some plugin like atom-typescript to highlight html templates inside backticks\nexport const richTextTemplate = {\n template: `\n \n \n `\n};\n\n/* eslint-disable quotes */\nexport const blankTemplate = {\n template: `
`\n};\n/* eslint-enable quotes */\n\nexport const headerTemplate = {\n template: `\n \n
\n
\n {{ options.templateOptions.placeholder }}\n \n \n \n
\n `\n};\n\nexport const subTitleTemplate = {\n template: `\n \n
\n
\n {{ options.templateOptions.placeholder }}\n \n \n \n
\n `\n};\n\nexport const basicSelectTemplate = {\n template: `\n \n \n \n {{option.name}}\n \n \n \n `\n};\n\nexport const groupedSelectTemplate = {\n template: `\n \n \n \n \n \n {{option.name}}\n \n \n \n \n \n `\n};\n\nexport const datepickerTemplate = {\n template: `\n \n \n \n \n \n \n \n
\n `\n};\n\nexport const validationTemplate = {\n template: `\n \n `\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/stepway/config/formly/formly.config.templates.js","module.exports = {\n\t\"stepway\": {\n\t\t\"version\": \"2.1.4\"\n\t},\n\t\"dragdropway\": {\n\t\t\"version\": \"2.1.4\"\n\t},\n\t\"formviewer\": {\n\t\t\"version\": \"2.1.4\"\n\t}\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/easyFormConfig.json\n// module id = 58\n// module chunks = 0"],"sourceRoot":""}
\ No newline at end of file
diff --git a/static/js/eda.formviewer.css b/static/js/eda.formviewer.css
new file mode 100644
index 0000000..001766a
--- /dev/null
+++ b/static/js/eda.formviewer.css
@@ -0,0 +1,2 @@
+.ta-hidden-input{width:1px;height:1px;border:none;margin:0;padding:0;position:absolute;top:-10000px;left:-10000px;opacity:0;overflow:hidden}.ta-root.focussed>.ta-scroll-window.form-control{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.ta-editor.ta-html,.ta-scroll-window.form-control{min-height:300px;height:auto;overflow:auto;font-family:inherit;font-size:100%}.ta-scroll-window.form-control{position:relative;padding:0}.ta-scroll-window>.ta-bind{height:auto;min-height:300px;padding:6px 12px}.ta-editor:focus{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ta-resizer-handle-overlay{z-index:100;position:absolute;display:none}.ta-resizer-handle-overlay>.ta-resizer-handle-info{position:absolute;bottom:16px;right:16px;border:1px solid #000;background-color:#fff;padding:0 4px;opacity:.7}.ta-resizer-handle-overlay>.ta-resizer-handle-background{position:absolute;bottom:5px;right:5px;left:5px;top:5px;border:1px solid #000;background-color:rgba(0,0,0,.2)}.ta-resizer-handle-overlay>.ta-resizer-handle-corner{width:10px;height:10px;position:absolute}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-tl{top:0;left:0;border-left:1px solid #000;border-top:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-tr{top:0;right:0;border-right:1px solid #000;border-top:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-bl{bottom:0;left:0;border-left:1px solid #000;border-bottom:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-br{bottom:0;right:0;border:1px solid #000;cursor:se-resize;background-color:#fff}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.bottom{margin-top:10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}body{margin:20px;font-family:Roboto,Helvetica Neue,Helvetica,Arial,sans-serif}.ta-scroll-window{margin-bottom:16px}.formly-field{margin-bottom:20px}.validation{position:absolute;font-size:.8em;color:#a94442}.error-messages,.formly-template-wrapper{position:relative}.error-messages,.message,.validation{opacity:1;transition:all .3s linear}.message{font-size:.8em;position:absolute;width:100%;color:#a94442;margin-top:2px}.error-messages.ng-enter.ng-enter-active,.message.ng-enter.ng-enter-active,.validation.ng-enter.ng-enter-active{opacity:1}.error-messages.ng-enter,.message.ng-enter,.validation.ng-enter{opacity:0}.error-messages.ng-leave,.message.ng-leave,.validation.ng-leave{opacity:1}.error-messages.ng-leave-active,.message.ng-leave-active,.validation.ng-leave-active{opacity:0}
+/*# sourceMappingURL=eda.formviewer.css.map*/
\ No newline at end of file
diff --git a/static/js/eda.formviewer.css.map b/static/js/eda.formviewer.css.map
new file mode 100644
index 0000000..5f14eaa
--- /dev/null
+++ b/static/js/eda.formviewer.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"eda.formviewer.css","sourceRoot":""}
\ No newline at end of file
diff --git a/static/js/eda.stepway.css b/static/js/eda.stepway.css
new file mode 100644
index 0000000..c57a737
--- /dev/null
+++ b/static/js/eda.stepway.css
@@ -0,0 +1,2 @@
+.steps-indicator:before,.steps-indicator li a:before{background-color:#e6e6e6;content:""}.steps-indicator li.current,.steps-indicator li.default,.steps-indicator li.editing{pointer-events:none}.steps-indicator{right:0;bottom:0;left:0;margin:0;padding:20px 0 0;height:30px;list-style:none}.steps-indicator:before{position:absolute;height:1px}.steps-indicator.steps-2:before{left:25%;right:25%}.steps-indicator.steps-3:before{left:16.66667%;right:16.66667%}.steps-indicator.steps-4:before{left:12.5%;right:12.5%}.steps-indicator.steps-5:before{left:10%;right:10%}.steps-indicator.steps-6:before{left:8.33333%;right:8.33333%}.steps-indicator.steps-7:before{left:7.14286%;right:7.14286%}.steps-indicator.steps-8:before{left:6.25%;right:6.25%}.steps-indicator.steps-9:before{left:5.55556%;right:5.55556%}.steps-indicator.steps-10:before{left:5%;right:5%}.steps-indicator *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.steps-indicator li{position:relative;float:left;margin:0;padding:0;padding-top:10px;text-align:center;line-height:15px}.steps-indicator li a{color:grey;text-decoration:none;text-transform:uppercase;font-weight:700;transition:.25s;cursor:pointer}.steps-indicator li a:before{position:absolute;top:-7px;left:calc(50% - 7px);width:14px;height:14px;border-radius:100%;transition:.25s}.steps-indicator li a:hover{color:#4d4d4d}.steps-indicator.steps-2 li{width:50%}.steps-indicator.steps-3 li{width:33.33333%}.steps-indicator.steps-4 li{width:25%}.steps-indicator.steps-5 li{width:20%}.steps-indicator.steps-6 li{width:16.66667%}.steps-indicator.steps-7 li{width:14.28571%}.steps-indicator.steps-8 li{width:12.5%}.steps-indicator.steps-9 li{width:11.11111%}.steps-indicator.steps-10 li{width:10%}.steps-indicator.steps-11 li{width:9.09091%}.steps-indicator li.default a:hover{color:grey}.steps-indicator li.current a:before{background-color:grey}.steps-indicator li.done a:before{background-color:#393}.steps-indicator li.editing a:before{background-color:red}.ta-hidden-input{width:1px;height:1px;border:none;margin:0;padding:0;position:absolute;top:-10000px;left:-10000px;opacity:0;overflow:hidden}.ta-root.focussed>.ta-scroll-window.form-control{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.ta-editor.ta-html,.ta-scroll-window.form-control{min-height:300px;height:auto;overflow:auto;font-family:inherit;font-size:100%}.ta-scroll-window.form-control{position:relative;padding:0}.ta-scroll-window>.ta-bind{height:auto;min-height:300px;padding:6px 12px}.ta-editor:focus{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ta-resizer-handle-overlay{z-index:100;position:absolute;display:none}.ta-resizer-handle-overlay>.ta-resizer-handle-info{position:absolute;bottom:16px;right:16px;border:1px solid #000;background-color:#fff;padding:0 4px;opacity:.7}.ta-resizer-handle-overlay>.ta-resizer-handle-background{position:absolute;bottom:5px;right:5px;left:5px;top:5px;border:1px solid #000;background-color:rgba(0,0,0,.2)}.ta-resizer-handle-overlay>.ta-resizer-handle-corner{width:10px;height:10px;position:absolute}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-tl{top:0;left:0;border-left:1px solid #000;border-top:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-tr{top:0;right:0;border-right:1px solid #000;border-top:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-bl{bottom:0;left:0;border-left:1px solid #000;border-bottom:1px solid #000}.ta-resizer-handle-overlay>.ta-resizer-handle-corner-br{bottom:0;right:0;border:1px solid #000;cursor:se-resize;background-color:#fff}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.bottom{margin-top:10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}body{padding-top:50px;padding-bottom:20px;height:100%;background-color:#f2f2f2;font-family:Roboto,Helvetica Neue,Helvetica,Arial,sans-serif}.margintop60px{margin-top:80px}.margintop120px{margin-top:120px}.vAlignMiddle{vertical-align:middle}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#0d87e9;border-color:#2196f3}.modal-backdrop{z-index:-1}.navbar-right{margin-right:20px}[contenteditable].form-control,[type=email].form-control,[type=password].form-control,[type=tel].form-control,[type=text].form-control,input.form-control,input[type=email],input[type=number],input[type=password],input[type=text],select,select.form-control,textarea,textarea.form-control{font-size:13px}@media (min-width:1200px){.container{width:100%;margin-right:20px}}@media (min-width:768px){.container{width:100%;margin-right:20px}}@media (min-width:992px){.container{width:100%}}.container-fluid{margin-right:auto;margin-left:auto}.container-fluid padding{left:30px;right:30px}.panel-default>.panel-heading{color:#212121;background-color:#fff;border-color:#eee}.navbar-nav>li>a{line-height:30px}.navbar-default .navbar-brand{line-height:normal}.panel-heading{background-color:none;border-bottom:1px solid #eee}.navBtnGroup{padding:20px 15px 22px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{vertical-align:middle}a:focus,a:hover{color:#fff}.form-control{border-radius:0;box-shadow:none;height:auto}.float-label{font-size:10px}.socialIcon{font-size:32px}.socialIcon:hover{color:#f2f2f2}input[type=search].form-control,input[type=text].form-control{border:none;border-bottom:1px dotted #cfcfcf}textarea{border:1px dotted #cfcfcf!important;height:130px!important}.content-container{background-color:#fff;padding:35px 20px;margin-bottom:20px}h1.content-title{font-size:32px;font-weight:300;text-align:center;margin-top:0;margin-bottom:20px;font-family:Open Sans,sans-serif!important}.form-control{font-family:Roboto,Helvetica Neue,Helvetica,Arial,sans-serif;display:block;width:100%;height:39px;padding:8px 12px;font-size:13px;line-height:1.42857143;color:#777;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}.animate-enter{animation:enter .6s cubic-bezier(.445,.05,.55,.95);display:block;position:relative}@keyframes enter{0%{opacity:0;height:0;left:-70px}75%{left:15px}to{opacity:1;height:30px;left:0}}.animate-leave{animation:leave .6s cubic-bezier(.445,.05,.55,.95);display:block;position:relative}@keyframes leave{to{opacity:0;height:0;left:-70px}25%{left:15px}0%{opacity:1;height:30px;left:0}}.td40,.td60,.tdCommun{height:75px;vertical-align:none}.td40{width:40%}.td60{width:60%}.table-user-information>tbody>tr>td,.table-user-information>tbody>tr>th,.table-user-information>tfoot>tr>td,.table-user-information>tfoot>tr>th,.table-user-information>thead>tr>td,.table-user-information>thead>tr>th{vertical-align:middle}.switchAngularFadeIn .ng-enter{animation:fadeIn 1s}#pageWfEdit{margin-top:40px;padding-top:30px;padding-bottom:30px;background-color:#f2f2f2}.lineCommandButtons{padding-bottom:25px}.addNewLine{font-size:24px;vertical-align:middle;color:#666}#editor{margin-top:0;margin-bottom:0;height:150px;background-color:#52b3d9;border-bottom:1px solid #2c3e50}#editor-content{text-align:center;color:#fff;font-size:13px}#preview{margin-top:0;margin-bottom:0;border:1 solid #2c3e50;-o-box-shadow:0 0 10px 0 #ddd;box-shadow:0 0 10px 0 #ddd;filter:progid:DXImageTransform.Microsoft.Shadow(color=#ddd,Direction=NaN,Strength=10)}#preview-content{background-color:#fff;padding-bottom:25px;color:#000}#commandPanel,#visualPanel{padding-top:25px;padding-bottom:25px}.customPagerButton{width:145px;margin-left:2px;margin-right:2px}.numberOfColumnsLabel{font-size:32px;padding-top:25%;padding-bottom:25%;font-weight:700;text-align:center;color:#666}.btnAddColumns,.btnMinusColumns{margin-top:10px}.greyText,.numberOfcolumsText{color:#666}.blackText{color:#000}.animate-switch-container{position:relative;background:#fff;border-top:1px solid #ececec;border-bottom:1px solid #ececec;height:750px;overflow:scroll}.animate-switch-container .well{background-color:#89c4f4;margin-bottom:0;color:#ececec}.linesList{margin-top:5px}.animate-switch{padding:10px}.animate-switch.ng-animate{transition:all .6s cubic-bezier(.25,.46,.45,.94);position:absolute;top:0;left:0;right:0;bottom:0}.animate-switch.ng-enter,.animate-switch.ng-leave.ng-leave-active{left:0;top:-500px;opacity:0}.animate-switch.ng-enter.ng-enter-active,.animate-switch.ng-leave{left:0;top:0;opacity:.8}.stepwizardTopmargin{margin-top:25px}.stepwizard-step p{margin-top:10px;color:#666}.stepwizard-row{display:table-row}.stepwizard{display:table;width:100%;position:relative}.stepwizard-step button[disabled]{opacity:1!important;filter:alpha(opacity=100)!important}.stepwizard-row:before{top:14px;bottom:0;position:absolute;content:" ";width:100%;height:1px;background-color:#ccc;z-order:0}.stepwizard-step{display:table-cell;text-align:center;position:relative}.btn-circle{width:30px;height:30px;text-align:center;padding:6px 0;font-size:12px;line-height:1.428571429;border-radius:15px}.panelDebugScope{color:#000}.texteRouge{color:#cf000f}.editPropertiesLabel{margin-top:6px}.textControlLabel{color:#000}.marginTopFivepixels,.marginTopTenpixels{margin-top:5px}.checkboxCssCorrection{font-size:4px}.noGroupText{margin-bottom:0}.nya-bs-select,.ta-scroll-window{margin-bottom:16px}.formly-field-checkbox{margin-top:28px}#inputAddNewBasicOption,#inputAddNewGroupedOption,#inputAddNewGroupGroupedOption,#inputAddNewRadioOption{margin-bottom:20px}.editGroupedSelectnyaSelect{margin-bottom:0}.formly-field{margin-bottom:20px}.validation{position:absolute;font-size:.8em;color:#a94442}.error-messages,.formly-template-wrapper{position:relative}.error-messages,.message,.validation{opacity:1;transition:all .3s linear}.message{font-size:.8em;position:absolute;width:100%;color:#a94442;margin-top:2px}.error-messages.ng-enter.ng-enter-active,.message.ng-enter.ng-enter-active,.validation.ng-enter.ng-enter-active{opacity:1}.error-messages.ng-enter,.message.ng-enter,.validation.ng-enter{opacity:0}.error-messages.ng-leave,.message.ng-leave,.validation.ng-leave{opacity:1}.error-messages.ng-leave-active,.message.ng-leave-active,.validation.ng-leave-active{opacity:0}
+/*# sourceMappingURL=eda.stepway.css.map*/
\ No newline at end of file
diff --git a/static/js/eda.stepway.css.map b/static/js/eda.stepway.css.map
new file mode 100644
index 0000000..7a5fe41
--- /dev/null
+++ b/static/js/eda.stepway.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"eda.stepway.css","sourceRoot":""}
\ No newline at end of file
diff --git a/static/js/eda.stepway.js b/static/js/eda.stepway.js
index 08f5f05..bcac9b8 100644
--- a/static/js/eda.stepway.js
+++ b/static/js/eda.stepway.js
@@ -1,3547 +1,686 @@
-!function(e){function r(e,r,o){return 4===arguments.length?t.apply(this,arguments):void n(e,{declarative:!0,deps:r,declare:o})}function t(e,r,t,o){n(e,{declarative:!1,deps:r,executingRequire:t,execute:o})}function n(e,r){r.name=e,e in p||(p[e]=r),r.normalizedDeps=r.deps}function o(e,r){if(r[e.groupIndex]=r[e.groupIndex]||[],-1==v.call(r[e.groupIndex],e)){r[e.groupIndex].push(e);for(var t=0,n=e.normalizedDeps.length;n>t;t++){var a=e.normalizedDeps[t],u=p[a];if(u&&!u.evaluated){var d=e.groupIndex+(u.declarative!=e.declarative);if(void 0===u.groupIndex||u.groupIndex=0;a--){for(var u=t[a],i=0;ia;a++){var d=t.importers[a];if(!d.locked)for(var i=0;ia;a++){var l,s=r.normalizedDeps[a],c=p[s],v=x[s];v?l=v.exports:c&&!c.declarative?l=c.esModule:c?(d(c),v=c.module,l=v.exports):l=f(s),v&&v.importers?(v.importers.push(t),t.dependencies.push(v)):t.dependencies.push(null),t.setters[a]&&t.setters[a](l)}}}function i(e){var r,t=p[e];if(t)t.declarative?c(e,[]):t.evaluated||l(t),r=t.module.exports;else if(r=f(e),!r)throw new Error("Unable to load dependency "+e+".");return(!t||t.declarative)&&r&&r.__useDefault?r["default"]:r}function l(r){if(!r.module){var t={},n=r.module={exports:t,id:r.name};if(!r.executingRequire)for(var o=0,a=r.normalizedDeps.length;a>o;o++){var u=r.normalizedDeps[o],d=p[u];d&&l(d)}r.evaluated=!0;var c=r.execute.call(e,function(e){for(var t=0,n=r.deps.length;n>t;t++)if(r.deps[t]==e)return i(r.normalizedDeps[t]);throw new TypeError("Module "+e+" not declared as a dependency.")},t,n);c&&(n.exports=c),t=n.exports,t&&t.__esModule?r.esModule=t:r.esModule=s(t)}}function s(r){if(r===e)return r;var t={};if("object"==typeof r||"function"==typeof r)if(g){var n;for(var o in r)(n=Object.getOwnPropertyDescriptor(r,o))&&h(t,o,n)}else{var a=r&&r.hasOwnProperty;for(var o in r)(!a||r.hasOwnProperty(o))&&(t[o]=r[o])}return t["default"]=r,h(t,"__useDefault",{value:!0}),t}function c(r,t){var n=p[r];if(n&&!n.evaluated&&n.declarative){t.push(r);for(var o=0,a=n.normalizedDeps.length;a>o;o++){var u=n.normalizedDeps[o];-1==v.call(t,u)&&(p[u]?c(u,t):f(u))}n.evaluated||(n.evaluated=!0,n.module.execute.call(e))}}function f(e){if(D[e])return D[e];if("@node/"==e.substr(0,6))return y(e.substr(6));var r=p[e];if(!r)throw"Module "+e+" not present.";return a(e),c(e,[]),p[e]=void 0,r.declarative&&h(r.module.exports,"__esModule",{value:!0}),D[e]=r.declarative?r.module.exports:r.esModule}var p={},v=Array.prototype.indexOf||function(e){for(var r=0,t=this.length;t>r;r++)if(this[r]===e)return r;return-1},g=!0;try{Object.getOwnPropertyDescriptor({a:0},"a")}catch(m){g=!1}var h;!function(){try{Object.defineProperty({},"a",{})&&(h=Object.defineProperty)}catch(e){h=function(e,r,t){try{e[r]=t.value||t.get.call(e)}catch(n){}}}}();var x={},y="undefined"!=typeof System&&System._nodeRequire||"undefined"!=typeof require&&require.resolve&&"undefined"!=typeof process&&require,D={"@empty":{}};return function(e,n,o){return function(a){a(function(a){for(var u={_nodeRequire:y,register:r,registerDynamic:t,get:f,set:function(e,r){D[e]=r},newModule:function(e){return e}},d=0;d1)for(var d=1;d= 1.4
- easyFormSteWayConfigProvider.setModalAnimation(ACTIVE_MODAL_ANIMATION);
- }
-
- return {
- setters: [function (_) {
- easyFormConfig = _['default'];
- }],
- execute: function () {
- EASY_FORM_VERSION_NAME = 'easyFormGenVersion';
- EASY_FORM_VERSION_VALUE = easyFormConfig.stepway.version;
- ACTIVE_MODAL_ANIMATION = false;
- easyFromConfig.$inject = ['easyFormSteWayConfigProvider'];
-
- _export('default', easyFromConfig);
-
- _export('EASY_FORM_VERSION_NAME', EASY_FORM_VERSION_NAME);
-
- _export('EASY_FORM_VERSION_VALUE', EASY_FORM_VERSION_VALUE);
- }
- };
-});
-$__System.register("5", [], function (_export) {
- "use strict";
-
- var richTextTemplate, blankTemplate, subTitleTemplate, basicSelectTemplate, groupedSelectTemplate, datepickerTemplate, validationTemplate;
- return {
- setters: [],
- execute: function () {
- richTextTemplate = "\n\t\n\t ";
- blankTemplate = "
";
- subTitleTemplate = "\n\t\n\t\t
\n\t\t\t
\n\t\t\t{{options.templateOptions.placeholder}}\n\t\t\t \n\t\t \n\t
";
- basicSelectTemplate = " \n \n\t \n\t\t{{option.name}} \n\t \n ";
- groupedSelectTemplate = "\n\t\n\t\t\n\t\t\t \n\t\t\t\n\t\t\t\t{{option.name}} \n\t\t\t\t \n\t\t\t \n\t\t \n\t ";
- datepickerTemplate = "\t ";
- validationTemplate = "\n\t";
-
- _export("richTextTemplate", richTextTemplate);
-
- _export("blankTemplate", blankTemplate);
-
- _export("subTitleTemplate", subTitleTemplate);
-
- _export("basicSelectTemplate", basicSelectTemplate);
-
- _export("groupedSelectTemplate", groupedSelectTemplate);
-
- _export("datepickerTemplate", datepickerTemplate);
-
- _export("validationTemplate", validationTemplate);
- }
- };
-});
-$__System.register('6', ['5'], function (_export) {
- /* global angular */
- 'use strict';
-
- var richTextTemplate, blankTemplate, subTitleTemplate, basicSelectTemplate, groupedSelectTemplate, datepickerTemplate, validationTemplate;
-
- function formlyConfig(formlyConfigProvider) {
-
- formlyConfigProvider.setType({
- name: 'richEditor',
- template: richTextTemplate,
- wrapper: ['bootstrapLabel', 'bootstrapHasError']
- });
-
- formlyConfigProvider.setType({
- name: 'blank',
- template: blankTemplate
- });
-
- formlyConfigProvider.setType({
- name: 'subTitle',
- template: subTitleTemplate
- });
-
- formlyConfigProvider.setType({
- name: 'basicSelect',
- template: basicSelectTemplate,
- wrapper: ['bootstrapLabel', 'bootstrapHasError']
- });
-
- formlyConfigProvider.setType({
- name: 'groupedSelect',
- template: groupedSelectTemplate,
- wrapper: ['bootstrapLabel', 'bootstrapHasError']
- });
-
- ////////////////////////////
- // angular UI date picker
- ////////////////////////////
- // thx Kent C. Dodds
-
- var attributes = ['date-disabled', 'custom-class', 'show-weeks', 'starting-day', 'init-date', 'min-mode', 'max-mode', 'format-day', 'format-month', 'format-year', 'format-day-header', 'format-day-title', 'format-month-title', 'year-range', 'shortcut-propagation', 'datepicker-popup', 'show-button-bar', 'current-text', 'clear-text', 'close-text', 'close-on-date-selection', 'datepicker-append-to-body'];
-
- var bindings = ['datepicker-mode', 'min-date', 'max-date'];
-
- var ngModelAttrs = {};
-
- angular.forEach(attributes, function (attr) {
- ngModelAttrs[camelize(attr)] = { attribute: attr };
- });
-
- angular.forEach(bindings, function (binding) {
- ngModelAttrs[camelize(binding)] = { bound: binding };
- });
-
- formlyConfigProvider.setType({
- name: 'datepicker',
- template: datepickerTemplate,
- wrapper: ['bootstrapLabel', 'bootstrapHasError'],
- controller: ['$scope', function ($scope) {
- $scope.open = function ($event) {
- $event.preventDefault();
- $event.stopPropagation();
- $scope.opened = true;
- };
- }],
- defaultOptions: {
- ngModelAttrs: ngModelAttrs,
- templateOptions: {
- addonLeft: {
- 'class': 'glyphicon glyphicon-calendar',
- onClick: function onClick(options) {
- return options.templateOptions.isOpen = !options.templateOptions.isOpen;
- }
- },
- onFocus: function onFocus($viewValue, $modelValue, scope) {
- return scope.to.isOpen = !scope.to.isOpen;
- },
- datepickerOptions: {}
- }
- }
-
- });
-
- /**
- * wrappers to show validation errors
- * without having to rewrite formly types
- */
- formlyConfigProvider.setWrapper([{
- template: validationTemplate
- }]);
-
- function camelize(string) {
- string = string.replace(/[\-_\s]+(.)?/g, function (match, chr) {
- return chr ? chr.toUpperCase() : '';
- });
- // Ensure 1st char is always lowercase
- return string.replace(/^([A-Z])/, function (match, chr) {
- return chr ? chr.toLowerCase() : '';
- });
- }
- }
-
- return {
- setters: [function (_) {
- richTextTemplate = _.richTextTemplate;
- blankTemplate = _.blankTemplate;
- subTitleTemplate = _.subTitleTemplate;
- basicSelectTemplate = _.basicSelectTemplate;
- groupedSelectTemplate = _.groupedSelectTemplate;
- datepickerTemplate = _.datepickerTemplate;
- validationTemplate = _.validationTemplate;
- }],
- execute: function () {
- formlyConfig.$inject = ['formlyConfigProvider'];
-
- _export('default', formlyConfig);
- }
- };
-});
-$__System.registerDynamic("7", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = {
- "SAY_HI": "Hello",
- "EDIT_TAB": "Edit / Create",
- "PREVIEW_TAB": "Preview",
- "WIZARD_LINES": "lines",
- "WIZARD_LAYOUT": "layout",
- "WIZARD_CONTROLS": "controls",
- "WIZARD_SAVE": "save",
- "PAGER_PREVIOUS": "Previous",
- "PAGER_NEXT": "Next",
- "COMMAND_PANEL": "Command",
- "VISUAL_PANEL": "Visual",
- "ADD_NEW_LINE": "Add a new line",
- "SELECTED_LINE": "Selected line",
- "NUMBER_OF_COLUMN": "number of columns",
- "APPLY_CTRL2COL": "Apply controls to columns",
- "CLIC_TAP_2_OPEN": "Click / Tap on column to open control selection",
- "SELECT_2_APPLY_COL": "Select desired control and valid to apply it to column",
- "CUSTOM_SUBMIT_BTN": "Customize Submit button Text",
- "CUSTOM_CANCEL_BTN": "Customize Cancel button Text",
- "NAME_THIS_FORM": "Name this form",
- "SAVE_THIS_FORM": "save this form",
- "FINAL_STEP": "Final Step : form preview",
- "DATA_MODEL": "DATA MODEL",
- "FIELDS_MODEL": "FIELDS MODEL (ready to save to database one)",
- "SELECT_A_CTRL": "Select a control",
- "SELECT_CTRL_IN_LIST": "Select a control in the list below",
- "COL_WILL_BE_BLANK": "Column will be blank",
- "EDIT_PROPERTIES": "Edit properties",
- "HEADER_TEXT": "Header text",
- "ADD_EDIT_HEADER_HERE": "Add / edit header text here",
- "SUBTITLE_TEXT": "Subtitle text",
- "ADD_EDIT_SUBTIL_HERE": "Add / edit subtitle text here",
- "LABEL_TEXT": "Label text",
- "ADD_EDIT_LABEL_HERE": "Add / edit control label here",
- "PLACEHOLDER": "placeholder",
- "ADD_EDIT_PLACEHOLD": "Add / edit placeholder text here",
- "REQUIRED": "Required",
- "DESCRIPTION": "Description",
- "ADDEDIT_DESCRIPTION": "Add / edit description here",
- "DATE_FORMAT": "Date format",
- "ADD_NEW_RADIO": "Add new radio",
- "ADD_RADIO_PLACEHOLD": "add new radio",
- "EDIT_REMOVE_RADIO": "Edit/Remove radio",
- "NO_RADIO_ADD_NEW": "no radio : add new radio values",
- "SEARCH_4_OPTION": "search for option",
- "ADD": "add",
- "ORDER": "order",
- "OPTION": "option",
- "GROUP": "group",
- "ADD_NEW_OPTIONS": "Add new options",
- "ADD_A_NEW_OPTION": "add new option",
- "EDIT_REMOVE_OPTIONS": "Edit/Remove options",
- "NO_OPTION_ADD_NEW": "no option : add new options",
- "ADD_NEW_GROUPS": "Add new groups",
- "ADD_A_NEW_GROUP": "Add new group",
- "EDIT_GROUPS_OPTIONS": "Edit/Remove options/groups",
- "NO_GROUP_ADD_NEW": "add new groups",
- "OK": "OK",
- "CANCEL": "Cancel"
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("8", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = {
- "SAY_HI": "Bonjour",
- "EDIT_TAB": "Edition / Creation",
- "PREVIEW_TAB": "Aperçu",
- "WIZARD_LINES": "lignes",
- "WIZARD_LAYOUT": "disposition",
- "WIZARD_CONTROLS": "contrôles",
- "WIZARD_SAVE": "sauvegarder",
- "PAGER_PREVIOUS": "Précédent",
- "PAGER_NEXT": "Suivant",
- "COMMAND_PANEL": "Commandes",
- "VISUAL_PANEL": "Visuel",
- "ADD_NEW_LINE": "Ajouter une nouvelle ligne",
- "SELECTED_LINE": "Ligne sélectionnée",
- "NUMBER_OF_COLUMN": "nombre de colonnes",
- "APPLY_CTRL2COL": "Appliquer les contrôles aux colonnes",
- "CLIC_TAP_2_OPEN": "Cliquer sur une colonne pour ouvrir le menu d'édition",
- "SELECT_2_APPLY_COL": "Sélectionner un contrôle puis valider pour l'appliquer à la colonne",
- "CUSTOM_SUBMIT_BTN": "Personnaliser le texte du bouton envoie",
- "CUSTOM_CANCEL_BTN": "Personnaliser le texte du bouton annuler",
- "NAME_THIS_FORM": "Nommer le formulaire",
- "SAVE_THIS_FORM": "sauvegarder le formulaire",
- "FINAL_STEP": "Dernière étape : aperçu du formulaire",
- "DATA_MODEL": "MODELE DE DONNEES",
- "FIELDS_MODEL": "MODELE DES CHAMPS (modèle compatible base de données)",
- "SELECT_A_CTRL": "Sélectionner un contrôle",
- "SELECT_CTRL_IN_LIST": "Sélectionner un contrôle dans la liste ci-dessous",
- "COL_WILL_BE_BLANK": "La colonne sera vide",
- "EDIT_PROPERTIES": "Editer les propriétés",
- "HEADER_TEXT": "Texte du titre principal",
- "ADD_EDIT_HEADER_HERE": "Editer le textes du titre principal",
- "SUBTITLE_TEXT": "Texte du sous-titre",
- "ADD_EDIT_SUBTIL_HERE": "Editer le textes du sous-titre",
- "LABEL_TEXT": "Texte de l'étiquette",
- "ADD_EDIT_LABEL_HERE": "Editer le texte de l'étiquette",
- "PLACEHOLDER": "placeholder",
- "ADD_EDIT_PLACEHOLD": "Editer le placeholder",
- "REQUIRED": "Requis",
- "DESCRIPTION": "Description",
- "ADDEDIT_DESCRIPTION": "Ajouter / editer la description",
- "DATE_FORMAT": "Format de la date",
- "ADD_NEW_RADIO": "Ajouter un nouveau choix à cocher",
- "ADD_RADIO_PLACEHOLD": "Ajouter un nouveau choix à cocher",
- "EDIT_REMOVE_RADIO": "Editer / supprimer un choix à cocher",
- "NO_RADIO_ADD_NEW": "aucun choix à cocher : en ajouter un",
- "SEARCH_4_OPTION": "rechercher une option",
- "ADD": "ajouter",
- "ORDER": "ordre",
- "OPTION": "option",
- "GROUP": "groupe",
- "ADD_NEW_OPTIONS": "Ajouter de nouvelles options",
- "ADD_A_NEW_OPTION": "ajoutre une option",
- "EDIT_REMOVE_OPTIONS": "Editer / supprimer des options",
- "NO_OPTION_ADD_NEW": "aucune option : en ajouter",
- "ADD_NEW_GROUPS": "Ajouter de nouveaux groupes",
- "ADD_A_NEW_GROUP": "Ajouter un nouveau groupe",
- "EDIT_GROUPS_OPTIONS": "Editer / supprimer les groupes et options",
- "NO_GROUP_ADD_NEW": "ajouter de nouveaux groupes",
- "OK": "Valider",
- "CANCEL": "Annuler"
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("9", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = {
- "SAY_HI": "Hola",
- "EDIT_TAB": "Editar / Crear",
- "PREVIEW_TAB": "Previsualizar",
- "WIZARD_LINES": "lineas",
- "WIZARD_LAYOUT": "diseño",
- "WIZARD_CONTROLS": "controles",
- "WIZARD_SAVE": "guardar",
- "PAGER_PREVIOUS": "Anterior",
- "PAGER_NEXT": "Siguiente",
- "COMMAND_PANEL": "Comando",
- "VISUAL_PANEL": "Visual",
- "ADD_NEW_LINE": "Agregar nueva linea",
- "SELECTED_LINE": "Linea seleccionada",
- "NUMBER_OF_COLUMN": "numero de columnas",
- "APPLY_CTRL2COL": "Aplicar controles a columnas",
- "CLIC_TAP_2_OPEN": "Click / Toque en la columna para seleccionar controles",
- "SELECT_2_APPLY_COL": "Selecciona el control deseado para aplicarlo a la columna",
- "CUSTOM_SUBMIT_BTN": "Personalizar texto de boton Enviar",
- "CUSTOM_CANCEL_BTN": "Personalizar texto de boton Cancelar",
- "NAME_THIS_FORM": "Nombrar formulario",
- "SAVE_THIS_FORM": "guardar formulario",
- "FINAL_STEP": "Ultimo paso : previsualizar formulario",
- "DATA_MODEL": "MODELO DE DATOS",
- "FIELDS_MODEL": "MODELO DE CAMPOS (listo para guardar en base de datos uno)",
- "SELECT_A_CTRL": "Selecciona un control",
- "SELECT_CTRL_IN_LIST": "Selecciona un control de la lista",
- "COL_WILL_BE_BLANK": "Columna sera vacia",
- "EDIT_PROPERTIES": "Editar propiedades",
- "HEADER_TEXT": "Texto de encabezado",
- "ADD_EDIT_HEADER_HERE": "Agregar / editar texto de encabezado aqui",
- "SUBTITLE_TEXT": "Texto de subtitulo",
- "ADD_EDIT_SUBTIL_HERE": "Agregar / editar texto de subtitulo aqui",
- "LABEL_TEXT": "Texto de etiqueta",
- "ADD_EDIT_LABEL_HERE": "Agregar / editar texto de etiqueta aqui",
- "PLACEHOLDER": "Marcador",
- "ADD_EDIT_PLACEHOLD": "Agregar / editar texto de marcador aqui",
- "REQUIRED": "Requerido",
- "DESCRIPTION": "Descripcion",
- "ADDEDIT_DESCRIPTION": "Agregar / editar descripcion aqui",
- "DATE_FORMAT": "Formato de fecha",
- "ADD_NEW_RADIO": "Agregar nuevo radio",
- "ADD_RADIO_PLACEHOLD": "agregar nuevo radio",
- "EDIT_REMOVE_RADIO": "Editar/Eliminar radio",
- "NO_RADIO_ADD_NEW": "sin radio : agregar nuevos valores de radio",
- "SEARCH_4_OPTION": "buscar opcion",
- "ADD": "agregar",
- "ORDER": "orden",
- "OPTION": "opcion",
- "GROUP": "grupo",
- "ADD_NEW_OPTIONS": "agregar nuevas opciones",
- "ADD_A_NEW_OPTION": "agregar nueva opcione",
- "EDIT_REMOVE_OPTIONS": "Editar/Eliminar opciones",
- "NO_OPTION_ADD_NEW": "sin opcion : agregar nuevas opciones",
- "ADD_NEW_GROUPS": "Agregar nuevos grupos",
- "ADD_A_NEW_GROUP": "Agregar nuevo grupo",
- "EDIT_GROUPS_OPTIONS": "Editar/Eliminar opciones/grupos",
- "NO_GROUP_ADD_NEW": "agregar nuevos grupos",
- "OK": "OK",
- "CANCEL": "Cancelar"
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("a", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = {
- "SAY_HI": "Hallo",
- "EDIT_TAB": "Bearbeiten / Schaffen",
- "PREVIEW_TAB": "Vorschau",
- "WIZARD_LINES": "Linien",
- "WIZARD_LAYOUT": "Layout",
- "WIZARD_CONTROLS": "Steuerung",
- "WIZARD_SAVE": "sparen",
- "PAGER_PREVIOUS": "vorher.",
- "PAGER_NEXT": "nächste",
- "COMMAND_PANEL": "Anweisung",
- "VISUAL_PANEL": "visuell",
- "ADD_NEW_LINE": "Hinzufügen neuer Leitung",
- "SELECTED_LINE": "ausgewählte Linie",
- "NUMBER_OF_COLUMN": "Anzahl von Spalten",
- "APPLY_CTRL2COL": "gelten diese Steuer Spalte",
- "CLIC_TAP_2_OPEN": "klicken Sie auf Spalte zur Steuerungsauswahl öffnen",
- "SELECT_2_APPLY_COL": "Wählen Sie die gewünschte Steuerung und gültig , um es in Spalte anwenden",
- "CUSTOM_SUBMIT_BTN": "Passen Submit-Button Text",
- "CUSTOM_CANCEL_BTN": "Passen Cancel-Button Text",
- "NAME_THIS_FORM": "Nennen dieses Formular",
- "SAVE_THIS_FORM": "Speichern dieses Formular",
- "FINAL_STEP": "Endschritt : Formular Vorschau",
- "DATA_MODEL": "DATEN MODELL",
- "FIELDS_MODEL": "FELDER MODELL (Datenbank-kompatibel)",
- "SELECT_A_CTRL": "Wählen Sie ein Steuer",
- "SELECT_CTRL_IN_LIST": "Wählen Sie ein Steuer aus der Liste unten",
- "COL_WILL_BE_BLANK": "die Spalte werde leer sein",
- "EDIT_PROPERTIES": "Anzeigen",
- "HEADER_TEXT": "Kopftext",
- "ADD_EDIT_HEADER_HERE": "Kopftext ändern",
- "SUBTITLE_TEXT": "Untertitel",
- "ADD_EDIT_SUBTIL_HERE": "Untertitel ändern",
- "LABEL_TEXT": "Etikett",
- "ADD_EDIT_LABEL_HERE": "Etikett ändern",
- "PLACEHOLDER": "placeholder",
- "ADD_EDIT_PLACEHOLD": "placeholder ändern",
- "REQUIRED": "erforderlich",
- "DESCRIPTION": "Beschreibung",
- "ADDEDIT_DESCRIPTION": "Beschreibung ändern",
- "DATE_FORMAT": "Datumsformat",
- "ADD_NEW_RADIO": "Radiobutton hinzufügen",
- "ADD_RADIO_PLACEHOLD": "Radiobutton hinzufügen",
- "EDIT_REMOVE_RADIO": "Radiobutton ändern",
- "NO_RADIO_ADD_NEW": "kein Radiobutton : Radiobutton hinzufügen",
- "SEARCH_4_OPTION": "option suchen",
- "ADD": "hinzufügen",
- "ORDER": "bestellen",
- "OPTION": "Option",
- "GROUP": "Gruppe",
- "ADD_NEW_OPTIONS": "Optionen hinzufügen",
- "ADD_A_NEW_OPTION": "Option hinzufügen",
- "EDIT_REMOVE_OPTIONS": "Optionen ändern",
- "NO_OPTION_ADD_NEW": "kein option : Option hinzufügen",
- "ADD_NEW_GROUPS": "Gruppen hinzufügen",
- "ADD_A_NEW_GROUP": "Gruppe hinzufügen",
- "EDIT_GROUPS_OPTIONS": "Gruppen ändern",
- "NO_GROUP_ADD_NEW": "keine Gruppe : Gruppe hinzufügen",
- "OK": "bestätigen",
- "CANCEL": "stornieren"
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("b", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = {
- "SAY_HI": "Merhaba",
- "EDIT_TAB": "Düzenle / Oluştur",
- "PREVIEW_TAB": "Önizleme",
- "WIZARD_LINES": "satırlar",
- "WIZARD_LAYOUT": "düzen",
- "WIZARD_CONTROLS": "kontroller",
- "WIZARD_SAVE": "kaydet",
- "PAGER_PREVIOUS": "Geri",
- "PAGER_NEXT": "İleri",
- "COMMAND_PANEL": "Komut",
- "VISUAL_PANEL": "Görsel",
- "ADD_NEW_LINE": "Yeni satır ekle",
- "SELECTED_LINE": "Seçili satır",
- "NUMBER_OF_COLUMN": "sütun sayısı",
- "APPLY_CTRL2COL": "Sütunlara form ögesi ekle",
- "CLIC_TAP_2_OPEN": "Form ögesi eklemek için sütunlara tıkla",
- "SELECT_2_APPLY_COL": "İstediğin ögeyi seçtikten sonra gerekli yerleri doldur ve kaydet",
- "CUSTOM_SUBMIT_BTN": "Gönder butonu yazısını düzenle",
- "CUSTOM_CANCEL_BTN": "İptal butonu yazısını düzenle",
- "NAME_THIS_FORM": "Forma isim ver",
- "SAVE_THIS_FORM": "formu kaydet",
- "FINAL_STEP": "Son aşama : form önizlemesi",
- "DATA_MODEL": "VERİ MODELİ",
- "FIELDS_MODEL": "ALAN MODELİ (veritabanına kaydetmeye hazır)",
- "SELECT_A_CTRL": "Form ögesi seç",
- "SELECT_CTRL_IN_LIST": "Verilen listeden bir form ögesi seç",
- "COL_WILL_BE_BLANK": "Sütun boş kalacak",
- "EDIT_PROPERTIES": "Özellikleri düzenle",
- "HEADER_TEXT": "Başlık yazısı",
- "ADD_EDIT_HEADER_HERE": "Başlık yazısını ekle / düzenle",
- "SUBTITLE_TEXT": "Altyazı",
- "ADD_EDIT_SUBTIL_HERE": "Altyazı ekle / düzenle",
- "LABEL_TEXT": "Form ögesinin adı",
- "ADD_EDIT_LABEL_HERE": "Ad ekle / düzenle",
- "PLACEHOLDER": "Form ögesinin içine geçici yazı ekle",
- "ADD_EDIT_PLACEHOLD": "Geçici yazı ekle / düzenle",
- "REQUIRED": "Gerekli",
- "DESCRIPTION": "Açıklama",
- "ADDEDIT_DESCRIPTION": "Açıklama ekle / düzenle",
- "DATE_FORMAT": "Tarih formatı",
- "ADD_NEW_RADIO": "Radio butonu ekle",
- "ADD_RADIO_PLACEHOLD": "radio butonu ekle",
- "EDIT_REMOVE_RADIO": "Radio butonunu ekle / düzenle",
- "NO_RADIO_ADD_NEW": "radio butonu yok : yeni buton ekle",
- "SEARCH_4_OPTION": "seçenek ara",
- "ADD": "ekle",
- "ORDER": "sıra",
- "OPTION": "seçenek",
- "GROUP": "grup",
- "ADD_NEW_OPTIONS": "Yeni seçenek ekle",
- "ADD_A_NEW_OPTION": "yeni seçenek ekle",
- "EDIT_REMOVE_OPTIONS": "Seçenekleri düzenle/sil",
- "NO_OPTION_ADD_NEW": "seçenek yok : yeni seçenek ekle",
- "ADD_NEW_GROUPS": "Yeni grup ekle",
- "ADD_A_NEW_GROUP": "Yeni grup ekle",
- "EDIT_GROUPS_OPTIONS": "Seçenek/Grup Ekle/sil",
- "NO_GROUP_ADD_NEW": "yeni grup ekle",
- "OK": "TAMAM",
- "CANCEL": "İptal"
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("c", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = {
- "SAY_HI": "こんにちわ",
- "EDIT_TAB": "編集 / 作成",
- "PREVIEW_TAB": "プレビュー",
- "WIZARD_LINES": "ライン",
- "WIZARD_LAYOUT": "レイアウト",
- "WIZARD_CONTROLS": "コントロール",
- "WIZARD_SAVE": "サーブ",
- "PAGER_PREVIOUS": "前",
- "PAGER_NEXT": "次",
- "COMMAND_PANEL": "コマンド",
- "VISUAL_PANEL": "ビジュアル",
- "ADD_NEW_LINE": "新しいライン追加",
- "SELECTED_LINE": "選択されたライン",
- "NUMBER_OF_COLUMN": "カラムの数",
- "APPLY_CTRL2COL": "カラムにコントロール適用",
- "CLIC_TAP_2_OPEN": "コントロール選択を広げるには列をクリック",
- "SELECT_2_APPLY_COL": "好きなコントロールを選び適用",
- "CUSTOM_SUBMIT_BTN": "適用ボタンの文字変更する場合",
- "CUSTOM_CANCEL_BTN": "キャンセルボタンの文字変更する場合",
- "NAME_THIS_FORM": "形式に名前を付ける",
- "SAVE_THIS_FORM": "形式をサーブ",
- "FINAL_STEP": "ファイナルステップ : プレビュー形式",
- "DATA_MODEL": "データーモデル",
- "FIELDS_MODEL": "モデルフィールド",
- "SELECT_A_CTRL": "コントロールを選び選択",
- "SELECT_CTRL_IN_LIST": "以下のリストからコントロールを選び選択",
- "COL_WILL_BE_BLANK": "空になる列",
- "EDIT_PROPERTIES": "プロパティの変更",
- "HEADER_TEXT": "ヘッダーテキスト",
- "ADD_EDIT_HEADER_HERE": "ヘッダーテキスト文字変更",
- "SUBTITLE_TEXT": "サブタイトル テキスト",
- "ADD_EDIT_SUBTIL_HERE": "サブタイトルテキスト文字変更",
- "LABEL_TEXT": "ラベルテキスト",
- "ADD_EDIT_LABEL_HERE": "ラベルテキスト文字変更",
- "PLACEHOLDER": "プレースホルダー",
- "ADD_EDIT_PLACEHOLD": "プレースホルダー文字変更",
- "REQUIRED": "必須",
- "DESCRIPTION": "説明",
- "ADDEDIT_DESCRIPTION": "説明の変更",
- "DATE_FORMAT": "日付の形式",
- "ADD_NEW_RADIO": "新ラジオボタンを追加",
- "ADD_RADIO_PLACEHOLD": "新ラジオボタンを追加",
- "EDIT_REMOVE_RADIO": "ラジオボタン変更",
- "NO_RADIO_ADD_NEW": "ラジオ無し : 新ラジオボタン追加",
- "SEARCH_4_OPTION": "オプション検索",
- "ADD": "追加",
- "ORDER": "順番",
- "OPTION": "オプション",
- "GROUP": "グループ",
- "ADD_NEW_OPTIONS": "新しいオプション追加",
- "ADD_A_NEW_OPTION": "新しいオプション追加",
- "EDIT_REMOVE_OPTIONS": "オプションの変更",
- "NO_OPTION_ADD_NEW": "オプション無し : 新しいオプション追加",
- "ADD_NEW_GROUPS": "新しいグループ追加",
- "ADD_A_NEW_GROUP": "新しいグループ追加",
- "EDIT_GROUPS_OPTIONS": "グループを変更",
- "NO_GROUP_ADD_NEW": "グループを追加",
- "OK": "オッケー",
- "CANCEL": "キャンセル"
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('d', ['7', '8', '9', 'a', 'b', 'c'], function (_export) {
- 'use strict';
-
- var localEn, localFr, localEs, localDe, localTr, localJp, TRANSLATE_CONFIG;
-
- function translateConfig($translateProvider) {
- $translateProvider.translations('en', localEn);
- $translateProvider.translations('fr', localFr);
- $translateProvider.translations('es', localEs);
- $translateProvider.translations('de', localDe);
- $translateProvider.translations('tr', localTr);
- $translateProvider.translations('jp', localJp);
- }
-
- return {
- setters: [function (_) {
- localEn = _['default'];
- }, function (_2) {
- localFr = _2['default'];
- }, function (_3) {
- localEs = _3['default'];
- }, function (_a) {
- localDe = _a['default'];
- }, function (_b) {
- localTr = _b['default'];
- }, function (_c) {
- localJp = _c['default'];
- }],
- execute: function () {
- TRANSLATE_CONFIG = 'easyFormTranslateConfig';
- translateConfig.$inject = ['$translateProvider'];
-
- _export('default', translateConfig);
-
- _export('TRANSLATE_CONFIG', TRANSLATE_CONFIG);
- }
- };
-});
-$__System.register('e', ['d'], function (_export) {
- /* global angular */
- 'use strict';
-
- var translateConfig, TRANSLATE_CONFIG, TRANSLATE_MODULE;
- return {
- setters: [function (_d) {
- translateConfig = _d['default'];
- TRANSLATE_CONFIG = _d.TRANSLATE_CONFIG;
- }],
- execute: function () {
- TRANSLATE_MODULE = 'eda.easyFormGenerator.translate';
-
- _export('default', angular.module(TRANSLATE_MODULE, []).config(translateConfig));
- }
- };
-});
-$__System.register('f', [], function (_export) {
- /* global angular */
- 'use strict';
-
- var CORE_MODULES;
- return {
- setters: [],
- execute: function () {
- CORE_MODULES = ['textAngular', 'textAngularSetup', 'ngAnimate', 'toaster', 'formly', 'formlyBootstrap', 'ui.bootstrap', 'nya.bootstrap.select', 'pascalprecht.translate'];
-
- _export('default', angular.module('edaStepWayEasyFormGen.core', CORE_MODULES));
- }
- };
-});
-$__System.registerDynamic("10", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
0 \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{{'WIZARD_LINES' | translate}}
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
1 \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{{'WIZARD_LAYOUT' | translate}}
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
2 \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{{'WIZARD_CONTROLS' | translate}}
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
3 \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{{'WIZARD_SAVE' | translate}}
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{{'COMMAND_PANEL' | translate}} \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{'ADD_NEW_LINE' | translate}} : \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\t \t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{{'VISUAL_PANEL' | translate}} \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[0].control.type !== 'none' ? line.columns[0].control.type + ' ' + line.columns[0].control.subtype || '' : 'column 1'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[0].control.type !== 'none' ? line.columns[0].control.type + ' ' + line.columns[0].control.subtype || '' : 'column 1'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[1].control.type !== 'none' ? line.columns[1].control.type + ' ' + line.columns[1].control.subtype || '' : 'column 2'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[0].control.type !== 'none' ? line.columns[0].control.type + ' ' + line.columns[0].control.subtype || '' : 'column 1'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[1].control.type !== 'none' ? line.columns[1].control.type + ' ' + line.columns[1].control.subtype || '' : 'column 2'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[2].control.type !== 'none' ? line.columns[2].control.type + ' ' + line.columns[2].control.subtype || '' : 'column 3'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{{'COMMAND_PANEL' | translate}} \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
- {{'SELECTED_LINE' | translate}} - \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{'NUMBER_OF_COLUMN' | translate}} : \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{vm.configuration.lines[vm.configuration.activeLine -1].columns.length}} \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\t \t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{{'VISUAL_PANEL' | translate}} \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[0].control.type !== 'none' ? line.columns[0].control.type + ' ' + line.columns[0].control.subtype || '' : 'column 1'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[0].control.type !== 'none' ? line.columns[0].control.type + ' ' + line.columns[0].control.subtype || '' : 'column 1'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[1].control.type !== 'none' ? line.columns[1].control.type + ' ' + line.columns[1].control.subtype || '' : 'column 2'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[0].control.type !== 'none' ? line.columns[0].control.type + ' ' + line.columns[0].control.subtype || '' : 'column 1'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[1].control.type !== 'none' ? line.columns[1].control.type + ' ' + line.columns[1].control.subtype || '' : 'column 2'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[2].control.type !== 'none' ? line.columns[2].control.type + ' ' + line.columns[2].control.subtype || '' : 'column 3'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\t\t
\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{{'COMMAND_PANEL' | translate}} \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
- {{'APPLY_CTRL2COL' | translate}} - \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {{'CLIC_TAP_2_OPEN' | translate}}.
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {{'SELECT_2_APPLY_COL' | translate}}.
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t \t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\t \t\n\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{{'VISUAL_PANEL' | translate}} \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[0].control.type !== 'none' ? line.columns[0].control.type + ' ' + line.columns[0].control.subtype || '' : 'column 1'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[0].control.type !== 'none' ? line.columns[0].control.type + ' ' + line.columns[0].control.subtype || '' : 'column 1'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[1].control.type !== 'none' ? line.columns[1].control.type + ' ' + line.columns[1].control.subtype || '' : 'column 2'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[0].control.type !== 'none' ? line.columns[0].control.type + ' ' + line.columns[0].control.subtype || '' : 'column 1'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[1].control.type !== 'none' ? line.columns[1].control.type + ' ' + line.columns[1].control.subtype || '' : 'column 2'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{line.columns[2].control.type !== 'none' ? line.columns[2].control.type + ' ' + line.columns[2].control.subtype || '' : 'column 3'}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t \t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{{'COMMAND_PANEL' | translate}} \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{{'SAVE_THIS_FORM' | translate}} \n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\t \t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{{'FINAL_STEP' | translate}} \n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \t\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{{'DATA_MODEL' | translate}}
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t{{vm.dataModel | json}}\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
{{'FIELDS_MODEL' | translate}}
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t{{vm.wfFormFieldsOnlyNeededProperties | json}}\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n ";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('11', [], function (_export) {
- /* global angular */
- 'use strict';
-
- var DEBUG_MODEL, initDebugModel, DEFAULT_TAB_MODEL, initTabModel, COLUMN_TEMPLATE, initColumnTemplate, LINE_TEMPLATE, initLineTemplate;
- return {
- setters: [],
- execute: function () {
- DEBUG_MODEL = {
- showDebug: false,
- configurationModelNumberofLines: 1
- };
-
- initDebugModel = function initDebugModel() {
- return angular.copy(DEBUG_MODEL);
- };
-
- DEFAULT_TAB_MODEL = {
- editTab: {
- active: true
- },
- previewTab: {
- active: false,
- tabVisible: true,
- modelsVisible: true
- }
- };
-
- initTabModel = function initTabModel(isPreviewPanelVisible, arePreviewModelsVisible) {
- var _tabModel = angular.copy(DEFAULT_TAB_MODEL);
- angular.extend(_tabModel.previewTab, {
- tabVisible: isPreviewPanelVisible,
- modelsVisible: arePreviewModelsVisible
- });
- return _tabModel;
- };
-
- COLUMN_TEMPLATE = {
- numColumn: -1,
- exist: true,
- control: {
- type: 'none',
- key: 'none',
- subtype: 'none'
- }
- };
- // templateOptions: {
- // label: 'none',
- // placeholder: 'none',
- // required: false,
- // description: 'Descriptive text'
- // }
-
- initColumnTemplate = function initColumnTemplate() {
- return angular.copy(COLUMN_TEMPLATE);
- };
-
- LINE_TEMPLATE = {
- line: -1,
- activeColumn: 1,
- columns: [{
- numColumn: 1,
- exist: true,
- control: {
- type: 'none',
- key: 'none'
- }
- }]
- };
- // templateOptions: {
- // label: 'none',
- // placeholder: 'none',
- // required: false,
- // description: 'Descriptive text'
- // }
-
- initLineTemplate = function initLineTemplate() {
- return angular.copy(LINE_TEMPLATE);
- };
-
- _export('initDebugModel', initDebugModel);
-
- _export('initTabModel', initTabModel);
-
- _export('initColumnTemplate', initColumnTemplate);
-
- _export('initLineTemplate', initLineTemplate);
- }
- };
-});
-$__System.registerDynamic("12", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = "\n\n
\n
\n
\n
\n \n \n {{'SELECT_CTRL_IN_LIST' | translate}} :\n \n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n {{'SELECT_A_CTRL' | translate}}\n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n {{'COL_WILL_BE_BLANK' | translate}}\n \n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n \n {{'ADD_NEW_RADIO' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{'EDIT_REMOVE_RADIO' | translate}} :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n \n {{'ADD_NEW_OPTIONS' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{'EDIT_REMOVE_OPTIONS' | translate}} :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n {{'PREVIEW_TAB' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{'EDIT_PROPERTIES' | translate}} :\n \n \n
\n
\n
\n
\n \n {{'ADD_NEW_OPTIONS' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{'ADD_NEW_GROUPS' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{'EDIT_GROUPS_OPTIONS' | translate}} :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n";
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('13', ['11', '12', '14', '15', '16'], function (_export) {
- var initDebugModel, initTabModel, initColumnTemplate, initLineTemplate, editControlModalTemplate, EDIT_MODAL_CONTROLLER_NAME, EDIT_MODAL_CONTROLLERAS_NAME, _createClass, _classCallCheck, STEP_WAY_MAIN_CONTROLLER_NAME, STEP_WAY_MAIN_CONTROLLERAS_NAME, edaStepWayEasyFormGenController, toInject;
-
- return {
- setters: [function (_3) {
- initDebugModel = _3.initDebugModel;
- initTabModel = _3.initTabModel;
- initColumnTemplate = _3.initColumnTemplate;
- initLineTemplate = _3.initLineTemplate;
- }, function (_4) {
- editControlModalTemplate = _4['default'];
- }, function (_5) {
- EDIT_MODAL_CONTROLLER_NAME = _5.EDIT_MODAL_CONTROLLER_NAME;
- EDIT_MODAL_CONTROLLERAS_NAME = _5.EDIT_MODAL_CONTROLLERAS_NAME;
- }, function (_) {
- _createClass = _['default'];
- }, function (_2) {
- _classCallCheck = _2['default'];
- }],
- execute: function () {
- /* global angular */
- 'use strict';
-
- STEP_WAY_MAIN_CONTROLLER_NAME = 'edaStepWayEasyFormGenController';
- STEP_WAY_MAIN_CONTROLLERAS_NAME = 'vm';
-
- edaStepWayEasyFormGenController = (function () {
- function edaStepWayEasyFormGenController(easyFormGenVersion, $filter, toaster, $timeout, $modal, $log, $formlyProxy, $modalProxy, easyFormSteWayConfig) {
- _classCallCheck(this, edaStepWayEasyFormGenController);
-
- this.easyFormGenVersion = easyFormGenVersion;
- this.$filter = $filter;
- this.toaster = toaster;
- this.$timeout = $timeout;
- this.$modal = $modal;
- this.$log = $log;
- this.$formlyProxy = $formlyProxy;
- this.$modalProxy = $modalProxy;
- this.easyFormSteWayConfig = easyFormSteWayConfig;
-
- this.init();
- }
-
- _createClass(edaStepWayEasyFormGenController, [{
- key: 'init',
- value: function init() {
-
- this.dataModel = {};
- this.wfFormFields = [];
- this.wfFormFieldsOnlyNeededProperties = [];
- this.easyFormGeneratorVERSION = this.easyFormGenVersion;
- this.debug = initDebugModel();
- this.tab = initTabModel(this.easyFormSteWayConfig.isPreviewPanelVisible(), this.easyFormSteWayConfig.arePreviewModelsVisible());
- this.configuration = {}; //configuration model (contains array of lines which contains array of columns)
- this.numberOfColumns = 1;
- this.MaxNumberOfColumns = 3;
- this.MinNumberOfColumns = 1;
- this.columnTemplate = initColumnTemplate(); //TODO : check is really needed
- this.lineTemplate = initLineTemplate(); //TODO : check if really needed
- this.nyaSelect = {};
- this.animationsEnabled = this.easyFormSteWayConfig.getModalAnimationValue(); //-> disabling animation untill correction in angular bootstrap
- this.editControlModalSize = 'lg';
- this.formlyList = {};
- this.previewLoadedForm = { fieldsModel: [] };
- this.configurationLoaded = {};
- this.returnSaveEvent = false;
- //this.resetToZeroModel = resetToZeroModel; //function no more used
-
- this.$formlyProxy.initConfigurationEditFromScratch(this.configuration);
-
- this.$modalProxy.initNyaSelect(this.nyaSelect);
-
- //console.info(`main controller : init nyaSelect model`);
- //console.dir(angular.copy(this.nyaSelect));
- }
- }, {
- key: 'onSubmit',
- value: function onSubmit() {
- var JSONedModel = this.$filter('json')(this.dataModel, 4);
- this.toaster.pop({
- type: 'info',
- timeout: 2000,
- title: 'it should save data model if it were not in editor',
- body: 'data : ' + JSONedModel,
- showCloseButton: true
- });
- }
- }, {
- key: 'countConfigurationModelLines',
- value: function countConfigurationModelLines() {
- this.debug.configurationModelNumberofLines = this.configuration.lines.length;
- return this.configuration.lines.length;
- }
- }, {
- key: 'setActiveLineNumber',
- value: function setActiveLineNumber(lineNumber) {
- if (lineNumber <= this.countConfigurationModelLines()) this.configuration.activeLine = lineNumber;
- }
- }, {
- key: 'upThisLine',
- value: function upThisLine(indexLine) {
- if (indexLine > -1) {
- if (this.configuration.lines[indexLine - 1]) {
- var currentLineObj = this.configuration.lines[indexLine];
- this.configuration.lines.splice(indexLine, 1);
- this.configuration.lines.splice(indexLine - 1, 0, currentLineObj);
- //manage selected aciveLine
- this.configuration.activeLine = 1;
- }
- }
- //re-render formfield
- this.$formlyProxy.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- }
- }, {
- key: 'downThisLine',
- value: function downThisLine(indexLine) {
- if (indexLine > -1) {
- if (this.configuration.lines[indexLine + 1]) {
- var currentLineObj = this.configuration.lines[indexLine];
- this.configuration.lines.splice(indexLine, 1);
- this.configuration.lines.splice(indexLine + 1, 0, currentLineObj);
- //manage selected aciveLine
- this.configuration.activeLine = 1;
- }
- }
- //re-render formfield
- this.$formlyProxy.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- }
- }, {
- key: 'addNewline',
- value: function addNewline() {
- this.configuration.lines.push(initLineTemplate());
- //re-render formfield
- this.$formlyProxy.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- }
- }, {
- key: 'removeThisLine',
- value: function removeThisLine(index) {
- if (index > -1) {
- if (this.configuration.lines.length > 1) {
- //manage selected aciveLine
- if (this.configuration.activeLine === index + 1) this.configuration.activeLine = 1;
- this.configuration.lines.splice(index, 1);
- } else {
- this.$timeout(function () {
- this.toaster.pop({
- type: 'warning',
- title: 'Last line',
- body: 'Can\'t delete the last line',
- showCloseButton: true
- });
- }, 100);
- }
- //re-render formfield
- this.$formlyProxy.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- }
- }
- }, {
- key: 'increaseNumberOfColumns',
- value: function increaseNumberOfColumns() {
- var lineIndex = this.configuration.activeLine - 1;
- if (this.configuration.lines[lineIndex].columns.length < this.MaxNumberOfColumns) {
-
- var newNumberOfColumns = this.configuration.lines[lineIndex].columns.push(angular.copy(initColumnTemplate()));
- this.configuration.lines[lineIndex].columns[newNumberOfColumns - 1].numColumn = newNumberOfColumns;
- }
- //re-render formfield
- this.$formlyProxy.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- }
- }, {
- key: 'decreaseNumberOfColumns',
- value: function decreaseNumberOfColumns() {
- if (this.configuration.lines[this.configuration.activeLine - 1].columns.length > 1) {
- this.configuration.lines[this.configuration.activeLine - 1].columns.splice(this.configuration.lines[this.configuration.activeLine - 1].columns.length - 1, 1);
- }
- this.$formlyProxy.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);
- this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- }
- }, {
- key: 'resetStepCounter',
- value: function resetStepCounter() {
- this.configuration.configStepCounter = 0;
- }
- }, {
- key: 'nextConfigStep',
- value: function nextConfigStep() {
- var configStepCounterMAX = this.configuration.listConfigStep.length - 1;
- if (this.configuration.configStepCounter !== configStepCounterMAX) {
- this.configuration.configStepCounter++;
- }
- this.setTrueThisStepIndicator(this.configuration.configStepCounter);
- }
- }, {
- key: 'resetAllIndicators',
- value: function resetAllIndicators() {
- for (var i = this.configuration.stepIndicators.length - 1; i >= 0; i--) {
- this.configuration.stepIndicators[i] = false;
- }
- }
- }, {
- key: 'setTrueThisStepIndicator',
- value: function setTrueThisStepIndicator(indexIndicator) {
- this.resetAllIndicators();
- this.configuration.stepIndicators[indexIndicator] = true;
- }
- }, {
- key: 'previousConfigStep',
- value: function previousConfigStep() {
- if (this.configuration.configStepCounter !== 0) {
- this.configuration.configStepCounter--;
- }
- this.setTrueThisStepIndicator(this.configuration.configStepCounter);
- }
- }, {
- key: 'stepReachable',
- value: function stepReachable(indexStep) {
- if (indexStep < this.configuration.configStepCounter) {
- return 'disabled';
- } else {
- return 'enabled';
- }
- }
- }, {
- key: 'showModalAddCtrlToColumn',
- value: function showModalAddCtrlToColumn(size, indexLine, numcolumn) {
- var _this = this;
-
- var editControlModal = {};
- angular.extend(editControlModal, {
- animation: this.animationsEnabled,
- template: editControlModalTemplate,
- controller: EDIT_MODAL_CONTROLLER_NAME,
- controllerAs: EDIT_MODAL_CONTROLLERAS_NAME,
- size: this.editControlModalSize,
- resolve: {
- nyaSelect: function nyaSelect() {
- return _this.$modalProxy.getNyASelectFromSelectedLineColumn(_this.nyaSelect, _this.configuration, indexLine, numcolumn);
- }
- }
- });
-
- var modalInstance = this.$modal.open(editControlModal);
- modalInstance.result.then(function (modalAddCtrlModel) {
- _this.$modalProxy.bindConfigurationModelFromModalReturn(indexLine, numcolumn, modalAddCtrlModel, _this.configuration);
- _this.$formlyProxy.applyConfigurationToformlyModel(_this.configuration, _this.wfFormFields, _this.dataModel);
- _this.wfFormFieldsOnlyNeededProperties = angular.copy(_this.wfFormFields);
- }, function () {
- //$log.info('Modal dismissed at: ' + new Date());
- });
- }
- }, {
- key: 'previewExistingform',
- value: function previewExistingform(formlyform) {
- var configlines = JSON.parse(formlyform.formlyField);
- //here to replace with $scope.configuration : initialise configuration with lines
- this.configurationLoaded = {};
- this.$formlyProxy.bindConfigurationLines(this.configurationLoaded, configlines);
- this.$formlyProxy.applyConfigurationToformlyModel(this.configurationLoaded, this.previewLoadedForm.fieldsModel, this.dataModel);
- this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);
- this.previewLoadedForm.cancelButtonText = formlyform.cancelButtonText;
- this.previewLoadedForm.submitButtonText = formlyform.submitButtonText;
- }
- }, {
- key: 'saveThisForm',
- value: function saveThisForm() {
- if (typeof this.configuration.formName === 'undefined') {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: 'Form name is undefined',
- body: 'Form has not been saved.',
- showCloseButton: true
- });
- return false;
- }
- if (this.configuration.formName === '') {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: 'Form name is required',
- body: 'Form has not been saved.',
- showCloseButton: true
- });
- return false;
- }
- this.toaster.pop({
- type: 'wait',
- timeout: 10000,
- title: 'Form is being saved',
- body: 'Wait.',
- showCloseButton: true
- });
- this.toaster.clear();
- this.returnSaveEvent = true;
- return true;
- }
- }]);
-
- return edaStepWayEasyFormGenController;
- })();
-
- toInject = ['easyFormGenVersion', '$filter', 'toaster', '$timeout', '$modal', '$log', '$formlyProxy', '$modalProxy', 'easyFormSteWayConfig'];
-
- edaStepWayEasyFormGenController.$inject = toInject;
-
- _export('default', edaStepWayEasyFormGenController);
-
- _export('STEP_WAY_MAIN_CONTROLLER_NAME', STEP_WAY_MAIN_CONTROLLER_NAME);
-
- _export('STEP_WAY_MAIN_CONTROLLERAS_NAME', STEP_WAY_MAIN_CONTROLLERAS_NAME);
- }
- };
-});
-$__System.register('17', ['10', '13'], function (_export) {
- 'use strict';
-
- var easyformTemplate, edaStepWayEasyFormGenController, STEP_WAY_MAIN_CONTROLLER_NAME, STEP_WAY_MAIN_CONTROLLERAS_NAME, STEP_WAY_DIRECTIVE_NAME;
-
- function edaStepWayEasyFormGenDirective($templateCache, $timeout, $formlyProxy, $modalProxy) {
-
- var directive = {
- restrict: 'E',
- scope: {
- edaEasyFormGeneratorModel: '=',
- edaSaveFormEvent: '&edaSaveFormEvent'
- },
- controller: STEP_WAY_MAIN_CONTROLLER_NAME,
- controllerAs: STEP_WAY_MAIN_CONTROLLERAS_NAME,
- replace: false,
- template: easyformTemplate,
- link: linkFct
- };
- return directive;
-
- function linkFct(scope) {
-
- //watch "scope.easyFormGeneratorModel"
- scope.$watch(function () {
- return scope.edaEasyFormGeneratorModel;
- }, function (newValue, oldValue) {
- loadExistingConfigurationModel();
- }, true);
-
- //watch "scope.vm.returnSaveEvent"" = catch saving form event
- scope.$watch(function () {
- return scope.vm.returnSaveEvent;
- }, function (newValue, oldValue) {
- if (newValue === true) {
- var _easyFormGeneratorModel = {
- formName: scope.vm.configuration.formName,
- btnSubmitText: scope.vm.configuration.submitButtonText,
- btnCancelText: scope.vm.configuration.cancelButtonText,
- edaFieldsModel: scope.vm.configuration.lines,
- edaFieldsModelStringified: angular.toJson(scope.vm.configuration.lines),
- formlyFieldsModel: scope.vm.wfFormFieldsOnlyNeededProperties,
- dataModel: scope.vm.dataModel
- };
- scope.edaSaveFormEvent({ edaEasyFormGeneratorModel: _easyFormGeneratorModel });
- //back to false, waiting next save event
- scope.returnSaveEvent = false;
- }
- });
-
- function loadExistingConfigurationModel() {
- if (angular.isDefined(scope.edaEasyFormGeneratorModel)) {
- var configlines = returnAttributeConfigurationLinesIfNotEmpty();
- scope.configurationLoaded = {};
- $formlyProxy.bindConfigurationLines(scope.configurationLoaded, configlines);
- /**
- * rebind special control properties :
- *
- * formly expression properties
- * Validators
- * Validation
- */
- $modalProxy.refreshControlFormlyExpressionProperties(scope.configurationLoaded);
- $modalProxy.refreshControlFormlyValidators(scope.configurationLoaded);
- $modalProxy.refreshControlFormlyValidation(scope.configurationLoaded);
- //apply configuration model
- scope.vm.configuration = angular.copy(scope.configurationLoaded);
- //apply formly model
- $formlyProxy.applyConfigurationToformlyModel(scope.configurationLoaded, scope.vm.wfFormFields, scope.vm.model);
- scope.vm.wfFormFieldsOnlyNeededProperties = angular.copy(scope.vm.wfFormFields);
- scope.vm.dataModel = returnAttributeDataModelIfNotEmpty();
- scope.vm.configuration.formName = angular.isString(scope.edaEasyFormGeneratorModel.formName) ? scope.edaEasyFormGeneratorModel.formName : '';
- scope.vm.configuration.submitButtonText = angular.isString(scope.edaEasyFormGeneratorModel.btnSubmitText) ? scope.edaEasyFormGeneratorModel.btnSubmitText : 'Submit';
- scope.vm.configuration.cancelButtonText = angular.isString(scope.edaEasyFormGeneratorModel.btnCancelText) ? scope.edaEasyFormGeneratorModel.btnCancelText : 'Cancel';
- }
- }
-
- function returnAttributeConfigurationLinesIfNotEmpty() {
- var edaEasyFormGeneratorModelToReturn = angular.isArray(scope.edaEasyFormGeneratorModel.edaFieldsModel) ? scope.edaEasyFormGeneratorModel.edaFieldsModel.length > 0 ? scope.edaEasyFormGeneratorModel.edaFieldsModel : emptyEdaFieldsModel() : emptyEdaFieldsModel();
- return edaEasyFormGeneratorModelToReturn;
- }
-
- function returnAttributeDataModelIfNotEmpty() {
- var dataModelToReturn = angular.isArray(scope.edaEasyFormGeneratorModel.dataModel) ? scope.edaEasyFormGeneratorModel.dataModel.length > 0 ? scope.edaEasyFormGeneratorModel.dataModel : {} : {};
- return dataModelToReturn;
- }
-
- /**
- * empty fields model : to display at least an empty line
- * otherwise would look like ugly empty line like it were a bug
- */
- function emptyEdaFieldsModel() {
- var emptyModel = [{
- "line": 1,
- "activeColumn": 1,
- "columns": [{
- "numColumn": 1,
- "exist": true,
- "control": {
- "type": "none",
- "key": "none"
- }
- }]
- }];
- return emptyModel;
- }
- }
- }
-
- return {
- setters: [function (_) {
- easyformTemplate = _['default'];
- }, function (_2) {
- edaStepWayEasyFormGenController = _2['default'];
- STEP_WAY_MAIN_CONTROLLER_NAME = _2.STEP_WAY_MAIN_CONTROLLER_NAME;
- STEP_WAY_MAIN_CONTROLLERAS_NAME = _2.STEP_WAY_MAIN_CONTROLLERAS_NAME;
- }],
- execute: function () {
- STEP_WAY_DIRECTIVE_NAME = 'edaStepWayEasyFormGen';
- edaStepWayEasyFormGenDirective.$inject = ['$templateCache', '$timeout', '$formlyProxy', '$modalProxy'];
-
- _export('default', edaStepWayEasyFormGenDirective);
-
- _export('STEP_WAY_DIRECTIVE_NAME', STEP_WAY_DIRECTIVE_NAME);
- }
- };
-});
-$__System.register('18', [], function (_export) {
- /* global angular */
- 'use strict';
-
- var EASY_FORM_STEP_WAY_CONFIG_NAME;
-
- function easyFormSteWayConfig($translateProvider) {
- var _configuration = defaultConfig();
- var _controlsList = controlsList();
- var _defaultLanguage = getDefaultLanguage();
- var _currentLanguage = initDefaultLanguage();
- var _showPreviewPanel = getDefaultshowPreviewPanel();
- var _showPreviewModels = getDefaultShowPreviewModel();
- /* jshint validthis:true */
- this.$get = easyFormStepWayConfigGET;
- this.setModalAnimation = setModalAnimation;
- this.getModalAnimation = getModalAnimation;
- this.configuration = _configuration;
- this.getEnabledControls = getEnabledControls;
- this.disableControl = disableControl;
- this.enableControl = enableControl;
- this.setLanguage = setLanguage;
- this.getCurrentLanguage = getCurrentLanguage;
- this.showPreviewPanel = showPreviewPanel;
- this.showPreviewModels = showPreviewModels;
-
- //set default config
- function defaultConfig() {
- var _defaultConfiguration = {
- modalAnimated: false
- };
- return _defaultConfiguration;
- }
-
- //show preview panel by default
- function getDefaultshowPreviewPanel() {
- return true;
- }
-
- //show preview data, fields models in preview panel
- function getDefaultShowPreviewModel() {
- return true;
- }
-
- function getCurrentLanguage() {
- return _currentLanguage;
- }
-
- //list of controls
- function controlsList() {
- var controls = [{ name: 'empty', enabled: true }, { name: 'Header', enabled: true }, { name: 'Subtitle', enabled: true }, { name: 'TextInput', enabled: true }, { name: 'Password', enabled: true }, { name: 'Email', enabled: true }, { name: 'Date', enabled: true }, { name: 'Texarea', enabled: true }, { name: 'RichTextEditor', enabled: true }, { name: 'Radio', enabled: true }, { name: 'Checkbox', enabled: true }, { name: 'BasicSelect', enabled: true }, { name: 'GroupedSelect', enabled: true }];
- return controls;
- }
-
- function showPreviewPanel(wantToShow) {
- if (angular.isDefined(wantToShow)) {
- if (wantToShow === true) _showPreviewPanel = true;
- if (wantToShow === false) _showPreviewPanel = false;
- }
- }
-
- function showPreviewModels(wantToShow) {
- if (angular.isDefined(wantToShow)) {
- if (wantToShow === true) _showPreviewModels = true;
- if (wantToShow === false) _showPreviewModels = false;
- }
- }
-
- //language : set default to english
- function getDefaultLanguage() {
- var lang = 'en';
- return lang;
- }
-
- function setDefaultLanguage() {
- _currentLanguage = _defaultLanguage;
- $translateProvider.preferredLanguage(_currentLanguage);
- return _currentLanguage;
- }
-
- function setLanguage(language) {
- if (angular.isString(language)) {
- _currentLanguage = language;
- $translateProvider.preferredLanguage(language);
- } else {
- setDefaultLanguage();
- }
- }
-
- function initDefaultLanguage() {
- $translateProvider.useSanitizeValueStrategy('escape'); //security : Enable escaping of HTML
- $translateProvider.fallbackLanguage(_defaultLanguage); //fallback language to default language
- $translateProvider.preferredLanguage(_defaultLanguage);
- return _defaultLanguage;
- }
-
- function getEnabledControls() {
- return _controlsList;
- }
-
- function disableControl(controlName) {
- if (angular.isString(controlName)) {
- angular.forEach(_controlsList, function (aControl) {
- if (aControl.name === controlName) aControl.enabled = false;
- });
- }
- }
-
- function enableControl(controlName) {
- if (angular.isString(controlName)) {
- angular.forEach(_controlsList, function (aControl) {
- if (aControl.name === controlName) aControl.enabled = true;
- });
- }
- }
-
- function setModalAnimation(flagConfig) {
- var valueToApply = flagConfig === true ? flagConfig : flagConfig === false ? flagConfig : _configuration.modalAnimated;
-
- _configuration.modalAnimated = valueToApply;
- }
-
- function getModalAnimation() {
- return _configuration.modalAnimated;
- }
-
- //$get implementation :
- easyFormStepWayConfigGET.$inject = ['$translate'];
- function easyFormStepWayConfigGET($translate) {
-
- var service = {
- setModalAnimation: setModalAnimationFct,
- getModalAnimationValue: getModalAnimationValue,
- getListEnabledControl: getListEnabledControl,
- setLanguage: switchLanguage,
- getCurrentLanguage: getCurrentLanguage,
- isPreviewPanelVisible: isPreviewPanelVisible,
- arePreviewModelsVisible: arePreviewModelsVisible
- };
- return service;
-
- function getModalAnimationValue() {
- return _configuration.modalAnimated;
- }
-
- function setModalAnimationFct(value) {
- setModalAnimation(value);
- }
-
- function getListEnabledControl() {
- return angular.copy(_controlsList);
- }
-
- function switchLanguage(language) {
- if (angular.isString(language)) {
- _currentLanguage = language;
- $translate.use(language);
- } else {
- setDefaultLanguage();
- }
- }
-
- function isPreviewPanelVisible() {
- return _showPreviewPanel;
- }
-
- function arePreviewModelsVisible() {
- return _showPreviewModels;
- }
- }
- }
-
- return {
- setters: [],
- execute: function () {
- EASY_FORM_STEP_WAY_CONFIG_NAME = 'easyFormSteWayConfig';
- easyFormSteWayConfig.$inject = ['$translateProvider'];
-
- _export('default', easyFormSteWayConfig);
-
- _export('EASY_FORM_STEP_WAY_CONFIG_NAME', EASY_FORM_STEP_WAY_CONFIG_NAME);
- }
- };
-});
-$__System.register('19', ['13', '17', '18'], function (_export) {
- /* global angular */
- 'use strict';
-
- var edaStepWayEasyFormGenController, STEP_WAY_MAIN_CONTROLLER_NAME, edaStepWayEasyFormGenDirective, STEP_WAY_DIRECTIVE_NAME, easyFormSteWayConfig, EASY_FORM_STEP_WAY_CONFIG_NAME, STEP_WAY_MAIN_MODULE;
- return {
- setters: [function (_) {
- edaStepWayEasyFormGenController = _['default'];
- STEP_WAY_MAIN_CONTROLLER_NAME = _.STEP_WAY_MAIN_CONTROLLER_NAME;
- }, function (_2) {
- edaStepWayEasyFormGenDirective = _2['default'];
- STEP_WAY_DIRECTIVE_NAME = _2.STEP_WAY_DIRECTIVE_NAME;
- }, function (_3) {
- easyFormSteWayConfig = _3['default'];
- EASY_FORM_STEP_WAY_CONFIG_NAME = _3.EASY_FORM_STEP_WAY_CONFIG_NAME;
- }],
- execute: function () {
- STEP_WAY_MAIN_MODULE = 'easyFormStepwayMainModule';
-
- _export('default', angular.module(STEP_WAY_MAIN_MODULE, []).controller(STEP_WAY_MAIN_CONTROLLER_NAME, edaStepWayEasyFormGenController).directive(STEP_WAY_DIRECTIVE_NAME, edaStepWayEasyFormGenDirective).provider(EASY_FORM_STEP_WAY_CONFIG_NAME, easyFormSteWayConfig));
- }
- };
-});
-$__System.register('14', ['15', '16'], function (_export) {
- var _createClass, _classCallCheck, EDIT_MODAL_CONTROLLER_NAME, EDIT_MODAL_CONTROLLERAS_NAME, editControlModalController, toInject;
-
- return {
- setters: [function (_2) {
- _createClass = _2['default'];
- }, function (_3) {
- _classCallCheck = _3['default'];
- }],
- execute: function () {
- 'use strict';
-
- EDIT_MODAL_CONTROLLER_NAME = 'editControlModalController';
- EDIT_MODAL_CONTROLLERAS_NAME = 'editControlModCtrl';
-
- editControlModalController = (function () {
- function editControlModalController($modalInstance, nyaSelect, toaster, selectOptionManage, $modalProxy) {
- _classCallCheck(this, editControlModalController);
-
- this.$modalInstance = $modalInstance;
- this.nyaSelect = nyaSelect;
- this.toaster = toaster;
- this.selectOptionManage = selectOptionManage;
- this.$modalProxy = $modalProxy;
-
- this.init();
- }
-
- _createClass(editControlModalController, [{
- key: 'init',
- value: function init() {
- var initOptionModel = { rows: [] };
-
- this.radioRowCollection = initOptionModel;
- this.newOptionRadio = { saisie: '' };
- this.basicSelectRowCollection = initOptionModel;
- this.newOptionBasicSelect = { saisie: '' };
- this.groupedSelectRowCollection = initOptionModel;
- this.newOptionGroupedSelect = { saisie: '' };
- this.GroupedSelectGroups = { list: [] };
- this.newGroupGroupedSelect = { saisie: '' };
- this.groupSelectGroupClick = { showList: false };
- this.demodt = {};
- this.dateOptions = this.dateOptionsInit();
- this.demodt.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];
- this.nyaSelect.selectedControl = this.nyaSelect.temporyConfig.selectedControl;
- this.nyaSelectFiltered = {};
- this.modelNyaSelect = {};
-
- //init today date
- this.today();
- //init nyaSelect model depending selected control
- this.initNyaSelectConformingSelectedControl();
- }
- }, {
- key: 'initNyaSelectConformingSelectedControl',
- value: function initNyaSelectConformingSelectedControl() {
- //place nya-select to selection if not none :
- if (this.nyaSelect.selectedControl !== 'none') {
- for (var i = this.nyaSelect.controls.length - 1; i >= 0; i--) {
- if (this.nyaSelect.controls[i].id === this.nyaSelect.selectedControl) this.modelNyaSelect = this.nyaSelect.controls[i];
- }
- if (this.nyaSelect.selectedControl === 'BasicSelect') this.bindBasicSelectFromNYA();
- if (this.nyaSelect.selectedControl === 'GroupedSelect') this.bindGroupedSelectFromNYA();
- if (this.nyaSelect.selectedControl === 'Radio') this.bindRadioFromNYA();
- }
- this.initNyaSelectFiltered();
-
- console.info('modal controller : nyaSelect');
- console.dir(this.nyaSelect);
- }
- }, {
- key: 'initNyaSelectFiltered',
- value: function initNyaSelectFiltered() {
- var listCtrl = [].concat(this.$modalProxy.getFilteredNyaSelectObject());
- angular.extend(this.nyaSelectFiltered, {
- 'controls': listCtrl,
- 'selectedControl': this.nyaSelect.selectedControl,
- 'temporyConfig': this.nyaSelect.temporyConfig
- });
- }
- }, {
- key: 'bindBasicSelectFromNYA',
- value: function bindBasicSelectFromNYA() {
- if (this.nyaSelect.temporyConfig.formlyOptions.length > 0) {
- for (var i = 0; i <= this.nyaSelect.temporyConfig.formlyOptions.length - 1; i++) {
- var newOption = {
- 'option': this.nyaSelect.temporyConfig.formlyOptions[i].name,
- 'order': i,
- 'group': ''
- };
- this.basicSelectRowCollection.rows.push(newOption);
- }
- }
- }
- }, {
- key: 'bindRadioFromNYA',
- value: function bindRadioFromNYA() {
- if (this.nyaSelect.temporyConfig.formlyOptions.length > 0) {
- for (var i = 0; i <= this.nyaSelect.temporyConfig.formlyOptions.length - 1; i++) {
- var newOption = {
- 'option': this.nyaSelect.temporyConfig.formlyOptions[i].name,
- 'order': i,
- 'group': ''
- };
- this.radioRowCollection.rows.push(newOption);
- }
- }
- }
- }, {
- key: 'bindGroupedSelectFromNYA',
- value: function bindGroupedSelectFromNYA() {
- if (this.nyaSelect.temporyConfig.formlyOptions.length > 0) {
- for (var i = 0; i <= this.nyaSelect.temporyConfig.formlyOptions.length - 1; i++) {
- var newOption = {
- 'option': this.nyaSelect.temporyConfig.formlyOptions[i].name,
- 'order': i,
- 'group': this.nyaSelect.temporyConfig.formlyOptions[i].group
- };
- this.groupedSelectRowCollection.rows.push(newOption);
- }
- var filteredgroup = _.uniq(_.pluck(this.groupedSelectRowCollection.rows, 'group'));
- angular.copy(filteredgroup, this.GroupedSelectGroups.list);
- }
- }
- }, {
- key: 'addNewOptionRadio',
- value: function addNewOptionRadio() {
- var result = this.selectOptionManage.addNewOptionRadio(this.radioRowCollection, this.newOptionRadio.saisie);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: '\'' + this.newOptionRadio.saisie + '\' cannot be added.',
- showCloseButton: true
- });
- }
- this.newOptionRadio = { saisie: '' }; //reset input
- }
- }, {
- key: 'removeRadioRow',
- value: function removeRadioRow(index) {
- var result = this.selectOptionManage.removeOption(this.radioRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Delete was cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'upThisRadioRow',
- value: function upThisRadioRow(index) {
- var result = this.selectOptionManage.upthisOption(this.radioRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Operation cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'downThisRadioRow',
- value: function downThisRadioRow(index) {
- var result = this.selectOptionManage.downthisOption(this.radioRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Operation cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'addNewOptionBasicSelect',
- value: function addNewOptionBasicSelect() {
- var result = this.selectOptionManage.addNewOptionBasicSelect(this.basicSelectRowCollection, this.newOptionBasicSelect.saisie);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: '\'' + this.newOptionBasicSelect.saisie + '\' cannot be added.',
- showCloseButton: true
- });
- }
- this.newOptionBasicSelect = { saisie: '' }; //reset input
- }
- }, {
- key: 'removeRow',
- value: function removeRow(index) {
- var result = this.selectOptionManage.removeOption(this.basicSelectRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Delete was cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'upThisRow',
- value: function upThisRow(index) {
- var result = this.selectOptionManage.upthisOption(this.basicSelectRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Operation cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'downThisRow',
- value: function downThisRow(index) {
- var result = this.selectOptionManage.downthisOption(this.basicSelectRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Operation cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'showGroupListToChoose',
- value: function showGroupListToChoose() {
- this.groupSelectGroupClick.showList = !this.groupSelectGroupClick.showList;
- }
- }, {
- key: 'addNewGroupToGroupedSelect',
- value: function addNewGroupToGroupedSelect() {
- if (this.newGroupGroupedSelect.saisie !== '') {
- for (var i = this.GroupedSelectGroups.list.length - 1; i >= 0; i--) {
- if (this.GroupedSelectGroups.list[i] === this.newGroupGroupedSelect.saisie) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: 'Group already exists',
- body: 'No group added.',
- showCloseButton: true
- });
- }
- }
- this.GroupedSelectGroups.list.push(this.newGroupGroupedSelect.saisie);
- } else {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: 'Not a valid group to add',
- body: 'No group added.',
- showCloseButton: true
- });
- }
- this.newGroupGroupedSelect.saisie = '';
- }
- }, {
- key: 'addNewOptionGroupedSelect',
- value: function addNewOptionGroupedSelect() {
- var result = this.selectOptionManage.addNewOptionGroupedSelect(this.groupedSelectRowCollection, this.newOptionGroupedSelect.saisie, '');
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: '\'' + this.newOptionGroupedSelect.saisie + '\' cannot be added.',
- showCloseButton: true
- });
- }
- //bind nya : dont bind here $apply is not done fast enough
- //bindGroupedSelectToNya();
- //reset input
- this.newOptionGroupedSelect = { saisie: '' };
- }
- }, {
- key: 'removeGroupedSelectRow',
- value: function removeGroupedSelectRow(index) {
- var result = this.selectOptionManage.removeOption(this.groupedSelectRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Delete was cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'upThisGroupedSelectRow',
- value: function upThisGroupedSelectRow(index) {
- var result = this.selectOptionManage.upthisOption(this.groupedSelectRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Operation cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'downThisGroupedSelectRow',
- value: function downThisGroupedSelectRow(index) {
- var result = this.selectOptionManage.downthisOption(this.groupedSelectRowCollection, index);
- if (result.resultFlag === false) {
- this.toaster.pop({
- type: 'warning',
- timeout: 2000,
- title: result.details,
- body: 'Operation cancelled.',
- showCloseButton: true
- });
- }
- }
- }, {
- key: 'today',
- value: function today() {
- this.demodt.dt = new Date();
- }
- }, {
- key: 'clear',
- value: function clear() {
- this.demodt.dt = null;
- }
- }, {
- key: 'open',
- value: function open($event) {
- $event.preventDefault();
- $event.stopPropagation();
- this.demodt.opened = true;
- }
- }, {
- key: 'dateOptionsInit',
- value: function dateOptionsInit() {
- return {
- formatYear: 'yy',
- startingDay: 1,
- showWeeks: true,
- initDate: null
- };
- }
- }, {
- key: 'selectThisControl',
- value: function selectThisControl(controlName) {
- this.nyaSelect.selectedControl = 'none';
- this.resetTemporyConfig();
- for (var i = this.nyaSelect.controls.length - 1; i >= 0; i--) {
- if (this.nyaSelect.controls[i].id === controlName) this.nyaSelect.selectedControl = this.nyaSelect.controls[i].id;
- }
- if (this.nyaSelect.selectedControl === 'Date') this.initDatePicker();
- }
- }, {
- key: 'ok',
- value: function ok() {
- if (this.nyaSelect.selectedControl === 'BasicSelect') this.bindBasicSelectToNya();
- if (this.nyaSelect.selectedControl === 'GroupedSelect') this.bindGroupedSelectToNya();
- if (this.nyaSelect.selectedControl === 'Radio') this.bindRadioToNya();
- //save config to control
- this.$modalProxy.applyConfigToSelectedControl(this.nyaSelect);
- //return current model to parent controller :
- this.$modalInstance.close(this.nyaSelect);
- }
- }, {
- key: 'cancel',
- value: function cancel() {
- this.$modalInstance.dismiss('cancel');
- }
- }, {
- key: 'bindBasicSelectToNya',
- value: function bindBasicSelectToNya() {
- var resetNyASelectOptions = [];
- this.nyaSelect.temporyConfig.formlyOptions = resetNyASelectOptions;
- if (this.basicSelectRowCollection.rows.length > 0) {
- for (var i = 0; i <= this.basicSelectRowCollection.rows.length - 1; i++) {
- var newOption = {
- 'name': this.basicSelectRowCollection.rows[i].option,
- 'value': i,
- 'group': ''
- };
- this.nyaSelect.temporyConfig.formlyOptions.push(newOption);
- }
- }
- }
- }, {
- key: 'bindGroupedSelectToNya',
- value: function bindGroupedSelectToNya() {
- this.nyaSelect.temporyConfig.formlyOptions = [];
- for (var i = 0; i <= this.groupedSelectRowCollection.rows.length - 1; i++) {
- var newOption = {
- 'name': this.groupedSelectRowCollection.rows[i].option,
- 'value': i,
- 'group': this.groupedSelectRowCollection.rows[i].group
- };
- this.nyaSelect.temporyConfig.formlyOptions.push(newOption);
- }
- }
- }, {
- key: 'bindRadioToNya',
- value: function bindRadioToNya() {
- var resetNyASelectOptions = [];
- this.nyaSelect.temporyConfig.formlyOptions = resetNyASelectOptions;
- if (this.radioRowCollection.rows.length > 0) {
- for (var i = 0; i <= this.radioRowCollection.rows.length - 1; i++) {
- var newOption = {
- 'name': this.radioRowCollection.rows[i].option,
- 'value': i,
- 'group': ''
- };
- this.nyaSelect.temporyConfig.formlyOptions.push(newOption);
- }
- }
- }
- }, {
- key: 'initDatePicker',
- value: function initDatePicker() {
- this.nyaSelect.temporyConfig.datepickerPopup = this.demodt.formats[0];
- }
- }, {
- key: 'resetTemporyConfig',
- value: function resetTemporyConfig() {
- this.nyaSelectFiltered.temporyConfig = {
- formlyLabel: '',
- formlyRequired: false,
- formlyPlaceholder: '',
- formlyDesciption: '',
- formlyOptions: []
- };
- }
- }]);
-
- return editControlModalController;
- })();
-
- toInject = ['$modalInstance', 'nyaSelect', 'toaster', 'selectOptionManage', '$modalProxy'];
-
- editControlModalController.$inject = toInject;
-
- _export('default', editControlModalController);
-
- _export('EDIT_MODAL_CONTROLLER_NAME', EDIT_MODAL_CONTROLLER_NAME);
-
- _export('EDIT_MODAL_CONTROLLERAS_NAME', EDIT_MODAL_CONTROLLERAS_NAME);
- }
- };
-});
-$__System.register('1a', ['14'], function (_export) {
- /* global angular */
- 'use strict';
-
- var editModalController, EDIT_MODAL_CONTROLLER_NAME, EDIT_CONTROLE_MODAL_NAME;
- return {
- setters: [function (_) {
- editModalController = _['default'];
- EDIT_MODAL_CONTROLLER_NAME = _.EDIT_MODAL_CONTROLLER_NAME;
- }],
- execute: function () {
- EDIT_CONTROLE_MODAL_NAME = 'editControlModalModule';
-
- _export('default', angular.module(EDIT_CONTROLE_MODAL_NAME, []).controller(EDIT_MODAL_CONTROLLER_NAME, editModalController));
- }
- };
-});
-$__System.register('1b', [], function (_export) {
- /* global angular */
-
- 'use strict';
-
- var resetNyaSelect, getResetConfig, returnControlFromAddCtrlModalModel, validKeyUniqueness;
- return {
- setters: [],
- execute: function () {
- resetNyaSelect = function resetNyaSelect(nyaSelectObj) {
-
- var newNyaSelectObj = {
- controls: [{
- id: 'empty',
- name: 'no control',
- subtitle: 'no control',
- group: 'Blank',
- formlyType: 'blank',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {}
- }, {
- id: 'Header',
- name: 'Header',
- subtitle: 'no control',
- group: 'Decoration',
- formlyType: 'header',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {}
- }, {
- id: 'Subtitle',
- name: 'Subtitle',
- subtitle: 'no control',
- group: 'Decoration',
- formlyType: 'subTitle',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {}
- }, {
- id: 'TextInput',
- name: 'Text input',
- subtitle: 'Text input',
- group: 'input',
- formlyType: 'input',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Text input field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'Password',
- name: 'Password',
- subtitle: 'Password',
- group: 'input',
- formlyType: 'input',
- formlySubtype: 'password',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Password field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'Email',
- name: 'Email',
- subtitle: 'Email',
- group: 'input',
- formlyType: 'input',
- formlySubtype: 'email',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {
- emailShape: {
- expression: function expression(viewValue, modelValue) {
- var value = modelValue || viewValue;
- return (/^[a-z]+[a-z0-9._]+@[a-z]+\.[a-z.]{2,5}$/.test(value)
- );
- },
- message: '$viewValue + \' is not a valid email\''
- }
- },
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Email field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- //check if validation is really dued to require validation
- //and not another validation like emailShape validator
- if (scope.to.required) return returnMsg;
- }
- }
- }
- }, {
- id: 'Date',
- name: 'Date',
- subtitle: 'Date',
- group: 'input',
- formlyType: 'datepicker',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- datepickerPopup: 'dd-MMMM-yyyy',
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Date field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'Texarea',
- name: 'Textarea',
- subtitle: 'Textarea',
- group: 'Textarea',
- formlyType: 'textarea',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Textarea field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'RichTextEditor',
- name: 'RichTextEditor',
- subtitle: 'RichTextEditor',
- group: 'Textarea',
- formlyType: 'richEditor',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this RichTextEditor field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'Radio',
- name: 'Radio',
- subtitle: 'Radio',
- options: [],
- group: 'Radio',
- formlyType: 'radio',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Password field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'Checkbox',
- name: 'Checkbox',
- subtitle: 'Checkbox',
- group: 'Checkbox',
- formlyType: 'checkbox',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Checkbox field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'BasicSelect',
- name: 'Basic select',
- subtitle: 'Basic select',
- options: [],
- group: 'Select',
- formlyType: 'basicSelect',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Basic select field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }, {
- id: 'GroupedSelect',
- name: 'Grouped Select',
- subtitle: 'Grouped Select',
- options: [],
- group: 'Select',
- formlyType: 'groupedSelect',
- formlySubtype: '',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyOptions: [],
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {
- messages: {
- required: function required(viewValue, modelValue, scope) {
- //return a required validation message :
- //-> ' is required '
- //-> or if not exists or empty just 'this field is required'
- var defaultReturnMsg = 'this Grouped Select field is required';
- var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;
- return returnMsg;
- }
- }
- }
- }],
- selectedControl: 'none',
- temporyConfig: {
- selectedControl: 'none',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyPlaceholder: '',
- formlyOptions: [],
- //expressions/validation fields
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {}
- }
-
- };
-
- //reset
- angular.copy(newNyaSelectObj, nyaSelectObj);
- return true;
- };
-
- getResetConfig = function getResetConfig() {
- var emptyConfig = {};
- angular.extend(emptyConfig, {
- formlyLabel: '',
- formlyRequired: false,
- formlyPlaceholder: '',
- formlyDesciption: '',
- formlyOptions: []
- });
- return emptyConfig;
- };
-
- /**
- * data passed back to parent controller
- * after control being finsihed editing in modal
- */
-
- returnControlFromAddCtrlModalModel = function returnControlFromAddCtrlModalModel(CtrlModalModel) {
-
- var modelToReturn = {
- selectedControl: 'none',
- formlyType: 'none',
- formlySubtype: 'none',
- formlyLabel: '',
- formlyRequired: false,
- formlyDesciption: '',
- formlyPlaceholder: '',
- formlyOptions: [],
- //validation fields
- formlyExpressionProperties: {},
- formlyValidators: {},
- formlyValidation: {}
- };
-
- for (var i = CtrlModalModel.controls.length - 1; i >= 0; i--) {
- if (CtrlModalModel.selectedControl === CtrlModalModel.controls[i].id) {
- modelToReturn.selectedControl = CtrlModalModel.selectedControl;
- modelToReturn.formlyType = CtrlModalModel.controls[i].formlyType;
- modelToReturn.formlySubtype = CtrlModalModel.controls[i].formlySubtype;
- modelToReturn.formlyLabel = CtrlModalModel.controls[i].formlyLabel;
- modelToReturn.formlyRequired = CtrlModalModel.controls[i].formlyRequired;
- modelToReturn.formlyDesciption = CtrlModalModel.controls[i].formlyDesciption;
- modelToReturn.formlyPlaceholder = CtrlModalModel.controls[i].formlyPlaceholder;
- modelToReturn.formlyOptions = CtrlModalModel.controls[i].formlyOptions;
-
- modelToReturn.formlyExpressionProperties = angular.copy(CtrlModalModel.controls[i].formlyExpressionProperties);
- modelToReturn.formlyValidators = angular.copy(CtrlModalModel.controls[i].formlyValidators);
- modelToReturn.formlyValidation = angular.copy(CtrlModalModel.controls[i].formlyValidation);
-
- //particular properties
- //datetpicker format
- if (CtrlModalModel.controls[i].formlyType === 'datepicker') {
- modelToReturn.datepickerPopup = CtrlModalModel.controls[i].datepickerPopup;
- }
- }
- }
- return modelToReturn;
- };
-
- /**
- * validKeyUniqueness
- * to be sure the "keys" are unique (in same formly field model)
- */
-
- validKeyUniqueness = function validKeyUniqueness(thisKey, configurationObj) {
- var isUnique = true;
- //each lines
- for (var i = configurationObj.lines.length - 1; i >= 0; i--) {
- //each columns
- for (var j = configurationObj.lines[i].columns.length - 1; j >= 0; j--) {
- if (configurationObj.lines[i].columns[j].control.key === thisKey) {
- isUnique = false;
- }
- }
- }
- return isUnique;
- };
-
- _export('resetNyaSelect', resetNyaSelect);
-
- _export('returnControlFromAddCtrlModalModel', returnControlFromAddCtrlModalModel);
-
- _export('validKeyUniqueness', validKeyUniqueness);
-
- _export('getResetConfig', getResetConfig);
- }
- };
-});
-$__System.register('1c', ['15', '16', '1b'], function (_export) {
- var _createClass, _classCallCheck, resetNyaSelect, returnControlFromAddCtrlModalModel, validKeyUniqueness, getResetConfig, CONTROLLER_MODAL_PROXY_SERVICE, $modalProxy;
-
- return {
- setters: [function (_) {
- _createClass = _['default'];
- }, function (_2) {
- _classCallCheck = _2['default'];
- }, function (_b) {
- resetNyaSelect = _b.resetNyaSelect;
- returnControlFromAddCtrlModalModel = _b.returnControlFromAddCtrlModalModel;
- validKeyUniqueness = _b.validKeyUniqueness;
- getResetConfig = _b.getResetConfig;
- }],
- execute: function () {
- 'use strict';
-
- CONTROLLER_MODAL_PROXY_SERVICE = '$modalProxy';
-
- $modalProxy = (function () {
- function $modalProxy(easyFormSteWayConfig) {
- _classCallCheck(this, $modalProxy);
-
- this.easyFormSteWayConfig = easyFormSteWayConfig;
- }
-
- _createClass($modalProxy, [{
- key: 'initNyaSelect',
- value: function initNyaSelect(nyaSelectObj) {
- return resetNyaSelect(nyaSelectObj);
- }
- }, {
- key: 'getControlsDefinition',
- value: function getControlsDefinition() {
- var controls = {};
- resetNyaSelect(controls);
- return controls;
- }
- }, {
- key: 'getNyASelectFromSelectedLineColumn',
- value: function getNyASelectFromSelectedLineColumn(nyaSelectObj, configurationObj, indexLine, numcolumn) {
- resetNyaSelect(nyaSelectObj);
- /**
- * data send to modal controller
- */
- if (typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions != 'undefined') {
-
- nyaSelectObj.temporyConfig.selectedControl = typeof configurationObj.lines[indexLine].columns[numcolumn].control.selectedControl != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.selectedControl : 'none';
- nyaSelectObj.temporyConfig.formlyLabel = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label : '';
- nyaSelectObj.temporyConfig.formlyRequired = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required : '';
- nyaSelectObj.temporyConfig.formlyDesciption = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description : '';
- nyaSelectObj.temporyConfig.formlyPlaceholder = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder : '';
- nyaSelectObj.temporyConfig.formlyOptions = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options : '';
-
- nyaSelectObj.temporyConfig.formlyExpressionProperties = typeof configurationObj.lines[indexLine].columns[numcolumn].control.formlyExpressionProperties != 'undefined' ? angular.copy(configurationObj.lines[indexLine].columns[numcolumn].control.formlyExpressionProperties) : {};
- nyaSelectObj.temporyConfig.formlyValidators = typeof configurationObj.lines[indexLine].columns[numcolumn].control.formlyValidators != 'undefined' ? angular.copy(configurationObj.lines[indexLine].columns[numcolumn].control.formlyValidators) : {};
- nyaSelectObj.temporyConfig.formlyValidation = typeof configurationObj.lines[indexLine].columns[numcolumn].control.formlyValidation != 'undefined' ? angular.copy(configurationObj.lines[indexLine].columns[numcolumn].control.formlyValidation) : {};
-
- // particular case : datepicker
- if (nyaSelectObj.temporyConfig.selectedControl === 'Date') {
- nyaSelectObj.temporyConfig.datepickerPopup = typeof configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup != 'undefined' ? configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup : '';
- }
- }
- return nyaSelectObj;
- }
- }, {
- key: 'bindConfigurationModelFromModalReturn',
- value: function bindConfigurationModelFromModalReturn(indexLine, numcolumn, modalAddCtrlModel, configurationObj) {
-
- var extractedProps = returnControlFromAddCtrlModalModel(modalAddCtrlModel);
- configurationObj.lines[indexLine].columns[numcolumn].control.selectedControl = extractedProps.selectedControl;
- configurationObj.lines[indexLine].columns[numcolumn].control.type = extractedProps.formlyType;
- configurationObj.lines[indexLine].columns[numcolumn].control.subtype = extractedProps.formlySubtype;
- //reset templateOptions
- configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions = {
- label: '',
- required: false,
- description: '',
- placeholder: '',
- options: []
- };
- //then bind templateOptions
- configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.label = extractedProps.formlyLabel;
- configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.required = extractedProps.formlyRequired;
- configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.description = extractedProps.formlyDesciption;
- configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.placeholder = extractedProps.formlyPlaceholder;
- configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.options = extractedProps.formlyOptions;
- configurationObj.lines[indexLine].columns[numcolumn].control.formlyExpressionProperties = angular.copy(extractedProps.formlyExpressionProperties);
- configurationObj.lines[indexLine].columns[numcolumn].control.formlyValidators = angular.copy(extractedProps.formlyValidators);
- configurationObj.lines[indexLine].columns[numcolumn].control.formlyValidation = angular.copy(extractedProps.formlyValidation);
-
- //////////////////////////////////////////
- // add additionnal particular properties
- //////////////////////////////////////////
- //-> datepicker : datepickerPopup
- if (configurationObj.lines[indexLine].columns[numcolumn].control.type === 'datepicker') {
- configurationObj.lines[indexLine].columns[numcolumn].control.templateOptions.datepickerPopup = extractedProps.datepickerPopup;
- }
- /**
- * unique key (set only first time) in this model is formly control type + Date.now();
- */
- var newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();
-
- if (validKeyUniqueness(newKey, configurationObj) === true) {
- configurationObj.lines[indexLine].columns[numcolumn].control.key = newKey;
- } else {
- /**
- * 2nd attempt
- */
- newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();
-
- if (validKeyUniqueness(newKey, configurationObj) === true) {
- configurationObj.lines[indexLine].columns[numcolumn].control.key = newKey;
- } else {
- /**
- * 3rd attempt
- */
- newKey = configurationObj.lines[indexLine].columns[numcolumn].control.type + '-' + Date.now();
- }
- }
- configurationObj.lines[indexLine].columns[numcolumn].control.edited = true;
- }
- }, {
- key: 'applyConfigToSelectedControl',
- value: function applyConfigToSelectedControl(nyaSelectObj) {
- /**
- * used in modal (edit control)
- */
- for (var i = nyaSelectObj.controls.length - 1; i >= 0; i--) {
- if (nyaSelectObj.controls[i].id === nyaSelectObj.selectedControl) {
-
- nyaSelectObj.controls[i].formlyLabel = nyaSelectObj.temporyConfig.formlyLabel;
- nyaSelectObj.controls[i].formlyRequired = nyaSelectObj.temporyConfig.formlyRequired;
- nyaSelectObj.controls[i].formlyDesciption = nyaSelectObj.temporyConfig.formlyDesciption;
- nyaSelectObj.controls[i].formlyPlaceholder = nyaSelectObj.temporyConfig.formlyPlaceholder;
- nyaSelectObj.controls[i].formlyOptions = nyaSelectObj.temporyConfig.formlyOptions;
-
- if (nyaSelectObj.controls[i].id === 'Date') {
- nyaSelectObj.controls[i].datepickerPopup = nyaSelectObj.temporyConfig.datepickerPopup;
- }
- }
- }
- }
- }, {
- key: 'resetTemporyConfig',
- value: function resetTemporyConfig() {
- return getResetConfig();
- }
-
- /**
- * loading forms will not be able to retrieve formlyExpressionProperties
- * -> here does the job
- */
- }, {
- key: 'refreshControlFormlyExpressionProperties',
- value: function refreshControlFormlyExpressionProperties(configurationModel) {
- var _this = this;
-
- if (angular.isObject(configurationModel)) {
- //iterates lines
- angular.forEach(configurationModel.lines, function (line, indexLine) {
- angular.forEach(line.columns, function (column, controlIndex) {
- var _controlsDefinition = _this.getControlsDefinition();
- angular.forEach(_controlsDefinition.controls, function (aControl, aControlIndex) {
- if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {
- //----> update control formlyExpressionProperties property
- column.control.formlyExpressionProperties = aControl.formlyExpressionProperties;
- }
- });
- });
- });
- }
- }
-
- /**
- * loading forms will not be able to retrieve formlyValidators
- * -> here does the job
- */
- }, {
- key: 'refreshControlFormlyValidators',
- value: function refreshControlFormlyValidators(configurationModel) {
- var _this2 = this;
-
- if (angular.isObject(configurationModel)) {
- //iterates lines
- angular.forEach(configurationModel.lines, function (line, indexLine) {
- angular.forEach(line.columns, function (column, controlIndex) {
- var _controlsDefinition = _this2.getControlsDefinition();
- angular.forEach(_controlsDefinition.controls, function (aControl, aControlIndex) {
- if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {
- //----> update control formlyValidators property
- column.control.formlyValidators = aControl.formlyValidators;
- }
- });
- });
- });
- }
- }
-
- /**
- * loading forms will not be able to retrieve formlyValidation
- * -> here does the job
- */
- }, {
- key: 'refreshControlFormlyValidation',
- value: function refreshControlFormlyValidation(configurationModel) {
- var _this3 = this;
-
- if (angular.isObject(configurationModel)) {
- //iterates lines
- angular.forEach(configurationModel.lines, function (line, indexLine) {
- angular.forEach(line.columns, function (column, controlIndex) {
- var _controlsDefinition = _this3.getControlsDefinition();
- angular.forEach(_controlsDefinition.controls, function (aControl, aControlIndex) {
- if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {
- //----> update control formlyValidation property
- column.control.formlyValidation = aControl.formlyValidation;
- }
- });
- });
- });
- }
- }
- }, {
- key: 'filterDisabledControl',
- value: function filterDisabledControl(nyaSelectObj) {
- var listAllEnabledControl = this.easyFormSteWayConfig.getListEnabledControl();
- var filteredNyaList = [];
- angular.forEach(listAllEnabledControl, function (enabledControl) {
- angular.forEach(nyaSelectObj.controls, function (nyaControl) {
- if (nyaControl.id === enabledControl.name && enabledControl.enabled === true) {
- filteredNyaList = filteredNyaList.concat(nyaControl);
- }
- });
- });
- return filteredNyaList;
- }
- }, {
- key: 'getFilteredNyaSelectObject',
- value: function getFilteredNyaSelectObject() {
- var newNyaSelectObj = {};
- resetNyaSelect(newNyaSelectObj);
- return angular.copy(this.filterDisabledControl(angular.copy(newNyaSelectObj)));
- //return angular.copy(angular.copy(newNyaSelectObj));
- }
- }]);
-
- return $modalProxy;
- })();
-
- $modalProxy.$inject = ['easyFormSteWayConfig'];
-
- _export('default', $modalProxy);
-
- _export('CONTROLLER_MODAL_PROXY_SERVICE', CONTROLLER_MODAL_PROXY_SERVICE);
- }
- };
-});
-$__System.register('1d', ['1c'], function (_export) {
- /* global angular */
- 'use strict';
-
- var $modalProxy, CONTROLLER_MODAL_PROXY_SERVICE, MODAL_PROXY_MODULE_NAME;
- return {
- setters: [function (_c) {
- $modalProxy = _c['default'];
- CONTROLLER_MODAL_PROXY_SERVICE = _c.CONTROLLER_MODAL_PROXY_SERVICE;
- }],
- execute: function () {
- MODAL_PROXY_MODULE_NAME = 'modalProxyModule';
-
- _export('default', angular.module(MODAL_PROXY_MODULE_NAME, []).service(CONTROLLER_MODAL_PROXY_SERVICE, $modalProxy));
- }
- };
-});
-$__System.register('1e', [], function (_export) {
- /* global angular */
-
- 'use strict';
-
- var configurationModelInit, configurationModelResult, isTemplateOptionDefined, extractTemplateOptionLabel, extractTemplateOptionDatepickerPopup, extractFormlyExpressionProperties, extractFormlyValidators, extractFormlyValidation, extractTemplateOptionRequired, extractTemplateOptionOptions, extractTemplateOptionType, extractTemplateOptionPlaceholder, extractTemplateOptionDescription, addDatepickerPopupProperty, addOneColumnHeader, addOneColumnControl, addTwoColumnControl, addThreeColumnControl, resetDataModel, resetFormlyModel;
- return {
- setters: [],
- execute: function () {
- configurationModelInit = {
- activeLine: 1,
- listConfigStep: ['init', 'first', 'second', 'third'],
- stepIndicators: [true, false, false, false],
- configStepCounter: 0,
- submitButtonText: 'submit',
- cancelButtonText: 'cancel',
- lines: [{
- line: 1,
- activeColumn: 1,
- columns: [{
- numColumn: 1,
- exist: true,
- control: {
- type: 'none',
- key: 'none'
- }
- }]
- }]
- };
- // templateOptions: {
- // label: 'none',
- // placeholder: 'none',
- // required: false,
- // description: 'Descriptive text'
- // }
- configurationModelResult = {
- activeLine: 1,
- listConfigStep: ['init', 'first', 'second', 'third'],
- stepIndicators: [true, false, false, false],
- configStepCounter: 0,
- submitButtonText: 'submit',
- cancelButtonText: 'cancel',
- lines: []
- };
-
- isTemplateOptionDefined = function isTemplateOptionDefined(obj) {
- return typeof obj.templateOptions !== 'undefined' ? true : false;
- };
-
- extractTemplateOptionLabel = function extractTemplateOptionLabel(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.label !== 'undefined' ? obj.templateOptions.label : '' : '';
- };
-
- extractTemplateOptionDatepickerPopup = function extractTemplateOptionDatepickerPopup(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.datepickerPopup !== 'undefined' ? obj.templateOptions.datepickerPopup : '' : '';
- };
-
- extractFormlyExpressionProperties = function extractFormlyExpressionProperties(obj) {
- return typeof obj.formlyExpressionProperties !== 'undefined' ? angular.copy(obj.formlyExpressionProperties) : {};
- };
-
- extractFormlyValidators = function extractFormlyValidators(obj) {
- return typeof obj.formlyValidators !== 'undefined' ? angular.copy(obj.formlyValidators) : {};
- };
-
- extractFormlyValidation = function extractFormlyValidation(obj) {
- return typeof obj.formlyValidation !== 'undefined' ? angular.copy(obj.formlyValidation) : {};
- };
-
- extractTemplateOptionRequired = function extractTemplateOptionRequired(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.required !== 'undefined' ? obj.templateOptions.required : '' : '';
- };
-
- extractTemplateOptionOptions = function extractTemplateOptionOptions(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.options !== 'undefined' ? obj.templateOptions.options : '' : '';
- };
-
- extractTemplateOptionType = function extractTemplateOptionType(obj) {
- return typeof obj.subtype !== 'undefined' ? obj.subtype : '';
- };
-
- extractTemplateOptionPlaceholder = function extractTemplateOptionPlaceholder(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.placeholder !== 'undefined' ? obj.templateOptions.placeholder : '' : '';
- };
-
- extractTemplateOptionDescription = function extractTemplateOptionDescription(obj) {
- return typeof obj.templateOptions !== 'undefined' ? typeof obj.templateOptions.description !== 'undefined' ? obj.templateOptions.description : '' : '';
- };
-
- addDatepickerPopupProperty = function addDatepickerPopupProperty(fieldToPush, configurationModel, lineIndex) {
- fieldToPush.templateOptions.datepickerPopup = extractTemplateOptionDatepickerPopup(configurationModel.lines[lineIndex].columns[0].control);
- };
-
- addOneColumnHeader = function addOneColumnHeader(formlyModel, configurationModel, lineIndex) {
- var headerTemplateCol0 = '
' + extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[0].control) + ' ';
- formlyModel.push({
- template: typeof configurationModel.lines[lineIndex].columns[0].control.type !== 'undefined' ? configurationModel.lines[lineIndex].columns[0].control.type === 'header' ? headerTemplateCol0 : '
' : '
'
- });
- };
-
- addOneColumnControl = function addOneColumnControl(formlyModel, configurationModel, lineIndex) {
- var fieldToPush = {
- className: 'col-xs-12',
- type: typeof configurationModel.lines[lineIndex].columns[0].control.type !== 'undefined' ? configurationModel.lines[lineIndex].columns[0].control.type === 'none' ? 'blank' : configurationModel.lines[lineIndex].columns[0].control.type : 'blank',
- key: typeof configurationModel.lines[lineIndex].columns[0].control.key !== 'undefined' ? configurationModel.lines[lineIndex].columns[0].control.key : 'blank' + Date.now(),
- templateOptions: {
- type: extractTemplateOptionType(configurationModel.lines[lineIndex].columns[0].control),
- label: extractTemplateOptionLabel(configurationModel.lines[lineIndex].columns[0].control),
- required: extractTemplateOptionRequired(configurationModel.lines[lineIndex].columns[0].control),
- placeholder: extractTemplateOptionPlaceholder(configurationModel.lines[lineIndex].columns[0].control),
- description: extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[0].control),
- options: extractTemplateOptionOptions(configurationModel.lines[lineIndex].columns[0].control)
- },
- expressionProperties: extractFormlyExpressionProperties(configurationModel.lines[lineIndex].columns[0].control),
- validators: extractFormlyValidators(configurationModel.lines[lineIndex].columns[0].control),
- validation: extractFormlyValidation(configurationModel.lines[lineIndex].columns[0].control)
- };
- //////////////////////////////////////////////
- //datepicker additionnal particular property
- //////////////////////////////////////////////
- if (configurationModel.lines[lineIndex].columns[0].control.type === 'datepicker') {
- addDatepickerPopupProperty(fieldToPush, configurationModel, lineIndex);
- }
-
- formlyModel.push(fieldToPush);
- };
-
- addTwoColumnControl = function addTwoColumnControl(formlyModel, configurationModel, lineIndex) {
-
- //text header is stored in "description" in templateOtion model
- var headerTemplateCol0 = {
- className: 'col-xs-6',
- template: '
' + extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[0].control) + ' '
- };
-
- var headerTemplateCol1 = {
- className: 'col-xs-6',
- template: '
' + extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[1].control) + ' '
- };
-
- var controlCol0 = {
- className: 'col-xs-6',
- type: typeof configurationModel.lines[lineIndex].columns[0].control.type !== 'undefined' ? configurationModel.lines[lineIndex].columns[0].control.type === 'none' ? 'blank' : configurationModel.lines[lineIndex].columns[0].control.type : 'blank',
- key: typeof configurationModel.lines[lineIndex].columns[0].control.key !== 'undefined' ? configurationModel.lines[lineIndex].columns[0].control.key : 'blank' + Date.now(),
- templateOptions: {
- type: extractTemplateOptionType(configurationModel.lines[lineIndex].columns[0].control),
- label: extractTemplateOptionLabel(configurationModel.lines[lineIndex].columns[0].control),
- required: extractTemplateOptionRequired(configurationModel.lines[lineIndex].columns[0].control),
- placeholder: extractTemplateOptionPlaceholder(configurationModel.lines[lineIndex].columns[0].control),
- description: extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[0].control),
- options: extractTemplateOptionOptions(configurationModel.lines[lineIndex].columns[0].control)
- },
- expressionProperties: extractFormlyExpressionProperties(configurationModel.lines[lineIndex].columns[0].control),
- validators: extractFormlyValidators(configurationModel.lines[lineIndex].columns[0].control),
- validation: extractFormlyValidation(configurationModel.lines[lineIndex].columns[0].control)
- };
- //////////////////////////////////////////////
- //datepicker additionnal particular property
- //////////////////////////////////////////////
- if (configurationModel.lines[lineIndex].columns[0].control.type === 'datepicker') {
- addDatepickerPopupProperty(controlCol0, configurationModel, lineIndex);
- }
-
- var controlCol1 = {
- className: 'col-xs-6',
- type: typeof configurationModel.lines[lineIndex].columns[1].control.type !== 'undefined' ? configurationModel.lines[lineIndex].columns[1].control.type === 'none' ? 'blank' : configurationModel.lines[lineIndex].columns[1].control.type : 'blank',
- key: typeof configurationModel.lines[lineIndex].columns[1].control.key !== 'undefined' ? configurationModel.lines[lineIndex].columns[1].control.key : 'blank' + Date.now(),
- templateOptions: {
- type: extractTemplateOptionType(configurationModel.lines[lineIndex].columns[1].control),
- label: extractTemplateOptionLabel(configurationModel.lines[lineIndex].columns[1].control),
- required: extractTemplateOptionRequired(configurationModel.lines[lineIndex].columns[1].control),
- placeholder: extractTemplateOptionPlaceholder(configurationModel.lines[lineIndex].columns[1].control),
- description: extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[1].control),
- options: extractTemplateOptionOptions(configurationModel.lines[lineIndex].columns[1].control)
- },
- expressionProperties: extractFormlyExpressionProperties(configurationModel.lines[lineIndex].columns[1].control),
- validators: extractFormlyValidators(configurationModel.lines[lineIndex].columns[1].control),
- validation: extractFormlyValidation(configurationModel.lines[lineIndex].columns[1].control)
- };
-
- //////////////////////////////////////////////
- //datepicker additionnal particular property
- //////////////////////////////////////////////
- if (configurationModel.lines[lineIndex].columns[1].control.type === 'datepicker') {
- addDatepickerPopupProperty(controlCol1, configurationModel, lineIndex);
- }
-
- var FieldGroup = [];
-
- if (configurationModel.lines[lineIndex].columns[0].control.type === 'header') {
- FieldGroup.push(headerTemplateCol0);
- } else {
- FieldGroup.push(controlCol0);
- }
-
- if (configurationModel.lines[lineIndex].columns[1].control.type === 'header') {
- FieldGroup.push(headerTemplateCol1);
- } else {
- FieldGroup.push(controlCol1);
- }
-
- formlyModel.push({
- className: 'row',
- fieldGroup: FieldGroup
- });
- };
-
- addThreeColumnControl = function addThreeColumnControl(formlyModel, configurationModel, lineIndex) {
- //text header is stored in "description" in templateOtion model
- var headerTemplateCol0 = {
- className: 'col-xs-4',
- template: '
' + extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[0].control) + ' '
- };
-
- var headerTemplateCol1 = {
- className: 'col-xs-4',
- template: '
' + extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[1].control) + ' '
- };
-
- var headerTemplateCol2 = {
- className: 'col-xs-4',
- template: '
' + extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[2].control) + ' '
- };
-
- var controlCol0 = {
- className: 'col-xs-4',
- type: typeof configurationModel.lines[lineIndex].columns[0].control.type !== 'undefined' ? configurationModel.lines[lineIndex].columns[0].control.type === 'none' ? 'blank' : configurationModel.lines[lineIndex].columns[0].control.type : 'blank',
- key: typeof configurationModel.lines[lineIndex].columns[0].control.key !== 'undefined' ? configurationModel.lines[lineIndex].columns[0].control.key : 'blank' + Date.now(),
- templateOptions: {
- type: extractTemplateOptionType(configurationModel.lines[lineIndex].columns[0].control),
- label: extractTemplateOptionLabel(configurationModel.lines[lineIndex].columns[0].control),
- required: extractTemplateOptionRequired(configurationModel.lines[lineIndex].columns[0].control),
- placeholder: extractTemplateOptionPlaceholder(configurationModel.lines[lineIndex].columns[0].control),
- description: extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[0].control),
- options: extractTemplateOptionOptions(configurationModel.lines[lineIndex].columns[0].control)
- },
- expressionProperties: extractFormlyExpressionProperties(configurationModel.lines[lineIndex].columns[0].control),
- validators: extractFormlyValidators(configurationModel.lines[lineIndex].columns[0].control),
- validation: extractFormlyValidation(configurationModel.lines[lineIndex].columns[0].control)
- };
- //////////////////////////////////////////////
- //datepicker additionnal particular property
- //////////////////////////////////////////////
- if (configurationModel.lines[lineIndex].columns[0].control.type === 'datepicker') {
- addDatepickerPopupProperty(controlCol0, configurationModel, lineIndex);
- }
-
- var controlCol1 = {
- className: 'col-xs-4',
- type: typeof configurationModel.lines[lineIndex].columns[1].control.type !== 'undefined' ? configurationModel.lines[lineIndex].columns[1].control.type === 'none' ? 'blank' : configurationModel.lines[lineIndex].columns[1].control.type : 'blank',
- key: typeof configurationModel.lines[lineIndex].columns[1].control.key !== 'undefined' ? configurationModel.lines[lineIndex].columns[1].control.key : 'blank' + Date.now(),
- templateOptions: {
- type: extractTemplateOptionType(configurationModel.lines[lineIndex].columns[1].control),
- label: extractTemplateOptionLabel(configurationModel.lines[lineIndex].columns[1].control),
- required: extractTemplateOptionRequired(configurationModel.lines[lineIndex].columns[1].control),
- placeholder: extractTemplateOptionPlaceholder(configurationModel.lines[lineIndex].columns[1].control),
- description: extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[1].control),
- options: extractTemplateOptionOptions(configurationModel.lines[lineIndex].columns[1].control)
- },
- expressionProperties: extractFormlyExpressionProperties(configurationModel.lines[lineIndex].columns[1].control),
- validators: extractFormlyValidators(configurationModel.lines[lineIndex].columns[1].control),
- validation: extractFormlyValidation(configurationModel.lines[lineIndex].columns[1].control)
- };
- //////////////////////////////////////////////
- //datepicker additionnal particular property
- //////////////////////////////////////////////
- if (configurationModel.lines[lineIndex].columns[1].control.type === 'datepicker') {
- addDatepickerPopupProperty(controlCol1, configurationModel, lineIndex);
- }
- var controlCol2 = {
- className: 'col-xs-4',
- type: typeof configurationModel.lines[lineIndex].columns[2].control.type !== 'undefined' ? configurationModel.lines[lineIndex].columns[2].control.type === 'none' ? 'blank' : configurationModel.lines[lineIndex].columns[2].control.type : 'blank',
- key: typeof configurationModel.lines[lineIndex].columns[2].control.key !== 'undefined' ? configurationModel.lines[lineIndex].columns[2].control.key : 'blank' + Date.now(),
- templateOptions: {
- type: extractTemplateOptionType(configurationModel.lines[lineIndex].columns[2].control),
- label: extractTemplateOptionLabel(configurationModel.lines[lineIndex].columns[2].control),
- required: extractTemplateOptionRequired(configurationModel.lines[lineIndex].columns[2].control),
- placeholder: extractTemplateOptionPlaceholder(configurationModel.lines[lineIndex].columns[2].control),
- description: extractTemplateOptionDescription(configurationModel.lines[lineIndex].columns[2].control),
- options: extractTemplateOptionOptions(configurationModel.lines[lineIndex].columns[2].control)
- },
- expressionProperties: extractFormlyExpressionProperties(configurationModel.lines[lineIndex].columns[2].control),
- validators: extractFormlyValidators(configurationModel.lines[lineIndex].columns[2].control),
- validation: extractFormlyValidation(configurationModel.lines[lineIndex].columns[2].control)
- };
- //////////////////////////////////////////////
- //datepicker additionnal particular property
- //////////////////////////////////////////////
- if (configurationModel.lines[lineIndex].columns[2].control.type === 'datepicker') {
- addDatepickerPopupProperty(controlCol2, configurationModel, lineIndex);
- }
-
- var FieldGroup = [];
-
- if (configurationModel.lines[lineIndex].columns[0].control.type === 'header') {
- FieldGroup.push(headerTemplateCol0);
- } else {
- FieldGroup.push(controlCol0);
- }
-
- if (configurationModel.lines[lineIndex].columns[1].control.type === 'header') {
- FieldGroup.push(headerTemplateCol1);
- } else {
- FieldGroup.push(controlCol1);
- }
-
- if (configurationModel.lines[lineIndex].columns[2].control.type === 'header') {
- FieldGroup.push(headerTemplateCol2);
- } else {
- FieldGroup.push(controlCol2);
- }
-
- formlyModel.push({
- className: 'row',
- fieldGroup: FieldGroup
- });
- };
-
- resetDataModel = function resetDataModel(obj) {
- var emptyDataModel = {};
- angular.copy(emptyDataModel, obj);
- return true;
- };
-
- resetFormlyModel = function resetFormlyModel(formlyModel) {
- var resetformly = [];
- angular.copy(resetformly, formlyModel);
- };
-
- _export('configurationModelInit', configurationModelInit);
-
- _export('configurationModelResult', configurationModelResult);
-
- _export('resetDataModel', resetDataModel);
-
- _export('resetFormlyModel', resetFormlyModel);
-
- _export('isTemplateOptionDefined', isTemplateOptionDefined);
-
- _export('extractTemplateOptionLabel', extractTemplateOptionLabel);
-
- _export('extractTemplateOptionDatepickerPopup', extractTemplateOptionDatepickerPopup);
-
- _export('extractFormlyExpressionProperties', extractFormlyExpressionProperties);
-
- _export('extractFormlyValidators', extractFormlyValidators);
-
- _export('extractFormlyValidation', extractFormlyValidation);
-
- _export('extractTemplateOptionRequired', extractTemplateOptionRequired);
-
- _export('extractTemplateOptionOptions', extractTemplateOptionOptions);
-
- _export('extractTemplateOptionType', extractTemplateOptionType);
-
- _export('extractTemplateOptionPlaceholder', extractTemplateOptionPlaceholder);
-
- _export('extractTemplateOptionDescription', extractTemplateOptionDescription);
-
- _export('addDatepickerPopupProperty', addDatepickerPopupProperty);
-
- _export('addOneColumnHeader', addOneColumnHeader);
-
- _export('addOneColumnControl', addOneColumnControl);
-
- _export('addTwoColumnControl', addTwoColumnControl);
-
- _export('addThreeColumnControl', addThreeColumnControl);
- }
- };
-});
-$__System.register('1f', ['15', '16', '1e'], function (_export) {
- var _createClass, _classCallCheck, configurationModelInit, configurationModelResult, resetDataModel, resetFormlyModel, isTemplateOptionDefined, extractTemplateOptionLabel, extractTemplateOptionDatepickerPopup, extractFormlyExpressionProperties, extractFormlyValidators, extractFormlyValidation, extractTemplateOptionRequired, extractTemplateOptionOptions, extractTemplateOptionType, extractTemplateOptionPlaceholder, extractTemplateOptionDescription, addDatepickerPopupProperty, addOneColumnHeader, addOneColumnControl, addTwoColumnControl, addThreeColumnControl, FORMLY_PROXY_SERVICE, $formlyProxy;
-
- return {
- setters: [function (_) {
- _createClass = _['default'];
- }, function (_2) {
- _classCallCheck = _2['default'];
- }, function (_e) {
- configurationModelInit = _e.configurationModelInit;
- configurationModelResult = _e.configurationModelResult;
- resetDataModel = _e.resetDataModel;
- resetFormlyModel = _e.resetFormlyModel;
- isTemplateOptionDefined = _e.isTemplateOptionDefined;
- extractTemplateOptionLabel = _e.extractTemplateOptionLabel;
- extractTemplateOptionDatepickerPopup = _e.extractTemplateOptionDatepickerPopup;
- extractFormlyExpressionProperties = _e.extractFormlyExpressionProperties;
- extractFormlyValidators = _e.extractFormlyValidators;
- extractFormlyValidation = _e.extractFormlyValidation;
- extractTemplateOptionRequired = _e.extractTemplateOptionRequired;
- extractTemplateOptionOptions = _e.extractTemplateOptionOptions;
- extractTemplateOptionType = _e.extractTemplateOptionType;
- extractTemplateOptionPlaceholder = _e.extractTemplateOptionPlaceholder;
- extractTemplateOptionDescription = _e.extractTemplateOptionDescription;
- addDatepickerPopupProperty = _e.addDatepickerPopupProperty;
- addOneColumnHeader = _e.addOneColumnHeader;
- addOneColumnControl = _e.addOneColumnControl;
- addTwoColumnControl = _e.addTwoColumnControl;
- addThreeColumnControl = _e.addThreeColumnControl;
- }],
- execute: function () {
- /* global angular */
- 'use strict';
-
- FORMLY_PROXY_SERVICE = '$formlyProxy';
-
- $formlyProxy = (function () {
- function $formlyProxy() {
- _classCallCheck(this, $formlyProxy);
-
- this.init();
- }
-
- _createClass($formlyProxy, [{
- key: 'init',
- value: function init() {}
- }, {
- key: 'initConfigurationEditFromScratch',
- value: function initConfigurationEditFromScratch(configurationModel) {
- angular.copy(configurationModelInit, configurationModel);
- }
- }, {
- key: 'bindConfigurationLines',
- value: function bindConfigurationLines(configurationModel, lines) {
- if (angular.isArray(lines)) {
- var configModelResult = configurationModelResult;
- configModelResult.lines = [].concat(lines);
- angular.copy(configModelResult, configurationModel);
- return this.getMessageObject('configuration model is bound', 'lines are bound to configuration model.');
- } else {
- return this.getErrorObject('lines is not an array', 'Checks lines type, it is not an array.');
- }
- }
- }, {
- key: 'applyConfigurationToformlyModel',
- value: function applyConfigurationToformlyModel(configurationModel, formlyModel, formlyDataModel) {
- resetFormlyModel(formlyModel);
- resetDataModel(formlyDataModel);
- /**
- * manage header here line0
- */
- var lineNumber = configurationModel.lines.length;
- for (var i = 0; i < lineNumber; i++) {
- //1 column line control
- if (configurationModel.lines[i].columns.length === 1) {
- //test if template control = header
- if (configurationModel.lines[i].columns[0].control.type === 'header') {
- addOneColumnHeader(formlyModel, configurationModel, i);
- } else {
- addOneColumnControl(formlyModel, configurationModel, i);
- }
- }
- if (configurationModel.lines[i].columns.length === 2) {
- addTwoColumnControl(formlyModel, configurationModel, i);
- }
- if (configurationModel.lines[i].columns.length === 3) {
- addThreeColumnControl(formlyModel, configurationModel, i);
- }
- }
- }
- }, {
- key: 'getMessageObject',
- value: function getMessageObject(messageTitle, messageBody) {
- var messageObj = {
- noError: true,
- title: messageTitle,
- Message: messageBody
- };
- return messageObj;
- }
- }]);
-
- return $formlyProxy;
- })();
-
- $formlyProxy.$inject = [];
-
- _export('default', $formlyProxy);
-
- _export('FORMLY_PROXY_SERVICE', FORMLY_PROXY_SERVICE);
- }
- };
-});
-$__System.register('20', ['1f'], function (_export) {
- /* global angular */
- 'use strict';
-
- var $formlyProxy, FORMLY_PROXY_SERVICE, FORMLY_PROXY_MODULE_NAME;
- return {
- setters: [function (_f) {
- $formlyProxy = _f['default'];
- FORMLY_PROXY_SERVICE = _f.FORMLY_PROXY_SERVICE;
- }],
- execute: function () {
- FORMLY_PROXY_MODULE_NAME = 'formlyProxyModule';
-
- _export('default', angular.module(FORMLY_PROXY_MODULE_NAME, []).service(FORMLY_PROXY_SERVICE, $formlyProxy));
- }
- };
-});
-$__System.registerDynamic("21", [], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- var $Object = Object;
- module.exports = {
- create: $Object.create,
- getProto: $Object.getPrototypeOf,
- isEnum: {}.propertyIsEnumerable,
- getDesc: $Object.getOwnPropertyDescriptor,
- setDesc: $Object.defineProperty,
- setDescs: $Object.defineProperties,
- getKeys: $Object.keys,
- getNames: $Object.getOwnPropertyNames,
- getSymbols: $Object.getOwnPropertySymbols,
- each: [].forEach
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("22", ["21"], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- var $ = $__require('21');
- module.exports = function defineProperty(it, key, desc) {
- return $.setDesc(it, key, desc);
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("23", ["22"], true, function($__require, exports, module) {
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- module.exports = {
- "default": $__require('22'),
- __esModule: true
- };
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("15", ["23"], true, function($__require, exports, module) {
- "use strict";
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- var _Object$defineProperty = $__require('23')["default"];
- exports["default"] = (function() {
- function defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor)
- descriptor.writable = true;
- _Object$defineProperty(target, descriptor.key, descriptor);
- }
- }
- return function(Constructor, protoProps, staticProps) {
- if (protoProps)
- defineProperties(Constructor.prototype, protoProps);
- if (staticProps)
- defineProperties(Constructor, staticProps);
- return Constructor;
- };
- })();
- exports.__esModule = true;
- global.define = __define;
- return module.exports;
-});
-
-$__System.registerDynamic("16", [], true, function($__require, exports, module) {
- "use strict";
- ;
- var global = this,
- __define = global.define;
- global.define = undefined;
- exports["default"] = function(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
- };
- exports.__esModule = true;
- global.define = __define;
- return module.exports;
-});
-
-$__System.register('24', ['15', '16'], function (_export) {
- var _createClass, _classCallCheck, SELECT_OPTION_MANAGE_NAME, selectOptionManage;
-
- return {
- setters: [function (_) {
- _createClass = _['default'];
- }, function (_2) {
- _classCallCheck = _2['default'];
- }],
- execute: function () {
- /* global angular */
-
- 'use strict';
-
- SELECT_OPTION_MANAGE_NAME = 'selectOptionManage';
-
- selectOptionManage = (function () {
- function selectOptionManage() {
- _classCallCheck(this, selectOptionManage);
- }
-
- _createClass(selectOptionManage, [{
- key: 'initModel',
- value: function initModel(selectObj) {
- this.resetModel(selectObj);
- }
- }, {
- key: 'resetModel',
- value: function resetModel(selectObj) {
- var zeroModel = { rows: [] };
- angular.copy(zeroModel, selectObj);
- }
- }, {
- key: 'isOptionUnique',
- value: function isOptionUnique(selectObj, textValue) {
- for (var i = selectObj.rows.length - 1; i >= 0; i--) {
- if (selectObj.rows[i].option === textValue) return false;
- }
- return true;
- }
- }, {
- key: 'isOptionValidFormat',
- value: function isOptionValidFormat(textValue) {
- if (textValue !== '') return true;
- return false;
- }
- }, {
- key: 'addNewOptionRadio',
- value: function addNewOptionRadio(selectObj, newOptionText) {
- var fullResponse = {
- resultFlag: false,
- details: ''
- };
- var checkResult = this.validOption(selectObj, newOptionText);
- if (checkResult.resultFlag === true) {
-
- var newOption = {
- option: newOptionText,
- order: selectObj.rows.length
- };
-
- selectObj.rows.push(newOption);
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- } else {
- angular.copy(checkResult, fullResponse);
- return fullResponse;
- }
- }
- }, {
- key: 'addNewOptionBasicSelect',
- value: function addNewOptionBasicSelect(selectObj, newOptionText) {
- var fullResponse = {
- resultFlag: false,
- details: ''
- };
-
- var checkResult = this.validOption(selectObj, newOptionText);
- if (checkResult.resultFlag === true) {
-
- var newOption = {
- option: newOptionText,
- order: selectObj.rows.length
- };
-
- selectObj.rows.push(newOption);
- fullResponse.resultFlag = true;
- fullResponse.details = '';
-
- return fullResponse;
- } else {
- angular.copy(checkResult, fullResponse);
- return fullResponse;
- }
- }
- }, {
- key: 'addNewOptionGroupedSelect',
- value: function addNewOptionGroupedSelect(selectObj, newOptionText, newOptionGroup) {
- var fullResponse = {
- resultFlag: false,
- details: ''
- };
-
- var checkResult = this.validOption(selectObj, newOptionText);
-
- if (checkResult.resultFlag === true) {
-
- var newOption = {
- option: newOptionText,
- group: newOptionGroup,
- order: selectObj.rows.length
- };
-
- selectObj.rows.push(newOption);
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- } else {
- angular.copy(checkResult, fullResponse);
- return fullResponse;
- }
- }
- }, {
- key: 'removeOption',
- value: function removeOption(selectObj, AtIndex) {
- var fullResponse = {
- resultFlag: false,
- details: ''
- };
-
- if (AtIndex !== -1) {
- selectObj.rows.splice(AtIndex, 1);
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- } else {
- fullResponse.resultFlag = false;
- fullResponse.details = 'Option index not valid';
- return fullResponse;
- }
- }
- }, {
- key: 'upthisOption',
- value: function upthisOption(selectObj, indexOption) {
- var fullResponse = {
- resultFlag: false,
- details: ''
- };
-
- if (indexOption > -1) {
- if (indexOption > 0) {
- if (selectObj.rows[indexOption - 1]) {
- var currentOption = selectObj.rows[indexOption];
- selectObj.rows.splice(indexOption, 1);
- selectObj.rows.splice(indexOption - 1, 0, currentOption);
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- } else {
- fullResponse.resultFlag = false;
- fullResponse.details = 'Can\'t retreive option from option index';
- return fullResponse;
- }
- } else {
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- }
- } else {
- fullResponse.resultFlag = false;
- fullResponse.details = 'Option index not valid';
- return fullResponse;
- }
- }
- }, {
- key: 'downthisOption',
- value: function downthisOption(selectObj, indexOption) {
- var fullResponse = {
- resultFlag: false,
- details: ''
- };
-
- if (indexOption > -1) {
- if (indexOption < selectObj.rows.length - 1) {
- if (selectObj.rows[indexOption + 1]) {
- var currentOption = selectObj.rows[indexOption];
- selectObj.rows.splice(indexOption, 1);
- selectObj.rows.splice(indexOption + 1, 0, currentOption);
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- } else {
- fullResponse.resultFlag = false;
- fullResponse.details = 'Can\'t retreive option from option index';
- return fullResponse;
- }
- } else {
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- }
- } else {
- fullResponse.resultFlag = false;
- fullResponse.details = 'Option index not valid';
- return fullResponse;
- }
- }
- }, {
- key: 'validOption',
- value: function validOption(selectObj, newOptionText) {
- var fullResponse = {
- resultFlag: false,
- details: ''
- };
-
- if (typeof newOptionText === 'undefined') {
- fullResponse.resultFlag = false;
- fullResponse.details = 'Entered option is empty';
- return fullResponse;
- }
-
- if (newOptionText !== '') {
- for (var i = selectObj.rows.length - 1; i >= 0; i--) {
- if (selectObj.rows[i].option === newOptionText) {
- fullResponse.resultFlag = false;
- fullResponse.details = 'Entered option is not unique';
- return fullResponse;
- }
- }
- fullResponse.resultFlag = true;
- fullResponse.details = '';
- return fullResponse;
- }
- fullResponse.resultFlag = false;
- fullResponse.details = 'Entered option is empty';
- return fullResponse;
- }
- }]);
-
- return selectOptionManage;
- })();
-
- selectOptionManage.$inject = [];
-
- _export('default', selectOptionManage);
-
- _export('SELECT_OPTION_MANAGE_NAME', SELECT_OPTION_MANAGE_NAME);
- }
- };
-});
-$__System.register('25', ['24'], function (_export) {
- /* global angular */
- 'use strict';
-
- var selectOptionManage, SELECT_OPTION_MANAGE_NAME, COMMON_MODULE_NAME;
- return {
- setters: [function (_) {
- selectOptionManage = _['default'];
- SELECT_OPTION_MANAGE_NAME = _.SELECT_OPTION_MANAGE_NAME;
- }],
- execute: function () {
- COMMON_MODULE_NAME = 'commonModule';
-
- _export('default', angular.module(COMMON_MODULE_NAME, []).service(SELECT_OPTION_MANAGE_NAME, selectOptionManage));
- }
- };
-});
-$__System.register('1', ['2', '4', '6', '19', '20', '25', 'e', 'f', '1a', '1d'], function (_export) {
- 'use strict';
-
- var easyFormStepWayConfig, EASY_FORM_VERSION_NAME, EASY_FORM_VERSION_VALUE, formlyConfig, easyFormStepwayMainModule, easyFormStepwayFormlyProxyModule, easyFormStepwayCommonModules, translateConfig, easyFormStepWayCoreModule, easyFormStepwayModalModule, easyFormStepwayModalProxyModule, STEP_WAY_MODULE_NAME, STEP_WAY_MODULES_INJECT, mainModule;
- return {
- setters: [function (_) {}, function (_2) {
- easyFormStepWayConfig = _2['default'];
- EASY_FORM_VERSION_NAME = _2.EASY_FORM_VERSION_NAME;
- EASY_FORM_VERSION_VALUE = _2.EASY_FORM_VERSION_VALUE;
- }, function (_3) {
- formlyConfig = _3['default'];
- }, function (_4) {
- easyFormStepwayMainModule = _4['default'];
- }, function (_5) {
- easyFormStepwayFormlyProxyModule = _5['default'];
- }, function (_6) {
- easyFormStepwayCommonModules = _6['default'];
- }, function (_e) {
- translateConfig = _e['default'];
- }, function (_f) {
- easyFormStepWayCoreModule = _f['default'];
- }, function (_a) {
- easyFormStepwayModalModule = _a['default'];
- }, function (_d) {
- easyFormStepwayModalProxyModule = _d['default'];
- }],
- execute: function () {
- STEP_WAY_MODULE_NAME = 'eda.easyformGen.stepway';
- STEP_WAY_MODULES_INJECT = [easyFormStepWayCoreModule.name, translateConfig.name, easyFormStepwayMainModule.name, easyFormStepwayModalModule.name, easyFormStepwayModalProxyModule.name, easyFormStepwayFormlyProxyModule.name, easyFormStepwayCommonModules.name];
- mainModule = angular.module(STEP_WAY_MODULE_NAME, STEP_WAY_MODULES_INJECT).value(EASY_FORM_VERSION_NAME, EASY_FORM_VERSION_VALUE).config(formlyConfig).config(easyFormStepWayConfig);
-
- _export('default', mainModule);
- }
- };
-});
-})
-(function(factory) {
- factory();
-});
-//# sourceMappingURL=eda.stepway.js.map
\ No newline at end of file
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+
+
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "http://localhost:8080/";
+
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\n__webpack_require__(1);\n\n__webpack_require__(7);\n\n__webpack_require__(106);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvaW5kZXguanM/YzY0NSJdLCJuYW1lcyI6WyJyZXF1aXJlIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUVBOztBQURBLG1CQUFBQSxDQUFRLEdBQVIiLCJmaWxlIjoiMC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi92ZW5kb3JzJztcbnJlcXVpcmUoJy4vc3R5bGUvaW5kZXguc2NzcycpO1xuaW1wb3J0ICcuL21haW4nO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2luZGV4LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\n__webpack_require__(2);\n\n__webpack_require__(3);\n\n__webpack_require__(5);\n\n__webpack_require__(6);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvdmVuZG9ycy5qcz8xMDYyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0EiLCJmaWxlIjoiMS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnYXBpLWNoZWNrJzsgLy8gTk9URTogYWx3YXlzIGltcG9ydGVkIGJlZm9yZSBhbmd1bGFyLWZvcm1seSFcbmltcG9ydCAnYW5ndWxhci1mb3JtbHknO1xuaW1wb3J0ICdhbmd1bGFyLWZvcm1seS10ZW1wbGF0ZXMtYm9vdHN0cmFwJztcbmltcG9ydCAnYW5ndWxhci13aXphcmQnO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L3ZlbmRvcnMuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 2 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("//! api-check version 7.5.5 built with ♥ by Kent C. Dodds (http://kent.doddsfamily.us) (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"apiCheck\"] = factory();\n\telse\n\t\troot[\"apiCheck\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n\tvar _apiCheck = __webpack_require__(1);\n\n\tvar _apiCheck2 = _interopRequireDefault(_apiCheck);\n\n\texports['default'] = _apiCheck2['default'];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar stringify = __webpack_require__(2);\n\tvar apiCheckUtil = __webpack_require__(3);\n\tvar each = apiCheckUtil.each;\n\tvar isError = apiCheckUtil.isError;\n\tvar t = apiCheckUtil.t;\n\tvar arrayify = apiCheckUtil.arrayify;\n\tvar getCheckerDisplay = apiCheckUtil.getCheckerDisplay;\n\tvar typeOf = apiCheckUtil.typeOf;\n\tvar getError = apiCheckUtil.getError;\n\n\tvar checkers = __webpack_require__(4);\n\tvar apiCheckApis = getApiCheckApis();\n\n\tmodule.exports = getApiCheckInstance;\n\tmodule.exports.VERSION = (\"7.5.5\");\n\tmodule.exports.utils = apiCheckUtil;\n\tmodule.exports.globalConfig = {\n\t verbose: false,\n\t disabled: false\n\t};\n\n\tvar apiCheckApiCheck = getApiCheckInstance({\n\t output: { prefix: 'apiCheck' }\n\t});\n\tmodule.exports.internalChecker = apiCheckApiCheck;\n\n\teach(checkers, function (checker, name) {\n\t return module.exports[name] = checker;\n\t});\n\n\tfunction getApiCheckInstance() {\n\t var config = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t var extraCheckers = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n\t /* eslint complexity:[2, 6] */\n\t if (apiCheckApiCheck && arguments.length) {\n\t apiCheckApiCheck['throw'](apiCheckApis.getApiCheckInstanceCheckers, arguments, {\n\t prefix: 'creating an apiCheck instance'\n\t });\n\t }\n\n\t var additionalProperties = {\n\t 'throw': getApiCheck(true),\n\t warn: getApiCheck(false),\n\t getErrorMessage: getErrorMessage,\n\t handleErrorMessage: handleErrorMessage,\n\t config: {\n\t output: config.output || {\n\t prefix: '',\n\t suffix: '',\n\t docsBaseUrl: ''\n\t },\n\t verbose: config.verbose || false,\n\t disabled: config.disabled || false\n\t },\n\t utils: apiCheckUtil\n\t };\n\n\t each(additionalProperties, function (wrapper, name) {\n\t return apiCheck[name] = wrapper;\n\t });\n\n\t var disabled = apiCheck.disabled || module.exports.globalConfig.disabled;\n\t each(checkers.getCheckers(disabled), function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\t each(extraCheckers, function (checker, name) {\n\t return apiCheck[name] = checker;\n\t });\n\n\t return apiCheck;\n\n\t /**\n\t * This is the instance function. Other things are attached to this see additional properties above.\n\t * @param {Array} api - the checkers to check with\n\t * @param {Array} args - the args to check\n\t * @param {Object} output - output options\n\t * @returns {Object} - if this has a failed = true property, then it failed\n\t */\n\t function apiCheck(api, args, output) {\n\t /* eslint complexity:[2, 8] */\n\t if (apiCheck.config.disabled || module.exports.globalConfig.disabled) {\n\t return {\n\t apiTypes: {}, argTypes: {},\n\t passed: true, message: '',\n\t failed: false\n\t }; // empty version of what is normally returned\n\t }\n\t checkApiCheckApi(arguments);\n\t if (!Array.isArray(api)) {\n\t api = [api];\n\t args = [args];\n\t } else {\n\t // turn arguments into an array\n\t args = Array.prototype.slice.call(args);\n\t }\n\t var messages = checkEnoughArgs(api, args);\n\t if (!messages.length) {\n\t // this is where we actually go perform the checks.\n\t messages = checkApiWithArgs(api, args);\n\t }\n\n\t var returnObject = getTypes(api, args);\n\t returnObject.args = args;\n\t if (messages.length) {\n\t returnObject.message = apiCheck.getErrorMessage(api, args, messages, output);\n\t returnObject.failed = true;\n\t returnObject.passed = false;\n\t } else {\n\t returnObject.message = '';\n\t returnObject.failed = false;\n\t returnObject.passed = true;\n\t }\n\t return returnObject;\n\t }\n\n\t /**\n\t * checkApiCheckApi, should be read like: check apiCheck api. As in, check the api for apiCheck :-)\n\t * @param {Array} checkApiArgs - args provided to apiCheck function\n\t */\n\t function checkApiCheckApi(checkApiArgs) {\n\t var api = checkApiArgs[0];\n\t var args = checkApiArgs[1];\n\t var isArrayOrArgs = Array.isArray(args) || args && typeof args === 'object' && typeof args.length === 'number';\n\n\t if (Array.isArray(api) && !isArrayOrArgs) {\n\t throw new Error(getErrorMessage(api, [args], ['If an array is provided for the api, an array must be provided for the args as well.'], { prefix: 'apiCheck' }));\n\t }\n\t // dog fooding here\n\t var errors = checkApiWithArgs(apiCheckApis.checkApiCheckApi, checkApiArgs);\n\t if (errors.length) {\n\t var message = apiCheck.getErrorMessage(apiCheckApis.checkApiCheckApi, checkApiArgs, errors, {\n\t prefix: 'apiCheck'\n\t });\n\t apiCheck.handleErrorMessage(message, true);\n\t }\n\t }\n\n\t function getApiCheck(shouldThrow) {\n\t return function apiCheckWrapper(api, args, output) {\n\t var result = apiCheck(api, args, output);\n\t apiCheck.handleErrorMessage(result.message, shouldThrow);\n\t return result; // wont get here if an error is thrown\n\t };\n\t }\n\n\t function handleErrorMessage(message, shouldThrow) {\n\t if (shouldThrow && message) {\n\t throw new Error(message);\n\t } else if (message) {\n\t /* eslint no-console:0 */\n\t console.warn(message);\n\t }\n\t }\n\n\t function getErrorMessage(api, args) {\n\t var messages = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];\n\t var output = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];\n\n\t var gOut = apiCheck.config.output || {};\n\t var prefix = getPrefix();\n\t var suffix = getSuffix();\n\t var url = getUrl();\n\t var message = 'apiCheck failed! ' + messages.join(', ');\n\t var passedAndShouldHavePassed = '\\n\\n' + buildMessageFromApiAndArgs(api, args);\n\t return (prefix + ' ' + message + ' ' + suffix + ' ' + (url || '') + passedAndShouldHavePassed).trim();\n\n\t function getPrefix() {\n\t var p = output.onlyPrefix;\n\t if (!p) {\n\t p = ((gOut.prefix || '') + ' ' + (output.prefix || '')).trim();\n\t }\n\t return p;\n\t }\n\n\t function getSuffix() {\n\t var s = output.onlySuffix;\n\t if (!s) {\n\t s = ((output.suffix || '') + ' ' + (gOut.suffix || '')).trim();\n\t }\n\t return s;\n\t }\n\n\t function getUrl() {\n\t var u = output.url;\n\t if (!u) {\n\t u = gOut.docsBaseUrl && output.urlSuffix && ('' + gOut.docsBaseUrl + output.urlSuffix).trim();\n\t }\n\t return u;\n\t }\n\t }\n\n\t function buildMessageFromApiAndArgs(api, args) {\n\t var _getTypes = getTypes(api, args);\n\n\t var apiTypes = _getTypes.apiTypes;\n\t var argTypes = _getTypes.argTypes;\n\n\t var copy = Array.prototype.slice.call(args || []);\n\t var replacedItems = [];\n\t replaceFunctionWithName(copy);\n\t var passedArgs = getObjectString(copy);\n\t argTypes = getObjectString(argTypes);\n\t apiTypes = getObjectString(apiTypes);\n\n\t return generateMessage();\n\n\t // functions\n\n\t function replaceFunctionWithName(obj) {\n\t each(obj, function (val, name) {\n\t /* eslint complexity:[2, 6] */\n\t if (replacedItems.indexOf(val) === -1) {\n\t // avoid recursive problems\n\t replacedItems.push(val);\n\t if (typeof val === 'object') {\n\t replaceFunctionWithName(obj);\n\t } else if (typeof val === 'function') {\n\t obj[name] = val.displayName || val.name || 'anonymous function';\n\t }\n\t }\n\t });\n\t }\n\n\t function getObjectString(types) {\n\t if (!types || !types.length) {\n\t return 'nothing';\n\t } else if (types && types.length === 1) {\n\t types = types[0];\n\t }\n\t return stringify(types, null, 2);\n\t }\n\n\t function generateMessage() {\n\t var n = '\\n';\n\t var useS = true;\n\t if (args && args.length === 1) {\n\t if (typeof args[0] === 'object' && args[0] !== null) {\n\t useS = !!Object.keys(args[0]).length;\n\t } else {\n\t useS = false;\n\t }\n\t }\n\t var types = 'type' + (useS ? 's' : '');\n\t var newLine = n + n;\n\t return 'You passed:' + n + passedArgs + newLine + ('With the ' + types + ':' + n + argTypes + newLine) + ('The API calls for:' + n + apiTypes);\n\t }\n\t }\n\n\t function getTypes(api, args) {\n\t api = arrayify(api);\n\t args = arrayify(args);\n\t var apiTypes = api.map(function (checker, index) {\n\t var specified = module.exports.globalConfig.hasOwnProperty('verbose');\n\t return getCheckerDisplay(checker, {\n\t terse: specified ? !module.exports.globalConfig.verbose : !apiCheck.config.verbose,\n\t obj: args[index],\n\t addHelpers: true\n\t });\n\t });\n\t var argTypes = args.map(function (arg) {\n\t return getArgDisplay(arg, []);\n\t });\n\t return { argTypes: argTypes, apiTypes: apiTypes };\n\t }\n\t}\n\n\t// STATELESS FUNCTIONS\n\n\t/**\n\t * This is where the magic happens for actually checking the arguments with the api.\n\t * @param {Array} api - checkers\n\t * @param {Array} args - and arguments object\n\t * @returns {Array} - the error messages\n\t */\n\tfunction checkApiWithArgs(api, args) {\n\t /* eslint complexity:[2, 7] */\n\t var messages = [];\n\t var failed = false;\n\t var checkerIndex = 0;\n\t var argIndex = 0;\n\t var arg = undefined,\n\t checker = undefined,\n\t res = undefined,\n\t lastChecker = undefined,\n\t argName = undefined,\n\t argFailed = undefined,\n\t skipPreviousChecker = undefined;\n\t /* jshint -W084 */\n\t while ((checker = api[checkerIndex++]) && argIndex < args.length) {\n\t arg = args[argIndex++];\n\t argName = 'Argument ' + argIndex + (checker.isOptional ? ' (optional)' : '');\n\t res = checker(arg, 'value', argName);\n\t argFailed = isError(res);\n\t lastChecker = checkerIndex >= api.length;\n\t skipPreviousChecker = checkerIndex > 1 && api[checkerIndex - 1].isOptional;\n\t if (argFailed && lastChecker || argFailed && !lastChecker && !checker.isOptional && !skipPreviousChecker) {\n\t failed = true;\n\t messages.push(getCheckerErrorMessage(res, checker, arg));\n\t } else if (argFailed && checker.isOptional) {\n\t argIndex--;\n\t } else {\n\t messages.push(t(argName) + ' passed');\n\t }\n\t }\n\t return failed ? messages : [];\n\t}\n\n\tcheckerTypeType.type = 'function with __apiCheckData property and `${function.type}` property';\n\tfunction checkerTypeType(checkerType, name, location) {\n\t var apiCheckDataChecker = checkers.shape({\n\t type: checkers.string,\n\t optional: checkers.bool\n\t });\n\t var asFunc = checkers.func.withProperties({ __apiCheckData: apiCheckDataChecker });\n\t var asShape = checkers.shape({ __apiCheckData: apiCheckDataChecker });\n\t var wrongShape = checkers.oneOfType([asFunc, asShape])(checkerType, name, location);\n\t if (isError(wrongShape)) {\n\t return wrongShape;\n\t }\n\t if (typeof checkerType !== 'function' && !checkerType.hasOwnProperty(checkerType.__apiCheckData.type)) {\n\t return getError(name, location, checkerTypeType.type);\n\t }\n\t}\n\n\tfunction getCheckerErrorMessage(res, checker, val) {\n\t var checkerHelp = getCheckerHelp(checker, val);\n\t checkerHelp = checkerHelp ? ' - ' + checkerHelp : '';\n\t return res.message + checkerHelp;\n\t}\n\n\tfunction getCheckerHelp(_ref, val) {\n\t var help = _ref.help;\n\n\t if (!help) {\n\t return '';\n\t }\n\t if (typeof help === 'function') {\n\t help = help(val);\n\t }\n\t return help;\n\t}\n\n\tfunction checkEnoughArgs(api, args) {\n\t var requiredArgs = api.filter(function (a) {\n\t return !a.isOptional;\n\t });\n\t if (args.length < requiredArgs.length) {\n\t return ['Not enough arguments specified. Requires `' + requiredArgs.length + '`, you passed `' + args.length + '`'];\n\t } else {\n\t return [];\n\t }\n\t}\n\n\tfunction getArgDisplay(arg, gottenArgs) {\n\t /* eslint complexity:[2, 7] */\n\t var cName = arg && arg.constructor && arg.constructor.name;\n\t var type = typeOf(arg);\n\t if (type === 'function') {\n\t if (hasKeys()) {\n\t var properties = stringify(getDisplayIfNotGotten());\n\t return cName + ' (with properties: ' + properties + ')';\n\t }\n\t return cName;\n\t }\n\n\t if (arg === null) {\n\t return 'null';\n\t }\n\n\t if (type !== 'array' && type !== 'object') {\n\t return type;\n\t }\n\n\t if (hasKeys()) {\n\t return getDisplayIfNotGotten();\n\t }\n\n\t return cName;\n\n\t // utility functions\n\t function hasKeys() {\n\t return arg && Object.keys(arg).length;\n\t }\n\n\t function getDisplayIfNotGotten() {\n\t if (gottenArgs.indexOf(arg) !== -1) {\n\t return '[Circular]';\n\t }\n\t gottenArgs.push(arg);\n\t return getDisplay(arg, gottenArgs);\n\t }\n\t}\n\n\tfunction getDisplay(obj, gottenArgs) {\n\t var argDisplay = {};\n\t each(obj, function (v, k) {\n\t return argDisplay[k] = getArgDisplay(v, gottenArgs);\n\t });\n\t return argDisplay;\n\t}\n\n\tfunction getApiCheckApis() {\n\t var os = checkers.string.optional;\n\n\t var checkerFnChecker = checkers.func.withProperties({\n\t type: checkers.oneOfType([checkers.string, checkerTypeType]).optional,\n\t displayName: checkers.string.optional,\n\t shortType: checkers.string.optional,\n\t notOptional: checkers.bool.optional,\n\t notRequired: checkers.bool.optional\n\t });\n\n\t var getApiCheckInstanceCheckers = [checkers.shape({\n\t output: checkers.shape({\n\t prefix: checkers.string.optional,\n\t suffix: checkers.string.optional,\n\t docsBaseUrl: checkers.string.optional\n\t }).strict.optional,\n\t verbose: checkers.bool.optional,\n\t disabled: checkers.bool.optional\n\t }).strict.optional, checkers.objectOf(checkerFnChecker).optional];\n\n\t var checkApiCheckApi = [checkers.typeOrArrayOf(checkerFnChecker), checkers.any.optional, checkers.shape({\n\t prefix: os, suffix: os, urlSuffix: os, // appended case\n\t onlyPrefix: os, onlySuffix: os, url: os // override case\n\t }).strict.optional];\n\n\t return {\n\t checkerFnChecker: checkerFnChecker,\n\t getApiCheckInstanceCheckers: getApiCheckInstanceCheckers,\n\t checkApiCheckApi: checkApiCheckApi\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\tmodule.exports = stringify;\n\n\tfunction getSerialize (fn, decycle) {\n\t var seen = [], keys = [];\n\t decycle = decycle || function(key, value) {\n\t return '[Circular ' + getPath(value, seen, keys) + ']'\n\t };\n\t return function(key, value) {\n\t var ret = value;\n\t if (typeof value === 'object' && value) {\n\t if (seen.indexOf(value) !== -1)\n\t ret = decycle(key, value);\n\t else {\n\t seen.push(value);\n\t keys.push(key);\n\t }\n\t }\n\t if (fn) ret = fn(key, ret);\n\t return ret;\n\t }\n\t}\n\n\tfunction getPath (value, seen, keys) {\n\t var index = seen.indexOf(value);\n\t var path = [ keys[index] ];\n\t for (index--; index >= 0; index--) {\n\t if (seen[index][ path[0] ] === value) {\n\t value = seen[index];\n\t path.unshift(keys[index]);\n\t }\n\t }\n\t return '~' + path.join('.');\n\t}\n\n\tfunction stringify(obj, fn, spaces, decycle) {\n\t return JSON.stringify(obj, getSerialize(fn, decycle), spaces);\n\t}\n\n\tstringify.getSerialize = getSerialize;\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\tvar stringify = __webpack_require__(2);\n\tvar checkerHelpers = {\n\t addOptional: addOptional, getRequiredVersion: getRequiredVersion, setupChecker: setupChecker, addNullable: addNullable\n\t};\n\n\tmodule.exports = {\n\t each: each, copy: copy, typeOf: typeOf, arrayify: arrayify, getCheckerDisplay: getCheckerDisplay,\n\t isError: isError, list: list, getError: getError, nAtL: nAtL, t: t, undef: undef, checkerHelpers: checkerHelpers,\n\t noop: noop\n\t};\n\n\tfunction copy(obj) {\n\t var type = typeOf(obj);\n\t var daCopy = undefined;\n\t if (type === 'array') {\n\t daCopy = [];\n\t } else if (type === 'object') {\n\t daCopy = {};\n\t } else {\n\t return obj;\n\t }\n\t each(obj, function (val, key) {\n\t daCopy[key] = val; // cannot single-line this because we don't want to abort the each\n\t });\n\t return daCopy;\n\t}\n\n\tfunction typeOf(obj) {\n\t if (Array.isArray(obj)) {\n\t return 'array';\n\t } else if (obj instanceof RegExp) {\n\t return 'object';\n\t } else {\n\t return typeof obj;\n\t }\n\t}\n\n\tfunction getCheckerDisplay(checker, options) {\n\t /* eslint complexity:[2, 7] */\n\t var display = undefined;\n\t var short = options && options.short;\n\t if (short && checker.shortType) {\n\t display = checker.shortType;\n\t } else if (!short && typeof checker.type === 'object' || checker.type === 'function') {\n\t display = getCheckerType(checker, options);\n\t } else {\n\t display = getCheckerType(checker, options) || checker.displayName || checker.name;\n\t }\n\t return display;\n\t}\n\n\tfunction getCheckerType(_ref, options) {\n\t var type = _ref.type;\n\n\t if (typeof type === 'function') {\n\t var __apiCheckData = type.__apiCheckData;\n\t var typeTypes = type(options);\n\t type = _defineProperty({\n\t __apiCheckData: __apiCheckData\n\t }, __apiCheckData.type, typeTypes);\n\t }\n\t return type;\n\t}\n\n\tfunction arrayify(obj) {\n\t if (!obj) {\n\t return [];\n\t } else if (Array.isArray(obj)) {\n\t return obj;\n\t } else {\n\t return [obj];\n\t }\n\t}\n\n\tfunction each(obj, iterator, context) {\n\t if (Array.isArray(obj)) {\n\t return eachArry(obj, iterator, context);\n\t } else {\n\t return eachObj(obj, iterator, context);\n\t }\n\t}\n\n\tfunction eachObj(obj, iterator, context) {\n\t var ret = undefined;\n\t var hasOwn = Object.prototype.hasOwnProperty;\n\t /* eslint prefer-const:0 */ // some weird eslint bug?\n\t for (var key in obj) {\n\t if (hasOwn.call(obj, key)) {\n\t ret = iterator.call(context, obj[key], key, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t }\n\t return true;\n\t}\n\n\tfunction eachArry(obj, iterator, context) {\n\t var ret = undefined;\n\t var length = obj.length;\n\t for (var i = 0; i < length; i++) {\n\t ret = iterator.call(context, obj[i], i, obj);\n\t if (ret === false) {\n\t return ret;\n\t }\n\t }\n\t return true;\n\t}\n\n\tfunction isError(obj) {\n\t return obj instanceof Error;\n\t}\n\n\tfunction list(arry, join, finalJoin) {\n\t arry = arrayify(arry);\n\t var copy = arry.slice();\n\t var last = copy.pop();\n\t if (copy.length === 1) {\n\t join = ' ';\n\t }\n\t return copy.join(join) + ('' + (copy.length ? join + finalJoin : '') + last);\n\t}\n\n\tfunction getError(name, location, checkerType) {\n\t if (typeof checkerType === 'function') {\n\t checkerType = checkerType({ short: true });\n\t }\n\t var stringType = typeof checkerType !== 'object' ? checkerType : stringify(checkerType);\n\t return new Error(nAtL(name, location) + ' must be ' + t(stringType));\n\t}\n\n\tfunction nAtL(name, location) {\n\t var tName = t(name || 'value');\n\t var tLocation = !location ? '' : ' at ' + t(location);\n\t return '' + tName + tLocation;\n\t}\n\n\tfunction t(thing) {\n\t return '`' + thing + '`';\n\t}\n\n\tfunction undef(thing) {\n\t return typeof thing === 'undefined';\n\t}\n\n\t/**\n\t * This will set up the checker with all of the defaults that most checkers want like required by default and an\n\t * optional version\n\t *\n\t * @param {Function} checker - the checker to setup with properties\n\t * @param {Object} properties - properties to add to the checker\n\t * @param {boolean} disabled - when set to true, this will set the checker to a no-op function\n\t * @returns {Function} checker - the setup checker\n\t */\n\tfunction setupChecker(checker, properties, disabled) {\n\t /* eslint complexity:[2, 9] */\n\t if (disabled) {\n\t // swap out the checker for its own copy of noop\n\t checker = getNoop();\n\t checker.isNoop = true;\n\t }\n\n\t if (typeof checker.type === 'string') {\n\t checker.shortType = checker.type;\n\t }\n\n\t // assign all properties given\n\t each(properties, function (prop, name) {\n\t return checker[name] = prop;\n\t });\n\n\t if (!checker.displayName) {\n\t checker.displayName = 'apiCheck ' + t(checker.shortType || checker.type || checker.name) + ' type checker';\n\t }\n\n\t if (!checker.notRequired) {\n\t checker = getRequiredVersion(checker, disabled);\n\t }\n\n\t if (!checker.notNullable) {\n\t addNullable(checker, disabled);\n\t }\n\n\t if (!checker.notOptional) {\n\t addOptional(checker, disabled);\n\t }\n\n\t return checker;\n\t}\n\n\tfunction getRequiredVersion(checker, disabled) {\n\t var requiredChecker = disabled ? getNoop() : function requiredChecker(val, name, location, obj) {\n\t if (undef(val) && !checker.isOptional) {\n\t var tLocation = location ? ' in ' + t(location) : '';\n\t var type = getCheckerDisplay(checker, { short: true });\n\t var stringType = typeof type !== 'object' ? type : stringify(type);\n\t return new Error('Required ' + t(name) + ' not specified' + tLocation + '. Must be ' + t(stringType));\n\t } else {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t copyProps(checker, requiredChecker);\n\t requiredChecker.originalChecker = checker;\n\t return requiredChecker;\n\t}\n\n\tfunction addOptional(checker, disabled) {\n\t var optionalCheck = disabled ? getNoop() : function optionalCheck(val, name, location, obj) {\n\t if (!undef(val)) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, optionalCheck);\n\n\t optionalCheck.isOptional = true;\n\t optionalCheck.displayName = checker.displayName + ' (optional)';\n\t optionalCheck.originalChecker = checker;\n\n\t // the magic line that allows you to add .optional to the end of the checkers\n\t checker.optional = optionalCheck;\n\n\t fixType(checker, checker.optional);\n\t}\n\n\tfunction addNullable(checker, disabled) {\n\t var nullableCheck = disabled ? getNoop() : function nullableCheck(val, name, location, obj) {\n\t if (val !== null) {\n\t return checker(val, name, location, obj);\n\t }\n\t };\n\t // inherit all properties on the original checker\n\t copyProps(checker, nullableCheck);\n\n\t nullableCheck.isNullable = true;\n\t nullableCheck.displayName = checker.displayName + ' (nullable)';\n\t nullableCheck.originalChecker = checker;\n\n\t // the magic line that allows you to add .nullable to the end of the checkers\n\t checker.nullable = nullableCheck;\n\n\t fixType(checker, checker.nullable);\n\t if (!checker.notOptional) {\n\t addOptional(checker.nullable, disabled);\n\t }\n\t}\n\n\tfunction fixType(checker, checkerCopy) {\n\t // fix type, because it's not a straight copy...\n\t // the reason is we need to specify type.__apiCheckData.optional as true for the terse/verbose option.\n\t // we also want to add \"(optional)\" to the types with a string\n\t if (typeof checkerCopy.type === 'object') {\n\t checkerCopy.type = copy(checkerCopy.type); // make our own copy of this\n\t } else if (typeof checkerCopy.type === 'function') {\n\t checkerCopy.type = function () {\n\t return checker.type.apply(checker, arguments);\n\t };\n\t } else {\n\t checkerCopy.type += ' (optional)';\n\t return;\n\t }\n\t checkerCopy.type.__apiCheckData = copy(checker.type.__apiCheckData) || {}; // and this\n\t checkerCopy.type.__apiCheckData.optional = true;\n\t}\n\n\t// UTILS\n\n\tfunction copyProps(src, dest) {\n\t each(Object.keys(src), function (key) {\n\t return dest[key] = src[key];\n\t });\n\t}\n\n\tfunction noop() {}\n\n\tfunction getNoop() {\n\t /* eslint no-shadow:0 */\n\t /* istanbul ignore next */\n\t return function noop() {};\n\t}\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar stringify = __webpack_require__(2);\n\n\tvar _require = __webpack_require__(3);\n\n\tvar typeOf = _require.typeOf;\n\tvar each = _require.each;\n\tvar copy = _require.copy;\n\tvar getCheckerDisplay = _require.getCheckerDisplay;\n\tvar isError = _require.isError;\n\tvar arrayify = _require.arrayify;\n\tvar list = _require.list;\n\tvar getError = _require.getError;\n\tvar nAtL = _require.nAtL;\n\tvar t = _require.t;\n\tvar checkerHelpers = _require.checkerHelpers;\n\tvar undef = _require.undef;\n\tvar setupChecker = checkerHelpers.setupChecker;\n\n\tvar checkers = module.exports = getCheckers();\n\tmodule.exports.getCheckers = getCheckers;\n\n\tfunction getCheckers(disabled) {\n\t return {\n\t array: typeOfCheckGetter('Array'),\n\t bool: typeOfCheckGetter('Boolean'),\n\t number: typeOfCheckGetter('Number'),\n\t string: typeOfCheckGetter('String'),\n\t func: funcCheckGetter(),\n\t object: objectCheckGetter(),\n\n\t emptyObject: emptyObjectCheckGetter(),\n\n\t instanceOf: instanceCheckGetter,\n\t oneOf: oneOfCheckGetter,\n\t oneOfType: oneOfTypeCheckGetter,\n\n\t arrayOf: arrayOfCheckGetter,\n\t objectOf: objectOfCheckGetter,\n\t typeOrArrayOf: typeOrArrayOfCheckGetter,\n\n\t range: rangeCheckGetter,\n\t lessThan: lessThanCheckGetter,\n\t greaterThan: greaterThanCheckGetter,\n\n\t shape: getShapeCheckGetter(),\n\t args: argumentsCheckerGetter(),\n\n\t any: anyCheckGetter(),\n\t 'null': nullCheckGetter()\n\n\t };\n\n\t function typeOfCheckGetter(type) {\n\t var lType = type.toLowerCase();\n\t return setupChecker(function typeOfCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== lType) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function funcCheckGetter() {\n\t var type = 'Function';\n\t var functionChecker = setupChecker(function functionCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== 'function') {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\n\t functionChecker.withProperties = function getWithPropertiesChecker(properties) {\n\t var apiError = checkers.objectOf(checkers.func)(properties, 'properties', 'apiCheck.func.withProperties');\n\t if (isError(apiError)) {\n\t throw apiError;\n\t }\n\t var shapeChecker = checkers.shape(properties, true);\n\t shapeChecker.type.__apiCheckData.type = 'func.withProperties';\n\n\t return setupChecker(function functionWithPropertiesChecker(val, name, location) {\n\t var notFunction = checkers.func(val, name, location);\n\t if (isError(notFunction)) {\n\t return notFunction;\n\t }\n\t return shapeChecker(val, name, location);\n\t }, { type: shapeChecker.type, shortType: 'func.withProperties' }, disabled);\n\t };\n\t return functionChecker;\n\t }\n\n\t function objectCheckGetter() {\n\t var type = 'Object';\n\t var nullType = 'Object (null ok)';\n\t var objectNullOkChecker = setupChecker(function objectNullOkCheckerDefinition(val, name, location) {\n\t if (typeOf(val) !== 'object') {\n\t return getError(name, location, nullType);\n\t }\n\t }, { type: nullType }, disabled);\n\n\t var objectChecker = setupChecker(function objectCheckerDefinition(val, name, location) {\n\t if (val === null || isError(objectNullOkChecker(val, name, location))) {\n\t return getError(name, location, objectChecker.type);\n\t }\n\t }, { type: type, nullOk: objectNullOkChecker }, disabled);\n\n\t return objectChecker;\n\t }\n\n\t function instanceCheckGetter(classToCheck) {\n\t return setupChecker(function instanceCheckerDefinition(val, name, location) {\n\t if (!(val instanceof classToCheck)) {\n\t return getError(name, location, classToCheck.name);\n\t }\n\t }, { type: classToCheck.name }, disabled);\n\t }\n\n\t function oneOfCheckGetter(enums) {\n\t var type = {\n\t __apiCheckData: { optional: false, type: 'enum' },\n\t 'enum': enums\n\t };\n\t var shortType = 'oneOf[' + enums.map(function (enm) {\n\t return stringify(enm);\n\t }).join(', ') + ']';\n\t return setupChecker(function oneOfCheckerDefinition(val, name, location) {\n\t if (!enums.some(function (enm) {\n\t return enm === val;\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function oneOfTypeCheckGetter(typeCheckers) {\n\t var checkersDisplay = typeCheckers.map(function (checker) {\n\t return getCheckerDisplay(checker, { short: true });\n\t });\n\t var shortType = 'oneOfType[' + checkersDisplay.join(', ') + ']';\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return typeCheckers.map(function (checker) {\n\t return getCheckerDisplay(checker, options);\n\t });\n\t }\n\t type.__apiCheckData = { optional: false, type: 'oneOfType' };\n\t return setupChecker(function oneOfTypeCheckerDefinition(val, name, location) {\n\t if (!typeCheckers.some(function (checker) {\n\t return !isError(checker(val, name, location));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function arrayOfCheckGetter(checker) {\n\t var shortCheckerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'arrayOf[' + shortCheckerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'arrayOf' };\n\n\t return setupChecker(function arrayOfCheckerDefinition(val, name, location) {\n\t if (isError(checkers.array(val)) || !val.every(function (item) {\n\t return !isError(checker(item));\n\t })) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function objectOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'objectOf[' + checkerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'objectOf' };\n\n\t return setupChecker(function objectOfCheckerDefinition(val, name, location) {\n\t var notObject = checkers.object(val, name, location);\n\t if (isError(notObject)) {\n\t return notObject;\n\t }\n\t var allTypesSuccess = each(val, function (item, key) {\n\t if (isError(checker(item, key, name))) {\n\t return false;\n\t }\n\t });\n\t if (!allTypesSuccess) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function typeOrArrayOfCheckGetter(checker) {\n\t var checkerDisplay = getCheckerDisplay(checker, { short: true });\n\t var shortType = 'typeOrArrayOf[' + checkerDisplay + ']';\n\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(checker, options);\n\t }\n\n\t type.__apiCheckData = { optional: false, type: 'typeOrArrayOf' };\n\t return setupChecker(function typeOrArrayOfDefinition(val, name, location, obj) {\n\t if (isError(checkers.oneOfType([checker, checkers.arrayOf(checker)])(val, name, location, obj))) {\n\t return getError(name, location, shortType);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t }\n\n\t function getShapeCheckGetter() {\n\t function shapeCheckGetter(shape, nonObject) {\n\t var shapeTypes = {};\n\t each(shape, function (checker, prop) {\n\t shapeTypes[prop] = getCheckerDisplay(checker);\n\t });\n\t function type() {\n\t var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n\t var ret = {};\n\t var terse = options.terse;\n\t var obj = options.obj;\n\t var addHelpers = options.addHelpers;\n\n\t var parentRequired = options.required;\n\t each(shape, function (checker, prop) {\n\t /* eslint complexity:[2, 6] */\n\t var specified = obj && obj.hasOwnProperty(prop);\n\t var required = undef(parentRequired) ? !checker.isOptional : parentRequired;\n\t if (!terse || (specified || !checker.isOptional)) {\n\t ret[prop] = getCheckerDisplay(checker, { terse: terse, obj: obj && obj[prop], required: required, addHelpers: addHelpers });\n\t }\n\t if (addHelpers) {\n\t modifyTypeDisplayToHelpOut(ret, prop, specified, checker, required);\n\t }\n\t });\n\t return ret;\n\n\t function modifyTypeDisplayToHelpOut(theRet, prop, specified, checker, required) {\n\t if (!specified && required && !checker.isOptional) {\n\t var item = 'ITEM';\n\t if (checker.type && checker.type.__apiCheckData) {\n\t item = checker.type.__apiCheckData.type.toUpperCase();\n\t }\n\t addHelper('missing', 'MISSING THIS ' + item, ' <-- YOU ARE MISSING THIS');\n\t } else if (specified) {\n\t var error = checker(obj[prop], prop, null, obj);\n\t if (isError(error)) {\n\t addHelper('error', 'THIS IS THE PROBLEM: ' + error.message, ' <-- THIS IS THE PROBLEM: ' + error.message);\n\t }\n\t }\n\n\t function addHelper(property, objectMessage, stringMessage) {\n\t if (typeof theRet[prop] === 'string') {\n\t theRet[prop] += stringMessage;\n\t } else {\n\t theRet[prop].__apiCheckData[property] = objectMessage;\n\t }\n\t }\n\t }\n\t }\n\n\t type.__apiCheckData = { strict: false, optional: false, type: 'shape' };\n\t var shapeChecker = setupChecker(function shapeCheckerDefinition(val, name, location) {\n\t /* eslint complexity:[2, 6] */\n\t var isObject = !nonObject && checkers.object(val, name, location);\n\t if (isError(isObject)) {\n\t return isObject;\n\t }\n\t var shapePropError = undefined;\n\t location = location ? location + (name ? '/' : '') : '';\n\t name = name || '';\n\t each(shape, function (checker, prop) {\n\t if (val.hasOwnProperty(prop) || !checker.isOptional) {\n\t shapePropError = checker(val[prop], prop, '' + location + name, val);\n\t return !isError(shapePropError);\n\t }\n\t });\n\t if (isError(shapePropError)) {\n\t return shapePropError;\n\t }\n\t }, { type: type, shortType: 'shape' }, disabled);\n\n\t function strictType() {\n\t return type.apply(undefined, arguments);\n\t }\n\n\t strictType.__apiCheckData = copy(shapeChecker.type.__apiCheckData);\n\t strictType.__apiCheckData.strict = true;\n\t shapeChecker.strict = setupChecker(function strictShapeCheckerDefinition(val, name, location) {\n\t var shapeError = shapeChecker(val, name, location);\n\t if (isError(shapeError)) {\n\t return shapeError;\n\t }\n\t var allowedProperties = Object.keys(shape);\n\t var extraProps = Object.keys(val).filter(function (prop) {\n\t return allowedProperties.indexOf(prop) === -1;\n\t });\n\t if (extraProps.length) {\n\t return new Error(nAtL(name, location) + ' cannot have extra properties: ' + t(extraProps.join('`, `')) + '.' + ('It is limited to ' + t(allowedProperties.join('`, `'))));\n\t }\n\t }, { type: strictType, shortType: 'strict shape' }, disabled);\n\n\t return shapeChecker;\n\t }\n\n\t shapeCheckGetter.ifNot = function ifNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = 'specified only if ' + otherProps[0] + ' is not specified';\n\t } else {\n\t description = 'specified only if none of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t }\n\t var shortType = 'ifNot[' + otherProps.join(', ') + ']';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function ifNotChecker(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (propExists === otherPropsExist) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { notRequired: true, type: type, shortType: shortType }, disabled);\n\t };\n\n\t shapeCheckGetter.onlyIf = function onlyIf(otherProps, propChecker) {\n\t otherProps = arrayify(otherProps);\n\t var description = undefined;\n\t if (otherProps.length === 1) {\n\t description = 'specified only if ' + otherProps[0] + ' is also specified';\n\t } else {\n\t description = 'specified only if all of the following are specified: [' + list(otherProps, ', ', 'and ') + ']';\n\t }\n\t var shortType = 'onlyIf[' + otherProps.join(', ') + ']';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function onlyIfCheckerDefinition(prop, propName, location, obj) {\n\t var othersPresent = otherProps.every(function (property) {\n\t return obj.hasOwnProperty(property);\n\t });\n\t if (!othersPresent) {\n\t return getError(propName, location, type);\n\t } else {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, shortType: shortType }, disabled);\n\t };\n\n\t shapeCheckGetter.requiredIfNot = function shapeRequiredIfNot(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t return getRequiredIfNotChecker(false, otherProps, propChecker);\n\t };\n\n\t shapeCheckGetter.requiredIfNot.all = function shapeRequiredIfNotAll(otherProps, propChecker) {\n\t if (!Array.isArray(otherProps)) {\n\t throw new Error('requiredIfNot.all must be passed an array');\n\t }\n\t return getRequiredIfNotChecker(true, otherProps, propChecker);\n\t };\n\n\t function getRequiredIfNotChecker(all, otherProps, propChecker) {\n\t var props = t(otherProps.join(', '));\n\t var ifProps = 'if ' + (all ? 'all of' : 'at least one of');\n\t var description = 'specified ' + ifProps + ' these are not specified: ' + props + ' (otherwise it\\'s optional)';\n\t var shortType = 'requiredIfNot' + (all ? '.all' : '') + '[' + otherProps.join(', ') + '}]';\n\t var type = getTypeForShapeChild(propChecker, description, shortType);\n\t return setupChecker(function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var iteration = all ? 'every' : 'some';\n\t var otherPropsExist = otherProps[iteration](function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (!otherPropsExist && !propExists) {\n\t return getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }, { type: type, notRequired: true }, disabled);\n\t }\n\n\t return shapeCheckGetter;\n\n\t function getTypeForShapeChild(propChecker, description, shortType) {\n\t function type(options) {\n\t if (options && options.short) {\n\t return shortType;\n\t }\n\t return getCheckerDisplay(propChecker);\n\t }\n\t type.__apiCheckData = { optional: false, type: 'ifNot', description: description };\n\t return type;\n\t }\n\t }\n\n\t function argumentsCheckerGetter() {\n\t var type = 'function arguments';\n\t return setupChecker(function argsCheckerDefinition(val, name, location) {\n\t if (Array.isArray(val) || isError(checkers.object(val)) || isError(checkers.number(val.length))) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function anyCheckGetter() {\n\t return setupChecker(function anyCheckerDefinition() {\n\t // don't do anything\n\t }, { type: 'any' }, disabled);\n\t }\n\n\t function nullCheckGetter() {\n\t var type = 'null';\n\t return setupChecker(function nullChecker(val, name, location) {\n\t if (val !== null) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function rangeCheckGetter(min, max) {\n\t var type = 'Range (' + min + ' - ' + max + ')';\n\t return setupChecker(function rangeChecker(val, name, location) {\n\t if (typeof val !== 'number' || val < min || val > max) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function lessThanCheckGetter(min) {\n\t var type = 'lessThan[' + min + ']';\n\t return setupChecker(function lessThanChecker(val, name, location) {\n\t if (typeof val !== 'number' || val > min) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function greaterThanCheckGetter(max) {\n\t var type = 'greaterThan[' + max + ']';\n\t return setupChecker(function greaterThanChecker(val, name, location) {\n\t if (typeof val !== 'number' || val < max) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\n\t function emptyObjectCheckGetter() {\n\t var type = 'empty object';\n\t return setupChecker(function emptyObjectChecker(val, name, location) {\n\t if (typeOf(val) !== 'object' || val === null || Object.keys(val).length) {\n\t return getError(name, location, type);\n\t }\n\t }, { type: type }, disabled);\n\t }\n\t}\n\n/***/ }\n/******/ ])\n});\n;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2FwaS1jaGVjay9kaXN0L2FwaS1jaGVjay5qcz83ZWE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxvQ0FBb0M7QUFDcEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGLHVDQUF1Qyx1Q0FBdUMsa0JBQWtCOztBQUVoRzs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWTtBQUNaLEVBQUU7QUFDRjs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBLHdFQUF3RTtBQUN4RSwrRUFBK0U7O0FBRS9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7O0FBRUo7O0FBRUE7QUFDQTtBQUNBLGNBQWMsTUFBTTtBQUNwQixjQUFjLE1BQU07QUFDcEIsY0FBYyxPQUFP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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEdBQUcsYUFBYTtBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEdBQUcsYUFBYTtBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEdBQUcsYUFBYTtBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiMi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vISBhcGktY2hlY2sgdmVyc2lvbiA3LjUuNSBidWlsdCB3aXRoIOKZpSBieSBLZW50IEMuIERvZGRzIDxrZW50QGRvZGRzZmFtaWx5LnVzPiAoaHR0cDovL2tlbnQuZG9kZHNmYW1pbHkudXMpICjDsyDDrF/DrSk9w7PDsj0ow6xfw60gw7IpXG5cbihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiYXBpQ2hlY2tcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiYXBpQ2hlY2tcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fSxcbi8qKioqKiovIFx0XHRcdGlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGxvYWRlZDogZmFsc2Vcbi8qKioqKiovIFx0XHR9O1xuXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuXG5cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cblx0dmFyIF9hcGlDaGVjayA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cblx0dmFyIF9hcGlDaGVjazIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hcGlDaGVjayk7XG5cblx0ZXhwb3J0c1snZGVmYXVsdCddID0gX2FwaUNoZWNrMlsnZGVmYXVsdCddO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgc3RyaW5naWZ5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0dmFyIGFwaUNoZWNrVXRpbCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdHZhciBlYWNoID0gYXBpQ2hlY2tVdGlsLmVhY2g7XG5cdHZhciBpc0Vycm9yID0gYXBpQ2hlY2tVdGlsLmlzRXJyb3I7XG5cdHZhciB0ID0gYXBpQ2hlY2tVdGlsLnQ7XG5cdHZhciBhcnJheWlmeSA9IGFwaUNoZWNrVXRpbC5hcnJheWlmeTtcblx0dmFyIGdldENoZWNrZXJEaXNwbGF5ID0gYXBpQ2hlY2tVdGlsLmdldENoZWNrZXJEaXNwbGF5O1xuXHR2YXIgdHlwZU9mID0gYXBpQ2hlY2tVdGlsLnR5cGVPZjtcblx0dmFyIGdldEVycm9yID0gYXBpQ2hlY2tVdGlsLmdldEVycm9yO1xuXG5cdHZhciBjaGVja2VycyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdHZhciBhcGlDaGVja0FwaXMgPSBnZXRBcGlDaGVja0FwaXMoKTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldEFwaUNoZWNrSW5zdGFuY2U7XG5cdG1vZHVsZS5leHBvcnRzLlZFUlNJT04gPSAoXCI3LjUuNVwiKTtcblx0bW9kdWxlLmV4cG9ydHMudXRpbHMgPSBhcGlDaGVja1V0aWw7XG5cdG1vZHVsZS5leHBvcnRzLmdsb2JhbENvbmZpZyA9IHtcblx0ICB2ZXJib3NlOiBmYWxzZSxcblx0ICBkaXNhYmxlZDogZmFsc2Vcblx0fTtcblxuXHR2YXIgYXBpQ2hlY2tBcGlDaGVjayA9IGdldEFwaUNoZWNrSW5zdGFuY2Uoe1xuXHQgIG91dHB1dDogeyBwcmVmaXg6ICdhcGlDaGVjaycgfVxuXHR9KTtcblx0bW9kdWxlLmV4cG9ydHMuaW50ZXJuYWxDaGVja2VyID0gYXBpQ2hlY2tBcGlDaGVjaztcblxuXHRlYWNoKGNoZWNrZXJzLCBmdW5jdGlvbiAoY2hlY2tlciwgbmFtZSkge1xuXHQgIHJldHVybiBtb2R1bGUuZXhwb3J0c1tuYW1lXSA9IGNoZWNrZXI7XG5cdH0pO1xuXG5cdGZ1bmN0aW9uIGdldEFwaUNoZWNrSW5zdGFuY2UoKSB7XG5cdCAgdmFyIGNvbmZpZyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXHQgIHZhciBleHRyYUNoZWNrZXJzID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMV07XG5cblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgNl0gKi9cblx0ICBpZiAoYXBpQ2hlY2tBcGlDaGVjayAmJiBhcmd1bWVudHMubGVuZ3RoKSB7XG5cdCAgICBhcGlDaGVja0FwaUNoZWNrWyd0aHJvdyddKGFwaUNoZWNrQXBpcy5nZXRBcGlDaGVja0luc3RhbmNlQ2hlY2tlcnMsIGFyZ3VtZW50cywge1xuXHQgICAgICBwcmVmaXg6ICdjcmVhdGluZyBhbiBhcGlDaGVjayBpbnN0YW5jZSdcblx0ICAgIH0pO1xuXHQgIH1cblxuXHQgIHZhciBhZGRpdGlvbmFsUHJvcGVydGllcyA9IHtcblx0ICAgICd0aHJvdyc6IGdldEFwaUNoZWNrKHRydWUpLFxuXHQgICAgd2FybjogZ2V0QXBpQ2hlY2soZmFsc2UpLFxuXHQgICAgZ2V0RXJyb3JNZXNzYWdlOiBnZXRFcnJvck1lc3NhZ2UsXG5cdCAgICBoYW5kbGVFcnJvck1lc3NhZ2U6IGhhbmRsZUVycm9yTWVzc2FnZSxcblx0ICAgIGNvbmZpZzoge1xuXHQgICAgICBvdXRwdXQ6IGNvbmZpZy5vdXRwdXQgfHwge1xuXHQgICAgICAgIHByZWZpeDogJycsXG5cdCAgICAgICAgc3VmZml4OiAnJyxcblx0ICAgICAgICBkb2NzQmFzZVVybDogJydcblx0ICAgICAgfSxcblx0ICAgICAgdmVyYm9zZTogY29uZmlnLnZlcmJvc2UgfHwgZmFsc2UsXG5cdCAgICAgIGRpc2FibGVkOiBjb25maWcuZGlzYWJsZWQgfHwgZmFsc2Vcblx0ICAgIH0sXG5cdCAgICB1dGlsczogYXBpQ2hlY2tVdGlsXG5cdCAgfTtcblxuXHQgIGVhY2goYWRkaXRpb25hbFByb3BlcnRpZXMsIGZ1bmN0aW9uICh3cmFwcGVyLCBuYW1lKSB7XG5cdCAgICByZXR1cm4gYXBpQ2hlY2tbbmFtZV0gPSB3cmFwcGVyO1xuXHQgIH0pO1xuXG5cdCAgdmFyIGRpc2FibGVkID0gYXBpQ2hlY2suZGlzYWJsZWQgfHwgbW9kdWxlLmV4cG9ydHMuZ2xvYmFsQ29uZmlnLmRpc2FibGVkO1xuXHQgIGVhY2goY2hlY2tlcnMuZ2V0Q2hlY2tlcnMoZGlzYWJsZWQpLCBmdW5jdGlvbiAoY2hlY2tlciwgbmFtZSkge1xuXHQgICAgcmV0dXJuIGFwaUNoZWNrW25hbWVdID0gY2hlY2tlcjtcblx0ICB9KTtcblx0ICBlYWNoKGV4dHJhQ2hlY2tlcnMsIGZ1bmN0aW9uIChjaGVja2VyLCBuYW1lKSB7XG5cdCAgICByZXR1cm4gYXBpQ2hlY2tbbmFtZV0gPSBjaGVja2VyO1xuXHQgIH0pO1xuXG5cdCAgcmV0dXJuIGFwaUNoZWNrO1xuXG5cdCAgLyoqXG5cdCAgICogVGhpcyBpcyB0aGUgaW5zdGFuY2UgZnVuY3Rpb24uIE90aGVyIHRoaW5ncyBhcmUgYXR0YWNoZWQgdG8gdGhpcyBzZWUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGFib3ZlLlxuXHQgICAqIEBwYXJhbSB7QXJyYXl9IGFwaSAtIHRoZSBjaGVja2VycyB0byBjaGVjayB3aXRoXG5cdCAgICogQHBhcmFtIHtBcnJheX0gYXJncyAtIHRoZSBhcmdzIHRvIGNoZWNrXG5cdCAgICogQHBhcmFtIHtPYmplY3R9IG91dHB1dCAtIG91dHB1dCBvcHRpb25zXG5cdCAgICogQHJldHVybnMge09iamVjdH0gLSBpZiB0aGlzIGhhcyBhIGZhaWxlZCA9IHRydWUgcHJvcGVydHksIHRoZW4gaXQgZmFpbGVkXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gYXBpQ2hlY2soYXBpLCBhcmdzLCBvdXRwdXQpIHtcblx0ICAgIC8qIGVzbGludCBjb21wbGV4aXR5OlsyLCA4XSAqL1xuXHQgICAgaWYgKGFwaUNoZWNrLmNvbmZpZy5kaXNhYmxlZCB8fCBtb2R1bGUuZXhwb3J0cy5nbG9iYWxDb25maWcuZGlzYWJsZWQpIHtcblx0ICAgICAgcmV0dXJuIHtcblx0ICAgICAgICBhcGlUeXBlczoge30sIGFyZ1R5cGVzOiB7fSxcblx0ICAgICAgICBwYXNzZWQ6IHRydWUsIG1lc3NhZ2U6ICcnLFxuXHQgICAgICAgIGZhaWxlZDogZmFsc2Vcblx0ICAgICAgfTsgLy8gZW1wdHkgdmVyc2lvbiBvZiB3aGF0IGlzIG5vcm1hbGx5IHJldHVybmVkXG5cdCAgICB9XG5cdCAgICBjaGVja0FwaUNoZWNrQXBpKGFyZ3VtZW50cyk7XG5cdCAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXBpKSkge1xuXHQgICAgICBhcGkgPSBbYXBpXTtcblx0ICAgICAgYXJncyA9IFthcmdzXTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIC8vIHR1cm4gYXJndW1lbnRzIGludG8gYW4gYXJyYXlcblx0ICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpO1xuXHQgICAgfVxuXHQgICAgdmFyIG1lc3NhZ2VzID0gY2hlY2tFbm91Z2hBcmdzKGFwaSwgYXJncyk7XG5cdCAgICBpZiAoIW1lc3NhZ2VzLmxlbmd0aCkge1xuXHQgICAgICAvLyB0aGlzIGlzIHdoZXJlIHdlIGFjdHVhbGx5IGdvIHBlcmZvcm0gdGhlIGNoZWNrcy5cblx0ICAgICAgbWVzc2FnZXMgPSBjaGVja0FwaVdpdGhBcmdzKGFwaSwgYXJncyk7XG5cdCAgICB9XG5cblx0ICAgIHZhciByZXR1cm5PYmplY3QgPSBnZXRUeXBlcyhhcGksIGFyZ3MpO1xuXHQgICAgcmV0dXJuT2JqZWN0LmFyZ3MgPSBhcmdzO1xuXHQgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCkge1xuXHQgICAgICByZXR1cm5PYmplY3QubWVzc2FnZSA9IGFwaUNoZWNrLmdldEVycm9yTWVzc2FnZShhcGksIGFyZ3MsIG1lc3NhZ2VzLCBvdXRwdXQpO1xuXHQgICAgICByZXR1cm5PYmplY3QuZmFpbGVkID0gdHJ1ZTtcblx0ICAgICAgcmV0dXJuT2JqZWN0LnBhc3NlZCA9IGZhbHNlO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuT2JqZWN0Lm1lc3NhZ2UgPSAnJztcblx0ICAgICAgcmV0dXJuT2JqZWN0LmZhaWxlZCA9IGZhbHNlO1xuXHQgICAgICByZXR1cm5PYmplY3QucGFzc2VkID0gdHJ1ZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiByZXR1cm5PYmplY3Q7XG5cdCAgfVxuXG5cdCAgLyoqXG5cdCAgICogY2hlY2tBcGlDaGVja0FwaSwgc2hvdWxkIGJlIHJlYWQgbGlrZTogY2hlY2sgYXBpQ2hlY2sgYXBpLiBBcyBpbiwgY2hlY2sgdGhlIGFwaSBmb3IgYXBpQ2hlY2sgOi0pXG5cdCAgICogQHBhcmFtIHtBcnJheX0gY2hlY2tBcGlBcmdzIC0gYXJncyBwcm92aWRlZCB0byBhcGlDaGVjayBmdW5jdGlvblxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIGNoZWNrQXBpQ2hlY2tBcGkoY2hlY2tBcGlBcmdzKSB7XG5cdCAgICB2YXIgYXBpID0gY2hlY2tBcGlBcmdzWzBdO1xuXHQgICAgdmFyIGFyZ3MgPSBjaGVja0FwaUFyZ3NbMV07XG5cdCAgICB2YXIgaXNBcnJheU9yQXJncyA9IEFycmF5LmlzQXJyYXkoYXJncykgfHwgYXJncyAmJiB0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGFyZ3MubGVuZ3RoID09PSAnbnVtYmVyJztcblxuXHQgICAgaWYgKEFycmF5LmlzQXJyYXkoYXBpKSAmJiAhaXNBcnJheU9yQXJncykge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoZ2V0RXJyb3JNZXNzYWdlKGFwaSwgW2FyZ3NdLCBbJ0lmIGFuIGFycmF5IGlzIHByb3ZpZGVkIGZvciB0aGUgYXBpLCBhbiBhcnJheSBtdXN0IGJlIHByb3ZpZGVkIGZvciB0aGUgYXJncyBhcyB3ZWxsLiddLCB7IHByZWZpeDogJ2FwaUNoZWNrJyB9KSk7XG5cdCAgICB9XG5cdCAgICAvLyBkb2cgZm9vZGluZyBoZXJlXG5cdCAgICB2YXIgZXJyb3JzID0gY2hlY2tBcGlXaXRoQXJncyhhcGlDaGVja0FwaXMuY2hlY2tBcGlDaGVja0FwaSwgY2hlY2tBcGlBcmdzKTtcblx0ICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG5cdCAgICAgIHZhciBtZXNzYWdlID0gYXBpQ2hlY2suZ2V0RXJyb3JNZXNzYWdlKGFwaUNoZWNrQXBpcy5jaGVja0FwaUNoZWNrQXBpLCBjaGVja0FwaUFyZ3MsIGVycm9ycywge1xuXHQgICAgICAgIHByZWZpeDogJ2FwaUNoZWNrJ1xuXHQgICAgICB9KTtcblx0ICAgICAgYXBpQ2hlY2suaGFuZGxlRXJyb3JNZXNzYWdlKG1lc3NhZ2UsIHRydWUpO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldEFwaUNoZWNrKHNob3VsZFRocm93KSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gYXBpQ2hlY2tXcmFwcGVyKGFwaSwgYXJncywgb3V0cHV0KSB7XG5cdCAgICAgIHZhciByZXN1bHQgPSBhcGlDaGVjayhhcGksIGFyZ3MsIG91dHB1dCk7XG5cdCAgICAgIGFwaUNoZWNrLmhhbmRsZUVycm9yTWVzc2FnZShyZXN1bHQubWVzc2FnZSwgc2hvdWxkVGhyb3cpO1xuXHQgICAgICByZXR1cm4gcmVzdWx0OyAvLyB3b250IGdldCBoZXJlIGlmIGFuIGVycm9yIGlzIHRocm93blxuXHQgICAgfTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBoYW5kbGVFcnJvck1lc3NhZ2UobWVzc2FnZSwgc2hvdWxkVGhyb3cpIHtcblx0ICAgIGlmIChzaG91bGRUaHJvdyAmJiBtZXNzYWdlKSB7XG5cdCAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcblx0ICAgIH0gZWxzZSBpZiAobWVzc2FnZSkge1xuXHQgICAgICAvKiBlc2xpbnQgbm8tY29uc29sZTowICovXG5cdCAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICBmdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UoYXBpLCBhcmdzKSB7XG5cdCAgICB2YXIgbWVzc2FnZXMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyBbXSA6IGFyZ3VtZW50c1syXTtcblx0ICAgIHZhciBvdXRwdXQgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDMgfHwgYXJndW1lbnRzWzNdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1szXTtcblxuXHQgICAgdmFyIGdPdXQgPSBhcGlDaGVjay5jb25maWcub3V0cHV0IHx8IHt9O1xuXHQgICAgdmFyIHByZWZpeCA9IGdldFByZWZpeCgpO1xuXHQgICAgdmFyIHN1ZmZpeCA9IGdldFN1ZmZpeCgpO1xuXHQgICAgdmFyIHVybCA9IGdldFVybCgpO1xuXHQgICAgdmFyIG1lc3NhZ2UgPSAnYXBpQ2hlY2sgZmFpbGVkISAnICsgbWVzc2FnZXMuam9pbignLCAnKTtcblx0ICAgIHZhciBwYXNzZWRBbmRTaG91bGRIYXZlUGFzc2VkID0gJ1xcblxcbicgKyBidWlsZE1lc3NhZ2VGcm9tQXBpQW5kQXJncyhhcGksIGFyZ3MpO1xuXHQgICAgcmV0dXJuIChwcmVmaXggKyAnICcgKyBtZXNzYWdlICsgJyAnICsgc3VmZml4ICsgJyAnICsgKHVybCB8fCAnJykgKyBwYXNzZWRBbmRTaG91bGRIYXZlUGFzc2VkKS50cmltKCk7XG5cblx0ICAgIGZ1bmN0aW9uIGdldFByZWZpeCgpIHtcblx0ICAgICAgdmFyIHAgPSBvdXRwdXQub25seVByZWZpeDtcblx0ICAgICAgaWYgKCFwKSB7XG5cdCAgICAgICAgcCA9ICgoZ091dC5wcmVmaXggfHwgJycpICsgJyAnICsgKG91dHB1dC5wcmVmaXggfHwgJycpKS50cmltKCk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHA7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGdldFN1ZmZpeCgpIHtcblx0ICAgICAgdmFyIHMgPSBvdXRwdXQub25seVN1ZmZpeDtcblx0ICAgICAgaWYgKCFzKSB7XG5cdCAgICAgICAgcyA9ICgob3V0cHV0LnN1ZmZpeCB8fCAnJykgKyAnICcgKyAoZ091dC5zdWZmaXggfHwgJycpKS50cmltKCk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHM7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGdldFVybCgpIHtcblx0ICAgICAgdmFyIHUgPSBvdXRwdXQudXJsO1xuXHQgICAgICBpZiAoIXUpIHtcblx0ICAgICAgICB1ID0gZ091dC5kb2NzQmFzZVVybCAmJiBvdXRwdXQudXJsU3VmZml4ICYmICgnJyArIGdPdXQuZG9jc0Jhc2VVcmwgKyBvdXRwdXQudXJsU3VmZml4KS50cmltKCk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHU7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gYnVpbGRNZXNzYWdlRnJvbUFwaUFuZEFyZ3MoYXBpLCBhcmdzKSB7XG5cdCAgICB2YXIgX2dldFR5cGVzID0gZ2V0VHlwZXMoYXBpLCBhcmdzKTtcblxuXHQgICAgdmFyIGFwaVR5cGVzID0gX2dldFR5cGVzLmFwaVR5cGVzO1xuXHQgICAgdmFyIGFyZ1R5cGVzID0gX2dldFR5cGVzLmFyZ1R5cGVzO1xuXG5cdCAgICB2YXIgY29weSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MgfHwgW10pO1xuXHQgICAgdmFyIHJlcGxhY2VkSXRlbXMgPSBbXTtcblx0ICAgIHJlcGxhY2VGdW5jdGlvbldpdGhOYW1lKGNvcHkpO1xuXHQgICAgdmFyIHBhc3NlZEFyZ3MgPSBnZXRPYmplY3RTdHJpbmcoY29weSk7XG5cdCAgICBhcmdUeXBlcyA9IGdldE9iamVjdFN0cmluZyhhcmdUeXBlcyk7XG5cdCAgICBhcGlUeXBlcyA9IGdldE9iamVjdFN0cmluZyhhcGlUeXBlcyk7XG5cblx0ICAgIHJldHVybiBnZW5lcmF0ZU1lc3NhZ2UoKTtcblxuXHQgICAgLy8gZnVuY3Rpb25zXG5cblx0ICAgIGZ1bmN0aW9uIHJlcGxhY2VGdW5jdGlvbldpdGhOYW1lKG9iaikge1xuXHQgICAgICBlYWNoKG9iaiwgZnVuY3Rpb24gKHZhbCwgbmFtZSkge1xuXHQgICAgICAgIC8qIGVzbGludCBjb21wbGV4aXR5OlsyLCA2XSAqL1xuXHQgICAgICAgIGlmIChyZXBsYWNlZEl0ZW1zLmluZGV4T2YodmFsKSA9PT0gLTEpIHtcblx0ICAgICAgICAgIC8vIGF2b2lkIHJlY3Vyc2l2ZSBwcm9ibGVtc1xuXHQgICAgICAgICAgcmVwbGFjZWRJdGVtcy5wdXNoKHZhbCk7XG5cdCAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcblx0ICAgICAgICAgICAgcmVwbGFjZUZ1bmN0aW9uV2l0aE5hbWUob2JqKTtcblx0ICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgICAgICBvYmpbbmFtZV0gPSB2YWwuZGlzcGxheU5hbWUgfHwgdmFsLm5hbWUgfHwgJ2Fub255bW91cyBmdW5jdGlvbic7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9KTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gZ2V0T2JqZWN0U3RyaW5nKHR5cGVzKSB7XG5cdCAgICAgIGlmICghdHlwZXMgfHwgIXR5cGVzLmxlbmd0aCkge1xuXHQgICAgICAgIHJldHVybiAnbm90aGluZyc7XG5cdCAgICAgIH0gZWxzZSBpZiAodHlwZXMgJiYgdHlwZXMubGVuZ3RoID09PSAxKSB7XG5cdCAgICAgICAgdHlwZXMgPSB0eXBlc1swXTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gc3RyaW5naWZ5KHR5cGVzLCBudWxsLCAyKTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gZ2VuZXJhdGVNZXNzYWdlKCkge1xuXHQgICAgICB2YXIgbiA9ICdcXG4nO1xuXHQgICAgICB2YXIgdXNlUyA9IHRydWU7XG5cdCAgICAgIGlmIChhcmdzICYmIGFyZ3MubGVuZ3RoID09PSAxKSB7XG5cdCAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnb2JqZWN0JyAmJiBhcmdzWzBdICE9PSBudWxsKSB7XG5cdCAgICAgICAgICB1c2VTID0gISFPYmplY3Qua2V5cyhhcmdzWzBdKS5sZW5ndGg7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHVzZVMgPSBmYWxzZTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHR5cGVzID0gJ3R5cGUnICsgKHVzZVMgPyAncycgOiAnJyk7XG5cdCAgICAgIHZhciBuZXdMaW5lID0gbiArIG47XG5cdCAgICAgIHJldHVybiAnWW91IHBhc3NlZDonICsgbiArIHBhc3NlZEFyZ3MgKyBuZXdMaW5lICsgKCdXaXRoIHRoZSAnICsgdHlwZXMgKyAnOicgKyBuICsgYXJnVHlwZXMgKyBuZXdMaW5lKSArICgnVGhlIEFQSSBjYWxscyBmb3I6JyArIG4gKyBhcGlUeXBlcyk7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0VHlwZXMoYXBpLCBhcmdzKSB7XG5cdCAgICBhcGkgPSBhcnJheWlmeShhcGkpO1xuXHQgICAgYXJncyA9IGFycmF5aWZ5KGFyZ3MpO1xuXHQgICAgdmFyIGFwaVR5cGVzID0gYXBpLm1hcChmdW5jdGlvbiAoY2hlY2tlciwgaW5kZXgpIHtcblx0ICAgICAgdmFyIHNwZWNpZmllZCA9IG1vZHVsZS5leHBvcnRzLmdsb2JhbENvbmZpZy5oYXNPd25Qcm9wZXJ0eSgndmVyYm9zZScpO1xuXHQgICAgICByZXR1cm4gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwge1xuXHQgICAgICAgIHRlcnNlOiBzcGVjaWZpZWQgPyAhbW9kdWxlLmV4cG9ydHMuZ2xvYmFsQ29uZmlnLnZlcmJvc2UgOiAhYXBpQ2hlY2suY29uZmlnLnZlcmJvc2UsXG5cdCAgICAgICAgb2JqOiBhcmdzW2luZGV4XSxcblx0ICAgICAgICBhZGRIZWxwZXJzOiB0cnVlXG5cdCAgICAgIH0pO1xuXHQgICAgfSk7XG5cdCAgICB2YXIgYXJnVHlwZXMgPSBhcmdzLm1hcChmdW5jdGlvbiAoYXJnKSB7XG5cdCAgICAgIHJldHVybiBnZXRBcmdEaXNwbGF5KGFyZywgW10pO1xuXHQgICAgfSk7XG5cdCAgICByZXR1cm4geyBhcmdUeXBlczogYXJnVHlwZXMsIGFwaVR5cGVzOiBhcGlUeXBlcyB9O1xuXHQgIH1cblx0fVxuXG5cdC8vIFNUQVRFTEVTUyBGVU5DVElPTlNcblxuXHQvKipcblx0ICogVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyBmb3IgYWN0dWFsbHkgY2hlY2tpbmcgdGhlIGFyZ3VtZW50cyB3aXRoIHRoZSBhcGkuXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFwaSAtIGNoZWNrZXJzXG5cdCAqIEBwYXJhbSAge0FycmF5fSBhcmdzIC0gYW5kIGFyZ3VtZW50cyBvYmplY3Rcblx0ICogQHJldHVybnMge0FycmF5fSAtIHRoZSBlcnJvciBtZXNzYWdlc1xuXHQgKi9cblx0ZnVuY3Rpb24gY2hlY2tBcGlXaXRoQXJncyhhcGksIGFyZ3MpIHtcblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgN10gKi9cblx0ICB2YXIgbWVzc2FnZXMgPSBbXTtcblx0ICB2YXIgZmFpbGVkID0gZmFsc2U7XG5cdCAgdmFyIGNoZWNrZXJJbmRleCA9IDA7XG5cdCAgdmFyIGFyZ0luZGV4ID0gMDtcblx0ICB2YXIgYXJnID0gdW5kZWZpbmVkLFxuXHQgICAgICBjaGVja2VyID0gdW5kZWZpbmVkLFxuXHQgICAgICByZXMgPSB1bmRlZmluZWQsXG5cdCAgICAgIGxhc3RDaGVja2VyID0gdW5kZWZpbmVkLFxuXHQgICAgICBhcmdOYW1lID0gdW5kZWZpbmVkLFxuXHQgICAgICBhcmdGYWlsZWQgPSB1bmRlZmluZWQsXG5cdCAgICAgIHNraXBQcmV2aW91c0NoZWNrZXIgPSB1bmRlZmluZWQ7XG5cdCAgLyoganNoaW50IC1XMDg0ICovXG5cdCAgd2hpbGUgKChjaGVja2VyID0gYXBpW2NoZWNrZXJJbmRleCsrXSkgJiYgYXJnSW5kZXggPCBhcmdzLmxlbmd0aCkge1xuXHQgICAgYXJnID0gYXJnc1thcmdJbmRleCsrXTtcblx0ICAgIGFyZ05hbWUgPSAnQXJndW1lbnQgJyArIGFyZ0luZGV4ICsgKGNoZWNrZXIuaXNPcHRpb25hbCA/ICcgKG9wdGlvbmFsKScgOiAnJyk7XG5cdCAgICByZXMgPSBjaGVja2VyKGFyZywgJ3ZhbHVlJywgYXJnTmFtZSk7XG5cdCAgICBhcmdGYWlsZWQgPSBpc0Vycm9yKHJlcyk7XG5cdCAgICBsYXN0Q2hlY2tlciA9IGNoZWNrZXJJbmRleCA+PSBhcGkubGVuZ3RoO1xuXHQgICAgc2tpcFByZXZpb3VzQ2hlY2tlciA9IGNoZWNrZXJJbmRleCA+IDEgJiYgYXBpW2NoZWNrZXJJbmRleCAtIDFdLmlzT3B0aW9uYWw7XG5cdCAgICBpZiAoYXJnRmFpbGVkICYmIGxhc3RDaGVja2VyIHx8IGFyZ0ZhaWxlZCAmJiAhbGFzdENoZWNrZXIgJiYgIWNoZWNrZXIuaXNPcHRpb25hbCAmJiAhc2tpcFByZXZpb3VzQ2hlY2tlcikge1xuXHQgICAgICBmYWlsZWQgPSB0cnVlO1xuXHQgICAgICBtZXNzYWdlcy5wdXNoKGdldENoZWNrZXJFcnJvck1lc3NhZ2UocmVzLCBjaGVja2VyLCBhcmcpKTtcblx0ICAgIH0gZWxzZSBpZiAoYXJnRmFpbGVkICYmIGNoZWNrZXIuaXNPcHRpb25hbCkge1xuXHQgICAgICBhcmdJbmRleC0tO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgbWVzc2FnZXMucHVzaCh0KGFyZ05hbWUpICsgJyBwYXNzZWQnKTtcblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuIGZhaWxlZCA/IG1lc3NhZ2VzIDogW107XG5cdH1cblxuXHRjaGVja2VyVHlwZVR5cGUudHlwZSA9ICdmdW5jdGlvbiB3aXRoIF9fYXBpQ2hlY2tEYXRhIHByb3BlcnR5IGFuZCBgJHtmdW5jdGlvbi50eXBlfWAgcHJvcGVydHknO1xuXHRmdW5jdGlvbiBjaGVja2VyVHlwZVR5cGUoY2hlY2tlclR5cGUsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgdmFyIGFwaUNoZWNrRGF0YUNoZWNrZXIgPSBjaGVja2Vycy5zaGFwZSh7XG5cdCAgICB0eXBlOiBjaGVja2Vycy5zdHJpbmcsXG5cdCAgICBvcHRpb25hbDogY2hlY2tlcnMuYm9vbFxuXHQgIH0pO1xuXHQgIHZhciBhc0Z1bmMgPSBjaGVja2Vycy5mdW5jLndpdGhQcm9wZXJ0aWVzKHsgX19hcGlDaGVja0RhdGE6IGFwaUNoZWNrRGF0YUNoZWNrZXIgfSk7XG5cdCAgdmFyIGFzU2hhcGUgPSBjaGVja2Vycy5zaGFwZSh7IF9fYXBpQ2hlY2tEYXRhOiBhcGlDaGVja0RhdGFDaGVja2VyIH0pO1xuXHQgIHZhciB3cm9uZ1NoYXBlID0gY2hlY2tlcnMub25lT2ZUeXBlKFthc0Z1bmMsIGFzU2hhcGVdKShjaGVja2VyVHlwZSwgbmFtZSwgbG9jYXRpb24pO1xuXHQgIGlmIChpc0Vycm9yKHdyb25nU2hhcGUpKSB7XG5cdCAgICByZXR1cm4gd3JvbmdTaGFwZTtcblx0ICB9XG5cdCAgaWYgKHR5cGVvZiBjaGVja2VyVHlwZSAhPT0gJ2Z1bmN0aW9uJyAmJiAhY2hlY2tlclR5cGUuaGFzT3duUHJvcGVydHkoY2hlY2tlclR5cGUuX19hcGlDaGVja0RhdGEudHlwZSkpIHtcblx0ICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgY2hlY2tlclR5cGVUeXBlLnR5cGUpO1xuXHQgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIGdldENoZWNrZXJFcnJvck1lc3NhZ2UocmVzLCBjaGVja2VyLCB2YWwpIHtcblx0ICB2YXIgY2hlY2tlckhlbHAgPSBnZXRDaGVja2VySGVscChjaGVja2VyLCB2YWwpO1xuXHQgIGNoZWNrZXJIZWxwID0gY2hlY2tlckhlbHAgPyAnIC0gJyArIGNoZWNrZXJIZWxwIDogJyc7XG5cdCAgcmV0dXJuIHJlcy5tZXNzYWdlICsgY2hlY2tlckhlbHA7XG5cdH1cblxuXHRmdW5jdGlvbiBnZXRDaGVja2VySGVscChfcmVmLCB2YWwpIHtcblx0ICB2YXIgaGVscCA9IF9yZWYuaGVscDtcblxuXHQgIGlmICghaGVscCkge1xuXHQgICAgcmV0dXJuICcnO1xuXHQgIH1cblx0ICBpZiAodHlwZW9mIGhlbHAgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIGhlbHAgPSBoZWxwKHZhbCk7XG5cdCAgfVxuXHQgIHJldHVybiBoZWxwO1xuXHR9XG5cblx0ZnVuY3Rpb24gY2hlY2tFbm91Z2hBcmdzKGFwaSwgYXJncykge1xuXHQgIHZhciByZXF1aXJlZEFyZ3MgPSBhcGkuZmlsdGVyKGZ1bmN0aW9uIChhKSB7XG5cdCAgICByZXR1cm4gIWEuaXNPcHRpb25hbDtcblx0ICB9KTtcblx0ICBpZiAoYXJncy5sZW5ndGggPCByZXF1aXJlZEFyZ3MubGVuZ3RoKSB7XG5cdCAgICByZXR1cm4gWydOb3QgZW5vdWdoIGFyZ3VtZW50cyBzcGVjaWZpZWQuIFJlcXVpcmVzIGAnICsgcmVxdWlyZWRBcmdzLmxlbmd0aCArICdgLCB5b3UgcGFzc2VkIGAnICsgYXJncy5sZW5ndGggKyAnYCddO1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gW107XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0QXJnRGlzcGxheShhcmcsIGdvdHRlbkFyZ3MpIHtcblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgN10gKi9cblx0ICB2YXIgY05hbWUgPSBhcmcgJiYgYXJnLmNvbnN0cnVjdG9yICYmIGFyZy5jb25zdHJ1Y3Rvci5uYW1lO1xuXHQgIHZhciB0eXBlID0gdHlwZU9mKGFyZyk7XG5cdCAgaWYgKHR5cGUgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIGlmIChoYXNLZXlzKCkpIHtcblx0ICAgICAgdmFyIHByb3BlcnRpZXMgPSBzdHJpbmdpZnkoZ2V0RGlzcGxheUlmTm90R290dGVuKCkpO1xuXHQgICAgICByZXR1cm4gY05hbWUgKyAnICh3aXRoIHByb3BlcnRpZXM6ICcgKyBwcm9wZXJ0aWVzICsgJyknO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNOYW1lO1xuXHQgIH1cblxuXHQgIGlmIChhcmcgPT09IG51bGwpIHtcblx0ICAgIHJldHVybiAnbnVsbCc7XG5cdCAgfVxuXG5cdCAgaWYgKHR5cGUgIT09ICdhcnJheScgJiYgdHlwZSAhPT0gJ29iamVjdCcpIHtcblx0ICAgIHJldHVybiB0eXBlO1xuXHQgIH1cblxuXHQgIGlmIChoYXNLZXlzKCkpIHtcblx0ICAgIHJldHVybiBnZXREaXNwbGF5SWZOb3RHb3R0ZW4oKTtcblx0ICB9XG5cblx0ICByZXR1cm4gY05hbWU7XG5cblx0ICAvLyB1dGlsaXR5IGZ1bmN0aW9uc1xuXHQgIGZ1bmN0aW9uIGhhc0tleXMoKSB7XG5cdCAgICByZXR1cm4gYXJnICYmIE9iamVjdC5rZXlzKGFyZykubGVuZ3RoO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldERpc3BsYXlJZk5vdEdvdHRlbigpIHtcblx0ICAgIGlmIChnb3R0ZW5BcmdzLmluZGV4T2YoYXJnKSAhPT0gLTEpIHtcblx0ICAgICAgcmV0dXJuICdbQ2lyY3VsYXJdJztcblx0ICAgIH1cblx0ICAgIGdvdHRlbkFyZ3MucHVzaChhcmcpO1xuXHQgICAgcmV0dXJuIGdldERpc3BsYXkoYXJnLCBnb3R0ZW5BcmdzKTtcblx0ICB9XG5cdH1cblxuXHRmdW5jdGlvbiBnZXREaXNwbGF5KG9iaiwgZ290dGVuQXJncykge1xuXHQgIHZhciBhcmdEaXNwbGF5ID0ge307XG5cdCAgZWFjaChvYmosIGZ1bmN0aW9uICh2LCBrKSB7XG5cdCAgICByZXR1cm4gYXJnRGlzcGxheVtrXSA9IGdldEFyZ0Rpc3BsYXkodiwgZ290dGVuQXJncyk7XG5cdCAgfSk7XG5cdCAgcmV0dXJuIGFyZ0Rpc3BsYXk7XG5cdH1cblxuXHRmdW5jdGlvbiBnZXRBcGlDaGVja0FwaXMoKSB7XG5cdCAgdmFyIG9zID0gY2hlY2tlcnMuc3RyaW5nLm9wdGlvbmFsO1xuXG5cdCAgdmFyIGNoZWNrZXJGbkNoZWNrZXIgPSBjaGVja2Vycy5mdW5jLndpdGhQcm9wZXJ0aWVzKHtcblx0ICAgIHR5cGU6IGNoZWNrZXJzLm9uZU9mVHlwZShbY2hlY2tlcnMuc3RyaW5nLCBjaGVja2VyVHlwZVR5cGVdKS5vcHRpb25hbCxcblx0ICAgIGRpc3BsYXlOYW1lOiBjaGVja2Vycy5zdHJpbmcub3B0aW9uYWwsXG5cdCAgICBzaG9ydFR5cGU6IGNoZWNrZXJzLnN0cmluZy5vcHRpb25hbCxcblx0ICAgIG5vdE9wdGlvbmFsOiBjaGVja2Vycy5ib29sLm9wdGlvbmFsLFxuXHQgICAgbm90UmVxdWlyZWQ6IGNoZWNrZXJzLmJvb2wub3B0aW9uYWxcblx0ICB9KTtcblxuXHQgIHZhciBnZXRBcGlDaGVja0luc3RhbmNlQ2hlY2tlcnMgPSBbY2hlY2tlcnMuc2hhcGUoe1xuXHQgICAgb3V0cHV0OiBjaGVja2Vycy5zaGFwZSh7XG5cdCAgICAgIHByZWZpeDogY2hlY2tlcnMuc3RyaW5nLm9wdGlvbmFsLFxuXHQgICAgICBzdWZmaXg6IGNoZWNrZXJzLnN0cmluZy5vcHRpb25hbCxcblx0ICAgICAgZG9jc0Jhc2VVcmw6IGNoZWNrZXJzLnN0cmluZy5vcHRpb25hbFxuXHQgICAgfSkuc3RyaWN0Lm9wdGlvbmFsLFxuXHQgICAgdmVyYm9zZTogY2hlY2tlcnMuYm9vbC5vcHRpb25hbCxcblx0ICAgIGRpc2FibGVkOiBjaGVja2Vycy5ib29sLm9wdGlvbmFsXG5cdCAgfSkuc3RyaWN0Lm9wdGlvbmFsLCBjaGVja2Vycy5vYmplY3RPZihjaGVja2VyRm5DaGVja2VyKS5vcHRpb25hbF07XG5cblx0ICB2YXIgY2hlY2tBcGlDaGVja0FwaSA9IFtjaGVja2Vycy50eXBlT3JBcnJheU9mKGNoZWNrZXJGbkNoZWNrZXIpLCBjaGVja2Vycy5hbnkub3B0aW9uYWwsIGNoZWNrZXJzLnNoYXBlKHtcblx0ICAgIHByZWZpeDogb3MsIHN1ZmZpeDogb3MsIHVybFN1ZmZpeDogb3MsIC8vIGFwcGVuZGVkIGNhc2Vcblx0ICAgIG9ubHlQcmVmaXg6IG9zLCBvbmx5U3VmZml4OiBvcywgdXJsOiBvcyAvLyBvdmVycmlkZSBjYXNlXG5cdCAgfSkuc3RyaWN0Lm9wdGlvbmFsXTtcblxuXHQgIHJldHVybiB7XG5cdCAgICBjaGVja2VyRm5DaGVja2VyOiBjaGVja2VyRm5DaGVja2VyLFxuXHQgICAgZ2V0QXBpQ2hlY2tJbnN0YW5jZUNoZWNrZXJzOiBnZXRBcGlDaGVja0luc3RhbmNlQ2hlY2tlcnMsXG5cdCAgICBjaGVja0FwaUNoZWNrQXBpOiBjaGVja0FwaUNoZWNrQXBpXG5cdCAgfTtcblx0fVxuXG4vKioqLyB9LFxuLyogMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdpZnk7XG5cblx0ZnVuY3Rpb24gZ2V0U2VyaWFsaXplIChmbiwgZGVjeWNsZSkge1xuXHQgIHZhciBzZWVuID0gW10sIGtleXMgPSBbXTtcblx0ICBkZWN5Y2xlID0gZGVjeWNsZSB8fCBmdW5jdGlvbihrZXksIHZhbHVlKSB7XG5cdCAgICByZXR1cm4gJ1tDaXJjdWxhciAnICsgZ2V0UGF0aCh2YWx1ZSwgc2Vlbiwga2V5cykgKyAnXSdcblx0ICB9O1xuXHQgIHJldHVybiBmdW5jdGlvbihrZXksIHZhbHVlKSB7XG5cdCAgICB2YXIgcmV0ID0gdmFsdWU7XG5cdCAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSkge1xuXHQgICAgICBpZiAoc2Vlbi5pbmRleE9mKHZhbHVlKSAhPT0gLTEpXG5cdCAgICAgICAgcmV0ID0gZGVjeWNsZShrZXksIHZhbHVlKTtcblx0ICAgICAgZWxzZSB7XG5cdCAgICAgICAgc2Vlbi5wdXNoKHZhbHVlKTtcblx0ICAgICAgICBrZXlzLnB1c2goa2V5KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaWYgKGZuKSByZXQgPSBmbihrZXksIHJldCk7XG5cdCAgICByZXR1cm4gcmV0O1xuXHQgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIGdldFBhdGggKHZhbHVlLCBzZWVuLCBrZXlzKSB7XG5cdCAgdmFyIGluZGV4ID0gc2Vlbi5pbmRleE9mKHZhbHVlKTtcblx0ICB2YXIgcGF0aCA9IFsga2V5c1tpbmRleF0gXTtcblx0ICBmb3IgKGluZGV4LS07IGluZGV4ID49IDA7IGluZGV4LS0pIHtcblx0ICAgIGlmIChzZWVuW2luZGV4XVsgcGF0aFswXSBdID09PSB2YWx1ZSkge1xuXHQgICAgICB2YWx1ZSA9IHNlZW5baW5kZXhdO1xuXHQgICAgICBwYXRoLnVuc2hpZnQoa2V5c1tpbmRleF0pO1xuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gJ34nICsgcGF0aC5qb2luKCcuJyk7XG5cdH1cblxuXHRmdW5jdGlvbiBzdHJpbmdpZnkob2JqLCBmbiwgc3BhY2VzLCBkZWN5Y2xlKSB7XG5cdCAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiwgZ2V0U2VyaWFsaXplKGZuLCBkZWN5Y2xlKSwgc3BhY2VzKTtcblx0fVxuXG5cdHN0cmluZ2lmeS5nZXRTZXJpYWxpemUgPSBnZXRTZXJpYWxpemU7XG5cblxuLyoqKi8gfSxcbi8qIDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0JztcblxuXHRmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5cdHZhciBzdHJpbmdpZnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHR2YXIgY2hlY2tlckhlbHBlcnMgPSB7XG5cdCAgYWRkT3B0aW9uYWw6IGFkZE9wdGlvbmFsLCBnZXRSZXF1aXJlZFZlcnNpb246IGdldFJlcXVpcmVkVmVyc2lvbiwgc2V0dXBDaGVja2VyOiBzZXR1cENoZWNrZXIsIGFkZE51bGxhYmxlOiBhZGROdWxsYWJsZVxuXHR9O1xuXG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHQgIGVhY2g6IGVhY2gsIGNvcHk6IGNvcHksIHR5cGVPZjogdHlwZU9mLCBhcnJheWlmeTogYXJyYXlpZnksIGdldENoZWNrZXJEaXNwbGF5OiBnZXRDaGVja2VyRGlzcGxheSxcblx0ICBpc0Vycm9yOiBpc0Vycm9yLCBsaXN0OiBsaXN0LCBnZXRFcnJvcjogZ2V0RXJyb3IsIG5BdEw6IG5BdEwsIHQ6IHQsIHVuZGVmOiB1bmRlZiwgY2hlY2tlckhlbHBlcnM6IGNoZWNrZXJIZWxwZXJzLFxuXHQgIG5vb3A6IG5vb3Bcblx0fTtcblxuXHRmdW5jdGlvbiBjb3B5KG9iaikge1xuXHQgIHZhciB0eXBlID0gdHlwZU9mKG9iaik7XG5cdCAgdmFyIGRhQ29weSA9IHVuZGVmaW5lZDtcblx0ICBpZiAodHlwZSA9PT0gJ2FycmF5Jykge1xuXHQgICAgZGFDb3B5ID0gW107XG5cdCAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuXHQgICAgZGFDb3B5ID0ge307XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBvYmo7XG5cdCAgfVxuXHQgIGVhY2gob2JqLCBmdW5jdGlvbiAodmFsLCBrZXkpIHtcblx0ICAgIGRhQ29weVtrZXldID0gdmFsOyAvLyBjYW5ub3Qgc2luZ2xlLWxpbmUgdGhpcyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gYWJvcnQgdGhlIGVhY2hcblx0ICB9KTtcblx0ICByZXR1cm4gZGFDb3B5O1xuXHR9XG5cblx0ZnVuY3Rpb24gdHlwZU9mKG9iaikge1xuXHQgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcblx0ICAgIHJldHVybiAnYXJyYXknO1xuXHQgIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgUmVnRXhwKSB7XG5cdCAgICByZXR1cm4gJ29iamVjdCc7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiB0eXBlb2Ygb2JqO1xuXHQgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIGdldENoZWNrZXJEaXNwbGF5KGNoZWNrZXIsIG9wdGlvbnMpIHtcblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgN10gKi9cblx0ICB2YXIgZGlzcGxheSA9IHVuZGVmaW5lZDtcblx0ICB2YXIgc2hvcnQgPSBvcHRpb25zICYmIG9wdGlvbnMuc2hvcnQ7XG5cdCAgaWYgKHNob3J0ICYmIGNoZWNrZXIuc2hvcnRUeXBlKSB7XG5cdCAgICBkaXNwbGF5ID0gY2hlY2tlci5zaG9ydFR5cGU7XG5cdCAgfSBlbHNlIGlmICghc2hvcnQgJiYgdHlwZW9mIGNoZWNrZXIudHlwZSA9PT0gJ29iamVjdCcgfHwgY2hlY2tlci50eXBlID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICBkaXNwbGF5ID0gZ2V0Q2hlY2tlclR5cGUoY2hlY2tlciwgb3B0aW9ucyk7XG5cdCAgfSBlbHNlIHtcblx0ICAgIGRpc3BsYXkgPSBnZXRDaGVja2VyVHlwZShjaGVja2VyLCBvcHRpb25zKSB8fCBjaGVja2VyLmRpc3BsYXlOYW1lIHx8IGNoZWNrZXIubmFtZTtcblx0ICB9XG5cdCAgcmV0dXJuIGRpc3BsYXk7XG5cdH1cblxuXHRmdW5jdGlvbiBnZXRDaGVja2VyVHlwZShfcmVmLCBvcHRpb25zKSB7XG5cdCAgdmFyIHR5cGUgPSBfcmVmLnR5cGU7XG5cblx0ICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgIHZhciBfX2FwaUNoZWNrRGF0YSA9IHR5cGUuX19hcGlDaGVja0RhdGE7XG5cdCAgICB2YXIgdHlwZVR5cGVzID0gdHlwZShvcHRpb25zKTtcblx0ICAgIHR5cGUgPSBfZGVmaW5lUHJvcGVydHkoe1xuXHQgICAgICBfX2FwaUNoZWNrRGF0YTogX19hcGlDaGVja0RhdGFcblx0ICAgIH0sIF9fYXBpQ2hlY2tEYXRhLnR5cGUsIHR5cGVUeXBlcyk7XG5cdCAgfVxuXHQgIHJldHVybiB0eXBlO1xuXHR9XG5cblx0ZnVuY3Rpb24gYXJyYXlpZnkob2JqKSB7XG5cdCAgaWYgKCFvYmopIHtcblx0ICAgIHJldHVybiBbXTtcblx0ICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuXHQgICAgcmV0dXJuIG9iajtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIFtvYmpdO1xuXHQgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIGVhY2gob2JqLCBpdGVyYXRvciwgY29udGV4dCkge1xuXHQgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcblx0ICAgIHJldHVybiBlYWNoQXJyeShvYmosIGl0ZXJhdG9yLCBjb250ZXh0KTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIGVhY2hPYmoob2JqLCBpdGVyYXRvciwgY29udGV4dCk7XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZWFjaE9iaihvYmosIGl0ZXJhdG9yLCBjb250ZXh0KSB7XG5cdCAgdmFyIHJldCA9IHVuZGVmaW5lZDtcblx0ICB2YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0ICAvKiBlc2xpbnQgcHJlZmVyLWNvbnN0OjAgKi8gLy8gc29tZSB3ZWlyZCBlc2xpbnQgYnVnP1xuXHQgIGZvciAodmFyIGtleSBpbiBvYmopIHtcblx0ICAgIGlmIChoYXNPd24uY2FsbChvYmosIGtleSkpIHtcblx0ICAgICAgcmV0ID0gaXRlcmF0b3IuY2FsbChjb250ZXh0LCBvYmpba2V5XSwga2V5LCBvYmopO1xuXHQgICAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuXHQgICAgICAgIHJldHVybiByZXQ7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuIHRydWU7XG5cdH1cblxuXHRmdW5jdGlvbiBlYWNoQXJyeShvYmosIGl0ZXJhdG9yLCBjb250ZXh0KSB7XG5cdCAgdmFyIHJldCA9IHVuZGVmaW5lZDtcblx0ICB2YXIgbGVuZ3RoID0gb2JqLmxlbmd0aDtcblx0ICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cdCAgICByZXQgPSBpdGVyYXRvci5jYWxsKGNvbnRleHQsIG9ialtpXSwgaSwgb2JqKTtcblx0ICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG5cdCAgICAgIHJldHVybiByZXQ7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiB0cnVlO1xuXHR9XG5cblx0ZnVuY3Rpb24gaXNFcnJvcihvYmopIHtcblx0ICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRXJyb3I7XG5cdH1cblxuXHRmdW5jdGlvbiBsaXN0KGFycnksIGpvaW4sIGZpbmFsSm9pbikge1xuXHQgIGFycnkgPSBhcnJheWlmeShhcnJ5KTtcblx0ICB2YXIgY29weSA9IGFycnkuc2xpY2UoKTtcblx0ICB2YXIgbGFzdCA9IGNvcHkucG9wKCk7XG5cdCAgaWYgKGNvcHkubGVuZ3RoID09PSAxKSB7XG5cdCAgICBqb2luID0gJyAnO1xuXHQgIH1cblx0ICByZXR1cm4gY29weS5qb2luKGpvaW4pICsgKCcnICsgKGNvcHkubGVuZ3RoID8gam9pbiArIGZpbmFsSm9pbiA6ICcnKSArIGxhc3QpO1xuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIGNoZWNrZXJUeXBlKSB7XG5cdCAgaWYgKHR5cGVvZiBjaGVja2VyVHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgY2hlY2tlclR5cGUgPSBjaGVja2VyVHlwZSh7IHNob3J0OiB0cnVlIH0pO1xuXHQgIH1cblx0ICB2YXIgc3RyaW5nVHlwZSA9IHR5cGVvZiBjaGVja2VyVHlwZSAhPT0gJ29iamVjdCcgPyBjaGVja2VyVHlwZSA6IHN0cmluZ2lmeShjaGVja2VyVHlwZSk7XG5cdCAgcmV0dXJuIG5ldyBFcnJvcihuQXRMKG5hbWUsIGxvY2F0aW9uKSArICcgbXVzdCBiZSAnICsgdChzdHJpbmdUeXBlKSk7XG5cdH1cblxuXHRmdW5jdGlvbiBuQXRMKG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgdmFyIHROYW1lID0gdChuYW1lIHx8ICd2YWx1ZScpO1xuXHQgIHZhciB0TG9jYXRpb24gPSAhbG9jYXRpb24gPyAnJyA6ICcgYXQgJyArIHQobG9jYXRpb24pO1xuXHQgIHJldHVybiAnJyArIHROYW1lICsgdExvY2F0aW9uO1xuXHR9XG5cblx0ZnVuY3Rpb24gdCh0aGluZykge1xuXHQgIHJldHVybiAnYCcgKyB0aGluZyArICdgJztcblx0fVxuXG5cdGZ1bmN0aW9uIHVuZGVmKHRoaW5nKSB7XG5cdCAgcmV0dXJuIHR5cGVvZiB0aGluZyA9PT0gJ3VuZGVmaW5lZCc7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyB3aWxsIHNldCB1cCB0aGUgY2hlY2tlciB3aXRoIGFsbCBvZiB0aGUgZGVmYXVsdHMgdGhhdCBtb3N0IGNoZWNrZXJzIHdhbnQgbGlrZSByZXF1aXJlZCBieSBkZWZhdWx0IGFuZCBhblxuXHQgKiBvcHRpb25hbCB2ZXJzaW9uXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGNoZWNrZXIgLSB0aGUgY2hlY2tlciB0byBzZXR1cCB3aXRoIHByb3BlcnRpZXNcblx0ICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSBwcm9wZXJ0aWVzIHRvIGFkZCB0byB0aGUgY2hlY2tlclxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc2FibGVkIC0gd2hlbiBzZXQgdG8gdHJ1ZSwgdGhpcyB3aWxsIHNldCB0aGUgY2hlY2tlciB0byBhIG5vLW9wIGZ1bmN0aW9uXG5cdCAqIEByZXR1cm5zIHtGdW5jdGlvbn0gY2hlY2tlciAtIHRoZSBzZXR1cCBjaGVja2VyXG5cdCAqL1xuXHRmdW5jdGlvbiBzZXR1cENoZWNrZXIoY2hlY2tlciwgcHJvcGVydGllcywgZGlzYWJsZWQpIHtcblx0ICAvKiBlc2xpbnQgY29tcGxleGl0eTpbMiwgOV0gKi9cblx0ICBpZiAoZGlzYWJsZWQpIHtcblx0ICAgIC8vIHN3YXAgb3V0IHRoZSBjaGVja2VyIGZvciBpdHMgb3duIGNvcHkgb2Ygbm9vcFxuXHQgICAgY2hlY2tlciA9IGdldE5vb3AoKTtcblx0ICAgIGNoZWNrZXIuaXNOb29wID0gdHJ1ZTtcblx0ICB9XG5cblx0ICBpZiAodHlwZW9mIGNoZWNrZXIudHlwZSA9PT0gJ3N0cmluZycpIHtcblx0ICAgIGNoZWNrZXIuc2hvcnRUeXBlID0gY2hlY2tlci50eXBlO1xuXHQgIH1cblxuXHQgIC8vIGFzc2lnbiBhbGwgcHJvcGVydGllcyBnaXZlblxuXHQgIGVhY2gocHJvcGVydGllcywgZnVuY3Rpb24gKHByb3AsIG5hbWUpIHtcblx0ICAgIHJldHVybiBjaGVja2VyW25hbWVdID0gcHJvcDtcblx0ICB9KTtcblxuXHQgIGlmICghY2hlY2tlci5kaXNwbGF5TmFtZSkge1xuXHQgICAgY2hlY2tlci5kaXNwbGF5TmFtZSA9ICdhcGlDaGVjayAnICsgdChjaGVja2VyLnNob3J0VHlwZSB8fCBjaGVja2VyLnR5cGUgfHwgY2hlY2tlci5uYW1lKSArICcgdHlwZSBjaGVja2VyJztcblx0ICB9XG5cblx0ICBpZiAoIWNoZWNrZXIubm90UmVxdWlyZWQpIHtcblx0ICAgIGNoZWNrZXIgPSBnZXRSZXF1aXJlZFZlcnNpb24oY2hlY2tlciwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGlmICghY2hlY2tlci5ub3ROdWxsYWJsZSkge1xuXHQgICAgYWRkTnVsbGFibGUoY2hlY2tlciwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGlmICghY2hlY2tlci5ub3RPcHRpb25hbCkge1xuXHQgICAgYWRkT3B0aW9uYWwoY2hlY2tlciwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIHJldHVybiBjaGVja2VyO1xuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0UmVxdWlyZWRWZXJzaW9uKGNoZWNrZXIsIGRpc2FibGVkKSB7XG5cdCAgdmFyIHJlcXVpcmVkQ2hlY2tlciA9IGRpc2FibGVkID8gZ2V0Tm9vcCgpIDogZnVuY3Rpb24gcmVxdWlyZWRDaGVja2VyKHZhbCwgbmFtZSwgbG9jYXRpb24sIG9iaikge1xuXHQgICAgaWYgKHVuZGVmKHZhbCkgJiYgIWNoZWNrZXIuaXNPcHRpb25hbCkge1xuXHQgICAgICB2YXIgdExvY2F0aW9uID0gbG9jYXRpb24gPyAnIGluICcgKyB0KGxvY2F0aW9uKSA6ICcnO1xuXHQgICAgICB2YXIgdHlwZSA9IGdldENoZWNrZXJEaXNwbGF5KGNoZWNrZXIsIHsgc2hvcnQ6IHRydWUgfSk7XG5cdCAgICAgIHZhciBzdHJpbmdUeXBlID0gdHlwZW9mIHR5cGUgIT09ICdvYmplY3QnID8gdHlwZSA6IHN0cmluZ2lmeSh0eXBlKTtcblx0ICAgICAgcmV0dXJuIG5ldyBFcnJvcignUmVxdWlyZWQgJyArIHQobmFtZSkgKyAnIG5vdCBzcGVjaWZpZWQnICsgdExvY2F0aW9uICsgJy4gTXVzdCBiZSAnICsgdChzdHJpbmdUeXBlKSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZXR1cm4gY2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uLCBvYmopO1xuXHQgICAgfVxuXHQgIH07XG5cdCAgY29weVByb3BzKGNoZWNrZXIsIHJlcXVpcmVkQ2hlY2tlcik7XG5cdCAgcmVxdWlyZWRDaGVja2VyLm9yaWdpbmFsQ2hlY2tlciA9IGNoZWNrZXI7XG5cdCAgcmV0dXJuIHJlcXVpcmVkQ2hlY2tlcjtcblx0fVxuXG5cdGZ1bmN0aW9uIGFkZE9wdGlvbmFsKGNoZWNrZXIsIGRpc2FibGVkKSB7XG5cdCAgdmFyIG9wdGlvbmFsQ2hlY2sgPSBkaXNhYmxlZCA/IGdldE5vb3AoKSA6IGZ1bmN0aW9uIG9wdGlvbmFsQ2hlY2sodmFsLCBuYW1lLCBsb2NhdGlvbiwgb2JqKSB7XG5cdCAgICBpZiAoIXVuZGVmKHZhbCkpIHtcblx0ICAgICAgcmV0dXJuIGNoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbiwgb2JqKTtcblx0ICAgIH1cblx0ICB9O1xuXHQgIC8vIGluaGVyaXQgYWxsIHByb3BlcnRpZXMgb24gdGhlIG9yaWdpbmFsIGNoZWNrZXJcblx0ICBjb3B5UHJvcHMoY2hlY2tlciwgb3B0aW9uYWxDaGVjayk7XG5cblx0ICBvcHRpb25hbENoZWNrLmlzT3B0aW9uYWwgPSB0cnVlO1xuXHQgIG9wdGlvbmFsQ2hlY2suZGlzcGxheU5hbWUgPSBjaGVja2VyLmRpc3BsYXlOYW1lICsgJyAob3B0aW9uYWwpJztcblx0ICBvcHRpb25hbENoZWNrLm9yaWdpbmFsQ2hlY2tlciA9IGNoZWNrZXI7XG5cblx0ICAvLyB0aGUgbWFnaWMgbGluZSB0aGF0IGFsbG93cyB5b3UgdG8gYWRkIC5vcHRpb25hbCB0byB0aGUgZW5kIG9mIHRoZSBjaGVja2Vyc1xuXHQgIGNoZWNrZXIub3B0aW9uYWwgPSBvcHRpb25hbENoZWNrO1xuXG5cdCAgZml4VHlwZShjaGVja2VyLCBjaGVja2VyLm9wdGlvbmFsKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGFkZE51bGxhYmxlKGNoZWNrZXIsIGRpc2FibGVkKSB7XG5cdCAgdmFyIG51bGxhYmxlQ2hlY2sgPSBkaXNhYmxlZCA/IGdldE5vb3AoKSA6IGZ1bmN0aW9uIG51bGxhYmxlQ2hlY2sodmFsLCBuYW1lLCBsb2NhdGlvbiwgb2JqKSB7XG5cdCAgICBpZiAodmFsICE9PSBudWxsKSB7XG5cdCAgICAgIHJldHVybiBjaGVja2VyKHZhbCwgbmFtZSwgbG9jYXRpb24sIG9iaik7XG5cdCAgICB9XG5cdCAgfTtcblx0ICAvLyBpbmhlcml0IGFsbCBwcm9wZXJ0aWVzIG9uIHRoZSBvcmlnaW5hbCBjaGVja2VyXG5cdCAgY29weVByb3BzKGNoZWNrZXIsIG51bGxhYmxlQ2hlY2spO1xuXG5cdCAgbnVsbGFibGVDaGVjay5pc051bGxhYmxlID0gdHJ1ZTtcblx0ICBudWxsYWJsZUNoZWNrLmRpc3BsYXlOYW1lID0gY2hlY2tlci5kaXNwbGF5TmFtZSArICcgKG51bGxhYmxlKSc7XG5cdCAgbnVsbGFibGVDaGVjay5vcmlnaW5hbENoZWNrZXIgPSBjaGVja2VyO1xuXG5cdCAgLy8gdGhlIG1hZ2ljIGxpbmUgdGhhdCBhbGxvd3MgeW91IHRvIGFkZCAubnVsbGFibGUgdG8gdGhlIGVuZCBvZiB0aGUgY2hlY2tlcnNcblx0ICBjaGVja2VyLm51bGxhYmxlID0gbnVsbGFibGVDaGVjaztcblxuXHQgIGZpeFR5cGUoY2hlY2tlciwgY2hlY2tlci5udWxsYWJsZSk7XG5cdCAgaWYgKCFjaGVja2VyLm5vdE9wdGlvbmFsKSB7XG5cdCAgICBhZGRPcHRpb25hbChjaGVja2VyLm51bGxhYmxlLCBkaXNhYmxlZCk7XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZml4VHlwZShjaGVja2VyLCBjaGVja2VyQ29weSkge1xuXHQgIC8vIGZpeCB0eXBlLCBiZWNhdXNlIGl0J3Mgbm90IGEgc3RyYWlnaHQgY29weS4uLlxuXHQgIC8vIHRoZSByZWFzb24gaXMgd2UgbmVlZCB0byBzcGVjaWZ5IHR5cGUuX19hcGlDaGVja0RhdGEub3B0aW9uYWwgYXMgdHJ1ZSBmb3IgdGhlIHRlcnNlL3ZlcmJvc2Ugb3B0aW9uLlxuXHQgIC8vIHdlIGFsc28gd2FudCB0byBhZGQgXCIob3B0aW9uYWwpXCIgdG8gdGhlIHR5cGVzIHdpdGggYSBzdHJpbmdcblx0ICBpZiAodHlwZW9mIGNoZWNrZXJDb3B5LnR5cGUgPT09ICdvYmplY3QnKSB7XG5cdCAgICBjaGVja2VyQ29weS50eXBlID0gY29weShjaGVja2VyQ29weS50eXBlKTsgLy8gbWFrZSBvdXIgb3duIGNvcHkgb2YgdGhpc1xuXHQgIH0gZWxzZSBpZiAodHlwZW9mIGNoZWNrZXJDb3B5LnR5cGUgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgY2hlY2tlckNvcHkudHlwZSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4gY2hlY2tlci50eXBlLmFwcGx5KGNoZWNrZXIsIGFyZ3VtZW50cyk7XG5cdCAgICAgIH07XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBjaGVja2VyQ29weS50eXBlICs9ICcgKG9wdGlvbmFsKSc7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICBjaGVja2VyQ29weS50eXBlLl9fYXBpQ2hlY2tEYXRhID0gY29weShjaGVja2VyLnR5cGUuX19hcGlDaGVja0RhdGEpIHx8IHt9OyAvLyBhbmQgdGhpc1xuXHQgIGNoZWNrZXJDb3B5LnR5cGUuX19hcGlDaGVja0RhdGEub3B0aW9uYWwgPSB0cnVlO1xuXHR9XG5cblx0Ly8gVVRJTFNcblxuXHRmdW5jdGlvbiBjb3B5UHJvcHMoc3JjLCBkZXN0KSB7XG5cdCAgZWFjaChPYmplY3Qua2V5cyhzcmMpLCBmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICByZXR1cm4gZGVzdFtrZXldID0gc3JjW2tleV07XG5cdCAgfSk7XG5cdH1cblxuXHRmdW5jdGlvbiBub29wKCkge31cblxuXHRmdW5jdGlvbiBnZXROb29wKCkge1xuXHQgIC8qIGVzbGludCBuby1zaGFkb3c6MCAqL1xuXHQgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cdCAgcmV0dXJuIGZ1bmN0aW9uIG5vb3AoKSB7fTtcblx0fVxuXG4vKioqLyB9LFxuLyogNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBzdHJpbmdpZnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXG5cdHZhciBfcmVxdWlyZSA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cblx0dmFyIHR5cGVPZiA9IF9yZXF1aXJlLnR5cGVPZjtcblx0dmFyIGVhY2ggPSBfcmVxdWlyZS5lYWNoO1xuXHR2YXIgY29weSA9IF9yZXF1aXJlLmNvcHk7XG5cdHZhciBnZXRDaGVja2VyRGlzcGxheSA9IF9yZXF1aXJlLmdldENoZWNrZXJEaXNwbGF5O1xuXHR2YXIgaXNFcnJvciA9IF9yZXF1aXJlLmlzRXJyb3I7XG5cdHZhciBhcnJheWlmeSA9IF9yZXF1aXJlLmFycmF5aWZ5O1xuXHR2YXIgbGlzdCA9IF9yZXF1aXJlLmxpc3Q7XG5cdHZhciBnZXRFcnJvciA9IF9yZXF1aXJlLmdldEVycm9yO1xuXHR2YXIgbkF0TCA9IF9yZXF1aXJlLm5BdEw7XG5cdHZhciB0ID0gX3JlcXVpcmUudDtcblx0dmFyIGNoZWNrZXJIZWxwZXJzID0gX3JlcXVpcmUuY2hlY2tlckhlbHBlcnM7XG5cdHZhciB1bmRlZiA9IF9yZXF1aXJlLnVuZGVmO1xuXHR2YXIgc2V0dXBDaGVja2VyID0gY2hlY2tlckhlbHBlcnMuc2V0dXBDaGVja2VyO1xuXG5cdHZhciBjaGVja2VycyA9IG1vZHVsZS5leHBvcnRzID0gZ2V0Q2hlY2tlcnMoKTtcblx0bW9kdWxlLmV4cG9ydHMuZ2V0Q2hlY2tlcnMgPSBnZXRDaGVja2VycztcblxuXHRmdW5jdGlvbiBnZXRDaGVja2VycyhkaXNhYmxlZCkge1xuXHQgIHJldHVybiB7XG5cdCAgICBhcnJheTogdHlwZU9mQ2hlY2tHZXR0ZXIoJ0FycmF5JyksXG5cdCAgICBib29sOiB0eXBlT2ZDaGVja0dldHRlcignQm9vbGVhbicpLFxuXHQgICAgbnVtYmVyOiB0eXBlT2ZDaGVja0dldHRlcignTnVtYmVyJyksXG5cdCAgICBzdHJpbmc6IHR5cGVPZkNoZWNrR2V0dGVyKCdTdHJpbmcnKSxcblx0ICAgIGZ1bmM6IGZ1bmNDaGVja0dldHRlcigpLFxuXHQgICAgb2JqZWN0OiBvYmplY3RDaGVja0dldHRlcigpLFxuXG5cdCAgICBlbXB0eU9iamVjdDogZW1wdHlPYmplY3RDaGVja0dldHRlcigpLFxuXG5cdCAgICBpbnN0YW5jZU9mOiBpbnN0YW5jZUNoZWNrR2V0dGVyLFxuXHQgICAgb25lT2Y6IG9uZU9mQ2hlY2tHZXR0ZXIsXG5cdCAgICBvbmVPZlR5cGU6IG9uZU9mVHlwZUNoZWNrR2V0dGVyLFxuXG5cdCAgICBhcnJheU9mOiBhcnJheU9mQ2hlY2tHZXR0ZXIsXG5cdCAgICBvYmplY3RPZjogb2JqZWN0T2ZDaGVja0dldHRlcixcblx0ICAgIHR5cGVPckFycmF5T2Y6IHR5cGVPckFycmF5T2ZDaGVja0dldHRlcixcblxuXHQgICAgcmFuZ2U6IHJhbmdlQ2hlY2tHZXR0ZXIsXG5cdCAgICBsZXNzVGhhbjogbGVzc1RoYW5DaGVja0dldHRlcixcblx0ICAgIGdyZWF0ZXJUaGFuOiBncmVhdGVyVGhhbkNoZWNrR2V0dGVyLFxuXG5cdCAgICBzaGFwZTogZ2V0U2hhcGVDaGVja0dldHRlcigpLFxuXHQgICAgYXJnczogYXJndW1lbnRzQ2hlY2tlckdldHRlcigpLFxuXG5cdCAgICBhbnk6IGFueUNoZWNrR2V0dGVyKCksXG5cdCAgICAnbnVsbCc6IG51bGxDaGVja0dldHRlcigpXG5cblx0ICB9O1xuXG5cdCAgZnVuY3Rpb24gdHlwZU9mQ2hlY2tHZXR0ZXIodHlwZSkge1xuXHQgICAgdmFyIGxUeXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiB0eXBlT2ZDaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh0eXBlT2YodmFsKSAhPT0gbFR5cGUpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGZ1bmNDaGVja0dldHRlcigpIHtcblx0ICAgIHZhciB0eXBlID0gJ0Z1bmN0aW9uJztcblx0ICAgIHZhciBmdW5jdGlvbkNoZWNrZXIgPSBzZXR1cENoZWNrZXIoZnVuY3Rpb24gZnVuY3Rpb25DaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh0eXBlT2YodmFsKSAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgdHlwZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sIHsgdHlwZTogdHlwZSB9LCBkaXNhYmxlZCk7XG5cblx0ICAgIGZ1bmN0aW9uQ2hlY2tlci53aXRoUHJvcGVydGllcyA9IGZ1bmN0aW9uIGdldFdpdGhQcm9wZXJ0aWVzQ2hlY2tlcihwcm9wZXJ0aWVzKSB7XG5cdCAgICAgIHZhciBhcGlFcnJvciA9IGNoZWNrZXJzLm9iamVjdE9mKGNoZWNrZXJzLmZ1bmMpKHByb3BlcnRpZXMsICdwcm9wZXJ0aWVzJywgJ2FwaUNoZWNrLmZ1bmMud2l0aFByb3BlcnRpZXMnKTtcblx0ICAgICAgaWYgKGlzRXJyb3IoYXBpRXJyb3IpKSB7XG5cdCAgICAgICAgdGhyb3cgYXBpRXJyb3I7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHNoYXBlQ2hlY2tlciA9IGNoZWNrZXJzLnNoYXBlKHByb3BlcnRpZXMsIHRydWUpO1xuXHQgICAgICBzaGFwZUNoZWNrZXIudHlwZS5fX2FwaUNoZWNrRGF0YS50eXBlID0gJ2Z1bmMud2l0aFByb3BlcnRpZXMnO1xuXG5cdCAgICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gZnVuY3Rpb25XaXRoUHJvcGVydGllc0NoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICAgIHZhciBub3RGdW5jdGlvbiA9IGNoZWNrZXJzLmZ1bmModmFsLCBuYW1lLCBsb2NhdGlvbik7XG5cdCAgICAgICAgaWYgKGlzRXJyb3Iobm90RnVuY3Rpb24pKSB7XG5cdCAgICAgICAgICByZXR1cm4gbm90RnVuY3Rpb247XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBzaGFwZUNoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbik7XG5cdCAgICAgIH0sIHsgdHlwZTogc2hhcGVDaGVja2VyLnR5cGUsIHNob3J0VHlwZTogJ2Z1bmMud2l0aFByb3BlcnRpZXMnIH0sIGRpc2FibGVkKTtcblx0ICAgIH07XG5cdCAgICByZXR1cm4gZnVuY3Rpb25DaGVja2VyO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIG9iamVjdENoZWNrR2V0dGVyKCkge1xuXHQgICAgdmFyIHR5cGUgPSAnT2JqZWN0Jztcblx0ICAgIHZhciBudWxsVHlwZSA9ICdPYmplY3QgKG51bGwgb2spJztcblx0ICAgIHZhciBvYmplY3ROdWxsT2tDaGVja2VyID0gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIG9iamVjdE51bGxPa0NoZWNrZXJEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgaWYgKHR5cGVPZih2YWwpICE9PSAnb2JqZWN0Jykge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgbnVsbFR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IG51bGxUeXBlIH0sIGRpc2FibGVkKTtcblxuXHQgICAgdmFyIG9iamVjdENoZWNrZXIgPSBzZXR1cENoZWNrZXIoZnVuY3Rpb24gb2JqZWN0Q2hlY2tlckRlZmluaXRpb24odmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICBpZiAodmFsID09PSBudWxsIHx8IGlzRXJyb3Iob2JqZWN0TnVsbE9rQ2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSkpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIG9iamVjdENoZWNrZXIudHlwZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sIHsgdHlwZTogdHlwZSwgbnVsbE9rOiBvYmplY3ROdWxsT2tDaGVja2VyIH0sIGRpc2FibGVkKTtcblxuXHQgICAgcmV0dXJuIG9iamVjdENoZWNrZXI7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gaW5zdGFuY2VDaGVja0dldHRlcihjbGFzc1RvQ2hlY2spIHtcblx0ICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gaW5zdGFuY2VDaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICghKHZhbCBpbnN0YW5jZW9mIGNsYXNzVG9DaGVjaykpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIGNsYXNzVG9DaGVjay5uYW1lKTtcblx0ICAgICAgfVxuXHQgICAgfSwgeyB0eXBlOiBjbGFzc1RvQ2hlY2submFtZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gb25lT2ZDaGVja0dldHRlcihlbnVtcykge1xuXHQgICAgdmFyIHR5cGUgPSB7XG5cdCAgICAgIF9fYXBpQ2hlY2tEYXRhOiB7IG9wdGlvbmFsOiBmYWxzZSwgdHlwZTogJ2VudW0nIH0sXG5cdCAgICAgICdlbnVtJzogZW51bXNcblx0ICAgIH07XG5cdCAgICB2YXIgc2hvcnRUeXBlID0gJ29uZU9mWycgKyBlbnVtcy5tYXAoZnVuY3Rpb24gKGVubSkge1xuXHQgICAgICByZXR1cm4gc3RyaW5naWZ5KGVubSk7XG5cdCAgICB9KS5qb2luKCcsICcpICsgJ10nO1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBvbmVPZkNoZWNrZXJEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgaWYgKCFlbnVtcy5zb21lKGZ1bmN0aW9uIChlbm0pIHtcblx0ICAgICAgICByZXR1cm4gZW5tID09PSB2YWw7XG5cdCAgICAgIH0pKSB7XG5cdCAgICAgICAgcmV0dXJuIGdldEVycm9yKG5hbWUsIGxvY2F0aW9uLCBzaG9ydFR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUsIHNob3J0VHlwZTogc2hvcnRUeXBlIH0sIGRpc2FibGVkKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBvbmVPZlR5cGVDaGVja0dldHRlcih0eXBlQ2hlY2tlcnMpIHtcblx0ICAgIHZhciBjaGVja2Vyc0Rpc3BsYXkgPSB0eXBlQ2hlY2tlcnMubWFwKGZ1bmN0aW9uIChjaGVja2VyKSB7XG5cdCAgICAgIHJldHVybiBnZXRDaGVja2VyRGlzcGxheShjaGVja2VyLCB7IHNob3J0OiB0cnVlIH0pO1xuXHQgICAgfSk7XG5cdCAgICB2YXIgc2hvcnRUeXBlID0gJ29uZU9mVHlwZVsnICsgY2hlY2tlcnNEaXNwbGF5LmpvaW4oJywgJykgKyAnXSc7XG5cdCAgICBmdW5jdGlvbiB0eXBlKG9wdGlvbnMpIHtcblx0ICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zaG9ydCkge1xuXHQgICAgICAgIHJldHVybiBzaG9ydFR5cGU7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIHR5cGVDaGVja2Vycy5tYXAoZnVuY3Rpb24gKGNoZWNrZXIpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgb3B0aW9ucyk7XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgICAgdHlwZS5fX2FwaUNoZWNrRGF0YSA9IHsgb3B0aW9uYWw6IGZhbHNlLCB0eXBlOiAnb25lT2ZUeXBlJyB9O1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBvbmVPZlR5cGVDaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICghdHlwZUNoZWNrZXJzLnNvbWUoZnVuY3Rpb24gKGNoZWNrZXIpIHtcblx0ICAgICAgICByZXR1cm4gIWlzRXJyb3IoY2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSk7XG5cdCAgICAgIH0pKSB7XG5cdCAgICAgICAgcmV0dXJuIGdldEVycm9yKG5hbWUsIGxvY2F0aW9uLCBzaG9ydFR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUsIHNob3J0VHlwZTogc2hvcnRUeXBlIH0sIGRpc2FibGVkKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBhcnJheU9mQ2hlY2tHZXR0ZXIoY2hlY2tlcikge1xuXHQgICAgdmFyIHNob3J0Q2hlY2tlckRpc3BsYXkgPSBnZXRDaGVja2VyRGlzcGxheShjaGVja2VyLCB7IHNob3J0OiB0cnVlIH0pO1xuXHQgICAgdmFyIHNob3J0VHlwZSA9ICdhcnJheU9mWycgKyBzaG9ydENoZWNrZXJEaXNwbGF5ICsgJ10nO1xuXG5cdCAgICBmdW5jdGlvbiB0eXBlKG9wdGlvbnMpIHtcblx0ICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zaG9ydCkge1xuXHQgICAgICAgIHJldHVybiBzaG9ydFR5cGU7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIGdldENoZWNrZXJEaXNwbGF5KGNoZWNrZXIsIG9wdGlvbnMpO1xuXHQgICAgfVxuXHQgICAgdHlwZS5fX2FwaUNoZWNrRGF0YSA9IHsgb3B0aW9uYWw6IGZhbHNlLCB0eXBlOiAnYXJyYXlPZicgfTtcblxuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBhcnJheU9mQ2hlY2tlckRlZmluaXRpb24odmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICBpZiAoaXNFcnJvcihjaGVja2Vycy5hcnJheSh2YWwpKSB8fCAhdmFsLmV2ZXJ5KGZ1bmN0aW9uIChpdGVtKSB7XG5cdCAgICAgICAgcmV0dXJuICFpc0Vycm9yKGNoZWNrZXIoaXRlbSkpO1xuXHQgICAgICB9KSkge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgc2hvcnRUeXBlKTtcblx0ICAgICAgfVxuXHQgICAgfSwgeyB0eXBlOiB0eXBlLCBzaG9ydFR5cGU6IHNob3J0VHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gb2JqZWN0T2ZDaGVja0dldHRlcihjaGVja2VyKSB7XG5cdCAgICB2YXIgY2hlY2tlckRpc3BsYXkgPSBnZXRDaGVja2VyRGlzcGxheShjaGVja2VyLCB7IHNob3J0OiB0cnVlIH0pO1xuXHQgICAgdmFyIHNob3J0VHlwZSA9ICdvYmplY3RPZlsnICsgY2hlY2tlckRpc3BsYXkgKyAnXSc7XG5cblx0ICAgIGZ1bmN0aW9uIHR5cGUob3B0aW9ucykge1xuXHQgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNob3J0KSB7XG5cdCAgICAgICAgcmV0dXJuIHNob3J0VHlwZTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgb3B0aW9ucyk7XG5cdCAgICB9XG5cdCAgICB0eXBlLl9fYXBpQ2hlY2tEYXRhID0geyBvcHRpb25hbDogZmFsc2UsIHR5cGU6ICdvYmplY3RPZicgfTtcblxuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBvYmplY3RPZkNoZWNrZXJEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgdmFyIG5vdE9iamVjdCA9IGNoZWNrZXJzLm9iamVjdCh2YWwsIG5hbWUsIGxvY2F0aW9uKTtcblx0ICAgICAgaWYgKGlzRXJyb3Iobm90T2JqZWN0KSkge1xuXHQgICAgICAgIHJldHVybiBub3RPYmplY3Q7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGFsbFR5cGVzU3VjY2VzcyA9IGVhY2godmFsLCBmdW5jdGlvbiAoaXRlbSwga2V5KSB7XG5cdCAgICAgICAgaWYgKGlzRXJyb3IoY2hlY2tlcihpdGVtLCBrZXksIG5hbWUpKSkge1xuXHQgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSk7XG5cdCAgICAgIGlmICghYWxsVHlwZXNTdWNjZXNzKSB7XG5cdCAgICAgICAgcmV0dXJuIGdldEVycm9yKG5hbWUsIGxvY2F0aW9uLCBzaG9ydFR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUsIHNob3J0VHlwZTogc2hvcnRUeXBlIH0sIGRpc2FibGVkKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiB0eXBlT3JBcnJheU9mQ2hlY2tHZXR0ZXIoY2hlY2tlcikge1xuXHQgICAgdmFyIGNoZWNrZXJEaXNwbGF5ID0gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgeyBzaG9ydDogdHJ1ZSB9KTtcblx0ICAgIHZhciBzaG9ydFR5cGUgPSAndHlwZU9yQXJyYXlPZlsnICsgY2hlY2tlckRpc3BsYXkgKyAnXSc7XG5cblx0ICAgIGZ1bmN0aW9uIHR5cGUob3B0aW9ucykge1xuXHQgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNob3J0KSB7XG5cdCAgICAgICAgcmV0dXJuIHNob3J0VHlwZTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgb3B0aW9ucyk7XG5cdCAgICB9XG5cblx0ICAgIHR5cGUuX19hcGlDaGVja0RhdGEgPSB7IG9wdGlvbmFsOiBmYWxzZSwgdHlwZTogJ3R5cGVPckFycmF5T2YnIH07XG5cdCAgICByZXR1cm4gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIHR5cGVPckFycmF5T2ZEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24sIG9iaikge1xuXHQgICAgICBpZiAoaXNFcnJvcihjaGVja2Vycy5vbmVPZlR5cGUoW2NoZWNrZXIsIGNoZWNrZXJzLmFycmF5T2YoY2hlY2tlcildKSh2YWwsIG5hbWUsIGxvY2F0aW9uLCBvYmopKSkge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgc2hvcnRUeXBlKTtcblx0ICAgICAgfVxuXHQgICAgfSwgeyB0eXBlOiB0eXBlLCBzaG9ydFR5cGU6IHNob3J0VHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0U2hhcGVDaGVja0dldHRlcigpIHtcblx0ICAgIGZ1bmN0aW9uIHNoYXBlQ2hlY2tHZXR0ZXIoc2hhcGUsIG5vbk9iamVjdCkge1xuXHQgICAgICB2YXIgc2hhcGVUeXBlcyA9IHt9O1xuXHQgICAgICBlYWNoKHNoYXBlLCBmdW5jdGlvbiAoY2hlY2tlciwgcHJvcCkge1xuXHQgICAgICAgIHNoYXBlVHlwZXNbcHJvcF0gPSBnZXRDaGVja2VyRGlzcGxheShjaGVja2VyKTtcblx0ICAgICAgfSk7XG5cdCAgICAgIGZ1bmN0aW9uIHR5cGUoKSB7XG5cdCAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuXHQgICAgICAgIHZhciByZXQgPSB7fTtcblx0ICAgICAgICB2YXIgdGVyc2UgPSBvcHRpb25zLnRlcnNlO1xuXHQgICAgICAgIHZhciBvYmogPSBvcHRpb25zLm9iajtcblx0ICAgICAgICB2YXIgYWRkSGVscGVycyA9IG9wdGlvbnMuYWRkSGVscGVycztcblxuXHQgICAgICAgIHZhciBwYXJlbnRSZXF1aXJlZCA9IG9wdGlvbnMucmVxdWlyZWQ7XG5cdCAgICAgICAgZWFjaChzaGFwZSwgZnVuY3Rpb24gKGNoZWNrZXIsIHByb3ApIHtcblx0ICAgICAgICAgIC8qIGVzbGludCBjb21wbGV4aXR5OlsyLCA2XSAqL1xuXHQgICAgICAgICAgdmFyIHNwZWNpZmllZCA9IG9iaiAmJiBvYmouaGFzT3duUHJvcGVydHkocHJvcCk7XG5cdCAgICAgICAgICB2YXIgcmVxdWlyZWQgPSB1bmRlZihwYXJlbnRSZXF1aXJlZCkgPyAhY2hlY2tlci5pc09wdGlvbmFsIDogcGFyZW50UmVxdWlyZWQ7XG5cdCAgICAgICAgICBpZiAoIXRlcnNlIHx8IChzcGVjaWZpZWQgfHwgIWNoZWNrZXIuaXNPcHRpb25hbCkpIHtcblx0ICAgICAgICAgICAgcmV0W3Byb3BdID0gZ2V0Q2hlY2tlckRpc3BsYXkoY2hlY2tlciwgeyB0ZXJzZTogdGVyc2UsIG9iajogb2JqICYmIG9ialtwcm9wXSwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBhZGRIZWxwZXJzOiBhZGRIZWxwZXJzIH0pO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgaWYgKGFkZEhlbHBlcnMpIHtcblx0ICAgICAgICAgICAgbW9kaWZ5VHlwZURpc3BsYXlUb0hlbHBPdXQocmV0LCBwcm9wLCBzcGVjaWZpZWQsIGNoZWNrZXIsIHJlcXVpcmVkKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgICByZXR1cm4gcmV0O1xuXG5cdCAgICAgICAgZnVuY3Rpb24gbW9kaWZ5VHlwZURpc3BsYXlUb0hlbHBPdXQodGhlUmV0LCBwcm9wLCBzcGVjaWZpZWQsIGNoZWNrZXIsIHJlcXVpcmVkKSB7XG5cdCAgICAgICAgICBpZiAoIXNwZWNpZmllZCAmJiByZXF1aXJlZCAmJiAhY2hlY2tlci5pc09wdGlvbmFsKSB7XG5cdCAgICAgICAgICAgIHZhciBpdGVtID0gJ0lURU0nO1xuXHQgICAgICAgICAgICBpZiAoY2hlY2tlci50eXBlICYmIGNoZWNrZXIudHlwZS5fX2FwaUNoZWNrRGF0YSkge1xuXHQgICAgICAgICAgICAgIGl0ZW0gPSBjaGVja2VyLnR5cGUuX19hcGlDaGVja0RhdGEudHlwZS50b1VwcGVyQ2FzZSgpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGFkZEhlbHBlcignbWlzc2luZycsICdNSVNTSU5HIFRISVMgJyArIGl0ZW0sICcgPC0tIFlPVSBBUkUgTUlTU0lORyBUSElTJyk7XG5cdCAgICAgICAgICB9IGVsc2UgaWYgKHNwZWNpZmllZCkge1xuXHQgICAgICAgICAgICB2YXIgZXJyb3IgPSBjaGVja2VyKG9ialtwcm9wXSwgcHJvcCwgbnVsbCwgb2JqKTtcblx0ICAgICAgICAgICAgaWYgKGlzRXJyb3IoZXJyb3IpKSB7XG5cdCAgICAgICAgICAgICAgYWRkSGVscGVyKCdlcnJvcicsICdUSElTIElTIFRIRSBQUk9CTEVNOiAnICsgZXJyb3IubWVzc2FnZSwgJyA8LS0gVEhJUyBJUyBUSEUgUFJPQkxFTTogJyArIGVycm9yLm1lc3NhZ2UpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9XG5cblx0ICAgICAgICAgIGZ1bmN0aW9uIGFkZEhlbHBlcihwcm9wZXJ0eSwgb2JqZWN0TWVzc2FnZSwgc3RyaW5nTWVzc2FnZSkge1xuXHQgICAgICAgICAgICBpZiAodHlwZW9mIHRoZVJldFtwcm9wXSA9PT0gJ3N0cmluZycpIHtcblx0ICAgICAgICAgICAgICB0aGVSZXRbcHJvcF0gKz0gc3RyaW5nTWVzc2FnZTtcblx0ICAgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgICB0aGVSZXRbcHJvcF0uX19hcGlDaGVja0RhdGFbcHJvcGVydHldID0gb2JqZWN0TWVzc2FnZTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIHR5cGUuX19hcGlDaGVja0RhdGEgPSB7IHN0cmljdDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgdHlwZTogJ3NoYXBlJyB9O1xuXHQgICAgICB2YXIgc2hhcGVDaGVja2VyID0gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIHNoYXBlQ2hlY2tlckRlZmluaXRpb24odmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICAgIC8qIGVzbGludCBjb21wbGV4aXR5OlsyLCA2XSAqL1xuXHQgICAgICAgIHZhciBpc09iamVjdCA9ICFub25PYmplY3QgJiYgY2hlY2tlcnMub2JqZWN0KHZhbCwgbmFtZSwgbG9jYXRpb24pO1xuXHQgICAgICAgIGlmIChpc0Vycm9yKGlzT2JqZWN0KSkge1xuXHQgICAgICAgICAgcmV0dXJuIGlzT2JqZWN0O1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgc2hhcGVQcm9wRXJyb3IgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbiA/IGxvY2F0aW9uICsgKG5hbWUgPyAnLycgOiAnJykgOiAnJztcblx0ICAgICAgICBuYW1lID0gbmFtZSB8fCAnJztcblx0ICAgICAgICBlYWNoKHNoYXBlLCBmdW5jdGlvbiAoY2hlY2tlciwgcHJvcCkge1xuXHQgICAgICAgICAgaWYgKHZhbC5oYXNPd25Qcm9wZXJ0eShwcm9wKSB8fCAhY2hlY2tlci5pc09wdGlvbmFsKSB7XG5cdCAgICAgICAgICAgIHNoYXBlUHJvcEVycm9yID0gY2hlY2tlcih2YWxbcHJvcF0sIHByb3AsICcnICsgbG9jYXRpb24gKyBuYW1lLCB2YWwpO1xuXHQgICAgICAgICAgICByZXR1cm4gIWlzRXJyb3Ioc2hhcGVQcm9wRXJyb3IpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXHQgICAgICAgIGlmIChpc0Vycm9yKHNoYXBlUHJvcEVycm9yKSkge1xuXHQgICAgICAgICAgcmV0dXJuIHNoYXBlUHJvcEVycm9yO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSwgeyB0eXBlOiB0eXBlLCBzaG9ydFR5cGU6ICdzaGFwZScgfSwgZGlzYWJsZWQpO1xuXG5cdCAgICAgIGZ1bmN0aW9uIHN0cmljdFR5cGUoKSB7XG5cdCAgICAgICAgcmV0dXJuIHR5cGUuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuXHQgICAgICB9XG5cblx0ICAgICAgc3RyaWN0VHlwZS5fX2FwaUNoZWNrRGF0YSA9IGNvcHkoc2hhcGVDaGVja2VyLnR5cGUuX19hcGlDaGVja0RhdGEpO1xuXHQgICAgICBzdHJpY3RUeXBlLl9fYXBpQ2hlY2tEYXRhLnN0cmljdCA9IHRydWU7XG5cdCAgICAgIHNoYXBlQ2hlY2tlci5zdHJpY3QgPSBzZXR1cENoZWNrZXIoZnVuY3Rpb24gc3RyaWN0U2hhcGVDaGVja2VyRGVmaW5pdGlvbih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgICAgdmFyIHNoYXBlRXJyb3IgPSBzaGFwZUNoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbik7XG5cdCAgICAgICAgaWYgKGlzRXJyb3Ioc2hhcGVFcnJvcikpIHtcblx0ICAgICAgICAgIHJldHVybiBzaGFwZUVycm9yO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgYWxsb3dlZFByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzaGFwZSk7XG5cdCAgICAgICAgdmFyIGV4dHJhUHJvcHMgPSBPYmplY3Qua2V5cyh2YWwpLmZpbHRlcihmdW5jdGlvbiAocHJvcCkge1xuXHQgICAgICAgICAgcmV0dXJuIGFsbG93ZWRQcm9wZXJ0aWVzLmluZGV4T2YocHJvcCkgPT09IC0xO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICAgIGlmIChleHRyYVByb3BzLmxlbmd0aCkge1xuXHQgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihuQXRMKG5hbWUsIGxvY2F0aW9uKSArICcgY2Fubm90IGhhdmUgZXh0cmEgcHJvcGVydGllczogJyArIHQoZXh0cmFQcm9wcy5qb2luKCdgLCBgJykpICsgJy4nICsgKCdJdCBpcyBsaW1pdGVkIHRvICcgKyB0KGFsbG93ZWRQcm9wZXJ0aWVzLmpvaW4oJ2AsIGAnKSkpKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0sIHsgdHlwZTogc3RyaWN0VHlwZSwgc2hvcnRUeXBlOiAnc3RyaWN0IHNoYXBlJyB9LCBkaXNhYmxlZCk7XG5cblx0ICAgICAgcmV0dXJuIHNoYXBlQ2hlY2tlcjtcblx0ICAgIH1cblxuXHQgICAgc2hhcGVDaGVja0dldHRlci5pZk5vdCA9IGZ1bmN0aW9uIGlmTm90KG90aGVyUHJvcHMsIHByb3BDaGVja2VyKSB7XG5cdCAgICAgIGlmICghQXJyYXkuaXNBcnJheShvdGhlclByb3BzKSkge1xuXHQgICAgICAgIG90aGVyUHJvcHMgPSBbb3RoZXJQcm9wc107XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGRlc2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuXHQgICAgICBpZiAob3RoZXJQcm9wcy5sZW5ndGggPT09IDEpIHtcblx0ICAgICAgICBkZXNjcmlwdGlvbiA9ICdzcGVjaWZpZWQgb25seSBpZiAnICsgb3RoZXJQcm9wc1swXSArICcgaXMgbm90IHNwZWNpZmllZCc7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgZGVzY3JpcHRpb24gPSAnc3BlY2lmaWVkIG9ubHkgaWYgbm9uZSBvZiB0aGUgZm9sbG93aW5nIGFyZSBzcGVjaWZpZWQ6IFsnICsgbGlzdChvdGhlclByb3BzLCAnLCAnLCAnYW5kICcpICsgJ10nO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciBzaG9ydFR5cGUgPSAnaWZOb3RbJyArIG90aGVyUHJvcHMuam9pbignLCAnKSArICddJztcblx0ICAgICAgdmFyIHR5cGUgPSBnZXRUeXBlRm9yU2hhcGVDaGlsZChwcm9wQ2hlY2tlciwgZGVzY3JpcHRpb24sIHNob3J0VHlwZSk7XG5cdCAgICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gaWZOb3RDaGVja2VyKHByb3AsIHByb3BOYW1lLCBsb2NhdGlvbiwgb2JqKSB7XG5cdCAgICAgICAgdmFyIHByb3BFeGlzdHMgPSBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KHByb3BOYW1lKTtcblx0ICAgICAgICB2YXIgb3RoZXJQcm9wc0V4aXN0ID0gb3RoZXJQcm9wcy5zb21lKGZ1bmN0aW9uIChvdGhlclByb3ApIHtcblx0ICAgICAgICAgIHJldHVybiBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KG90aGVyUHJvcCk7XG5cdCAgICAgICAgfSk7XG5cdCAgICAgICAgaWYgKHByb3BFeGlzdHMgPT09IG90aGVyUHJvcHNFeGlzdCkge1xuXHQgICAgICAgICAgcmV0dXJuIGdldEVycm9yKHByb3BOYW1lLCBsb2NhdGlvbiwgdHlwZSk7XG5cdCAgICAgICAgfSBlbHNlIGlmIChwcm9wRXhpc3RzKSB7XG5cdCAgICAgICAgICByZXR1cm4gcHJvcENoZWNrZXIocHJvcCwgcHJvcE5hbWUsIGxvY2F0aW9uLCBvYmopO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSwgeyBub3RSZXF1aXJlZDogdHJ1ZSwgdHlwZTogdHlwZSwgc2hvcnRUeXBlOiBzaG9ydFR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgICAgfTtcblxuXHQgICAgc2hhcGVDaGVja0dldHRlci5vbmx5SWYgPSBmdW5jdGlvbiBvbmx5SWYob3RoZXJQcm9wcywgcHJvcENoZWNrZXIpIHtcblx0ICAgICAgb3RoZXJQcm9wcyA9IGFycmF5aWZ5KG90aGVyUHJvcHMpO1xuXHQgICAgICB2YXIgZGVzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG5cdCAgICAgIGlmIChvdGhlclByb3BzLmxlbmd0aCA9PT0gMSkge1xuXHQgICAgICAgIGRlc2NyaXB0aW9uID0gJ3NwZWNpZmllZCBvbmx5IGlmICcgKyBvdGhlclByb3BzWzBdICsgJyBpcyBhbHNvIHNwZWNpZmllZCc7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgZGVzY3JpcHRpb24gPSAnc3BlY2lmaWVkIG9ubHkgaWYgYWxsIG9mIHRoZSBmb2xsb3dpbmcgYXJlIHNwZWNpZmllZDogWycgKyBsaXN0KG90aGVyUHJvcHMsICcsICcsICdhbmQgJykgKyAnXSc7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHNob3J0VHlwZSA9ICdvbmx5SWZbJyArIG90aGVyUHJvcHMuam9pbignLCAnKSArICddJztcblx0ICAgICAgdmFyIHR5cGUgPSBnZXRUeXBlRm9yU2hhcGVDaGlsZChwcm9wQ2hlY2tlciwgZGVzY3JpcHRpb24sIHNob3J0VHlwZSk7XG5cdCAgICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gb25seUlmQ2hlY2tlckRlZmluaXRpb24ocHJvcCwgcHJvcE5hbWUsIGxvY2F0aW9uLCBvYmopIHtcblx0ICAgICAgICB2YXIgb3RoZXJzUHJlc2VudCA9IG90aGVyUHJvcHMuZXZlcnkoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdCAgICAgICAgICByZXR1cm4gb2JqLmhhc093blByb3BlcnR5KHByb3BlcnR5KTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgICBpZiAoIW90aGVyc1ByZXNlbnQpIHtcblx0ICAgICAgICAgIHJldHVybiBnZXRFcnJvcihwcm9wTmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICByZXR1cm4gcHJvcENoZWNrZXIocHJvcCwgcHJvcE5hbWUsIGxvY2F0aW9uLCBvYmopO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSwgeyB0eXBlOiB0eXBlLCBzaG9ydFR5cGU6IHNob3J0VHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgICB9O1xuXG5cdCAgICBzaGFwZUNoZWNrR2V0dGVyLnJlcXVpcmVkSWZOb3QgPSBmdW5jdGlvbiBzaGFwZVJlcXVpcmVkSWZOb3Qob3RoZXJQcm9wcywgcHJvcENoZWNrZXIpIHtcblx0ICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG90aGVyUHJvcHMpKSB7XG5cdCAgICAgICAgb3RoZXJQcm9wcyA9IFtvdGhlclByb3BzXTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gZ2V0UmVxdWlyZWRJZk5vdENoZWNrZXIoZmFsc2UsIG90aGVyUHJvcHMsIHByb3BDaGVja2VyKTtcblx0ICAgIH07XG5cblx0ICAgIHNoYXBlQ2hlY2tHZXR0ZXIucmVxdWlyZWRJZk5vdC5hbGwgPSBmdW5jdGlvbiBzaGFwZVJlcXVpcmVkSWZOb3RBbGwob3RoZXJQcm9wcywgcHJvcENoZWNrZXIpIHtcblx0ICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG90aGVyUHJvcHMpKSB7XG5cdCAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXF1aXJlZElmTm90LmFsbCBtdXN0IGJlIHBhc3NlZCBhbiBhcnJheScpO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBnZXRSZXF1aXJlZElmTm90Q2hlY2tlcih0cnVlLCBvdGhlclByb3BzLCBwcm9wQ2hlY2tlcik7XG5cdCAgICB9O1xuXG5cdCAgICBmdW5jdGlvbiBnZXRSZXF1aXJlZElmTm90Q2hlY2tlcihhbGwsIG90aGVyUHJvcHMsIHByb3BDaGVja2VyKSB7XG5cdCAgICAgIHZhciBwcm9wcyA9IHQob3RoZXJQcm9wcy5qb2luKCcsICcpKTtcblx0ICAgICAgdmFyIGlmUHJvcHMgPSAnaWYgJyArIChhbGwgPyAnYWxsIG9mJyA6ICdhdCBsZWFzdCBvbmUgb2YnKTtcblx0ICAgICAgdmFyIGRlc2NyaXB0aW9uID0gJ3NwZWNpZmllZCAnICsgaWZQcm9wcyArICcgdGhlc2UgYXJlIG5vdCBzcGVjaWZpZWQ6ICcgKyBwcm9wcyArICcgKG90aGVyd2lzZSBpdFxcJ3Mgb3B0aW9uYWwpJztcblx0ICAgICAgdmFyIHNob3J0VHlwZSA9ICdyZXF1aXJlZElmTm90JyArIChhbGwgPyAnLmFsbCcgOiAnJykgKyAnWycgKyBvdGhlclByb3BzLmpvaW4oJywgJykgKyAnfV0nO1xuXHQgICAgICB2YXIgdHlwZSA9IGdldFR5cGVGb3JTaGFwZUNoaWxkKHByb3BDaGVja2VyLCBkZXNjcmlwdGlvbiwgc2hvcnRUeXBlKTtcblx0ICAgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBzaGFwZVJlcXVpcmVkSWZOb3REZWZpbml0aW9uKHByb3AsIHByb3BOYW1lLCBsb2NhdGlvbiwgb2JqKSB7XG5cdCAgICAgICAgdmFyIHByb3BFeGlzdHMgPSBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KHByb3BOYW1lKTtcblx0ICAgICAgICB2YXIgaXRlcmF0aW9uID0gYWxsID8gJ2V2ZXJ5JyA6ICdzb21lJztcblx0ICAgICAgICB2YXIgb3RoZXJQcm9wc0V4aXN0ID0gb3RoZXJQcm9wc1tpdGVyYXRpb25dKGZ1bmN0aW9uIChvdGhlclByb3ApIHtcblx0ICAgICAgICAgIHJldHVybiBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KG90aGVyUHJvcCk7XG5cdCAgICAgICAgfSk7XG5cdCAgICAgICAgaWYgKCFvdGhlclByb3BzRXhpc3QgJiYgIXByb3BFeGlzdHMpIHtcblx0ICAgICAgICAgIHJldHVybiBnZXRFcnJvcihwcm9wTmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICAgIH0gZWxzZSBpZiAocHJvcEV4aXN0cykge1xuXHQgICAgICAgICAgcmV0dXJuIHByb3BDaGVja2VyKHByb3AsIHByb3BOYW1lLCBsb2NhdGlvbiwgb2JqKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0sIHsgdHlwZTogdHlwZSwgbm90UmVxdWlyZWQ6IHRydWUgfSwgZGlzYWJsZWQpO1xuXHQgICAgfVxuXG5cdCAgICByZXR1cm4gc2hhcGVDaGVja0dldHRlcjtcblxuXHQgICAgZnVuY3Rpb24gZ2V0VHlwZUZvclNoYXBlQ2hpbGQocHJvcENoZWNrZXIsIGRlc2NyaXB0aW9uLCBzaG9ydFR5cGUpIHtcblx0ICAgICAgZnVuY3Rpb24gdHlwZShvcHRpb25zKSB7XG5cdCAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zaG9ydCkge1xuXHQgICAgICAgICAgcmV0dXJuIHNob3J0VHlwZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGdldENoZWNrZXJEaXNwbGF5KHByb3BDaGVja2VyKTtcblx0ICAgICAgfVxuXHQgICAgICB0eXBlLl9fYXBpQ2hlY2tEYXRhID0geyBvcHRpb25hbDogZmFsc2UsIHR5cGU6ICdpZk5vdCcsIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiB9O1xuXHQgICAgICByZXR1cm4gdHlwZTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICBmdW5jdGlvbiBhcmd1bWVudHNDaGVja2VyR2V0dGVyKCkge1xuXHQgICAgdmFyIHR5cGUgPSAnZnVuY3Rpb24gYXJndW1lbnRzJztcblx0ICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gYXJnc0NoZWNrZXJEZWZpbml0aW9uKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSB8fCBpc0Vycm9yKGNoZWNrZXJzLm9iamVjdCh2YWwpKSB8fCBpc0Vycm9yKGNoZWNrZXJzLm51bWJlcih2YWwubGVuZ3RoKSkpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGFueUNoZWNrR2V0dGVyKCkge1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBhbnlDaGVja2VyRGVmaW5pdGlvbigpIHtcblx0ICAgICAgLy8gZG9uJ3QgZG8gYW55dGhpbmdcblx0ICAgIH0sIHsgdHlwZTogJ2FueScgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIG51bGxDaGVja0dldHRlcigpIHtcblx0ICAgIHZhciB0eXBlID0gJ251bGwnO1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBudWxsQ2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh2YWwgIT09IG51bGwpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIHJhbmdlQ2hlY2tHZXR0ZXIobWluLCBtYXgpIHtcblx0ICAgIHZhciB0eXBlID0gJ1JhbmdlICgnICsgbWluICsgJyAtICcgKyBtYXggKyAnKSc7XG5cdCAgICByZXR1cm4gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIHJhbmdlQ2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh0eXBlb2YgdmFsICE9PSAnbnVtYmVyJyB8fCB2YWwgPCBtaW4gfHwgdmFsID4gbWF4KSB7XG5cdCAgICAgICAgcmV0dXJuIGdldEVycm9yKG5hbWUsIGxvY2F0aW9uLCB0eXBlKTtcblx0ICAgICAgfVxuXHQgICAgfSwgeyB0eXBlOiB0eXBlIH0sIGRpc2FibGVkKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBsZXNzVGhhbkNoZWNrR2V0dGVyKG1pbikge1xuXHQgICAgdmFyIHR5cGUgPSAnbGVzc1RoYW5bJyArIG1pbiArICddJztcblx0ICAgIHJldHVybiBzZXR1cENoZWNrZXIoZnVuY3Rpb24gbGVzc1RoYW5DaGVja2VyKHZhbCwgbmFtZSwgbG9jYXRpb24pIHtcblx0ICAgICAgaWYgKHR5cGVvZiB2YWwgIT09ICdudW1iZXInIHx8IHZhbCA+IG1pbikge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgdHlwZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sIHsgdHlwZTogdHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ3JlYXRlclRoYW5DaGVja0dldHRlcihtYXgpIHtcblx0ICAgIHZhciB0eXBlID0gJ2dyZWF0ZXJUaGFuWycgKyBtYXggKyAnXSc7XG5cdCAgICByZXR1cm4gc2V0dXBDaGVja2VyKGZ1bmN0aW9uIGdyZWF0ZXJUaGFuQ2hlY2tlcih2YWwsIG5hbWUsIGxvY2F0aW9uKSB7XG5cdCAgICAgIGlmICh0eXBlb2YgdmFsICE9PSAnbnVtYmVyJyB8fCB2YWwgPCBtYXgpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0RXJyb3IobmFtZSwgbG9jYXRpb24sIHR5cGUpO1xuXHQgICAgICB9XG5cdCAgICB9LCB7IHR5cGU6IHR5cGUgfSwgZGlzYWJsZWQpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGVtcHR5T2JqZWN0Q2hlY2tHZXR0ZXIoKSB7XG5cdCAgICB2YXIgdHlwZSA9ICdlbXB0eSBvYmplY3QnO1xuXHQgICAgcmV0dXJuIHNldHVwQ2hlY2tlcihmdW5jdGlvbiBlbXB0eU9iamVjdENoZWNrZXIodmFsLCBuYW1lLCBsb2NhdGlvbikge1xuXHQgICAgICBpZiAodHlwZU9mKHZhbCkgIT09ICdvYmplY3QnIHx8IHZhbCA9PT0gbnVsbCB8fCBPYmplY3Qua2V5cyh2YWwpLmxlbmd0aCkge1xuXHQgICAgICAgIHJldHVybiBnZXRFcnJvcihuYW1lLCBsb2NhdGlvbiwgdHlwZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sIHsgdHlwZTogdHlwZSB9LCBkaXNhYmxlZCk7XG5cdCAgfVxuXHR9XG5cbi8qKiovIH1cbi8qKioqKiovIF0pXG59KTtcbjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vYXBpLWNoZWNrL2Rpc3QvYXBpLWNoZWNrLmpzXG4vLyBtb2R1bGUgaWQgPSAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 3 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("// angular-formly version 6.8.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory(__webpack_require__(2), __webpack_require__(4));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"api-check\", \"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ngFormly\"] = factory(require(\"api-check\"), require(\"angular\"));\n\telse\n\t\troot[\"ngFormly\"] = factory(root[\"apiCheck\"], root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_16__, __WEBPACK_EXTERNAL_MODULE_17__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar index = _interopRequire(__webpack_require__(1));\n\n\tmodule.exports = index;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tvar formlyApiCheck = _interopRequire(__webpack_require__(2));\n\n\tvar formlyErrorAndWarningsUrlPrefix = _interopRequire(__webpack_require__(3));\n\n\tvar formlyUsability = _interopRequire(__webpack_require__(4));\n\n\tvar formlyConfig = _interopRequire(__webpack_require__(5));\n\n\tvar formlyValidationMessages = _interopRequire(__webpack_require__(6));\n\n\tvar formlyUtil = _interopRequire(__webpack_require__(7));\n\n\tvar formlyWarn = _interopRequire(__webpack_require__(8));\n\n\tvar formlyCustomValidation = _interopRequire(__webpack_require__(9));\n\n\tvar formlyField = _interopRequire(__webpack_require__(10));\n\n\tvar formlyFocus = _interopRequire(__webpack_require__(11));\n\n\tvar formlyForm = _interopRequire(__webpack_require__(12));\n\n\tvar formlyNgModelAttrsManipulator = _interopRequire(__webpack_require__(13));\n\n\tvar formlyCustomTags = _interopRequire(__webpack_require__(14));\n\n\tvar ngModuleName = \"formly\";\n\n\tmodule.exports = ngModuleName;\n\n\tvar ngModule = angular.module(ngModuleName, []);\n\n\tngModule.constant(\"formlyApiCheck\", formlyApiCheck);\n\tngModule.constant(\"formlyErrorAndWarningsUrlPrefix\", formlyErrorAndWarningsUrlPrefix);\n\tngModule.constant(\"formlyVersion\", (\"6.8.2\")); // <-- webpack variable\n\n\tngModule.provider(\"formlyUsability\", formlyUsability);\n\tngModule.provider(\"formlyConfig\", formlyConfig);\n\n\tngModule.factory(\"formlyValidationMessages\", formlyValidationMessages);\n\tngModule.factory(\"formlyUtil\", formlyUtil);\n\tngModule.factory(\"formlyWarn\", formlyWarn);\n\n\tngModule.directive(\"formlyCustomValidation\", formlyCustomValidation);\n\tngModule.directive(\"formlyField\", formlyField);\n\tngModule.directive(\"formlyFocus\", formlyFocus);\n\tngModule.directive(\"formlyForm\", formlyForm);\n\n\tngModule.run(formlyNgModelAttrsManipulator);\n\tngModule.run(formlyCustomTags);\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar apiCheckFactory = _interopRequire(__webpack_require__(16));\n\n\tvar apiCheck = apiCheckFactory({\n\t output: {\n\t prefix: \"angular-formly:\",\n\t docsBaseUrl: __webpack_require__(3)\n\t }\n\t});\n\n\tfunction shapeRequiredIfNot(otherProps, propChecker) {\n\t if (!angular.isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t var type = \"specified if these are not specified: `\" + otherProps.join(\", \") + \"` (otherwise it's optional)\";\n\t function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (!otherPropsExist && !propExists) {\n\t return apiCheck.utils.getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }\n\t shapeRequiredIfNotDefinition.type = type;\n\t return apiCheck.utils.checkerHelpers.setupChecker(shapeRequiredIfNotDefinition);\n\t}\n\n\tvar formlyExpression = apiCheck.oneOfType([apiCheck.string, apiCheck.func]);\n\tvar specifyWrapperType = apiCheck.oneOfType([apiCheck.oneOf([null]), apiCheck.typeOrArrayOf(apiCheck.string)]);\n\n\tvar apiCheckProperty = apiCheck.objectOf(apiCheck.func);\n\n\tvar apiCheckInstanceProperty = apiCheck.shape.onlyIf(\"apiCheck\", apiCheck.func.withProperties({\n\t warn: apiCheck.func,\n\t \"throw\": apiCheck.func,\n\t shape: apiCheck.func\n\t}));\n\n\tvar apiCheckFunctionProperty = apiCheck.shape.onlyIf(\"apiCheck\", apiCheck.oneOf([\"throw\", \"warn\"]));\n\n\tvar formlyWrapperType = apiCheck.shape({\n\t name: shapeRequiredIfNot(\"types\", apiCheck.string).optional,\n\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.string).optional,\n\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.string).optional,\n\t types: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t overwriteOk: apiCheck.bool.optional,\n\t validateOptions: apiCheck.func.optional,\n\t apiCheck: apiCheckProperty.optional,\n\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t apiCheckOptions: apiCheck.object.optional\n\t}).strict;\n\n\tvar expressionProperties = apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t expression: formlyExpression,\n\t message: formlyExpression.optional\n\t}).strict]));\n\n\tvar modelChecker = apiCheck.oneOfType([apiCheck.oneOf([\"formState\"]), apiCheck.object]);\n\n\tvar fieldOptionsApiShape = {\n\t $$hashKey: apiCheck.any.optional,\n\t type: apiCheck.shape.ifNot([\"template\", \"templateUrl\"], apiCheck.string).optional,\n\t template: apiCheck.shape.ifNot([\"type\", \"templateUrl\"], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t templateUrl: apiCheck.shape.ifNot([\"type\", \"template\"], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t key: apiCheck.oneOfType([apiCheck.string, apiCheck.number]).optional,\n\t model: modelChecker.optional,\n\t className: apiCheck.string.optional,\n\t id: apiCheck.string.optional,\n\t expressionProperties: expressionProperties.optional,\n\t data: apiCheck.object.optional,\n\t templateOptions: apiCheck.object.optional,\n\t wrapper: specifyWrapperType.optional,\n\t modelOptions: apiCheck.shape({\n\t updateOn: apiCheck.string.optional,\n\t debounce: apiCheck.oneOfType([apiCheck.objectOf(apiCheck.number), apiCheck.number]).optional,\n\t allowInvalid: apiCheck.bool.optional,\n\t getterSetter: apiCheck.bool.optional,\n\t timezone: apiCheck.string.optional\n\t }).optional,\n\t watcher: apiCheck.typeOrArrayOf(apiCheck.shape({\n\t expression: formlyExpression.optional,\n\t listener: formlyExpression\n\t })).optional,\n\t validators: apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t expression: formlyExpression,\n\t message: formlyExpression.optional\n\t }).strict])).optional,\n\t noFormControl: apiCheck.bool.optional,\n\t hide: apiCheck.bool.optional,\n\t hideExpression: formlyExpression.optional,\n\t ngModelAttrs: apiCheck.objectOf(apiCheck.shape({\n\t expression: apiCheck.shape.ifNot([\"value\", \"attribute\", \"bound\"], apiCheck.any).optional,\n\t value: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional,\n\t attribute: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional,\n\t bound: apiCheck.shape.ifNot(\"expression\", apiCheck.any).optional\n\t }).strict).optional,\n\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional,\n\t optionsTypes: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t link: apiCheck.func.optional,\n\t controller: apiCheck.oneOfType([apiCheck.string, apiCheck.func, apiCheck.array]).optional,\n\t validation: apiCheck.shape({\n\t show: apiCheck.oneOfType([apiCheck.bool, apiCheck.oneOf([null])]).optional,\n\t messages: apiCheck.objectOf(formlyExpression).optional,\n\t errorExistsAndShouldBeVisible: apiCheck.bool.optional\n\t }).optional,\n\t formControl: apiCheck.object.optional,\n\t value: apiCheck.func.optional,\n\t runExpressions: apiCheck.func.optional,\n\t resetModel: apiCheck.func.optional,\n\t updateInitialValue: apiCheck.func.optional,\n\t initialValue: apiCheck.any.optional,\n\t defaultValue: apiCheck.any.optional\n\t};\n\n\tvar formlyFieldOptions = apiCheck.shape(fieldOptionsApiShape).strict;\n\n\tvar formOptionsApi = apiCheck.shape({\n\t formState: apiCheck.object.optional,\n\t resetModel: apiCheck.func.optional,\n\t updateInitialValue: apiCheck.func.optional,\n\t removeChromeAutoComplete: apiCheck.bool.optional\n\t}).strict;\n\n\tvar fieldGroup = apiCheck.shape({\n\t $$hashKey: apiCheck.any.optional,\n\t // danger. Nested field groups wont get api-checked...\n\t fieldGroup: apiCheck.arrayOf(apiCheck.oneOfType([formlyFieldOptions, apiCheck.object])),\n\t className: apiCheck.string.optional,\n\t options: formOptionsApi.optional,\n\t hide: apiCheck.bool.optional,\n\t hideExpression: formlyExpression.optional,\n\t model: modelChecker.optional,\n\t form: apiCheck.object.optional,\n\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional\n\t}).strict;\n\n\tvar typeOptionsDefaultOptions = angular.copy(fieldOptionsApiShape);\n\ttypeOptionsDefaultOptions.key = apiCheck.string.optional;\n\n\tvar formlyTypeOptions = apiCheck.shape({\n\t name: apiCheck.string,\n\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t controller: apiCheck.oneOfType([apiCheck.func, apiCheck.string, apiCheck.array]).optional,\n\t link: apiCheck.func.optional,\n\t defaultOptions: apiCheck.oneOfType([apiCheck.func, apiCheck.shape(typeOptionsDefaultOptions)]).optional,\n\t \"extends\": apiCheck.string.optional,\n\t wrapper: specifyWrapperType.optional,\n\t data: apiCheck.object.optional,\n\t validateOptions: apiCheck.func.optional,\n\t apiCheck: apiCheckProperty.optional,\n\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t apiCheckOptions: apiCheck.object.optional,\n\t overwriteOk: apiCheck.bool.optional\n\t}).strict;\n\tangular.extend(apiCheck, {\n\t formlyTypeOptions: formlyTypeOptions, formlyFieldOptions: formlyFieldOptions, formlyExpression: formlyExpression, formlyWrapperType: formlyWrapperType, fieldGroup: fieldGroup, formOptionsApi: formOptionsApi\n\t});\n\n\tmodule.exports = apiCheck;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = \"https://github.com/formly-js/angular-formly/blob/\" + (\"6.8.2\") + \"/other/ERRORS_AND_WARNINGS.md#\";\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyUsability;\n\n\t// @ngInject\n\tfunction formlyUsability(formlyApiCheck, formlyErrorAndWarningsUrlPrefix) {\n\t var _this = this;\n\n\t angular.extend(this, {\n\t getFormlyError: getFormlyError,\n\t getFieldError: getFieldError,\n\t checkWrapper: checkWrapper,\n\t checkWrapperTemplate: checkWrapperTemplate,\n\t $get: function () {\n\t return _this;\n\t }\n\t });\n\n\t function getFieldError(errorInfoSlug, message, field) {\n\t if (arguments.length < 3) {\n\t field = message;\n\t message = errorInfoSlug;\n\t errorInfoSlug = null;\n\t }\n\t return new Error(getErrorMessage(errorInfoSlug, message) + (\" Field definition: \" + angular.toJson(field)));\n\t }\n\n\t function getFormlyError(errorInfoSlug, message) {\n\t if (!message) {\n\t message = errorInfoSlug;\n\t errorInfoSlug = null;\n\t }\n\t return new Error(getErrorMessage(errorInfoSlug, message));\n\t }\n\n\t function getErrorMessage(errorInfoSlug, message) {\n\t var url = \"\";\n\t if (errorInfoSlug !== null) {\n\t url = \"\" + formlyErrorAndWarningsUrlPrefix + \"\" + errorInfoSlug;\n\t }\n\t return \"Formly Error: \" + message + \". \" + url;\n\t }\n\n\t function checkWrapper(wrapper) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyWrapperType, wrapper, {\n\t prefix: \"formlyConfig.setWrapper\",\n\t urlSuffix: \"setwrapper-validation-failed\"\n\t });\n\t }\n\n\t function checkWrapperTemplate(template, additionalInfo) {\n\t var formlyTransclude = \" \";\n\t if (template.indexOf(formlyTransclude) === -1) {\n\t throw getFormlyError(\"Template wrapper templates must use \\\"\" + formlyTransclude + \"\\\" somewhere in them. \" + (\"This one does not have \\\" \\\" in it: \" + template) + \"\\n\" + (\"Additional information: \" + JSON.stringify(additionalInfo)));\n\t }\n\t }\n\t}\n\tformlyUsability.$inject = [\"formlyApiCheck\", \"formlyErrorAndWarningsUrlPrefix\"];\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tvar utils = _interopRequire(__webpack_require__(18));\n\n\tmodule.exports = formlyConfig;\n\n\t// @ngInject\n\tfunction formlyConfig(formlyUsabilityProvider, formlyApiCheck) {\n\t var _this2 = this;\n\n\t var typeMap = {};\n\t var templateWrappersMap = {};\n\t var defaultWrapperName = \"default\";\n\t var _this = this;\n\t var getError = formlyUsabilityProvider.getFormlyError;\n\n\t angular.extend(this, {\n\t setType: setType,\n\t getType: getType,\n\t setWrapper: setWrapper,\n\t getWrapper: getWrapper,\n\t getWrapperByType: getWrapperByType,\n\t removeWrapperByName: removeWrapperByName,\n\t removeWrappersForType: removeWrappersForType,\n\t disableWarnings: false,\n\t extras: {\n\t disableNgModelAttrsManipulator: false,\n\t ngModelAttrsManipulatorPreferUnbound: false,\n\t removeChromeAutoComplete: false,\n\t defaultHideDirective: \"ng-if\",\n\t getFieldId: null\n\t },\n\t templateManipulators: {\n\t preWrapper: [],\n\t postWrapper: []\n\t },\n\t $get: function () {\n\t return _this2;\n\t }\n\t });\n\n\t function setType(options) {\n\t if (angular.isArray(options)) {\n\t angular.forEach(options, setType);\n\t } else if (angular.isObject(options)) {\n\t checkType(options);\n\t if (options[\"extends\"]) {\n\t extendTypeOptions(options);\n\t }\n\t typeMap[options.name] = options;\n\t } else {\n\t throw getError(\"You must provide an object or array for setType. You provided: \" + JSON.stringify(arguments));\n\t }\n\t }\n\n\t function checkType(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyTypeOptions, options, {\n\t prefix: \"formlyConfig.setType\",\n\t url: \"settype-validation-failed\"\n\t });\n\t if (!options.overwriteOk) {\n\t checkOverwrite(options.name, typeMap, options, \"types\");\n\t } else {\n\t options.overwriteOk = undefined;\n\t }\n\t }\n\n\t function extendTypeOptions(options) {\n\t var extendsType = getType(options[\"extends\"], true, options);\n\t extendTypeControllerFunction(options, extendsType);\n\t extendTypeLinkFunction(options, extendsType);\n\t extendTypeValidateOptionsFunction(options, extendsType);\n\t extendTypeDefaultOptions(options, extendsType);\n\t utils.reverseDeepMerge(options, extendsType);\n\t extendTemplate(options, extendsType);\n\t }\n\n\t function extendTemplate(options, extendsType) {\n\t if (options.template && extendsType.templateUrl) {\n\t delete options.templateUrl;\n\t } else if (options.templateUrl && extendsType.template) {\n\t delete options.template;\n\t }\n\t }\n\n\t function extendTypeControllerFunction(options, extendsType) {\n\t var extendsCtrl = extendsType.controller;\n\t if (!angular.isDefined(extendsCtrl)) {\n\t return;\n\t }\n\t var optionsCtrl = options.controller;\n\t if (angular.isDefined(optionsCtrl)) {\n\t options.controller = function ($scope, $controller) {\n\t $controller(extendsCtrl, { $scope: $scope });\n\t $controller(optionsCtrl, { $scope: $scope });\n\t };\n\t options.controller.$inject = [\"$scope\", \"$controller\"];\n\t } else {\n\t options.controller = extendsCtrl;\n\t }\n\t }\n\n\t function extendTypeLinkFunction(options, extendsType) {\n\t var extendsFn = extendsType.link;\n\t if (!angular.isDefined(extendsFn)) {\n\t return;\n\t }\n\t var optionsFn = options.link;\n\t if (angular.isDefined(optionsFn)) {\n\t options.link = function () {\n\t extendsFn.apply(undefined, arguments);\n\t optionsFn.apply(undefined, arguments);\n\t };\n\t } else {\n\t options.link = extendsFn;\n\t }\n\t }\n\n\t function extendTypeValidateOptionsFunction(options, extendsType) {\n\t var extendsFn = extendsType.validateOptions;\n\t if (!angular.isDefined(extendsFn)) {\n\t return;\n\t }\n\t var optionsFn = options.validateOptions;\n\t var originalDefaultOptions = options.defaultOptions;\n\t if (angular.isDefined(optionsFn)) {\n\t options.validateOptions = function (options) {\n\t optionsFn(options);\n\t var mergedOptions = angular.copy(options);\n\t var defaultOptions = originalDefaultOptions;\n\t if (defaultOptions) {\n\t if (angular.isFunction(defaultOptions)) {\n\t defaultOptions = defaultOptions(mergedOptions);\n\t }\n\t utils.reverseDeepMerge(mergedOptions, defaultOptions);\n\t }\n\t extendsFn(mergedOptions);\n\t };\n\t } else {\n\t options.validateOptions = extendsFn;\n\t }\n\t }\n\n\t function extendTypeDefaultOptions(options, extendsType) {\n\t var extendsDO = extendsType.defaultOptions;\n\t if (!angular.isDefined(extendsDO)) {\n\t return;\n\t }\n\t var optionsDO = options.defaultOptions;\n\t var optionsDOIsFn = angular.isFunction(optionsDO);\n\t var extendsDOIsFn = angular.isFunction(extendsDO);\n\t if (extendsDOIsFn) {\n\t options.defaultOptions = function defaultOptions(options) {\n\t var extendsDefaultOptions = extendsDO(options);\n\t var mergedDefaultOptions = {};\n\t utils.reverseDeepMerge(mergedDefaultOptions, options, extendsDefaultOptions);\n\t var extenderOptionsDefaultOptions = optionsDO;\n\t if (optionsDOIsFn) {\n\t extenderOptionsDefaultOptions = extenderOptionsDefaultOptions(mergedDefaultOptions);\n\t }\n\t utils.reverseDeepMerge(extendsDefaultOptions, extenderOptionsDefaultOptions);\n\t return extendsDefaultOptions;\n\t };\n\t } else if (optionsDOIsFn) {\n\t options.defaultOptions = function defaultOptions(options) {\n\t var newDefaultOptions = {};\n\t utils.reverseDeepMerge(newDefaultOptions, options, extendsDO);\n\t return optionsDO(newDefaultOptions);\n\t };\n\t }\n\t }\n\n\t function getType(name, throwError, errorContext) {\n\t if (!name) {\n\t return undefined;\n\t }\n\t var type = typeMap[name];\n\t if (!type && throwError === true) {\n\t throw getError(\"There is no type by the name of \\\"\" + name + \"\\\": \" + JSON.stringify(errorContext));\n\t } else {\n\t return type;\n\t }\n\t }\n\n\t function setWrapper(_x, _x2) {\n\t var _again = true;\n\n\t _function: while (_again) {\n\t _again = false;\n\t var options = _x,\n\t name = _x2;\n\n\t if (angular.isArray(options)) {\n\t return options.map(function (wrapperOptions) {\n\t return setWrapper(wrapperOptions);\n\t });\n\t } else if (angular.isObject(options)) {\n\t options.types = getOptionsTypes(options);\n\t options.name = getOptionsName(options, name);\n\t checkWrapperAPI(options);\n\t templateWrappersMap[options.name] = options;\n\t return options;\n\t } else if (angular.isString(options)) {\n\t _x = {\n\t template: options,\n\t name: name\n\t };\n\t _again = true;\n\t continue _function;\n\t }\n\t }\n\t }\n\n\t function getOptionsTypes(options) {\n\t if (angular.isString(options.types)) {\n\t return [options.types];\n\t }\n\t if (!angular.isDefined(options.types)) {\n\t return [];\n\t } else {\n\t return options.types;\n\t }\n\t }\n\n\t function getOptionsName(options, name) {\n\t return options.name || name || options.types.join(\" \") || defaultWrapperName;\n\t }\n\n\t function checkWrapperAPI(options) {\n\t formlyUsabilityProvider.checkWrapper(options);\n\t if (options.template) {\n\t formlyUsabilityProvider.checkWrapperTemplate(options.template, options);\n\t }\n\t if (!options.overwriteOk) {\n\t checkOverwrite(options.name, templateWrappersMap, options, \"templateWrappers\");\n\t } else {\n\t delete options.overwriteOk;\n\t }\n\t checkWrapperTypes(options);\n\t }\n\n\t function checkWrapperTypes(options) {\n\t var shouldThrow = !angular.isArray(options.types) || !options.types.every(angular.isString);\n\t if (shouldThrow) {\n\t throw getError(\"Attempted to create a template wrapper with types that is not a string or an array of strings\");\n\t }\n\t }\n\n\t function checkOverwrite(property, object, newValue, objectName) {\n\t if (object.hasOwnProperty(property)) {\n\t warn([\"Attempting to overwrite \" + property + \" on \" + objectName + \" which is currently\", \"\" + JSON.stringify(object[property]) + \" with \" + JSON.stringify(newValue), \"To supress this warning, specify the property \\\"overwriteOk: true\\\"\"].join(\" \"));\n\t }\n\t }\n\n\t function getWrapper(name) {\n\t return templateWrappersMap[name || defaultWrapperName];\n\t }\n\n\t function getWrapperByType(type) {\n\t /* jshint maxcomplexity:6 */\n\t var wrappers = [];\n\t for (var name in templateWrappersMap) {\n\t if (templateWrappersMap.hasOwnProperty(name)) {\n\t if (templateWrappersMap[name].types && templateWrappersMap[name].types.indexOf(type) !== -1) {\n\t wrappers.push(templateWrappersMap[name]);\n\t }\n\t }\n\t }\n\t return wrappers;\n\t }\n\n\t function removeWrapperByName(name) {\n\t var wrapper = templateWrappersMap[name];\n\t delete templateWrappersMap[name];\n\t return wrapper;\n\t }\n\n\t function removeWrappersForType(type) {\n\t var wrappers = getWrapperByType(type);\n\t if (!wrappers) {\n\t return;\n\t }\n\t if (!angular.isArray(wrappers)) {\n\t return removeWrapperByName(wrappers.name);\n\t } else {\n\t wrappers.forEach(function (wrapper) {\n\t return removeWrapperByName(wrapper.name);\n\t });\n\t return wrappers;\n\t }\n\t }\n\n\t function warn() {\n\t if (!_this.disableWarnings) {\n\t console.warn.apply(console, arguments);\n\t }\n\t }\n\t}\n\tformlyConfig.$inject = [\"formlyUsabilityProvider\", \"formlyApiCheck\"];\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyValidationMessages;\n\n\t// @ngInject\n\tfunction formlyValidationMessages() {\n\n\t var validationMessages = {\n\t addTemplateOptionValueMessage: addTemplateOptionValueMessage,\n\t addStringMessage: addStringMessage,\n\t messages: {}\n\t };\n\n\t return validationMessages;\n\n\t function addTemplateOptionValueMessage(name, prop, prefix, suffix, alternate) {\n\t validationMessages.messages[name] = templateOptionValue(prop, prefix, suffix, alternate);\n\t }\n\n\t function addStringMessage(name, string) {\n\t validationMessages.messages[name] = function () {\n\t return string;\n\t };\n\t }\n\n\t function templateOptionValue(prop, prefix, suffix, alternate) {\n\t return function getValidationMessage(viewValue, modelValue, scope) {\n\t if (scope.options.templateOptions[prop]) {\n\t return \"\" + prefix + \" \" + scope.options.templateOptions[prop] + \" \" + suffix;\n\t } else {\n\t return alternate;\n\t }\n\t };\n\t }\n\t}\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar utils = _interopRequire(__webpack_require__(18));\n\n\tmodule.exports = formlyUtil;\n\n\t// @ngInject\n\tfunction formlyUtil() {\n\t return utils;\n\t}\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\n\tmodule.exports = formlyWarn;\n\n\t// @ngInject\n\tfunction formlyWarn(formlyConfig, formlyErrorAndWarningsUrlPrefix, $log) {\n\t return function warn() {\n\t if (!formlyConfig.disableWarnings) {\n\t var args = Array.prototype.slice.call(arguments);\n\t var warnInfoSlug = args.shift();\n\t args.unshift(\"Formly Warning:\");\n\t args.push(\"\" + formlyErrorAndWarningsUrlPrefix + \"\" + warnInfoSlug);\n\t $log.warn.apply($log, _toConsumableArray(args));\n\t }\n\t };\n\t}\n\tformlyWarn.$inject = [\"formlyConfig\", \"formlyErrorAndWarningsUrlPrefix\", \"$log\"];\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyCustomValidation;\n\n\t// @ngInject\n\tfunction formlyCustomValidation(formlyUtil, $q) {\n\t return {\n\t restrict: \"A\",\n\t require: \"ngModel\",\n\t link: function formlyCustomValidationLink(scope, el, attrs, ctrl) {\n\t var opts = scope.options;\n\t if (opts.validators) {\n\t checkValidators(opts.validators);\n\t }\n\t opts.validation.messages = opts.validation.messages || {};\n\t angular.forEach(opts.validation.messages, function (message, key) {\n\t opts.validation.messages[key] = function () {\n\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t };\n\t });\n\n\t var useNewValidatorsApi = ctrl.hasOwnProperty(\"$validators\") && !attrs.hasOwnProperty(\"useParsers\");\n\t angular.forEach(opts.validators, function addValidatorToPipeline(validator, name) {\n\t var message = validator.message;\n\t if (message) {\n\t opts.validation.messages[name] = function () {\n\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t };\n\t }\n\t validator = angular.isObject(validator) ? validator.expression : validator;\n\t var isPossiblyAsync = !angular.isString(validator);\n\t if (useNewValidatorsApi) {\n\t setupWithValidators();\n\t } else {\n\t setupWithParsers();\n\t }\n\n\t function setupWithValidators() {\n\t var validatorCollection = isPossiblyAsync ? \"$asyncValidators\" : \"$validators\";\n\t ctrl[validatorCollection][name] = function evalValidity(modelValue, viewValue) {\n\t var value = formlyUtil.formlyEval(scope, validator, modelValue, viewValue);\n\t if (isPossiblyAsync) {\n\t return isPromiseLike(value) ? value : value ? $q.when(value) : $q.reject(value);\n\t } else {\n\t return value;\n\t }\n\t };\n\t }\n\n\t function setupWithParsers() {\n\t var inFlightValidator = undefined;\n\t ctrl.$parsers.unshift(function evalValidityOfParser(viewValue) {\n\t var isValid = formlyUtil.formlyEval(scope, validator, ctrl.$modelValue, viewValue);\n\t if (isPromiseLike(isValid)) {\n\t ctrl.$pending = ctrl.$pending || {};\n\t ctrl.$pending[name] = true;\n\t inFlightValidator = isValid;\n\t isValid.then(function () {\n\t if (inFlightValidator === isValid) {\n\t ctrl.$setValidity(name, true);\n\t }\n\t })[\"catch\"](function () {\n\t if (inFlightValidator === isValid) {\n\t ctrl.$setValidity(name, false);\n\t }\n\t })[\"finally\"](function () {\n\t if (Object.keys(ctrl.$pending).length === 1) {\n\t delete ctrl.$pending;\n\t } else {\n\t delete ctrl.$pending[name];\n\t }\n\t });\n\t } else {\n\t ctrl.$setValidity(name, isValid);\n\t }\n\t return viewValue;\n\t });\n\t }\n\t });\n\t }\n\t };\n\n\t function isPromiseLike(obj) {\n\t return obj && angular.isFunction(obj.then);\n\t }\n\n\t function checkValidators(validators) {\n\t var allowedProperties = [\"expression\", \"message\"];\n\t var validatorsWithExtraProps = {};\n\t angular.forEach(validators, function (validator, name) {\n\t if (angular.isString(validator)) {\n\t return;\n\t }\n\t var extraProps = [];\n\t angular.forEach(validator, function (v, key) {\n\t if (allowedProperties.indexOf(key) === -1) {\n\t extraProps.push(key);\n\t }\n\t });\n\t if (extraProps.length) {\n\t validatorsWithExtraProps[name] = extraProps;\n\t }\n\t });\n\t if (Object.keys(validatorsWithExtraProps).length) {\n\t throw new Error([\"Validators are only allowed to be functions or objects that have \" + allowedProperties.join(\", \") + \".\", \"You provided some extra properties: \" + JSON.stringify(validatorsWithExtraProps)].join(\" \"));\n\t }\n\t }\n\t}\n\tformlyCustomValidation.$inject = [\"formlyUtil\", \"$q\"];\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyField;\n\n\t/**\n\t * @ngdoc directive\n\t * @name formlyField\n\t * @restrict AE\n\t */\n\t// @ngInject\n\tfunction formlyField($http, $q, $compile, $templateCache, formlyConfig, formlyValidationMessages, formlyApiCheck, formlyUtil, formlyUsability, formlyWarn) {\n\t var arrayify = formlyUtil.arrayify;\n\n\t FormlyFieldController.$inject = [\"$scope\", \"$timeout\", \"$parse\", \"$controller\"];\n\t return {\n\t restrict: \"AE\",\n\t transclude: true,\n\t scope: {\n\t options: \"=\",\n\t model: \"=\",\n\t formId: \"@\", // TODO remove formId in a breaking release\n\t index: \"=?\",\n\t fields: \"=?\",\n\t formState: \"=?\",\n\t form: \"=?\" // TODO require form in a breaking release\n\t },\n\t controller: FormlyFieldController,\n\t link: fieldLink\n\t };\n\n\t // @ngInject\n\t function FormlyFieldController($scope, $timeout, $parse, $controller) {\n\t /* jshint maxstatements:31 */\n\t if ($scope.options.fieldGroup) {\n\t setupFieldGroup();\n\t return;\n\t }\n\n\t var fieldType = getFieldType($scope.options);\n\t simplifyLife($scope.options);\n\t mergeFieldOptionsWithTypeDefaults($scope.options, fieldType);\n\t extendOptionsWithDefaults($scope.options, $scope.index);\n\t checkApi($scope.options);\n\t // set field id to link labels and fields\n\n\t // initalization\n\t setFieldId();\n\t setDefaultValue();\n\t setInitialValue();\n\t runExpressions();\n\t addModelWatcher($scope, $scope.options);\n\t addValidationMessages($scope.options);\n\t invokeControllers($scope, $scope.options, fieldType);\n\n\t // function definitions\n\t function runExpressions() {\n\t // must run on next tick to make sure that the current value is correct.\n\t $timeout(function runExpressionsOnNextTick() {\n\t var field = $scope.options;\n\t var currentValue = valueGetterSetter();\n\t angular.forEach(field.expressionProperties, function runExpression(expression, prop) {\n\t var setter = $parse(prop).assign;\n\t var promise = $q.when(formlyUtil.formlyEval($scope, expression, currentValue));\n\t promise.then(function setFieldValue(value) {\n\t setter(field, value);\n\t });\n\t });\n\t });\n\t }\n\n\t function valueGetterSetter(newVal) {\n\t if (!$scope.model || !$scope.options.key) {\n\t return;\n\t }\n\t if (angular.isDefined(newVal)) {\n\t $scope.model[$scope.options.key] = newVal;\n\t }\n\t return $scope.model[$scope.options.key];\n\t }\n\n\t function simplifyLife(options) {\n\t // add a few empty objects (if they don't already exist) so you don't have to undefined check everywhere\n\t formlyUtil.reverseDeepMerge(options, {\n\t data: {},\n\t templateOptions: {},\n\t validation: {}\n\t });\n\t // create $scope.to so template authors can reference to instead of $scope.options.templateOptions\n\t $scope.to = $scope.options.templateOptions;\n\t }\n\n\t function setFieldId() {\n\t if (angular.isFunction(formlyConfig.extras.getFieldId)) {\n\t $scope.id = formlyConfig.extras.getFieldId($scope.options, $scope.model, $scope);\n\t } else {\n\t var formName = $scope.form && $scope.form.$name || $scope.formId;\n\t $scope.id = formlyUtil.getFieldId(formName, $scope.options, $scope.index);\n\t }\n\t $scope.options.id = $scope.id;\n\t }\n\n\t function setDefaultValue() {\n\t if (angular.isDefined($scope.options.defaultValue) && !angular.isDefined($scope.model[$scope.options.key])) {\n\t $scope.model[$scope.options.key] = $scope.options.defaultValue;\n\t }\n\t }\n\n\t function setInitialValue() {\n\t $scope.options.initialValue = $scope.model && $scope.model[$scope.options.key];\n\t }\n\n\t function mergeFieldOptionsWithTypeDefaults(options, type) {\n\t if (type) {\n\t mergeOptions(options, type.defaultOptions);\n\t }\n\t var properOrder = arrayify(options.optionsTypes).reverse(); // so the right things are overridden\n\t angular.forEach(properOrder, function (typeName) {\n\t mergeOptions(options, formlyConfig.getType(typeName, true, options).defaultOptions);\n\t });\n\t }\n\n\t function mergeOptions(options, extraOptions) {\n\t if (extraOptions) {\n\t if (angular.isFunction(extraOptions)) {\n\t extraOptions = extraOptions(options);\n\t }\n\t formlyUtil.reverseDeepMerge(options, extraOptions);\n\t }\n\t }\n\n\t function extendOptionsWithDefaults(options, index) {\n\t var key = options.key || index || 0;\n\t angular.extend(options, {\n\t // attach the key in case the formly-field directive is used directly\n\t key: key,\n\t value: valueGetterSetter,\n\t runExpressions: runExpressions,\n\t resetModel: resetModel,\n\t updateInitialValue: updateInitialValue\n\t });\n\t }\n\n\t // initialization functions\n\t function addModelWatcher(scope, options) {\n\t if (options.model) {\n\t scope.$watch(\"options.model\", runExpressions, true);\n\t }\n\t }\n\n\t function resetModel() {\n\t $scope.model[$scope.options.key] = $scope.options.initialValue;\n\t if ($scope.options.formControl) {\n\t $scope.options.formControl.$setViewValue($scope.model[$scope.options.key]);\n\t $scope.options.formControl.$render();\n\t $scope.options.formControl.$setUntouched();\n\t $scope.options.formControl.$setPristine();\n\t }\n\t }\n\n\t function updateInitialValue() {\n\t $scope.options.initialValue = $scope.model[$scope.options.key];\n\t }\n\n\t function addValidationMessages(options) {\n\t options.validation.messages = options.validation.messages || {};\n\t angular.forEach(formlyValidationMessages.messages, function createFunctionForMessage(expression, name) {\n\t if (!options.validation.messages[name]) {\n\t options.validation.messages[name] = function evaluateMessage(viewValue, modelValue, scope) {\n\t return formlyUtil.formlyEval(scope, expression, modelValue, viewValue);\n\t };\n\t }\n\t });\n\t }\n\n\t function invokeControllers(scope) {\n\t var options = arguments[1] === undefined ? {} : arguments[1];\n\t var type = arguments[2] === undefined ? {} : arguments[2];\n\n\t angular.forEach([type.controller, options.controller], function (controller) {\n\t if (controller) {\n\t $controller(controller, { $scope: scope });\n\t }\n\t });\n\t }\n\n\t function setupFieldGroup() {\n\t $scope.options.options = $scope.options.options || {};\n\t $scope.options.options.formState = $scope.formState;\n\t }\n\t }\n\n\t // link function\n\t function fieldLink(scope, el) {\n\t if (scope.options.fieldGroup) {\n\t setFieldGroupTemplate();\n\t return;\n\t }\n\n\t addAttributes();\n\t addClasses();\n\n\t var type = getFieldType(scope.options);\n\t var args = arguments;\n\t var thusly = this;\n\t getFieldTemplate(scope.options).then(runManipulators(formlyConfig.templateManipulators.preWrapper)).then(transcludeInWrappers(scope.options)).then(runManipulators(formlyConfig.templateManipulators.postWrapper)).then(setElementTemplate).then(watchFormControl).then(callLinkFunctions)[\"catch\"](function (error) {\n\t formlyWarn(\"there-was-a-problem-setting-the-template-for-this-field\", \"There was a problem setting the template for this field \", scope.options, error);\n\t });\n\n\t function setFieldGroupTemplate() {\n\t checkFieldGroupApi(scope.options);\n\t el.addClass(\"formly-field-group\");\n\t var extraAttributes = \"\";\n\t if (scope.options.elementAttributes) {\n\t extraAttributes = Object.keys(scope.options.elementAttributes).map(function (key) {\n\t return \"\" + key + \"=\\\"\" + scope.options.elementAttributes[key] + \"\\\"\";\n\t }).join(\" \");\n\t }\n\t setElementTemplate(\"\\n \\n \\n \");\n\t }\n\n\t function addAttributes() {\n\t if (scope.options.elementAttributes) {\n\t el.attr(scope.options.elementAttributes);\n\t }\n\t }\n\n\t function addClasses() {\n\t if (scope.options.className) {\n\t el.addClass(scope.options.className);\n\t }\n\t if (scope.options.type) {\n\t el.addClass(\"formly-field-\" + scope.options.type);\n\t }\n\t }\n\n\t function setElementTemplate(templateString) {\n\t el.html(asHtml(templateString));\n\t $compile(el.contents())(scope);\n\t return templateString;\n\t }\n\n\t function watchFormControl(templateString) {\n\t var stopWatchingField = angular.noop;\n\t var stopWatchingShowError = angular.noop;\n\t if (scope.options.noFormControl) {\n\t return;\n\t }\n\t var templateEl = angular.element(\"\" + templateString + \"
\");\n\t var ngModelNode = templateEl[0].querySelector(\"[ng-model],[data-ng-model]\");\n\t if (ngModelNode && ngModelNode.getAttribute(\"name\")) {\n\t watchFieldNameOrExistence(ngModelNode.getAttribute(\"name\"));\n\t }\n\n\t function watchFieldNameOrExistence(name) {\n\t var nameExpressionRegex = /\\{\\{(.*?)}}/;\n\t var nameExpression = nameExpressionRegex.exec(name);\n\t if (nameExpression) {\n\t watchFieldName(nameExpression[1]);\n\t } else {\n\t watchFieldExistence(name);\n\t }\n\t }\n\n\t function watchFieldName(expression) {\n\t scope.$watch(expression, function oneFieldNameChange(name) {\n\t if (name) {\n\t stopWatchingField();\n\t watchFieldExistence(name);\n\t }\n\t });\n\t }\n\n\t function watchFieldExistence(name) {\n\t stopWatchingField = scope.$watch(\"form[\\\"\" + name + \"\\\"]\", function formControlChange(formControl) {\n\t if (formControl) {\n\t scope.fc = formControl; // shortcut for template authors\n\t scope.options.formControl = formControl;\n\t stopWatchingShowError();\n\t addShowMessagesWatcher();\n\t }\n\t });\n\t }\n\n\t function addShowMessagesWatcher() {\n\t stopWatchingShowError = scope.$watch(function watchShowValidationChange() {\n\t var customExpression = formlyConfig.extras.errorExistsAndShouldBeVisibleExpression;\n\t var options = scope.options;\n\t var fc = scope.fc;\n\n\t if (!fc.$invalid) {\n\t return false;\n\t } else if (typeof options.validation.show === \"boolean\") {\n\t return options.validation.show;\n\t } else if (customExpression) {\n\t return formlyUtil.formlyEval(scope, customExpression, fc.$modelValue, fc.$viewValue);\n\t } else {\n\t var noTouchedButDirty = angular.isUndefined(fc.$touched) && fc.$dirty;\n\t return scope.fc.$touched || noTouchedButDirty;\n\t }\n\t }, function onShowValidationChange(show) {\n\t scope.options.validation.errorExistsAndShouldBeVisible = show;\n\t scope.showError = show; // shortcut for template authors\n\t });\n\t }\n\t }\n\n\t function callLinkFunctions() {\n\t if (type && type.link) {\n\t type.link.apply(thusly, args);\n\t }\n\t if (scope.options.link) {\n\t scope.options.link.apply(thusly, args);\n\t }\n\t }\n\n\t function runManipulators(manipulators) {\n\t return function runManipulatorsOnTemplate(template) {\n\t var chain = $q.when(template);\n\t angular.forEach(manipulators, function (manipulator) {\n\t chain = chain.then(function (template) {\n\t return $q.when(manipulator(template, scope.options, scope)).then(function (newTemplate) {\n\t return angular.isString(newTemplate) ? newTemplate : asHtml(newTemplate);\n\t });\n\t });\n\t });\n\t return chain;\n\t };\n\t }\n\t }\n\n\t // stateless util functions\n\t function asHtml(el) {\n\t var wrapper = angular.element(\" \");\n\t return wrapper.append(el).html();\n\t }\n\n\t function getFieldType(options) {\n\t return options.type && formlyConfig.getType(options.type);\n\t }\n\n\t function getFieldTemplate(options) {\n\t function fromOptionsOrType(key, type) {\n\t if (angular.isDefined(options[key])) {\n\t return options[key];\n\t } else if (type && angular.isDefined(type[key])) {\n\t return type[key];\n\t }\n\t }\n\n\t var type = formlyConfig.getType(options.type, true, options);\n\t var template = fromOptionsOrType(\"template\", type);\n\t var templateUrl = fromOptionsOrType(\"templateUrl\", type);\n\t if (angular.isUndefined(template) && !templateUrl) {\n\t throw formlyUsability.getFieldError(\"type-type-has-no-template\", \"Type '\" + options.type + \"' has not template. On element:\", options);\n\t }\n\n\t return getTemplate(templateUrl || template, angular.isUndefined(template), options);\n\t }\n\n\t function getTemplate(template, isUrl, options) {\n\t var templatePromise = undefined;\n\t if (angular.isFunction(template)) {\n\t templatePromise = $q.when(template(options));\n\t } else {\n\t templatePromise = $q.when(template);\n\t }\n\n\t if (!isUrl) {\n\t return templatePromise;\n\t } else {\n\t var _ret = (function () {\n\t var httpOptions = { cache: $templateCache };\n\t return {\n\t v: templatePromise.then(function (url) {\n\t return $http.get(url, httpOptions);\n\t }).then(function (response) {\n\t return response.data;\n\t })[\"catch\"](function handleErrorGettingATemplate(error) {\n\t formlyWarn(\"problem-loading-template-for-templateurl\", \"Problem loading template for \" + template, error);\n\t })\n\t };\n\t })();\n\n\t if (typeof _ret === \"object\") {\n\t return _ret.v;\n\t }\n\t }\n\t }\n\n\t function transcludeInWrappers(options) {\n\t var wrapper = getWrapperOption(options);\n\n\t return function transcludeTemplate(template) {\n\t if (!wrapper.length) {\n\t return $q.when(template);\n\t }\n\n\t wrapper.forEach(function (wrapper) {\n\t formlyUsability.checkWrapper(wrapper, options);\n\t wrapper.validateOptions && wrapper.validateOptions(options);\n\t runApiCheck(wrapper, options);\n\t });\n\t var promises = wrapper.map(function (w) {\n\t return getTemplate(w.template || w.templateUrl, !w.template);\n\t });\n\t return $q.all(promises).then(function (wrappersTemplates) {\n\t wrappersTemplates.forEach(function (wrapperTemplate, index) {\n\t formlyUsability.checkWrapperTemplate(wrapperTemplate, wrapper[index]);\n\t });\n\t wrappersTemplates.reverse(); // wrapper 0 is wrapped in wrapper 1 and so on...\n\t var totalWrapper = wrappersTemplates.shift();\n\t wrappersTemplates.forEach(function (wrapperTemplate) {\n\t totalWrapper = doTransclusion(totalWrapper, wrapperTemplate);\n\t });\n\t return doTransclusion(totalWrapper, template);\n\t });\n\t };\n\t }\n\n\t function doTransclusion(wrapper, template) {\n\t var superWrapper = angular.element(\" \"); // this allows people not have to have a single root in wrappers\n\t superWrapper.append(wrapper);\n\t var transcludeEl = superWrapper.find(\"formly-transclude\");\n\t if (!transcludeEl.length) {\n\t //try it using our custom find function\n\t transcludeEl = formlyUtil.findByNodeName(superWrapper, \"formly-transclude\");\n\t }\n\t transcludeEl.replaceWith(template);\n\t return superWrapper.html();\n\t }\n\n\t function getWrapperOption(options) {\n\t var wrapper = options.wrapper;\n\t // explicit null means no wrapper\n\t if (wrapper === null) {\n\t return [];\n\t }\n\n\t // nothing specified means use the default wrapper for the type\n\t if (!wrapper) {\n\t // get all wrappers that specify they apply to this type\n\t wrapper = arrayify(formlyConfig.getWrapperByType(options.type));\n\t } else {\n\t wrapper = arrayify(wrapper).map(formlyConfig.getWrapper);\n\t }\n\n\t // get all wrappers for that this type specified that it uses.\n\t var type = formlyConfig.getType(options.type, true, options);\n\t if (type && type.wrapper) {\n\t var typeWrappers = arrayify(type.wrapper).map(formlyConfig.getWrapper);\n\t wrapper = wrapper.concat(typeWrappers);\n\t }\n\n\t // add the default wrapper last\n\t var defaultWrapper = formlyConfig.getWrapper();\n\t if (defaultWrapper) {\n\t wrapper.push(defaultWrapper);\n\t }\n\t return wrapper;\n\t }\n\n\t function checkApi(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.formlyFieldOptions, options, {\n\t prefix: \"formly-field directive\",\n\t url: \"formly-field-directive-validation-failed\"\n\t });\n\t // validate with the type\n\t var type = options.type && formlyConfig.getType(options.type);\n\t if (type) {\n\t if (type.validateOptions) {\n\t type.validateOptions(options);\n\t }\n\t runApiCheck(type, options);\n\t }\n\t }\n\n\t function checkFieldGroupApi(options) {\n\t formlyApiCheck[\"throw\"](formlyApiCheck.fieldGroup, options, {\n\t prefix: \"formly-field directive\",\n\t url: \"formly-field-directive-validation-failed\"\n\t });\n\t }\n\n\t function runApiCheck(_ref, options) {\n\t var apiCheck = _ref.apiCheck;\n\t var apiCheckInstance = _ref.apiCheckInstance;\n\t var apiCheckFunction = _ref.apiCheckFunction;\n\t var apiCheckOptions = _ref.apiCheckOptions;\n\n\t if (!apiCheck) {\n\t return;\n\t }\n\t var instance = apiCheckInstance || formlyApiCheck;\n\t var fn = apiCheckFunction || \"warn\";\n\t var shape = instance.shape(apiCheck);\n\t instance[fn](shape, options, apiCheckOptions || {\n\t prefix: \"formly-field \" + name,\n\t url: formlyApiCheck.config.output.docsBaseUrl + \"formly-field-type-apicheck-failed\"\n\t });\n\t }\n\t}\n\tformlyField.$inject = [\"$http\", \"$q\", \"$compile\", \"$templateCache\", \"formlyConfig\", \"formlyValidationMessages\", \"formlyApiCheck\", \"formlyUtil\", \"formlyUsability\", \"formlyWarn\"];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = formlyFocus;\n\n\t// @ngInject\n\tfunction formlyFocus($timeout, $document) {\n\t /* jshint -W052 */\n\t return {\n\t restrict: \"A\",\n\t link: function formlyFocusLink(scope, element, attrs) {\n\t var previousEl = null;\n\t var el = element[0];\n\t var doc = $document[0];\n\t attrs.$observe(\"formlyFocus\", function respondToFocusExpressionChange(value) {\n\t if (value === \"true\") {\n\t $timeout(function setElementFocus() {\n\t previousEl = doc.activeElement;\n\t el.focus();\n\t }, ~ ~attrs.focusWait);\n\t } else if (value === \"false\") {\n\t if (doc.activeElement === el) {\n\t el.blur();\n\t if (attrs.hasOwnProperty(\"refocus\") && previousEl) {\n\t previousEl.focus();\n\t }\n\t }\n\t }\n\t });\n\t }\n\t };\n\t}\n\tformlyFocus.$inject = [\"$timeout\", \"$document\"];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };\n\n\tvar _slice = Array.prototype.slice;\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = formlyForm;\n\n\t/**\n\t * @ngdoc directive\n\t * @name formlyForm\n\t * @restrict E\n\t */\n\t// @ngInject\n\tfunction formlyForm(formlyUsability, $parse, formlyApiCheck, formlyConfig) {\n\t var currentFormId = 1;\n\t return {\n\t restrict: \"E\",\n\t template: function formlyFormGetTemplate(el, attrs) {\n\t /* jshint -W033 */ // this because jshint is broken I guess...\n\t var rootEl = getRootEl();\n\t var fieldRootEl = getFieldRootEl();\n\t var formId = \"formly_\" + currentFormId++;\n\t var parentFormAttributes = \"\";\n\t if (attrs.hasOwnProperty(\"isFieldGroup\") && el.parent().parent().hasClass(\"formly\")) {\n\t parentFormAttributes = copyAttributes(el.parent().parent()[0].attributes);\n\t }\n\t return \"\\n <\" + rootEl + \" class=\\\"formly\\\"\\n name=\\\"\" + getFormName() + \"\\\"\\n role=\\\"form\\\" \" + parentFormAttributes + \">\\n <\" + fieldRootEl + \" formly-field\\n ng-repeat=\\\"field in fields \" + getTrackBy() + \"\\\"\\n \" + getHideDirective() + \"=\\\"!field.hide\\\"\\n class=\\\"formly-field\\\"\\n options=\\\"field\\\"\\n model=\\\"field.model || model\\\"\\n fields=\\\"fields\\\"\\n form=\\\"theFormlyForm\\\"\\n form-id=\\\"\" + getFormName() + \"\\\"\\n form-state=\\\"options.formState\\\"\\n index=\\\"$index\\\">\\n \" + fieldRootEl + \">\\n
\\n \" + rootEl + \">\\n \";\n\n\t function getRootEl() {\n\t return attrs.rootEl || \"ng-form\";\n\t }\n\n\t function getFieldRootEl() {\n\t return attrs.fieldRootEl || \"div\";\n\t }\n\n\t function getHideDirective() {\n\t return attrs.hideDirective || formlyConfig.extras.defaultHideDirective || \"ng-if\";\n\t }\n\n\t function getTrackBy() {\n\t if (!attrs.trackBy) {\n\t return \"\";\n\t } else {\n\t return \"track by \" + attrs.trackBy;\n\t }\n\t }\n\n\t function getFormName() {\n\t var formName = formId;\n\t var bindName = attrs.bindName;\n\t if (bindName) {\n\t if (angular.version.minor < 3) {\n\t throw formlyUsability.getFormlyError(\"bind-name attribute on formly-form not allowed in > angular 1.3\");\n\t }\n\t // we can do a one-time binding here because we know we're in 1.3.x territory\n\t formName = \"{{::'formly_' + \" + bindName + \"}}\";\n\t }\n\t return formName;\n\t }\n\n\t function copyAttributes(attributes) {\n\t var excluded = [\"model\", \"form\", \"fields\", \"options\", \"name\", \"role\", \"class\"];\n\t var arrayAttrs = [];\n\t angular.forEach(attributes, function (_ref) {\n\t var nodeName = _ref.nodeName;\n\t var nodeValue = _ref.nodeValue;\n\n\t if (nodeName !== \"undefined\" && excluded.indexOf(nodeName) === -1) {\n\t arrayAttrs.push(\"\" + toKebabCase(nodeName) + \"=\\\"\" + nodeValue + \"\\\"\");\n\t }\n\t });\n\t return arrayAttrs.join(\" \");\n\t }\n\n\t function toKebabCase(string) {\n\t if (string) {\n\t return string.replace(/([A-Z])/g, function ($1) {\n\t return \"-\" + $1.toLowerCase();\n\t });\n\t } else {\n\t return \"\";\n\t }\n\t }\n\t },\n\t replace: true,\n\t transclude: true,\n\t scope: {\n\t fields: \"=\",\n\t model: \"=\",\n\t form: \"=?\",\n\t options: \"=?\"\n\t },\n\t controller: /* @ngInject */[\"$scope\", \"formlyUtil\", function FormlyFormController($scope, formlyUtil) {\n\t setupOptions();\n\t $scope.model = $scope.model || {};\n\t $scope.fields = $scope.fields || [];\n\n\t angular.forEach($scope.fields, initModel); // initializes the model property if set to 'formState'\n\t angular.forEach($scope.fields, attachKey); // attaches a key based on the index if a key isn't specified\n\t angular.forEach($scope.fields, setupWatchers); // setup watchers for all fields\n\n\t // watch the model and evaluate watch expressions that depend on it.\n\t $scope.$watch(\"model\", onModelOrFormStateChange, true);\n\t if ($scope.options.formState) {\n\t $scope.$watch(\"options.formState\", onModelOrFormStateChange, true);\n\t }\n\n\t function onModelOrFormStateChange() {\n\t angular.forEach($scope.fields, function runFieldExpressionProperties(field, index) {\n\t /*jshint -W030 */\n\t var model = field.model || $scope.model;\n\t field.runExpressions && field.runExpressions(model);\n\t if (field.hideExpression) {\n\t // can't use hide with expressionProperties reliably\n\t var val = model[field.key];\n\t // this makes it closer to what a regular expressionProperty would be\n\t var extraLocals = {\n\t options: field,\n\t index: index,\n\t formState: $scope.options.formState,\n\t formId: $scope.formId\n\t };\n\t field.hide = formlyUtil.formlyEval($scope, field.hideExpression, val, val, extraLocals);\n\t }\n\t });\n\t }\n\n\t function setupOptions() {\n\t formlyApiCheck[\"throw\"]([formlyApiCheck.formOptionsApi.optional], [$scope.options], { prefix: \"formly-form options check\" });\n\t $scope.options = $scope.options || {};\n\t $scope.options.formState = $scope.options.formState || {};\n\n\t angular.extend($scope.options, {\n\t updateInitialValue: updateInitialValue,\n\t resetModel: resetModel\n\t });\n\t }\n\n\t function updateInitialValue() {\n\t angular.forEach($scope.fields, function (field) {\n\t if (isFieldGroup(field)) {\n\t field.options.updateInitialValue();\n\t } else {\n\t field.updateInitialValue();\n\t }\n\t });\n\t }\n\n\t function resetModel() {\n\t angular.forEach($scope.fields, function (field) {\n\t if (isFieldGroup(field)) {\n\t field.options.resetModel();\n\t } else {\n\t field.resetModel();\n\t }\n\t });\n\t }\n\n\t function initModel(field) {\n\t if (field.model && field.model === \"formState\") {\n\t field.model = $scope.options.formState;\n\t }\n\t }\n\n\t function attachKey(field, index) {\n\t if (!isFieldGroup(field)) {\n\t field.key = field.key || index || 0;\n\t }\n\t }\n\n\t function setupWatchers(field, index) {\n\t if (isFieldGroup(field) || !angular.isDefined(field.watcher)) {\n\t return;\n\t }\n\t var watchers = field.watcher;\n\t if (!angular.isArray(watchers)) {\n\t watchers = [watchers];\n\t }\n\t angular.forEach(watchers, function setupWatcher(watcher) {\n\t if (!angular.isDefined(watcher.listener)) {\n\t throw formlyUsability.getFieldError(\"all-field-watchers-must-have-a-listener\", \"All field watchers must have a listener\", field);\n\t }\n\t var watchExpression = getWatchExpression(watcher, field, index);\n\t var watchListener = getWatchListener(watcher, field, index);\n\n\t var type = watcher.type || \"$watch\";\n\t watcher.stopWatching = $scope[type](watchExpression, watchListener, watcher.watchDeep);\n\t });\n\t }\n\n\t function getWatchExpression(watcher, field, index) {\n\t var watchExpression = watcher.expression || \"model['\" + field.key + \"']\";\n\t if (angular.isFunction(watchExpression)) {\n\t // wrap the field's watch expression so we can call it with the field as the first arg\n\t // and the stop function as the last arg as a helper\n\t var originalExpression = watchExpression;\n\t watchExpression = function formlyWatchExpression() {\n\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t return originalExpression.apply(undefined, _toConsumableArray(args));\n\t };\n\t watchExpression.displayName = \"Formly Watch Expression for field for \" + field.key;\n\t }\n\t return watchExpression;\n\t }\n\n\t function getWatchListener(watcher, field, index) {\n\t var watchListener = watcher.listener;\n\t if (angular.isFunction(watchListener)) {\n\t // wrap the field's watch listener so we can call it with the field as the first arg\n\t // and the stop function as the last arg as a helper\n\t var originalListener = watchListener;\n\t watchListener = function formlyWatchListener() {\n\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t return originalListener.apply(undefined, _toConsumableArray(args));\n\t };\n\t watchListener.displayName = \"Formly Watch Listener for field for \" + field.key;\n\t }\n\t return watchListener;\n\t }\n\n\t function modifyArgs(watcher, index) {\n\t for (var _len = arguments.length, originalArgs = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n\t originalArgs[_key - 2] = arguments[_key];\n\t }\n\n\t return [$scope.fields[index]].concat(originalArgs, [watcher.stopWatching]);\n\t }\n\n\t function isFieldGroup(field) {\n\t return field && !!field.fieldGroup;\n\t }\n\t }],\n\t link: function link(scope, el, attrs) {\n\t var formId = attrs.name;\n\t scope.formId = formId;\n\t scope.theFormlyForm = scope[formId];\n\t if (attrs.form) {\n\t $parse(attrs.form).assign(scope.$parent, scope[formId]);\n\t }\n\n\t // chrome autocomplete lameness\n\t // see https://code.google.com/p/chromium/issues/detail?id=468153#c14\n\t // ლ(ಠ益ಠლ) (╯°□°)╯︵ ┻━┻ (◞‸◟;)\n\t var global = formlyConfig.extras.removeChromeAutoComplete === true;\n\t var offInstance = scope.options && scope.options.removeChromeAutoComplete === false;\n\t var onInstance = scope.options && scope.options.removeChromeAutoComplete === true;\n\t if (global && !offInstance || onInstance) {\n\t var input = document.createElement(\"input\");\n\t input.setAttribute(\"autocomplete\", \"address-level4\");\n\t input.setAttribute(\"hidden\", true);\n\t el[0].appendChild(input);\n\t }\n\t }\n\t };\n\t}\n\tformlyForm.$inject = [\"formlyUsability\", \"$parse\", \"formlyApiCheck\", \"formlyConfig\"];\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = addFormlyNgModelAttrsManipulator;\n\n\t// @ngInject\n\tfunction addFormlyNgModelAttrsManipulator(formlyConfig) {\n\t if (formlyConfig.extras.disableNgModelAttrsManipulator) {\n\t return;\n\t }\n\t formlyConfig.templateManipulators.preWrapper.push(ngModelAttrsManipulator);\n\n\t function ngModelAttrsManipulator(template, options, scope) {\n\t /* jshint maxcomplexity:6 */\n\t var el = document.createElement(\"div\");\n\t var data = options.data;\n\t if (data.skipNgModelAttrsManipulator === true) {\n\t return template;\n\t }\n\t el.innerHTML = template;\n\t var modelNodes = el.querySelectorAll(\"[ng-model], [data-ng-model]\");\n\t if (!modelNodes || !modelNodes.length) {\n\t return template;\n\t }\n\n\t addIfNotPresent(modelNodes, \"id\", scope.id);\n\t addIfNotPresent(modelNodes, \"name\", scope.id);\n\n\t addValidation();\n\t addModelOptions();\n\t addTemplateOptionsAttrs();\n\n\t return el.innerHTML;\n\n\t function addValidation() {\n\t if (angular.isDefined(options.validators) || angular.isDefined(options.validation.messages)) {\n\t addIfNotPresent(modelNodes, \"formly-custom-validation\", \"\");\n\t }\n\t }\n\n\t function addModelOptions() {\n\t if (angular.isDefined(options.modelOptions)) {\n\t addIfNotPresent(modelNodes, \"ng-model-options\", \"options.modelOptions\");\n\t if (options.modelOptions.getterSetter) {\n\t angular.forEach(modelNodes, function (node) {\n\t node.setAttribute(\"ng-model\", \"options.value\");\n\t });\n\t }\n\t }\n\t }\n\n\t function addTemplateOptionsAttrs() {\n\t if (!options.templateOptions && !options.expressionProperties) {\n\t // no need to run these if there are no templateOptions or expressionProperties\n\t return;\n\t }\n\t var to = options.templateOptions || {};\n\t var ep = options.expressionProperties || {};\n\n\t var ngModelAttributes = getBuiltInAttributes();\n\n\t // extend with the user's specifications winning\n\t angular.extend(ngModelAttributes, options.ngModelAttrs);\n\n\t // Feel free to make this more simple :-)\n\t angular.forEach(ngModelAttributes, function (val, name) {\n\t /* jshint maxcomplexity:14 */\n\t var attrVal = undefined;\n\t var attrName = undefined;\n\t var ref = \"options.templateOptions['\" + name + \"']\";\n\t var toVal = to[name];\n\t var epVal = getEpValue(ep, name);\n\n\t var inTo = angular.isDefined(toVal);\n\t var inEp = angular.isDefined(epVal);\n\t if (val.value) {\n\t // I realize this looks backwards, but it's right, trust me...\n\t attrName = val.value;\n\t attrVal = name;\n\t } else if (val.expression && inTo) {\n\t attrName = val.expression;\n\t if (angular.isString(to[name])) {\n\t attrVal = \"$eval(\" + ref + \")\";\n\t } else if (angular.isFunction(to[name])) {\n\t attrVal = \"\" + ref + \"(model[options.key], options, this, $event)\";\n\t } else {\n\t throw new Error(\"options.templateOptions.\" + name + \" must be a string or function: \" + JSON.stringify(options));\n\t }\n\t } else if (val.bound && inEp) {\n\t attrName = val.bound;\n\t attrVal = ref;\n\t } else if ((val.attribute || val.boolean) && inEp) {\n\t attrName = val.attribute || val.boolean;\n\t attrVal = \"{{\" + ref + \"}}\";\n\t } else if (val.attribute && inTo) {\n\t attrName = val.attribute;\n\t attrVal = toVal;\n\t } else if (val.boolean) {\n\t if (inTo && !inEp && toVal) {\n\t attrName = val.boolean;\n\t attrVal = true;\n\t } else {}\n\t } else if (val.bound && inTo) {\n\t attrName = val.bound;\n\t attrVal = ref;\n\t }\n\n\t if (angular.isDefined(attrName) && angular.isDefined(attrVal)) {\n\t addIfNotPresent(modelNodes, attrName, attrVal);\n\t }\n\t });\n\t }\n\t }\n\n\t // Utility functions\n\t function getBuiltInAttributes() {\n\t var ngModelAttributes = {\n\t focus: {\n\t attribute: \"formly-focus\"\n\t }\n\t };\n\t var boundOnly = [];\n\t var bothBooleanAndBound = [\"required\", \"disabled\"];\n\t var bothAttributeAndBound = [\"pattern\", \"minlength\"];\n\t var expressionOnly = [\"change\", \"keydown\", \"keyup\", \"keypress\", \"click\", \"focus\", \"blur\"];\n\t var attributeOnly = [\"placeholder\", \"min\", \"max\", \"tabindex\", \"type\"];\n\t if (formlyConfig.extras.ngModelAttrsManipulatorPreferUnbound) {\n\t bothAttributeAndBound.push(\"maxlength\");\n\t } else {\n\t boundOnly.push(\"maxlength\");\n\t }\n\n\t angular.forEach(boundOnly, function (item) {\n\t ngModelAttributes[item] = { bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(bothBooleanAndBound, function (item) {\n\t ngModelAttributes[item] = { boolean: item, bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(bothAttributeAndBound, function (item) {\n\t ngModelAttributes[item] = { attribute: item, bound: \"ng-\" + item };\n\t });\n\n\t angular.forEach(expressionOnly, function (item) {\n\t var propName = \"on\" + item.substr(0, 1).toUpperCase() + item.substr(1);\n\t ngModelAttributes[propName] = { expression: \"ng-\" + item };\n\t });\n\n\t angular.forEach(attributeOnly, function (item) {\n\t ngModelAttributes[item] = { attribute: item };\n\t });\n\t return ngModelAttributes;\n\t }\n\n\t function getEpValue(ep, name) {\n\t return ep[\"templateOptions.\" + name] || ep[\"templateOptions['\" + name + \"']\"] || ep[\"templateOptions[\\\"\" + name + \"\\\"]\"];\n\t }\n\n\t function addIfNotPresent(nodes, attr, val) {\n\t angular.forEach(nodes, function (node) {\n\t if (!node.getAttribute(attr)) {\n\t node.setAttribute(attr, val);\n\t }\n\t });\n\t }\n\t}\n\taddFormlyNgModelAttrsManipulator.$inject = [\"formlyConfig\"];\n\n\t// jshint -W035\n\t// empty to illustrate that a boolean will not be added via val.bound\n\t// if you want it added via val.bound, then put it in expressionProperties\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tmodule.exports = addCustomTags;\n\n\t// @ngInject\n\tfunction addCustomTags($document) {\n\t if ($document && $document.get) {\n\t (function () {\n\t //IE8 check ->\n\t // http://stackoverflow.com/questions/10964966/detect-ie-version-prior-to-v9-in-javascript/10965203#10965203\n\t var document = $document.get(0);\n\t var div = document.createElement(\"div\");\n\t div.innerHTML = \"\";\n\t var isIeLessThan9 = div.getElementsByTagName(\"i\").length === 1;\n\n\t if (isIeLessThan9) {\n\t //add the custom elements that we need for formly\n\t var customElements = [\"formly-field\", \"formly-form\", \"formly-custom-validation\", \"formly-focus\", \"formly-transpose\"];\n\t angular.forEach(customElements, function (el) {\n\t document.createElement(el);\n\t });\n\t }\n\t })();\n\t }\n\t}\n\taddCustomTags.$inject = [\"$document\"];\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\t// some versions of angular don't export the angular module properly,\n\t// so we get it from window in this case.\n\n\tvar angular = _interopRequire(__webpack_require__(17));\n\n\tif (!angular.version) {\n\t angular = window.angular;\n\t}\n\tmodule.exports = angular;\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_16__;\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_17__;\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\n\tvar _interopRequire = function (obj) { return obj && obj.__esModule ? obj[\"default\"] : obj; };\n\n\tvar angular = _interopRequire(__webpack_require__(15));\n\n\tmodule.exports = { formlyEval: formlyEval, getFieldId: getFieldId, reverseDeepMerge: reverseDeepMerge, findByNodeName: findByNodeName, arrayify: arrayify, extendFunction: extendFunction };\n\n\tfunction formlyEval(scope, expression, $modelValue, $viewValue, extraLocals) {\n\t if (angular.isFunction(expression)) {\n\t return expression($viewValue, $modelValue, scope, extraLocals);\n\t } else {\n\t return scope.$eval(expression, angular.extend({ $viewValue: $viewValue, $modelValue: $modelValue }, extraLocals));\n\t }\n\t}\n\n\tfunction getFieldId(formId, options, index) {\n\t if (options.id) {\n\t return options.id;\n\t }\n\t var type = options.type;\n\t if (!type && options.template) {\n\t type = \"template\";\n\t } else if (!type && options.templateUrl) {\n\t type = \"templateUrl\";\n\t }\n\n\t return [formId, type, options.key, index].join(\"_\");\n\t}\n\n\tfunction reverseDeepMerge(dest) {\n\t angular.forEach(arguments, function (src, index) {\n\t if (!index) {\n\t return;\n\t }\n\t angular.forEach(src, function (val, prop) {\n\t if (!angular.isDefined(dest[prop])) {\n\t dest[prop] = angular.copy(val);\n\t } else if (objAndSameType(dest[prop], val)) {\n\t reverseDeepMerge(dest[prop], val);\n\t }\n\t });\n\t });\n\t}\n\n\tfunction objAndSameType(obj1, obj2) {\n\t return angular.isObject(obj1) && angular.isObject(obj2) && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2);\n\t}\n\n\t//recurse down a node tree to find a node with matching nodeName, for custom tags jQuery.find doesn't work in IE8\n\tfunction findByNodeName(el, nodeName) {\n\t if (!el.prop) {\n\t // not a jQuery or jqLite object -> wrap it\n\t el = angular.element(el);\n\t }\n\n\t if (el.prop(\"nodeName\") === nodeName.toUpperCase()) {\n\t return el;\n\t }\n\n\t var c = el.children();\n\t for (var i = 0; c && i < c.length; i++) {\n\t var node = findByNodeName(c[i], nodeName);\n\t if (node) {\n\t return node;\n\t }\n\t }\n\t}\n\n\tfunction arrayify(obj) {\n\t if (obj && !angular.isArray(obj)) {\n\t obj = [obj];\n\t } else if (!obj) {\n\t obj = [];\n\t }\n\t return obj;\n\t}\n\n\tfunction extendFunction() {\n\t for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n\t fns[_key] = arguments[_key];\n\t }\n\n\t return function extendedFunction() {\n\t var args = arguments;\n\t fns.forEach(function (fn) {\n\t return fn.apply(null, args);\n\t });\n\t };\n\t}\n\n/***/ }\n/******/ ])\n});\n;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2FuZ3VsYXItZm9ybWx5L2Rpc3QvZm9ybWx5LmpzPzUxZmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELG9DQUFvQztBQUNwQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsdUNBQXVDLHFEQUFxRDs7QUFFNUY7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsdUNBQXVDLHFEQUFxRDs7QUFFNUY7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLCtDQUErQzs7QUFFL0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSx1Q0FBdUMscURBQXFEOztBQUU1Rjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7O0FBRUY7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsdUNBQXVDLHFEQUFxRDs7QUFFNUY7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSx1Q0FBdUMscURBQXFEOztBQUU1Rjs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsaUJBQWlCO0FBQ3BELG1DQUFtQyxpQkFBaUI7QUFDcEQ7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSx1Q0FBdUMscURBQXFEOztBQUU1Rjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSwwQ0FBMEMsMEJBQTBCLDBDQUEwQyxnQkFBZ0IsdUJBQXVCLGFBQWEsRUFBRSxPQUFPLHdCQUF3QixFQUFFOztBQUVyTTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFROztBQUVSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQixjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLHVDQUF1QyxxREFBcUQ7O0FBRTVGOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLFVBQVU7QUFDVixRQUFRO0FBQ1I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQiw0QkFBNEI7QUFDNUI7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0VBQWtFO0FBQ2xFO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjs7QUFFQTtBQUNBLG9EQUFvRDtBQUNwRCxpREFBaUQ7O0FBRWpEO0FBQ0E7QUFDQSxvQ0FBb0MsZ0JBQWdCO0FBQ3BEO0FBQ0EsUUFBUTtBQUNSOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQ0FBc0MsRUFBRSxPQUFPO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxZQUFZO0FBQ1o7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0Esa0NBQWtDO0FBQ2xDLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsWUFBWTtBQUNaLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBLFlBQVk7QUFDWjtBQUNBLFlBQVk7QUFDWjtBQUNBLFFBQVE7O0FBRVI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBLG1EQUFtRDtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsdUNBQXVDLHFEQUFxRDs7QUFFNUYsMENBQTBDLDBCQUEwQiwwQ0FBMEMsZ0JBQWdCLHVCQUF1QixhQUFhLEVBQUUsT0FBTyx3QkFBd0IsRUFBRTs7QUFFck07O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsZ0NBQWdDO0FBQ3pEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1osVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpREFBaUQ7QUFDakQsaURBQWlEO0FBQ2pELHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0EsOEZBQThGLHNDQUFzQztBQUNwSTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtR0FBbUcsYUFBYTtBQUNoSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLHVDQUF1QyxxREFBcUQ7O0FBRTVGOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLHdCQUF3QixhQUFhO0FBQ3JDLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWixVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBLGtDQUFrQztBQUNsQyxNQUFNOztBQUVOO0FBQ0Esa0NBQWtDO0FBQ2xDLE1BQU07O0FBRU47QUFDQSxrQ0FBa0M7QUFDbEMsTUFBTTs7QUFFTjtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDLE1BQU07O0FBRU47QUFDQSxrQ0FBa0M7QUFDbEMsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSx1Q0FBdUMscURBQXFEOztBQUU1RjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBLHVDQUF1QyxxREFBcUQ7O0FBRTVGOztBQUVBLG1CQUFtQjs7QUFFbkI7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLG9EQUFvRCxtREFBbUQ7QUFDdkc7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixtQkFBbUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlFQUFpRSxhQUFhO0FBQzlFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6IjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhbmd1bGFyLWZvcm1seSB2ZXJzaW9uIDYuOC4yIGJ1aWx0IHdpdGgg4pmlIGJ5IEFzdHJpc20gPGFzdHJpc21zQGdtYWlsLmNvbT4sIEtlbnQgQy4gRG9kZHMgPGtlbnRAZG9kZHNmYW1pbHkudXM+ICjDsyDDrF/DrSk9w7PDsj0ow6xfw60gw7IpXG5cbihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcImFwaS1jaGVja1wiKSwgcmVxdWlyZShcImFuZ3VsYXJcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiYXBpLWNoZWNrXCIsIFwiYW5ndWxhclwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJuZ0Zvcm1seVwiXSA9IGZhY3RvcnkocmVxdWlyZShcImFwaS1jaGVja1wiKSwgcmVxdWlyZShcImFuZ3VsYXJcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm5nRm9ybWx5XCJdID0gZmFjdG9yeShyb290W1wiYXBpQ2hlY2tcIl0sIHJvb3RbXCJhbmd1bGFyXCJdKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMTZfXywgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV8xN19fKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge30sXG4vKioqKioqLyBcdFx0XHRpZDogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4vKioqKioqLyBcdFx0fTtcblxuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cblxuXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdHZhciBfaW50ZXJvcFJlcXVpcmUgPSBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmpbXCJkZWZhdWx0XCJdIDogb2JqOyB9O1xuXG5cdHZhciBpbmRleCA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDEpKTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGluZGV4O1xuXG4vKioqLyB9LFxuLyogMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdHZhciBmb3JtbHlBcGlDaGVjayA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDIpKTtcblxuXHR2YXIgZm9ybWx5RXJyb3JBbmRXYXJuaW5nc1VybFByZWZpeCA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDMpKTtcblxuXHR2YXIgZm9ybWx5VXNhYmlsaXR5ID0gX2ludGVyb3BSZXF1aXJlKF9fd2VicGFja19yZXF1aXJlX18oNCkpO1xuXG5cdHZhciBmb3JtbHlDb25maWcgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXyg1KSk7XG5cblx0dmFyIGZvcm1seVZhbGlkYXRpb25NZXNzYWdlcyA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDYpKTtcblxuXHR2YXIgZm9ybWx5VXRpbCA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDcpKTtcblxuXHR2YXIgZm9ybWx5V2FybiA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDgpKTtcblxuXHR2YXIgZm9ybWx5Q3VzdG9tVmFsaWRhdGlvbiA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDkpKTtcblxuXHR2YXIgZm9ybWx5RmllbGQgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxMCkpO1xuXG5cdHZhciBmb3JtbHlGb2N1cyA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDExKSk7XG5cblx0dmFyIGZvcm1seUZvcm0gPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxMikpO1xuXG5cdHZhciBmb3JtbHlOZ01vZGVsQXR0cnNNYW5pcHVsYXRvciA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKSk7XG5cblx0dmFyIGZvcm1seUN1c3RvbVRhZ3MgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNCkpO1xuXG5cdHZhciBuZ01vZHVsZU5hbWUgPSBcImZvcm1seVwiO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gbmdNb2R1bGVOYW1lO1xuXG5cdHZhciBuZ01vZHVsZSA9IGFuZ3VsYXIubW9kdWxlKG5nTW9kdWxlTmFtZSwgW10pO1xuXG5cdG5nTW9kdWxlLmNvbnN0YW50KFwiZm9ybWx5QXBpQ2hlY2tcIiwgZm9ybWx5QXBpQ2hlY2spO1xuXHRuZ01vZHVsZS5jb25zdGFudChcImZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXhcIiwgZm9ybWx5RXJyb3JBbmRXYXJuaW5nc1VybFByZWZpeCk7XG5cdG5nTW9kdWxlLmNvbnN0YW50KFwiZm9ybWx5VmVyc2lvblwiLCAoXCI2LjguMlwiKSk7IC8vIDwtLSB3ZWJwYWNrIHZhcmlhYmxlXG5cblx0bmdNb2R1bGUucHJvdmlkZXIoXCJmb3JtbHlVc2FiaWxpdHlcIiwgZm9ybWx5VXNhYmlsaXR5KTtcblx0bmdNb2R1bGUucHJvdmlkZXIoXCJmb3JtbHlDb25maWdcIiwgZm9ybWx5Q29uZmlnKTtcblxuXHRuZ01vZHVsZS5mYWN0b3J5KFwiZm9ybWx5VmFsaWRhdGlvbk1lc3NhZ2VzXCIsIGZvcm1seVZhbGlkYXRpb25NZXNzYWdlcyk7XG5cdG5nTW9kdWxlLmZhY3RvcnkoXCJmb3JtbHlVdGlsXCIsIGZvcm1seVV0aWwpO1xuXHRuZ01vZHVsZS5mYWN0b3J5KFwiZm9ybWx5V2FyblwiLCBmb3JtbHlXYXJuKTtcblxuXHRuZ01vZHVsZS5kaXJlY3RpdmUoXCJmb3JtbHlDdXN0b21WYWxpZGF0aW9uXCIsIGZvcm1seUN1c3RvbVZhbGlkYXRpb24pO1xuXHRuZ01vZHVsZS5kaXJlY3RpdmUoXCJmb3JtbHlGaWVsZFwiLCBmb3JtbHlGaWVsZCk7XG5cdG5nTW9kdWxlLmRpcmVjdGl2ZShcImZvcm1seUZvY3VzXCIsIGZvcm1seUZvY3VzKTtcblx0bmdNb2R1bGUuZGlyZWN0aXZlKFwiZm9ybWx5Rm9ybVwiLCBmb3JtbHlGb3JtKTtcblxuXHRuZ01vZHVsZS5ydW4oZm9ybWx5TmdNb2RlbEF0dHJzTWFuaXB1bGF0b3IpO1xuXHRuZ01vZHVsZS5ydW4oZm9ybWx5Q3VzdG9tVGFncyk7XG5cbi8qKiovIH0sXG4vKiAyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX2ludGVyb3BSZXF1aXJlID0gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqW1wiZGVmYXVsdFwiXSA6IG9iajsgfTtcblxuXHR2YXIgYXBpQ2hlY2tGYWN0b3J5ID0gX2ludGVyb3BSZXF1aXJlKF9fd2VicGFja19yZXF1aXJlX18oMTYpKTtcblxuXHR2YXIgYXBpQ2hlY2sgPSBhcGlDaGVja0ZhY3Rvcnkoe1xuXHQgIG91dHB1dDoge1xuXHQgICAgcHJlZml4OiBcImFuZ3VsYXItZm9ybWx5OlwiLFxuXHQgICAgZG9jc0Jhc2VVcmw6IF9fd2VicGFja19yZXF1aXJlX18oMylcblx0ICB9XG5cdH0pO1xuXG5cdGZ1bmN0aW9uIHNoYXBlUmVxdWlyZWRJZk5vdChvdGhlclByb3BzLCBwcm9wQ2hlY2tlcikge1xuXHQgIGlmICghYW5ndWxhci5pc0FycmF5KG90aGVyUHJvcHMpKSB7XG5cdCAgICBvdGhlclByb3BzID0gW290aGVyUHJvcHNdO1xuXHQgIH1cblx0ICB2YXIgdHlwZSA9IFwic3BlY2lmaWVkIGlmIHRoZXNlIGFyZSBub3Qgc3BlY2lmaWVkOiBgXCIgKyBvdGhlclByb3BzLmpvaW4oXCIsIFwiKSArIFwiYCAob3RoZXJ3aXNlIGl0J3Mgb3B0aW9uYWwpXCI7XG5cdCAgZnVuY3Rpb24gc2hhcGVSZXF1aXJlZElmTm90RGVmaW5pdGlvbihwcm9wLCBwcm9wTmFtZSwgbG9jYXRpb24sIG9iaikge1xuXHQgICAgdmFyIHByb3BFeGlzdHMgPSBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KHByb3BOYW1lKTtcblx0ICAgIHZhciBvdGhlclByb3BzRXhpc3QgPSBvdGhlclByb3BzLnNvbWUoZnVuY3Rpb24gKG90aGVyUHJvcCkge1xuXHQgICAgICByZXR1cm4gb2JqICYmIG9iai5oYXNPd25Qcm9wZXJ0eShvdGhlclByb3ApO1xuXHQgICAgfSk7XG5cdCAgICBpZiAoIW90aGVyUHJvcHNFeGlzdCAmJiAhcHJvcEV4aXN0cykge1xuXHQgICAgICByZXR1cm4gYXBpQ2hlY2sudXRpbHMuZ2V0RXJyb3IocHJvcE5hbWUsIGxvY2F0aW9uLCB0eXBlKTtcblx0ICAgIH0gZWxzZSBpZiAocHJvcEV4aXN0cykge1xuXHQgICAgICByZXR1cm4gcHJvcENoZWNrZXIocHJvcCwgcHJvcE5hbWUsIGxvY2F0aW9uLCBvYmopO1xuXHQgICAgfVxuXHQgIH1cblx0ICBzaGFwZVJlcXVpcmVkSWZOb3REZWZpbml0aW9uLnR5cGUgPSB0eXBlO1xuXHQgIHJldHVybiBhcGlDaGVjay51dGlscy5jaGVja2VySGVscGVycy5zZXR1cENoZWNrZXIoc2hhcGVSZXF1aXJlZElmTm90RGVmaW5pdGlvbik7XG5cdH1cblxuXHR2YXIgZm9ybWx5RXhwcmVzc2lvbiA9IGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suc3RyaW5nLCBhcGlDaGVjay5mdW5jXSk7XG5cdHZhciBzcGVjaWZ5V3JhcHBlclR5cGUgPSBhcGlDaGVjay5vbmVPZlR5cGUoW2FwaUNoZWNrLm9uZU9mKFtudWxsXSksIGFwaUNoZWNrLnR5cGVPckFycmF5T2YoYXBpQ2hlY2suc3RyaW5nKV0pO1xuXG5cdHZhciBhcGlDaGVja1Byb3BlcnR5ID0gYXBpQ2hlY2sub2JqZWN0T2YoYXBpQ2hlY2suZnVuYyk7XG5cblx0dmFyIGFwaUNoZWNrSW5zdGFuY2VQcm9wZXJ0eSA9IGFwaUNoZWNrLnNoYXBlLm9ubHlJZihcImFwaUNoZWNrXCIsIGFwaUNoZWNrLmZ1bmMud2l0aFByb3BlcnRpZXMoe1xuXHQgIHdhcm46IGFwaUNoZWNrLmZ1bmMsXG5cdCAgXCJ0aHJvd1wiOiBhcGlDaGVjay5mdW5jLFxuXHQgIHNoYXBlOiBhcGlDaGVjay5mdW5jXG5cdH0pKTtcblxuXHR2YXIgYXBpQ2hlY2tGdW5jdGlvblByb3BlcnR5ID0gYXBpQ2hlY2suc2hhcGUub25seUlmKFwiYXBpQ2hlY2tcIiwgYXBpQ2hlY2sub25lT2YoW1widGhyb3dcIiwgXCJ3YXJuXCJdKSk7XG5cblx0dmFyIGZvcm1seVdyYXBwZXJUeXBlID0gYXBpQ2hlY2suc2hhcGUoe1xuXHQgIG5hbWU6IHNoYXBlUmVxdWlyZWRJZk5vdChcInR5cGVzXCIsIGFwaUNoZWNrLnN0cmluZykub3B0aW9uYWwsXG5cdCAgdGVtcGxhdGU6IGFwaUNoZWNrLnNoYXBlLmlmTm90KFwidGVtcGxhdGVVcmxcIiwgYXBpQ2hlY2suc3RyaW5nKS5vcHRpb25hbCxcblx0ICB0ZW1wbGF0ZVVybDogYXBpQ2hlY2suc2hhcGUuaWZOb3QoXCJ0ZW1wbGF0ZVwiLCBhcGlDaGVjay5zdHJpbmcpLm9wdGlvbmFsLFxuXHQgIHR5cGVzOiBhcGlDaGVjay50eXBlT3JBcnJheU9mKGFwaUNoZWNrLnN0cmluZykub3B0aW9uYWwsXG5cdCAgb3ZlcndyaXRlT2s6IGFwaUNoZWNrLmJvb2wub3B0aW9uYWwsXG5cdCAgdmFsaWRhdGVPcHRpb25zOiBhcGlDaGVjay5mdW5jLm9wdGlvbmFsLFxuXHQgIGFwaUNoZWNrOiBhcGlDaGVja1Byb3BlcnR5Lm9wdGlvbmFsLFxuXHQgIGFwaUNoZWNrSW5zdGFuY2U6IGFwaUNoZWNrSW5zdGFuY2VQcm9wZXJ0eS5vcHRpb25hbCxcblx0ICBhcGlDaGVja0Z1bmN0aW9uOiBhcGlDaGVja0Z1bmN0aW9uUHJvcGVydHkub3B0aW9uYWwsXG5cdCAgYXBpQ2hlY2tPcHRpb25zOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWxcblx0fSkuc3RyaWN0O1xuXG5cdHZhciBleHByZXNzaW9uUHJvcGVydGllcyA9IGFwaUNoZWNrLm9iamVjdE9mKGFwaUNoZWNrLm9uZU9mVHlwZShbZm9ybWx5RXhwcmVzc2lvbiwgYXBpQ2hlY2suc2hhcGUoe1xuXHQgIGV4cHJlc3Npb246IGZvcm1seUV4cHJlc3Npb24sXG5cdCAgbWVzc2FnZTogZm9ybWx5RXhwcmVzc2lvbi5vcHRpb25hbFxuXHR9KS5zdHJpY3RdKSk7XG5cblx0dmFyIG1vZGVsQ2hlY2tlciA9IGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2sub25lT2YoW1wiZm9ybVN0YXRlXCJdKSwgYXBpQ2hlY2sub2JqZWN0XSk7XG5cblx0dmFyIGZpZWxkT3B0aW9uc0FwaVNoYXBlID0ge1xuXHQgICQkaGFzaEtleTogYXBpQ2hlY2suYW55Lm9wdGlvbmFsLFxuXHQgIHR5cGU6IGFwaUNoZWNrLnNoYXBlLmlmTm90KFtcInRlbXBsYXRlXCIsIFwidGVtcGxhdGVVcmxcIl0sIGFwaUNoZWNrLnN0cmluZykub3B0aW9uYWwsXG5cdCAgdGVtcGxhdGU6IGFwaUNoZWNrLnNoYXBlLmlmTm90KFtcInR5cGVcIiwgXCJ0ZW1wbGF0ZVVybFwiXSwgYXBpQ2hlY2sub25lT2ZUeXBlKFthcGlDaGVjay5zdHJpbmcsIGFwaUNoZWNrLmZ1bmNdKSkub3B0aW9uYWwsXG5cdCAgdGVtcGxhdGVVcmw6IGFwaUNoZWNrLnNoYXBlLmlmTm90KFtcInR5cGVcIiwgXCJ0ZW1wbGF0ZVwiXSwgYXBpQ2hlY2sub25lT2ZUeXBlKFthcGlDaGVjay5zdHJpbmcsIGFwaUNoZWNrLmZ1bmNdKSkub3B0aW9uYWwsXG5cdCAga2V5OiBhcGlDaGVjay5vbmVPZlR5cGUoW2FwaUNoZWNrLnN0cmluZywgYXBpQ2hlY2subnVtYmVyXSkub3B0aW9uYWwsXG5cdCAgbW9kZWw6IG1vZGVsQ2hlY2tlci5vcHRpb25hbCxcblx0ICBjbGFzc05hbWU6IGFwaUNoZWNrLnN0cmluZy5vcHRpb25hbCxcblx0ICBpZDogYXBpQ2hlY2suc3RyaW5nLm9wdGlvbmFsLFxuXHQgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiBleHByZXNzaW9uUHJvcGVydGllcy5vcHRpb25hbCxcblx0ICBkYXRhOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgdGVtcGxhdGVPcHRpb25zOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgd3JhcHBlcjogc3BlY2lmeVdyYXBwZXJUeXBlLm9wdGlvbmFsLFxuXHQgIG1vZGVsT3B0aW9uczogYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgdXBkYXRlT246IGFwaUNoZWNrLnN0cmluZy5vcHRpb25hbCxcblx0ICAgIGRlYm91bmNlOiBhcGlDaGVjay5vbmVPZlR5cGUoW2FwaUNoZWNrLm9iamVjdE9mKGFwaUNoZWNrLm51bWJlciksIGFwaUNoZWNrLm51bWJlcl0pLm9wdGlvbmFsLFxuXHQgICAgYWxsb3dJbnZhbGlkOiBhcGlDaGVjay5ib29sLm9wdGlvbmFsLFxuXHQgICAgZ2V0dGVyU2V0dGVyOiBhcGlDaGVjay5ib29sLm9wdGlvbmFsLFxuXHQgICAgdGltZXpvbmU6IGFwaUNoZWNrLnN0cmluZy5vcHRpb25hbFxuXHQgIH0pLm9wdGlvbmFsLFxuXHQgIHdhdGNoZXI6IGFwaUNoZWNrLnR5cGVPckFycmF5T2YoYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgZXhwcmVzc2lvbjogZm9ybWx5RXhwcmVzc2lvbi5vcHRpb25hbCxcblx0ICAgIGxpc3RlbmVyOiBmb3JtbHlFeHByZXNzaW9uXG5cdCAgfSkpLm9wdGlvbmFsLFxuXHQgIHZhbGlkYXRvcnM6IGFwaUNoZWNrLm9iamVjdE9mKGFwaUNoZWNrLm9uZU9mVHlwZShbZm9ybWx5RXhwcmVzc2lvbiwgYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgZXhwcmVzc2lvbjogZm9ybWx5RXhwcmVzc2lvbixcblx0ICAgIG1lc3NhZ2U6IGZvcm1seUV4cHJlc3Npb24ub3B0aW9uYWxcblx0ICB9KS5zdHJpY3RdKSkub3B0aW9uYWwsXG5cdCAgbm9Gb3JtQ29udHJvbDogYXBpQ2hlY2suYm9vbC5vcHRpb25hbCxcblx0ICBoaWRlOiBhcGlDaGVjay5ib29sLm9wdGlvbmFsLFxuXHQgIGhpZGVFeHByZXNzaW9uOiBmb3JtbHlFeHByZXNzaW9uLm9wdGlvbmFsLFxuXHQgIG5nTW9kZWxBdHRyczogYXBpQ2hlY2sub2JqZWN0T2YoYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgZXhwcmVzc2lvbjogYXBpQ2hlY2suc2hhcGUuaWZOb3QoW1widmFsdWVcIiwgXCJhdHRyaWJ1dGVcIiwgXCJib3VuZFwiXSwgYXBpQ2hlY2suYW55KS5vcHRpb25hbCxcblx0ICAgIHZhbHVlOiBhcGlDaGVjay5zaGFwZS5pZk5vdChcImV4cHJlc3Npb25cIiwgYXBpQ2hlY2suYW55KS5vcHRpb25hbCxcblx0ICAgIGF0dHJpYnV0ZTogYXBpQ2hlY2suc2hhcGUuaWZOb3QoXCJleHByZXNzaW9uXCIsIGFwaUNoZWNrLmFueSkub3B0aW9uYWwsXG5cdCAgICBib3VuZDogYXBpQ2hlY2suc2hhcGUuaWZOb3QoXCJleHByZXNzaW9uXCIsIGFwaUNoZWNrLmFueSkub3B0aW9uYWxcblx0ICB9KS5zdHJpY3QpLm9wdGlvbmFsLFxuXHQgIGVsZW1lbnRBdHRyaWJ1dGVzOiBhcGlDaGVjay5vYmplY3RPZihhcGlDaGVjay5zdHJpbmcpLm9wdGlvbmFsLFxuXHQgIG9wdGlvbnNUeXBlczogYXBpQ2hlY2sudHlwZU9yQXJyYXlPZihhcGlDaGVjay5zdHJpbmcpLm9wdGlvbmFsLFxuXHQgIGxpbms6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgY29udHJvbGxlcjogYXBpQ2hlY2sub25lT2ZUeXBlKFthcGlDaGVjay5zdHJpbmcsIGFwaUNoZWNrLmZ1bmMsIGFwaUNoZWNrLmFycmF5XSkub3B0aW9uYWwsXG5cdCAgdmFsaWRhdGlvbjogYXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgc2hvdzogYXBpQ2hlY2sub25lT2ZUeXBlKFthcGlDaGVjay5ib29sLCBhcGlDaGVjay5vbmVPZihbbnVsbF0pXSkub3B0aW9uYWwsXG5cdCAgICBtZXNzYWdlczogYXBpQ2hlY2sub2JqZWN0T2YoZm9ybWx5RXhwcmVzc2lvbikub3B0aW9uYWwsXG5cdCAgICBlcnJvckV4aXN0c0FuZFNob3VsZEJlVmlzaWJsZTogYXBpQ2hlY2suYm9vbC5vcHRpb25hbFxuXHQgIH0pLm9wdGlvbmFsLFxuXHQgIGZvcm1Db250cm9sOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgdmFsdWU6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgcnVuRXhwcmVzc2lvbnM6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgcmVzZXRNb2RlbDogYXBpQ2hlY2suZnVuYy5vcHRpb25hbCxcblx0ICB1cGRhdGVJbml0aWFsVmFsdWU6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgaW5pdGlhbFZhbHVlOiBhcGlDaGVjay5hbnkub3B0aW9uYWwsXG5cdCAgZGVmYXVsdFZhbHVlOiBhcGlDaGVjay5hbnkub3B0aW9uYWxcblx0fTtcblxuXHR2YXIgZm9ybWx5RmllbGRPcHRpb25zID0gYXBpQ2hlY2suc2hhcGUoZmllbGRPcHRpb25zQXBpU2hhcGUpLnN0cmljdDtcblxuXHR2YXIgZm9ybU9wdGlvbnNBcGkgPSBhcGlDaGVjay5zaGFwZSh7XG5cdCAgZm9ybVN0YXRlOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgcmVzZXRNb2RlbDogYXBpQ2hlY2suZnVuYy5vcHRpb25hbCxcblx0ICB1cGRhdGVJbml0aWFsVmFsdWU6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgcmVtb3ZlQ2hyb21lQXV0b0NvbXBsZXRlOiBhcGlDaGVjay5ib29sLm9wdGlvbmFsXG5cdH0pLnN0cmljdDtcblxuXHR2YXIgZmllbGRHcm91cCA9IGFwaUNoZWNrLnNoYXBlKHtcblx0ICAkJGhhc2hLZXk6IGFwaUNoZWNrLmFueS5vcHRpb25hbCxcblx0ICAvLyBkYW5nZXIuIE5lc3RlZCBmaWVsZCBncm91cHMgd29udCBnZXQgYXBpLWNoZWNrZWQuLi5cblx0ICBmaWVsZEdyb3VwOiBhcGlDaGVjay5hcnJheU9mKGFwaUNoZWNrLm9uZU9mVHlwZShbZm9ybWx5RmllbGRPcHRpb25zLCBhcGlDaGVjay5vYmplY3RdKSksXG5cdCAgY2xhc3NOYW1lOiBhcGlDaGVjay5zdHJpbmcub3B0aW9uYWwsXG5cdCAgb3B0aW9uczogZm9ybU9wdGlvbnNBcGkub3B0aW9uYWwsXG5cdCAgaGlkZTogYXBpQ2hlY2suYm9vbC5vcHRpb25hbCxcblx0ICBoaWRlRXhwcmVzc2lvbjogZm9ybWx5RXhwcmVzc2lvbi5vcHRpb25hbCxcblx0ICBtb2RlbDogbW9kZWxDaGVja2VyLm9wdGlvbmFsLFxuXHQgIGZvcm06IGFwaUNoZWNrLm9iamVjdC5vcHRpb25hbCxcblx0ICBlbGVtZW50QXR0cmlidXRlczogYXBpQ2hlY2sub2JqZWN0T2YoYXBpQ2hlY2suc3RyaW5nKS5vcHRpb25hbFxuXHR9KS5zdHJpY3Q7XG5cblx0dmFyIHR5cGVPcHRpb25zRGVmYXVsdE9wdGlvbnMgPSBhbmd1bGFyLmNvcHkoZmllbGRPcHRpb25zQXBpU2hhcGUpO1xuXHR0eXBlT3B0aW9uc0RlZmF1bHRPcHRpb25zLmtleSA9IGFwaUNoZWNrLnN0cmluZy5vcHRpb25hbDtcblxuXHR2YXIgZm9ybWx5VHlwZU9wdGlvbnMgPSBhcGlDaGVjay5zaGFwZSh7XG5cdCAgbmFtZTogYXBpQ2hlY2suc3RyaW5nLFxuXHQgIHRlbXBsYXRlOiBhcGlDaGVjay5zaGFwZS5pZk5vdChcInRlbXBsYXRlVXJsXCIsIGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suc3RyaW5nLCBhcGlDaGVjay5mdW5jXSkpLm9wdGlvbmFsLFxuXHQgIHRlbXBsYXRlVXJsOiBhcGlDaGVjay5zaGFwZS5pZk5vdChcInRlbXBsYXRlXCIsIGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suc3RyaW5nLCBhcGlDaGVjay5mdW5jXSkpLm9wdGlvbmFsLFxuXHQgIGNvbnRyb2xsZXI6IGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suZnVuYywgYXBpQ2hlY2suc3RyaW5nLCBhcGlDaGVjay5hcnJheV0pLm9wdGlvbmFsLFxuXHQgIGxpbms6IGFwaUNoZWNrLmZ1bmMub3B0aW9uYWwsXG5cdCAgZGVmYXVsdE9wdGlvbnM6IGFwaUNoZWNrLm9uZU9mVHlwZShbYXBpQ2hlY2suZnVuYywgYXBpQ2hlY2suc2hhcGUodHlwZU9wdGlvbnNEZWZhdWx0T3B0aW9ucyldKS5vcHRpb25hbCxcblx0ICBcImV4dGVuZHNcIjogYXBpQ2hlY2suc3RyaW5nLm9wdGlvbmFsLFxuXHQgIHdyYXBwZXI6IHNwZWNpZnlXcmFwcGVyVHlwZS5vcHRpb25hbCxcblx0ICBkYXRhOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgdmFsaWRhdGVPcHRpb25zOiBhcGlDaGVjay5mdW5jLm9wdGlvbmFsLFxuXHQgIGFwaUNoZWNrOiBhcGlDaGVja1Byb3BlcnR5Lm9wdGlvbmFsLFxuXHQgIGFwaUNoZWNrSW5zdGFuY2U6IGFwaUNoZWNrSW5zdGFuY2VQcm9wZXJ0eS5vcHRpb25hbCxcblx0ICBhcGlDaGVja0Z1bmN0aW9uOiBhcGlDaGVja0Z1bmN0aW9uUHJvcGVydHkub3B0aW9uYWwsXG5cdCAgYXBpQ2hlY2tPcHRpb25zOiBhcGlDaGVjay5vYmplY3Qub3B0aW9uYWwsXG5cdCAgb3ZlcndyaXRlT2s6IGFwaUNoZWNrLmJvb2wub3B0aW9uYWxcblx0fSkuc3RyaWN0O1xuXHRhbmd1bGFyLmV4dGVuZChhcGlDaGVjaywge1xuXHQgIGZvcm1seVR5cGVPcHRpb25zOiBmb3JtbHlUeXBlT3B0aW9ucywgZm9ybWx5RmllbGRPcHRpb25zOiBmb3JtbHlGaWVsZE9wdGlvbnMsIGZvcm1seUV4cHJlc3Npb246IGZvcm1seUV4cHJlc3Npb24sIGZvcm1seVdyYXBwZXJUeXBlOiBmb3JtbHlXcmFwcGVyVHlwZSwgZmllbGRHcm91cDogZmllbGRHcm91cCwgZm9ybU9wdGlvbnNBcGk6IGZvcm1PcHRpb25zQXBpXG5cdH0pO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gYXBpQ2hlY2s7XG5cbi8qKiovIH0sXG4vKiAzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiaHR0cHM6Ly9naXRodWIuY29tL2Zvcm1seS1qcy9hbmd1bGFyLWZvcm1seS9ibG9iL1wiICsgKFwiNi44LjJcIikgKyBcIi9vdGhlci9FUlJPUlNfQU5EX1dBUk5JTkdTLm1kI1wiO1xuXG4vKioqLyB9LFxuLyogNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5VXNhYmlsaXR5O1xuXG5cdC8vIEBuZ0luamVjdFxuXHRmdW5jdGlvbiBmb3JtbHlVc2FiaWxpdHkoZm9ybWx5QXBpQ2hlY2ssIGZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXgpIHtcblx0ICB2YXIgX3RoaXMgPSB0aGlzO1xuXG5cdCAgYW5ndWxhci5leHRlbmQodGhpcywge1xuXHQgICAgZ2V0Rm9ybWx5RXJyb3I6IGdldEZvcm1seUVycm9yLFxuXHQgICAgZ2V0RmllbGRFcnJvcjogZ2V0RmllbGRFcnJvcixcblx0ICAgIGNoZWNrV3JhcHBlcjogY2hlY2tXcmFwcGVyLFxuXHQgICAgY2hlY2tXcmFwcGVyVGVtcGxhdGU6IGNoZWNrV3JhcHBlclRlbXBsYXRlLFxuXHQgICAgJGdldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICByZXR1cm4gX3RoaXM7XG5cdCAgICB9XG5cdCAgfSk7XG5cblx0ICBmdW5jdGlvbiBnZXRGaWVsZEVycm9yKGVycm9ySW5mb1NsdWcsIG1lc3NhZ2UsIGZpZWxkKSB7XG5cdCAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDMpIHtcblx0ICAgICAgZmllbGQgPSBtZXNzYWdlO1xuXHQgICAgICBtZXNzYWdlID0gZXJyb3JJbmZvU2x1Zztcblx0ICAgICAgZXJyb3JJbmZvU2x1ZyA9IG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbmV3IEVycm9yKGdldEVycm9yTWVzc2FnZShlcnJvckluZm9TbHVnLCBtZXNzYWdlKSArIChcIiBGaWVsZCBkZWZpbml0aW9uOiBcIiArIGFuZ3VsYXIudG9Kc29uKGZpZWxkKSkpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldEZvcm1seUVycm9yKGVycm9ySW5mb1NsdWcsIG1lc3NhZ2UpIHtcblx0ICAgIGlmICghbWVzc2FnZSkge1xuXHQgICAgICBtZXNzYWdlID0gZXJyb3JJbmZvU2x1Zztcblx0ICAgICAgZXJyb3JJbmZvU2x1ZyA9IG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbmV3IEVycm9yKGdldEVycm9yTWVzc2FnZShlcnJvckluZm9TbHVnLCBtZXNzYWdlKSk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlKGVycm9ySW5mb1NsdWcsIG1lc3NhZ2UpIHtcblx0ICAgIHZhciB1cmwgPSBcIlwiO1xuXHQgICAgaWYgKGVycm9ySW5mb1NsdWcgIT09IG51bGwpIHtcblx0ICAgICAgdXJsID0gXCJcIiArIGZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXggKyBcIlwiICsgZXJyb3JJbmZvU2x1Zztcblx0ICAgIH1cblx0ICAgIHJldHVybiBcIkZvcm1seSBFcnJvcjogXCIgKyBtZXNzYWdlICsgXCIuIFwiICsgdXJsO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGNoZWNrV3JhcHBlcih3cmFwcGVyKSB7XG5cdCAgICBmb3JtbHlBcGlDaGVja1tcInRocm93XCJdKGZvcm1seUFwaUNoZWNrLmZvcm1seVdyYXBwZXJUeXBlLCB3cmFwcGVyLCB7XG5cdCAgICAgIHByZWZpeDogXCJmb3JtbHlDb25maWcuc2V0V3JhcHBlclwiLFxuXHQgICAgICB1cmxTdWZmaXg6IFwic2V0d3JhcHBlci12YWxpZGF0aW9uLWZhaWxlZFwiXG5cdCAgICB9KTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBjaGVja1dyYXBwZXJUZW1wbGF0ZSh0ZW1wbGF0ZSwgYWRkaXRpb25hbEluZm8pIHtcblx0ICAgIHZhciBmb3JtbHlUcmFuc2NsdWRlID0gXCI8Zm9ybWx5LXRyYW5zY2x1ZGU+PC9mb3JtbHktdHJhbnNjbHVkZT5cIjtcblx0ICAgIGlmICh0ZW1wbGF0ZS5pbmRleE9mKGZvcm1seVRyYW5zY2x1ZGUpID09PSAtMSkge1xuXHQgICAgICB0aHJvdyBnZXRGb3JtbHlFcnJvcihcIlRlbXBsYXRlIHdyYXBwZXIgdGVtcGxhdGVzIG11c3QgdXNlIFxcXCJcIiArIGZvcm1seVRyYW5zY2x1ZGUgKyBcIlxcXCIgc29tZXdoZXJlIGluIHRoZW0uIFwiICsgKFwiVGhpcyBvbmUgZG9lcyBub3QgaGF2ZSBcXFwiPGZvcm1seS10cmFuc2NsdWRlPjwvZm9ybWx5LXRyYW5zY2x1ZGU+XFxcIiBpbiBpdDogXCIgKyB0ZW1wbGF0ZSkgKyBcIlxcblwiICsgKFwiQWRkaXRpb25hbCBpbmZvcm1hdGlvbjogXCIgKyBKU09OLnN0cmluZ2lmeShhZGRpdGlvbmFsSW5mbykpKTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0Zm9ybWx5VXNhYmlsaXR5LiRpbmplY3QgPSBbXCJmb3JtbHlBcGlDaGVja1wiLCBcImZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXhcIl07XG5cbi8qKiovIH0sXG4vKiA1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX2ludGVyb3BSZXF1aXJlID0gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqW1wiZGVmYXVsdFwiXSA6IG9iajsgfTtcblxuXHR2YXIgYW5ndWxhciA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KSk7XG5cblx0dmFyIHV0aWxzID0gX2ludGVyb3BSZXF1aXJlKF9fd2VicGFja19yZXF1aXJlX18oMTgpKTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZvcm1seUNvbmZpZztcblxuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5Q29uZmlnKGZvcm1seVVzYWJpbGl0eVByb3ZpZGVyLCBmb3JtbHlBcGlDaGVjaykge1xuXHQgIHZhciBfdGhpczIgPSB0aGlzO1xuXG5cdCAgdmFyIHR5cGVNYXAgPSB7fTtcblx0ICB2YXIgdGVtcGxhdGVXcmFwcGVyc01hcCA9IHt9O1xuXHQgIHZhciBkZWZhdWx0V3JhcHBlck5hbWUgPSBcImRlZmF1bHRcIjtcblx0ICB2YXIgX3RoaXMgPSB0aGlzO1xuXHQgIHZhciBnZXRFcnJvciA9IGZvcm1seVVzYWJpbGl0eVByb3ZpZGVyLmdldEZvcm1seUVycm9yO1xuXG5cdCAgYW5ndWxhci5leHRlbmQodGhpcywge1xuXHQgICAgc2V0VHlwZTogc2V0VHlwZSxcblx0ICAgIGdldFR5cGU6IGdldFR5cGUsXG5cdCAgICBzZXRXcmFwcGVyOiBzZXRXcmFwcGVyLFxuXHQgICAgZ2V0V3JhcHBlcjogZ2V0V3JhcHBlcixcblx0ICAgIGdldFdyYXBwZXJCeVR5cGU6IGdldFdyYXBwZXJCeVR5cGUsXG5cdCAgICByZW1vdmVXcmFwcGVyQnlOYW1lOiByZW1vdmVXcmFwcGVyQnlOYW1lLFxuXHQgICAgcmVtb3ZlV3JhcHBlcnNGb3JUeXBlOiByZW1vdmVXcmFwcGVyc0ZvclR5cGUsXG5cdCAgICBkaXNhYmxlV2FybmluZ3M6IGZhbHNlLFxuXHQgICAgZXh0cmFzOiB7XG5cdCAgICAgIGRpc2FibGVOZ01vZGVsQXR0cnNNYW5pcHVsYXRvcjogZmFsc2UsXG5cdCAgICAgIG5nTW9kZWxBdHRyc01hbmlwdWxhdG9yUHJlZmVyVW5ib3VuZDogZmFsc2UsXG5cdCAgICAgIHJlbW92ZUNocm9tZUF1dG9Db21wbGV0ZTogZmFsc2UsXG5cdCAgICAgIGRlZmF1bHRIaWRlRGlyZWN0aXZlOiBcIm5nLWlmXCIsXG5cdCAgICAgIGdldEZpZWxkSWQ6IG51bGxcblx0ICAgIH0sXG5cdCAgICB0ZW1wbGF0ZU1hbmlwdWxhdG9yczoge1xuXHQgICAgICBwcmVXcmFwcGVyOiBbXSxcblx0ICAgICAgcG9zdFdyYXBwZXI6IFtdXG5cdCAgICB9LFxuXHQgICAgJGdldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICByZXR1cm4gX3RoaXMyO1xuXHQgICAgfVxuXHQgIH0pO1xuXG5cdCAgZnVuY3Rpb24gc2V0VHlwZShvcHRpb25zKSB7XG5cdCAgICBpZiAoYW5ndWxhci5pc0FycmF5KG9wdGlvbnMpKSB7XG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaChvcHRpb25zLCBzZXRUeXBlKTtcblx0ICAgIH0gZWxzZSBpZiAoYW5ndWxhci5pc09iamVjdChvcHRpb25zKSkge1xuXHQgICAgICBjaGVja1R5cGUob3B0aW9ucyk7XG5cdCAgICAgIGlmIChvcHRpb25zW1wiZXh0ZW5kc1wiXSkge1xuXHQgICAgICAgIGV4dGVuZFR5cGVPcHRpb25zKG9wdGlvbnMpO1xuXHQgICAgICB9XG5cdCAgICAgIHR5cGVNYXBbb3B0aW9ucy5uYW1lXSA9IG9wdGlvbnM7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0aHJvdyBnZXRFcnJvcihcIllvdSBtdXN0IHByb3ZpZGUgYW4gb2JqZWN0IG9yIGFycmF5IGZvciBzZXRUeXBlLiBZb3UgcHJvdmlkZWQ6IFwiICsgSlNPTi5zdHJpbmdpZnkoYXJndW1lbnRzKSk7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gY2hlY2tUeXBlKG9wdGlvbnMpIHtcblx0ICAgIGZvcm1seUFwaUNoZWNrW1widGhyb3dcIl0oZm9ybWx5QXBpQ2hlY2suZm9ybWx5VHlwZU9wdGlvbnMsIG9wdGlvbnMsIHtcblx0ICAgICAgcHJlZml4OiBcImZvcm1seUNvbmZpZy5zZXRUeXBlXCIsXG5cdCAgICAgIHVybDogXCJzZXR0eXBlLXZhbGlkYXRpb24tZmFpbGVkXCJcblx0ICAgIH0pO1xuXHQgICAgaWYgKCFvcHRpb25zLm92ZXJ3cml0ZU9rKSB7XG5cdCAgICAgIGNoZWNrT3ZlcndyaXRlKG9wdGlvbnMubmFtZSwgdHlwZU1hcCwgb3B0aW9ucywgXCJ0eXBlc1wiKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG9wdGlvbnMub3ZlcndyaXRlT2sgPSB1bmRlZmluZWQ7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZXh0ZW5kVHlwZU9wdGlvbnMob3B0aW9ucykge1xuXHQgICAgdmFyIGV4dGVuZHNUeXBlID0gZ2V0VHlwZShvcHRpb25zW1wiZXh0ZW5kc1wiXSwgdHJ1ZSwgb3B0aW9ucyk7XG5cdCAgICBleHRlbmRUeXBlQ29udHJvbGxlckZ1bmN0aW9uKG9wdGlvbnMsIGV4dGVuZHNUeXBlKTtcblx0ICAgIGV4dGVuZFR5cGVMaW5rRnVuY3Rpb24ob3B0aW9ucywgZXh0ZW5kc1R5cGUpO1xuXHQgICAgZXh0ZW5kVHlwZVZhbGlkYXRlT3B0aW9uc0Z1bmN0aW9uKG9wdGlvbnMsIGV4dGVuZHNUeXBlKTtcblx0ICAgIGV4dGVuZFR5cGVEZWZhdWx0T3B0aW9ucyhvcHRpb25zLCBleHRlbmRzVHlwZSk7XG5cdCAgICB1dGlscy5yZXZlcnNlRGVlcE1lcmdlKG9wdGlvbnMsIGV4dGVuZHNUeXBlKTtcblx0ICAgIGV4dGVuZFRlbXBsYXRlKG9wdGlvbnMsIGV4dGVuZHNUeXBlKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBleHRlbmRUZW1wbGF0ZShvcHRpb25zLCBleHRlbmRzVHlwZSkge1xuXHQgICAgaWYgKG9wdGlvbnMudGVtcGxhdGUgJiYgZXh0ZW5kc1R5cGUudGVtcGxhdGVVcmwpIHtcblx0ICAgICAgZGVsZXRlIG9wdGlvbnMudGVtcGxhdGVVcmw7XG5cdCAgICB9IGVsc2UgaWYgKG9wdGlvbnMudGVtcGxhdGVVcmwgJiYgZXh0ZW5kc1R5cGUudGVtcGxhdGUpIHtcblx0ICAgICAgZGVsZXRlIG9wdGlvbnMudGVtcGxhdGU7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZXh0ZW5kVHlwZUNvbnRyb2xsZXJGdW5jdGlvbihvcHRpb25zLCBleHRlbmRzVHlwZSkge1xuXHQgICAgdmFyIGV4dGVuZHNDdHJsID0gZXh0ZW5kc1R5cGUuY29udHJvbGxlcjtcblx0ICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQoZXh0ZW5kc0N0cmwpKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciBvcHRpb25zQ3RybCA9IG9wdGlvbnMuY29udHJvbGxlcjtcblx0ICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChvcHRpb25zQ3RybCkpIHtcblx0ICAgICAgb3B0aW9ucy5jb250cm9sbGVyID0gZnVuY3Rpb24gKCRzY29wZSwgJGNvbnRyb2xsZXIpIHtcblx0ICAgICAgICAkY29udHJvbGxlcihleHRlbmRzQ3RybCwgeyAkc2NvcGU6ICRzY29wZSB9KTtcblx0ICAgICAgICAkY29udHJvbGxlcihvcHRpb25zQ3RybCwgeyAkc2NvcGU6ICRzY29wZSB9KTtcblx0ICAgICAgfTtcblx0ICAgICAgb3B0aW9ucy5jb250cm9sbGVyLiRpbmplY3QgPSBbXCIkc2NvcGVcIiwgXCIkY29udHJvbGxlclwiXTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG9wdGlvbnMuY29udHJvbGxlciA9IGV4dGVuZHNDdHJsO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGV4dGVuZFR5cGVMaW5rRnVuY3Rpb24ob3B0aW9ucywgZXh0ZW5kc1R5cGUpIHtcblx0ICAgIHZhciBleHRlbmRzRm4gPSBleHRlbmRzVHlwZS5saW5rO1xuXHQgICAgaWYgKCFhbmd1bGFyLmlzRGVmaW5lZChleHRlbmRzRm4pKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciBvcHRpb25zRm4gPSBvcHRpb25zLmxpbms7XG5cdCAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQob3B0aW9uc0ZuKSkge1xuXHQgICAgICBvcHRpb25zLmxpbmsgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgZXh0ZW5kc0ZuLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcblx0ICAgICAgICBvcHRpb25zRm4uYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuXHQgICAgICB9O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgb3B0aW9ucy5saW5rID0gZXh0ZW5kc0ZuO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGV4dGVuZFR5cGVWYWxpZGF0ZU9wdGlvbnNGdW5jdGlvbihvcHRpb25zLCBleHRlbmRzVHlwZSkge1xuXHQgICAgdmFyIGV4dGVuZHNGbiA9IGV4dGVuZHNUeXBlLnZhbGlkYXRlT3B0aW9ucztcblx0ICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQoZXh0ZW5kc0ZuKSkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICB2YXIgb3B0aW9uc0ZuID0gb3B0aW9ucy52YWxpZGF0ZU9wdGlvbnM7XG5cdCAgICB2YXIgb3JpZ2luYWxEZWZhdWx0T3B0aW9ucyA9IG9wdGlvbnMuZGVmYXVsdE9wdGlvbnM7XG5cdCAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQob3B0aW9uc0ZuKSkge1xuXHQgICAgICBvcHRpb25zLnZhbGlkYXRlT3B0aW9ucyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG5cdCAgICAgICAgb3B0aW9uc0ZuKG9wdGlvbnMpO1xuXHQgICAgICAgIHZhciBtZXJnZWRPcHRpb25zID0gYW5ndWxhci5jb3B5KG9wdGlvbnMpO1xuXHQgICAgICAgIHZhciBkZWZhdWx0T3B0aW9ucyA9IG9yaWdpbmFsRGVmYXVsdE9wdGlvbnM7XG5cdCAgICAgICAgaWYgKGRlZmF1bHRPcHRpb25zKSB7XG5cdCAgICAgICAgICBpZiAoYW5ndWxhci5pc0Z1bmN0aW9uKGRlZmF1bHRPcHRpb25zKSkge1xuXHQgICAgICAgICAgICBkZWZhdWx0T3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zKG1lcmdlZE9wdGlvbnMpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgdXRpbHMucmV2ZXJzZURlZXBNZXJnZShtZXJnZWRPcHRpb25zLCBkZWZhdWx0T3B0aW9ucyk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGV4dGVuZHNGbihtZXJnZWRPcHRpb25zKTtcblx0ICAgICAgfTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIG9wdGlvbnMudmFsaWRhdGVPcHRpb25zID0gZXh0ZW5kc0ZuO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGV4dGVuZFR5cGVEZWZhdWx0T3B0aW9ucyhvcHRpb25zLCBleHRlbmRzVHlwZSkge1xuXHQgICAgdmFyIGV4dGVuZHNETyA9IGV4dGVuZHNUeXBlLmRlZmF1bHRPcHRpb25zO1xuXHQgICAgaWYgKCFhbmd1bGFyLmlzRGVmaW5lZChleHRlbmRzRE8pKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciBvcHRpb25zRE8gPSBvcHRpb25zLmRlZmF1bHRPcHRpb25zO1xuXHQgICAgdmFyIG9wdGlvbnNET0lzRm4gPSBhbmd1bGFyLmlzRnVuY3Rpb24ob3B0aW9uc0RPKTtcblx0ICAgIHZhciBleHRlbmRzRE9Jc0ZuID0gYW5ndWxhci5pc0Z1bmN0aW9uKGV4dGVuZHNETyk7XG5cdCAgICBpZiAoZXh0ZW5kc0RPSXNGbikge1xuXHQgICAgICBvcHRpb25zLmRlZmF1bHRPcHRpb25zID0gZnVuY3Rpb24gZGVmYXVsdE9wdGlvbnMob3B0aW9ucykge1xuXHQgICAgICAgIHZhciBleHRlbmRzRGVmYXVsdE9wdGlvbnMgPSBleHRlbmRzRE8ob3B0aW9ucyk7XG5cdCAgICAgICAgdmFyIG1lcmdlZERlZmF1bHRPcHRpb25zID0ge307XG5cdCAgICAgICAgdXRpbHMucmV2ZXJzZURlZXBNZXJnZShtZXJnZWREZWZhdWx0T3B0aW9ucywgb3B0aW9ucywgZXh0ZW5kc0RlZmF1bHRPcHRpb25zKTtcblx0ICAgICAgICB2YXIgZXh0ZW5kZXJPcHRpb25zRGVmYXVsdE9wdGlvbnMgPSBvcHRpb25zRE87XG5cdCAgICAgICAgaWYgKG9wdGlvbnNET0lzRm4pIHtcblx0ICAgICAgICAgIGV4dGVuZGVyT3B0aW9uc0RlZmF1bHRPcHRpb25zID0gZXh0ZW5kZXJPcHRpb25zRGVmYXVsdE9wdGlvbnMobWVyZ2VkRGVmYXVsdE9wdGlvbnMpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB1dGlscy5yZXZlcnNlRGVlcE1lcmdlKGV4dGVuZHNEZWZhdWx0T3B0aW9ucywgZXh0ZW5kZXJPcHRpb25zRGVmYXVsdE9wdGlvbnMpO1xuXHQgICAgICAgIHJldHVybiBleHRlbmRzRGVmYXVsdE9wdGlvbnM7XG5cdCAgICAgIH07XG5cdCAgICB9IGVsc2UgaWYgKG9wdGlvbnNET0lzRm4pIHtcblx0ICAgICAgb3B0aW9ucy5kZWZhdWx0T3B0aW9ucyA9IGZ1bmN0aW9uIGRlZmF1bHRPcHRpb25zKG9wdGlvbnMpIHtcblx0ICAgICAgICB2YXIgbmV3RGVmYXVsdE9wdGlvbnMgPSB7fTtcblx0ICAgICAgICB1dGlscy5yZXZlcnNlRGVlcE1lcmdlKG5ld0RlZmF1bHRPcHRpb25zLCBvcHRpb25zLCBleHRlbmRzRE8pO1xuXHQgICAgICAgIHJldHVybiBvcHRpb25zRE8obmV3RGVmYXVsdE9wdGlvbnMpO1xuXHQgICAgICB9O1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldFR5cGUobmFtZSwgdGhyb3dFcnJvciwgZXJyb3JDb250ZXh0KSB7XG5cdCAgICBpZiAoIW5hbWUpIHtcblx0ICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcblx0ICAgIH1cblx0ICAgIHZhciB0eXBlID0gdHlwZU1hcFtuYW1lXTtcblx0ICAgIGlmICghdHlwZSAmJiB0aHJvd0Vycm9yID09PSB0cnVlKSB7XG5cdCAgICAgIHRocm93IGdldEVycm9yKFwiVGhlcmUgaXMgbm8gdHlwZSBieSB0aGUgbmFtZSBvZiBcXFwiXCIgKyBuYW1lICsgXCJcXFwiOiBcIiArIEpTT04uc3RyaW5naWZ5KGVycm9yQ29udGV4dCkpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIHR5cGU7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gc2V0V3JhcHBlcihfeCwgX3gyKSB7XG5cdCAgICB2YXIgX2FnYWluID0gdHJ1ZTtcblxuXHQgICAgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7XG5cdCAgICAgIF9hZ2FpbiA9IGZhbHNlO1xuXHQgICAgICB2YXIgb3B0aW9ucyA9IF94LFxuXHQgICAgICAgICAgbmFtZSA9IF94MjtcblxuXHQgICAgICBpZiAoYW5ndWxhci5pc0FycmF5KG9wdGlvbnMpKSB7XG5cdCAgICAgICAgcmV0dXJuIG9wdGlvbnMubWFwKGZ1bmN0aW9uICh3cmFwcGVyT3B0aW9ucykge1xuXHQgICAgICAgICAgcmV0dXJuIHNldFdyYXBwZXIod3JhcHBlck9wdGlvbnMpO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICB9IGVsc2UgaWYgKGFuZ3VsYXIuaXNPYmplY3Qob3B0aW9ucykpIHtcblx0ICAgICAgICBvcHRpb25zLnR5cGVzID0gZ2V0T3B0aW9uc1R5cGVzKG9wdGlvbnMpO1xuXHQgICAgICAgIG9wdGlvbnMubmFtZSA9IGdldE9wdGlvbnNOYW1lKG9wdGlvbnMsIG5hbWUpO1xuXHQgICAgICAgIGNoZWNrV3JhcHBlckFQSShvcHRpb25zKTtcblx0ICAgICAgICB0ZW1wbGF0ZVdyYXBwZXJzTWFwW29wdGlvbnMubmFtZV0gPSBvcHRpb25zO1xuXHQgICAgICAgIHJldHVybiBvcHRpb25zO1xuXHQgICAgICB9IGVsc2UgaWYgKGFuZ3VsYXIuaXNTdHJpbmcob3B0aW9ucykpIHtcblx0ICAgICAgICBfeCA9IHtcblx0ICAgICAgICAgIHRlbXBsYXRlOiBvcHRpb25zLFxuXHQgICAgICAgICAgbmFtZTogbmFtZVxuXHQgICAgICAgIH07XG5cdCAgICAgICAgX2FnYWluID0gdHJ1ZTtcblx0ICAgICAgICBjb250aW51ZSBfZnVuY3Rpb247XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cblx0ICBmdW5jdGlvbiBnZXRPcHRpb25zVHlwZXMob3B0aW9ucykge1xuXHQgICAgaWYgKGFuZ3VsYXIuaXNTdHJpbmcob3B0aW9ucy50eXBlcykpIHtcblx0ICAgICAgcmV0dXJuIFtvcHRpb25zLnR5cGVzXTtcblx0ICAgIH1cblx0ICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQob3B0aW9ucy50eXBlcykpIHtcblx0ICAgICAgcmV0dXJuIFtdO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIG9wdGlvbnMudHlwZXM7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0T3B0aW9uc05hbWUob3B0aW9ucywgbmFtZSkge1xuXHQgICAgcmV0dXJuIG9wdGlvbnMubmFtZSB8fCBuYW1lIHx8IG9wdGlvbnMudHlwZXMuam9pbihcIiBcIikgfHwgZGVmYXVsdFdyYXBwZXJOYW1lO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGNoZWNrV3JhcHBlckFQSShvcHRpb25zKSB7XG5cdCAgICBmb3JtbHlVc2FiaWxpdHlQcm92aWRlci5jaGVja1dyYXBwZXIob3B0aW9ucyk7XG5cdCAgICBpZiAob3B0aW9ucy50ZW1wbGF0ZSkge1xuXHQgICAgICBmb3JtbHlVc2FiaWxpdHlQcm92aWRlci5jaGVja1dyYXBwZXJUZW1wbGF0ZShvcHRpb25zLnRlbXBsYXRlLCBvcHRpb25zKTtcblx0ICAgIH1cblx0ICAgIGlmICghb3B0aW9ucy5vdmVyd3JpdGVPaykge1xuXHQgICAgICBjaGVja092ZXJ3cml0ZShvcHRpb25zLm5hbWUsIHRlbXBsYXRlV3JhcHBlcnNNYXAsIG9wdGlvbnMsIFwidGVtcGxhdGVXcmFwcGVyc1wiKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGRlbGV0ZSBvcHRpb25zLm92ZXJ3cml0ZU9rO1xuXHQgICAgfVxuXHQgICAgY2hlY2tXcmFwcGVyVHlwZXMob3B0aW9ucyk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gY2hlY2tXcmFwcGVyVHlwZXMob3B0aW9ucykge1xuXHQgICAgdmFyIHNob3VsZFRocm93ID0gIWFuZ3VsYXIuaXNBcnJheShvcHRpb25zLnR5cGVzKSB8fCAhb3B0aW9ucy50eXBlcy5ldmVyeShhbmd1bGFyLmlzU3RyaW5nKTtcblx0ICAgIGlmIChzaG91bGRUaHJvdykge1xuXHQgICAgICB0aHJvdyBnZXRFcnJvcihcIkF0dGVtcHRlZCB0byBjcmVhdGUgYSB0ZW1wbGF0ZSB3cmFwcGVyIHdpdGggdHlwZXMgdGhhdCBpcyBub3QgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5nc1wiKTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICBmdW5jdGlvbiBjaGVja092ZXJ3cml0ZShwcm9wZXJ0eSwgb2JqZWN0LCBuZXdWYWx1ZSwgb2JqZWN0TmFtZSkge1xuXHQgICAgaWYgKG9iamVjdC5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcblx0ICAgICAgd2FybihbXCJBdHRlbXB0aW5nIHRvIG92ZXJ3cml0ZSBcIiArIHByb3BlcnR5ICsgXCIgb24gXCIgKyBvYmplY3ROYW1lICsgXCIgd2hpY2ggaXMgY3VycmVudGx5XCIsIFwiXCIgKyBKU09OLnN0cmluZ2lmeShvYmplY3RbcHJvcGVydHldKSArIFwiIHdpdGggXCIgKyBKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSksIFwiVG8gc3VwcmVzcyB0aGlzIHdhcm5pbmcsIHNwZWNpZnkgdGhlIHByb3BlcnR5IFxcXCJvdmVyd3JpdGVPazogdHJ1ZVxcXCJcIl0uam9pbihcIiBcIikpO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldFdyYXBwZXIobmFtZSkge1xuXHQgICAgcmV0dXJuIHRlbXBsYXRlV3JhcHBlcnNNYXBbbmFtZSB8fCBkZWZhdWx0V3JhcHBlck5hbWVdO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldFdyYXBwZXJCeVR5cGUodHlwZSkge1xuXHQgICAgLyoganNoaW50IG1heGNvbXBsZXhpdHk6NiAqL1xuXHQgICAgdmFyIHdyYXBwZXJzID0gW107XG5cdCAgICBmb3IgKHZhciBuYW1lIGluIHRlbXBsYXRlV3JhcHBlcnNNYXApIHtcblx0ICAgICAgaWYgKHRlbXBsYXRlV3JhcHBlcnNNYXAuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAgICAgICBpZiAodGVtcGxhdGVXcmFwcGVyc01hcFtuYW1lXS50eXBlcyAmJiB0ZW1wbGF0ZVdyYXBwZXJzTWFwW25hbWVdLnR5cGVzLmluZGV4T2YodHlwZSkgIT09IC0xKSB7XG5cdCAgICAgICAgICB3cmFwcGVycy5wdXNoKHRlbXBsYXRlV3JhcHBlcnNNYXBbbmFtZV0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIHdyYXBwZXJzO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIHJlbW92ZVdyYXBwZXJCeU5hbWUobmFtZSkge1xuXHQgICAgdmFyIHdyYXBwZXIgPSB0ZW1wbGF0ZVdyYXBwZXJzTWFwW25hbWVdO1xuXHQgICAgZGVsZXRlIHRlbXBsYXRlV3JhcHBlcnNNYXBbbmFtZV07XG5cdCAgICByZXR1cm4gd3JhcHBlcjtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiByZW1vdmVXcmFwcGVyc0ZvclR5cGUodHlwZSkge1xuXHQgICAgdmFyIHdyYXBwZXJzID0gZ2V0V3JhcHBlckJ5VHlwZSh0eXBlKTtcblx0ICAgIGlmICghd3JhcHBlcnMpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgaWYgKCFhbmd1bGFyLmlzQXJyYXkod3JhcHBlcnMpKSB7XG5cdCAgICAgIHJldHVybiByZW1vdmVXcmFwcGVyQnlOYW1lKHdyYXBwZXJzLm5hbWUpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgd3JhcHBlcnMuZm9yRWFjaChmdW5jdGlvbiAod3JhcHBlcikge1xuXHQgICAgICAgIHJldHVybiByZW1vdmVXcmFwcGVyQnlOYW1lKHdyYXBwZXIubmFtZSk7XG5cdCAgICAgIH0pO1xuXHQgICAgICByZXR1cm4gd3JhcHBlcnM7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gd2FybigpIHtcblx0ICAgIGlmICghX3RoaXMuZGlzYWJsZVdhcm5pbmdzKSB7XG5cdCAgICAgIGNvbnNvbGUud2Fybi5hcHBseShjb25zb2xlLCBhcmd1bWVudHMpO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRmb3JtbHlDb25maWcuJGluamVjdCA9IFtcImZvcm1seVVzYWJpbGl0eVByb3ZpZGVyXCIsIFwiZm9ybWx5QXBpQ2hlY2tcIl07XG5cbi8qKiovIH0sXG4vKiA2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZvcm1seVZhbGlkYXRpb25NZXNzYWdlcztcblxuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5VmFsaWRhdGlvbk1lc3NhZ2VzKCkge1xuXG5cdCAgdmFyIHZhbGlkYXRpb25NZXNzYWdlcyA9IHtcblx0ICAgIGFkZFRlbXBsYXRlT3B0aW9uVmFsdWVNZXNzYWdlOiBhZGRUZW1wbGF0ZU9wdGlvblZhbHVlTWVzc2FnZSxcblx0ICAgIGFkZFN0cmluZ01lc3NhZ2U6IGFkZFN0cmluZ01lc3NhZ2UsXG5cdCAgICBtZXNzYWdlczoge31cblx0ICB9O1xuXG5cdCAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlcztcblxuXHQgIGZ1bmN0aW9uIGFkZFRlbXBsYXRlT3B0aW9uVmFsdWVNZXNzYWdlKG5hbWUsIHByb3AsIHByZWZpeCwgc3VmZml4LCBhbHRlcm5hdGUpIHtcblx0ICAgIHZhbGlkYXRpb25NZXNzYWdlcy5tZXNzYWdlc1tuYW1lXSA9IHRlbXBsYXRlT3B0aW9uVmFsdWUocHJvcCwgcHJlZml4LCBzdWZmaXgsIGFsdGVybmF0ZSk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gYWRkU3RyaW5nTWVzc2FnZShuYW1lLCBzdHJpbmcpIHtcblx0ICAgIHZhbGlkYXRpb25NZXNzYWdlcy5tZXNzYWdlc1tuYW1lXSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgcmV0dXJuIHN0cmluZztcblx0ICAgIH07XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gdGVtcGxhdGVPcHRpb25WYWx1ZShwcm9wLCBwcmVmaXgsIHN1ZmZpeCwgYWx0ZXJuYXRlKSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gZ2V0VmFsaWRhdGlvbk1lc3NhZ2Uodmlld1ZhbHVlLCBtb2RlbFZhbHVlLCBzY29wZSkge1xuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnNbcHJvcF0pIHtcblx0ICAgICAgICByZXR1cm4gXCJcIiArIHByZWZpeCArIFwiIFwiICsgc2NvcGUub3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnNbcHJvcF0gKyBcIiBcIiArIHN1ZmZpeDtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICByZXR1cm4gYWx0ZXJuYXRlO1xuXHQgICAgICB9XG5cdCAgICB9O1xuXHQgIH1cblx0fVxuXG4vKioqLyB9LFxuLyogNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIHV0aWxzID0gX2ludGVyb3BSZXF1aXJlKF9fd2VicGFja19yZXF1aXJlX18oMTgpKTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZvcm1seVV0aWw7XG5cblx0Ly8gQG5nSW5qZWN0XG5cdGZ1bmN0aW9uIGZvcm1seVV0aWwoKSB7XG5cdCAgcmV0dXJuIHV0aWxzO1xuXHR9XG5cbi8qKiovIH0sXG4vKiA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX3RvQ29uc3VtYWJsZUFycmF5ID0gZnVuY3Rpb24gKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9IGVsc2UgeyByZXR1cm4gQXJyYXkuZnJvbShhcnIpOyB9IH07XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmb3JtbHlXYXJuO1xuXG5cdC8vIEBuZ0luamVjdFxuXHRmdW5jdGlvbiBmb3JtbHlXYXJuKGZvcm1seUNvbmZpZywgZm9ybWx5RXJyb3JBbmRXYXJuaW5nc1VybFByZWZpeCwgJGxvZykge1xuXHQgIHJldHVybiBmdW5jdGlvbiB3YXJuKCkge1xuXHQgICAgaWYgKCFmb3JtbHlDb25maWcuZGlzYWJsZVdhcm5pbmdzKSB7XG5cdCAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblx0ICAgICAgdmFyIHdhcm5JbmZvU2x1ZyA9IGFyZ3Muc2hpZnQoKTtcblx0ICAgICAgYXJncy51bnNoaWZ0KFwiRm9ybWx5IFdhcm5pbmc6XCIpO1xuXHQgICAgICBhcmdzLnB1c2goXCJcIiArIGZvcm1seUVycm9yQW5kV2FybmluZ3NVcmxQcmVmaXggKyBcIlwiICsgd2FybkluZm9TbHVnKTtcblx0ICAgICAgJGxvZy53YXJuLmFwcGx5KCRsb2csIF90b0NvbnN1bWFibGVBcnJheShhcmdzKSk7XG5cdCAgICB9XG5cdCAgfTtcblx0fVxuXHRmb3JtbHlXYXJuLiRpbmplY3QgPSBbXCJmb3JtbHlDb25maWdcIiwgXCJmb3JtbHlFcnJvckFuZFdhcm5pbmdzVXJsUHJlZml4XCIsIFwiJGxvZ1wiXTtcblxuLyoqKi8gfSxcbi8qIDkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5Q3VzdG9tVmFsaWRhdGlvbjtcblxuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5Q3VzdG9tVmFsaWRhdGlvbihmb3JtbHlVdGlsLCAkcSkge1xuXHQgIHJldHVybiB7XG5cdCAgICByZXN0cmljdDogXCJBXCIsXG5cdCAgICByZXF1aXJlOiBcIm5nTW9kZWxcIixcblx0ICAgIGxpbms6IGZ1bmN0aW9uIGZvcm1seUN1c3RvbVZhbGlkYXRpb25MaW5rKHNjb3BlLCBlbCwgYXR0cnMsIGN0cmwpIHtcblx0ICAgICAgdmFyIG9wdHMgPSBzY29wZS5vcHRpb25zO1xuXHQgICAgICBpZiAob3B0cy52YWxpZGF0b3JzKSB7XG5cdCAgICAgICAgY2hlY2tWYWxpZGF0b3JzKG9wdHMudmFsaWRhdG9ycyk7XG5cdCAgICAgIH1cblx0ICAgICAgb3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzID0gb3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzIHx8IHt9O1xuXHQgICAgICBhbmd1bGFyLmZvckVhY2gob3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzLCBmdW5jdGlvbiAobWVzc2FnZSwga2V5KSB7XG5cdCAgICAgICAgb3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzW2tleV0gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICByZXR1cm4gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCBtZXNzYWdlLCBjdHJsLiRtb2RlbFZhbHVlLCBjdHJsLiR2aWV3VmFsdWUpO1xuXHQgICAgICAgIH07XG5cdCAgICAgIH0pO1xuXG5cdCAgICAgIHZhciB1c2VOZXdWYWxpZGF0b3JzQXBpID0gY3RybC5oYXNPd25Qcm9wZXJ0eShcIiR2YWxpZGF0b3JzXCIpICYmICFhdHRycy5oYXNPd25Qcm9wZXJ0eShcInVzZVBhcnNlcnNcIik7XG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaChvcHRzLnZhbGlkYXRvcnMsIGZ1bmN0aW9uIGFkZFZhbGlkYXRvclRvUGlwZWxpbmUodmFsaWRhdG9yLCBuYW1lKSB7XG5cdCAgICAgICAgdmFyIG1lc3NhZ2UgPSB2YWxpZGF0b3IubWVzc2FnZTtcblx0ICAgICAgICBpZiAobWVzc2FnZSkge1xuXHQgICAgICAgICAgb3B0cy52YWxpZGF0aW9uLm1lc3NhZ2VzW25hbWVdID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICByZXR1cm4gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCBtZXNzYWdlLCBjdHJsLiRtb2RlbFZhbHVlLCBjdHJsLiR2aWV3VmFsdWUpO1xuXHQgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFsaWRhdG9yID0gYW5ndWxhci5pc09iamVjdCh2YWxpZGF0b3IpID8gdmFsaWRhdG9yLmV4cHJlc3Npb24gOiB2YWxpZGF0b3I7XG5cdCAgICAgICAgdmFyIGlzUG9zc2libHlBc3luYyA9ICFhbmd1bGFyLmlzU3RyaW5nKHZhbGlkYXRvcik7XG5cdCAgICAgICAgaWYgKHVzZU5ld1ZhbGlkYXRvcnNBcGkpIHtcblx0ICAgICAgICAgIHNldHVwV2l0aFZhbGlkYXRvcnMoKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgc2V0dXBXaXRoUGFyc2VycygpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGZ1bmN0aW9uIHNldHVwV2l0aFZhbGlkYXRvcnMoKSB7XG5cdCAgICAgICAgICB2YXIgdmFsaWRhdG9yQ29sbGVjdGlvbiA9IGlzUG9zc2libHlBc3luYyA/IFwiJGFzeW5jVmFsaWRhdG9yc1wiIDogXCIkdmFsaWRhdG9yc1wiO1xuXHQgICAgICAgICAgY3RybFt2YWxpZGF0b3JDb2xsZWN0aW9uXVtuYW1lXSA9IGZ1bmN0aW9uIGV2YWxWYWxpZGl0eShtb2RlbFZhbHVlLCB2aWV3VmFsdWUpIHtcblx0ICAgICAgICAgICAgdmFyIHZhbHVlID0gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCB2YWxpZGF0b3IsIG1vZGVsVmFsdWUsIHZpZXdWYWx1ZSk7XG5cdCAgICAgICAgICAgIGlmIChpc1Bvc3NpYmx5QXN5bmMpIHtcblx0ICAgICAgICAgICAgICByZXR1cm4gaXNQcm9taXNlTGlrZSh2YWx1ZSkgPyB2YWx1ZSA6IHZhbHVlID8gJHEud2hlbih2YWx1ZSkgOiAkcS5yZWplY3QodmFsdWUpO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBmdW5jdGlvbiBzZXR1cFdpdGhQYXJzZXJzKCkge1xuXHQgICAgICAgICAgdmFyIGluRmxpZ2h0VmFsaWRhdG9yID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgY3RybC4kcGFyc2Vycy51bnNoaWZ0KGZ1bmN0aW9uIGV2YWxWYWxpZGl0eU9mUGFyc2VyKHZpZXdWYWx1ZSkge1xuXHQgICAgICAgICAgICB2YXIgaXNWYWxpZCA9IGZvcm1seVV0aWwuZm9ybWx5RXZhbChzY29wZSwgdmFsaWRhdG9yLCBjdHJsLiRtb2RlbFZhbHVlLCB2aWV3VmFsdWUpO1xuXHQgICAgICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShpc1ZhbGlkKSkge1xuXHQgICAgICAgICAgICAgIGN0cmwuJHBlbmRpbmcgPSBjdHJsLiRwZW5kaW5nIHx8IHt9O1xuXHQgICAgICAgICAgICAgIGN0cmwuJHBlbmRpbmdbbmFtZV0gPSB0cnVlO1xuXHQgICAgICAgICAgICAgIGluRmxpZ2h0VmFsaWRhdG9yID0gaXNWYWxpZDtcblx0ICAgICAgICAgICAgICBpc1ZhbGlkLnRoZW4oZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgaWYgKGluRmxpZ2h0VmFsaWRhdG9yID09PSBpc1ZhbGlkKSB7XG5cdCAgICAgICAgICAgICAgICAgIGN0cmwuJHNldFZhbGlkaXR5KG5hbWUsIHRydWUpO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgIH0pW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgaWYgKGluRmxpZ2h0VmFsaWRhdG9yID09PSBpc1ZhbGlkKSB7XG5cdCAgICAgICAgICAgICAgICAgIGN0cmwuJHNldFZhbGlkaXR5KG5hbWUsIGZhbHNlKTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICB9KVtcImZpbmFsbHlcIl0oZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGN0cmwuJHBlbmRpbmcpLmxlbmd0aCA9PT0gMSkge1xuXHQgICAgICAgICAgICAgICAgICBkZWxldGUgY3RybC4kcGVuZGluZztcblx0ICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICAgIGRlbGV0ZSBjdHJsLiRwZW5kaW5nW25hbWVdO1xuXHQgICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgIGN0cmwuJHNldFZhbGlkaXR5KG5hbWUsIGlzVmFsaWQpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIHJldHVybiB2aWV3VmFsdWU7XG5cdCAgICAgICAgICB9KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgIH07XG5cblx0ICBmdW5jdGlvbiBpc1Byb21pc2VMaWtlKG9iaikge1xuXHQgICAgcmV0dXJuIG9iaiAmJiBhbmd1bGFyLmlzRnVuY3Rpb24ob2JqLnRoZW4pO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGNoZWNrVmFsaWRhdG9ycyh2YWxpZGF0b3JzKSB7XG5cdCAgICB2YXIgYWxsb3dlZFByb3BlcnRpZXMgPSBbXCJleHByZXNzaW9uXCIsIFwibWVzc2FnZVwiXTtcblx0ICAgIHZhciB2YWxpZGF0b3JzV2l0aEV4dHJhUHJvcHMgPSB7fTtcblx0ICAgIGFuZ3VsYXIuZm9yRWFjaCh2YWxpZGF0b3JzLCBmdW5jdGlvbiAodmFsaWRhdG9yLCBuYW1lKSB7XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzU3RyaW5nKHZhbGlkYXRvcikpIHtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGV4dHJhUHJvcHMgPSBbXTtcblx0ICAgICAgYW5ndWxhci5mb3JFYWNoKHZhbGlkYXRvciwgZnVuY3Rpb24gKHYsIGtleSkge1xuXHQgICAgICAgIGlmIChhbGxvd2VkUHJvcGVydGllcy5pbmRleE9mKGtleSkgPT09IC0xKSB7XG5cdCAgICAgICAgICBleHRyYVByb3BzLnB1c2goa2V5KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgICBpZiAoZXh0cmFQcm9wcy5sZW5ndGgpIHtcblx0ICAgICAgICB2YWxpZGF0b3JzV2l0aEV4dHJhUHJvcHNbbmFtZV0gPSBleHRyYVByb3BzO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICAgIGlmIChPYmplY3Qua2V5cyh2YWxpZGF0b3JzV2l0aEV4dHJhUHJvcHMpLmxlbmd0aCkge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoW1wiVmFsaWRhdG9ycyBhcmUgb25seSBhbGxvd2VkIHRvIGJlIGZ1bmN0aW9ucyBvciBvYmplY3RzIHRoYXQgaGF2ZSBcIiArIGFsbG93ZWRQcm9wZXJ0aWVzLmpvaW4oXCIsIFwiKSArIFwiLlwiLCBcIllvdSBwcm92aWRlZCBzb21lIGV4dHJhIHByb3BlcnRpZXM6IFwiICsgSlNPTi5zdHJpbmdpZnkodmFsaWRhdG9yc1dpdGhFeHRyYVByb3BzKV0uam9pbihcIiBcIikpO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRmb3JtbHlDdXN0b21WYWxpZGF0aW9uLiRpbmplY3QgPSBbXCJmb3JtbHlVdGlsXCIsIFwiJHFcIl07XG5cbi8qKiovIH0sXG4vKiAxMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5RmllbGQ7XG5cblx0LyoqXG5cdCAqIEBuZ2RvYyBkaXJlY3RpdmVcblx0ICogQG5hbWUgZm9ybWx5RmllbGRcblx0ICogQHJlc3RyaWN0IEFFXG5cdCAqL1xuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5RmllbGQoJGh0dHAsICRxLCAkY29tcGlsZSwgJHRlbXBsYXRlQ2FjaGUsIGZvcm1seUNvbmZpZywgZm9ybWx5VmFsaWRhdGlvbk1lc3NhZ2VzLCBmb3JtbHlBcGlDaGVjaywgZm9ybWx5VXRpbCwgZm9ybWx5VXNhYmlsaXR5LCBmb3JtbHlXYXJuKSB7XG5cdCAgdmFyIGFycmF5aWZ5ID0gZm9ybWx5VXRpbC5hcnJheWlmeTtcblxuXHQgIEZvcm1seUZpZWxkQ29udHJvbGxlci4kaW5qZWN0ID0gW1wiJHNjb3BlXCIsIFwiJHRpbWVvdXRcIiwgXCIkcGFyc2VcIiwgXCIkY29udHJvbGxlclwiXTtcblx0ICByZXR1cm4ge1xuXHQgICAgcmVzdHJpY3Q6IFwiQUVcIixcblx0ICAgIHRyYW5zY2x1ZGU6IHRydWUsXG5cdCAgICBzY29wZToge1xuXHQgICAgICBvcHRpb25zOiBcIj1cIixcblx0ICAgICAgbW9kZWw6IFwiPVwiLFxuXHQgICAgICBmb3JtSWQ6IFwiQFwiLCAvLyBUT0RPIHJlbW92ZSBmb3JtSWQgaW4gYSBicmVha2luZyByZWxlYXNlXG5cdCAgICAgIGluZGV4OiBcIj0/XCIsXG5cdCAgICAgIGZpZWxkczogXCI9P1wiLFxuXHQgICAgICBmb3JtU3RhdGU6IFwiPT9cIixcblx0ICAgICAgZm9ybTogXCI9P1wiIC8vIFRPRE8gcmVxdWlyZSBmb3JtIGluIGEgYnJlYWtpbmcgcmVsZWFzZVxuXHQgICAgfSxcblx0ICAgIGNvbnRyb2xsZXI6IEZvcm1seUZpZWxkQ29udHJvbGxlcixcblx0ICAgIGxpbms6IGZpZWxkTGlua1xuXHQgIH07XG5cblx0ICAvLyBAbmdJbmplY3Rcblx0ICBmdW5jdGlvbiBGb3JtbHlGaWVsZENvbnRyb2xsZXIoJHNjb3BlLCAkdGltZW91dCwgJHBhcnNlLCAkY29udHJvbGxlcikge1xuXHQgICAgLyoganNoaW50IG1heHN0YXRlbWVudHM6MzEgKi9cblx0ICAgIGlmICgkc2NvcGUub3B0aW9ucy5maWVsZEdyb3VwKSB7XG5cdCAgICAgIHNldHVwRmllbGRHcm91cCgpO1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cblx0ICAgIHZhciBmaWVsZFR5cGUgPSBnZXRGaWVsZFR5cGUoJHNjb3BlLm9wdGlvbnMpO1xuXHQgICAgc2ltcGxpZnlMaWZlKCRzY29wZS5vcHRpb25zKTtcblx0ICAgIG1lcmdlRmllbGRPcHRpb25zV2l0aFR5cGVEZWZhdWx0cygkc2NvcGUub3B0aW9ucywgZmllbGRUeXBlKTtcblx0ICAgIGV4dGVuZE9wdGlvbnNXaXRoRGVmYXVsdHMoJHNjb3BlLm9wdGlvbnMsICRzY29wZS5pbmRleCk7XG5cdCAgICBjaGVja0FwaSgkc2NvcGUub3B0aW9ucyk7XG5cdCAgICAvLyBzZXQgZmllbGQgaWQgdG8gbGluayBsYWJlbHMgYW5kIGZpZWxkc1xuXG5cdCAgICAvLyBpbml0YWxpemF0aW9uXG5cdCAgICBzZXRGaWVsZElkKCk7XG5cdCAgICBzZXREZWZhdWx0VmFsdWUoKTtcblx0ICAgIHNldEluaXRpYWxWYWx1ZSgpO1xuXHQgICAgcnVuRXhwcmVzc2lvbnMoKTtcblx0ICAgIGFkZE1vZGVsV2F0Y2hlcigkc2NvcGUsICRzY29wZS5vcHRpb25zKTtcblx0ICAgIGFkZFZhbGlkYXRpb25NZXNzYWdlcygkc2NvcGUub3B0aW9ucyk7XG5cdCAgICBpbnZva2VDb250cm9sbGVycygkc2NvcGUsICRzY29wZS5vcHRpb25zLCBmaWVsZFR5cGUpO1xuXG5cdCAgICAvLyBmdW5jdGlvbiBkZWZpbml0aW9uc1xuXHQgICAgZnVuY3Rpb24gcnVuRXhwcmVzc2lvbnMoKSB7XG5cdCAgICAgIC8vIG11c3QgcnVuIG9uIG5leHQgdGljayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZSBpcyBjb3JyZWN0LlxuXHQgICAgICAkdGltZW91dChmdW5jdGlvbiBydW5FeHByZXNzaW9uc09uTmV4dFRpY2soKSB7XG5cdCAgICAgICAgdmFyIGZpZWxkID0gJHNjb3BlLm9wdGlvbnM7XG5cdCAgICAgICAgdmFyIGN1cnJlbnRWYWx1ZSA9IHZhbHVlR2V0dGVyU2V0dGVyKCk7XG5cdCAgICAgICAgYW5ndWxhci5mb3JFYWNoKGZpZWxkLmV4cHJlc3Npb25Qcm9wZXJ0aWVzLCBmdW5jdGlvbiBydW5FeHByZXNzaW9uKGV4cHJlc3Npb24sIHByb3ApIHtcblx0ICAgICAgICAgIHZhciBzZXR0ZXIgPSAkcGFyc2UocHJvcCkuYXNzaWduO1xuXHQgICAgICAgICAgdmFyIHByb21pc2UgPSAkcS53aGVuKGZvcm1seVV0aWwuZm9ybWx5RXZhbCgkc2NvcGUsIGV4cHJlc3Npb24sIGN1cnJlbnRWYWx1ZSkpO1xuXHQgICAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIHNldEZpZWxkVmFsdWUodmFsdWUpIHtcblx0ICAgICAgICAgICAgc2V0dGVyKGZpZWxkLCB2YWx1ZSk7XG5cdCAgICAgICAgICB9KTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgfSk7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIHZhbHVlR2V0dGVyU2V0dGVyKG5ld1ZhbCkge1xuXHQgICAgICBpZiAoISRzY29wZS5tb2RlbCB8fCAhJHNjb3BlLm9wdGlvbnMua2V5KSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChuZXdWYWwpKSB7XG5cdCAgICAgICAgJHNjb3BlLm1vZGVsWyRzY29wZS5vcHRpb25zLmtleV0gPSBuZXdWYWw7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuICRzY29wZS5tb2RlbFskc2NvcGUub3B0aW9ucy5rZXldO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBzaW1wbGlmeUxpZmUob3B0aW9ucykge1xuXHQgICAgICAvLyBhZGQgYSBmZXcgZW1wdHkgb2JqZWN0cyAoaWYgdGhleSBkb24ndCBhbHJlYWR5IGV4aXN0KSBzbyB5b3UgZG9uJ3QgaGF2ZSB0byB1bmRlZmluZWQgY2hlY2sgZXZlcnl3aGVyZVxuXHQgICAgICBmb3JtbHlVdGlsLnJldmVyc2VEZWVwTWVyZ2Uob3B0aW9ucywge1xuXHQgICAgICAgIGRhdGE6IHt9LFxuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge30sXG5cdCAgICAgICAgdmFsaWRhdGlvbjoge31cblx0ICAgICAgfSk7XG5cdCAgICAgIC8vIGNyZWF0ZSAkc2NvcGUudG8gc28gdGVtcGxhdGUgYXV0aG9ycyBjYW4gcmVmZXJlbmNlIHRvIGluc3RlYWQgb2YgJHNjb3BlLm9wdGlvbnMudGVtcGxhdGVPcHRpb25zXG5cdCAgICAgICRzY29wZS50byA9ICRzY29wZS5vcHRpb25zLnRlbXBsYXRlT3B0aW9ucztcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gc2V0RmllbGRJZCgpIHtcblx0ICAgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbihmb3JtbHlDb25maWcuZXh0cmFzLmdldEZpZWxkSWQpKSB7XG5cdCAgICAgICAgJHNjb3BlLmlkID0gZm9ybWx5Q29uZmlnLmV4dHJhcy5nZXRGaWVsZElkKCRzY29wZS5vcHRpb25zLCAkc2NvcGUubW9kZWwsICRzY29wZSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdmFyIGZvcm1OYW1lID0gJHNjb3BlLmZvcm0gJiYgJHNjb3BlLmZvcm0uJG5hbWUgfHwgJHNjb3BlLmZvcm1JZDtcblx0ICAgICAgICAkc2NvcGUuaWQgPSBmb3JtbHlVdGlsLmdldEZpZWxkSWQoZm9ybU5hbWUsICRzY29wZS5vcHRpb25zLCAkc2NvcGUuaW5kZXgpO1xuXHQgICAgICB9XG5cdCAgICAgICRzY29wZS5vcHRpb25zLmlkID0gJHNjb3BlLmlkO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBzZXREZWZhdWx0VmFsdWUoKSB7XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZCgkc2NvcGUub3B0aW9ucy5kZWZhdWx0VmFsdWUpICYmICFhbmd1bGFyLmlzRGVmaW5lZCgkc2NvcGUubW9kZWxbJHNjb3BlLm9wdGlvbnMua2V5XSkpIHtcblx0ICAgICAgICAkc2NvcGUubW9kZWxbJHNjb3BlLm9wdGlvbnMua2V5XSA9ICRzY29wZS5vcHRpb25zLmRlZmF1bHRWYWx1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBzZXRJbml0aWFsVmFsdWUoKSB7XG5cdCAgICAgICRzY29wZS5vcHRpb25zLmluaXRpYWxWYWx1ZSA9ICRzY29wZS5tb2RlbCAmJiAkc2NvcGUubW9kZWxbJHNjb3BlLm9wdGlvbnMua2V5XTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gbWVyZ2VGaWVsZE9wdGlvbnNXaXRoVHlwZURlZmF1bHRzKG9wdGlvbnMsIHR5cGUpIHtcblx0ICAgICAgaWYgKHR5cGUpIHtcblx0ICAgICAgICBtZXJnZU9wdGlvbnMob3B0aW9ucywgdHlwZS5kZWZhdWx0T3B0aW9ucyk7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHByb3Blck9yZGVyID0gYXJyYXlpZnkob3B0aW9ucy5vcHRpb25zVHlwZXMpLnJldmVyc2UoKTsgLy8gc28gdGhlIHJpZ2h0IHRoaW5ncyBhcmUgb3ZlcnJpZGRlblxuXHQgICAgICBhbmd1bGFyLmZvckVhY2gocHJvcGVyT3JkZXIsIGZ1bmN0aW9uICh0eXBlTmFtZSkge1xuXHQgICAgICAgIG1lcmdlT3B0aW9ucyhvcHRpb25zLCBmb3JtbHlDb25maWcuZ2V0VHlwZSh0eXBlTmFtZSwgdHJ1ZSwgb3B0aW9ucykuZGVmYXVsdE9wdGlvbnMpO1xuXHQgICAgICB9KTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gbWVyZ2VPcHRpb25zKG9wdGlvbnMsIGV4dHJhT3B0aW9ucykge1xuXHQgICAgICBpZiAoZXh0cmFPcHRpb25zKSB7XG5cdCAgICAgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbihleHRyYU9wdGlvbnMpKSB7XG5cdCAgICAgICAgICBleHRyYU9wdGlvbnMgPSBleHRyYU9wdGlvbnMob3B0aW9ucyk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGZvcm1seVV0aWwucmV2ZXJzZURlZXBNZXJnZShvcHRpb25zLCBleHRyYU9wdGlvbnMpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGV4dGVuZE9wdGlvbnNXaXRoRGVmYXVsdHMob3B0aW9ucywgaW5kZXgpIHtcblx0ICAgICAgdmFyIGtleSA9IG9wdGlvbnMua2V5IHx8IGluZGV4IHx8IDA7XG5cdCAgICAgIGFuZ3VsYXIuZXh0ZW5kKG9wdGlvbnMsIHtcblx0ICAgICAgICAvLyBhdHRhY2ggdGhlIGtleSBpbiBjYXNlIHRoZSBmb3JtbHktZmllbGQgZGlyZWN0aXZlIGlzIHVzZWQgZGlyZWN0bHlcblx0ICAgICAgICBrZXk6IGtleSxcblx0ICAgICAgICB2YWx1ZTogdmFsdWVHZXR0ZXJTZXR0ZXIsXG5cdCAgICAgICAgcnVuRXhwcmVzc2lvbnM6IHJ1bkV4cHJlc3Npb25zLFxuXHQgICAgICAgIHJlc2V0TW9kZWw6IHJlc2V0TW9kZWwsXG5cdCAgICAgICAgdXBkYXRlSW5pdGlhbFZhbHVlOiB1cGRhdGVJbml0aWFsVmFsdWVcblx0ICAgICAgfSk7XG5cdCAgICB9XG5cblx0ICAgIC8vIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uc1xuXHQgICAgZnVuY3Rpb24gYWRkTW9kZWxXYXRjaGVyKHNjb3BlLCBvcHRpb25zKSB7XG5cdCAgICAgIGlmIChvcHRpb25zLm1vZGVsKSB7XG5cdCAgICAgICAgc2NvcGUuJHdhdGNoKFwib3B0aW9ucy5tb2RlbFwiLCBydW5FeHByZXNzaW9ucywgdHJ1ZSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gcmVzZXRNb2RlbCgpIHtcblx0ICAgICAgJHNjb3BlLm1vZGVsWyRzY29wZS5vcHRpb25zLmtleV0gPSAkc2NvcGUub3B0aW9ucy5pbml0aWFsVmFsdWU7XG5cdCAgICAgIGlmICgkc2NvcGUub3B0aW9ucy5mb3JtQ29udHJvbCkge1xuXHQgICAgICAgICRzY29wZS5vcHRpb25zLmZvcm1Db250cm9sLiRzZXRWaWV3VmFsdWUoJHNjb3BlLm1vZGVsWyRzY29wZS5vcHRpb25zLmtleV0pO1xuXHQgICAgICAgICRzY29wZS5vcHRpb25zLmZvcm1Db250cm9sLiRyZW5kZXIoKTtcblx0ICAgICAgICAkc2NvcGUub3B0aW9ucy5mb3JtQ29udHJvbC4kc2V0VW50b3VjaGVkKCk7XG5cdCAgICAgICAgJHNjb3BlLm9wdGlvbnMuZm9ybUNvbnRyb2wuJHNldFByaXN0aW5lKCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gdXBkYXRlSW5pdGlhbFZhbHVlKCkge1xuXHQgICAgICAkc2NvcGUub3B0aW9ucy5pbml0aWFsVmFsdWUgPSAkc2NvcGUubW9kZWxbJHNjb3BlLm9wdGlvbnMua2V5XTtcblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gYWRkVmFsaWRhdGlvbk1lc3NhZ2VzKG9wdGlvbnMpIHtcblx0ICAgICAgb3B0aW9ucy52YWxpZGF0aW9uLm1lc3NhZ2VzID0gb3B0aW9ucy52YWxpZGF0aW9uLm1lc3NhZ2VzIHx8IHt9O1xuXHQgICAgICBhbmd1bGFyLmZvckVhY2goZm9ybWx5VmFsaWRhdGlvbk1lc3NhZ2VzLm1lc3NhZ2VzLCBmdW5jdGlvbiBjcmVhdGVGdW5jdGlvbkZvck1lc3NhZ2UoZXhwcmVzc2lvbiwgbmFtZSkge1xuXHQgICAgICAgIGlmICghb3B0aW9ucy52YWxpZGF0aW9uLm1lc3NhZ2VzW25hbWVdKSB7XG5cdCAgICAgICAgICBvcHRpb25zLnZhbGlkYXRpb24ubWVzc2FnZXNbbmFtZV0gPSBmdW5jdGlvbiBldmFsdWF0ZU1lc3NhZ2Uodmlld1ZhbHVlLCBtb2RlbFZhbHVlLCBzY29wZSkge1xuXHQgICAgICAgICAgICByZXR1cm4gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCBleHByZXNzaW9uLCBtb2RlbFZhbHVlLCB2aWV3VmFsdWUpO1xuXHQgICAgICAgICAgfTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBpbnZva2VDb250cm9sbGVycyhzY29wZSkge1xuXHQgICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMV07XG5cdCAgICAgIHZhciB0eXBlID0gYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1syXTtcblxuXHQgICAgICBhbmd1bGFyLmZvckVhY2goW3R5cGUuY29udHJvbGxlciwgb3B0aW9ucy5jb250cm9sbGVyXSwgZnVuY3Rpb24gKGNvbnRyb2xsZXIpIHtcblx0ICAgICAgICBpZiAoY29udHJvbGxlcikge1xuXHQgICAgICAgICAgJGNvbnRyb2xsZXIoY29udHJvbGxlciwgeyAkc2NvcGU6IHNjb3BlIH0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSk7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIHNldHVwRmllbGRHcm91cCgpIHtcblx0ICAgICAgJHNjb3BlLm9wdGlvbnMub3B0aW9ucyA9ICRzY29wZS5vcHRpb25zLm9wdGlvbnMgfHwge307XG5cdCAgICAgICRzY29wZS5vcHRpb25zLm9wdGlvbnMuZm9ybVN0YXRlID0gJHNjb3BlLmZvcm1TdGF0ZTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICAvLyBsaW5rIGZ1bmN0aW9uXG5cdCAgZnVuY3Rpb24gZmllbGRMaW5rKHNjb3BlLCBlbCkge1xuXHQgICAgaWYgKHNjb3BlLm9wdGlvbnMuZmllbGRHcm91cCkge1xuXHQgICAgICBzZXRGaWVsZEdyb3VwVGVtcGxhdGUoKTtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXG5cdCAgICBhZGRBdHRyaWJ1dGVzKCk7XG5cdCAgICBhZGRDbGFzc2VzKCk7XG5cblx0ICAgIHZhciB0eXBlID0gZ2V0RmllbGRUeXBlKHNjb3BlLm9wdGlvbnMpO1xuXHQgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG5cdCAgICB2YXIgdGh1c2x5ID0gdGhpcztcblx0ICAgIGdldEZpZWxkVGVtcGxhdGUoc2NvcGUub3B0aW9ucykudGhlbihydW5NYW5pcHVsYXRvcnMoZm9ybWx5Q29uZmlnLnRlbXBsYXRlTWFuaXB1bGF0b3JzLnByZVdyYXBwZXIpKS50aGVuKHRyYW5zY2x1ZGVJbldyYXBwZXJzKHNjb3BlLm9wdGlvbnMpKS50aGVuKHJ1bk1hbmlwdWxhdG9ycyhmb3JtbHlDb25maWcudGVtcGxhdGVNYW5pcHVsYXRvcnMucG9zdFdyYXBwZXIpKS50aGVuKHNldEVsZW1lbnRUZW1wbGF0ZSkudGhlbih3YXRjaEZvcm1Db250cm9sKS50aGVuKGNhbGxMaW5rRnVuY3Rpb25zKVtcImNhdGNoXCJdKGZ1bmN0aW9uIChlcnJvcikge1xuXHQgICAgICBmb3JtbHlXYXJuKFwidGhlcmUtd2FzLWEtcHJvYmxlbS1zZXR0aW5nLXRoZS10ZW1wbGF0ZS1mb3ItdGhpcy1maWVsZFwiLCBcIlRoZXJlIHdhcyBhIHByb2JsZW0gc2V0dGluZyB0aGUgdGVtcGxhdGUgZm9yIHRoaXMgZmllbGQgXCIsIHNjb3BlLm9wdGlvbnMsIGVycm9yKTtcblx0ICAgIH0pO1xuXG5cdCAgICBmdW5jdGlvbiBzZXRGaWVsZEdyb3VwVGVtcGxhdGUoKSB7XG5cdCAgICAgIGNoZWNrRmllbGRHcm91cEFwaShzY29wZS5vcHRpb25zKTtcblx0ICAgICAgZWwuYWRkQ2xhc3MoXCJmb3JtbHktZmllbGQtZ3JvdXBcIik7XG5cdCAgICAgIHZhciBleHRyYUF0dHJpYnV0ZXMgPSBcIlwiO1xuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy5lbGVtZW50QXR0cmlidXRlcykge1xuXHQgICAgICAgIGV4dHJhQXR0cmlidXRlcyA9IE9iamVjdC5rZXlzKHNjb3BlLm9wdGlvbnMuZWxlbWVudEF0dHJpYnV0ZXMpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICAgICAgICByZXR1cm4gXCJcIiArIGtleSArIFwiPVxcXCJcIiArIHNjb3BlLm9wdGlvbnMuZWxlbWVudEF0dHJpYnV0ZXNba2V5XSArIFwiXFxcIlwiO1xuXHQgICAgICAgIH0pLmpvaW4oXCIgXCIpO1xuXHQgICAgICB9XG5cdCAgICAgIHNldEVsZW1lbnRUZW1wbGF0ZShcIlxcbiAgICAgICAgICA8Zm9ybWx5LWZvcm0gbW9kZWw9XFxcIm1vZGVsXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzPVxcXCJvcHRpb25zLmZpZWxkR3JvdXBcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPVxcXCJvcHRpb25zLm9wdGlvbnNcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3JtPVxcXCJvcHRpb25zLmZvcm1cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiXCIgKyBzY29wZS5vcHRpb25zLmNsYXNzTmFtZSArIFwiXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgXCIgKyBleHRyYUF0dHJpYnV0ZXMgKyBcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgaXMtZmllbGQtZ3JvdXA+XFxuICAgICAgICAgIDwvZm9ybWx5LWZvcm0+XFxuICAgICAgICBcIik7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGFkZEF0dHJpYnV0ZXMoKSB7XG5cdCAgICAgIGlmIChzY29wZS5vcHRpb25zLmVsZW1lbnRBdHRyaWJ1dGVzKSB7XG5cdCAgICAgICAgZWwuYXR0cihzY29wZS5vcHRpb25zLmVsZW1lbnRBdHRyaWJ1dGVzKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBhZGRDbGFzc2VzKCkge1xuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy5jbGFzc05hbWUpIHtcblx0ICAgICAgICBlbC5hZGRDbGFzcyhzY29wZS5vcHRpb25zLmNsYXNzTmFtZSk7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHNjb3BlLm9wdGlvbnMudHlwZSkge1xuXHQgICAgICAgIGVsLmFkZENsYXNzKFwiZm9ybWx5LWZpZWxkLVwiICsgc2NvcGUub3B0aW9ucy50eXBlKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBzZXRFbGVtZW50VGVtcGxhdGUodGVtcGxhdGVTdHJpbmcpIHtcblx0ICAgICAgZWwuaHRtbChhc0h0bWwodGVtcGxhdGVTdHJpbmcpKTtcblx0ICAgICAgJGNvbXBpbGUoZWwuY29udGVudHMoKSkoc2NvcGUpO1xuXHQgICAgICByZXR1cm4gdGVtcGxhdGVTdHJpbmc7XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIHdhdGNoRm9ybUNvbnRyb2wodGVtcGxhdGVTdHJpbmcpIHtcblx0ICAgICAgdmFyIHN0b3BXYXRjaGluZ0ZpZWxkID0gYW5ndWxhci5ub29wO1xuXHQgICAgICB2YXIgc3RvcFdhdGNoaW5nU2hvd0Vycm9yID0gYW5ndWxhci5ub29wO1xuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy5ub0Zvcm1Db250cm9sKSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciB0ZW1wbGF0ZUVsID0gYW5ndWxhci5lbGVtZW50KFwiPGRpdj5cIiArIHRlbXBsYXRlU3RyaW5nICsgXCI8L2Rpdj5cIik7XG5cdCAgICAgIHZhciBuZ01vZGVsTm9kZSA9IHRlbXBsYXRlRWxbMF0ucXVlcnlTZWxlY3RvcihcIltuZy1tb2RlbF0sW2RhdGEtbmctbW9kZWxdXCIpO1xuXHQgICAgICBpZiAobmdNb2RlbE5vZGUgJiYgbmdNb2RlbE5vZGUuZ2V0QXR0cmlidXRlKFwibmFtZVwiKSkge1xuXHQgICAgICAgIHdhdGNoRmllbGROYW1lT3JFeGlzdGVuY2UobmdNb2RlbE5vZGUuZ2V0QXR0cmlidXRlKFwibmFtZVwiKSk7XG5cdCAgICAgIH1cblxuXHQgICAgICBmdW5jdGlvbiB3YXRjaEZpZWxkTmFtZU9yRXhpc3RlbmNlKG5hbWUpIHtcblx0ICAgICAgICB2YXIgbmFtZUV4cHJlc3Npb25SZWdleCA9IC9cXHtcXHsoLio/KX19Lztcblx0ICAgICAgICB2YXIgbmFtZUV4cHJlc3Npb24gPSBuYW1lRXhwcmVzc2lvblJlZ2V4LmV4ZWMobmFtZSk7XG5cdCAgICAgICAgaWYgKG5hbWVFeHByZXNzaW9uKSB7XG5cdCAgICAgICAgICB3YXRjaEZpZWxkTmFtZShuYW1lRXhwcmVzc2lvblsxXSk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHdhdGNoRmllbGRFeGlzdGVuY2UobmFtZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gd2F0Y2hGaWVsZE5hbWUoZXhwcmVzc2lvbikge1xuXHQgICAgICAgIHNjb3BlLiR3YXRjaChleHByZXNzaW9uLCBmdW5jdGlvbiBvbmVGaWVsZE5hbWVDaGFuZ2UobmFtZSkge1xuXHQgICAgICAgICAgaWYgKG5hbWUpIHtcblx0ICAgICAgICAgICAgc3RvcFdhdGNoaW5nRmllbGQoKTtcblx0ICAgICAgICAgICAgd2F0Y2hGaWVsZEV4aXN0ZW5jZShuYW1lKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIHdhdGNoRmllbGRFeGlzdGVuY2UobmFtZSkge1xuXHQgICAgICAgIHN0b3BXYXRjaGluZ0ZpZWxkID0gc2NvcGUuJHdhdGNoKFwiZm9ybVtcXFwiXCIgKyBuYW1lICsgXCJcXFwiXVwiLCBmdW5jdGlvbiBmb3JtQ29udHJvbENoYW5nZShmb3JtQ29udHJvbCkge1xuXHQgICAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XG5cdCAgICAgICAgICAgIHNjb3BlLmZjID0gZm9ybUNvbnRyb2w7IC8vIHNob3J0Y3V0IGZvciB0ZW1wbGF0ZSBhdXRob3JzXG5cdCAgICAgICAgICAgIHNjb3BlLm9wdGlvbnMuZm9ybUNvbnRyb2wgPSBmb3JtQ29udHJvbDtcblx0ICAgICAgICAgICAgc3RvcFdhdGNoaW5nU2hvd0Vycm9yKCk7XG5cdCAgICAgICAgICAgIGFkZFNob3dNZXNzYWdlc1dhdGNoZXIoKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIGFkZFNob3dNZXNzYWdlc1dhdGNoZXIoKSB7XG5cdCAgICAgICAgc3RvcFdhdGNoaW5nU2hvd0Vycm9yID0gc2NvcGUuJHdhdGNoKGZ1bmN0aW9uIHdhdGNoU2hvd1ZhbGlkYXRpb25DaGFuZ2UoKSB7XG5cdCAgICAgICAgICB2YXIgY3VzdG9tRXhwcmVzc2lvbiA9IGZvcm1seUNvbmZpZy5leHRyYXMuZXJyb3JFeGlzdHNBbmRTaG91bGRCZVZpc2libGVFeHByZXNzaW9uO1xuXHQgICAgICAgICAgdmFyIG9wdGlvbnMgPSBzY29wZS5vcHRpb25zO1xuXHQgICAgICAgICAgdmFyIGZjID0gc2NvcGUuZmM7XG5cblx0ICAgICAgICAgIGlmICghZmMuJGludmFsaWQpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucy52YWxpZGF0aW9uLnNob3cgPT09IFwiYm9vbGVhblwiKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnZhbGlkYXRpb24uc2hvdztcblx0ICAgICAgICAgIH0gZWxzZSBpZiAoY3VzdG9tRXhwcmVzc2lvbikge1xuXHQgICAgICAgICAgICByZXR1cm4gZm9ybWx5VXRpbC5mb3JtbHlFdmFsKHNjb3BlLCBjdXN0b21FeHByZXNzaW9uLCBmYy4kbW9kZWxWYWx1ZSwgZmMuJHZpZXdWYWx1ZSk7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICB2YXIgbm9Ub3VjaGVkQnV0RGlydHkgPSBhbmd1bGFyLmlzVW5kZWZpbmVkKGZjLiR0b3VjaGVkKSAmJiBmYy4kZGlydHk7XG5cdCAgICAgICAgICAgIHJldHVybiBzY29wZS5mYy4kdG91Y2hlZCB8fCBub1RvdWNoZWRCdXREaXJ0eTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9LCBmdW5jdGlvbiBvblNob3dWYWxpZGF0aW9uQ2hhbmdlKHNob3cpIHtcblx0ICAgICAgICAgIHNjb3BlLm9wdGlvbnMudmFsaWRhdGlvbi5lcnJvckV4aXN0c0FuZFNob3VsZEJlVmlzaWJsZSA9IHNob3c7XG5cdCAgICAgICAgICBzY29wZS5zaG93RXJyb3IgPSBzaG93OyAvLyBzaG9ydGN1dCBmb3IgdGVtcGxhdGUgYXV0aG9yc1xuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIGZ1bmN0aW9uIGNhbGxMaW5rRnVuY3Rpb25zKCkge1xuXHQgICAgICBpZiAodHlwZSAmJiB0eXBlLmxpbmspIHtcblx0ICAgICAgICB0eXBlLmxpbmsuYXBwbHkodGh1c2x5LCBhcmdzKTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAoc2NvcGUub3B0aW9ucy5saW5rKSB7XG5cdCAgICAgICAgc2NvcGUub3B0aW9ucy5saW5rLmFwcGx5KHRodXNseSwgYXJncyk7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gcnVuTWFuaXB1bGF0b3JzKG1hbmlwdWxhdG9ycykge1xuXHQgICAgICByZXR1cm4gZnVuY3Rpb24gcnVuTWFuaXB1bGF0b3JzT25UZW1wbGF0ZSh0ZW1wbGF0ZSkge1xuXHQgICAgICAgIHZhciBjaGFpbiA9ICRxLndoZW4odGVtcGxhdGUpO1xuXHQgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChtYW5pcHVsYXRvcnMsIGZ1bmN0aW9uIChtYW5pcHVsYXRvcikge1xuXHQgICAgICAgICAgY2hhaW4gPSBjaGFpbi50aGVuKGZ1bmN0aW9uICh0ZW1wbGF0ZSkge1xuXHQgICAgICAgICAgICByZXR1cm4gJHEud2hlbihtYW5pcHVsYXRvcih0ZW1wbGF0ZSwgc2NvcGUub3B0aW9ucywgc2NvcGUpKS50aGVuKGZ1bmN0aW9uIChuZXdUZW1wbGF0ZSkge1xuXHQgICAgICAgICAgICAgIHJldHVybiBhbmd1bGFyLmlzU3RyaW5nKG5ld1RlbXBsYXRlKSA/IG5ld1RlbXBsYXRlIDogYXNIdG1sKG5ld1RlbXBsYXRlKTtcblx0ICAgICAgICAgICAgfSk7XG5cdCAgICAgICAgICB9KTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgICByZXR1cm4gY2hhaW47XG5cdCAgICAgIH07XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgLy8gc3RhdGVsZXNzIHV0aWwgZnVuY3Rpb25zXG5cdCAgZnVuY3Rpb24gYXNIdG1sKGVsKSB7XG5cdCAgICB2YXIgd3JhcHBlciA9IGFuZ3VsYXIuZWxlbWVudChcIjxhPjwvYT5cIik7XG5cdCAgICByZXR1cm4gd3JhcHBlci5hcHBlbmQoZWwpLmh0bWwoKTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBnZXRGaWVsZFR5cGUob3B0aW9ucykge1xuXHQgICAgcmV0dXJuIG9wdGlvbnMudHlwZSAmJiBmb3JtbHlDb25maWcuZ2V0VHlwZShvcHRpb25zLnR5cGUpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldEZpZWxkVGVtcGxhdGUob3B0aW9ucykge1xuXHQgICAgZnVuY3Rpb24gZnJvbU9wdGlvbnNPclR5cGUoa2V5LCB0eXBlKSB7XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChvcHRpb25zW2tleV0pKSB7XG5cdCAgICAgICAgcmV0dXJuIG9wdGlvbnNba2V5XTtcblx0ICAgICAgfSBlbHNlIGlmICh0eXBlICYmIGFuZ3VsYXIuaXNEZWZpbmVkKHR5cGVba2V5XSkpIHtcblx0ICAgICAgICByZXR1cm4gdHlwZVtrZXldO1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIHZhciB0eXBlID0gZm9ybWx5Q29uZmlnLmdldFR5cGUob3B0aW9ucy50eXBlLCB0cnVlLCBvcHRpb25zKTtcblx0ICAgIHZhciB0ZW1wbGF0ZSA9IGZyb21PcHRpb25zT3JUeXBlKFwidGVtcGxhdGVcIiwgdHlwZSk7XG5cdCAgICB2YXIgdGVtcGxhdGVVcmwgPSBmcm9tT3B0aW9uc09yVHlwZShcInRlbXBsYXRlVXJsXCIsIHR5cGUpO1xuXHQgICAgaWYgKGFuZ3VsYXIuaXNVbmRlZmluZWQodGVtcGxhdGUpICYmICF0ZW1wbGF0ZVVybCkge1xuXHQgICAgICB0aHJvdyBmb3JtbHlVc2FiaWxpdHkuZ2V0RmllbGRFcnJvcihcInR5cGUtdHlwZS1oYXMtbm8tdGVtcGxhdGVcIiwgXCJUeXBlICdcIiArIG9wdGlvbnMudHlwZSArIFwiJyBoYXMgbm90IHRlbXBsYXRlLiBPbiBlbGVtZW50OlwiLCBvcHRpb25zKTtcblx0ICAgIH1cblxuXHQgICAgcmV0dXJuIGdldFRlbXBsYXRlKHRlbXBsYXRlVXJsIHx8IHRlbXBsYXRlLCBhbmd1bGFyLmlzVW5kZWZpbmVkKHRlbXBsYXRlKSwgb3B0aW9ucyk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0VGVtcGxhdGUodGVtcGxhdGUsIGlzVXJsLCBvcHRpb25zKSB7XG5cdCAgICB2YXIgdGVtcGxhdGVQcm9taXNlID0gdW5kZWZpbmVkO1xuXHQgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbih0ZW1wbGF0ZSkpIHtcblx0ICAgICAgdGVtcGxhdGVQcm9taXNlID0gJHEud2hlbih0ZW1wbGF0ZShvcHRpb25zKSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0ZW1wbGF0ZVByb21pc2UgPSAkcS53aGVuKHRlbXBsYXRlKTtcblx0ICAgIH1cblxuXHQgICAgaWYgKCFpc1VybCkge1xuXHQgICAgICByZXR1cm4gdGVtcGxhdGVQcm9taXNlO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdmFyIF9yZXQgPSAoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHZhciBodHRwT3B0aW9ucyA9IHsgY2FjaGU6ICR0ZW1wbGF0ZUNhY2hlIH07XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIHY6IHRlbXBsYXRlUHJvbWlzZS50aGVuKGZ1bmN0aW9uICh1cmwpIHtcblx0ICAgICAgICAgICAgcmV0dXJuICRodHRwLmdldCh1cmwsIGh0dHBPcHRpb25zKTtcblx0ICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG5cdCAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuXHQgICAgICAgICAgfSlbXCJjYXRjaFwiXShmdW5jdGlvbiBoYW5kbGVFcnJvckdldHRpbmdBVGVtcGxhdGUoZXJyb3IpIHtcblx0ICAgICAgICAgICAgZm9ybWx5V2FybihcInByb2JsZW0tbG9hZGluZy10ZW1wbGF0ZS1mb3ItdGVtcGxhdGV1cmxcIiwgXCJQcm9ibGVtIGxvYWRpbmcgdGVtcGxhdGUgZm9yIFwiICsgdGVtcGxhdGUsIGVycm9yKTtcblx0ICAgICAgICAgIH0pXG5cdCAgICAgICAgfTtcblx0ICAgICAgfSkoKTtcblxuXHQgICAgICBpZiAodHlwZW9mIF9yZXQgPT09IFwib2JqZWN0XCIpIHtcblx0ICAgICAgICByZXR1cm4gX3JldC52O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gdHJhbnNjbHVkZUluV3JhcHBlcnMob3B0aW9ucykge1xuXHQgICAgdmFyIHdyYXBwZXIgPSBnZXRXcmFwcGVyT3B0aW9uKG9wdGlvbnMpO1xuXG5cdCAgICByZXR1cm4gZnVuY3Rpb24gdHJhbnNjbHVkZVRlbXBsYXRlKHRlbXBsYXRlKSB7XG5cdCAgICAgIGlmICghd3JhcHBlci5sZW5ndGgpIHtcblx0ICAgICAgICByZXR1cm4gJHEud2hlbih0ZW1wbGF0ZSk7XG5cdCAgICAgIH1cblxuXHQgICAgICB3cmFwcGVyLmZvckVhY2goZnVuY3Rpb24gKHdyYXBwZXIpIHtcblx0ICAgICAgICBmb3JtbHlVc2FiaWxpdHkuY2hlY2tXcmFwcGVyKHdyYXBwZXIsIG9wdGlvbnMpO1xuXHQgICAgICAgIHdyYXBwZXIudmFsaWRhdGVPcHRpb25zICYmIHdyYXBwZXIudmFsaWRhdGVPcHRpb25zKG9wdGlvbnMpO1xuXHQgICAgICAgIHJ1bkFwaUNoZWNrKHdyYXBwZXIsIG9wdGlvbnMpO1xuXHQgICAgICB9KTtcblx0ICAgICAgdmFyIHByb21pc2VzID0gd3JhcHBlci5tYXAoZnVuY3Rpb24gKHcpIHtcblx0ICAgICAgICByZXR1cm4gZ2V0VGVtcGxhdGUody50ZW1wbGF0ZSB8fCB3LnRlbXBsYXRlVXJsLCAhdy50ZW1wbGF0ZSk7XG5cdCAgICAgIH0pO1xuXHQgICAgICByZXR1cm4gJHEuYWxsKHByb21pc2VzKS50aGVuKGZ1bmN0aW9uICh3cmFwcGVyc1RlbXBsYXRlcykge1xuXHQgICAgICAgIHdyYXBwZXJzVGVtcGxhdGVzLmZvckVhY2goZnVuY3Rpb24gKHdyYXBwZXJUZW1wbGF0ZSwgaW5kZXgpIHtcblx0ICAgICAgICAgIGZvcm1seVVzYWJpbGl0eS5jaGVja1dyYXBwZXJUZW1wbGF0ZSh3cmFwcGVyVGVtcGxhdGUsIHdyYXBwZXJbaW5kZXhdKTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgICB3cmFwcGVyc1RlbXBsYXRlcy5yZXZlcnNlKCk7IC8vIHdyYXBwZXIgMCBpcyB3cmFwcGVkIGluIHdyYXBwZXIgMSBhbmQgc28gb24uLi5cblx0ICAgICAgICB2YXIgdG90YWxXcmFwcGVyID0gd3JhcHBlcnNUZW1wbGF0ZXMuc2hpZnQoKTtcblx0ICAgICAgICB3cmFwcGVyc1RlbXBsYXRlcy5mb3JFYWNoKGZ1bmN0aW9uICh3cmFwcGVyVGVtcGxhdGUpIHtcblx0ICAgICAgICAgIHRvdGFsV3JhcHBlciA9IGRvVHJhbnNjbHVzaW9uKHRvdGFsV3JhcHBlciwgd3JhcHBlclRlbXBsYXRlKTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgICByZXR1cm4gZG9UcmFuc2NsdXNpb24odG90YWxXcmFwcGVyLCB0ZW1wbGF0ZSk7XG5cdCAgICAgIH0pO1xuXHQgICAgfTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBkb1RyYW5zY2x1c2lvbih3cmFwcGVyLCB0ZW1wbGF0ZSkge1xuXHQgICAgdmFyIHN1cGVyV3JhcHBlciA9IGFuZ3VsYXIuZWxlbWVudChcIjxhPjwvYT5cIik7IC8vIHRoaXMgYWxsb3dzIHBlb3BsZSBub3QgaGF2ZSB0byBoYXZlIGEgc2luZ2xlIHJvb3QgaW4gd3JhcHBlcnNcblx0ICAgIHN1cGVyV3JhcHBlci5hcHBlbmQod3JhcHBlcik7XG5cdCAgICB2YXIgdHJhbnNjbHVkZUVsID0gc3VwZXJXcmFwcGVyLmZpbmQoXCJmb3JtbHktdHJhbnNjbHVkZVwiKTtcblx0ICAgIGlmICghdHJhbnNjbHVkZUVsLmxlbmd0aCkge1xuXHQgICAgICAvL3RyeSBpdCB1c2luZyBvdXIgY3VzdG9tIGZpbmQgZnVuY3Rpb25cblx0ICAgICAgdHJhbnNjbHVkZUVsID0gZm9ybWx5VXRpbC5maW5kQnlOb2RlTmFtZShzdXBlcldyYXBwZXIsIFwiZm9ybWx5LXRyYW5zY2x1ZGVcIik7XG5cdCAgICB9XG5cdCAgICB0cmFuc2NsdWRlRWwucmVwbGFjZVdpdGgodGVtcGxhdGUpO1xuXHQgICAgcmV0dXJuIHN1cGVyV3JhcHBlci5odG1sKCk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gZ2V0V3JhcHBlck9wdGlvbihvcHRpb25zKSB7XG5cdCAgICB2YXIgd3JhcHBlciA9IG9wdGlvbnMud3JhcHBlcjtcblx0ICAgIC8vIGV4cGxpY2l0IG51bGwgbWVhbnMgbm8gd3JhcHBlclxuXHQgICAgaWYgKHdyYXBwZXIgPT09IG51bGwpIHtcblx0ICAgICAgcmV0dXJuIFtdO1xuXHQgICAgfVxuXG5cdCAgICAvLyBub3RoaW5nIHNwZWNpZmllZCBtZWFucyB1c2UgdGhlIGRlZmF1bHQgd3JhcHBlciBmb3IgdGhlIHR5cGVcblx0ICAgIGlmICghd3JhcHBlcikge1xuXHQgICAgICAvLyBnZXQgYWxsIHdyYXBwZXJzIHRoYXQgc3BlY2lmeSB0aGV5IGFwcGx5IHRvIHRoaXMgdHlwZVxuXHQgICAgICB3cmFwcGVyID0gYXJyYXlpZnkoZm9ybWx5Q29uZmlnLmdldFdyYXBwZXJCeVR5cGUob3B0aW9ucy50eXBlKSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB3cmFwcGVyID0gYXJyYXlpZnkod3JhcHBlcikubWFwKGZvcm1seUNvbmZpZy5nZXRXcmFwcGVyKTtcblx0ICAgIH1cblxuXHQgICAgLy8gZ2V0IGFsbCB3cmFwcGVycyBmb3IgdGhhdCB0aGlzIHR5cGUgc3BlY2lmaWVkIHRoYXQgaXQgdXNlcy5cblx0ICAgIHZhciB0eXBlID0gZm9ybWx5Q29uZmlnLmdldFR5cGUob3B0aW9ucy50eXBlLCB0cnVlLCBvcHRpb25zKTtcblx0ICAgIGlmICh0eXBlICYmIHR5cGUud3JhcHBlcikge1xuXHQgICAgICB2YXIgdHlwZVdyYXBwZXJzID0gYXJyYXlpZnkodHlwZS53cmFwcGVyKS5tYXAoZm9ybWx5Q29uZmlnLmdldFdyYXBwZXIpO1xuXHQgICAgICB3cmFwcGVyID0gd3JhcHBlci5jb25jYXQodHlwZVdyYXBwZXJzKTtcblx0ICAgIH1cblxuXHQgICAgLy8gYWRkIHRoZSBkZWZhdWx0IHdyYXBwZXIgbGFzdFxuXHQgICAgdmFyIGRlZmF1bHRXcmFwcGVyID0gZm9ybWx5Q29uZmlnLmdldFdyYXBwZXIoKTtcblx0ICAgIGlmIChkZWZhdWx0V3JhcHBlcikge1xuXHQgICAgICB3cmFwcGVyLnB1c2goZGVmYXVsdFdyYXBwZXIpO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIHdyYXBwZXI7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gY2hlY2tBcGkob3B0aW9ucykge1xuXHQgICAgZm9ybWx5QXBpQ2hlY2tbXCJ0aHJvd1wiXShmb3JtbHlBcGlDaGVjay5mb3JtbHlGaWVsZE9wdGlvbnMsIG9wdGlvbnMsIHtcblx0ICAgICAgcHJlZml4OiBcImZvcm1seS1maWVsZCBkaXJlY3RpdmVcIixcblx0ICAgICAgdXJsOiBcImZvcm1seS1maWVsZC1kaXJlY3RpdmUtdmFsaWRhdGlvbi1mYWlsZWRcIlxuXHQgICAgfSk7XG5cdCAgICAvLyB2YWxpZGF0ZSB3aXRoIHRoZSB0eXBlXG5cdCAgICB2YXIgdHlwZSA9IG9wdGlvbnMudHlwZSAmJiBmb3JtbHlDb25maWcuZ2V0VHlwZShvcHRpb25zLnR5cGUpO1xuXHQgICAgaWYgKHR5cGUpIHtcblx0ICAgICAgaWYgKHR5cGUudmFsaWRhdGVPcHRpb25zKSB7XG5cdCAgICAgICAgdHlwZS52YWxpZGF0ZU9wdGlvbnMob3B0aW9ucyk7XG5cdCAgICAgIH1cblx0ICAgICAgcnVuQXBpQ2hlY2sodHlwZSwgb3B0aW9ucyk7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gY2hlY2tGaWVsZEdyb3VwQXBpKG9wdGlvbnMpIHtcblx0ICAgIGZvcm1seUFwaUNoZWNrW1widGhyb3dcIl0oZm9ybWx5QXBpQ2hlY2suZmllbGRHcm91cCwgb3B0aW9ucywge1xuXHQgICAgICBwcmVmaXg6IFwiZm9ybWx5LWZpZWxkIGRpcmVjdGl2ZVwiLFxuXHQgICAgICB1cmw6IFwiZm9ybWx5LWZpZWxkLWRpcmVjdGl2ZS12YWxpZGF0aW9uLWZhaWxlZFwiXG5cdCAgICB9KTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBydW5BcGlDaGVjayhfcmVmLCBvcHRpb25zKSB7XG5cdCAgICB2YXIgYXBpQ2hlY2sgPSBfcmVmLmFwaUNoZWNrO1xuXHQgICAgdmFyIGFwaUNoZWNrSW5zdGFuY2UgPSBfcmVmLmFwaUNoZWNrSW5zdGFuY2U7XG5cdCAgICB2YXIgYXBpQ2hlY2tGdW5jdGlvbiA9IF9yZWYuYXBpQ2hlY2tGdW5jdGlvbjtcblx0ICAgIHZhciBhcGlDaGVja09wdGlvbnMgPSBfcmVmLmFwaUNoZWNrT3B0aW9ucztcblxuXHQgICAgaWYgKCFhcGlDaGVjaykge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICB2YXIgaW5zdGFuY2UgPSBhcGlDaGVja0luc3RhbmNlIHx8IGZvcm1seUFwaUNoZWNrO1xuXHQgICAgdmFyIGZuID0gYXBpQ2hlY2tGdW5jdGlvbiB8fCBcIndhcm5cIjtcblx0ICAgIHZhciBzaGFwZSA9IGluc3RhbmNlLnNoYXBlKGFwaUNoZWNrKTtcblx0ICAgIGluc3RhbmNlW2ZuXShzaGFwZSwgb3B0aW9ucywgYXBpQ2hlY2tPcHRpb25zIHx8IHtcblx0ICAgICAgcHJlZml4OiBcImZvcm1seS1maWVsZCBcIiArIG5hbWUsXG5cdCAgICAgIHVybDogZm9ybWx5QXBpQ2hlY2suY29uZmlnLm91dHB1dC5kb2NzQmFzZVVybCArIFwiZm9ybWx5LWZpZWxkLXR5cGUtYXBpY2hlY2stZmFpbGVkXCJcblx0ICAgIH0pO1xuXHQgIH1cblx0fVxuXHRmb3JtbHlGaWVsZC4kaW5qZWN0ID0gW1wiJGh0dHBcIiwgXCIkcVwiLCBcIiRjb21waWxlXCIsIFwiJHRlbXBsYXRlQ2FjaGVcIiwgXCJmb3JtbHlDb25maWdcIiwgXCJmb3JtbHlWYWxpZGF0aW9uTWVzc2FnZXNcIiwgXCJmb3JtbHlBcGlDaGVja1wiLCBcImZvcm1seVV0aWxcIiwgXCJmb3JtbHlVc2FiaWxpdHlcIiwgXCJmb3JtbHlXYXJuXCJdO1xuXG4vKioqLyB9LFxuLyogMTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5Rm9jdXM7XG5cblx0Ly8gQG5nSW5qZWN0XG5cdGZ1bmN0aW9uIGZvcm1seUZvY3VzKCR0aW1lb3V0LCAkZG9jdW1lbnQpIHtcblx0ICAvKiBqc2hpbnQgLVcwNTIgKi9cblx0ICByZXR1cm4ge1xuXHQgICAgcmVzdHJpY3Q6IFwiQVwiLFxuXHQgICAgbGluazogZnVuY3Rpb24gZm9ybWx5Rm9jdXNMaW5rKHNjb3BlLCBlbGVtZW50LCBhdHRycykge1xuXHQgICAgICB2YXIgcHJldmlvdXNFbCA9IG51bGw7XG5cdCAgICAgIHZhciBlbCA9IGVsZW1lbnRbMF07XG5cdCAgICAgIHZhciBkb2MgPSAkZG9jdW1lbnRbMF07XG5cdCAgICAgIGF0dHJzLiRvYnNlcnZlKFwiZm9ybWx5Rm9jdXNcIiwgZnVuY3Rpb24gcmVzcG9uZFRvRm9jdXNFeHByZXNzaW9uQ2hhbmdlKHZhbHVlKSB7XG5cdCAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuXHQgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24gc2V0RWxlbWVudEZvY3VzKCkge1xuXHQgICAgICAgICAgICBwcmV2aW91c0VsID0gZG9jLmFjdGl2ZUVsZW1lbnQ7XG5cdCAgICAgICAgICAgIGVsLmZvY3VzKCk7XG5cdCAgICAgICAgICB9LCB+IH5hdHRycy5mb2N1c1dhaXQpO1xuXHQgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IFwiZmFsc2VcIikge1xuXHQgICAgICAgICAgaWYgKGRvYy5hY3RpdmVFbGVtZW50ID09PSBlbCkge1xuXHQgICAgICAgICAgICBlbC5ibHVyKCk7XG5cdCAgICAgICAgICAgIGlmIChhdHRycy5oYXNPd25Qcm9wZXJ0eShcInJlZm9jdXNcIikgJiYgcHJldmlvdXNFbCkge1xuXHQgICAgICAgICAgICAgIHByZXZpb3VzRWwuZm9jdXMoKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfSk7XG5cdCAgICB9XG5cdCAgfTtcblx0fVxuXHRmb3JtbHlGb2N1cy4kaW5qZWN0ID0gW1wiJHRpbWVvdXRcIiwgXCIkZG9jdW1lbnRcIl07XG5cbi8qKiovIH0sXG4vKiAxMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIF90b0NvbnN1bWFibGVBcnJheSA9IGZ1bmN0aW9uIChhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgeyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfSBlbHNlIHsgcmV0dXJuIEFycmF5LmZyb20oYXJyKTsgfSB9O1xuXG5cdHZhciBfc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZm9ybWx5Rm9ybTtcblxuXHQvKipcblx0ICogQG5nZG9jIGRpcmVjdGl2ZVxuXHQgKiBAbmFtZSBmb3JtbHlGb3JtXG5cdCAqIEByZXN0cmljdCBFXG5cdCAqL1xuXHQvLyBAbmdJbmplY3Rcblx0ZnVuY3Rpb24gZm9ybWx5Rm9ybShmb3JtbHlVc2FiaWxpdHksICRwYXJzZSwgZm9ybWx5QXBpQ2hlY2ssIGZvcm1seUNvbmZpZykge1xuXHQgIHZhciBjdXJyZW50Rm9ybUlkID0gMTtcblx0ICByZXR1cm4ge1xuXHQgICAgcmVzdHJpY3Q6IFwiRVwiLFxuXHQgICAgdGVtcGxhdGU6IGZ1bmN0aW9uIGZvcm1seUZvcm1HZXRUZW1wbGF0ZShlbCwgYXR0cnMpIHtcblx0ICAgICAgLyoganNoaW50IC1XMDMzICovIC8vIHRoaXMgYmVjYXVzZSBqc2hpbnQgaXMgYnJva2VuIEkgZ3Vlc3MuLi5cblx0ICAgICAgdmFyIHJvb3RFbCA9IGdldFJvb3RFbCgpO1xuXHQgICAgICB2YXIgZmllbGRSb290RWwgPSBnZXRGaWVsZFJvb3RFbCgpO1xuXHQgICAgICB2YXIgZm9ybUlkID0gXCJmb3JtbHlfXCIgKyBjdXJyZW50Rm9ybUlkKys7XG5cdCAgICAgIHZhciBwYXJlbnRGb3JtQXR0cmlidXRlcyA9IFwiXCI7XG5cdCAgICAgIGlmIChhdHRycy5oYXNPd25Qcm9wZXJ0eShcImlzRmllbGRHcm91cFwiKSAmJiBlbC5wYXJlbnQoKS5wYXJlbnQoKS5oYXNDbGFzcyhcImZvcm1seVwiKSkge1xuXHQgICAgICAgIHBhcmVudEZvcm1BdHRyaWJ1dGVzID0gY29weUF0dHJpYnV0ZXMoZWwucGFyZW50KCkucGFyZW50KClbMF0uYXR0cmlidXRlcyk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIFwiXFxuICAgICAgICA8XCIgKyByb290RWwgKyBcIiBjbGFzcz1cXFwiZm9ybWx5XFxcIlxcbiAgICAgICAgICAgICAgICAgbmFtZT1cXFwiXCIgKyBnZXRGb3JtTmFtZSgpICsgXCJcXFwiXFxuICAgICAgICAgICAgICAgICByb2xlPVxcXCJmb3JtXFxcIiBcIiArIHBhcmVudEZvcm1BdHRyaWJ1dGVzICsgXCI+XFxuICAgICAgICAgIDxcIiArIGZpZWxkUm9vdEVsICsgXCIgZm9ybWx5LWZpZWxkXFxuICAgICAgICAgICAgICAgbmctcmVwZWF0PVxcXCJmaWVsZCBpbiBmaWVsZHMgXCIgKyBnZXRUcmFja0J5KCkgKyBcIlxcXCJcXG4gICAgICAgICAgICAgICBcIiArIGdldEhpZGVEaXJlY3RpdmUoKSArIFwiPVxcXCIhZmllbGQuaGlkZVxcXCJcXG4gICAgICAgICAgICAgICBjbGFzcz1cXFwiZm9ybWx5LWZpZWxkXFxcIlxcbiAgICAgICAgICAgICAgIG9wdGlvbnM9XFxcImZpZWxkXFxcIlxcbiAgICAgICAgICAgICAgIG1vZGVsPVxcXCJmaWVsZC5tb2RlbCB8fCBtb2RlbFxcXCJcXG4gICAgICAgICAgICAgICBmaWVsZHM9XFxcImZpZWxkc1xcXCJcXG4gICAgICAgICAgICAgICBmb3JtPVxcXCJ0aGVGb3JtbHlGb3JtXFxcIlxcbiAgICAgICAgICAgICAgIGZvcm0taWQ9XFxcIlwiICsgZ2V0Rm9ybU5hbWUoKSArIFwiXFxcIlxcbiAgICAgICAgICAgICAgIGZvcm0tc3RhdGU9XFxcIm9wdGlvbnMuZm9ybVN0YXRlXFxcIlxcbiAgICAgICAgICAgICAgIGluZGV4PVxcXCIkaW5kZXhcXFwiPlxcbiAgICAgICAgICA8L1wiICsgZmllbGRSb290RWwgKyBcIj5cXG4gICAgICAgICAgPGRpdiBuZy10cmFuc2NsdWRlPjwvZGl2PlxcbiAgICAgICAgPC9cIiArIHJvb3RFbCArIFwiPlxcbiAgICAgIFwiO1xuXG5cdCAgICAgIGZ1bmN0aW9uIGdldFJvb3RFbCgpIHtcblx0ICAgICAgICByZXR1cm4gYXR0cnMucm9vdEVsIHx8IFwibmctZm9ybVwiO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gZ2V0RmllbGRSb290RWwoKSB7XG5cdCAgICAgICAgcmV0dXJuIGF0dHJzLmZpZWxkUm9vdEVsIHx8IFwiZGl2XCI7XG5cdCAgICAgIH1cblxuXHQgICAgICBmdW5jdGlvbiBnZXRIaWRlRGlyZWN0aXZlKCkge1xuXHQgICAgICAgIHJldHVybiBhdHRycy5oaWRlRGlyZWN0aXZlIHx8IGZvcm1seUNvbmZpZy5leHRyYXMuZGVmYXVsdEhpZGVEaXJlY3RpdmUgfHwgXCJuZy1pZlwiO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gZ2V0VHJhY2tCeSgpIHtcblx0ICAgICAgICBpZiAoIWF0dHJzLnRyYWNrQnkpIHtcblx0ICAgICAgICAgIHJldHVybiBcIlwiO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICByZXR1cm4gXCJ0cmFjayBieSBcIiArIGF0dHJzLnRyYWNrQnk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gZ2V0Rm9ybU5hbWUoKSB7XG5cdCAgICAgICAgdmFyIGZvcm1OYW1lID0gZm9ybUlkO1xuXHQgICAgICAgIHZhciBiaW5kTmFtZSA9IGF0dHJzLmJpbmROYW1lO1xuXHQgICAgICAgIGlmIChiaW5kTmFtZSkge1xuXHQgICAgICAgICAgaWYgKGFuZ3VsYXIudmVyc2lvbi5taW5vciA8IDMpIHtcblx0ICAgICAgICAgICAgdGhyb3cgZm9ybWx5VXNhYmlsaXR5LmdldEZvcm1seUVycm9yKFwiYmluZC1uYW1lIGF0dHJpYnV0ZSBvbiBmb3JtbHktZm9ybSBub3QgYWxsb3dlZCBpbiA+IGFuZ3VsYXIgMS4zXCIpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgLy8gd2UgY2FuIGRvIGEgb25lLXRpbWUgYmluZGluZyBoZXJlIGJlY2F1c2Ugd2Uga25vdyB3ZSdyZSBpbiAxLjMueCB0ZXJyaXRvcnlcblx0ICAgICAgICAgIGZvcm1OYW1lID0gXCJ7ezo6J2Zvcm1seV8nICsgXCIgKyBiaW5kTmFtZSArIFwifX1cIjtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGZvcm1OYW1lO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gY29weUF0dHJpYnV0ZXMoYXR0cmlidXRlcykge1xuXHQgICAgICAgIHZhciBleGNsdWRlZCA9IFtcIm1vZGVsXCIsIFwiZm9ybVwiLCBcImZpZWxkc1wiLCBcIm9wdGlvbnNcIiwgXCJuYW1lXCIsIFwicm9sZVwiLCBcImNsYXNzXCJdO1xuXHQgICAgICAgIHZhciBhcnJheUF0dHJzID0gW107XG5cdCAgICAgICAgYW5ndWxhci5mb3JFYWNoKGF0dHJpYnV0ZXMsIGZ1bmN0aW9uIChfcmVmKSB7XG5cdCAgICAgICAgICB2YXIgbm9kZU5hbWUgPSBfcmVmLm5vZGVOYW1lO1xuXHQgICAgICAgICAgdmFyIG5vZGVWYWx1ZSA9IF9yZWYubm9kZVZhbHVlO1xuXG5cdCAgICAgICAgICBpZiAobm9kZU5hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgZXhjbHVkZWQuaW5kZXhPZihub2RlTmFtZSkgPT09IC0xKSB7XG5cdCAgICAgICAgICAgIGFycmF5QXR0cnMucHVzaChcIlwiICsgdG9LZWJhYkNhc2Uobm9kZU5hbWUpICsgXCI9XFxcIlwiICsgbm9kZVZhbHVlICsgXCJcXFwiXCIpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXHQgICAgICAgIHJldHVybiBhcnJheUF0dHJzLmpvaW4oXCIgXCIpO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gdG9LZWJhYkNhc2Uoc3RyaW5nKSB7XG5cdCAgICAgICAgaWYgKHN0cmluZykge1xuXHQgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8oW0EtWl0pL2csIGZ1bmN0aW9uICgkMSkge1xuXHQgICAgICAgICAgICByZXR1cm4gXCItXCIgKyAkMS50b0xvd2VyQ2FzZSgpO1xuXHQgICAgICAgICAgfSk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHJldHVybiBcIlwiO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSxcblx0ICAgIHJlcGxhY2U6IHRydWUsXG5cdCAgICB0cmFuc2NsdWRlOiB0cnVlLFxuXHQgICAgc2NvcGU6IHtcblx0ICAgICAgZmllbGRzOiBcIj1cIixcblx0ICAgICAgbW9kZWw6IFwiPVwiLFxuXHQgICAgICBmb3JtOiBcIj0/XCIsXG5cdCAgICAgIG9wdGlvbnM6IFwiPT9cIlxuXHQgICAgfSxcblx0ICAgIGNvbnRyb2xsZXI6IC8qIEBuZ0luamVjdCAqL1tcIiRzY29wZVwiLCBcImZvcm1seVV0aWxcIiwgZnVuY3Rpb24gRm9ybWx5Rm9ybUNvbnRyb2xsZXIoJHNjb3BlLCBmb3JtbHlVdGlsKSB7XG5cdCAgICAgIHNldHVwT3B0aW9ucygpO1xuXHQgICAgICAkc2NvcGUubW9kZWwgPSAkc2NvcGUubW9kZWwgfHwge307XG5cdCAgICAgICRzY29wZS5maWVsZHMgPSAkc2NvcGUuZmllbGRzIHx8IFtdO1xuXG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBpbml0TW9kZWwpOyAvLyBpbml0aWFsaXplcyB0aGUgbW9kZWwgcHJvcGVydHkgaWYgc2V0IHRvICdmb3JtU3RhdGUnXG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBhdHRhY2hLZXkpOyAvLyBhdHRhY2hlcyBhIGtleSBiYXNlZCBvbiB0aGUgaW5kZXggaWYgYSBrZXkgaXNuJ3Qgc3BlY2lmaWVkXG5cdCAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBzZXR1cFdhdGNoZXJzKTsgLy8gc2V0dXAgd2F0Y2hlcnMgZm9yIGFsbCBmaWVsZHNcblxuXHQgICAgICAvLyB3YXRjaCB0aGUgbW9kZWwgYW5kIGV2YWx1YXRlIHdhdGNoIGV4cHJlc3Npb25zIHRoYXQgZGVwZW5kIG9uIGl0LlxuXHQgICAgICAkc2NvcGUuJHdhdGNoKFwibW9kZWxcIiwgb25Nb2RlbE9yRm9ybVN0YXRlQ2hhbmdlLCB0cnVlKTtcblx0ICAgICAgaWYgKCRzY29wZS5vcHRpb25zLmZvcm1TdGF0ZSkge1xuXHQgICAgICAgICRzY29wZS4kd2F0Y2goXCJvcHRpb25zLmZvcm1TdGF0ZVwiLCBvbk1vZGVsT3JGb3JtU3RhdGVDaGFuZ2UsIHRydWUpO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gb25Nb2RlbE9yRm9ybVN0YXRlQ2hhbmdlKCkge1xuXHQgICAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBmdW5jdGlvbiBydW5GaWVsZEV4cHJlc3Npb25Qcm9wZXJ0aWVzKGZpZWxkLCBpbmRleCkge1xuXHQgICAgICAgICAgLypqc2hpbnQgLVcwMzAgKi9cblx0ICAgICAgICAgIHZhciBtb2RlbCA9IGZpZWxkLm1vZGVsIHx8ICRzY29wZS5tb2RlbDtcblx0ICAgICAgICAgIGZpZWxkLnJ1bkV4cHJlc3Npb25zICYmIGZpZWxkLnJ1bkV4cHJlc3Npb25zKG1vZGVsKTtcblx0ICAgICAgICAgIGlmIChmaWVsZC5oaWRlRXhwcmVzc2lvbikge1xuXHQgICAgICAgICAgICAvLyBjYW4ndCB1c2UgaGlkZSB3aXRoIGV4cHJlc3Npb25Qcm9wZXJ0aWVzIHJlbGlhYmx5XG5cdCAgICAgICAgICAgIHZhciB2YWwgPSBtb2RlbFtmaWVsZC5rZXldO1xuXHQgICAgICAgICAgICAvLyB0aGlzIG1ha2VzIGl0IGNsb3NlciB0byB3aGF0IGEgcmVndWxhciBleHByZXNzaW9uUHJvcGVydHkgd291bGQgYmVcblx0ICAgICAgICAgICAgdmFyIGV4dHJhTG9jYWxzID0ge1xuXHQgICAgICAgICAgICAgIG9wdGlvbnM6IGZpZWxkLFxuXHQgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcblx0ICAgICAgICAgICAgICBmb3JtU3RhdGU6ICRzY29wZS5vcHRpb25zLmZvcm1TdGF0ZSxcblx0ICAgICAgICAgICAgICBmb3JtSWQ6ICRzY29wZS5mb3JtSWRcblx0ICAgICAgICAgICAgfTtcblx0ICAgICAgICAgICAgZmllbGQuaGlkZSA9IGZvcm1seVV0aWwuZm9ybWx5RXZhbCgkc2NvcGUsIGZpZWxkLmhpZGVFeHByZXNzaW9uLCB2YWwsIHZhbCwgZXh0cmFMb2NhbHMpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gc2V0dXBPcHRpb25zKCkge1xuXHQgICAgICAgIGZvcm1seUFwaUNoZWNrW1widGhyb3dcIl0oW2Zvcm1seUFwaUNoZWNrLmZvcm1PcHRpb25zQXBpLm9wdGlvbmFsXSwgWyRzY29wZS5vcHRpb25zXSwgeyBwcmVmaXg6IFwiZm9ybWx5LWZvcm0gb3B0aW9ucyBjaGVja1wiIH0pO1xuXHQgICAgICAgICRzY29wZS5vcHRpb25zID0gJHNjb3BlLm9wdGlvbnMgfHwge307XG5cdCAgICAgICAgJHNjb3BlLm9wdGlvbnMuZm9ybVN0YXRlID0gJHNjb3BlLm9wdGlvbnMuZm9ybVN0YXRlIHx8IHt9O1xuXG5cdCAgICAgICAgYW5ndWxhci5leHRlbmQoJHNjb3BlLm9wdGlvbnMsIHtcblx0ICAgICAgICAgIHVwZGF0ZUluaXRpYWxWYWx1ZTogdXBkYXRlSW5pdGlhbFZhbHVlLFxuXHQgICAgICAgICAgcmVzZXRNb2RlbDogcmVzZXRNb2RlbFxuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gdXBkYXRlSW5pdGlhbFZhbHVlKCkge1xuXHQgICAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZmllbGRzLCBmdW5jdGlvbiAoZmllbGQpIHtcblx0ICAgICAgICAgIGlmIChpc0ZpZWxkR3JvdXAoZmllbGQpKSB7XG5cdCAgICAgICAgICAgIGZpZWxkLm9wdGlvbnMudXBkYXRlSW5pdGlhbFZhbHVlKCk7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBmaWVsZC51cGRhdGVJbml0aWFsVmFsdWUoKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIHJlc2V0TW9kZWwoKSB7XG5cdCAgICAgICAgYW5ndWxhci5mb3JFYWNoKCRzY29wZS5maWVsZHMsIGZ1bmN0aW9uIChmaWVsZCkge1xuXHQgICAgICAgICAgaWYgKGlzRmllbGRHcm91cChmaWVsZCkpIHtcblx0ICAgICAgICAgICAgZmllbGQub3B0aW9ucy5yZXNldE1vZGVsKCk7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBmaWVsZC5yZXNldE1vZGVsKCk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSk7XG5cdCAgICAgIH1cblxuXHQgICAgICBmdW5jdGlvbiBpbml0TW9kZWwoZmllbGQpIHtcblx0ICAgICAgICBpZiAoZmllbGQubW9kZWwgJiYgZmllbGQubW9kZWwgPT09IFwiZm9ybVN0YXRlXCIpIHtcblx0ICAgICAgICAgIGZpZWxkLm1vZGVsID0gJHNjb3BlLm9wdGlvbnMuZm9ybVN0YXRlO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIGF0dGFjaEtleShmaWVsZCwgaW5kZXgpIHtcblx0ICAgICAgICBpZiAoIWlzRmllbGRHcm91cChmaWVsZCkpIHtcblx0ICAgICAgICAgIGZpZWxkLmtleSA9IGZpZWxkLmtleSB8fCBpbmRleCB8fCAwO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIHNldHVwV2F0Y2hlcnMoZmllbGQsIGluZGV4KSB7XG5cdCAgICAgICAgaWYgKGlzRmllbGRHcm91cChmaWVsZCkgfHwgIWFuZ3VsYXIuaXNEZWZpbmVkKGZpZWxkLndhdGNoZXIpKSB7XG5cdCAgICAgICAgICByZXR1cm47XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciB3YXRjaGVycyA9IGZpZWxkLndhdGNoZXI7XG5cdCAgICAgICAgaWYgKCFhbmd1bGFyLmlzQXJyYXkod2F0Y2hlcnMpKSB7XG5cdCAgICAgICAgICB3YXRjaGVycyA9IFt3YXRjaGVyc107XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGFuZ3VsYXIuZm9yRWFjaCh3YXRjaGVycywgZnVuY3Rpb24gc2V0dXBXYXRjaGVyKHdhdGNoZXIpIHtcblx0ICAgICAgICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQod2F0Y2hlci5saXN0ZW5lcikpIHtcblx0ICAgICAgICAgICAgdGhyb3cgZm9ybWx5VXNhYmlsaXR5LmdldEZpZWxkRXJyb3IoXCJhbGwtZmllbGQtd2F0Y2hlcnMtbXVzdC1oYXZlLWEtbGlzdGVuZXJcIiwgXCJBbGwgZmllbGQgd2F0Y2hlcnMgbXVzdCBoYXZlIGEgbGlzdGVuZXJcIiwgZmllbGQpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgdmFyIHdhdGNoRXhwcmVzc2lvbiA9IGdldFdhdGNoRXhwcmVzc2lvbih3YXRjaGVyLCBmaWVsZCwgaW5kZXgpO1xuXHQgICAgICAgICAgdmFyIHdhdGNoTGlzdGVuZXIgPSBnZXRXYXRjaExpc3RlbmVyKHdhdGNoZXIsIGZpZWxkLCBpbmRleCk7XG5cblx0ICAgICAgICAgIHZhciB0eXBlID0gd2F0Y2hlci50eXBlIHx8IFwiJHdhdGNoXCI7XG5cdCAgICAgICAgICB3YXRjaGVyLnN0b3BXYXRjaGluZyA9ICRzY29wZVt0eXBlXSh3YXRjaEV4cHJlc3Npb24sIHdhdGNoTGlzdGVuZXIsIHdhdGNoZXIud2F0Y2hEZWVwKTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZ1bmN0aW9uIGdldFdhdGNoRXhwcmVzc2lvbih3YXRjaGVyLCBmaWVsZCwgaW5kZXgpIHtcblx0ICAgICAgICB2YXIgd2F0Y2hFeHByZXNzaW9uID0gd2F0Y2hlci5leHByZXNzaW9uIHx8IFwibW9kZWxbJ1wiICsgZmllbGQua2V5ICsgXCInXVwiO1xuXHQgICAgICAgIGlmIChhbmd1bGFyLmlzRnVuY3Rpb24od2F0Y2hFeHByZXNzaW9uKSkge1xuXHQgICAgICAgICAgLy8gd3JhcCB0aGUgZmllbGQncyB3YXRjaCBleHByZXNzaW9uIHNvIHdlIGNhbiBjYWxsIGl0IHdpdGggdGhlIGZpZWxkIGFzIHRoZSBmaXJzdCBhcmdcblx0ICAgICAgICAgIC8vIGFuZCB0aGUgc3RvcCBmdW5jdGlvbiBhcyB0aGUgbGFzdCBhcmcgYXMgYSBoZWxwZXJcblx0ICAgICAgICAgIHZhciBvcmlnaW5hbEV4cHJlc3Npb24gPSB3YXRjaEV4cHJlc3Npb247XG5cdCAgICAgICAgICB3YXRjaEV4cHJlc3Npb24gPSBmdW5jdGlvbiBmb3JtbHlXYXRjaEV4cHJlc3Npb24oKSB7XG5cdCAgICAgICAgICAgIHZhciBhcmdzID0gbW9kaWZ5QXJncy5hcHBseSh1bmRlZmluZWQsIFt3YXRjaGVyLCBpbmRleF0uY29uY2F0KF9zbGljZS5jYWxsKGFyZ3VtZW50cykpKTtcblx0ICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsRXhwcmVzc2lvbi5hcHBseSh1bmRlZmluZWQsIF90b0NvbnN1bWFibGVBcnJheShhcmdzKSk7XG5cdCAgICAgICAgICB9O1xuXHQgICAgICAgICAgd2F0Y2hFeHByZXNzaW9uLmRpc3BsYXlOYW1lID0gXCJGb3JtbHkgV2F0Y2ggRXhwcmVzc2lvbiBmb3IgZmllbGQgZm9yIFwiICsgZmllbGQua2V5O1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gd2F0Y2hFeHByZXNzaW9uO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gZ2V0V2F0Y2hMaXN0ZW5lcih3YXRjaGVyLCBmaWVsZCwgaW5kZXgpIHtcblx0ICAgICAgICB2YXIgd2F0Y2hMaXN0ZW5lciA9IHdhdGNoZXIubGlzdGVuZXI7XG5cdCAgICAgICAgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbih3YXRjaExpc3RlbmVyKSkge1xuXHQgICAgICAgICAgLy8gd3JhcCB0aGUgZmllbGQncyB3YXRjaCBsaXN0ZW5lciBzbyB3ZSBjYW4gY2FsbCBpdCB3aXRoIHRoZSBmaWVsZCBhcyB0aGUgZmlyc3QgYXJnXG5cdCAgICAgICAgICAvLyBhbmQgdGhlIHN0b3AgZnVuY3Rpb24gYXMgdGhlIGxhc3QgYXJnIGFzIGEgaGVscGVyXG5cdCAgICAgICAgICB2YXIgb3JpZ2luYWxMaXN0ZW5lciA9IHdhdGNoTGlzdGVuZXI7XG5cdCAgICAgICAgICB3YXRjaExpc3RlbmVyID0gZnVuY3Rpb24gZm9ybWx5V2F0Y2hMaXN0ZW5lcigpIHtcblx0ICAgICAgICAgICAgdmFyIGFyZ3MgPSBtb2RpZnlBcmdzLmFwcGx5KHVuZGVmaW5lZCwgW3dhdGNoZXIsIGluZGV4XS5jb25jYXQoX3NsaWNlLmNhbGwoYXJndW1lbnRzKSkpO1xuXHQgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxMaXN0ZW5lci5hcHBseSh1bmRlZmluZWQsIF90b0NvbnN1bWFibGVBcnJheShhcmdzKSk7XG5cdCAgICAgICAgICB9O1xuXHQgICAgICAgICAgd2F0Y2hMaXN0ZW5lci5kaXNwbGF5TmFtZSA9IFwiRm9ybWx5IFdhdGNoIExpc3RlbmVyIGZvciBmaWVsZCBmb3IgXCIgKyBmaWVsZC5rZXk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiB3YXRjaExpc3RlbmVyO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gbW9kaWZ5QXJncyh3YXRjaGVyLCBpbmRleCkge1xuXHQgICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBvcmlnaW5hbEFyZ3MgPSBBcnJheShfbGVuID4gMiA/IF9sZW4gLSAyIDogMCksIF9rZXkgPSAyOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICAgICAgICBvcmlnaW5hbEFyZ3NbX2tleSAtIDJdID0gYXJndW1lbnRzW19rZXldO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBbJHNjb3BlLmZpZWxkc1tpbmRleF1dLmNvbmNhdChvcmlnaW5hbEFyZ3MsIFt3YXRjaGVyLnN0b3BXYXRjaGluZ10pO1xuXHQgICAgICB9XG5cblx0ICAgICAgZnVuY3Rpb24gaXNGaWVsZEdyb3VwKGZpZWxkKSB7XG5cdCAgICAgICAgcmV0dXJuIGZpZWxkICYmICEhZmllbGQuZmllbGRHcm91cDtcblx0ICAgICAgfVxuXHQgICAgfV0sXG5cdCAgICBsaW5rOiBmdW5jdGlvbiBsaW5rKHNjb3BlLCBlbCwgYXR0cnMpIHtcblx0ICAgICAgdmFyIGZvcm1JZCA9IGF0dHJzLm5hbWU7XG5cdCAgICAgIHNjb3BlLmZvcm1JZCA9IGZvcm1JZDtcblx0ICAgICAgc2NvcGUudGhlRm9ybWx5Rm9ybSA9IHNjb3BlW2Zvcm1JZF07XG5cdCAgICAgIGlmIChhdHRycy5mb3JtKSB7XG5cdCAgICAgICAgJHBhcnNlKGF0dHJzLmZvcm0pLmFzc2lnbihzY29wZS4kcGFyZW50LCBzY29wZVtmb3JtSWRdKTtcblx0ICAgICAgfVxuXG5cdCAgICAgIC8vIGNocm9tZSBhdXRvY29tcGxldGUgbGFtZW5lc3Ncblx0ICAgICAgLy8gc2VlIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NjgxNTMjYzE0XG5cdCAgICAgIC8vIOGDmijgsqDnm4rgsqDhg5opICAgKOKVr8Kw4pahwrAp4pWv77i1IOKUu+KUgeKUuyAgICAo4pee4oC44pef77ybKVxuXHQgICAgICB2YXIgZ2xvYmFsID0gZm9ybWx5Q29uZmlnLmV4dHJhcy5yZW1vdmVDaHJvbWVBdXRvQ29tcGxldGUgPT09IHRydWU7XG5cdCAgICAgIHZhciBvZmZJbnN0YW5jZSA9IHNjb3BlLm9wdGlvbnMgJiYgc2NvcGUub3B0aW9ucy5yZW1vdmVDaHJvbWVBdXRvQ29tcGxldGUgPT09IGZhbHNlO1xuXHQgICAgICB2YXIgb25JbnN0YW5jZSA9IHNjb3BlLm9wdGlvbnMgJiYgc2NvcGUub3B0aW9ucy5yZW1vdmVDaHJvbWVBdXRvQ29tcGxldGUgPT09IHRydWU7XG5cdCAgICAgIGlmIChnbG9iYWwgJiYgIW9mZkluc3RhbmNlIHx8IG9uSW5zdGFuY2UpIHtcblx0ICAgICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG5cdCAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKFwiYXV0b2NvbXBsZXRlXCIsIFwiYWRkcmVzcy1sZXZlbDRcIik7XG5cdCAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKFwiaGlkZGVuXCIsIHRydWUpO1xuXHQgICAgICAgIGVsWzBdLmFwcGVuZENoaWxkKGlucHV0KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH07XG5cdH1cblx0Zm9ybWx5Rm9ybS4kaW5qZWN0ID0gW1wiZm9ybWx5VXNhYmlsaXR5XCIsIFwiJHBhcnNlXCIsIFwiZm9ybWx5QXBpQ2hlY2tcIiwgXCJmb3JtbHlDb25maWdcIl07XG5cbi8qKiovIH0sXG4vKiAxMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNSkpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gYWRkRm9ybWx5TmdNb2RlbEF0dHJzTWFuaXB1bGF0b3I7XG5cblx0Ly8gQG5nSW5qZWN0XG5cdGZ1bmN0aW9uIGFkZEZvcm1seU5nTW9kZWxBdHRyc01hbmlwdWxhdG9yKGZvcm1seUNvbmZpZykge1xuXHQgIGlmIChmb3JtbHlDb25maWcuZXh0cmFzLmRpc2FibGVOZ01vZGVsQXR0cnNNYW5pcHVsYXRvcikge1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBmb3JtbHlDb25maWcudGVtcGxhdGVNYW5pcHVsYXRvcnMucHJlV3JhcHBlci5wdXNoKG5nTW9kZWxBdHRyc01hbmlwdWxhdG9yKTtcblxuXHQgIGZ1bmN0aW9uIG5nTW9kZWxBdHRyc01hbmlwdWxhdG9yKHRlbXBsYXRlLCBvcHRpb25zLCBzY29wZSkge1xuXHQgICAgLyoganNoaW50IG1heGNvbXBsZXhpdHk6NiAqL1xuXHQgICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0ICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXHQgICAgaWYgKGRhdGEuc2tpcE5nTW9kZWxBdHRyc01hbmlwdWxhdG9yID09PSB0cnVlKSB7XG5cdCAgICAgIHJldHVybiB0ZW1wbGF0ZTtcblx0ICAgIH1cblx0ICAgIGVsLmlubmVySFRNTCA9IHRlbXBsYXRlO1xuXHQgICAgdmFyIG1vZGVsTm9kZXMgPSBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiW25nLW1vZGVsXSwgW2RhdGEtbmctbW9kZWxdXCIpO1xuXHQgICAgaWYgKCFtb2RlbE5vZGVzIHx8ICFtb2RlbE5vZGVzLmxlbmd0aCkge1xuXHQgICAgICByZXR1cm4gdGVtcGxhdGU7XG5cdCAgICB9XG5cblx0ICAgIGFkZElmTm90UHJlc2VudChtb2RlbE5vZGVzLCBcImlkXCIsIHNjb3BlLmlkKTtcblx0ICAgIGFkZElmTm90UHJlc2VudChtb2RlbE5vZGVzLCBcIm5hbWVcIiwgc2NvcGUuaWQpO1xuXG5cdCAgICBhZGRWYWxpZGF0aW9uKCk7XG5cdCAgICBhZGRNb2RlbE9wdGlvbnMoKTtcblx0ICAgIGFkZFRlbXBsYXRlT3B0aW9uc0F0dHJzKCk7XG5cblx0ICAgIHJldHVybiBlbC5pbm5lckhUTUw7XG5cblx0ICAgIGZ1bmN0aW9uIGFkZFZhbGlkYXRpb24oKSB7XG5cdCAgICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZChvcHRpb25zLnZhbGlkYXRvcnMpIHx8IGFuZ3VsYXIuaXNEZWZpbmVkKG9wdGlvbnMudmFsaWRhdGlvbi5tZXNzYWdlcykpIHtcblx0ICAgICAgICBhZGRJZk5vdFByZXNlbnQobW9kZWxOb2RlcywgXCJmb3JtbHktY3VzdG9tLXZhbGlkYXRpb25cIiwgXCJcIik7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgZnVuY3Rpb24gYWRkTW9kZWxPcHRpb25zKCkge1xuXHQgICAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQob3B0aW9ucy5tb2RlbE9wdGlvbnMpKSB7XG5cdCAgICAgICAgYWRkSWZOb3RQcmVzZW50KG1vZGVsTm9kZXMsIFwibmctbW9kZWwtb3B0aW9uc1wiLCBcIm9wdGlvbnMubW9kZWxPcHRpb25zXCIpO1xuXHQgICAgICAgIGlmIChvcHRpb25zLm1vZGVsT3B0aW9ucy5nZXR0ZXJTZXR0ZXIpIHtcblx0ICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChtb2RlbE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuXHQgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcIm5nLW1vZGVsXCIsIFwib3B0aW9ucy52YWx1ZVwiKTtcblx0ICAgICAgICAgIH0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmdW5jdGlvbiBhZGRUZW1wbGF0ZU9wdGlvbnNBdHRycygpIHtcblx0ICAgICAgaWYgKCFvcHRpb25zLnRlbXBsYXRlT3B0aW9ucyAmJiAhb3B0aW9ucy5leHByZXNzaW9uUHJvcGVydGllcykge1xuXHQgICAgICAgIC8vIG5vIG5lZWQgdG8gcnVuIHRoZXNlIGlmIHRoZXJlIGFyZSBubyB0ZW1wbGF0ZU9wdGlvbnMgb3IgZXhwcmVzc2lvblByb3BlcnRpZXNcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHRvID0gb3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnMgfHwge307XG5cdCAgICAgIHZhciBlcCA9IG9wdGlvbnMuZXhwcmVzc2lvblByb3BlcnRpZXMgfHwge307XG5cblx0ICAgICAgdmFyIG5nTW9kZWxBdHRyaWJ1dGVzID0gZ2V0QnVpbHRJbkF0dHJpYnV0ZXMoKTtcblxuXHQgICAgICAvLyBleHRlbmQgd2l0aCB0aGUgdXNlcidzIHNwZWNpZmljYXRpb25zIHdpbm5pbmdcblx0ICAgICAgYW5ndWxhci5leHRlbmQobmdNb2RlbEF0dHJpYnV0ZXMsIG9wdGlvbnMubmdNb2RlbEF0dHJzKTtcblxuXHQgICAgICAvLyBGZWVsIGZyZWUgdG8gbWFrZSB0aGlzIG1vcmUgc2ltcGxlIDotKVxuXHQgICAgICBhbmd1bGFyLmZvckVhY2gobmdNb2RlbEF0dHJpYnV0ZXMsIGZ1bmN0aW9uICh2YWwsIG5hbWUpIHtcblx0ICAgICAgICAvKiBqc2hpbnQgbWF4Y29tcGxleGl0eToxNCAqL1xuXHQgICAgICAgIHZhciBhdHRyVmFsID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIHZhciBhdHRyTmFtZSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICB2YXIgcmVmID0gXCJvcHRpb25zLnRlbXBsYXRlT3B0aW9uc1snXCIgKyBuYW1lICsgXCInXVwiO1xuXHQgICAgICAgIHZhciB0b1ZhbCA9IHRvW25hbWVdO1xuXHQgICAgICAgIHZhciBlcFZhbCA9IGdldEVwVmFsdWUoZXAsIG5hbWUpO1xuXG5cdCAgICAgICAgdmFyIGluVG8gPSBhbmd1bGFyLmlzRGVmaW5lZCh0b1ZhbCk7XG5cdCAgICAgICAgdmFyIGluRXAgPSBhbmd1bGFyLmlzRGVmaW5lZChlcFZhbCk7XG5cdCAgICAgICAgaWYgKHZhbC52YWx1ZSkge1xuXHQgICAgICAgICAgLy8gSSByZWFsaXplIHRoaXMgbG9va3MgYmFja3dhcmRzLCBidXQgaXQncyByaWdodCwgdHJ1c3QgbWUuLi5cblx0ICAgICAgICAgIGF0dHJOYW1lID0gdmFsLnZhbHVlO1xuXHQgICAgICAgICAgYXR0clZhbCA9IG5hbWU7XG5cdCAgICAgICAgfSBlbHNlIGlmICh2YWwuZXhwcmVzc2lvbiAmJiBpblRvKSB7XG5cdCAgICAgICAgICBhdHRyTmFtZSA9IHZhbC5leHByZXNzaW9uO1xuXHQgICAgICAgICAgaWYgKGFuZ3VsYXIuaXNTdHJpbmcodG9bbmFtZV0pKSB7XG5cdCAgICAgICAgICAgIGF0dHJWYWwgPSBcIiRldmFsKFwiICsgcmVmICsgXCIpXCI7XG5cdCAgICAgICAgICB9IGVsc2UgaWYgKGFuZ3VsYXIuaXNGdW5jdGlvbih0b1tuYW1lXSkpIHtcblx0ICAgICAgICAgICAgYXR0clZhbCA9IFwiXCIgKyByZWYgKyBcIihtb2RlbFtvcHRpb25zLmtleV0sIG9wdGlvbnMsIHRoaXMsICRldmVudClcIjtcblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm9wdGlvbnMudGVtcGxhdGVPcHRpb25zLlwiICsgbmFtZSArIFwiIG11c3QgYmUgYSBzdHJpbmcgb3IgZnVuY3Rpb246IFwiICsgSlNPTi5zdHJpbmdpZnkob3B0aW9ucykpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSBpZiAodmFsLmJvdW5kICYmIGluRXApIHtcblx0ICAgICAgICAgIGF0dHJOYW1lID0gdmFsLmJvdW5kO1xuXHQgICAgICAgICAgYXR0clZhbCA9IHJlZjtcblx0ICAgICAgICB9IGVsc2UgaWYgKCh2YWwuYXR0cmlidXRlIHx8IHZhbC5ib29sZWFuKSAmJiBpbkVwKSB7XG5cdCAgICAgICAgICBhdHRyTmFtZSA9IHZhbC5hdHRyaWJ1dGUgfHwgdmFsLmJvb2xlYW47XG5cdCAgICAgICAgICBhdHRyVmFsID0gXCJ7e1wiICsgcmVmICsgXCJ9fVwiO1xuXHQgICAgICAgIH0gZWxzZSBpZiAodmFsLmF0dHJpYnV0ZSAmJiBpblRvKSB7XG5cdCAgICAgICAgICBhdHRyTmFtZSA9IHZhbC5hdHRyaWJ1dGU7XG5cdCAgICAgICAgICBhdHRyVmFsID0gdG9WYWw7XG5cdCAgICAgICAgfSBlbHNlIGlmICh2YWwuYm9vbGVhbikge1xuXHQgICAgICAgICAgaWYgKGluVG8gJiYgIWluRXAgJiYgdG9WYWwpIHtcblx0ICAgICAgICAgICAgYXR0ck5hbWUgPSB2YWwuYm9vbGVhbjtcblx0ICAgICAgICAgICAgYXR0clZhbCA9IHRydWU7XG5cdCAgICAgICAgICB9IGVsc2Uge31cblx0ICAgICAgICB9IGVsc2UgaWYgKHZhbC5ib3VuZCAmJiBpblRvKSB7XG5cdCAgICAgICAgICBhdHRyTmFtZSA9IHZhbC5ib3VuZDtcblx0ICAgICAgICAgIGF0dHJWYWwgPSByZWY7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaWYgKGFuZ3VsYXIuaXNEZWZpbmVkKGF0dHJOYW1lKSAmJiBhbmd1bGFyLmlzRGVmaW5lZChhdHRyVmFsKSkge1xuXHQgICAgICAgICAgYWRkSWZOb3RQcmVzZW50KG1vZGVsTm9kZXMsIGF0dHJOYW1lLCBhdHRyVmFsKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIC8vIFV0aWxpdHkgZnVuY3Rpb25zXG5cdCAgZnVuY3Rpb24gZ2V0QnVpbHRJbkF0dHJpYnV0ZXMoKSB7XG5cdCAgICB2YXIgbmdNb2RlbEF0dHJpYnV0ZXMgPSB7XG5cdCAgICAgIGZvY3VzOiB7XG5cdCAgICAgICAgYXR0cmlidXRlOiBcImZvcm1seS1mb2N1c1wiXG5cdCAgICAgIH1cblx0ICAgIH07XG5cdCAgICB2YXIgYm91bmRPbmx5ID0gW107XG5cdCAgICB2YXIgYm90aEJvb2xlYW5BbmRCb3VuZCA9IFtcInJlcXVpcmVkXCIsIFwiZGlzYWJsZWRcIl07XG5cdCAgICB2YXIgYm90aEF0dHJpYnV0ZUFuZEJvdW5kID0gW1wicGF0dGVyblwiLCBcIm1pbmxlbmd0aFwiXTtcblx0ICAgIHZhciBleHByZXNzaW9uT25seSA9IFtcImNoYW5nZVwiLCBcImtleWRvd25cIiwgXCJrZXl1cFwiLCBcImtleXByZXNzXCIsIFwiY2xpY2tcIiwgXCJmb2N1c1wiLCBcImJsdXJcIl07XG5cdCAgICB2YXIgYXR0cmlidXRlT25seSA9IFtcInBsYWNlaG9sZGVyXCIsIFwibWluXCIsIFwibWF4XCIsIFwidGFiaW5kZXhcIiwgXCJ0eXBlXCJdO1xuXHQgICAgaWYgKGZvcm1seUNvbmZpZy5leHRyYXMubmdNb2RlbEF0dHJzTWFuaXB1bGF0b3JQcmVmZXJVbmJvdW5kKSB7XG5cdCAgICAgIGJvdGhBdHRyaWJ1dGVBbmRCb3VuZC5wdXNoKFwibWF4bGVuZ3RoXCIpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgYm91bmRPbmx5LnB1c2goXCJtYXhsZW5ndGhcIik7XG5cdCAgICB9XG5cblx0ICAgIGFuZ3VsYXIuZm9yRWFjaChib3VuZE9ubHksIGZ1bmN0aW9uIChpdGVtKSB7XG5cdCAgICAgIG5nTW9kZWxBdHRyaWJ1dGVzW2l0ZW1dID0geyBib3VuZDogXCJuZy1cIiArIGl0ZW0gfTtcblx0ICAgIH0pO1xuXG5cdCAgICBhbmd1bGFyLmZvckVhY2goYm90aEJvb2xlYW5BbmRCb3VuZCwgZnVuY3Rpb24gKGl0ZW0pIHtcblx0ICAgICAgbmdNb2RlbEF0dHJpYnV0ZXNbaXRlbV0gPSB7IGJvb2xlYW46IGl0ZW0sIGJvdW5kOiBcIm5nLVwiICsgaXRlbSB9O1xuXHQgICAgfSk7XG5cblx0ICAgIGFuZ3VsYXIuZm9yRWFjaChib3RoQXR0cmlidXRlQW5kQm91bmQsIGZ1bmN0aW9uIChpdGVtKSB7XG5cdCAgICAgIG5nTW9kZWxBdHRyaWJ1dGVzW2l0ZW1dID0geyBhdHRyaWJ1dGU6IGl0ZW0sIGJvdW5kOiBcIm5nLVwiICsgaXRlbSB9O1xuXHQgICAgfSk7XG5cblx0ICAgIGFuZ3VsYXIuZm9yRWFjaChleHByZXNzaW9uT25seSwgZnVuY3Rpb24gKGl0ZW0pIHtcblx0ICAgICAgdmFyIHByb3BOYW1lID0gXCJvblwiICsgaXRlbS5zdWJzdHIoMCwgMSkudG9VcHBlckNhc2UoKSArIGl0ZW0uc3Vic3RyKDEpO1xuXHQgICAgICBuZ01vZGVsQXR0cmlidXRlc1twcm9wTmFtZV0gPSB7IGV4cHJlc3Npb246IFwibmctXCIgKyBpdGVtIH07XG5cdCAgICB9KTtcblxuXHQgICAgYW5ndWxhci5mb3JFYWNoKGF0dHJpYnV0ZU9ubHksIGZ1bmN0aW9uIChpdGVtKSB7XG5cdCAgICAgIG5nTW9kZWxBdHRyaWJ1dGVzW2l0ZW1dID0geyBhdHRyaWJ1dGU6IGl0ZW0gfTtcblx0ICAgIH0pO1xuXHQgICAgcmV0dXJuIG5nTW9kZWxBdHRyaWJ1dGVzO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGdldEVwVmFsdWUoZXAsIG5hbWUpIHtcblx0ICAgIHJldHVybiBlcFtcInRlbXBsYXRlT3B0aW9ucy5cIiArIG5hbWVdIHx8IGVwW1widGVtcGxhdGVPcHRpb25zWydcIiArIG5hbWUgKyBcIiddXCJdIHx8IGVwW1widGVtcGxhdGVPcHRpb25zW1xcXCJcIiArIG5hbWUgKyBcIlxcXCJdXCJdO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIGFkZElmTm90UHJlc2VudChub2RlcywgYXR0ciwgdmFsKSB7XG5cdCAgICBhbmd1bGFyLmZvckVhY2gobm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG5cdCAgICAgIGlmICghbm9kZS5nZXRBdHRyaWJ1dGUoYXR0cikpIHtcblx0ICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyLCB2YWwpO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICB9XG5cdH1cblx0YWRkRm9ybWx5TmdNb2RlbEF0dHJzTWFuaXB1bGF0b3IuJGluamVjdCA9IFtcImZvcm1seUNvbmZpZ1wiXTtcblxuXHQvLyBqc2hpbnQgLVcwMzVcblx0Ly8gZW1wdHkgdG8gaWxsdXN0cmF0ZSB0aGF0IGEgYm9vbGVhbiB3aWxsIG5vdCBiZSBhZGRlZCB2aWEgdmFsLmJvdW5kXG5cdC8vIGlmIHlvdSB3YW50IGl0IGFkZGVkIHZpYSB2YWwuYm91bmQsIHRoZW4gcHV0IGl0IGluIGV4cHJlc3Npb25Qcm9wZXJ0aWVzXG5cbi8qKiovIH0sXG4vKiAxNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBhZGRDdXN0b21UYWdzO1xuXG5cdC8vIEBuZ0luamVjdFxuXHRmdW5jdGlvbiBhZGRDdXN0b21UYWdzKCRkb2N1bWVudCkge1xuXHQgIGlmICgkZG9jdW1lbnQgJiYgJGRvY3VtZW50LmdldCkge1xuXHQgICAgKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgLy9JRTggY2hlY2sgLT5cblx0ICAgICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDk2NDk2Ni9kZXRlY3QtaWUtdmVyc2lvbi1wcmlvci10by12OS1pbi1qYXZhc2NyaXB0LzEwOTY1MjAzIzEwOTY1MjAzXG5cdCAgICAgIHZhciBkb2N1bWVudCA9ICRkb2N1bWVudC5nZXQoMCk7XG5cdCAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHQgICAgICBkaXYuaW5uZXJIVE1MID0gXCI8IS0tW2lmIGx0IElFIDldPjxpPjwvaT48IVtlbmRpZl0tLT5cIjtcblx0ICAgICAgdmFyIGlzSWVMZXNzVGhhbjkgPSBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpXCIpLmxlbmd0aCA9PT0gMTtcblxuXHQgICAgICBpZiAoaXNJZUxlc3NUaGFuOSkge1xuXHQgICAgICAgIC8vYWRkIHRoZSBjdXN0b20gZWxlbWVudHMgdGhhdCB3ZSBuZWVkIGZvciBmb3JtbHlcblx0ICAgICAgICB2YXIgY3VzdG9tRWxlbWVudHMgPSBbXCJmb3JtbHktZmllbGRcIiwgXCJmb3JtbHktZm9ybVwiLCBcImZvcm1seS1jdXN0b20tdmFsaWRhdGlvblwiLCBcImZvcm1seS1mb2N1c1wiLCBcImZvcm1seS10cmFuc3Bvc2VcIl07XG5cdCAgICAgICAgYW5ndWxhci5mb3JFYWNoKGN1c3RvbUVsZW1lbnRzLCBmdW5jdGlvbiAoZWwpIHtcblx0ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWwpO1xuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAgICB9KSgpO1xuXHQgIH1cblx0fVxuXHRhZGRDdXN0b21UYWdzLiRpbmplY3QgPSBbXCIkZG9jdW1lbnRcIl07XG5cbi8qKiovIH0sXG4vKiAxNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9pbnRlcm9wUmVxdWlyZSA9IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9ialtcImRlZmF1bHRcIl0gOiBvYmo7IH07XG5cblx0Ly8gc29tZSB2ZXJzaW9ucyBvZiBhbmd1bGFyIGRvbid0IGV4cG9ydCB0aGUgYW5ndWxhciBtb2R1bGUgcHJvcGVybHksXG5cdC8vIHNvIHdlIGdldCBpdCBmcm9tIHdpbmRvdyBpbiB0aGlzIGNhc2UuXG5cblx0dmFyIGFuZ3VsYXIgPSBfaW50ZXJvcFJlcXVpcmUoX193ZWJwYWNrX3JlcXVpcmVfXygxNykpO1xuXG5cdGlmICghYW5ndWxhci52ZXJzaW9uKSB7XG5cdCAgYW5ndWxhciA9IHdpbmRvdy5hbmd1bGFyO1xuXHR9XG5cdG1vZHVsZS5leHBvcnRzID0gYW5ndWxhcjtcblxuLyoqKi8gfSxcbi8qIDE2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMTZfXztcblxuLyoqKi8gfSxcbi8qIDE3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMTdfXztcblxuLyoqKi8gfSxcbi8qIDE4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX2ludGVyb3BSZXF1aXJlID0gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqW1wiZGVmYXVsdFwiXSA6IG9iajsgfTtcblxuXHR2YXIgYW5ndWxhciA9IF9pbnRlcm9wUmVxdWlyZShfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KSk7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IGZvcm1seUV2YWw6IGZvcm1seUV2YWwsIGdldEZpZWxkSWQ6IGdldEZpZWxkSWQsIHJldmVyc2VEZWVwTWVyZ2U6IHJldmVyc2VEZWVwTWVyZ2UsIGZpbmRCeU5vZGVOYW1lOiBmaW5kQnlOb2RlTmFtZSwgYXJyYXlpZnk6IGFycmF5aWZ5LCBleHRlbmRGdW5jdGlvbjogZXh0ZW5kRnVuY3Rpb24gfTtcblxuXHRmdW5jdGlvbiBmb3JtbHlFdmFsKHNjb3BlLCBleHByZXNzaW9uLCAkbW9kZWxWYWx1ZSwgJHZpZXdWYWx1ZSwgZXh0cmFMb2NhbHMpIHtcblx0ICBpZiAoYW5ndWxhci5pc0Z1bmN0aW9uKGV4cHJlc3Npb24pKSB7XG5cdCAgICByZXR1cm4gZXhwcmVzc2lvbigkdmlld1ZhbHVlLCAkbW9kZWxWYWx1ZSwgc2NvcGUsIGV4dHJhTG9jYWxzKTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIHNjb3BlLiRldmFsKGV4cHJlc3Npb24sIGFuZ3VsYXIuZXh0ZW5kKHsgJHZpZXdWYWx1ZTogJHZpZXdWYWx1ZSwgJG1vZGVsVmFsdWU6ICRtb2RlbFZhbHVlIH0sIGV4dHJhTG9jYWxzKSk7XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0RmllbGRJZChmb3JtSWQsIG9wdGlvbnMsIGluZGV4KSB7XG5cdCAgaWYgKG9wdGlvbnMuaWQpIHtcblx0ICAgIHJldHVybiBvcHRpb25zLmlkO1xuXHQgIH1cblx0ICB2YXIgdHlwZSA9IG9wdGlvbnMudHlwZTtcblx0ICBpZiAoIXR5cGUgJiYgb3B0aW9ucy50ZW1wbGF0ZSkge1xuXHQgICAgdHlwZSA9IFwidGVtcGxhdGVcIjtcblx0ICB9IGVsc2UgaWYgKCF0eXBlICYmIG9wdGlvbnMudGVtcGxhdGVVcmwpIHtcblx0ICAgIHR5cGUgPSBcInRlbXBsYXRlVXJsXCI7XG5cdCAgfVxuXG5cdCAgcmV0dXJuIFtmb3JtSWQsIHR5cGUsIG9wdGlvbnMua2V5LCBpbmRleF0uam9pbihcIl9cIik7XG5cdH1cblxuXHRmdW5jdGlvbiByZXZlcnNlRGVlcE1lcmdlKGRlc3QpIHtcblx0ICBhbmd1bGFyLmZvckVhY2goYXJndW1lbnRzLCBmdW5jdGlvbiAoc3JjLCBpbmRleCkge1xuXHQgICAgaWYgKCFpbmRleCkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBhbmd1bGFyLmZvckVhY2goc3JjLCBmdW5jdGlvbiAodmFsLCBwcm9wKSB7XG5cdCAgICAgIGlmICghYW5ndWxhci5pc0RlZmluZWQoZGVzdFtwcm9wXSkpIHtcblx0ICAgICAgICBkZXN0W3Byb3BdID0gYW5ndWxhci5jb3B5KHZhbCk7XG5cdCAgICAgIH0gZWxzZSBpZiAob2JqQW5kU2FtZVR5cGUoZGVzdFtwcm9wXSwgdmFsKSkge1xuXHQgICAgICAgIHJldmVyc2VEZWVwTWVyZ2UoZGVzdFtwcm9wXSwgdmFsKTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgfSk7XG5cdH1cblxuXHRmdW5jdGlvbiBvYmpBbmRTYW1lVHlwZShvYmoxLCBvYmoyKSB7XG5cdCAgcmV0dXJuIGFuZ3VsYXIuaXNPYmplY3Qob2JqMSkgJiYgYW5ndWxhci5pc09iamVjdChvYmoyKSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqMSkgPT09IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmoyKTtcblx0fVxuXG5cdC8vcmVjdXJzZSBkb3duIGEgbm9kZSB0cmVlIHRvIGZpbmQgYSBub2RlIHdpdGggbWF0Y2hpbmcgbm9kZU5hbWUsIGZvciBjdXN0b20gdGFncyBqUXVlcnkuZmluZCBkb2Vzbid0IHdvcmsgaW4gSUU4XG5cdGZ1bmN0aW9uIGZpbmRCeU5vZGVOYW1lKGVsLCBub2RlTmFtZSkge1xuXHQgIGlmICghZWwucHJvcCkge1xuXHQgICAgLy8gbm90IGEgalF1ZXJ5IG9yIGpxTGl0ZSBvYmplY3QgLT4gd3JhcCBpdFxuXHQgICAgZWwgPSBhbmd1bGFyLmVsZW1lbnQoZWwpO1xuXHQgIH1cblxuXHQgIGlmIChlbC5wcm9wKFwibm9kZU5hbWVcIikgPT09IG5vZGVOYW1lLnRvVXBwZXJDYXNlKCkpIHtcblx0ICAgIHJldHVybiBlbDtcblx0ICB9XG5cblx0ICB2YXIgYyA9IGVsLmNoaWxkcmVuKCk7XG5cdCAgZm9yICh2YXIgaSA9IDA7IGMgJiYgaSA8IGMubGVuZ3RoOyBpKyspIHtcblx0ICAgIHZhciBub2RlID0gZmluZEJ5Tm9kZU5hbWUoY1tpXSwgbm9kZU5hbWUpO1xuXHQgICAgaWYgKG5vZGUpIHtcblx0ICAgICAgcmV0dXJuIG5vZGU7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gYXJyYXlpZnkob2JqKSB7XG5cdCAgaWYgKG9iaiAmJiAhYW5ndWxhci5pc0FycmF5KG9iaikpIHtcblx0ICAgIG9iaiA9IFtvYmpdO1xuXHQgIH0gZWxzZSBpZiAoIW9iaikge1xuXHQgICAgb2JqID0gW107XG5cdCAgfVxuXHQgIHJldHVybiBvYmo7XG5cdH1cblxuXHRmdW5jdGlvbiBleHRlbmRGdW5jdGlvbigpIHtcblx0ICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgZm5zID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICBmbnNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG5cdCAgfVxuXG5cdCAgcmV0dXJuIGZ1bmN0aW9uIGV4dGVuZGVkRnVuY3Rpb24oKSB7XG5cdCAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcblx0ICAgIGZucy5mb3JFYWNoKGZ1bmN0aW9uIChmbikge1xuXHQgICAgICByZXR1cm4gZm4uYXBwbHkobnVsbCwgYXJncyk7XG5cdCAgICB9KTtcblx0ICB9O1xuXHR9XG5cbi8qKiovIH1cbi8qKioqKiovIF0pXG59KTtcbjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vYW5ndWxhci1mb3JtbHkvZGlzdC9mb3JtbHkuanNcbi8vIG1vZHVsZSBpZCA9IDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 4 */
+/***/ function(module, exports) {
+
+ eval("module.exports = angular;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJhbmd1bGFyXCI/MTFkMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiI0LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBhbmd1bGFyO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwiYW5ndWxhclwiXG4vLyBtb2R1bGUgaWQgPSA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 5 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("// angular-formly-templates-bootstrap version 4.3.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory(__webpack_require__(3), __webpack_require__(2), __webpack_require__(4));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular-formly\", \"api-check\", \"angular\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ngFormlyTemplatesBootstrap\"] = factory(require(\"angular-formly\"), require(\"api-check\"), require(\"angular\"));\n\telse\n\t\troot[\"ngFormlyTemplatesBootstrap\"] = factory(root[\"ngFormly\"], root[\"apiCheck\"], root[\"angular\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_8__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(11);\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addCheckboxType);\n\t\n\t function addCheckboxType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'multiCheckbox',\n\t template: __webpack_require__(21),\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional\n\t })\n\t },\n\t defaultOptions: {\n\t noFormControl: false,\n\t ngModelAttrs: {\n\t required: {\n\t attribute: '',\n\t bound: ''\n\t }\n\t }\n\t },\n\t apiCheckInstance: c,\n\t controller: /* @ngInject */[\"$scope\", function controller($scope) {\n\t var to = $scope.to;\n\t var opts = $scope.options;\n\t $scope.multiCheckbox = {\n\t checked: [],\n\t change: setModel\n\t };\n\t\n\t // initialize the checkboxes check property\n\t var modelValue = $scope.model[opts.key];\n\t if (angular.isArray(modelValue)) {\n\t (function () {\n\t var valueProp = to.valueProp || 'value';\n\t angular.forEach(to.options, function (v, index) {\n\t $scope.multiCheckbox.checked[index] = modelValue.indexOf(v[valueProp]) !== -1;\n\t });\n\t })();\n\t }\n\t\n\t function checkValidity(expressionValue) {\n\t var valid = angular.isArray($scope.model[opts.key]) && $scope.model[opts.key].length > 0 && expressionValue;\n\t\n\t $scope.fc.$setValidity('required', valid);\n\t }\n\t\n\t function setModel() {\n\t $scope.model[opts.key] = [];\n\t angular.forEach($scope.multiCheckbox.checked, function (checkbox, index) {\n\t if (checkbox) {\n\t $scope.model[opts.key].push(to.options[index][to.valueProp || 'value']);\n\t }\n\t });\n\t\n\t // Must make sure we mark as touched because only the last checkbox due to a bug in angular.\n\t $scope.fc.$setTouched();\n\t checkValidity(true);\n\t }\n\t\n\t if (opts.expressionProperties && opts.expressionProperties.required) {\n\t $scope.$watch($scope.options.expressionProperties.required, function (newValue) {\n\t checkValidity(newValue);\n\t });\n\t }\n\t\n\t if ($scope.to.required) {\n\t var unwatchFormControl = $scope.$watch('fc', function (newValue) {\n\t if (!newValue) {\n\t return;\n\t }\n\t checkValidity(true);\n\t unwatchFormControl;\n\t });\n\t }\n\t }]\n\t });\n\t }\n\t addCheckboxType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// some versions of angular don't export the angular module properly,\n\t// so we get it from window in this case.\n\t'use strict';\n\t\n\tvar angular = __webpack_require__(8);\n\tif (!angular.version) {\n\t angular = window.angular;\n\t}\n\tmodule.exports = angular;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addWrappers);\n\t\n\t function addWrappers(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setWrapper([{\n\t name: 'bootstrapLabel',\n\t template: __webpack_require__(17),\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t label: c.string,\n\t required: c.bool.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t }, { name: 'bootstrapHasError', template: __webpack_require__(18) }]);\n\t }\n\t addWrappers.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t __webpack_require__(10)(ngModule);\n\t __webpack_require__(1)(ngModule);\n\t __webpack_require__(12)(ngModule);\n\t __webpack_require__(9)(ngModule);\n\t __webpack_require__(13)(ngModule);\n\t __webpack_require__(14)(ngModule);\n\t};\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _addons = __webpack_require__(15);\n\t\n\tvar _addons2 = _interopRequireDefault(_addons);\n\t\n\tvar _description = __webpack_require__(16);\n\t\n\tvar _description2 = _interopRequireDefault(_description);\n\t\n\texports['default'] = function (ngModule) {\n\t (0, _addons2['default'])(ngModule);\n\t (0, _description2['default'])(ngModule);\n\t};\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_8__;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addRadioType);\n\t\n\t function addRadioType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'radio',\n\t template: __webpack_require__(19),\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: {\n\t noFormControl: false\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addRadioType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addCheckboxType);\n\t\n\t function addCheckboxType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'checkbox',\n\t template: __webpack_require__(20),\n\t wrapper: ['bootstrapHasError'],\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t label: c.string\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addCheckboxType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\tvar ngModuleName = 'formlyBootstrap';\n\tvar angular = __webpack_require__(4);\n\tvar ngModule = angular.module(ngModuleName, [__webpack_require__(2)]);\n\tngModule.constant('formlyBootstrapApiCheck', __webpack_require__(3)({\n\t output: {\n\t prefix: 'angular-formly-bootstrap'\n\t }\n\t}));\n\tngModule.constant('formlyBootstrapVersion', (\"4.3.2\"));\n\t\n\t__webpack_require__(5)(ngModule);\n\t__webpack_require__(6)(ngModule);\n\t__webpack_require__(7)(ngModule);\n\t\n\texports['default'] = ngModuleName;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addInputType);\n\t\n\t function addInputType(formlyConfigProvider) {\n\t formlyConfigProvider.setType({\n\t name: 'input',\n\t template: ' ',\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError']\n\t });\n\t }\n\t addInputType.$inject = [\"formlyConfigProvider\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _defineProperty(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); }\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addSelectType);\n\t\n\t var template = ' ';\n\t\n\t function addSelectType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'select',\n\t template: template,\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: function defaultOptions(options) {\n\t /* jshint maxlen:195 */\n\t var ngOptions = options.templateOptions.ngOptions || 'option[to.valueProp || \\'value\\'] as option[to.labelProp || \\'name\\'] group by option[to.groupProp || \\'group\\'] for option in to.options';\n\t return {\n\t ngModelAttrs: _defineProperty({}, ngOptions, {\n\t value: 'ng-options'\n\t })\n\t };\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t options: c.arrayOf(c.object),\n\t labelProp: c.string.optional,\n\t valueProp: c.string.optional,\n\t groupProp: c.string.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addSelectType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.config(addTextareaType);\n\t\n\t function addTextareaType(formlyConfigProvider, formlyBootstrapApiCheck) {\n\t var c = formlyBootstrapApiCheck;\n\t formlyConfigProvider.setType({\n\t name: 'textarea',\n\t template: '',\n\t wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n\t defaultOptions: {\n\t ngModelAttrs: {\n\t rows: { attribute: 'rows' },\n\t cols: { attribute: 'cols' }\n\t }\n\t },\n\t apiCheck: {\n\t templateOptions: c.shape({\n\t rows: c.number.optional,\n\t cols: c.number.optional\n\t })\n\t },\n\t apiCheckInstance: c\n\t });\n\t }\n\t addTextareaType.$inject = [\"formlyConfigProvider\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.run(addAddonsManipulator);\n\t\n\t function addAddonsManipulator(formlyConfig, formlyBootstrapApiCheck) {\n\t var addonTemplate = __webpack_require__(22);\n\t var addonChecker = formlyBootstrapApiCheck.shape({\n\t 'class': formlyBootstrapApiCheck.string.optional,\n\t text: formlyBootstrapApiCheck.string.optional,\n\t onClick: formlyBootstrapApiCheck.func.optional\n\t }).strict.optional;\n\t var api = formlyBootstrapApiCheck.shape({\n\t templateOptions: formlyBootstrapApiCheck.shape({\n\t addonLeft: addonChecker,\n\t addonRight: addonChecker\n\t })\n\t });\n\t formlyConfig.templateManipulators.preWrapper.push(function (template, options) {\n\t if (!options.templateOptions.addonLeft && !options.templateOptions.addonRight) {\n\t return template;\n\t }\n\t formlyBootstrapApiCheck.warn([api], [options]);\n\t return addonTemplate.replace(' ', template);\n\t });\n\t }\n\t addAddonsManipulator.$inject = [\"formlyConfig\", \"formlyBootstrapApiCheck\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\texports['default'] = function (ngModule) {\n\t ngModule.run(addDescriptionManipulator);\n\t\n\t function addDescriptionManipulator(formlyConfig) {\n\t formlyConfig.templateManipulators.preWrapper.push(function ariaDescribedBy(template, options, scope) {\n\t if (angular.isDefined(options.templateOptions.description)) {\n\t var el = document.createElement('div');\n\t el.appendChild(angular.element(template)[0]);\n\t el.appendChild(angular.element('' + '{{to.description}}' + '
')[0]);\n\t var modelEls = angular.element(el.querySelectorAll('[ng-model]'));\n\t if (modelEls) {\n\t modelEls.attr('aria-describedby', scope.id + '_description');\n\t }\n\t return el.innerHTML;\n\t } else {\n\t return template;\n\t }\n\t });\n\t }\n\t addDescriptionManipulator.$inject = [\"formlyConfig\"];\n\t};\n\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n \\n {{to.label}}\\n {{to.required ? '*' : ''}}\\n \\n \\n
\\n\"\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n \\n
\\n\"\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n \\n {{option[to.labelProp || 'name']}}\\n \\n
\\n
\\n\"\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n\\t\\n\\t\\t \\n\\t\\t{{to.label}}\\n\\t\\t{{to.required ? '*' : ''}}\\n\\t \\n
\\n\"\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n \\n {{option[to.labelProp || 'name']}}\\n \\n
\\n
\\n\"\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = \"\\n
\\n \\n {{to.addonLeft.text}} \\n
\\n
\\n
\\n \\n {{to.addonRight.text}} \\n
\\n
\\n\"\n\n/***/ }\n/******/ ])\n});\n;\n//# sourceMappingURL=angular-formly-templates-bootstrap.js.map//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2FuZ3VsYXItZm9ybWx5LXRlbXBsYXRlcy1ib290c3RyYXAvZGlzdC9hbmd1bGFyLWZvcm1seS10ZW1wbGF0ZXMtYm9vdHN0cmFwLmpzP2Y1YjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZCxZQUFZO0FBQ1o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7O0FBRVo7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsUUFBUTtBQUNSLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsUUFBUTtBQUNSO0FBQ0EsTUFBTSxHQUFHLCtEQUErRDtBQUN4RTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRix1Q0FBdUMsdUNBQXVDLGtCQUFrQjs7QUFFaEc7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsUUFBUTtBQUNSO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixRQUFRO0FBQ1I7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRiw0Q0FBNEMseUNBQXlDLHFFQUFxRSxFQUFFOztBQUU1SjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixRQUFRO0FBQ1I7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixvQkFBb0I7QUFDdEMsa0JBQWtCO0FBQ2xCO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLFFBQVE7QUFDUjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUlBQXVJLGdCQUFnQjtBQUN2SjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBLDJDQUEyQyxJQUFJLG1DQUFtQyxVQUFVLFFBQVEsd0JBQXdCOztBQUU1SCxPQUFPO0FBQ1A7QUFDQTs7QUFFQSx5REFBeUQsdUJBQXVCOztBQUVoRixPQUFPO0FBQ1A7QUFDQTs7QUFFQSxpTEFBaUwsa0JBQWtCLG1KQUFtSixnQ0FBZ0M7O0FBRXRYLE9BQU87QUFDUDtBQUNBOztBQUVBLHFMQUFxTCxVQUFVLFFBQVEsd0JBQXdCOztBQUUvTixPQUFPO0FBQ1A7QUFDQTs7QUFFQSx1TEFBdUwsa0JBQWtCLHlIQUF5SCxnQ0FBZ0M7O0FBRWxXLE9BQU87QUFDUDtBQUNBOztBQUVBLG9DQUFvQyw2Q0FBNkMsaUdBQWlHLHFEQUFxRCxxRkFBcUYsb0JBQW9CLGtGQUFrRixtQkFBbUIsK0pBQStKLHNEQUFzRCxzRkFBc0YscUJBQXFCLG9GQUFvRixvQkFBb0I7O0FBRTcxQjtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EiLCJmaWxlIjoiNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGFuZ3VsYXItZm9ybWx5LXRlbXBsYXRlcy1ib290c3RyYXAgdmVyc2lvbiA0LjMuMiBidWlsdCB3aXRoIOKZpSBieSBBc3RyaXNtIDxhc3RyaXNtc0BnbWFpbC5jb20+LCBLZW50IEMuIERvZGRzIDxrZW50QGRvZGRzZmFtaWx5LnVzPiAow7Mgw6xfw60pPcOzw7I9KMOsX8OtIMOyKVxuXG4oZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJhbmd1bGFyLWZvcm1seVwiKSwgcmVxdWlyZShcImFwaS1jaGVja1wiKSwgcmVxdWlyZShcImFuZ3VsYXJcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiYW5ndWxhci1mb3JtbHlcIiwgXCJhcGktY2hlY2tcIiwgXCJhbmd1bGFyXCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm5nRm9ybWx5VGVtcGxhdGVzQm9vdHN0cmFwXCJdID0gZmFjdG9yeShyZXF1aXJlKFwiYW5ndWxhci1mb3JtbHlcIiksIHJlcXVpcmUoXCJhcGktY2hlY2tcIiksIHJlcXVpcmUoXCJhbmd1bGFyXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJuZ0Zvcm1seVRlbXBsYXRlc0Jvb3RzdHJhcFwiXSA9IGZhY3Rvcnkocm9vdFtcIm5nRm9ybWx5XCJdLCByb290W1wiYXBpQ2hlY2tcIl0sIHJvb3RbXCJhbmd1bGFyXCJdKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMl9fLCBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzNfXywgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV84X18pIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fSxcbi8qKioqKiovIFx0XHRcdGlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGxvYWRlZDogZmFsc2Vcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cbi8qKiovIH0sXG4vKiAxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAobmdNb2R1bGUpIHtcblx0ICBuZ01vZHVsZS5jb25maWcoYWRkQ2hlY2tib3hUeXBlKTtcblx0XG5cdCAgZnVuY3Rpb24gYWRkQ2hlY2tib3hUeXBlKGZvcm1seUNvbmZpZ1Byb3ZpZGVyLCBmb3JtbHlCb290c3RyYXBBcGlDaGVjaykge1xuXHQgICAgdmFyIGMgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjaztcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuXHQgICAgICBuYW1lOiAnbXVsdGlDaGVja2JveCcsXG5cdCAgICAgIHRlbXBsYXRlOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKSxcblx0ICAgICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddLFxuXHQgICAgICBhcGlDaGVjazoge1xuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczogYy5zaGFwZSh7XG5cdCAgICAgICAgICBvcHRpb25zOiBjLmFycmF5T2YoYy5vYmplY3QpLFxuXHQgICAgICAgICAgbGFiZWxQcm9wOiBjLnN0cmluZy5vcHRpb25hbCxcblx0ICAgICAgICAgIHZhbHVlUHJvcDogYy5zdHJpbmcub3B0aW9uYWxcblx0ICAgICAgICB9KVxuXHQgICAgICB9LFxuXHQgICAgICBkZWZhdWx0T3B0aW9uczoge1xuXHQgICAgICAgIG5vRm9ybUNvbnRyb2w6IGZhbHNlLFxuXHQgICAgICAgIG5nTW9kZWxBdHRyczoge1xuXHQgICAgICAgICAgcmVxdWlyZWQ6IHtcblx0ICAgICAgICAgICAgYXR0cmlidXRlOiAnJyxcblx0ICAgICAgICAgICAgYm91bmQ6ICcnXG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9LFxuXHQgICAgICBhcGlDaGVja0luc3RhbmNlOiBjLFxuXHQgICAgICBjb250cm9sbGVyOiAvKiBAbmdJbmplY3QgKi9bXCIkc2NvcGVcIiwgZnVuY3Rpb24gY29udHJvbGxlcigkc2NvcGUpIHtcblx0ICAgICAgICB2YXIgdG8gPSAkc2NvcGUudG87XG5cdCAgICAgICAgdmFyIG9wdHMgPSAkc2NvcGUub3B0aW9ucztcblx0ICAgICAgICAkc2NvcGUubXVsdGlDaGVja2JveCA9IHtcblx0ICAgICAgICAgIGNoZWNrZWQ6IFtdLFxuXHQgICAgICAgICAgY2hhbmdlOiBzZXRNb2RlbFxuXHQgICAgICAgIH07XG5cdFxuXHQgICAgICAgIC8vIGluaXRpYWxpemUgdGhlIGNoZWNrYm94ZXMgY2hlY2sgcHJvcGVydHlcblx0ICAgICAgICB2YXIgbW9kZWxWYWx1ZSA9ICRzY29wZS5tb2RlbFtvcHRzLmtleV07XG5cdCAgICAgICAgaWYgKGFuZ3VsYXIuaXNBcnJheShtb2RlbFZhbHVlKSkge1xuXHQgICAgICAgICAgKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgdmFyIHZhbHVlUHJvcCA9IHRvLnZhbHVlUHJvcCB8fCAndmFsdWUnO1xuXHQgICAgICAgICAgICBhbmd1bGFyLmZvckVhY2godG8ub3B0aW9ucywgZnVuY3Rpb24gKHYsIGluZGV4KSB7XG5cdCAgICAgICAgICAgICAgJHNjb3BlLm11bHRpQ2hlY2tib3guY2hlY2tlZFtpbmRleF0gPSBtb2RlbFZhbHVlLmluZGV4T2Yodlt2YWx1ZVByb3BdKSAhPT0gLTE7XG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfSkoKTtcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGZ1bmN0aW9uIGNoZWNrVmFsaWRpdHkoZXhwcmVzc2lvblZhbHVlKSB7XG5cdCAgICAgICAgICB2YXIgdmFsaWQgPSBhbmd1bGFyLmlzQXJyYXkoJHNjb3BlLm1vZGVsW29wdHMua2V5XSkgJiYgJHNjb3BlLm1vZGVsW29wdHMua2V5XS5sZW5ndGggPiAwICYmIGV4cHJlc3Npb25WYWx1ZTtcblx0XG5cdCAgICAgICAgICAkc2NvcGUuZmMuJHNldFZhbGlkaXR5KCdyZXF1aXJlZCcsIHZhbGlkKTtcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGZ1bmN0aW9uIHNldE1vZGVsKCkge1xuXHQgICAgICAgICAgJHNjb3BlLm1vZGVsW29wdHMua2V5XSA9IFtdO1xuXHQgICAgICAgICAgYW5ndWxhci5mb3JFYWNoKCRzY29wZS5tdWx0aUNoZWNrYm94LmNoZWNrZWQsIGZ1bmN0aW9uIChjaGVja2JveCwgaW5kZXgpIHtcblx0ICAgICAgICAgICAgaWYgKGNoZWNrYm94KSB7XG5cdCAgICAgICAgICAgICAgJHNjb3BlLm1vZGVsW29wdHMua2V5XS5wdXNoKHRvLm9wdGlvbnNbaW5kZXhdW3RvLnZhbHVlUHJvcCB8fCAndmFsdWUnXSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0pO1xuXHRcblx0ICAgICAgICAgIC8vIE11c3QgbWFrZSBzdXJlIHdlIG1hcmsgYXMgdG91Y2hlZCBiZWNhdXNlIG9ubHkgdGhlIGxhc3QgY2hlY2tib3ggZHVlIHRvIGEgYnVnIGluIGFuZ3VsYXIuXG5cdCAgICAgICAgICAkc2NvcGUuZmMuJHNldFRvdWNoZWQoKTtcblx0ICAgICAgICAgIGNoZWNrVmFsaWRpdHkodHJ1ZSk7XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICBpZiAob3B0cy5leHByZXNzaW9uUHJvcGVydGllcyAmJiBvcHRzLmV4cHJlc3Npb25Qcm9wZXJ0aWVzLnJlcXVpcmVkKSB7XG5cdCAgICAgICAgICAkc2NvcGUuJHdhdGNoKCRzY29wZS5vcHRpb25zLmV4cHJlc3Npb25Qcm9wZXJ0aWVzLnJlcXVpcmVkLCBmdW5jdGlvbiAobmV3VmFsdWUpIHtcblx0ICAgICAgICAgICAgY2hlY2tWYWxpZGl0eShuZXdWYWx1ZSk7XG5cdCAgICAgICAgICB9KTtcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGlmICgkc2NvcGUudG8ucmVxdWlyZWQpIHtcblx0ICAgICAgICAgIHZhciB1bndhdGNoRm9ybUNvbnRyb2wgPSAkc2NvcGUuJHdhdGNoKCdmYycsIGZ1bmN0aW9uIChuZXdWYWx1ZSkge1xuXHQgICAgICAgICAgICBpZiAoIW5ld1ZhbHVlKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIGNoZWNrVmFsaWRpdHkodHJ1ZSk7XG5cdCAgICAgICAgICAgIHVud2F0Y2hGb3JtQ29udHJvbDtcblx0ICAgICAgICAgIH0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfV1cblx0ICAgIH0pO1xuXHQgIH1cblx0ICBhZGRDaGVja2JveFR5cGUuJGluamVjdCA9IFtcImZvcm1seUNvbmZpZ1Byb3ZpZGVyXCIsIFwiZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2tcIl07XG5cdH07XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cbi8qKiovIH0sXG4vKiAyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMl9fO1xuXG4vKioqLyB9LFxuLyogMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzNfXztcblxuLyoqKi8gfSxcbi8qIDQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIHNvbWUgdmVyc2lvbnMgb2YgYW5ndWxhciBkb24ndCBleHBvcnQgdGhlIGFuZ3VsYXIgbW9kdWxlIHByb3Blcmx5LFxuXHQvLyBzbyB3ZSBnZXQgaXQgZnJvbSB3aW5kb3cgaW4gdGhpcyBjYXNlLlxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgYW5ndWxhciA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdGlmICghYW5ndWxhci52ZXJzaW9uKSB7XG5cdCAgYW5ndWxhciA9IHdpbmRvdy5hbmd1bGFyO1xuXHR9XG5cdG1vZHVsZS5leHBvcnRzID0gYW5ndWxhcjtcblxuLyoqKi8gfSxcbi8qIDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgIG5nTW9kdWxlLmNvbmZpZyhhZGRXcmFwcGVycyk7XG5cdFxuXHQgIGZ1bmN0aW9uIGFkZFdyYXBwZXJzKGZvcm1seUNvbmZpZ1Byb3ZpZGVyLCBmb3JtbHlCb290c3RyYXBBcGlDaGVjaykge1xuXHQgICAgdmFyIGMgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjaztcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFdyYXBwZXIoW3tcblx0ICAgICAgbmFtZTogJ2Jvb3RzdHJhcExhYmVsJyxcblx0ICAgICAgdGVtcGxhdGU6IF9fd2VicGFja19yZXF1aXJlX18oMTcpLFxuXHQgICAgICBhcGlDaGVjazoge1xuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczogYy5zaGFwZSh7XG5cdCAgICAgICAgICBsYWJlbDogYy5zdHJpbmcsXG5cdCAgICAgICAgICByZXF1aXJlZDogYy5ib29sLm9wdGlvbmFsXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSwgeyBuYW1lOiAnYm9vdHN0cmFwSGFzRXJyb3InLCB0ZW1wbGF0ZTogX193ZWJwYWNrX3JlcXVpcmVfXygxOCkgfV0pO1xuXHQgIH1cblx0ICBhZGRXcmFwcGVycy4kaW5qZWN0ID0gW1wiZm9ybWx5Q29uZmlnUHJvdmlkZXJcIiwgXCJmb3JtbHlCb290c3RyYXBBcGlDaGVja1wiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgIF9fd2VicGFja19yZXF1aXJlX18oMTApKG5nTW9kdWxlKTtcblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpKG5nTW9kdWxlKTtcblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKShuZ01vZHVsZSk7XG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXyg5KShuZ01vZHVsZSk7XG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXygxMykobmdNb2R1bGUpO1xuXHQgIF9fd2VicGFja19yZXF1aXJlX18oMTQpKG5nTW9kdWxlKTtcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG4vKioqLyB9LFxuLyogNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXHRcblx0dmFyIF9hZGRvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcblx0XG5cdHZhciBfYWRkb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FkZG9ucyk7XG5cdFxuXHR2YXIgX2Rlc2NyaXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNik7XG5cdFxuXHR2YXIgX2Rlc2NyaXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Rlc2NyaXB0aW9uKTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgICgwLCBfYWRkb25zMlsnZGVmYXVsdCddKShuZ01vZHVsZSk7XG5cdCAgKDAsIF9kZXNjcmlwdGlvbjJbJ2RlZmF1bHQnXSkobmdNb2R1bGUpO1xuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cbi8qKiovIH0sXG4vKiA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfOF9fO1xuXG4vKioqLyB9LFxuLyogOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0ZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKG5nTW9kdWxlKSB7XG5cdCAgbmdNb2R1bGUuY29uZmlnKGFkZFJhZGlvVHlwZSk7XG5cdFxuXHQgIGZ1bmN0aW9uIGFkZFJhZGlvVHlwZShmb3JtbHlDb25maWdQcm92aWRlciwgZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2spIHtcblx0ICAgIHZhciBjID0gZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2s7XG5cdCAgICBmb3JtbHlDb25maWdQcm92aWRlci5zZXRUeXBlKHtcblx0ICAgICAgbmFtZTogJ3JhZGlvJyxcblx0ICAgICAgdGVtcGxhdGU6IF9fd2VicGFja19yZXF1aXJlX18oMTkpLFxuXHQgICAgICB3cmFwcGVyOiBbJ2Jvb3RzdHJhcExhYmVsJywgJ2Jvb3RzdHJhcEhhc0Vycm9yJ10sXG5cdCAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG5cdCAgICAgICAgbm9Gb3JtQ29udHJvbDogZmFsc2Vcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2s6IHtcblx0ICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IGMuc2hhcGUoe1xuXHQgICAgICAgICAgb3B0aW9uczogYy5hcnJheU9mKGMub2JqZWN0KSxcblx0ICAgICAgICAgIGxhYmVsUHJvcDogYy5zdHJpbmcub3B0aW9uYWwsXG5cdCAgICAgICAgICB2YWx1ZVByb3A6IGMuc3RyaW5nLm9wdGlvbmFsXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSk7XG5cdCAgfVxuXHQgIGFkZFJhZGlvVHlwZS4kaW5qZWN0ID0gW1wiZm9ybWx5Q29uZmlnUHJvdmlkZXJcIiwgXCJmb3JtbHlCb290c3RyYXBBcGlDaGVja1wiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDEwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAobmdNb2R1bGUpIHtcblx0ICBuZ01vZHVsZS5jb25maWcoYWRkQ2hlY2tib3hUeXBlKTtcblx0XG5cdCAgZnVuY3Rpb24gYWRkQ2hlY2tib3hUeXBlKGZvcm1seUNvbmZpZ1Byb3ZpZGVyLCBmb3JtbHlCb290c3RyYXBBcGlDaGVjaykge1xuXHQgICAgdmFyIGMgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjaztcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuXHQgICAgICBuYW1lOiAnY2hlY2tib3gnLFxuXHQgICAgICB0ZW1wbGF0ZTogX193ZWJwYWNrX3JlcXVpcmVfXygyMCksXG5cdCAgICAgIHdyYXBwZXI6IFsnYm9vdHN0cmFwSGFzRXJyb3InXSxcblx0ICAgICAgYXBpQ2hlY2s6IHtcblx0ICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IGMuc2hhcGUoe1xuXHQgICAgICAgICAgbGFiZWw6IGMuc3RyaW5nXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSk7XG5cdCAgfVxuXHQgIGFkZENoZWNrYm94VHlwZS4kaW5qZWN0ID0gW1wiZm9ybWx5Q29uZmlnUHJvdmlkZXJcIiwgXCJmb3JtbHlCb290c3RyYXBBcGlDaGVja1wiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDExICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdHZhciBuZ01vZHVsZU5hbWUgPSAnZm9ybWx5Qm9vdHN0cmFwJztcblx0dmFyIGFuZ3VsYXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHR2YXIgbmdNb2R1bGUgPSBhbmd1bGFyLm1vZHVsZShuZ01vZHVsZU5hbWUsIFtfX3dlYnBhY2tfcmVxdWlyZV9fKDIpXSk7XG5cdG5nTW9kdWxlLmNvbnN0YW50KCdmb3JtbHlCb290c3RyYXBBcGlDaGVjaycsIF9fd2VicGFja19yZXF1aXJlX18oMykoe1xuXHQgIG91dHB1dDoge1xuXHQgICAgcHJlZml4OiAnYW5ndWxhci1mb3JtbHktYm9vdHN0cmFwJ1xuXHQgIH1cblx0fSkpO1xuXHRuZ01vZHVsZS5jb25zdGFudCgnZm9ybWx5Qm9vdHN0cmFwVmVyc2lvbicsIChcIjQuMy4yXCIpKTtcblx0XG5cdF9fd2VicGFja19yZXF1aXJlX18oNSkobmdNb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDYpKG5nTW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg3KShuZ01vZHVsZSk7XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBuZ01vZHVsZU5hbWU7XG5cdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG4vKioqLyB9LFxuLyogMTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgIG5nTW9kdWxlLmNvbmZpZyhhZGRJbnB1dFR5cGUpO1xuXHRcblx0ICBmdW5jdGlvbiBhZGRJbnB1dFR5cGUoZm9ybWx5Q29uZmlnUHJvdmlkZXIpIHtcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuXHQgICAgICBuYW1lOiAnaW5wdXQnLFxuXHQgICAgICB0ZW1wbGF0ZTogJzxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nLW1vZGVsPVwibW9kZWxbb3B0aW9ucy5rZXldXCI+Jyxcblx0ICAgICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddXG5cdCAgICB9KTtcblx0ICB9XG5cdCAgYWRkSW5wdXRUeXBlLiRpbmplY3QgPSBbXCJmb3JtbHlDb25maWdQcm92aWRlclwiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDEzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHRmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAobmdNb2R1bGUpIHtcblx0ICBuZ01vZHVsZS5jb25maWcoYWRkU2VsZWN0VHlwZSk7XG5cdFxuXHQgIHZhciB0ZW1wbGF0ZSA9ICc8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmctbW9kZWw9XCJtb2RlbFtvcHRpb25zLmtleV1cIj48L3NlbGVjdD4nO1xuXHRcblx0ICBmdW5jdGlvbiBhZGRTZWxlY3RUeXBlKGZvcm1seUNvbmZpZ1Byb3ZpZGVyLCBmb3JtbHlCb290c3RyYXBBcGlDaGVjaykge1xuXHQgICAgdmFyIGMgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjaztcblx0ICAgIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuXHQgICAgICBuYW1lOiAnc2VsZWN0Jyxcblx0ICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuXHQgICAgICB3cmFwcGVyOiBbJ2Jvb3RzdHJhcExhYmVsJywgJ2Jvb3RzdHJhcEhhc0Vycm9yJ10sXG5cdCAgICAgIGRlZmF1bHRPcHRpb25zOiBmdW5jdGlvbiBkZWZhdWx0T3B0aW9ucyhvcHRpb25zKSB7XG5cdCAgICAgICAgLyoganNoaW50IG1heGxlbjoxOTUgKi9cblx0ICAgICAgICB2YXIgbmdPcHRpb25zID0gb3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnMubmdPcHRpb25zIHx8ICdvcHRpb25bdG8udmFsdWVQcm9wIHx8IFxcJ3ZhbHVlXFwnXSBhcyBvcHRpb25bdG8ubGFiZWxQcm9wIHx8IFxcJ25hbWVcXCddIGdyb3VwIGJ5IG9wdGlvblt0by5ncm91cFByb3AgfHwgXFwnZ3JvdXBcXCddIGZvciBvcHRpb24gaW4gdG8ub3B0aW9ucyc7XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIG5nTW9kZWxBdHRyczogX2RlZmluZVByb3BlcnR5KHt9LCBuZ09wdGlvbnMsIHtcblx0ICAgICAgICAgICAgdmFsdWU6ICduZy1vcHRpb25zJ1xuXHQgICAgICAgICAgfSlcblx0ICAgICAgICB9O1xuXHQgICAgICB9LFxuXHQgICAgICBhcGlDaGVjazoge1xuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczogYy5zaGFwZSh7XG5cdCAgICAgICAgICBvcHRpb25zOiBjLmFycmF5T2YoYy5vYmplY3QpLFxuXHQgICAgICAgICAgbGFiZWxQcm9wOiBjLnN0cmluZy5vcHRpb25hbCxcblx0ICAgICAgICAgIHZhbHVlUHJvcDogYy5zdHJpbmcub3B0aW9uYWwsXG5cdCAgICAgICAgICBncm91cFByb3A6IGMuc3RyaW5nLm9wdGlvbmFsXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSk7XG5cdCAgfVxuXHQgIGFkZFNlbGVjdFR5cGUuJGluamVjdCA9IFtcImZvcm1seUNvbmZpZ1Byb3ZpZGVyXCIsIFwiZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2tcIl07XG5cdH07XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cbi8qKiovIH0sXG4vKiAxNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0ZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKG5nTW9kdWxlKSB7XG5cdCAgbmdNb2R1bGUuY29uZmlnKGFkZFRleHRhcmVhVHlwZSk7XG5cdFxuXHQgIGZ1bmN0aW9uIGFkZFRleHRhcmVhVHlwZShmb3JtbHlDb25maWdQcm92aWRlciwgZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2spIHtcblx0ICAgIHZhciBjID0gZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2s7XG5cdCAgICBmb3JtbHlDb25maWdQcm92aWRlci5zZXRUeXBlKHtcblx0ICAgICAgbmFtZTogJ3RleHRhcmVhJyxcblx0ICAgICAgdGVtcGxhdGU6ICc8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuZy1tb2RlbD1cIm1vZGVsW29wdGlvbnMua2V5XVwiPjwvdGV4dGFyZWE+Jyxcblx0ICAgICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddLFxuXHQgICAgICBkZWZhdWx0T3B0aW9uczoge1xuXHQgICAgICAgIG5nTW9kZWxBdHRyczoge1xuXHQgICAgICAgICAgcm93czogeyBhdHRyaWJ1dGU6ICdyb3dzJyB9LFxuXHQgICAgICAgICAgY29sczogeyBhdHRyaWJ1dGU6ICdjb2xzJyB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9LFxuXHQgICAgICBhcGlDaGVjazoge1xuXHQgICAgICAgIHRlbXBsYXRlT3B0aW9uczogYy5zaGFwZSh7XG5cdCAgICAgICAgICByb3dzOiBjLm51bWJlci5vcHRpb25hbCxcblx0ICAgICAgICAgIGNvbHM6IGMubnVtYmVyLm9wdGlvbmFsXG5cdCAgICAgICAgfSlcblx0ICAgICAgfSxcblx0ICAgICAgYXBpQ2hlY2tJbnN0YW5jZTogY1xuXHQgICAgfSk7XG5cdCAgfVxuXHQgIGFkZFRleHRhcmVhVHlwZS4kaW5qZWN0ID0gW1wiZm9ybWx5Q29uZmlnUHJvdmlkZXJcIiwgXCJmb3JtbHlCb290c3RyYXBBcGlDaGVja1wiXTtcblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuLyoqKi8gfSxcbi8qIDE1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAobmdNb2R1bGUpIHtcblx0ICBuZ01vZHVsZS5ydW4oYWRkQWRkb25zTWFuaXB1bGF0b3IpO1xuXHRcblx0ICBmdW5jdGlvbiBhZGRBZGRvbnNNYW5pcHVsYXRvcihmb3JtbHlDb25maWcsIGZvcm1seUJvb3RzdHJhcEFwaUNoZWNrKSB7XG5cdCAgICB2YXIgYWRkb25UZW1wbGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpO1xuXHQgICAgdmFyIGFkZG9uQ2hlY2tlciA9IGZvcm1seUJvb3RzdHJhcEFwaUNoZWNrLnNoYXBlKHtcblx0ICAgICAgJ2NsYXNzJzogZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2suc3RyaW5nLm9wdGlvbmFsLFxuXHQgICAgICB0ZXh0OiBmb3JtbHlCb290c3RyYXBBcGlDaGVjay5zdHJpbmcub3B0aW9uYWwsXG5cdCAgICAgIG9uQ2xpY2s6IGZvcm1seUJvb3RzdHJhcEFwaUNoZWNrLmZ1bmMub3B0aW9uYWxcblx0ICAgIH0pLnN0cmljdC5vcHRpb25hbDtcblx0ICAgIHZhciBhcGkgPSBmb3JtbHlCb290c3RyYXBBcGlDaGVjay5zaGFwZSh7XG5cdCAgICAgIHRlbXBsYXRlT3B0aW9uczogZm9ybWx5Qm9vdHN0cmFwQXBpQ2hlY2suc2hhcGUoe1xuXHQgICAgICAgIGFkZG9uTGVmdDogYWRkb25DaGVja2VyLFxuXHQgICAgICAgIGFkZG9uUmlnaHQ6IGFkZG9uQ2hlY2tlclxuXHQgICAgICB9KVxuXHQgICAgfSk7XG5cdCAgICBmb3JtbHlDb25maWcudGVtcGxhdGVNYW5pcHVsYXRvcnMucHJlV3JhcHBlci5wdXNoKGZ1bmN0aW9uICh0ZW1wbGF0ZSwgb3B0aW9ucykge1xuXHQgICAgICBpZiAoIW9wdGlvbnMudGVtcGxhdGVPcHRpb25zLmFkZG9uTGVmdCAmJiAhb3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnMuYWRkb25SaWdodCkge1xuXHQgICAgICAgIHJldHVybiB0ZW1wbGF0ZTtcblx0ICAgICAgfVxuXHQgICAgICBmb3JtbHlCb290c3RyYXBBcGlDaGVjay53YXJuKFthcGldLCBbb3B0aW9uc10pO1xuXHQgICAgICByZXR1cm4gYWRkb25UZW1wbGF0ZS5yZXBsYWNlKCc8Zm9ybWx5LXRyYW5zY2x1ZGU+PC9mb3JtbHktdHJhbnNjbHVkZT4nLCB0ZW1wbGF0ZSk7XG5cdCAgICB9KTtcblx0ICB9XG5cdCAgYWRkQWRkb25zTWFuaXB1bGF0b3IuJGluamVjdCA9IFtcImZvcm1seUNvbmZpZ1wiLCBcImZvcm1seUJvb3RzdHJhcEFwaUNoZWNrXCJdO1xuXHR9O1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG4vKioqLyB9LFxuLyogMTYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChuZ01vZHVsZSkge1xuXHQgIG5nTW9kdWxlLnJ1bihhZGREZXNjcmlwdGlvbk1hbmlwdWxhdG9yKTtcblx0XG5cdCAgZnVuY3Rpb24gYWRkRGVzY3JpcHRpb25NYW5pcHVsYXRvcihmb3JtbHlDb25maWcpIHtcblx0ICAgIGZvcm1seUNvbmZpZy50ZW1wbGF0ZU1hbmlwdWxhdG9ycy5wcmVXcmFwcGVyLnB1c2goZnVuY3Rpb24gYXJpYURlc2NyaWJlZEJ5KHRlbXBsYXRlLCBvcHRpb25zLCBzY29wZSkge1xuXHQgICAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQob3B0aW9ucy50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24pKSB7XG5cdCAgICAgICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdCAgICAgICAgZWwuYXBwZW5kQ2hpbGQoYW5ndWxhci5lbGVtZW50KHRlbXBsYXRlKVswXSk7XG5cdCAgICAgICAgZWwuYXBwZW5kQ2hpbGQoYW5ndWxhci5lbGVtZW50KCc8cCBpZD1cIicgKyBzY29wZS5pZCArICdfZGVzY3JpcHRpb25cIicgKyAnY2xhc3M9XCJoZWxwLWJsb2NrXCInICsgJ25nLWlmPVwidG8uZGVzY3JpcHRpb25cIj4nICsgJ3t7dG8uZGVzY3JpcHRpb259fScgKyAnPC9wPicpWzBdKTtcblx0ICAgICAgICB2YXIgbW9kZWxFbHMgPSBhbmd1bGFyLmVsZW1lbnQoZWwucXVlcnlTZWxlY3RvckFsbCgnW25nLW1vZGVsXScpKTtcblx0ICAgICAgICBpZiAobW9kZWxFbHMpIHtcblx0ICAgICAgICAgIG1vZGVsRWxzLmF0dHIoJ2FyaWEtZGVzY3JpYmVkYnknLCBzY29wZS5pZCArICdfZGVzY3JpcHRpb24nKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGVsLmlubmVySFRNTDtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICByZXR1cm4gdGVtcGxhdGU7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgIH1cblx0ICBhZGREZXNjcmlwdGlvbk1hbmlwdWxhdG9yLiRpbmplY3QgPSBbXCJmb3JtbHlDb25maWdcIl07XG5cdH07XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cbi8qKiovIH0sXG4vKiAxNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBcIjxkaXY+XFxuICA8bGFiZWwgZm9yPVxcXCJ7e2lkfX1cXFwiIGNsYXNzPVxcXCJjb250cm9sLWxhYmVsXFxcIj5cXG4gICAge3t0by5sYWJlbH19XFxuICAgIHt7dG8ucmVxdWlyZWQgPyAnKicgOiAnJ319XFxuICA8L2xhYmVsPlxcbiAgPGZvcm1seS10cmFuc2NsdWRlPjwvZm9ybWx5LXRyYW5zY2x1ZGU+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfSxcbi8qIDE4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCIgbmctY2xhc3M9XFxcInsnaGFzLWVycm9yJzogc2hvd0Vycm9yfVxcXCI+XFxuICA8Zm9ybWx5LXRyYW5zY2x1ZGU+PC9mb3JtbHktdHJhbnNjbHVkZT5cXG48L2Rpdj5cXG5cIlxuXG4vKioqLyB9LFxuLyogMTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IGNsYXNzPVxcXCJyYWRpby1ncm91cFxcXCI+XFxuICA8ZGl2IG5nLXJlcGVhdD1cXFwiKGtleSwgb3B0aW9uKSBpbiB0by5vcHRpb25zXFxcIiBjbGFzcz1cXFwicmFkaW9cXFwiPlxcbiAgICA8bGFiZWw+XFxuICAgICAgPGlucHV0IHR5cGU9XFxcInJhZGlvXFxcIlxcbiAgICAgICAgICAgICBpZD1cXFwie3tpZCArICdfJysgJGluZGV4fX1cXFwiXFxuICAgICAgICAgICAgIHRhYmluZGV4PVxcXCIwXFxcIlxcbiAgICAgICAgICAgICBuZy12YWx1ZT1cXFwib3B0aW9uW3RvLnZhbHVlUHJvcCB8fCAndmFsdWUnXVxcXCJcXG4gICAgICAgICAgICAgbmctbW9kZWw9XFxcIm1vZGVsW29wdGlvbnMua2V5XVxcXCI+XFxuICAgICAge3tvcHRpb25bdG8ubGFiZWxQcm9wIHx8ICduYW1lJ119fVxcbiAgICA8L2xhYmVsPlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfSxcbi8qIDIwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwiY2hlY2tib3hcXFwiPlxcblxcdDxsYWJlbD5cXG5cXHRcXHQ8aW5wdXQgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICBjbGFzcz1cXFwiZm9ybWx5LWZpZWxkLWNoZWNrYm94XFxcIlxcblxcdFxcdCAgICAgICBuZy1tb2RlbD1cXFwibW9kZWxbb3B0aW9ucy5rZXldXFxcIj5cXG5cXHRcXHR7e3RvLmxhYmVsfX1cXG5cXHRcXHR7e3RvLnJlcXVpcmVkID8gJyonIDogJyd9fVxcblxcdDwvbGFiZWw+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfSxcbi8qIDIxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicmFkaW8tZ3JvdXBcXFwiPlxcbiAgPGRpdiBuZy1yZXBlYXQ9XFxcIihrZXksIG9wdGlvbikgaW4gdG8ub3B0aW9uc1xcXCIgY2xhc3M9XFxcImNoZWNrYm94XFxcIj5cXG4gICAgPGxhYmVsPlxcbiAgICAgIDxpbnB1dCB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICAgaWQ9XFxcInt7aWQgKyAnXycrICRpbmRleH19XFxcIlxcbiAgICAgICAgICAgICBuZy1tb2RlbD1cXFwibXVsdGlDaGVja2JveC5jaGVja2VkWyRpbmRleF1cXFwiXFxuICAgICAgICAgICAgIG5nLWNoYW5nZT1cXFwibXVsdGlDaGVja2JveC5jaGFuZ2UoKVxcXCI+XFxuICAgICAge3tvcHRpb25bdG8ubGFiZWxQcm9wIHx8ICduYW1lJ119fVxcbiAgICA8L2xhYmVsPlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfSxcbi8qIDIyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBuZy1jbGFzcz1cXFwieydpbnB1dC1ncm91cCc6IHRvLmFkZG9uTGVmdCB8fCB0by5hZGRvblJpZ2h0fVxcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcImlucHV0LWdyb3VwLWFkZG9uXFxcIlxcbiAgICAgICAgIG5nLWlmPVxcXCJ0by5hZGRvbkxlZnRcXFwiXFxuICAgICAgICAgbmctc3R5bGU9XFxcIntjdXJzb3I6IHRvLmFkZG9uTGVmdC5vbkNsaWNrID8gJ3BvaW50ZXInIDogJ2luaGVyaXQnfVxcXCJcXG4gICAgICAgICBuZy1jbGljaz1cXFwidG8uYWRkb25MZWZ0Lm9uQ2xpY2sob3B0aW9ucywgdGhpcylcXFwiPlxcbiAgICAgICAgPGkgY2xhc3M9XFxcInt7dG8uYWRkb25MZWZ0LmNsYXNzfX1cXFwiIG5nLWlmPVxcXCJ0by5hZGRvbkxlZnQuY2xhc3NcXFwiPjwvaT5cXG4gICAgICAgIDxzcGFuIG5nLWlmPVxcXCJ0by5hZGRvbkxlZnQudGV4dFxcXCI+e3t0by5hZGRvbkxlZnQudGV4dH19PC9zcGFuPlxcbiAgICA8L2Rpdj5cXG4gICAgPGZvcm1seS10cmFuc2NsdWRlPjwvZm9ybWx5LXRyYW5zY2x1ZGU+XFxuICAgIDxkaXYgY2xhc3M9XFxcImlucHV0LWdyb3VwLWFkZG9uXFxcIlxcbiAgICAgICAgIG5nLWlmPVxcXCJ0by5hZGRvblJpZ2h0XFxcIlxcbiAgICAgICAgIG5nLXN0eWxlPVxcXCJ7Y3Vyc29yOiB0by5hZGRvblJpZ2h0Lm9uQ2xpY2sgPyAncG9pbnRlcicgOiAnaW5oZXJpdCd9XFxcIlxcbiAgICAgICAgIG5nLWNsaWNrPVxcXCJ0by5hZGRvblJpZ2h0Lm9uQ2xpY2sob3B0aW9ucywgdGhpcylcXFwiPlxcbiAgICAgICAgPGkgY2xhc3M9XFxcInt7dG8uYWRkb25SaWdodC5jbGFzc319XFxcIiBuZy1pZj1cXFwidG8uYWRkb25SaWdodC5jbGFzc1xcXCI+PC9pPlxcbiAgICAgICAgPHNwYW4gbmctaWY9XFxcInRvLmFkZG9uUmlnaHQudGV4dFxcXCI+e3t0by5hZGRvblJpZ2h0LnRleHR9fTwvc3Bhbj5cXG4gICAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuLyoqKi8gfVxuLyoqKioqKi8gXSlcbn0pO1xuO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YW5ndWxhci1mb3JtbHktdGVtcGxhdGVzLWJvb3RzdHJhcC5qcy5tYXBcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vYW5ndWxhci1mb3JtbHktdGVtcGxhdGVzLWJvb3RzdHJhcC9kaXN0L2FuZ3VsYXItZm9ybWx5LXRlbXBsYXRlcy1ib290c3RyYXAuanNcbi8vIG1vZHVsZSBpZCA9IDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 6 */
+/***/ function(module, exports) {
+
+ eval("/**\r\n * Easy to use Wizard library for Angular JS\r\n * @version v0.10.0 - 2016-12-22 * @link https://github.com/mgonto/angular-wizard\r\n * @author Martin Gontovnikas \r\n * @license MIT License, http://www.opensource.org/licenses/MIT\r\n */\r\nangular.module('templates-angularwizard', ['step.html', 'wizard.html']);\r\n\r\nangular.module(\"step.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"step.html\",\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"wizard.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"wizard.html\",\r\n \"\\n\" +\r\n \"
\\n\" +\r\n \"
\\n\" +\r\n \"
\\n\" +\r\n \"
\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module('mgo-angular-wizard', ['templates-angularwizard']);\r\n\r\nangular.module('mgo-angular-wizard').directive('wzStep', function() {\n return {\n restrict: 'EA',\n replace: true,\n transclude: true,\n scope: {\n wzTitle: '@',\n canenter : '=',\n canexit : '=',\n disabled: '@?wzDisabled',\n description: '@',\n wzData: '=',\n wzOrder: '@?'\n },\n require: '^wizard',\n templateUrl: function(element, attributes) {\n return attributes.template || \"step.html\";\n },\n link: function ($scope, $element, $attrs, wizard) {\n $attrs.$observe('wzTitle', function (value) {\n $scope.title = $scope.wzTitle;\n });\n $scope.title = $scope.wzTitle;\n wizard.addStep($scope);\n $scope.$on('$destroy', function(){\n wizard.removeStep($scope);\n });\n }\n };\n});\n\r\n//wizard directive\nangular.module('mgo-angular-wizard').directive('wizard', function() {\n return {\n restrict: 'EA',\n replace: true,\n transclude: true,\n scope: {\n currentStep: '=',\n onFinish: '&',\n hideIndicators: '=',\n editMode: '=',\n name: '@',\n indicatorsPosition: '@?'\n },\n templateUrl: function(element, attributes) {\n return attributes.template || \"wizard.html\";\n },\n\n //controller for wizard directive, treat this just like an angular controller\n controller: ['$scope', '$element', '$log', 'WizardHandler', '$q', '$timeout', function ($scope, $element, $log, WizardHandler, $q, $timeout) {\n //setting default step position if none declared.\n if ($scope.indicatorsPosition == undefined) {\n $scope.indicatorsPosition = 'bottom';\n }\n //this variable allows directive to load without having to pass any step validation\n var firstRun = true;\n //creating instance of wizard, passing this as second argument allows access to functions attached to this via Service\n WizardHandler.addWizard($scope.name || WizardHandler.defaultName, this);\n\n $scope.$on('$destroy', function() {\n WizardHandler.removeWizard($scope.name || WizardHandler.defaultName);\n });\n\n //steps array where all the scopes of each step are added\n $scope.steps = [];\n\n var stepIdx = function(step) {\n var idx = 0;\n var res = -1;\n angular.forEach($scope.getEnabledSteps(), function(currStep) {\n if (currStep === step) {\n res = idx;\n }\n idx++;\n });\n return res;\n };\n\n var stepByTitle = function(titleToFind) {\n var foundStep = null;\n angular.forEach($scope.getEnabledSteps(), function(step) {\n if (step.wzTitle === titleToFind) {\n foundStep = step;\n }\n });\n return foundStep;\n };\n\n //access to context object for step validation\n $scope.context = {};\n\n //watching changes to currentStep\n $scope.$watch('currentStep', function(step) {\n //checking to make sure currentStep is truthy value\n if (!step) return;\n //setting stepTitle equal to current step title or default title\n var stepTitle = $scope.selectedStep.wzTitle;\n if ($scope.selectedStep && stepTitle !== $scope.currentStep) {\n //invoking goTo() with step title as argument\n $scope.goTo(stepByTitle($scope.currentStep));\n }\n });\n\n //watching steps array length and editMode value, if edit module is undefined or null the nothing is done\n //if edit mode is truthy, then all steps are marked as completed\n $scope.$watch('[editMode, steps.length]', function() {\n var editMode = $scope.editMode;\n if (angular.isUndefined(editMode) || (editMode === null)) return;\n\n //Set completed for all steps to the value of editMode\n angular.forEach($scope.steps, function (step) {\n step.completed = editMode;\n });\n\n //If editMode is false, set ONLY ENABLED steps with index lower then completedIndex to completed\n if (!editMode) {\n var completedStepsIndex = $scope.currentStepNumber() - 1;\n angular.forEach($scope.getEnabledSteps(), function(step, stepIndex) {\n if(stepIndex < completedStepsIndex) {\n step.completed = true;\n }\n });\n }\n }, true);\n\n //called each time step directive is loaded\n this.addStep = function(step) {\n var wzOrder = (step.wzOrder >= 0 && !$scope.steps[step.wzOrder]) ? step.wzOrder : $scope.steps.length;\n //adding the scope of directive onto step array\n $scope.steps[wzOrder] = step;\n //if this step is the new first then goTo it\n if ($scope.getEnabledSteps()[0] === step) {\n //goTo first step\n $scope.goTo($scope.getEnabledSteps()[0]);\n }\n };\n \n //called each time step directive is destroyed\n this.removeStep = function (step) {\n var index = $scope.steps.indexOf(step);\n if (index > 0) {\n $scope.steps.splice(index, 1);\n }\n };\n\n this.context = $scope.context;\n\n $scope.getStepNumber = function(step) {\n return stepIdx(step) + 1;\n };\n\n $scope.goTo = function(step) {\n //if this is the first time the wizard is loading it bi-passes step validation\n if(firstRun){\n //deselect all steps so you can set fresh below\n unselectAll();\n $scope.selectedStep = step;\n //making sure current step is not undefined\n if (!angular.isUndefined($scope.currentStep)) {\n $scope.currentStep = step.wzTitle;\n }\n //setting selected step to argument passed into goTo()\n step.selected = true;\n //emit event upwards with data on goTo() invoktion\n $scope.$emit('wizard:stepChanged', {step: step, index: stepIdx(step)});\n //setting variable to false so all other step changes must pass validation\n firstRun = false;\n } else {\n //createing variables to capture current state that goTo() was invoked from and allow booleans\n var thisStep;\n //getting data for step you are transitioning out of\n if($scope.currentStepNumber() > 0){\n thisStep = $scope.currentStepNumber() - 1;\n } else if ($scope.currentStepNumber() === 0){\n thisStep = 0;\n }\n //$log.log('steps[thisStep] Data: ', $scope.getEnabledSteps()[thisStep].canexit);\n $q.all([canExitStep($scope.getEnabledSteps()[thisStep], step), canEnterStep(step)]).then(function(data) {\n if(data[0] && data[1]){\n //deselect all steps so you can set fresh below\n unselectAll();\n\n //$log.log('value for canExit argument: ', $scope.currentStep.canexit);\n $scope.selectedStep = step;\n //making sure current step is not undefined\n if(!angular.isUndefined($scope.currentStep)){\n $scope.currentStep = step.wzTitle;\n }\n //setting selected step to argument passed into goTo()\n step.selected = true;\n //emit event upwards with data on goTo() invoktion\n $scope.$emit('wizard:stepChanged', {step: step, index: stepIdx(step)});\n //$log.log('current step number: ', $scope.currentStepNumber());\n }\n });\n }\n };\n\n function canEnterStep(step) {\n var defer,\n canEnter;\n //If no validation function is provided, allow the user to enter the step\n if(step.canenter === undefined){\n return true;\n }\n //If canenter is a boolean value instead of a function, return the value\n if(typeof step.canenter === 'boolean'){\n return step.canenter;\n }\n //Check to see if the canenter function is a promise which needs to be returned\n canEnter = step.canenter($scope.context);\n if(angular.isFunction(canEnter.then)){\n defer = $q.defer();\n canEnter.then(function(response){\n defer.resolve(response);\n });\n return defer.promise;\n } else {\n return canEnter === true;\n }\n }\n\n function canExitStep(step, stepTo) {\n var defer,\n canExit;\n //Exiting the step should be allowed if no validation function was provided or if the user is moving backwards\n if(typeof(step.canexit) === 'undefined' || $scope.getStepNumber(stepTo) < $scope.currentStepNumber()){\n return true;\n }\n //If canexit is a boolean value instead of a function, return the value\n if(typeof step.canexit === 'boolean'){\n return step.canexit;\n }\n //Check to see if the canexit function is a promise which needs to be returned\n canExit = step.canexit($scope.context);\n if(angular.isFunction(canExit.then)){\n defer = $q.defer();\n canExit.then(function(response){\n defer.resolve(response);\n });\n return defer.promise;\n } else {\n return canExit === true;\n }\n }\n\n $scope.currentStepNumber = function() {\n //retreive current step number\n return stepIdx($scope.selectedStep) + 1;\n };\n\n $scope.getEnabledSteps = function() {\n return $scope.steps.filter(function(step){\n return step && step.disabled !== 'true';\n });\n };\n\n //unSelect All Steps\n function unselectAll() {\n //traverse steps array and set each \"selected\" property to false\n angular.forEach($scope.getEnabledSteps(), function (step) {\n step.selected = false;\n });\n //set selectedStep variable to null\n $scope.selectedStep = null;\n }\n\n //ALL METHODS ATTACHED TO this ARE ACCESSIBLE VIA WizardHandler.wizard().methodName()\n\n this.currentStepTitle = function(){\n return $scope.selectedStep.wzTitle;\n };\n\n this.currentStepDescription = function(){\n return $scope.selectedStep.description;\n };\n\n this.currentStep = function(){\n return $scope.selectedStep;\n };\n\n this.totalStepCount = function() {\n return $scope.getEnabledSteps().length;\n };\n\n //Access to enabled steps from outside\n this.getEnabledSteps = function(){\n return $scope.getEnabledSteps();\n };\n\n //Access to current step number from outside\n this.currentStepNumber = function(){\n return $scope.currentStepNumber();\n };\n //method used for next button within step\n this.next = function(callback) {\n var enabledSteps = $scope.getEnabledSteps();\n //setting variable equal to step you were on when next() was invoked\n var index = stepIdx($scope.selectedStep);\n //checking to see if callback is a function\n if(angular.isFunction(callback)){\n if(callback()){\n if (index === enabledSteps.length - 1) {\n this.finish();\n } else {\n //invoking goTo() with step number next in line\n $scope.goTo(enabledSteps[index + 1]);\n }\n } else {\n return;\n }\n }\n if (!callback) {\n //completed property set on scope which is used to add class/remove class from progress bar\n $scope.selectedStep.completed = true;\n }\n //checking to see if this is the last step. If it is next behaves the same as finish()\n if (index === enabledSteps.length - 1) {\n this.finish();\n } else {\n //invoking goTo() with step number next in line\n $scope.goTo(enabledSteps[index + 1]);\n }\n\n };\n\n //used to traverse to any step, step number placed as argument\n this.goTo = function(step) {\n //wrapped inside $timeout so newly enabled steps are included.\n $timeout(function() {\n var enabledSteps = $scope.getEnabledSteps();\n var stepTo;\n //checking that step is a Number\n if (angular.isNumber(step)) {\n stepTo = enabledSteps[step];\n } else {\n //finding the step associated with the title entered as goTo argument\n stepTo = stepByTitle(step);\n }\n //going to step\n $scope.goTo(stepTo);\n });\n };\n\n //calls finish() which calls onFinish() which is declared on an attribute and linked to controller via wizard directive.\n this.finish = function() {\n if ($scope.onFinish) {\n $scope.onFinish();\n }\n };\n \n this.previous = function() {\n //getting index of current step\n var index = stepIdx($scope.selectedStep);\n //ensuring you aren't trying to go back from the first step\n if (index === 0) {\n throw new Error(\"Can't go back. It's already in step 0\");\n } else {\n //go back one step from current step\n $scope.goTo($scope.getEnabledSteps()[index - 1]);\n }\n };\n\n //cancel is alias for previous.\n this.cancel = function() {\n //getting index of current step\n var index = stepIdx($scope.selectedStep);\n //ensuring you aren't trying to go back from the first step\n if (index === 0) {\n throw new Error(\"Can't go back. It's already in step 0\");\n } else {\n //go back one step from current step\n $scope.goTo($scope.getEnabledSteps()[0]);\n }\n };\n\n //reset\n this.reset = function(){\n //traverse steps array and set each \"completed\" property to false\n angular.forEach($scope.getEnabledSteps(), function (step) {\n step.completed = false;\n });\n //go to first step\n this.goTo(0);\n };\n }]\n };\n});\r\nfunction wizardButtonDirective(action) {\n angular.module('mgo-angular-wizard')\n .directive(action, function() {\n return {\n restrict: 'A',\n replace: false,\n require: '^wizard',\n link: function($scope, $element, $attrs, wizard) {\n\n $element.on(\"click\", function(e) {\n e.preventDefault();\n $scope.$apply(function() {\n $scope.$eval($attrs[action]);\n wizard[action.replace(\"wz\", \"\").toLowerCase()]();\n });\n });\n }\n };\n });\n}\n\nwizardButtonDirective('wzNext');\nwizardButtonDirective('wzPrevious');\nwizardButtonDirective('wzFinish');\nwizardButtonDirective('wzCancel');\nwizardButtonDirective('wzReset');\n\r\nangular.module('mgo-angular-wizard').factory('WizardHandler', function() {\n var service = {};\n \n var wizards = {};\n \n service.defaultName = \"defaultWizard\";\n \n service.addWizard = function(name, wizard) {\n wizards[name] = wizard;\n };\n \n service.removeWizard = function(name) {\n delete wizards[name];\n };\n \n service.wizard = function(name) {\n var nameToUse = name;\n if (!name) {\n nameToUse = service.defaultName;\n }\n \n return wizards[nameToUse];\n };\n \n return service;\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2FuZ3VsYXItd2l6YXJkL2Rpc3QvYW5ndWxhci13aXphcmQuanM/MzZiZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsK0NBQStDLG1DQUFtQztBQUNsRjtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsMEJBQTBCO0FBQ3ZFLDJCQUEyQix3S0FBd0s7QUFDbk0sMENBQTBDLDRCQUE0QjtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0QsaUNBQWlDO0FBQ3pGO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0UsaUNBQWlDO0FBQ2pHO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QixxQkFBcUI7QUFDckI7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDIiwiZmlsZSI6IjYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogRWFzeSB0byB1c2UgV2l6YXJkIGxpYnJhcnkgZm9yIEFuZ3VsYXIgSlNcclxuICogQHZlcnNpb24gdjAuMTAuMCAtIDIwMTYtMTItMjIgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vbWdvbnRvL2FuZ3VsYXItd2l6YXJkXHJcbiAqIEBhdXRob3IgTWFydGluIEdvbnRvdm5pa2FzIDxtYXJ0aW5AZ29uLnRvPlxyXG4gKiBAbGljZW5zZSBNSVQgTGljZW5zZSwgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVRcclxuICovXHJcbmFuZ3VsYXIubW9kdWxlKCd0ZW1wbGF0ZXMtYW5ndWxhcndpemFyZCcsIFsnc3RlcC5odG1sJywgJ3dpemFyZC5odG1sJ10pO1xyXG5cclxuYW5ndWxhci5tb2R1bGUoXCJzdGVwLmh0bWxcIiwgW10pLnJ1bihbXCIkdGVtcGxhdGVDYWNoZVwiLCBmdW5jdGlvbigkdGVtcGxhdGVDYWNoZSkge1xyXG4gICR0ZW1wbGF0ZUNhY2hlLnB1dChcInN0ZXAuaHRtbFwiLFxyXG4gICAgXCI8c2VjdGlvbiBuZy1zaG93PVxcXCJzZWxlY3RlZFxcXCIgbmctY2xhc3M9XFxcIntjdXJyZW50OiBzZWxlY3RlZCwgZG9uZTogY29tcGxldGVkfVxcXCIgY2xhc3M9XFxcInN0ZXBcXFwiIG5nLXRyYW5zY2x1ZGU+XFxuXCIgK1xyXG4gICAgXCI8L3NlY3Rpb24+XCIpO1xyXG59XSk7XHJcblxyXG5hbmd1bGFyLm1vZHVsZShcIndpemFyZC5odG1sXCIsIFtdKS5ydW4oW1wiJHRlbXBsYXRlQ2FjaGVcIiwgZnVuY3Rpb24oJHRlbXBsYXRlQ2FjaGUpIHtcclxuICAkdGVtcGxhdGVDYWNoZS5wdXQoXCJ3aXphcmQuaHRtbFwiLFxyXG4gICAgXCI8ZGl2PlxcblwiICtcclxuICAgIFwiICAgIDxkaXYgY2xhc3M9XFxcInN0ZXBzXFxcIiBuZy1pZj1cXFwiaW5kaWNhdG9yc1Bvc2l0aW9uID09PSAnYm90dG9tJ1xcXCIgbmctdHJhbnNjbHVkZT48L2Rpdj5cXG5cIiArXHJcbiAgICBcIiAgICA8dWwgY2xhc3M9XFxcInN0ZXBzLWluZGljYXRvciBzdGVwcy17e2dldEVuYWJsZWRTdGVwcygpLmxlbmd0aH19XFxcIiBuZy1pZj1cXFwiIWhpZGVJbmRpY2F0b3JzXFxcIj5cXG5cIiArXHJcbiAgICBcIiAgICAgIDxsaSBuZy1jbGFzcz1cXFwie2RlZmF1bHQ6ICFzdGVwLmNvbXBsZXRlZCAmJiAhc3RlcC5zZWxlY3RlZCwgY3VycmVudDogc3RlcC5zZWxlY3RlZCAmJiAhc3RlcC5jb21wbGV0ZWQsIGRvbmU6IHN0ZXAuY29tcGxldGVkICYmICFzdGVwLnNlbGVjdGVkLCBlZGl0aW5nOiBzdGVwLnNlbGVjdGVkICYmIHN0ZXAuY29tcGxldGVkfVxcXCIgbmctcmVwZWF0PVxcXCJzdGVwIGluIGdldEVuYWJsZWRTdGVwcygpXFxcIj5cXG5cIiArXHJcbiAgICBcIiAgICAgICAgPGEgbmctY2xpY2s9XFxcImdvVG8oc3RlcClcXFwiPnt7c3RlcC50aXRsZSB8fCBzdGVwLnd6VGl0bGV9fTwvYT5cXG5cIiArXHJcbiAgICBcIiAgICAgIDwvbGk+XFxuXCIgK1xyXG4gICAgXCIgICAgPC91bD5cXG5cIiArXHJcbiAgICBcIiAgICA8ZGl2IGNsYXNzPVxcXCJzdGVwc1xcXCIgbmctaWY9XFxcImluZGljYXRvcnNQb3NpdGlvbiA9PT0gJ3RvcCdcXFwiIG5nLXRyYW5zY2x1ZGU+PC9kaXY+XFxuXCIgK1xyXG4gICAgXCI8L2Rpdj5cXG5cIiArXHJcbiAgICBcIlwiKTtcclxufV0pO1xyXG5cclxuYW5ndWxhci5tb2R1bGUoJ21nby1hbmd1bGFyLXdpemFyZCcsIFsndGVtcGxhdGVzLWFuZ3VsYXJ3aXphcmQnXSk7XHJcblxyXG5hbmd1bGFyLm1vZHVsZSgnbWdvLWFuZ3VsYXItd2l6YXJkJykuZGlyZWN0aXZlKCd3elN0ZXAnLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICByZXN0cmljdDogJ0VBJyxcbiAgICAgICAgcmVwbGFjZTogdHJ1ZSxcbiAgICAgICAgdHJhbnNjbHVkZTogdHJ1ZSxcbiAgICAgICAgc2NvcGU6IHtcbiAgICAgICAgICAgIHd6VGl0bGU6ICdAJyxcbiAgICAgICAgICAgIGNhbmVudGVyIDogJz0nLFxuICAgICAgICAgICAgY2FuZXhpdCA6ICc9JyxcbiAgICAgICAgICAgIGRpc2FibGVkOiAnQD93ekRpc2FibGVkJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQCcsXG4gICAgICAgICAgICB3ekRhdGE6ICc9JyxcbiAgICAgICAgICAgIHd6T3JkZXI6ICdAPydcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZTogJ153aXphcmQnLFxuICAgICAgICB0ZW1wbGF0ZVVybDogZnVuY3Rpb24oZWxlbWVudCwgYXR0cmlidXRlcykge1xuICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLnRlbXBsYXRlIHx8IFwic3RlcC5odG1sXCI7XG4gICAgICAgIH0sXG4gICAgICAgIGxpbms6IGZ1bmN0aW9uICgkc2NvcGUsICRlbGVtZW50LCAkYXR0cnMsIHdpemFyZCkge1xuICAgICAgICAgICAgJGF0dHJzLiRvYnNlcnZlKCd3elRpdGxlJywgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgJHNjb3BlLnRpdGxlID0gJHNjb3BlLnd6VGl0bGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICRzY29wZS50aXRsZSA9ICRzY29wZS53elRpdGxlO1xuICAgICAgICAgICAgd2l6YXJkLmFkZFN0ZXAoJHNjb3BlKTtcbiAgICAgICAgICAgICRzY29wZS4kb24oJyRkZXN0cm95JywgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICB3aXphcmQucmVtb3ZlU3RlcCgkc2NvcGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufSk7XG5cclxuLy93aXphcmQgZGlyZWN0aXZlXG5hbmd1bGFyLm1vZHVsZSgnbWdvLWFuZ3VsYXItd2l6YXJkJykuZGlyZWN0aXZlKCd3aXphcmQnLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICByZXN0cmljdDogJ0VBJyxcbiAgICAgICAgcmVwbGFjZTogdHJ1ZSxcbiAgICAgICAgdHJhbnNjbHVkZTogdHJ1ZSxcbiAgICAgICAgc2NvcGU6IHtcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwOiAnPScsXG4gICAgICAgICAgICBvbkZpbmlzaDogJyYnLFxuICAgICAgICAgICAgaGlkZUluZGljYXRvcnM6ICc9JyxcbiAgICAgICAgICAgIGVkaXRNb2RlOiAnPScsXG4gICAgICAgICAgICBuYW1lOiAnQCcsXG4gICAgICAgICAgICBpbmRpY2F0b3JzUG9zaXRpb246ICdAPydcbiAgICAgICAgfSxcbiAgICAgICAgdGVtcGxhdGVVcmw6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLnRlbXBsYXRlIHx8IFwid2l6YXJkLmh0bWxcIjtcbiAgICAgICAgfSxcblxuICAgICAgICAvL2NvbnRyb2xsZXIgZm9yIHdpemFyZCBkaXJlY3RpdmUsIHRyZWF0IHRoaXMganVzdCBsaWtlIGFuIGFuZ3VsYXIgY29udHJvbGxlclxuICAgICAgICBjb250cm9sbGVyOiBbJyRzY29wZScsICckZWxlbWVudCcsICckbG9nJywgJ1dpemFyZEhhbmRsZXInLCAnJHEnLCAnJHRpbWVvdXQnLCBmdW5jdGlvbiAoJHNjb3BlLCAkZWxlbWVudCwgJGxvZywgV2l6YXJkSGFuZGxlciwgJHEsICR0aW1lb3V0KSB7XG4gICAgICAgICAgICAvL3NldHRpbmcgZGVmYXVsdCBzdGVwIHBvc2l0aW9uIGlmIG5vbmUgZGVjbGFyZWQuXG4gICAgICAgICAgICBpZiAoJHNjb3BlLmluZGljYXRvcnNQb3NpdGlvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAkc2NvcGUuaW5kaWNhdG9yc1Bvc2l0aW9uID0gJ2JvdHRvbSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL3RoaXMgdmFyaWFibGUgYWxsb3dzIGRpcmVjdGl2ZSB0byBsb2FkIHdpdGhvdXQgaGF2aW5nIHRvIHBhc3MgYW55IHN0ZXAgdmFsaWRhdGlvblxuICAgICAgICAgICAgdmFyIGZpcnN0UnVuID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vY3JlYXRpbmcgaW5zdGFuY2Ugb2Ygd2l6YXJkLCBwYXNzaW5nIHRoaXMgYXMgc2Vjb25kIGFyZ3VtZW50IGFsbG93cyBhY2Nlc3MgdG8gZnVuY3Rpb25zIGF0dGFjaGVkIHRvIHRoaXMgdmlhIFNlcnZpY2VcbiAgICAgICAgICAgIFdpemFyZEhhbmRsZXIuYWRkV2l6YXJkKCRzY29wZS5uYW1lIHx8IFdpemFyZEhhbmRsZXIuZGVmYXVsdE5hbWUsIHRoaXMpO1xuXG4gICAgICAgICAgICAkc2NvcGUuJG9uKCckZGVzdHJveScsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIFdpemFyZEhhbmRsZXIucmVtb3ZlV2l6YXJkKCRzY29wZS5uYW1lIHx8IFdpemFyZEhhbmRsZXIuZGVmYXVsdE5hbWUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vc3RlcHMgYXJyYXkgd2hlcmUgYWxsIHRoZSBzY29wZXMgb2YgZWFjaCBzdGVwIGFyZSBhZGRlZFxuICAgICAgICAgICAgJHNjb3BlLnN0ZXBzID0gW107XG5cbiAgICAgICAgICAgIHZhciBzdGVwSWR4ID0gZnVuY3Rpb24oc3RlcCkge1xuICAgICAgICAgICAgICAgIHZhciBpZHggPSAwO1xuICAgICAgICAgICAgICAgIHZhciByZXMgPSAtMTtcbiAgICAgICAgICAgICAgICBhbmd1bGFyLmZvckVhY2goJHNjb3BlLmdldEVuYWJsZWRTdGVwcygpLCBmdW5jdGlvbihjdXJyU3RlcCkge1xuICAgICAgICAgICAgICAgICAgaWYgKGN1cnJTdGVwID09PSBzdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcyA9IGlkeDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlkeCsrO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB2YXIgc3RlcEJ5VGl0bGUgPSBmdW5jdGlvbih0aXRsZVRvRmluZCkge1xuICAgICAgICAgICAgICB2YXIgZm91bmRTdGVwID0gbnVsbDtcbiAgICAgICAgICAgICAgYW5ndWxhci5mb3JFYWNoKCRzY29wZS5nZXRFbmFibGVkU3RlcHMoKSwgZnVuY3Rpb24oc3RlcCkge1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLnd6VGl0bGUgPT09IHRpdGxlVG9GaW5kKSB7XG4gICAgICAgICAgICAgICAgICBmb3VuZFN0ZXAgPSBzdGVwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiBmb3VuZFN0ZXA7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvL2FjY2VzcyB0byBjb250ZXh0IG9iamVjdCBmb3Igc3RlcCB2YWxpZGF0aW9uXG4gICAgICAgICAgICAkc2NvcGUuY29udGV4dCA9IHt9O1xuXG4gICAgICAgICAgICAvL3dhdGNoaW5nIGNoYW5nZXMgdG8gY3VycmVudFN0ZXBcbiAgICAgICAgICAgICRzY29wZS4kd2F0Y2goJ2N1cnJlbnRTdGVwJywgZnVuY3Rpb24oc3RlcCkge1xuICAgICAgICAgICAgICAgIC8vY2hlY2tpbmcgdG8gbWFrZSBzdXJlIGN1cnJlbnRTdGVwIGlzIHRydXRoeSB2YWx1ZVxuICAgICAgICAgICAgICAgIGlmICghc3RlcCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIC8vc2V0dGluZyBzdGVwVGl0bGUgZXF1YWwgdG8gY3VycmVudCBzdGVwIHRpdGxlIG9yIGRlZmF1bHQgdGl0bGVcbiAgICAgICAgICAgICAgICB2YXIgc3RlcFRpdGxlID0gJHNjb3BlLnNlbGVjdGVkU3RlcC53elRpdGxlO1xuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUuc2VsZWN0ZWRTdGVwICYmIHN0ZXBUaXRsZSAhPT0gJHNjb3BlLmN1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vaW52b2tpbmcgZ29UbygpIHdpdGggc3RlcCB0aXRsZSBhcyBhcmd1bWVudFxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ29UbyhzdGVwQnlUaXRsZSgkc2NvcGUuY3VycmVudFN0ZXApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy93YXRjaGluZyBzdGVwcyBhcnJheSBsZW5ndGggYW5kIGVkaXRNb2RlIHZhbHVlLCBpZiBlZGl0IG1vZHVsZSBpcyB1bmRlZmluZWQgb3IgbnVsbCB0aGUgbm90aGluZyBpcyBkb25lXG4gICAgICAgICAgICAvL2lmIGVkaXQgbW9kZSBpcyB0cnV0aHksIHRoZW4gYWxsIHN0ZXBzIGFyZSBtYXJrZWQgYXMgY29tcGxldGVkXG4gICAgICAgICAgICAkc2NvcGUuJHdhdGNoKCdbZWRpdE1vZGUsIHN0ZXBzLmxlbmd0aF0nLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgZWRpdE1vZGUgPSAkc2NvcGUuZWRpdE1vZGU7XG4gICAgICAgICAgICAgICAgaWYgKGFuZ3VsYXIuaXNVbmRlZmluZWQoZWRpdE1vZGUpIHx8IChlZGl0TW9kZSA9PT0gbnVsbCkpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIC8vU2V0IGNvbXBsZXRlZCBmb3IgYWxsIHN0ZXBzIHRvIHRoZSB2YWx1ZSBvZiBlZGl0TW9kZVxuICAgICAgICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuc3RlcHMsIGZ1bmN0aW9uIChzdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29tcGxldGVkID0gZWRpdE1vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvL0lmIGVkaXRNb2RlIGlzIGZhbHNlLCBzZXQgT05MWSBFTkFCTEVEIHN0ZXBzIHdpdGggaW5kZXggbG93ZXIgdGhlbiBjb21wbGV0ZWRJbmRleCB0byBjb21wbGV0ZWRcbiAgICAgICAgICAgICAgICBpZiAoIWVkaXRNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgdmFyIGNvbXBsZXRlZFN0ZXBzSW5kZXggPSAkc2NvcGUuY3VycmVudFN0ZXBOdW1iZXIoKSAtIDE7XG4gICAgICAgICAgICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZ2V0RW5hYmxlZFN0ZXBzKCksIGZ1bmN0aW9uKHN0ZXAsIHN0ZXBJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RlcEluZGV4IDwgY29tcGxldGVkU3RlcHNJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXAuY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIC8vY2FsbGVkIGVhY2ggdGltZSBzdGVwIGRpcmVjdGl2ZSBpcyBsb2FkZWRcbiAgICAgICAgICAgIHRoaXMuYWRkU3RlcCA9IGZ1bmN0aW9uKHN0ZXApIHtcbiAgICAgICAgICAgICAgICB2YXIgd3pPcmRlciA9IChzdGVwLnd6T3JkZXIgPj0gMCAmJiAhJHNjb3BlLnN0ZXBzW3N0ZXAud3pPcmRlcl0pID8gc3RlcC53ek9yZGVyIDogJHNjb3BlLnN0ZXBzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAvL2FkZGluZyB0aGUgc2NvcGUgb2YgZGlyZWN0aXZlIG9udG8gc3RlcCBhcnJheVxuICAgICAgICAgICAgICAgICRzY29wZS5zdGVwc1t3ek9yZGVyXSA9IHN0ZXA7XG4gICAgICAgICAgICAgICAgLy9pZiB0aGlzIHN0ZXAgaXMgdGhlIG5ldyBmaXJzdCB0aGVuIGdvVG8gaXRcbiAgICAgICAgICAgICAgICBpZiAoJHNjb3BlLmdldEVuYWJsZWRTdGVwcygpWzBdID09PSBzdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vZ29UbyBmaXJzdCBzdGVwXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5nb1RvKCRzY29wZS5nZXRFbmFibGVkU3RlcHMoKVswXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy9jYWxsZWQgZWFjaCB0aW1lIHN0ZXAgZGlyZWN0aXZlIGlzIGRlc3Ryb3llZFxuICAgICAgICAgICAgdGhpcy5yZW1vdmVTdGVwID0gZnVuY3Rpb24gKHN0ZXApIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSAkc2NvcGUuc3RlcHMuaW5kZXhPZihzdGVwKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5zdGVwcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuY29udGV4dCA9ICRzY29wZS5jb250ZXh0O1xuXG4gICAgICAgICAgICAkc2NvcGUuZ2V0U3RlcE51bWJlciA9IGZ1bmN0aW9uKHN0ZXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RlcElkeChzdGVwKSArIDE7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAkc2NvcGUuZ29UbyA9IGZ1bmN0aW9uKHN0ZXApIHtcbiAgICAgICAgICAgICAgICAvL2lmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgdGhlIHdpemFyZCBpcyBsb2FkaW5nIGl0IGJpLXBhc3NlcyBzdGVwIHZhbGlkYXRpb25cbiAgICAgICAgICAgICAgICBpZihmaXJzdFJ1bil7XG4gICAgICAgICAgICAgICAgICAgIC8vZGVzZWxlY3QgYWxsIHN0ZXBzIHNvIHlvdSBjYW4gc2V0IGZyZXNoIGJlbG93XG4gICAgICAgICAgICAgICAgICAgIHVuc2VsZWN0QWxsKCk7XG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFN0ZXAgPSBzdGVwO1xuICAgICAgICAgICAgICAgICAgICAvL21ha2luZyBzdXJlIGN1cnJlbnQgc3RlcCBpcyBub3QgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIGlmICghYW5ndWxhci5pc1VuZGVmaW5lZCgkc2NvcGUuY3VycmVudFN0ZXApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuY3VycmVudFN0ZXAgPSBzdGVwLnd6VGl0bGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy9zZXR0aW5nIHNlbGVjdGVkIHN0ZXAgdG8gYXJndW1lbnQgcGFzc2VkIGludG8gZ29UbygpXG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAvL2VtaXQgZXZlbnQgdXB3YXJkcyB3aXRoIGRhdGEgb24gZ29UbygpIGludm9rdGlvblxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGVtaXQoJ3dpemFyZDpzdGVwQ2hhbmdlZCcsIHtzdGVwOiBzdGVwLCBpbmRleDogc3RlcElkeChzdGVwKX0pO1xuICAgICAgICAgICAgICAgICAgICAvL3NldHRpbmcgdmFyaWFibGUgdG8gZmFsc2Ugc28gYWxsIG90aGVyIHN0ZXAgY2hhbmdlcyBtdXN0IHBhc3MgdmFsaWRhdGlvblxuICAgICAgICAgICAgICAgICAgICBmaXJzdFJ1biA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vY3JlYXRlaW5nIHZhcmlhYmxlcyB0byBjYXB0dXJlIGN1cnJlbnQgc3RhdGUgdGhhdCBnb1RvKCkgd2FzIGludm9rZWQgZnJvbSBhbmQgYWxsb3cgYm9vbGVhbnNcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXNTdGVwO1xuICAgICAgICAgICAgICAgICAgICAvL2dldHRpbmcgZGF0YSBmb3Igc3RlcCB5b3UgYXJlIHRyYW5zaXRpb25pbmcgb3V0IG9mXG4gICAgICAgICAgICAgICAgICAgIGlmKCRzY29wZS5jdXJyZW50U3RlcE51bWJlcigpID4gMCl7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzU3RlcCA9ICRzY29wZS5jdXJyZW50U3RlcE51bWJlcigpIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkc2NvcGUuY3VycmVudFN0ZXBOdW1iZXIoKSA9PT0gMCl7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzU3RlcCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8kbG9nLmxvZygnc3RlcHNbdGhpc1N0ZXBdIERhdGE6ICcsICRzY29wZS5nZXRFbmFibGVkU3RlcHMoKVt0aGlzU3RlcF0uY2FuZXhpdCk7XG4gICAgICAgICAgICAgICAgICAgICRxLmFsbChbY2FuRXhpdFN0ZXAoJHNjb3BlLmdldEVuYWJsZWRTdGVwcygpW3RoaXNTdGVwXSwgc3RlcCksIGNhbkVudGVyU3RlcChzdGVwKV0pLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGF0YVswXSAmJiBkYXRhWzFdKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Rlc2VsZWN0IGFsbCBzdGVwcyBzbyB5b3UgY2FuIHNldCBmcmVzaCBiZWxvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2VsZWN0QWxsKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRsb2cubG9nKCd2YWx1ZSBmb3IgY2FuRXhpdCBhcmd1bWVudDogJywgJHNjb3BlLmN1cnJlbnRTdGVwLmNhbmV4aXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5zZWxlY3RlZFN0ZXAgPSBzdGVwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbWFraW5nIHN1cmUgY3VycmVudCBzdGVwIGlzIG5vdCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighYW5ndWxhci5pc1VuZGVmaW5lZCgkc2NvcGUuY3VycmVudFN0ZXApKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmN1cnJlbnRTdGVwID0gc3RlcC53elRpdGxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NldHRpbmcgc2VsZWN0ZWQgc3RlcCB0byBhcmd1bWVudCBwYXNzZWQgaW50byBnb1RvKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2VtaXQgZXZlbnQgdXB3YXJkcyB3aXRoIGRhdGEgb24gZ29UbygpIGludm9rdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS4kZW1pdCgnd2l6YXJkOnN0ZXBDaGFuZ2VkJywge3N0ZXA6IHN0ZXAsIGluZGV4OiBzdGVwSWR4KHN0ZXApfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kbG9nLmxvZygnY3VycmVudCBzdGVwIG51bWJlcjogJywgJHNjb3BlLmN1cnJlbnRTdGVwTnVtYmVyKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmdW5jdGlvbiBjYW5FbnRlclN0ZXAoc3RlcCkge1xuICAgICAgICAgICAgICAgIHZhciBkZWZlcixcbiAgICAgICAgICAgICAgICAgICAgY2FuRW50ZXI7XG4gICAgICAgICAgICAgICAgLy9JZiBubyB2YWxpZGF0aW9uIGZ1bmN0aW9uIGlzIHByb3ZpZGVkLCBhbGxvdyB0aGUgdXNlciB0byBlbnRlciB0aGUgc3RlcFxuICAgICAgICAgICAgICAgIGlmKHN0ZXAuY2FuZW50ZXIgPT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvL0lmIGNhbmVudGVyIGlzIGEgYm9vbGVhbiB2YWx1ZSBpbnN0ZWFkIG9mIGEgZnVuY3Rpb24sIHJldHVybiB0aGUgdmFsdWVcbiAgICAgICAgICAgICAgICBpZih0eXBlb2Ygc3RlcC5jYW5lbnRlciA9PT0gJ2Jvb2xlYW4nKXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZXAuY2FuZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vQ2hlY2sgdG8gc2VlIGlmIHRoZSBjYW5lbnRlciBmdW5jdGlvbiBpcyBhIHByb21pc2Ugd2hpY2ggbmVlZHMgdG8gYmUgcmV0dXJuZWRcbiAgICAgICAgICAgICAgICBjYW5FbnRlciA9IHN0ZXAuY2FuZW50ZXIoJHNjb3BlLmNvbnRleHQpO1xuICAgICAgICAgICAgICAgIGlmKGFuZ3VsYXIuaXNGdW5jdGlvbihjYW5FbnRlci50aGVuKSl7XG4gICAgICAgICAgICAgICAgICAgIGRlZmVyID0gJHEuZGVmZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgY2FuRW50ZXIudGhlbihmdW5jdGlvbihyZXNwb25zZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlci5yZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZlci5wcm9taXNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYW5FbnRlciA9PT0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGNhbkV4aXRTdGVwKHN0ZXAsIHN0ZXBUbykge1xuICAgICAgICAgICAgICAgIHZhciBkZWZlcixcbiAgICAgICAgICAgICAgICAgICAgY2FuRXhpdDtcbiAgICAgICAgICAgICAgICAvL0V4aXRpbmcgdGhlIHN0ZXAgc2hvdWxkIGJlIGFsbG93ZWQgaWYgbm8gdmFsaWRhdGlvbiBmdW5jdGlvbiB3YXMgcHJvdmlkZWQgb3IgaWYgdGhlIHVzZXIgaXMgbW92aW5nIGJhY2t3YXJkc1xuICAgICAgICAgICAgICAgIGlmKHR5cGVvZihzdGVwLmNhbmV4aXQpID09PSAndW5kZWZpbmVkJyB8fCAkc2NvcGUuZ2V0U3RlcE51bWJlcihzdGVwVG8pIDwgJHNjb3BlLmN1cnJlbnRTdGVwTnVtYmVyKCkpe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy9JZiBjYW5leGl0IGlzIGEgYm9vbGVhbiB2YWx1ZSBpbnN0ZWFkIG9mIGEgZnVuY3Rpb24sIHJldHVybiB0aGUgdmFsdWVcbiAgICAgICAgICAgICAgICBpZih0eXBlb2Ygc3RlcC5jYW5leGl0ID09PSAnYm9vbGVhbicpe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RlcC5jYW5leGl0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvL0NoZWNrIHRvIHNlZSBpZiB0aGUgY2FuZXhpdCBmdW5jdGlvbiBpcyBhIHByb21pc2Ugd2hpY2ggbmVlZHMgdG8gYmUgcmV0dXJuZWRcbiAgICAgICAgICAgICAgICBjYW5FeGl0ID0gc3RlcC5jYW5leGl0KCRzY29wZS5jb250ZXh0KTtcbiAgICAgICAgICAgICAgICBpZihhbmd1bGFyLmlzRnVuY3Rpb24oY2FuRXhpdC50aGVuKSl7XG4gICAgICAgICAgICAgICAgICAgIGRlZmVyID0gJHEuZGVmZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgY2FuRXhpdC50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyLnJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVyLnByb21pc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbkV4aXQgPT09IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAkc2NvcGUuY3VycmVudFN0ZXBOdW1iZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAvL3JldHJlaXZlIGN1cnJlbnQgc3RlcCBudW1iZXJcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RlcElkeCgkc2NvcGUuc2VsZWN0ZWRTdGVwKSArIDE7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAkc2NvcGUuZ2V0RW5hYmxlZFN0ZXBzID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICRzY29wZS5zdGVwcy5maWx0ZXIoZnVuY3Rpb24oc3RlcCl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGVwICYmIHN0ZXAuZGlzYWJsZWQgIT09ICd0cnVlJztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vdW5TZWxlY3QgQWxsIFN0ZXBzXG4gICAgICAgICAgICBmdW5jdGlvbiB1bnNlbGVjdEFsbCgpIHtcbiAgICAgICAgICAgICAgICAvL3RyYXZlcnNlIHN0ZXBzIGFycmF5IGFuZCBzZXQgZWFjaCBcInNlbGVjdGVkXCIgcHJvcGVydHkgdG8gZmFsc2VcbiAgICAgICAgICAgICAgICBhbmd1bGFyLmZvckVhY2goJHNjb3BlLmdldEVuYWJsZWRTdGVwcygpLCBmdW5jdGlvbiAoc3RlcCkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy9zZXQgc2VsZWN0ZWRTdGVwIHZhcmlhYmxlIHRvIG51bGxcbiAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRTdGVwID0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9BTEwgTUVUSE9EUyBBVFRBQ0hFRCBUTyB0aGlzIEFSRSBBQ0NFU1NJQkxFIFZJQSBXaXphcmRIYW5kbGVyLndpemFyZCgpLm1ldGhvZE5hbWUoKVxuXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwVGl0bGUgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIHJldHVybiAkc2NvcGUuc2VsZWN0ZWRTdGVwLnd6VGl0bGU7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwRGVzY3JpcHRpb24gPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIHJldHVybiAkc2NvcGUuc2VsZWN0ZWRTdGVwLmRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgcmV0dXJuICRzY29wZS5zZWxlY3RlZFN0ZXA7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLnRvdGFsU3RlcENvdW50ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICRzY29wZS5nZXRFbmFibGVkU3RlcHMoKS5sZW5ndGg7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvL0FjY2VzcyB0byBlbmFibGVkIHN0ZXBzIGZyb20gb3V0c2lkZVxuICAgICAgICAgICAgdGhpcy5nZXRFbmFibGVkU3RlcHMgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIHJldHVybiAkc2NvcGUuZ2V0RW5hYmxlZFN0ZXBzKCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvL0FjY2VzcyB0byBjdXJyZW50IHN0ZXAgbnVtYmVyIGZyb20gb3V0c2lkZVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcE51bWJlciA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgcmV0dXJuICRzY29wZS5jdXJyZW50U3RlcE51bWJlcigpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vbWV0aG9kIHVzZWQgZm9yIG5leHQgYnV0dG9uIHdpdGhpbiBzdGVwXG4gICAgICAgICAgICB0aGlzLm5leHQgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIHZhciBlbmFibGVkU3RlcHMgPSAkc2NvcGUuZ2V0RW5hYmxlZFN0ZXBzKCk7XG4gICAgICAgICAgICAgICAgLy9zZXR0aW5nIHZhcmlhYmxlIGVxdWFsIHRvIHN0ZXAgIHlvdSB3ZXJlIG9uIHdoZW4gbmV4dCgpIHdhcyBpbnZva2VkXG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gc3RlcElkeCgkc2NvcGUuc2VsZWN0ZWRTdGVwKTtcbiAgICAgICAgICAgICAgICAvL2NoZWNraW5nIHRvIHNlZSBpZiBjYWxsYmFjayBpcyBhIGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgaWYoYW5ndWxhci5pc0Z1bmN0aW9uKGNhbGxiYWNrKSl7XG4gICAgICAgICAgICAgICAgICAgaWYoY2FsbGJhY2soKSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IGVuYWJsZWRTdGVwcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5pc2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pbnZva2luZyBnb1RvKCkgd2l0aCBzdGVwIG51bWJlciBuZXh0IGluIGxpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ29UbyhlbmFibGVkU3RlcHNbaW5kZXggKyAxXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgLy9jb21wbGV0ZWQgcHJvcGVydHkgc2V0IG9uIHNjb3BlIHdoaWNoIGlzIHVzZWQgdG8gYWRkIGNsYXNzL3JlbW92ZSBjbGFzcyBmcm9tIHByb2dyZXNzIGJhclxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuc2VsZWN0ZWRTdGVwLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vY2hlY2tpbmcgdG8gc2VlIGlmIHRoaXMgaXMgdGhlIGxhc3Qgc3RlcC4gIElmIGl0IGlzIG5leHQgYmVoYXZlcyB0aGUgc2FtZSBhcyBmaW5pc2goKVxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gZW5hYmxlZFN0ZXBzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5pc2goKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvL2ludm9raW5nIGdvVG8oKSB3aXRoIHN0ZXAgbnVtYmVyIG5leHQgaW4gbGluZVxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ29UbyhlbmFibGVkU3RlcHNbaW5kZXggKyAxXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvL3VzZWQgdG8gdHJhdmVyc2UgdG8gYW55IHN0ZXAsIHN0ZXAgbnVtYmVyIHBsYWNlZCBhcyBhcmd1bWVudFxuICAgICAgICAgICAgdGhpcy5nb1RvID0gZnVuY3Rpb24oc3RlcCkge1xuICAgICAgICAgICAgICAgIC8vd3JhcHBlZCBpbnNpZGUgJHRpbWVvdXQgc28gbmV3bHkgZW5hYmxlZCBzdGVwcyBhcmUgaW5jbHVkZWQuXG4gICAgICAgICAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbmFibGVkU3RlcHMgPSAkc2NvcGUuZ2V0RW5hYmxlZFN0ZXBzKCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGVwVG87XG4gICAgICAgICAgICAgICAgICAgIC8vY2hlY2tpbmcgdGhhdCBzdGVwIGlzIGEgTnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhbmd1bGFyLmlzTnVtYmVyKHN0ZXApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwVG8gPSBlbmFibGVkU3RlcHNbc3RlcF07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2ZpbmRpbmcgdGhlIHN0ZXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0aXRsZSBlbnRlcmVkIGFzIGdvVG8gYXJndW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBUbyA9IHN0ZXBCeVRpdGxlKHN0ZXApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vZ29pbmcgdG8gc3RlcFxuICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZ29UbyhzdGVwVG8pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy9jYWxscyBmaW5pc2goKSB3aGljaCBjYWxscyBvbkZpbmlzaCgpIHdoaWNoIGlzIGRlY2xhcmVkIG9uIGFuIGF0dHJpYnV0ZSBhbmQgbGlua2VkIHRvIGNvbnRyb2xsZXIgdmlhIHdpemFyZCBkaXJlY3RpdmUuXG4gICAgICAgICAgICB0aGlzLmZpbmlzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICgkc2NvcGUub25GaW5pc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgJHNjb3BlLm9uRmluaXNoKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy5wcmV2aW91cyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIC8vZ2V0dGluZyBpbmRleCBvZiBjdXJyZW50IHN0ZXBcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBzdGVwSWR4KCRzY29wZS5zZWxlY3RlZFN0ZXApO1xuICAgICAgICAgICAgICAgIC8vZW5zdXJpbmcgeW91IGFyZW4ndCB0cnlpbmcgdG8gZ28gYmFjayBmcm9tIHRoZSBmaXJzdCBzdGVwXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGdvIGJhY2suIEl0J3MgYWxyZWFkeSBpbiBzdGVwIDBcIik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy9nbyBiYWNrIG9uZSBzdGVwIGZyb20gY3VycmVudCBzdGVwXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5nb1RvKCRzY29wZS5nZXRFbmFibGVkU3RlcHMoKVtpbmRleCAtIDFdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvL2NhbmNlbCBpcyBhbGlhcyBmb3IgcHJldmlvdXMuXG4gICAgICAgICAgICB0aGlzLmNhbmNlbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIC8vZ2V0dGluZyBpbmRleCBvZiBjdXJyZW50IHN0ZXBcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBzdGVwSWR4KCRzY29wZS5zZWxlY3RlZFN0ZXApO1xuICAgICAgICAgICAgICAgIC8vZW5zdXJpbmcgeW91IGFyZW4ndCB0cnlpbmcgdG8gZ28gYmFjayBmcm9tIHRoZSBmaXJzdCBzdGVwXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGdvIGJhY2suIEl0J3MgYWxyZWFkeSBpbiBzdGVwIDBcIik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy9nbyBiYWNrIG9uZSBzdGVwIGZyb20gY3VycmVudCBzdGVwXG4gICAgICAgICAgICAgICAgICAgICRzY29wZS5nb1RvKCRzY29wZS5nZXRFbmFibGVkU3RlcHMoKVswXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy9yZXNldFxuICAgICAgICAgICAgdGhpcy5yZXNldCA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgLy90cmF2ZXJzZSBzdGVwcyBhcnJheSBhbmQgc2V0IGVhY2ggXCJjb21wbGV0ZWRcIiBwcm9wZXJ0eSB0byBmYWxzZVxuICAgICAgICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaCgkc2NvcGUuZ2V0RW5hYmxlZFN0ZXBzKCksIGZ1bmN0aW9uIChzdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy9nbyB0byBmaXJzdCBzdGVwXG4gICAgICAgICAgICAgICAgdGhpcy5nb1RvKDApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfV1cbiAgICB9O1xufSk7XHJcbmZ1bmN0aW9uIHdpemFyZEJ1dHRvbkRpcmVjdGl2ZShhY3Rpb24pIHtcbiAgICBhbmd1bGFyLm1vZHVsZSgnbWdvLWFuZ3VsYXItd2l6YXJkJylcbiAgICAgICAgLmRpcmVjdGl2ZShhY3Rpb24sIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZXN0cmljdDogJ0EnLFxuICAgICAgICAgICAgICAgIHJlcGxhY2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlcXVpcmU6ICded2l6YXJkJyxcbiAgICAgICAgICAgICAgICBsaW5rOiBmdW5jdGlvbigkc2NvcGUsICRlbGVtZW50LCAkYXR0cnMsIHdpemFyZCkge1xuXG4gICAgICAgICAgICAgICAgICAgICRlbGVtZW50Lm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLiRhcHBseShmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuJGV2YWwoJGF0dHJzW2FjdGlvbl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpemFyZFthY3Rpb24ucmVwbGFjZShcInd6XCIsIFwiXCIpLnRvTG93ZXJDYXNlKCldKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG59XG5cbndpemFyZEJ1dHRvbkRpcmVjdGl2ZSgnd3pOZXh0Jyk7XG53aXphcmRCdXR0b25EaXJlY3RpdmUoJ3d6UHJldmlvdXMnKTtcbndpemFyZEJ1dHRvbkRpcmVjdGl2ZSgnd3pGaW5pc2gnKTtcbndpemFyZEJ1dHRvbkRpcmVjdGl2ZSgnd3pDYW5jZWwnKTtcbndpemFyZEJ1dHRvbkRpcmVjdGl2ZSgnd3pSZXNldCcpO1xuXHJcbmFuZ3VsYXIubW9kdWxlKCdtZ28tYW5ndWxhci13aXphcmQnKS5mYWN0b3J5KCdXaXphcmRIYW5kbGVyJywgZnVuY3Rpb24oKSB7XG4gICB2YXIgc2VydmljZSA9IHt9O1xuICAgXG4gICB2YXIgd2l6YXJkcyA9IHt9O1xuICAgXG4gICBzZXJ2aWNlLmRlZmF1bHROYW1lID0gXCJkZWZhdWx0V2l6YXJkXCI7XG4gICBcbiAgIHNlcnZpY2UuYWRkV2l6YXJkID0gZnVuY3Rpb24obmFtZSwgd2l6YXJkKSB7XG4gICAgICAgd2l6YXJkc1tuYW1lXSA9IHdpemFyZDtcbiAgIH07XG4gICBcbiAgIHNlcnZpY2UucmVtb3ZlV2l6YXJkID0gZnVuY3Rpb24obmFtZSkge1xuICAgICAgIGRlbGV0ZSB3aXphcmRzW25hbWVdO1xuICAgfTtcbiAgIFxuICAgc2VydmljZS53aXphcmQgPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgdmFyIG5hbWVUb1VzZSA9IG5hbWU7XG4gICAgICAgaWYgKCFuYW1lKSB7XG4gICAgICAgICAgIG5hbWVUb1VzZSA9IHNlcnZpY2UuZGVmYXVsdE5hbWU7XG4gICAgICAgfVxuICAgICAgIFxuICAgICAgIHJldHVybiB3aXphcmRzW25hbWVUb1VzZV07XG4gICB9O1xuICAgXG4gICByZXR1cm4gc2VydmljZTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2FuZ3VsYXItd2l6YXJkL2Rpc3QvYW5ndWxhci13aXphcmQuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 7 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _easyFormGenerator = __webpack_require__(8);\n\nvar _easyFormGenerator2 = _interopRequireDefault(_easyFormGenerator);\n\nvar _formly = __webpack_require__(10);\n\nvar _formly2 = _interopRequireDefault(_formly);\n\nvar _translate = __webpack_require__(12);\n\nvar _translate2 = _interopRequireDefault(_translate);\n\nvar _core = __webpack_require__(20);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _stepwayMain = __webpack_require__(21);\n\nvar _stepwayMain2 = _interopRequireDefault(_stepwayMain);\n\nvar _stepwayWizard = __webpack_require__(49);\n\nvar _stepwayWizard2 = _interopRequireDefault(_stepwayWizard);\n\nvar _stepwayEditControlModal = __webpack_require__(59);\n\nvar _stepwayEditControlModal2 = _interopRequireDefault(_stepwayEditControlModal);\n\nvar _modalProxy = __webpack_require__(101);\n\nvar _modalProxy2 = _interopRequireDefault(_modalProxy);\n\nvar _formlyProxy = __webpack_require__(103);\n\nvar _formlyProxy2 = _interopRequireDefault(_formlyProxy);\n\nvar _selectOptionManage = __webpack_require__(105);\n\nvar _selectOptionManage2 = _interopRequireDefault(_selectOptionManage);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar STEP_WAY_MODULE_NAME = 'eda.easyformGen.stepway';\nvar STEP_WAY_MODULES_INJECT = [_core2.default.name, _translate2.default.name, _stepwayMain2.default.name, _stepwayWizard2.default.name, _stepwayEditControlModal2.default.name, _modalProxy2.default.name, _formlyProxy2.default.name, _selectOptionManage2.default.name];\n\nvar mainModule = angular.module(STEP_WAY_MODULE_NAME, STEP_WAY_MODULES_INJECT).value(_easyFormGenerator.EASY_FORM_VERSION_NAME, _easyFormGenerator.EASY_FORM_VERSION_VALUE).config(_formly2.default).config(_easyFormGenerator2.default);\n\nexports.default = mainModule;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvbWFpbi5qcz9mOGJlIl0sIm5hbWVzIjpbIlNURVBfV0FZX01PRFVMRV9OQU1FIiwiU1RFUF9XQVlfTU9EVUxFU19JTkpFQ1QiLCJuYW1lIiwibWFpbk1vZHVsZSIsImFuZ3VsYXIiLCJtb2R1bGUiLCJ2YWx1ZSIsImNvbmZpZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7QUFHQTs7OztBQUNBOzs7O0FBRUE7Ozs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLHVCQUF1Qix5QkFBN0I7QUFDQSxJQUFNQywwQkFBMEIsQ0FDOUIsZUFBMEJDLElBREksRUFFOUIsb0JBQWdCQSxJQUZjLEVBRzlCLHNCQUEwQkEsSUFISSxFQUk5Qix3QkFBNEJBLElBSkUsRUFLOUIsa0NBQTJCQSxJQUxHLEVBTTlCLHFCQUFnQ0EsSUFORixFQU85QixzQkFBaUNBLElBUEgsRUFROUIsNkJBQXlDQSxJQVJYLENBQWhDOztBQVdBLElBQU1DLGFBQWFDLFFBQ0FDLE1BREEsQ0FDT0wsb0JBRFAsRUFDNkJDLHVCQUQ3QixFQUVBSyxLQUZBLHdGQUdBQyxNQUhBLG1CQUlBQSxNQUpBLDZCQUFuQjs7a0JBTWVKLFUiLCJmaWxlIjoiNy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlYXN5Rm9ybVN0ZXBXYXlDb25maWcsIHtcbiAgICBFQVNZX0ZPUk1fVkVSU0lPTl9OQU1FLFxuICAgIEVBU1lfRk9STV9WRVJTSU9OX1ZBTFVFIH0gICAgICAgICAgICAgICAgICAgZnJvbSAnLi9jb25maWcvZWFzeUZvcm1HZW5lcmF0b3IvZWFzeUZvcm1HZW5lcmF0b3IuY29uZmlnJztcbmltcG9ydCBmb3JtbHlDb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vY29uZmlnL2Zvcm1seS9mb3JtbHkuY29uZmlnJztcbmltcG9ydCB0cmFuc2xhdGVDb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vY29uZmlnL3RyYW5zbGF0ZS90cmFuc2xhdGUuY29uZmlnJztcblxuaW1wb3J0IGVhc3lGb3JtU3RlcFdheUNvcmVNb2R1bGUgICAgICAgICAgICAgICAgZnJvbSAnLi9jb3JlL2NvcmUubW9kdWxlJztcblxuaW1wb3J0IGVhc3lGb3JtU3RlcHdheU1haW5Nb2R1bGUgICAgICAgICAgICAgICAgZnJvbSAnLi9jb21wb25lbnRzL21haW4vc3RlcHdheS5tYWluLm1vZHVsZSc7XG5pbXBvcnQgZWFzeUZvcm1TdGVwd2F5V2l6YXJkTW9kdWxlICAgICAgICAgICAgICBmcm9tICcuL2NvbXBvbmVudHMvd2l6YXJkL3N0ZXB3YXkud2l6YXJkLm1vZHVsZSc7XG5pbXBvcnQgZWFzeUZvcm1TdGVwd2F5TW9kYWxNb2R1bGUgICAgICAgICAgICAgICBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWwvc3RlcHdheS5lZGl0Q29udHJvbE1vZGFsLm1vZHVsZSc7XG5pbXBvcnQgZWFzeUZvcm1TdGVwd2F5TW9kYWxQcm94eU1vZHVsZSAgICAgICAgICBmcm9tICcuL3NlcnZpY2VzL21vZGFsUHJveHkvbW9kYWxQcm94eS5zZXJ2aWNlJztcbmltcG9ydCBlYXN5Rm9ybVN0ZXB3YXlGb3JtbHlQcm94eU1vZHVsZSAgICAgICAgIGZyb20gJy4vc2VydmljZXMvZm9ybWx5UHJveHkvZm9ybWx5UHJveHkuc2VydmljZSc7XG5pbXBvcnQgZWFzeUZvcm1TdGVwd2F5U2VsZWN0T3B0aW9uTWFuYWdlTW9kdWxlcyBmcm9tICcuL3NlcnZpY2VzL3NlbGVjdE9wdGlvbk1hbmFnZS9zZWxlY3RPcHRpb25NYW5hZ2Uuc2VydmljZSc7XG5cbmNvbnN0IFNURVBfV0FZX01PRFVMRV9OQU1FID0gJ2VkYS5lYXN5Zm9ybUdlbi5zdGVwd2F5JztcbmNvbnN0IFNURVBfV0FZX01PRFVMRVNfSU5KRUNUID0gW1xuICBlYXN5Rm9ybVN0ZXBXYXlDb3JlTW9kdWxlLm5hbWUsXG4gIHRyYW5zbGF0ZUNvbmZpZy5uYW1lLFxuICBlYXN5Rm9ybVN0ZXB3YXlNYWluTW9kdWxlLm5hbWUsXG4gIGVhc3lGb3JtU3RlcHdheVdpemFyZE1vZHVsZS5uYW1lLFxuICBlYXN5Rm9ybVN0ZXB3YXlNb2RhbE1vZHVsZS5uYW1lLFxuICBlYXN5Rm9ybVN0ZXB3YXlNb2RhbFByb3h5TW9kdWxlLm5hbWUsXG4gIGVhc3lGb3JtU3RlcHdheUZvcm1seVByb3h5TW9kdWxlLm5hbWUsXG4gIGVhc3lGb3JtU3RlcHdheVNlbGVjdE9wdGlvbk1hbmFnZU1vZHVsZXMubmFtZVxuXTtcblxuY29uc3QgbWFpbk1vZHVsZSA9IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAgIC5tb2R1bGUoU1RFUF9XQVlfTU9EVUxFX05BTUUsIFNURVBfV0FZX01PRFVMRVNfSU5KRUNUKVxuICAgICAgICAgICAgICAgICAgLnZhbHVlKEVBU1lfRk9STV9WRVJTSU9OX05BTUUsIEVBU1lfRk9STV9WRVJTSU9OX1ZBTFVFKVxuICAgICAgICAgICAgICAgICAgLmNvbmZpZyhmb3JtbHlDb25maWcpXG4gICAgICAgICAgICAgICAgICAuY29uZmlnKGVhc3lGb3JtU3RlcFdheUNvbmZpZyk7XG5cbmV4cG9ydCBkZWZhdWx0IG1haW5Nb2R1bGU7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvbWFpbi5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 8 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EASY_FORM_VERSION_VALUE = exports.EASY_FORM_VERSION_NAME = undefined;\n\nvar _easyFormConfig = __webpack_require__(9);\n\nvar _easyFormConfig2 = _interopRequireDefault(_easyFormConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EASY_FORM_VERSION_NAME = 'easyFormGenVersion';\nvar EASY_FORM_VERSION_VALUE = _easyFormConfig2.default.stepway.version;\nvar ACTIVE_MODAL_ANIMATION = true;\n\nfunction easyFromConfig(easyFormSteWayConfigProvider) {\n //enable/disable easy form modal animation\n easyFormSteWayConfigProvider.setModalAnimation(ACTIVE_MODAL_ANIMATION);\n}\n\neasyFromConfig.$inject = ['easyFormSteWayConfigProvider'];\n\nexports.default = easyFromConfig;\nexports.EASY_FORM_VERSION_NAME = EASY_FORM_VERSION_NAME;\nexports.EASY_FORM_VERSION_VALUE = EASY_FORM_VERSION_VALUE;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29uZmlnL2Vhc3lGb3JtR2VuZXJhdG9yL2Vhc3lGb3JtR2VuZXJhdG9yLmNvbmZpZy5qcz84MjBlIl0sIm5hbWVzIjpbIkVBU1lfRk9STV9WRVJTSU9OX05BTUUiLCJFQVNZX0ZPUk1fVkVSU0lPTl9WQUxVRSIsInN0ZXB3YXkiLCJ2ZXJzaW9uIiwiQUNUSVZFX01PREFMX0FOSU1BVElPTiIsImVhc3lGcm9tQ29uZmlnIiwiZWFzeUZvcm1TdGVXYXlDb25maWdQcm92aWRlciIsInNldE1vZGFsQW5pbWF0aW9uIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7Ozs7QUFFQSxJQUFNQSx5QkFBMEIsb0JBQWhDO0FBQ0EsSUFBTUMsMEJBQTBCLHlCQUFlQyxPQUFmLENBQXVCQyxPQUF2RDtBQUNBLElBQU1DLHlCQUEwQixJQUFoQzs7QUFFQSxTQUFTQyxjQUFULENBQXdCQyw0QkFBeEIsRUFBcUQ7QUFDbkQ7QUFDQUEsK0JBQTZCQyxpQkFBN0IsQ0FBK0NILHNCQUEvQztBQUNEOztBQUVEQyxlQUFlRyxPQUFmLEdBQXlCLENBQUMsOEJBQUQsQ0FBekI7O2tCQUVlSCxjO1FBQ1BMLHNCLEdBQUFBLHNCO1FBQXdCQyx1QixHQUFBQSx1QiIsImZpbGUiOiI4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVhc3lGb3JtQ29uZmlnICAgZnJvbSAnLi4vLi4vLi4vZWFzeUZvcm1Db25maWcuanNvbic7XG5cbmNvbnN0IEVBU1lfRk9STV9WRVJTSU9OX05BTUUgID0gJ2Vhc3lGb3JtR2VuVmVyc2lvbic7XG5jb25zdCBFQVNZX0ZPUk1fVkVSU0lPTl9WQUxVRSA9IGVhc3lGb3JtQ29uZmlnLnN0ZXB3YXkudmVyc2lvbjtcbmNvbnN0IEFDVElWRV9NT0RBTF9BTklNQVRJT04gID0gdHJ1ZTtcblxuZnVuY3Rpb24gZWFzeUZyb21Db25maWcoZWFzeUZvcm1TdGVXYXlDb25maWdQcm92aWRlcil7XG4gIC8vZW5hYmxlL2Rpc2FibGUgZWFzeSBmb3JtIG1vZGFsIGFuaW1hdGlvblxuICBlYXN5Rm9ybVN0ZVdheUNvbmZpZ1Byb3ZpZGVyLnNldE1vZGFsQW5pbWF0aW9uKEFDVElWRV9NT0RBTF9BTklNQVRJT04pO1xufVxuXG5lYXN5RnJvbUNvbmZpZy4kaW5qZWN0ID0gWydlYXN5Rm9ybVN0ZVdheUNvbmZpZ1Byb3ZpZGVyJ107XG5cbmV4cG9ydCBkZWZhdWx0IGVhc3lGcm9tQ29uZmlnO1xuZXhwb3J0IHtFQVNZX0ZPUk1fVkVSU0lPTl9OQU1FLCBFQVNZX0ZPUk1fVkVSU0lPTl9WQUxVRX07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29uZmlnL2Vhc3lGb3JtR2VuZXJhdG9yL2Vhc3lGb3JtR2VuZXJhdG9yLmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 9 */
+/***/ function(module, exports) {
+
+ eval("module.exports = {\n\t\"stepway\": {\n\t\t\"version\": \"2.1.4\"\n\t},\n\t\"dragdropway\": {\n\t\t\"version\": \"2.1.4\"\n\t},\n\t\"formviewer\": {\n\t\t\"version\": \"2.1.4\"\n\t}\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL2Vhc3lGb3JtQ29uZmlnLmpzb24/MzFjYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG5cdFwic3RlcHdheVwiOiB7XG5cdFx0XCJ2ZXJzaW9uXCI6IFwiMi4xLjRcIlxuXHR9LFxuXHRcImRyYWdkcm9wd2F5XCI6IHtcblx0XHRcInZlcnNpb25cIjogXCIyLjEuNFwiXG5cdH0sXG5cdFwiZm9ybXZpZXdlclwiOiB7XG5cdFx0XCJ2ZXJzaW9uXCI6IFwiMi4xLjRcIlxuXHR9XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9lYXN5Rm9ybUNvbmZpZy5qc29uXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 10 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _formlyConfig = __webpack_require__(11);\n\nfunction formlyConfig(formlyConfigProvider) {\n formlyConfigProvider.setType({\n name: 'richEditor',\n template: _formlyConfig.richTextTemplate.template,\n wrapper: ['bootstrapLabel', 'bootstrapHasError']\n });\n\n formlyConfigProvider.setType({\n name: 'blank',\n template: _formlyConfig.blankTemplate.template\n });\n\n formlyConfigProvider.setType({\n name: 'header',\n template: _formlyConfig.headerTemplate.template\n });\n\n formlyConfigProvider.setType({\n name: 'subTitle',\n template: _formlyConfig.subTitleTemplate.template\n });\n\n formlyConfigProvider.setType({\n name: 'basicSelect',\n template: _formlyConfig.basicSelectTemplate.template,\n wrapper: ['bootstrapLabel', 'bootstrapHasError']\n });\n\n formlyConfigProvider.setType({\n name: 'groupedSelect',\n template: _formlyConfig.groupedSelectTemplate.template,\n wrapper: ['bootstrapLabel', 'bootstrapHasError']\n });\n\n // implement from : http://jsbin.com/koredu/edit?js,output\n // formlyConfigProvider.setType({\n // name: 'upload',\n // extends: 'input',\n // wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n // link: function(scope, el, attrs) {\n // el.on(\"change\", function(changeEvent) {\n // var file = changeEvent.target.files[0];\n // if (file) {\n // // console.log('scope.id', scope.id);\n // var fd = new FormData();\n // // use key on backEnd\n // fd.append('uploadFile', file);\n // scope.$emit('fileToUpload', fd);\n // var fileProp = {};\n // for (var properties in file) {\n // if (!angular.isFunction(file[properties])) {\n // fileProp[properties] = file[properties];\n // }\n // }\n // scope.fc.$setViewValue(fileProp);\n // } else {\n // scope.fc.$setViewValue(undefined);\n // }\n // });\n // el.on(\"focusout\", (focusoutEvent) => {\n // // dont run validation , user still opening pop up file dialog\n // if ($window.document.activeElement.id === scope.id) {\n // // so we set it untouched\n // scope.$apply(function(scope) {\n // scope.fc.$setUntouched();\n // });\n // } else {\n // // element losing focus so we trigger validation\n // scope.fc.$validate();\n // }\n // });\n // },\n // defaultOptions: {\n // templateOptions: {\n // type: 'file',\n // required: true\n // }\n // }\n // });\n\n ////////////////////////////\n // angular UI date picker\n ////////////////////////////\n // thx Kent C. Dodds\n\n var attributes = ['date-disabled', 'custom-class', 'show-weeks', 'starting-day', 'init-date', 'min-mode', 'max-mode', 'format-day', 'format-month', 'format-year', 'format-day-header', 'format-day-title', 'format-month-title', 'year-range', 'shortcut-propagation', 'datepicker-popup', 'show-button-bar', 'current-text', 'clear-text', 'close-text', 'close-on-date-selection', 'datepicker-append-to-body'];\n\n var bindings = ['datepicker-mode', 'min-date', 'max-date'];\n\n var ngModelAttrs = {};\n angular.forEach(attributes, function (attr) {\n ngModelAttrs[camelize(attr)] = { attribute: attr };\n });\n\n angular.forEach(bindings, function (binding) {\n ngModelAttrs[camelize(binding)] = { bound: binding };\n });\n\n formlyConfigProvider.setType({\n name: 'datepicker',\n template: _formlyConfig.datepickerTemplate.template,\n defaultOptions: {\n ngModelAttrs: ngModelAttrs,\n templateOptions: {\n datepickerOptions: {\n format: 'dd/MM/yyyy',\n initDate: new Date(),\n showWeeks: false\n }\n }\n },\n wrapper: ['bootstrapLabel', 'bootstrapHasError'],\n controller: ['$scope', function ($scope) {\n $scope.datepicker = {};\n // make sure the initial value is of type DATE!\n var currentModelVal = $scope.model[$scope.options.key];\n if (typeof currentModelVal == 'string') {\n $scope.model[$scope.options.key] = new Date(currentModelVal);\n }\n $scope.datepicker.opened = false;\n $scope.datepicker.open = function ($event) {\n $event.preventDefault();\n $event.stopPropagation();\n $scope.datepicker.opened = !$scope.datepicker.opened;\n };\n }]\n });\n\n /**\n * wrappers to show validation errors\n * without having to rewrite formly types\n */\n formlyConfigProvider.setWrapper([{\n template: _formlyConfig.validationTemplate.template\n }]);\n\n function camelize(string) {\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n });\n // Ensure 1st char is always lowercase\n return string.replace(/^([A-Z])/, function (match, chr) {\n return chr ? chr.toLowerCase() : '';\n });\n }\n}\n\nformlyConfig.$inject = ['formlyConfigProvider'];\n\nexports.default = formlyConfig;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29uZmlnL2Zvcm1seS9mb3JtbHkuY29uZmlnLmpzP2M1ZDciXSwibmFtZXMiOlsiZm9ybWx5Q29uZmlnIiwiZm9ybWx5Q29uZmlnUHJvdmlkZXIiLCJzZXRUeXBlIiwibmFtZSIsInRlbXBsYXRlIiwid3JhcHBlciIsImF0dHJpYnV0ZXMiLCJiaW5kaW5ncyIsIm5nTW9kZWxBdHRycyIsImFuZ3VsYXIiLCJmb3JFYWNoIiwiYXR0ciIsImNhbWVsaXplIiwiYXR0cmlidXRlIiwiYmluZGluZyIsImJvdW5kIiwiZGVmYXVsdE9wdGlvbnMiLCJ0ZW1wbGF0ZU9wdGlvbnMiLCJkYXRlcGlja2VyT3B0aW9ucyIsImZvcm1hdCIsImluaXREYXRlIiwiRGF0ZSIsInNob3dXZWVrcyIsImNvbnRyb2xsZXIiLCIkc2NvcGUiLCJkYXRlcGlja2VyIiwiY3VycmVudE1vZGVsVmFsIiwibW9kZWwiLCJvcHRpb25zIiwia2V5Iiwib3BlbmVkIiwib3BlbiIsIiRldmVudCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwic2V0V3JhcHBlciIsInN0cmluZyIsInJlcGxhY2UiLCJtYXRjaCIsImNociIsInRvVXBwZXJDYXNlIiwidG9Mb3dlckNhc2UiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFZQSxTQUFTQSxZQUFULENBQXNCQyxvQkFBdEIsRUFBMkM7QUFDekNBLHVCQUFxQkMsT0FBckIsQ0FDRTtBQUNFQyxVQUFNLFlBRFI7QUFFRUMsY0FBVSwrQkFBaUJBLFFBRjdCO0FBR0VDLGFBQVMsQ0FBQyxnQkFBRCxFQUFtQixtQkFBbkI7QUFIWCxHQURGOztBQVFBSix1QkFBcUJDLE9BQXJCLENBQ0U7QUFDRUMsVUFBTSxPQURSO0FBRUVDLGNBQVUsNEJBQWNBO0FBRjFCLEdBREY7O0FBT0FILHVCQUFxQkMsT0FBckIsQ0FDRTtBQUNFQyxVQUFNLFFBRFI7QUFFRUMsY0FBVSw2QkFB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a0I7QUFDekNBLGVBQU9DLGNBQVA7QUFDQUQsZUFBT0UsZUFBUDtBQUNBVixlQUFPQyxVQUFQLENBQWtCSyxNQUFsQixHQUEyQixDQUFDTixPQUFPQyxVQUFQLENBQWtCSyxNQUE5QztBQUNELE9BSkQ7QUFLRCxLQWJXO0FBZGUsR0FBN0I7O0FBOEJBOzs7O0FBSUE3Qix1QkFBcUJrQyxVQUFyQixDQUFnQyxDQUM5QjtBQUNFL0IsY0FBVSxpQ0FBbUJBO0FBRC9CLEdBRDhCLENBQWhDOztBQU1BLFdBQVNRLFFBQVQsQ0FBa0J3QixNQUFsQixFQUEwQjtBQUN4QkEsYUFBU0EsT0FBT0MsT0FBUCxDQUFlLGVBQWYsRUFBZ0MsVUFBU0MsS0FBVCxFQUFnQkMsR0FBaEIsRUFBcUI7QUFDNUQsYUFBT0EsTUFBTUEsSUFBSUMsV0FBSixFQUFOLEdBQTBCLEVBQWpDO0FBQ0QsS0FGUSxDQUFUO0FBR0E7QUFDQSxXQUFPSixPQUFPQyxPQUFQLENBQWUsVUFBZixFQUEyQixVQUFTQyxLQUFULEVBQWdCQyxHQUFoQixFQUFxQjtBQUNyRCxhQUFPQSxNQUFNQSxJQUFJRSxXQUFKLEVBQU4sR0FBMEIsRUFBakM7QUFDRCxLQUZNLENBQVA7QUFHRDtBQUNGOztBQUVEekMsYUFBYTBDLE9BQWIsR0FBdUIsQ0FBQyxzQkFBRCxDQUF2Qjs7a0JBRWUxQyxZIiwiZmlsZSI6IjEwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgcmljaFRleHRUZW1wbGF0ZSxcbiAgYmxhbmtUZW1wbGF0ZSxcbiAgaGVhZGVyVGVtcGxhdGUsXG4gIHN1YlRpdGxlVGVtcGxhdGUsXG4gIGJhc2ljU2VsZWN0VGVtcGxhdGUsXG4gIGdyb3VwZWRTZWxlY3RUZW1wbGF0ZSxcbiAgZGF0ZXBpY2tlclRlbXBsYXRlLFxuICB2YWxpZGF0aW9uVGVtcGxhdGVcbn0gZnJvbSAnLi9mb3JtbHkuY29uZmlnLnRlbXBsYXRlcyc7XG5cblxuZnVuY3Rpb24gZm9ybWx5Q29uZmlnKGZvcm1seUNvbmZpZ1Byb3ZpZGVyKXtcbiAgZm9ybWx5Q29uZmlnUHJvdmlkZXIuc2V0VHlwZShcbiAgICB7XG4gICAgICBuYW1lOiAncmljaEVkaXRvcicsXG4gICAgICB0ZW1wbGF0ZTogcmljaFRleHRUZW1wbGF0ZS50ZW1wbGF0ZSxcbiAgICAgIHdyYXBwZXI6IFsnYm9vdHN0cmFwTGFiZWwnLCAnYm9vdHN0cmFwSGFzRXJyb3InXVxuICAgIH1cbiAgKTtcblxuICBmb3JtbHlDb25maWdQcm92aWRlci5zZXRUeXBlKFxuICAgIHtcbiAgICAgIG5hbWU6ICdibGFuaycsXG4gICAgICB0ZW1wbGF0ZTogYmxhbmtUZW1wbGF0ZS50ZW1wbGF0ZVxuICAgIH1cbiAgKTtcblxuICBmb3JtbHlDb25maWdQcm92aWRlci5zZXRUeXBlKFxuICAgIHtcbiAgICAgIG5hbWU6ICdoZWFkZXInLFxuICAgICAgdGVtcGxhdGU6IGhlYWRlclRlbXBsYXRlLnRlbXBsYXRlXG4gICAgfVxuICApO1xuXG4gIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoXG4gICAge1xuICAgICAgbmFtZTogJ3N1YlRpdGxlJyxcbiAgICAgIHRlbXBsYXRlOiBzdWJUaXRsZVRlbXBsYXRlLnRlbXBsYXRlXG4gICAgfVxuICApO1xuXG4gIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoXG4gICAge1xuICAgICAgbmFtZTogJ2Jhc2ljU2VsZWN0JyxcbiAgICAgIHRlbXBsYXRlOiBiYXNpY1NlbGVjdFRlbXBsYXRlLnRlbXBsYXRlLFxuICAgICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddXG4gICAgfVxuICApO1xuXG4gIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoXG4gICAge1xuICAgICAgbmFtZTogJ2dyb3VwZWRTZWxlY3QnLFxuICAgICAgdGVtcGxhdGU6IGdyb3VwZWRTZWxlY3RUZW1wbGF0ZS50ZW1wbGF0ZSxcbiAgICAgIHdyYXBwZXI6IFsnYm9vdHN0cmFwTGFiZWwnLCAnYm9vdHN0cmFwSGFzRXJyb3InXVxuICAgIH1cbiAgKTtcblxuICAvLyBpbXBsZW1lbnQgZnJvbSA6IGh0dHA6Ly9qc2Jpbi5jb20va29yZWR1L2VkaXQ/anMsb3V0cHV0XG4gIC8vIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuICAvLyAgICAgbmFtZTogJ3VwbG9hZCcsXG4gIC8vICAgICBleHRlbmRzOiAnaW5wdXQnLFxuICAvLyAgICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddLFxuICAvLyAgICAgbGluazogZnVuY3Rpb24oc2NvcGUsIGVsLCBhdHRycykge1xuICAvLyAgICAgICBlbC5vbihcImNoYW5nZVwiLCBmdW5jdGlvbihjaGFuZ2VFdmVudCkge1xuICAvLyAgICAgICAgIHZhciBmaWxlID0gY2hhbmdlRXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuICAvLyAgICAgICAgIGlmIChmaWxlKSB7XG4gIC8vICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnc2NvcGUuaWQnLCBzY29wZS5pZCk7XG4gIC8vICAgICAgICAgICB2YXIgZmQgPSBuZXcgRm9ybURhdGEoKTtcbiAgLy8gICAgICAgICAgIC8vIHVzZSBrZXkgb24gYmFja0VuZFxuICAvLyAgICAgICAgICAgZmQuYXBwZW5kKCd1cGxvYWRGaWxlJywgZmlsZSk7XG4gIC8vICAgICAgICAgICBzY29wZS4kZW1pdCgnZmlsZVRvVXBsb2FkJywgZmQpO1xuICAvLyAgICAgICAgICAgdmFyIGZpbGVQcm9wID0ge307XG4gIC8vICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0aWVzIGluIGZpbGUpIHtcbiAgLy8gICAgICAgICAgICAgaWYgKCFhbmd1bGFyLmlzRnVuY3Rpb24oZmlsZVtwcm9wZXJ0aWVzXSkpIHtcbiAgLy8gICAgICAgICAgICAgICBmaWxlUHJvcFtwcm9wZXJ0aWVzXSA9IGZpbGVbcHJvcGVydGllc107XG4gIC8vICAgICAgICAgICAgIH1cbiAgLy8gICAgICAgICAgIH1cbiAgLy8gICAgICAgICAgIHNjb3BlLmZjLiRzZXRWaWV3VmFsdWUoZmlsZVByb3ApO1xuICAvLyAgICAgICAgIH0gZWxzZSB7XG4gIC8vICAgICAgICAgICBzY29wZS5mYy4kc2V0Vmlld1ZhbHVlKHVuZGVmaW5lZCk7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9KTtcbiAgLy8gICAgICAgZWwub24oXCJmb2N1c291dFwiLCAoZm9jdXNvdXRFdmVudCkgPT4ge1xuICAvLyAgICAgICAgIC8vIGRvbnQgcnVuIHZhbGlkYXRpb24gLCB1c2VyIHN0aWxsIG9wZW5pbmcgcG9wIHVwIGZpbGUgZGlhbG9nXG4gIC8vICAgICAgICAgaWYgKCR3aW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5pZCA9PT0gc2NvcGUuaWQpIHtcbiAgLy8gICAgICAgICAgIC8vIHNvIHdlIHNldCBpdCB1bnRvdWNoZWRcbiAgLy8gICAgICAgICAgIHNjb3BlLiRhcHBseShmdW5jdGlvbihzY29wZSkge1xuICAvLyAgICAgICAgICAgICBzY29wZS5mYy4kc2V0VW50b3VjaGVkKCk7XG4gIC8vICAgICAgICAgICB9KTtcbiAgLy8gICAgICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAgICAgLy8gZWxlbWVudCBsb3NpbmcgZm9jdXMgc28gd2UgdHJpZ2dlciB2YWxpZGF0aW9uXG4gIC8vICAgICAgICAgICBzY29wZS5mYy4kdmFsaWRhdGUoKTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH0pO1xuICAvLyAgICAgfSxcbiAgLy8gICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gIC8vICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAvLyAgICAgICAgIHR5cGU6ICdmaWxlJyxcbiAgLy8gICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfSk7XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBhbmd1bGFyIFVJIGRhdGUgcGlja2VyXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gdGh4IEtlbnQgQy4gRG9kZHNcblxuICBjb25zdCBhdHRyaWJ1dGVzID0gW1xuICAgICAnZGF0ZS1kaXNhYmxlZCcsXG4gICAgICdjdXN0b20tY2xhc3MnLFxuICAgICAnc2hvdy13ZWVrcycsXG4gICAgICdzdGFydGluZy1kYXknLFxuICAgICAnaW5pdC1kYXRlJyxcbiAgICAgJ21pbi1tb2RlJyxcbiAgICAgJ21heC1tb2RlJyxcbiAgICAgJ2Zvcm1hdC1kYXknLFxuICAgICAnZm9ybWF0LW1vbnRoJyxcbiAgICAgJ2Zvcm1hdC15ZWFyJyxcbiAgICAgJ2Zvcm1hdC1kYXktaGVhZGVyJyxcbiAgICAgJ2Zvcm1hdC1kYXktdGl0bGUnLFxuICAgICAnZm9ybWF0LW1vbnRoLXRpdGxlJyxcbiAgICAgJ3llYXItcmFuZ2UnLFxuICAgICAnc2hvcnRjdXQtcHJvcGFnYXRpb24nLFxuICAgICAnZGF0ZXBpY2tlci1wb3B1cCcsXG4gICAgICdzaG93LWJ1dHRvbi1iYXInLFxuICAgICAnY3VycmVudC10ZXh0JyxcbiAgICAgJ2NsZWFyLXRleHQnLFxuICAgICAnY2xvc2UtdGV4dCcsXG4gICAgICdjbG9zZS1vbi1kYXRlLXNlbGVjdGlvbicsXG4gICAgICdkYXRlcGlja2VyLWFwcGVuZC10by1ib2R5J1xuICAgXTtcblxuICBjb25zdCBiaW5kaW5ncyA9IFtcbiAgICAnZGF0ZXBpY2tlci1tb2RlJyxcbiAgICAnbWluLWRhdGUnLFxuICAgICdtYXgtZGF0ZSdcbiAgXTtcblxuICBjb25zdCBuZ01vZGVsQXR0cnMgPSB7fTtcbiAgYW5ndWxhci5mb3JFYWNoKGF0dHJpYnV0ZXMsIChhdHRyKSA9PiB7XG4gICAgbmdNb2RlbEF0dHJzW2NhbWVsaXplKGF0dHIpXSA9IHthdHRyaWJ1dGU6IGF0dHJ9O1xuICB9KTtcblxuICBhbmd1bGFyLmZvckVhY2goYmluZGluZ3MsIChiaW5kaW5nKSA9PiB7XG4gICAgbmdNb2RlbEF0dHJzW2NhbWVsaXplKGJpbmRpbmcpXSA9IHtib3VuZDogYmluZGluZ307XG4gIH0pO1xuXG4gIGZvcm1seUNvbmZpZ1Byb3ZpZGVyLnNldFR5cGUoe1xuICAgIG5hbWU6ICdkYXRlcGlja2VyJyxcbiAgICB0ZW1wbGF0ZTogZGF0ZXBpY2tlclRlbXBsYXRlLnRlbXBsYXRlLFxuICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICBuZ01vZGVsQXR0cnM6IG5nTW9kZWxBdHRycyxcbiAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICBkYXRlcGlja2VyT3B0aW9uczoge1xuICAgICAgICAgIGZvcm1hdDogJ2RkL01NL3l5eXknLFxuICAgICAgICAgIGluaXREYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIHNob3dXZWVrczogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgd3JhcHBlcjogWydib290c3RyYXBMYWJlbCcsICdib290c3RyYXBIYXNFcnJvciddLFxuICAgIGNvbnRyb2xsZXI6IFsnJHNjb3BlJywgKCRzY29wZSkgPT4ge1xuICAgICAgJHNjb3BlLmRhdGVwaWNrZXIgPSB7fTtcbiAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgaW5pdGlhbCB2YWx1ZSBpcyBvZiB0eXBlIERBVEUhXG4gICAgICB2YXIgY3VycmVudE1vZGVsVmFsID0gJHNjb3BlLm1vZGVsWyRzY29wZS5vcHRpb25zLmtleV07XG4gICAgICBpZiAodHlwZW9mIChjdXJyZW50TW9kZWxWYWwpID09ICdzdHJpbmcnKXtcbiAgICAgICAgJHNjb3BlLm1vZGVsWyRzY29wZS5vcHRpb25zLmtleV0gPSBuZXcgRGF0ZShjdXJyZW50TW9kZWxWYWwpO1xuICAgICAgfVxuICAgICAgJHNjb3BlLmRhdGVwaWNrZXIub3BlbmVkID0gZmFsc2U7XG4gICAgICAkc2NvcGUuZGF0ZXBpY2tlci5vcGVuID0gZnVuY3Rpb24gKCRldmVudCkge1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAkc2NvcGUuZGF0ZXBpY2tlci5vcGVuZWQgPSAhJHNjb3BlLmRhdGVwaWNrZXIub3BlbmVkO1xuICAgICAgfTtcbiAgICB9XVxuICB9KTtcblxuICAvKipcbiAgICAqIHdyYXBwZXJzIHRvIHNob3cgdmFsaWRhdGlvbiBlcnJvcnNcbiAgICAqIHdpdGhvdXQgaGF2aW5nIHRvIHJld3JpdGUgZm9ybWx5IHR5cGVzXG4gICAgKi9cbiAgZm9ybWx5Q29uZmlnUHJvdmlkZXIuc2V0V3JhcHBlcihbXG4gICAge1xuICAgICAgdGVtcGxhdGU6IHZhbGlkYXRpb25UZW1wbGF0ZS50ZW1wbGF0ZVxuICAgIH1cbiAgXSk7XG5cbiAgZnVuY3Rpb24gY2FtZWxpemUoc3RyaW5nKSB7XG4gICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoL1tcXC1fXFxzXSsoLik/L2csIGZ1bmN0aW9uKG1hdGNoLCBjaHIpIHtcbiAgICAgIHJldHVybiBjaHIgPyBjaHIudG9VcHBlckNhc2UoKSA6ICcnO1xuICAgIH0pO1xuICAgIC8vIEVuc3VyZSAxc3QgY2hhciBpcyBhbHdheXMgbG93ZXJjYXNlXG4gICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9eKFtBLVpdKS8sIGZ1bmN0aW9uKG1hdGNoLCBjaHIpIHtcbiAgICAgIHJldHVybiBjaHIgPyBjaHIudG9Mb3dlckNhc2UoKSA6ICcnO1xuICAgIH0pO1xuICB9XG59XG5cbmZvcm1seUNvbmZpZy4kaW5qZWN0ID0gWydmb3JtbHlDb25maWdQcm92aWRlciddO1xuXG5leHBvcnQgZGVmYXVsdCBmb3JtbHlDb25maWc7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29uZmlnL2Zvcm1seS9mb3JtbHkuY29uZmlnLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 11 */
+/***/ function(module, exports) {
+
+ eval("\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n// tips: use some plugin like atom-typescript to highlight html templates inside backticks\nvar richTextTemplate = exports.richTextTemplate = {\n template: \"\\n \\n \\n \"\n};\n\n/* eslint-disable quotes */\nvar blankTemplate = exports.blankTemplate = {\n template: \"
\"\n};\n/* eslint-enable quotes */\n\nvar headerTemplate = exports.headerTemplate = {\n template: \"\\n \\n
\\n
\\n {{ options.templateOptions.placeholder }}\\n \\n \\n \\n
\\n \"\n};\n\nvar subTitleTemplate = exports.subTitleTemplate = {\n template: \"\\n \\n
\\n
\\n {{ options.templateOptions.placeholder }}\\n \\n \\n \\n
\\n \"\n};\n\nvar basicSelectTemplate = exports.basicSelectTemplate = {\n template: \"\\n \\n \\n \\n {{option.name}}\\n \\n \\n \\n \"\n};\n\nvar groupedSelectTemplate = exports.groupedSelectTemplate = {\n template: \"\\n \\n \\n \\n \\n \\n {{option.name}}\\n \\n \\n \\n \\n \\n \"\n};\n\nvar datepickerTemplate = exports.datepickerTemplate = {\n template: \"\\n \\n \\n \\n \\n \\n \\n \\n
\\n \"\n};\n\nvar validationTemplate = exports.validationTemplate = {\n template: \"\\n \\n \"\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29uZmlnL2Zvcm1seS9mb3JtbHkuY29uZmlnLnRlbXBsYXRlcy5qcz9iYmVhIl0sIm5hbWVzIjpbInJpY2hUZXh0VGVtcGxhdGUiLCJ0ZW1wbGF0ZSIsImJsYW5rVGVtcGxhdGUiLCJoZWFkZXJUZW1wbGF0ZSIsInN1YlRpdGxlVGVtcGxhdGUiLCJiYXNpY1NlbGVjdFRlbXBsYXRlIiwiZ3JvdXBlZFNlbGVjdFRlbXBsYXRlIiwiZGF0ZXBpY2tlclRlbXBsYXRlIiwidmFsaWRhdGlvblRlbXBsYXRlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ08sSUFBTUEsOENBQW1CO0FBQzlCQztBQUQ4QixDQUF6Qjs7QUFVUDtBQUNPLElBQU1DLHdDQUFnQjtBQUMzQkQ7QUFEMkIsQ0FBdEI7QUFHUDs7QUFFTyxJQUFNRSwwQ0FBaUI7QUFDNUJGO0FBRDRCLENBQXZCOztBQWFBLElBQU1HLDhDQUFtQjtBQUM5Qkg7QUFEOEIsQ0FBekI7O0FBYUEsSUFBTUksb0RBQXNCO0FBQ2pDSjtBQURpQyxDQUE1Qjs7QUFrQkEsSUFBTUssd0RBQXdCO0FBQ25DTDtBQURtQyxDQUE5Qjs7QUFzQkEsSUFBTU0sa0RBQXFCO0FBQ2hDTjtBQURnQyxDQUEzQjs7QUEwQkEsSUFBTU8sa0RBQXFCO0FBQ2hDUDtBQURnQyxDQUEzQiIsImZpbGUiOiIxMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRpcHM6IHVzZSBzb21lIHBsdWdpbiBsaWtlIGF0b20tdHlwZXNjcmlwdCB0byBoaWdobGlnaHQgaHRtbCB0ZW1wbGF0ZXMgaW5zaWRlIGJhY2t0aWNrc1xuZXhwb3J0IGNvbnN0IHJpY2hUZXh0VGVtcGxhdGUgPSB7XG4gIHRlbXBsYXRlOiBgXG4gIDx0ZXh0LWFuZ3VsYXJcbiAgICBuYW1lPVwie3tpZH19XCJcbiAgICBjbGFzcz1cInJpY2hUZXh0QW5ndWxhclwiXG4gICAgbmctbW9kZWw9XCJtb2RlbFtvcHRpb25zLmtleSB8fCBpbmRleF1cIj5cbiAgPC90ZXh0LWFuZ3VsYXI+XG4gIGBcbn07XG5cbi8qIGVzbGludC1kaXNhYmxlIHF1b3RlcyAqL1xuZXhwb3J0IGNvbnN0IGJsYW5rVGVtcGxhdGUgPSB7XG4gIHRlbXBsYXRlOiBgPGRpdj48L2Rpdj5gXG59O1xuLyogZXNsaW50LWVuYWJsZSBxdW90ZXMgKi9cblxuZXhwb3J0IGNvbnN0IGhlYWRlclRlbXBsYXRlID0ge1xuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICB7eyBvcHRpb25zLnRlbXBsYXRlT3B0aW9ucy5wbGFjZWhvbGRlciB9fVxuICAgICAgICA8L2gyPlxuICAgICAgICA8aHIvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgYFxufTtcblxuZXhwb3J0IGNvbnN0IHN1YlRpdGxlVGVtcGxhdGUgPSB7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIHt7IG9wdGlvbnMudGVtcGxhdGVPcHRpb25zLnBsYWNlaG9sZGVyIH19XG4gICAgICAgIDwvaDQ+XG4gICAgICAgIDxoci8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBgXG59O1xuXG5leHBvcnQgY29uc3QgYmFzaWNTZWxlY3RUZW1wbGF0ZSA9IHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8b2xcbiAgICAgIGNsYXNzPVwibnlhLWJzLXNlbGVjdCBjb2wtc20tMTIgY29sLXhzLTEyIGNvbC1tZC0xMiBjb2wtbGcxMlwiXG4gICAgICBuZy1tb2RlbD1cIm1vZGVsW29wdGlvbnMua2V5IHx8IGluZGV4XVwiXG4gICAgICBpZD1cInt7aWR9fVwiXG4gICAgICBkaXNhYmxlZD1cIm9wdGlvbnMudGVtcGxhdGVPcHRpb25zLm9wdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICA8bGlcbiAgICAgICAgY2xhc3M9XCJueWEtYnMtb3B0aW9uXCJcbiAgICAgICAgbnlhLWJzLW9wdGlvbj1cIm9wdGlvbiBpbiBvcHRpb25zLnRlbXBsYXRlT3B0aW9ucy5vcHRpb25zXCI+XG4gICAgICAgIDxhPlxuICAgICAgICAgIHt7b3B0aW9uLm5hbWV9fVxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIDwvb2w+XG4gIGBcbn07XG5cbmV4cG9ydCBjb25zdCBncm91cGVkU2VsZWN0VGVtcGxhdGUgPSB7XG4gIHRlbXBsYXRlOiBgXG4gICAgPG9sXG4gICAgICBjbGFzcz1cIm55YS1icy1zZWxlY3QgY29sLXNtLTEyIGNvbC14cy0xMiBjb2wtbWQtMTIgY29sLWxnMTJcIlxuICAgICAgbmctbW9kZWw9XCJtb2RlbFtvcHRpb25zLmtleSB8fCBpbmRleF1cIlxuICAgICAgZGF0YS1saXZlLXNlYXJjaD1cInRydWVcIlxuICAgICAgZGlzYWJsZWQ9XCJvcHRpb25zLnRlbXBsYXRlT3B0aW9ucy5vcHRpb25zLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgPGxpIG55YS1icy1vcHRpb249XCJvcHRpb24gaW4gIG9wdGlvbnMudGVtcGxhdGVPcHRpb25zLm9wdGlvbnMgZ3JvdXAgYnkgb3B0aW9uLmdyb3VwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24taGVhZGVyXCI+XG4gICAgICAgICAge3skZ3JvdXB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxhPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAge3tvcHRpb24ubmFtZX19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1vayBjaGVjay1tYXJrXCI+PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIDwvb2w+XG4gICAgYFxufTtcblxuZXhwb3J0IGNvbnN0IGRhdGVwaWNrZXJUZW1wbGF0ZSA9IHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8cCBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgIG5nLWNsaWNrPVwiZGF0ZXBpY2tlci5vcGVuKCRldmVudClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImdseXBoaWNvbiBnbHlwaGljb24tY2FsZW5kYXJcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zcGFuPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgaWQ9XCJ7ezo6aWR9fVwiXG4gICAgICAgIG5hbWU9XCJ7ezo6aWR9fVwiXG4gICAgICAgIG5nLW1vZGVsPVwibW9kZWxbb3B0aW9ucy5rZXldXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBuZy1jbGljaz1cImRhdGVwaWNrZXIub3BlbigkZXZlbnQpXCJcbiAgICAgICAgdWliLWRhdGVwaWNrZXItcG9wdXA9XCJ7e3RvLmRhdGVwaWNrZXJPcHRpb25zLmZvcm1hdH19XCJcbiAgICAgICAgaXMtb3Blbj1cImRhdGVwaWNrZXIub3BlbmVkXCJcbiAgICAgICAgZGF0ZXBpY2tlci1vcHRpb25zPVwidG8uZGF0ZXBpY2tlck9wdGlvbnNcIlxuICAgICAgLz5cbiAgICA8L3A+XG4gIGBcbn07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0aW9uVGVtcGxhdGUgPSB7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmb3JtbHktdGVtcGxhdGUtd3JhcHBlciBmb3JtLWdyb3VwXCJcbiAgICAgIG5nLWNsYXNzPVwie1xcJ2hhcy1lcnJvclxcJzogb3B0aW9ucy52YWxpZGF0aW9uLmVycm9yRXhpc3RzQW5kU2hvdWxkQmVWaXNpYmxlfVwiPlxuICAgICAgPGZvcm1seS10cmFuc2NsdWRlPjwvZm9ybWx5LXRyYW5zY2x1ZGU+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidmFsaWRhdGlvblwiXG4gICAgICAgIG5nLWlmPVwib3B0aW9ucy52YWxpZGF0aW9uLmVycm9yRXhpc3RzQW5kU2hvdWxkQmVWaXNpYmxlXCJcbiAgICAgICAgbmctbWVzc2FnZXM9XCJvcHRpb25zLmZvcm1Db250cm9sLiRlcnJvclwiPlxuICAgICAgICA8ZGl2IG5nLW1lc3NhZ2VzLWluY2x1ZGU9XCJ2YWxpZGF0aW9uLmh0bWxcIj48L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIG5nLW1lc3NhZ2U9XCJ7ezo6bmFtZX19XCJcbiAgICAgICAgICBuZy1yZXBlYXQ9XCIobmFtZSwgbWVzc2FnZSkgaW4gOjpvcHRpb25zLnZhbGlkYXRpb24ubWVzc2FnZXNcIj5cbiAgICAgICAgICB7e21lc3NhZ2Uob3B0aW9ucy5mb3JtQ29udHJvbC4kdmlld1ZhbHVlLCBvcHRpb25zLmZvcm1Db250cm9sLiRtb2RlbFZhbHVlLCB0aGlzKX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGBcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29uZmlnL2Zvcm1seS9mb3JtbHkuY29uZmlnLnRlbXBsYXRlcy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 12 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TRANSLATE_MODULE = exports.TRANSLATE_CONFIG = undefined;\n\nvar _localEn = __webpack_require__(13);\n\nvar _localEn2 = _interopRequireDefault(_localEn);\n\nvar _localFr = __webpack_require__(14);\n\nvar _localFr2 = _interopRequireDefault(_localFr);\n\nvar _localEs = __webpack_require__(15);\n\nvar _localEs2 = _interopRequireDefault(_localEs);\n\nvar _localDe = __webpack_require__(16);\n\nvar _localDe2 = _interopRequireDefault(_localDe);\n\nvar _localTr = __webpack_require__(17);\n\nvar _localTr2 = _interopRequireDefault(_localTr);\n\nvar _localJp = __webpack_require__(18);\n\nvar _localJp2 = _interopRequireDefault(_localJp);\n\nvar _localPtBr = __webpack_require__(19);\n\nvar _localPtBr2 = _interopRequireDefault(_localPtBr);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TRANSLATE_CONFIG = exports.TRANSLATE_CONFIG = 'easyFormTranslateConfig';\n\nfunction translateConfig($translateProvider) {\n $translateProvider.translations('en', _localEn2.default);\n $translateProvider.translations('fr', _localFr2.default);\n $translateProvider.translations('es', _localEs2.default);\n $translateProvider.translations('de', _localDe2.default);\n $translateProvider.translations('tr', _localTr2.default);\n $translateProvider.translations('jp', _localJp2.default);\n $translateProvider.translations('pt-br', _localPtBr2.default);\n}\ntranslateConfig.$inject = ['$translateProvider'];\n\nvar TRANSLATE_MODULE = exports.TRANSLATE_MODULE = 'eda.easyFormGenerator.translate';\nexports.default = angular.module(TRANSLATE_MODULE, []).config(translateConfig);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29uZmlnL3RyYW5zbGF0ZS90cmFuc2xhdGUuY29uZmlnLmpzPzhjYTYiXSwibmFtZXMiOlsiVFJBTlNMQVRFX0NPTkZJRyIsInRyYW5zbGF0ZUNvbmZpZyIsIiR0cmFuc2xhdGVQcm92aWRlciIsInRyYW5zbGF0aW9ucyIsIiRpbmplY3QiLCJUUkFOU0xBVEVfTU9EVUxFIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbmZpZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7QUFFTyxJQUFNQSw4Q0FBbUIseUJBQXpCOztBQUVQLFNBQVNDLGVBQVQsQ0FBeUJDLGtCQUF6QixFQUE2QztBQUMzQ0EscUJBQW1CQyxZQUFuQixDQUFnQyxJQUFoQztBQUNBRCxxQkFBbUJDLFlBQW5CLENBQWdDLElBQWhDO0FBQ0FELHFCQUFtQkMsWUFBbkIsQ0FBZ0MsSUFBaEM7QUFDQUQscUJBQW1CQyxZQUFuQixDQUFnQyxJQUFoQztBQUNBRCxxQkFBbUJDLFlBQW5CLENBQWdDLElBQWhDO0FBQ0FELHFCQUFtQkMsWUFBbkIsQ0FBZ0MsSUFBaEM7QUFDQUQscUJBQW1CQyxZQUFuQixDQUFnQyxPQUFoQztBQUNEO0FBQ0RGLGdCQUFnQkcsT0FBaEIsR0FBMEIsQ0FBQyxvQkFBRCxDQUExQjs7QUFHTyxJQUFNQyw4Q0FBbUIsaUNBQXpCO2tCQUNRQyxRQUNFQyxNQURGLENBQ1NGLGdCQURULEVBQzJCLEVBRDNCLEVBRUVHLE1BRkYsQ0FFU1AsZUFGVCxDIiwiZmlsZSI6IjEyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvY2FsRW4gICBmcm9tICcuLi8uLi9pMThuL2xvY2FsLWVuLmpzb24nO1xuaW1wb3J0IGxvY2FsRnIgICBmcm9tICcuLi8uLi9pMThuL2xvY2FsLWZyLmpzb24nO1xuaW1wb3J0IGxvY2FsRXMgICBmcm9tICcuLi8uLi9pMThuL2xvY2FsLWVzLmpzb24nO1xuaW1wb3J0IGxvY2FsRGUgICBmcm9tICcuLi8uLi9pMThuL2xvY2FsLWRlLmpzb24nO1xuaW1wb3J0IGxvY2FsVHIgICBmcm9tICcuLi8uLi9pMThuL2xvY2FsLXRyLmpzb24nO1xuaW1wb3J0IGxvY2FsSnAgICBmcm9tICcuLi8uLi9pMThuL2xvY2FsLWpwLmpzb24nO1xuaW1wb3J0IGxvY2FsUHRCciBmcm9tICcuLi8uLi9pMThuL2xvY2FsLXB0LWJyLmpzb24nO1xuXG5leHBvcnQgY29uc3QgVFJBTlNMQVRFX0NPTkZJRyA9ICdlYXN5Rm9ybVRyYW5zbGF0ZUNvbmZpZyc7XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZUNvbmZpZygkdHJhbnNsYXRlUHJvdmlkZXIpIHtcbiAgJHRyYW5zbGF0ZVByb3ZpZGVyLnRyYW5zbGF0aW9ucygnZW4nLCBsb2NhbEVuKTtcbiAgJHRyYW5zbGF0ZVByb3ZpZGVyLnRyYW5zbGF0aW9ucygnZnInLCBsb2NhbEZyKTtcbiAgJHRyYW5zbGF0ZVByb3ZpZGVyLnRyYW5zbGF0aW9ucygnZXMnLCBsb2NhbEVzKTtcbiAgJHRyYW5zbGF0ZVByb3ZpZGVyLnRyYW5zbGF0aW9ucygnZGUnLCBsb2NhbERlKTtcbiAgJHRyYW5zbGF0ZVByb3ZpZGVyLnRyYW5zbGF0aW9ucygndHInLCBsb2NhbFRyKTtcbiAgJHRyYW5zbGF0ZVByb3ZpZGVyLnRyYW5zbGF0aW9ucygnanAnLCBsb2NhbEpwKTtcbiAgJHRyYW5zbGF0ZVByb3ZpZGVyLnRyYW5zbGF0aW9ucygncHQtYnInLCBsb2NhbFB0QnIpO1xufVxudHJhbnNsYXRlQ29uZmlnLiRpbmplY3QgPSBbJyR0cmFuc2xhdGVQcm92aWRlciddO1xuXG5cbmV4cG9ydCBjb25zdCBUUkFOU0xBVEVfTU9EVUxFID0gJ2VkYS5lYXN5Rm9ybUdlbmVyYXRvci50cmFuc2xhdGUnO1xuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuICAgICAgICAgICAgICAgIC5tb2R1bGUoVFJBTlNMQVRFX01PRFVMRSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbmZpZyh0cmFuc2xhdGVDb25maWcpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbmZpZy90cmFuc2xhdGUvdHJhbnNsYXRlLmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 13 */
+/***/ function(module, exports) {
+
+ eval("module.exports = {\n\t\"SAY_HI\": \"Hello\",\n\t\"EDIT_TAB\": \"Edit/Create\",\n\t\"PREVIEW_TAB\": \"Preview\",\n\t\"WIZARD_LINES\": \"Lines\",\n\t\"WIZARD_LAYOUT\": \"Layout\",\n\t\"WIZARD_CONTROLS\": \"Controls\",\n\t\"WIZARD_SAVE\": \"Save\",\n\t\"PAGER_PREVIOUS\": \"Previous\",\n\t\"PAGER_NEXT\": \"Next\",\n\t\"COMMAND_PANEL\": \"Command\",\n\t\"VISUAL_PANEL\": \"Visual\",\n\t\"ADD_NEW_LINE\": \"Add a new line\",\n\t\"ADD_NEW_STEP\": \"Add a new step\",\n\t\"STEP_TITLE\": \"Step Title\",\n\t\"SELECTED_LINE\": \"Selected line\",\n\t\"NUMBER_OF_COLUMN\": \"Number of columns\",\n\t\"APPLY_CTRL2COL\": \"Apply controls to columns\",\n\t\"CLIC_TAP_2_OPEN\": \"Click/Tap on column to open control selection\",\n\t\"SELECT_2_APPLY_COL\": \"Select desired control and valid to apply it to column\",\n\t\"CUSTOM_SUBMIT_BTN\": \"Customize Submit button Text\",\n\t\"CUSTOM_CANCEL_BTN\": \"Customize Cancel button Text\",\n\t\"NAME_THIS_FORM\": \"Name this Form\",\n\t\"SAVE_THIS_FORM\": \"Save this Form\",\n\t\"FINAL_STEP\": \"Final Step: Form Preview\",\n\t\"DATA_MODEL\": \"DATA MODEL\",\n\t\"FIELDS_MODEL\": \"FIELDS MODEL (Ready to save to database one)\",\n\t\"SELECT_A_CTRL\": \"Select a control\",\n\t\"SELECT_CTRL_IN_LIST\": \"Select a control in the list below\",\n\t\"COL_WILL_BE_BLANK\": \"Column will be blank\",\n\t\"EDIT_PROPERTIES\": \"Edit properties\",\n\t\"HEADER_TEXT\": \"Header text\",\n\t\"ADD_EDIT_HEADER_HERE\": \"Add/Edit header text here\",\n\t\"SUBTITLE_TEXT\": \"Subtitle text\",\n\t\"ADD_EDIT_SUBTIL_HERE\": \"Add/Edit subtitle text here\",\n\t\"LABEL_TEXT\": \"Label text\",\n\t\"ADD_EDIT_LABEL_HERE\": \"Add/Edit control label here\",\n\t\"PLACEHOLDER\": \"Placeholder\",\n\t\"ADD_EDIT_PLACEHOLD\": \"Add/Edit placeholder text here\",\n\t\"REQUIRED\": \"Required\",\n\t\"DESCRIPTION\": \"Description\",\n\t\"ADDEDIT_DESCRIPTION\": \"Add/Edit description here\",\n\t\"DEFAULTVALUE\": \"Default Value\",\n\t\"ADD_EDIT_DEFAULTVALUE_PLACEHOLD\": \"Add/Edit default value here\",\n\t\"DATE_FORMAT\": \"Date format\",\n\t\"ADD_NEW_RADIO\": \"Add new radio\",\n\t\"ADD_RADIO_PLACEHOLD\": \"Add new radio\",\n\t\"EDIT_REMOVE_RADIO\": \"Edit/Remove radio\",\n\t\"NO_RADIO_ADD_NEW\": \"No radio: Add new radio values\",\n\t\"SEARCH_4_OPTION\": \"Search for option\",\n\t\"ADD\": \"Add\",\n\t\"ORDER\": \"Order\",\n\t\"OPTION\": \"Option\",\n\t\"GROUP\": \"Group\",\n\t\"ADD_NEW_OPTIONS\": \"Add new options\",\n\t\"ADD_A_NEW_OPTION\": \"Add new option\",\n\t\"EDIT_REMOVE_OPTIONS\": \"Edit/Remove options\",\n\t\"NO_OPTION_ADD_NEW\": \"No option: Add new options\",\n\t\"ADD_NEW_GROUPS\": \"Add new groups\",\n\t\"ADD_A_NEW_GROUP\": \"Add new group\",\n\t\"EDIT_GROUPS_OPTIONS\": \"Edit/Remove options/groups\",\n\t\"NO_GROUP_ADD_NEW\": \"Add new groups\",\n\t\"OK\": \"OK\",\n\t\"CANCEL\": \"Cancel\"\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvaTE4bi9sb2NhbC1lbi5qc29uPzAxOTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIxMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge1xuXHRcIlNBWV9ISVwiOiBcIkhlbGxvXCIsXG5cdFwiRURJVF9UQUJcIjogXCJFZGl0L0NyZWF0ZVwiLFxuXHRcIlBSRVZJRVdfVEFCXCI6IFwiUHJldmlld1wiLFxuXHRcIldJWkFSRF9MSU5FU1wiOiBcIkxpbmVzXCIsXG5cdFwiV0laQVJEX0xBWU9VVFwiOiBcIkxheW91dFwiLFxuXHRcIldJWkFSRF9DT05UUk9MU1wiOiBcIkNvbnRyb2xzXCIsXG5cdFwiV0laQVJEX1NBVkVcIjogXCJTYXZlXCIsXG5cdFwiUEFHRVJfUFJFVklPVVNcIjogXCJQcmV2aW91c1wiLFxuXHRcIlBBR0VSX05FWFRcIjogXCJOZXh0XCIsXG5cdFwiQ09NTUFORF9QQU5FTFwiOiBcIkNvbW1hbmRcIixcblx0XCJWSVNVQUxfUEFORUxcIjogXCJWaXN1YWxcIixcblx0XCJBRERfTkVXX0xJTkVcIjogXCJBZGQgYSBuZXcgbGluZVwiLFxuXHRcIkFERF9ORVdfU1RFUFwiOiBcIkFkZCBhIG5ldyBzdGVwXCIsXG5cdFwiU1RFUF9USVRMRVwiOiBcIlN0ZXAgVGl0bGVcIixcblx0XCJTRUxFQ1RFRF9MSU5FXCI6IFwiU2VsZWN0ZWQgbGluZVwiLFxuXHRcIk5VTUJFUl9PRl9DT0xVTU5cIjogXCJOdW1iZXIgb2YgY29sdW1uc1wiLFxuXHRcIkFQUExZX0NUUkwyQ09MXCI6IFwiQXBwbHkgY29udHJvbHMgdG8gY29sdW1uc1wiLFxuXHRcIkNMSUNfVEFQXzJfT1BFTlwiOiBcIkNsaWNrL1RhcCBvbiBjb2x1bW4gdG8gb3BlbiBjb250cm9sIHNlbGVjdGlvblwiLFxuXHRcIlNFTEVDVF8yX0FQUExZX0NPTFwiOiBcIlNlbGVjdCBkZXNpcmVkIGNvbnRyb2wgYW5kIHZhbGlkIHRvIGFwcGx5IGl0IHRvIGNvbHVtblwiLFxuXHRcIkNVU1RPTV9TVUJNSVRfQlROXCI6IFwiQ3VzdG9taXplIFN1Ym1pdCBidXR0b24gVGV4dFwiLFxuXHRcIkNVU1RPTV9DQU5DRUxfQlROXCI6IFwiQ3VzdG9taXplIENhbmNlbCBidXR0b24gVGV4dFwiLFxuXHRcIk5BTUVfVEhJU19GT1JNXCI6IFwiTmFtZSB0aGlzIEZvcm1cIixcblx0XCJTQVZFX1RISVNfRk9STVwiOiBcIlNhdmUgdGhpcyBGb3JtXCIsXG5cdFwiRklOQUxfU1RFUFwiOiBcIkZpbmFsIFN0ZXA6IEZvcm0gUHJldmlld1wiLFxuXHRcIkRBVEFfTU9ERUxcIjogXCJEQVRBIE1PREVMXCIsXG5cdFwiRklFTERTX01PREVMXCI6IFwiRklFTERTIE1PREVMIChSZWFkeSB0byBzYXZlIHRvIGRhdGFiYXNlIG9uZSlcIixcblx0XCJTRUxFQ1RfQV9DVFJMXCI6IFwiU2VsZWN0IGEgY29udHJvbFwiLFxuXHRcIlNFTEVDVF9DVFJMX0lOX0xJU1RcIjogXCJTZWxlY3QgYSBjb250cm9sIGluIHRoZSBsaXN0IGJlbG93XCIsXG5cdFwiQ09MX1dJTExfQkVfQkxBTktcIjogXCJDb2x1bW4gd2lsbCBiZSBibGFua1wiLFxuXHRcIkVESVRfUFJPUEVSVElFU1wiOiBcIkVkaXQgcHJvcGVydGllc1wiLFxuXHRcIkhFQURFUl9URVhUXCI6IFwiSGVhZGVyIHRleHRcIixcblx0XCJBRERfRURJVF9IRUFERVJfSEVSRVwiOiBcIkFkZC9FZGl0IGhlYWRlciB0ZXh0IGhlcmVcIixcblx0XCJTVUJUSVRMRV9URVhUXCI6IFwiU3VidGl0bGUgdGV4dFwiLFxuXHRcIkFERF9FRElUX1NVQlRJTF9IRVJFXCI6IFwiQWRkL0VkaXQgc3VidGl0bGUgdGV4dCBoZXJlXCIsXG5cdFwiTEFCRUxfVEVYVFwiOiBcIkxhYmVsIHRleHRcIixcblx0XCJBRERfRURJVF9MQUJFTF9IRVJFXCI6IFwiQWRkL0VkaXQgY29udHJvbCBsYWJlbCBoZXJlXCIsXG5cdFwiUExBQ0VIT0xERVJcIjogXCJQbGFjZWhvbGRlclwiLFxuXHRcIkFERF9FRElUX1BMQUNFSE9MRFwiOiBcIkFkZC9FZGl0IHBsYWNlaG9sZGVyIHRleHQgaGVyZVwiLFxuXHRcIlJFUVVJUkVEXCI6IFwiUmVxdWlyZWRcIixcblx0XCJERVNDUklQVElPTlwiOiBcIkRlc2NyaXB0aW9uXCIsXG5cdFwiQURERURJVF9ERVNDUklQVElPTlwiOiBcIkFkZC9FZGl0IGRlc2NyaXB0aW9uIGhlcmVcIixcblx0XCJERUZBVUxUVkFMVUVcIjogXCJEZWZhdWx0IFZhbHVlXCIsXG5cdFwiQUREX0VESVRfREVGQVVMVFZBTFVFX1BMQUNFSE9MRFwiOiBcIkFkZC9FZGl0IGRlZmF1bHQgdmFsdWUgaGVyZVwiLFxuXHRcIkRBVEVfRk9STUFUXCI6IFwiRGF0ZSBmb3JtYXRcIixcblx0XCJBRERfTkVXX1JBRElPXCI6IFwiQWRkIG5ldyByYWRpb1wiLFxuXHRcIkFERF9SQURJT19QTEFDRUhPTERcIjogXCJBZGQgbmV3IHJhZGlvXCIsXG5cdFwiRURJVF9SRU1PVkVfUkFESU9cIjogXCJFZGl0L1JlbW92ZSByYWRpb1wiLFxuXHRcIk5PX1JBRElPX0FERF9ORVdcIjogXCJObyByYWRpbzogQWRkIG5ldyByYWRpbyB2YWx1ZXNcIixcblx0XCJTRUFSQ0hfNF9PUFRJT05cIjogXCJTZWFyY2ggZm9yIG9wdGlvblwiLFxuXHRcIkFERFwiOiBcIkFkZFwiLFxuXHRcIk9SREVSXCI6IFwiT3JkZXJcIixcblx0XCJPUFRJT05cIjogXCJPcHRpb25cIixcblx0XCJHUk9VUFwiOiBcIkdyb3VwXCIsXG5cdFwiQUREX05FV19PUFRJT05TXCI6IFwiQWRkIG5ldyBvcHRpb25zXCIsXG5cdFwiQUREX0FfTkVXX09QVElPTlwiOiBcIkFkZCBuZXcgb3B0aW9uXCIsXG5cdFwiRURJVF9SRU1PVkVfT1BUSU9OU1wiOiBcIkVkaXQvUmVtb3ZlIG9wdGlvbnNcIixcblx0XCJOT19PUFRJT05fQUREX05FV1wiOiBcIk5vIG9wdGlvbjogQWRkIG5ldyBvcHRpb25zXCIsXG5cdFwiQUREX05FV19HUk9VUFNcIjogXCJBZGQgbmV3IGdyb3Vwc1wiLFxuXHRcIkFERF9BX05FV19HUk9VUFwiOiBcIkFkZCBuZXcgZ3JvdXBcIixcblx0XCJFRElUX0dST1VQU19PUFRJT05TXCI6IFwiRWRpdC9SZW1vdmUgb3B0aW9ucy9ncm91cHNcIixcblx0XCJOT19HUk9VUF9BRERfTkVXXCI6IFwiQWRkIG5ldyBncm91cHNcIixcblx0XCJPS1wiOiBcIk9LXCIsXG5cdFwiQ0FOQ0VMXCI6IFwiQ2FuY2VsXCJcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvaTE4bi9sb2NhbC1lbi5qc29uXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 14 */
+/***/ function(module, exports) {
+
+ eval("module.exports = {\n\t\"SAY_HI\": \"Bonjour\",\n\t\"EDIT_TAB\": \"Edition / Creation\",\n\t\"PREVIEW_TAB\": \"Aperçu\",\n\t\"WIZARD_LINES\": \"lignes\",\n\t\"WIZARD_LAYOUT\": \"disposition\",\n\t\"WIZARD_CONTROLS\": \"contrôles\",\n\t\"WIZARD_SAVE\": \"sauvegarder\",\n\t\"PAGER_PREVIOUS\": \"Précédent\",\n\t\"PAGER_NEXT\": \"Suivant\",\n\t\"COMMAND_PANEL\": \"Commandes\",\n\t\"VISUAL_PANEL\": \"Visuel\",\n\t\"ADD_NEW_LINE\": \"Ajouter une nouvelle ligne\",\n\t\"SELECTED_LINE\": \"Ligne sélectionnée\",\n\t\"NUMBER_OF_COLUMN\": \"nombre de colonnes\",\n\t\"APPLY_CTRL2COL\": \"Appliquer les contrôles aux colonnes\",\n\t\"CLIC_TAP_2_OPEN\": \"Cliquer sur une colonne pour ouvrir le menu d'édition\",\n\t\"SELECT_2_APPLY_COL\": \"Sélectionner un contrôle puis valider pour l'appliquer à la colonne\",\n\t\"CUSTOM_SUBMIT_BTN\": \"Personnaliser le texte du bouton envoie\",\n\t\"CUSTOM_CANCEL_BTN\": \"Personnaliser le texte du bouton annuler\",\n\t\"NAME_THIS_FORM\": \"Nommer le formulaire\",\n\t\"SAVE_THIS_FORM\": \"sauvegarder le formulaire\",\n\t\"FINAL_STEP\": \"Dernière étape : aperçu du formulaire\",\n\t\"DATA_MODEL\": \"MODELE DE DONNEES\",\n\t\"FIELDS_MODEL\": \"MODELE DES CHAMPS (modèle compatible base de données)\",\n\t\"SELECT_A_CTRL\": \"Sélectionner un contrôle\",\n\t\"SELECT_CTRL_IN_LIST\": \"Sélectionner un contrôle dans la liste ci-dessous\",\n\t\"COL_WILL_BE_BLANK\": \"La colonne sera vide\",\n\t\"EDIT_PROPERTIES\": \"Editer les propriétés\",\n\t\"HEADER_TEXT\": \"Texte du titre principal\",\n\t\"ADD_EDIT_HEADER_HERE\": \"Editer le textes du titre principal\",\n\t\"SUBTITLE_TEXT\": \"Texte du sous-titre\",\n\t\"ADD_EDIT_SUBTIL_HERE\": \"Editer le textes du sous-titre\",\n\t\"LABEL_TEXT\": \"Texte de l'étiquette\",\n\t\"ADD_EDIT_LABEL_HERE\": \"Editer le texte de l'étiquette\",\n\t\"PLACEHOLDER\": \"placeholder\",\n\t\"ADD_EDIT_PLACEHOLD\": \"Editer le placeholder\",\n\t\"REQUIRED\": \"Requis\",\n\t\"DESCRIPTION\": \"Description\",\n\t\"ADDEDIT_DESCRIPTION\": \"Ajouter / editer la description\",\n\t\"DEFAULTVALUE\": \"Valeur par défaut\",\n\t\"ADD_EDIT_DEFAULTVALUE_PLACEHOLD\": \"Ajouter / modifier la valeur par défaut ici\",\n\t\"DATE_FORMAT\": \"Format de la date\",\n\t\"ADD_NEW_RADIO\": \"Ajouter un nouveau choix à cocher\",\n\t\"ADD_RADIO_PLACEHOLD\": \"Ajouter un nouveau choix à cocher\",\n\t\"EDIT_REMOVE_RADIO\": \"Editer / supprimer un choix à cocher\",\n\t\"NO_RADIO_ADD_NEW\": \"aucun choix à cocher : en ajouter un\",\n\t\"SEARCH_4_OPTION\": \"rechercher une option\",\n\t\"ADD\": \"ajouter\",\n\t\"ORDER\": \"ordre\",\n\t\"OPTION\": \"option\",\n\t\"GROUP\": \"groupe\",\n\t\"ADD_NEW_OPTIONS\": \"Ajouter de nouvelles options\",\n\t\"ADD_A_NEW_OPTION\": \"ajoutre une option\",\n\t\"EDIT_REMOVE_OPTIONS\": \"Editer / supprimer des options\",\n\t\"NO_OPTION_ADD_NEW\": \"aucune option : en ajouter\",\n\t\"ADD_NEW_GROUPS\": \"Ajouter de nouveaux groupes\",\n\t\"ADD_A_NEW_GROUP\": \"Ajouter un nouveau groupe\",\n\t\"EDIT_GROUPS_OPTIONS\": \"Editer / supprimer les groupes et options\",\n\t\"NO_GROUP_ADD_NEW\": \"ajouter de nouveaux groupes\",\n\t\"OK\": \"Valider\",\n\t\"CANCEL\": \"Annuler\"\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvaTE4bi9sb2NhbC1mci5qc29uPzk2YzEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE0LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG5cdFwiU0FZX0hJXCI6IFwiQm9uam91clwiLFxuXHRcIkVESVRfVEFCXCI6IFwiRWRpdGlvbiAvIENyZWF0aW9uXCIsXG5cdFwiUFJFVklFV19UQUJcIjogXCJBcGVyw6d1XCIsXG5cdFwiV0laQVJEX0xJTkVTXCI6IFwibGlnbmVzXCIsXG5cdFwiV0laQVJEX0xBWU9VVFwiOiBcImRpc3Bvc2l0aW9uXCIsXG5cdFwiV0laQVJEX0NPTlRST0xTXCI6IFwiY29udHLDtGxlc1wiLFxuXHRcIldJWkFSRF9TQVZFXCI6IFwic2F1dmVnYXJkZXJcIixcblx0XCJQQUdFUl9QUkVWSU9VU1wiOiBcIlByw6ljw6lkZW50XCIsXG5cdFwiUEFHRVJfTkVYVFwiOiBcIlN1aXZhbnRcIixcblx0XCJDT01NQU5EX1BBTkVMXCI6IFwiQ29tbWFuZGVzXCIsXG5cdFwiVklTVUFMX1BBTkVMXCI6IFwiVmlzdWVsXCIsXG5cdFwiQUREX05FV19MSU5FXCI6IFwiQWpvdXRlciB1bmUgbm91dmVsbGUgbGlnbmVcIixcblx0XCJTRUxFQ1RFRF9MSU5FXCI6IFwiTGlnbmUgc8OpbGVjdGlvbm7DqWVcIixcblx0XCJOVU1CRVJfT0ZfQ09MVU1OXCI6IFwibm9tYnJlIGRlIGNvbG9ubmVzXCIsXG5cdFwiQVBQTFlfQ1RSTDJDT0xcIjogXCJBcHBsaXF1ZXIgbGVzIGNvbnRyw7RsZXMgYXV4IGNvbG9ubmVzXCIsXG5cdFwiQ0xJQ19UQVBfMl9PUEVOXCI6IFwiQ2xpcXVlciBzdXIgdW5lIGNvbG9ubmUgcG91ciBvdXZyaXIgbGUgbWVudSBkJ8OpZGl0aW9uXCIsXG5cdFwiU0VMRUNUXzJfQVBQTFlfQ09MXCI6IFwiU8OpbGVjdGlvbm5lciB1biBjb250csO0bGUgcHVpcyB2YWxpZGVyIHBvdXIgbCdhcHBsaXF1ZXIgw6AgbGEgY29sb25uZVwiLFxuXHRcIkNVU1RPTV9TVUJNSVRfQlROXCI6IFwiUGVyc29ubmFsaXNlciBsZSB0ZXh0ZSBkdSBib3V0b24gZW52b2llXCIsXG5cdFwiQ1VTVE9NX0NBTkNFTF9CVE5cIjogXCJQZXJzb25uYWxpc2VyIGxlIHRleHRlIGR1IGJvdXRvbiBhbm51bGVyXCIsXG5cdFwiTkFNRV9USElTX0ZPUk1cIjogXCJOb21tZXIgbGUgZm9ybXVsYWlyZVwiLFxuXHRcIlNBVkVfVEhJU19GT1JNXCI6IFwic2F1dmVnYXJkZXIgbGUgZm9ybXVsYWlyZVwiLFxuXHRcIkZJTkFMX1NURVBcIjogXCJEZXJuacOocmUgw6l0YXBlIDogYXBlcsOndSBkdSBmb3JtdWxhaXJlXCIsXG5cdFwiREFUQV9NT0RFTFwiOiBcIk1PREVMRSBERSBET05ORUVTXCIsXG5cdFwiRklFTERTX01PREVMXCI6IFwiTU9ERUxFIERFUyBDSEFNUFMgKG1vZMOobGUgY29tcGF0aWJsZSBiYXNlIGRlIGRvbm7DqWVzKVwiLFxuXHRcIlNFTEVDVF9BX0NUUkxcIjogXCJTw6lsZWN0aW9ubmVyIHVuIGNvbnRyw7RsZVwiLFxuXHRcIlNFTEVDVF9DVFJMX0lOX0xJU1RcIjogXCJTw6lsZWN0aW9ubmVyIHVuIGNvbnRyw7RsZSBkYW5zIGxhIGxpc3RlIGNpLWRlc3NvdXNcIixcblx0XCJDT0xfV0lMTF9CRV9CTEFOS1wiOiBcIkxhIGNvbG9ubmUgc2VyYSB2aWRlXCIsXG5cdFwiRURJVF9QUk9QRVJUSUVTXCI6IFwiRWRpdGVyIGxlcyBwcm9wcmnDqXTDqXNcIixcblx0XCJIRUFERVJfVEVYVFwiOiBcIlRleHRlIGR1IHRpdHJlIHByaW5jaXBhbFwiLFxuXHRcIkFERF9FRElUX0hFQURFUl9IRVJFXCI6IFwiRWRpdGVyIGxlIHRleHRlcyBkdSB0aXRyZSBwcmluY2lwYWxcIixcblx0XCJTVUJUSVRMRV9URVhUXCI6IFwiVGV4dGUgZHUgc291cy10aXRyZVwiLFxuXHRcIkFERF9FRElUX1NVQlRJTF9IRVJFXCI6IFwiRWRpdGVyIGxlIHRleHRlcyBkdSBzb3VzLXRpdHJlXCIsXG5cdFwiTEFCRUxfVEVYVFwiOiBcIlRleHRlIGRlIGwnw6l0aXF1ZXR0ZVwiLFxuXHRcIkFERF9FRElUX0xBQkVMX0hFUkVcIjogXCJFZGl0ZXIgbGUgdGV4dGUgZGUgbCfDqXRpcXVldHRlXCIsXG5cdFwiUExBQ0VIT0xERVJcIjogXCJwbGFjZWhvbGRlclwiLFxuXHRcIkFERF9FRElUX1BMQUNFSE9MRFwiOiBcIkVkaXRlciBsZSBwbGFjZWhvbGRlclwiLFxuXHRcIlJFUVVJUkVEXCI6IFwiUmVxdWlzXCIsXG5cdFwiREVTQ1JJUFRJT05cIjogXCJEZXNjcmlwdGlvblwiLFxuXHRcIkFEREVESVRfREVTQ1JJUFRJT05cIjogXCJBam91dGVyIC8gZWRpdGVyIGxhIGRlc2NyaXB0aW9uXCIsXG5cdFwiREVGQVVMVFZBTFVFXCI6IFwiVmFsZXVyIHBhciBkw6lmYXV0XCIsXG5cdFwiQUREX0VESVRfREVGQVVMVFZBTFVFX1BMQUNFSE9MRFwiOiBcIkFqb3V0ZXIgLyBtb2RpZmllciBsYSB2YWxldXIgcGFyIGTDqWZhdXQgaWNpXCIsXG5cdFwiREFURV9GT1JNQVRcIjogXCJGb3JtYXQgZGUgbGEgZGF0ZVwiLFxuXHRcIkFERF9ORVdfUkFESU9cIjogXCJBam91dGVyIHVuIG5vdXZlYXUgY2hvaXggw6AgY29jaGVyXCIsXG5cdFwiQUREX1JBRElPX1BMQUNFSE9MRFwiOiBcIkFqb3V0ZXIgdW4gbm91dmVhdSBjaG9peCDDoCBjb2NoZXJcIixcblx0XCJFRElUX1JFTU9WRV9SQURJT1wiOiBcIkVkaXRlciAvIHN1cHByaW1lciB1biBjaG9peCDDoCBjb2NoZXJcIixcblx0XCJOT19SQURJT19BRERfTkVXXCI6IFwiYXVjdW4gY2hvaXggw6AgY29jaGVyIDogZW4gYWpvdXRlciB1blwiLFxuXHRcIlNFQVJDSF80X09QVElPTlwiOiBcInJlY2hlcmNoZXIgdW5lIG9wdGlvblwiLFxuXHRcIkFERFwiOiBcImFqb3V0ZXJcIixcblx0XCJPUkRFUlwiOiBcIm9yZHJlXCIsXG5cdFwiT1BUSU9OXCI6IFwib3B0aW9uXCIsXG5cdFwiR1JPVVBcIjogXCJncm91cGVcIixcblx0XCJBRERfTkVXX09QVElPTlNcIjogXCJBam91dGVyIGRlIG5vdXZlbGxlcyBvcHRpb25zXCIsXG5cdFwiQUREX0FfTkVXX09QVElPTlwiOiBcImFqb3V0cmUgdW5lIG9wdGlvblwiLFxuXHRcIkVESVRfUkVNT1ZFX09QVElPTlNcIjogXCJFZGl0ZXIgLyBzdXBwcmltZXIgZGVzIG9wdGlvbnNcIixcblx0XCJOT19PUFRJT05fQUREX05FV1wiOiBcImF1Y3VuZSBvcHRpb24gOiBlbiBham91dGVyXCIsXG5cdFwiQUREX05FV19HUk9VUFNcIjogXCJBam91dGVyIGRlIG5vdXZlYXV4IGdyb3VwZXNcIixcblx0XCJBRERfQV9ORVdfR1JPVVBcIjogXCJBam91dGVyIHVuIG5vdXZlYXUgZ3JvdXBlXCIsXG5cdFwiRURJVF9HUk9VUFNfT1BUSU9OU1wiOiBcIkVkaXRlciAvIHN1cHByaW1lciBsZXMgZ3JvdXBlcyBldCBvcHRpb25zXCIsXG5cdFwiTk9fR1JPVVBfQUREX05FV1wiOiBcImFqb3V0ZXIgZGUgbm91dmVhdXggZ3JvdXBlc1wiLFxuXHRcIk9LXCI6IFwiVmFsaWRlclwiLFxuXHRcIkNBTkNFTFwiOiBcIkFubnVsZXJcIlxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9pMThuL2xvY2FsLWZyLmpzb25cbi8vIG1vZHVsZSBpZCA9IDE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 15 */
+/***/ function(module, exports) {
+
+ eval("module.exports = {\n\t\"SAY_HI\": \"Hola\",\n\t\"EDIT_TAB\": \"Editar / Crear\",\n\t\"PREVIEW_TAB\": \"Previsualizar\",\n\t\"WIZARD_LINES\": \"lineas\",\n\t\"WIZARD_LAYOUT\": \"diseño\",\n\t\"WIZARD_CONTROLS\": \"controles\",\n\t\"WIZARD_SAVE\": \"guardar\",\n\t\"PAGER_PREVIOUS\": \"Anterior\",\n\t\"PAGER_NEXT\": \"Siguiente\",\n\t\"COMMAND_PANEL\": \"Comando\",\n\t\"VISUAL_PANEL\": \"Visual\",\n\t\"ADD_NEW_LINE\": \"Agregar nueva linea\",\n\t\"SELECTED_LINE\": \"Linea seleccionada\",\n\t\"NUMBER_OF_COLUMN\": \"numero de columnas\",\n\t\"APPLY_CTRL2COL\": \"Aplicar controles a columnas\",\n\t\"CLIC_TAP_2_OPEN\": \"Click / Toque en la columna para seleccionar controles\",\n\t\"SELECT_2_APPLY_COL\": \"Selecciona el control deseado para aplicarlo a la columna\",\n\t\"CUSTOM_SUBMIT_BTN\": \"Personalizar texto de boton Enviar\",\n\t\"CUSTOM_CANCEL_BTN\": \"Personalizar texto de boton Cancelar\",\n\t\"NAME_THIS_FORM\": \"Nombrar formulario\",\n\t\"SAVE_THIS_FORM\": \"guardar formulario\",\n\t\"FINAL_STEP\": \"Ultimo paso : previsualizar formulario\",\n\t\"DATA_MODEL\": \"MODELO DE DATOS\",\n\t\"FIELDS_MODEL\": \"MODELO DE CAMPOS (listo para guardar en base de datos uno)\",\n\t\"SELECT_A_CTRL\": \"Selecciona un control\",\n\t\"SELECT_CTRL_IN_LIST\": \"Selecciona un control de la lista\",\n\t\"COL_WILL_BE_BLANK\": \"Columna sera vacia\",\n\t\"EDIT_PROPERTIES\": \"Editar propiedades\",\n\t\"HEADER_TEXT\": \"Texto de encabezado\",\n\t\"ADD_EDIT_HEADER_HERE\": \"Agregar / editar texto de encabezado aqui\",\n\t\"SUBTITLE_TEXT\": \"Texto de subtitulo\",\n\t\"ADD_EDIT_SUBTIL_HERE\": \"Agregar / editar texto de subtitulo aqui\",\n\t\"LABEL_TEXT\": \"Texto de etiqueta\",\n\t\"ADD_EDIT_LABEL_HERE\": \"Agregar / editar texto de etiqueta aqui\",\n\t\"PLACEHOLDER\": \"Marcador\",\n\t\"ADD_EDIT_PLACEHOLD\": \"Agregar / editar texto de marcador aqui\",\n\t\"REQUIRED\": \"Requerido\",\n\t\"DESCRIPTION\": \"Descripcion\",\n\t\"ADDEDIT_DESCRIPTION\": \"Agregar / editar descripcion aqui\",\n\t\"DEFAULTVALUE\": \"Valor por defecto\",\n\t\"ADD_EDIT_DEFAULTVALUE_PLACEHOLD\": \"Añadir / editar valor predeterminado aquí\",\n\t\"DATE_FORMAT\": \"Formato de fecha\",\n\t\"ADD_NEW_RADIO\": \"Agregar nuevo radio\",\n\t\"ADD_RADIO_PLACEHOLD\": \"agregar nuevo radio\",\n\t\"EDIT_REMOVE_RADIO\": \"Editar/Eliminar radio\",\n\t\"NO_RADIO_ADD_NEW\": \"sin radio : agregar nuevos valores de radio\",\n\t\"SEARCH_4_OPTION\": \"buscar opcion\",\n\t\"ADD\": \"agregar\",\n\t\"ORDER\": \"orden\",\n\t\"OPTION\": \"opcion\",\n\t\"GROUP\": \"grupo\",\n\t\"ADD_NEW_OPTIONS\": \"agregar nuevas opciones\",\n\t\"ADD_A_NEW_OPTION\": \"agregar nueva opcione\",\n\t\"EDIT_REMOVE_OPTIONS\": \"Editar/Eliminar opciones\",\n\t\"NO_OPTION_ADD_NEW\": \"sin opcion : agregar nuevas opciones\",\n\t\"ADD_NEW_GROUPS\": \"Agregar nuevos grupos\",\n\t\"ADD_A_NEW_GROUP\": \"Agregar nuevo grupo\",\n\t\"EDIT_GROUPS_OPTIONS\": \"Editar/Eliminar opciones/grupos\",\n\t\"NO_GROUP_ADD_NEW\": \"agregar nuevos grupos\",\n\t\"OK\": \"OK\",\n\t\"CANCEL\": \"Cancelar\"\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvaTE4bi9sb2NhbC1lcy5qc29uPzY5ZDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE1LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG5cdFwiU0FZX0hJXCI6IFwiSG9sYVwiLFxuXHRcIkVESVRfVEFCXCI6IFwiRWRpdGFyIC8gQ3JlYXJcIixcblx0XCJQUkVWSUVXX1RBQlwiOiBcIlByZXZpc3VhbGl6YXJcIixcblx0XCJXSVpBUkRfTElORVNcIjogXCJsaW5lYXNcIixcblx0XCJXSVpBUkRfTEFZT1VUXCI6IFwiZGlzZcOxb1wiLFxuXHRcIldJWkFSRF9DT05UUk9MU1wiOiBcImNvbnRyb2xlc1wiLFxuXHRcIldJWkFSRF9TQVZFXCI6IFwiZ3VhcmRhclwiLFxuXHRcIlBBR0VSX1BSRVZJT1VTXCI6IFwiQW50ZXJpb3JcIixcblx0XCJQQUdFUl9ORVhUXCI6IFwiU2lndWllbnRlXCIsXG5cdFwiQ09NTUFORF9QQU5FTFwiOiBcIkNvbWFuZG9cIixcblx0XCJWSVNVQUxfUEFORUxcIjogXCJWaXN1YWxcIixcblx0XCJBRERfTkVXX0xJTkVcIjogXCJBZ3JlZ2FyIG51ZXZhIGxpbmVhXCIsXG5cdFwiU0VMRUNURURfTElORVwiOiBcIkxpbmVhIHNlbGVjY2lvbmFkYVwiLFxuXHRcIk5VTUJFUl9PRl9DT0xVTU5cIjogXCJudW1lcm8gZGUgY29sdW1uYXNcIixcblx0XCJBUFBMWV9DVFJMMkNPTFwiOiBcIkFwbGljYXIgY29udHJvbGVzIGEgY29sdW1uYXNcIixcblx0XCJDTElDX1RBUF8yX09QRU5cIjogXCJDbGljayAvIFRvcXVlIGVuIGxhIGNvbHVtbmEgcGFyYSBzZWxlY2Npb25hciBjb250cm9sZXNcIixcblx0XCJTRUxFQ1RfMl9BUFBMWV9DT0xcIjogXCJTZWxlY2Npb25hIGVsIGNvbnRyb2wgZGVzZWFkbyBwYXJhIGFwbGljYXJsbyBhIGxhIGNvbHVtbmFcIixcblx0XCJDVVNUT01fU1VCTUlUX0JUTlwiOiBcIlBlcnNvbmFsaXphciB0ZXh0byBkZSBib3RvbiBFbnZpYXJcIixcblx0XCJDVVNUT01fQ0FOQ0VMX0JUTlwiOiBcIlBlcnNvbmFsaXphciB0ZXh0byBkZSBib3RvbiBDYW5jZWxhclwiLFxuXHRcIk5BTUVfVEhJU19GT1JNXCI6IFwiTm9tYnJhciBmb3JtdWxhcmlvXCIsXG5cdFwiU0FWRV9USElTX0ZPUk1cIjogXCJndWFyZGFyIGZvcm11bGFyaW9cIixcblx0XCJGSU5BTF9TVEVQXCI6IFwiVWx0aW1vIHBhc28gOiBwcmV2aXN1YWxpemFyIGZvcm11bGFyaW9cIixcblx0XCJEQVRBX01PREVMXCI6IFwiTU9ERUxPIERFIERBVE9TXCIsXG5cdFwiRklFTERTX01PREVMXCI6IFwiTU9ERUxPIERFIENBTVBPUyAobGlzdG8gcGFyYSBndWFyZGFyIGVuIGJhc2UgZGUgZGF0b3MgdW5vKVwiLFxuXHRcIlNFTEVDVF9BX0NUUkxcIjogXCJTZWxlY2Npb25hIHVuIGNvbnRyb2xcIixcblx0XCJTRUxFQ1RfQ1RSTF9JTl9MSVNUXCI6IFwiU2VsZWNjaW9uYSB1biBjb250cm9sIGRlIGxhIGxpc3RhXCIsXG5cdFwiQ09MX1dJTExfQkVfQkxBTktcIjogXCJDb2x1bW5hIHNlcmEgdmFjaWFcIixcblx0XCJFRElUX1BST1BFUlRJRVNcIjogXCJFZGl0YXIgcHJvcGllZGFkZXNcIixcblx0XCJIRUFERVJfVEVYVFwiOiBcIlRleHRvIGRlIGVuY2FiZXphZG9cIixcblx0XCJBRERfRURJVF9IRUFERVJfSEVSRVwiOiBcIkFncmVnYXIgLyBlZGl0YXIgdGV4dG8gZGUgZW5jYWJlemFkbyBhcXVpXCIsXG5cdFwiU1VCVElUTEVfVEVYVFwiOiBcIlRleHRvIGRlIHN1YnRpdHVsb1wiLFxuXHRcIkFERF9FRElUX1NVQlRJTF9IRVJFXCI6IFwiQWdyZWdhciAvIGVkaXRhciB0ZXh0byBkZSBzdWJ0aXR1bG8gYXF1aVwiLFxuXHRcIkxBQkVMX1RFWFRcIjogXCJUZXh0byBkZSBldGlxdWV0YVwiLFxuXHRcIkFERF9FRElUX0xBQkVMX0hFUkVcIjogXCJBZ3JlZ2FyIC8gZWRpdGFyIHRleHRvIGRlIGV0aXF1ZXRhIGFxdWlcIixcblx0XCJQTEFDRUhPTERFUlwiOiBcIk1hcmNhZG9yXCIsXG5cdFwiQUREX0VESVRfUExBQ0VIT0xEXCI6IFwiQWdyZWdhciAvIGVkaXRhciB0ZXh0byBkZSBtYXJjYWRvciBhcXVpXCIsXG5cdFwiUkVRVUlSRURcIjogXCJSZXF1ZXJpZG9cIixcblx0XCJERVNDUklQVElPTlwiOiBcIkRlc2NyaXBjaW9uXCIsXG5cdFwiQURERURJVF9ERVNDUklQVElPTlwiOiBcIkFncmVnYXIgLyBlZGl0YXIgZGVzY3JpcGNpb24gYXF1aVwiLFxuXHRcIkRFRkFVTFRWQUxVRVwiOiBcIlZhbG9yIHBvciBkZWZlY3RvXCIsXG5cdFwiQUREX0VESVRfREVGQVVMVFZBTFVFX1BMQUNFSE9MRFwiOiBcIkHDsWFkaXIgLyBlZGl0YXIgdmFsb3IgcHJlZGV0ZXJtaW5hZG8gYXF1w61cIixcblx0XCJEQVRFX0ZPUk1BVFwiOiBcIkZvcm1hdG8gZGUgZmVjaGFcIixcblx0XCJBRERfTkVXX1JBRElPXCI6IFwiQWdyZWdhciBudWV2byByYWRpb1wiLFxuXHRcIkFERF9SQURJT19QTEFDRUhPTERcIjogXCJhZ3JlZ2FyIG51ZXZvIHJhZGlvXCIsXG5cdFwiRURJVF9SRU1PVkVfUkFESU9cIjogXCJFZGl0YXIvRWxpbWluYXIgcmFkaW9cIixcblx0XCJOT19SQURJT19BRERfTkVXXCI6IFwic2luIHJhZGlvIDogYWdyZWdhciBudWV2b3MgdmFsb3JlcyBkZSByYWRpb1wiLFxuXHRcIlNFQVJDSF80X09QVElPTlwiOiBcImJ1c2NhciBvcGNpb25cIixcblx0XCJBRERcIjogXCJhZ3JlZ2FyXCIsXG5cdFwiT1JERVJcIjogXCJvcmRlblwiLFxuXHRcIk9QVElPTlwiOiBcIm9wY2lvblwiLFxuXHRcIkdST1VQXCI6IFwiZ3J1cG9cIixcblx0XCJBRERfTkVXX09QVElPTlNcIjogXCJhZ3JlZ2FyIG51ZXZhcyBvcGNpb25lc1wiLFxuXHRcIkFERF9BX05FV19PUFRJT05cIjogXCJhZ3JlZ2FyIG51ZXZhIG9wY2lvbmVcIixcblx0XCJFRElUX1JFTU9WRV9PUFRJT05TXCI6IFwiRWRpdGFyL0VsaW1pbmFyIG9wY2lvbmVzXCIsXG5cdFwiTk9fT1BUSU9OX0FERF9ORVdcIjogXCJzaW4gb3BjaW9uIDogYWdyZWdhciBudWV2YXMgb3BjaW9uZXNcIixcblx0XCJBRERfTkVXX0dST1VQU1wiOiBcIkFncmVnYXIgbnVldm9zIGdydXBvc1wiLFxuXHRcIkFERF9BX05FV19HUk9VUFwiOiBcIkFncmVnYXIgbnVldm8gZ3J1cG9cIixcblx0XCJFRElUX0dST1VQU19PUFRJT05TXCI6IFwiRWRpdGFyL0VsaW1pbmFyIG9wY2lvbmVzL2dydXBvc1wiLFxuXHRcIk5PX0dST1VQX0FERF9ORVdcIjogXCJhZ3JlZ2FyIG51ZXZvcyBncnVwb3NcIixcblx0XCJPS1wiOiBcIk9LXCIsXG5cdFwiQ0FOQ0VMXCI6IFwiQ2FuY2VsYXJcIlxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9pMThuL2xvY2FsLWVzLmpzb25cbi8vIG1vZHVsZSBpZCA9IDE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 16 */
+/***/ function(module, exports) {
+
+ eval("module.exports = {\n\t\"SAY_HI\": \"Hallo\",\n\t\"EDIT_TAB\": \"Bearbeiten / Schaffen\",\n\t\"PREVIEW_TAB\": \"Vorschau\",\n\t\"WIZARD_LINES\": \"Linien\",\n\t\"WIZARD_LAYOUT\": \"Layout\",\n\t\"WIZARD_CONTROLS\": \"Steuerung\",\n\t\"WIZARD_SAVE\": \"sparen\",\n\t\"PAGER_PREVIOUS\": \"vorher.\",\n\t\"PAGER_NEXT\": \"nächste\",\n\t\"COMMAND_PANEL\": \"Anweisung\",\n\t\"VISUAL_PANEL\": \"visuell\",\n\t\"ADD_NEW_LINE\": \"Hinzufügen neuer Leitung\",\n\t\"SELECTED_LINE\": \"ausgewählte Linie\",\n\t\"NUMBER_OF_COLUMN\": \"Anzahl von Spalten\",\n\t\"APPLY_CTRL2COL\": \"gelten diese Steuer Spalte\",\n\t\"CLIC_TAP_2_OPEN\": \"klicken Sie auf Spalte zur Steuerungsauswahl öffnen\",\n\t\"SELECT_2_APPLY_COL\": \"Wählen Sie die gewünschte Steuerung und gültig , um es in Spalte anwenden\",\n\t\"CUSTOM_SUBMIT_BTN\": \"Passen Submit-Button Text\",\n\t\"CUSTOM_CANCEL_BTN\": \"Passen Cancel-Button Text\",\n\t\"NAME_THIS_FORM\": \"Nennen dieses Formular\",\n\t\"SAVE_THIS_FORM\": \"Speichern dieses Formular\",\n\t\"FINAL_STEP\": \"Endschritt : Formular Vorschau\",\n\t\"DATA_MODEL\": \"DATEN MODELL\",\n\t\"FIELDS_MODEL\": \"FELDER MODELL (Datenbank-kompatibel)\",\n\t\"SELECT_A_CTRL\": \"Wählen Sie ein Steuer\",\n\t\"SELECT_CTRL_IN_LIST\": \"Wählen Sie ein Steuer aus der Liste unten\",\n\t\"COL_WILL_BE_BLANK\": \"die Spalte werde leer sein\",\n\t\"EDIT_PROPERTIES\": \"Anzeigen\",\n\t\"HEADER_TEXT\": \"Kopftext\",\n\t\"ADD_EDIT_HEADER_HERE\": \"Kopftext ändern\",\n\t\"SUBTITLE_TEXT\": \"Untertitel\",\n\t\"ADD_EDIT_SUBTIL_HERE\": \"Untertitel ändern\",\n\t\"LABEL_TEXT\": \"Etikett\",\n\t\"ADD_EDIT_LABEL_HERE\": \"Etikett ändern\",\n\t\"PLACEHOLDER\": \"placeholder\",\n\t\"ADD_EDIT_PLACEHOLD\": \"placeholder ändern\",\n\t\"REQUIRED\": \"erforderlich\",\n\t\"DESCRIPTION\": \"Beschreibung\",\n\t\"ADDEDIT_DESCRIPTION\": \"Beschreibung ändern\",\n\t\"DEFAULTVALUE\": \"Standardwert\",\n\t\"ADD_EDIT_DEFAULTVALUE_PLACEHOLD\": \"Hier können Sie den Standardwert hinzufügen / bearbeiten\",\n\t\"DATE_FORMAT\": \"Datumsformat\",\n\t\"ADD_NEW_RADIO\": \"Radiobutton hinzufügen\",\n\t\"ADD_RADIO_PLACEHOLD\": \"Radiobutton hinzufügen\",\n\t\"EDIT_REMOVE_RADIO\": \"Radiobutton ändern\",\n\t\"NO_RADIO_ADD_NEW\": \"kein Radiobutton : Radiobutton hinzufügen\",\n\t\"SEARCH_4_OPTION\": \"option suchen\",\n\t\"ADD\": \"hinzufügen\",\n\t\"ORDER\": \"bestellen\",\n\t\"OPTION\": \"Option\",\n\t\"GROUP\": \"Gruppe\",\n\t\"ADD_NEW_OPTIONS\": \"Optionen hinzufügen\",\n\t\"ADD_A_NEW_OPTION\": \"Option hinzufügen\",\n\t\"EDIT_REMOVE_OPTIONS\": \"Optionen ändern\",\n\t\"NO_OPTION_ADD_NEW\": \"kein option : Option hinzufügen\",\n\t\"ADD_NEW_GROUPS\": \"Gruppen hinzufügen\",\n\t\"ADD_A_NEW_GROUP\": \"Gruppe hinzufügen\",\n\t\"EDIT_GROUPS_OPTIONS\": \"Gruppen ändern\",\n\t\"NO_GROUP_ADD_NEW\": \"keine Gruppe : Gruppe hinzufügen\",\n\t\"OK\": \"bestätigen\",\n\t\"CANCEL\": \"stornieren\"\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvaTE4bi9sb2NhbC1kZS5qc29uPzEwY2IiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE2LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG5cdFwiU0FZX0hJXCI6IFwiSGFsbG9cIixcblx0XCJFRElUX1RBQlwiOiBcIkJlYXJiZWl0ZW4gLyBTY2hhZmZlblwiLFxuXHRcIlBSRVZJRVdfVEFCXCI6IFwiVm9yc2NoYXVcIixcblx0XCJXSVpBUkRfTElORVNcIjogXCJMaW5pZW5cIixcblx0XCJXSVpBUkRfTEFZT1VUXCI6IFwiTGF5b3V0XCIsXG5cdFwiV0laQVJEX0NPTlRST0xTXCI6IFwiU3RldWVydW5nXCIsXG5cdFwiV0laQVJEX1NBVkVcIjogXCJzcGFyZW5cIixcblx0XCJQQUdFUl9QUkVWSU9VU1wiOiBcInZvcmhlci5cIixcblx0XCJQQUdFUl9ORVhUXCI6IFwibsOkY2hzdGVcIixcblx0XCJDT01NQU5EX1BBTkVMXCI6IFwiQW53ZWlzdW5nXCIsXG5cdFwiVklTVUFMX1BBTkVMXCI6IFwidmlzdWVsbFwiLFxuXHRcIkFERF9ORVdfTElORVwiOiBcIkhpbnp1ZsO8Z2VuIG5ldWVyIExlaXR1bmdcIixcblx0XCJTRUxFQ1RFRF9MSU5FXCI6IFwiYXVzZ2V3w6RobHRlIExpbmllXCIsXG5cdFwiTlVNQkVSX09GX0NPTFVNTlwiOiBcIkFuemFobCB2b24gU3BhbHRlblwiLFxuXHRcIkFQUExZX0NUUkwyQ09MXCI6IFwiZ2VsdGVuIGRpZXNlIFN0ZXVlciBTcGFsdGVcIixcblx0XCJDTElDX1RBUF8yX09QRU5cIjogXCJrbGlja2VuIFNpZSBhdWYgU3BhbHRlIHp1ciBTdGV1ZXJ1bmdzYXVzd2FobCDDtmZmbmVuXCIsXG5cdFwiU0VMRUNUXzJfQVBQTFlfQ09MXCI6IFwiV8OkaGxlbiBTaWUgZGllIGdld8O8bnNjaHRlIFN0ZXVlcnVuZyB1bmQgZ8O8bHRpZyAsIHVtIGVzIGluIFNwYWx0ZSBhbndlbmRlblwiLFxuXHRcIkNVU1RPTV9TVUJNSVRfQlROXCI6IFwiUGFzc2VuIFN1Ym1pdC1CdXR0b24gVGV4dFwiLFxuXHRcIkNVU1RPTV9DQU5DRUxfQlROXCI6IFwiUGFzc2VuIENhbmNlbC1CdXR0b24gVGV4dFwiLFxuXHRcIk5BTUVfVEhJU19GT1JNXCI6IFwiTmVubmVuIGRpZXNlcyBGb3JtdWxhclwiLFxuXHRcIlNBVkVfVEhJU19GT1JNXCI6IFwiU3BlaWNoZXJuIGRpZXNlcyBGb3JtdWxhclwiLFxuXHRcIkZJTkFMX1NURVBcIjogXCJFbmRzY2hyaXR0IDogRm9ybXVsYXIgVm9yc2NoYXVcIixcblx0XCJEQVRBX01PREVMXCI6IFwiREFURU4gTU9ERUxMXCIsXG5cdFwiRklFTERTX01PREVMXCI6IFwiRkVMREVSIE1PREVMTCAoRGF0ZW5iYW5rLWtvbXBhdGliZWwpXCIsXG5cdFwiU0VMRUNUX0FfQ1RSTFwiOiBcIlfDpGhsZW4gU2llIGVpbiBTdGV1ZXJcIixcblx0XCJTRUxFQ1RfQ1RSTF9JTl9MSVNUXCI6IFwiV8OkaGxlbiBTaWUgZWluIFN0ZXVlciBhdXMgZGVyIExpc3RlIHVudGVuXCIsXG5cdFwiQ09MX1dJTExfQkVfQkxBTktcIjogXCJkaWUgU3BhbHRlIHdlcmRlIGxlZXIgc2VpblwiLFxuXHRcIkVESVRfUFJPUEVSVElFU1wiOiBcIkFuemVpZ2VuXCIsXG5cdFwiSEVBREVSX1RFWFRcIjogXCJLb3BmdGV4dFwiLFxuXHRcIkFERF9FRElUX0hFQURFUl9IRVJFXCI6IFwiS29wZnRleHQgw6RuZGVyblwiLFxuXHRcIlNVQlRJVExFX1RFWFRcIjogXCJVbnRlcnRpdGVsXCIsXG5cdFwiQUREX0VESVRfU1VCVElMX0hFUkVcIjogXCJVbnRlcnRpdGVsIMOkbmRlcm5cIixcblx0XCJMQUJFTF9URVhUXCI6IFwiRXRpa2V0dFwiLFxuXHRcIkFERF9FRElUX0xBQkVMX0hFUkVcIjogXCJFdGlrZXR0IMOkbmRlcm5cIixcblx0XCJQTEFDRUhPTERFUlwiOiBcInBsYWNlaG9sZGVyXCIsXG5cdFwiQUREX0VESVRfUExBQ0VIT0xEXCI6IFwicGxhY2Vob2xkZXIgw6RuZGVyblwiLFxuXHRcIlJFUVVJUkVEXCI6IFwiZXJmb3JkZXJsaWNoXCIsXG5cdFwiREVTQ1JJUFRJT05cIjogXCJCZXNjaHJlaWJ1bmdcIixcblx0XCJBRERFRElUX0RFU0NSSVBUSU9OXCI6IFwiQmVzY2hyZWlidW5nIMOkbmRlcm5cIixcblx0XCJERUZBVUxUVkFMVUVcIjogXCJTdGFuZGFyZHdlcnRcIixcblx0XCJBRERfRURJVF9ERUZBVUxUVkFMVUVfUExBQ0VIT0xEXCI6IFwiSGllciBrw7ZubmVuIFNpZSBkZW4gU3RhbmRhcmR3ZXJ0IGhpbnp1ZsO8Z2VuIC8gYmVhcmJlaXRlblwiLFxuXHRcIkRBVEVfRk9STUFUXCI6IFwiRGF0dW1zZm9ybWF0XCIsXG5cdFwiQUREX05FV19SQURJT1wiOiBcIlJhZGlvYnV0dG9uIGhpbnp1ZsO8Z2VuXCIsXG5cdFwiQUREX1JBRElPX1BMQUNFSE9MRFwiOiBcIlJhZGlvYnV0dG9uIGhpbnp1ZsO8Z2VuXCIsXG5cdFwiRURJVF9SRU1PVkVfUkFESU9cIjogXCJSYWRpb2J1dHRvbiDDpG5kZXJuXCIsXG5cdFwiTk9fUkFESU9fQUREX05FV1wiOiBcImtlaW4gUmFkaW9idXR0b24gOiBSYWRpb2J1dHRvbiBoaW56dWbDvGdlblwiLFxuXHRcIlNFQVJDSF80X09QVElPTlwiOiBcIm9wdGlvbiBzdWNoZW5cIixcblx0XCJBRERcIjogXCJoaW56dWbDvGdlblwiLFxuXHRcIk9SREVSXCI6IFwiYmVzdGVsbGVuXCIsXG5cdFwiT1BUSU9OXCI6IFwiT3B0aW9uXCIsXG5cdFwiR1JPVVBcIjogXCJHcnVwcGVcIixcblx0XCJBRERfTkVXX09QVElPTlNcIjogXCJPcHRpb25lbiBoaW56dWbDvGdlblwiLFxuXHRcIkFERF9BX05FV19PUFRJT05cIjogXCJPcHRpb24gaGluenVmw7xnZW5cIixcblx0XCJFRElUX1JFTU9WRV9PUFRJT05TXCI6IFwiT3B0aW9uZW4gw6RuZGVyblwiLFxuXHRcIk5PX09QVElPTl9BRERfTkVXXCI6IFwia2VpbiBvcHRpb24gOiBPcHRpb24gaGluenVmw7xnZW5cIixcblx0XCJBRERfTkVXX0dST1VQU1wiOiBcIkdydXBwZW4gaGluenVmw7xnZW5cIixcblx0XCJBRERfQV9ORVdfR1JPVVBcIjogXCJHcnVwcGUgaGluenVmw7xnZW5cIixcblx0XCJFRElUX0dST1VQU19PUFRJT05TXCI6IFwiR3J1cHBlbiDDpG5kZXJuXCIsXG5cdFwiTk9fR1JPVVBfQUREX05FV1wiOiBcImtlaW5lIEdydXBwZSA6IEdydXBwZSBoaW56dWbDvGdlblwiLFxuXHRcIk9LXCI6IFwiYmVzdMOkdGlnZW5cIixcblx0XCJDQU5DRUxcIjogXCJzdG9ybmllcmVuXCJcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvaTE4bi9sb2NhbC1kZS5qc29uXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 17 */
+/***/ function(module, exports) {
+
+ eval("module.exports = {\n\t\"SAY_HI\": \"Merhaba\",\n\t\"EDIT_TAB\": \"Düzenle / Oluştur\",\n\t\"PREVIEW_TAB\": \"Önizleme\",\n\t\"WIZARD_LINES\": \"satırlar\",\n\t\"WIZARD_LAYOUT\": \"düzen\",\n\t\"WIZARD_CONTROLS\": \"kontroller\",\n\t\"WIZARD_SAVE\": \"kaydet\",\n\t\"PAGER_PREVIOUS\": \"Geri\",\n\t\"PAGER_NEXT\": \"İleri\",\n\t\"COMMAND_PANEL\": \"Komut\",\n\t\"VISUAL_PANEL\": \"Görsel\",\n\t\"ADD_NEW_LINE\": \"Yeni satır ekle\",\n\t\"SELECTED_LINE\": \"Seçili satır\",\n\t\"NUMBER_OF_COLUMN\": \"sütun sayısı\",\n\t\"APPLY_CTRL2COL\": \"Sütunlara form ögesi ekle\",\n\t\"CLIC_TAP_2_OPEN\": \"Form ögesi eklemek için sütunlara tıkla\",\n\t\"SELECT_2_APPLY_COL\": \"İstediğin ögeyi seçtikten sonra gerekli yerleri doldur ve kaydet\",\n\t\"CUSTOM_SUBMIT_BTN\": \"Gönder butonu yazısını düzenle\",\n\t\"CUSTOM_CANCEL_BTN\": \"İptal butonu yazısını düzenle\",\n\t\"NAME_THIS_FORM\": \"Forma isim ver\",\n\t\"SAVE_THIS_FORM\": \"formu kaydet\",\n\t\"FINAL_STEP\": \"Son aşama : form önizlemesi\",\n\t\"DATA_MODEL\": \"VERİ MODELİ\",\n\t\"FIELDS_MODEL\": \"ALAN MODELİ (veritabanına kaydetmeye hazır)\",\n\t\"SELECT_A_CTRL\": \"Form ögesi seç\",\n\t\"SELECT_CTRL_IN_LIST\": \"Verilen listeden bir form ögesi seç\",\n\t\"COL_WILL_BE_BLANK\": \"Sütun boş kalacak\",\n\t\"EDIT_PROPERTIES\": \"Özellikleri düzenle\",\n\t\"HEADER_TEXT\": \"Başlık yazısı\",\n\t\"ADD_EDIT_HEADER_HERE\": \"Başlık yazısını ekle / düzenle\",\n\t\"SUBTITLE_TEXT\": \"Altyazı\",\n\t\"ADD_EDIT_SUBTIL_HERE\": \"Altyazı ekle / düzenle\",\n\t\"LABEL_TEXT\": \"Form ögesinin adı\",\n\t\"ADD_EDIT_LABEL_HERE\": \"Ad ekle / düzenle\",\n\t\"PLACEHOLDER\": \"Form ögesinin içine geçici yazı ekle\",\n\t\"ADD_EDIT_PLACEHOLD\": \"Geçici yazı ekle / düzenle\",\n\t\"REQUIRED\": \"Gerekli\",\n\t\"DESCRIPTION\": \"Açıklama\",\n\t\"ADDEDIT_DESCRIPTION\": \"Açıklama ekle / düzenle\",\n\t\"DEFAULTVALUE\": \"Varsayılan değer\",\n\t\"ADD_EDIT_DEFAULTVALUE_PLACEHOLD\": \"Varsayılan değeri buraya ekleyin / düzenle\",\n\t\"DATE_FORMAT\": \"Tarih formatı\",\n\t\"ADD_NEW_RADIO\": \"Radio butonu ekle\",\n\t\"ADD_RADIO_PLACEHOLD\": \"radio butonu ekle\",\n\t\"EDIT_REMOVE_RADIO\": \"Radio butonunu ekle / düzenle\",\n\t\"NO_RADIO_ADD_NEW\": \"radio butonu yok : yeni buton ekle\",\n\t\"SEARCH_4_OPTION\": \"seçenek ara\",\n\t\"ADD\": \"ekle\",\n\t\"ORDER\": \"sıra\",\n\t\"OPTION\": \"seçenek\",\n\t\"GROUP\": \"grup\",\n\t\"ADD_NEW_OPTIONS\": \"Yeni seçenek ekle\",\n\t\"ADD_A_NEW_OPTION\": \"yeni seçenek ekle\",\n\t\"EDIT_REMOVE_OPTIONS\": \"Seçenekleri düzenle/sil\",\n\t\"NO_OPTION_ADD_NEW\": \"seçenek yok : yeni seçenek ekle\",\n\t\"ADD_NEW_GROUPS\": \"Yeni grup ekle\",\n\t\"ADD_A_NEW_GROUP\": \"Yeni grup ekle\",\n\t\"EDIT_GROUPS_OPTIONS\": \"Seçenek/Grup Ekle/sil\",\n\t\"NO_GROUP_ADD_NEW\": \"yeni grup ekle\",\n\t\"OK\": \"TAMAM\",\n\t\"CANCEL\": \"İptal\"\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvaTE4bi9sb2NhbC10ci5qc29uPzM0NzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE3LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG5cdFwiU0FZX0hJXCI6IFwiTWVyaGFiYVwiLFxuXHRcIkVESVRfVEFCXCI6IFwiRMO8emVubGUgLyBPbHXFn3R1clwiLFxuXHRcIlBSRVZJRVdfVEFCXCI6IFwiw5ZuaXpsZW1lXCIsXG5cdFwiV0laQVJEX0xJTkVTXCI6IFwic2F0xLFybGFyXCIsXG5cdFwiV0laQVJEX0xBWU9VVFwiOiBcImTDvHplblwiLFxuXHRcIldJWkFSRF9DT05UUk9MU1wiOiBcImtvbnRyb2xsZXJcIixcblx0XCJXSVpBUkRfU0FWRVwiOiBcImtheWRldFwiLFxuXHRcIlBBR0VSX1BSRVZJT1VTXCI6IFwiR2VyaVwiLFxuXHRcIlBBR0VSX05FWFRcIjogXCLEsGxlcmlcIixcblx0XCJDT01NQU5EX1BBTkVMXCI6IFwiS29tdXRcIixcblx0XCJWSVNVQUxfUEFORUxcIjogXCJHw7Zyc2VsXCIsXG5cdFwiQUREX05FV19MSU5FXCI6IFwiWWVuaSBzYXTEsXIgZWtsZVwiLFxuXHRcIlNFTEVDVEVEX0xJTkVcIjogXCJTZcOnaWxpIHNhdMSxclwiLFxuXHRcIk5VTUJFUl9PRl9DT0xVTU5cIjogXCJzw7x0dW4gc2F5xLFzxLFcIixcblx0XCJBUFBMWV9DVFJMMkNPTFwiOiBcIlPDvHR1bmxhcmEgZm9ybSDDtmdlc2kgZWtsZVwiLFxuXHRcIkNMSUNfVEFQXzJfT1BFTlwiOiBcIkZvcm0gw7ZnZXNpIGVrbGVtZWsgacOnaW4gc8O8dHVubGFyYSB0xLFrbGFcIixcblx0XCJTRUxFQ1RfMl9BUFBMWV9DT0xcIjogXCLEsHN0ZWRpxJ9pbiDDtmdleWkgc2XDp3Rpa3RlbiBzb25yYSBnZXJla2xpIHllcmxlcmkgZG9sZHVyIHZlIGtheWRldFwiLFxuXHRcIkNVU1RPTV9TVUJNSVRfQlROXCI6IFwiR8O2bmRlciBidXRvbnUgeWF6xLFzxLFuxLEgZMO8emVubGVcIixcblx0XCJDVVNUT01fQ0FOQ0VMX0JUTlwiOiBcIsSwcHRhbCBidXRvbnUgeWF6xLFzxLFuxLEgZMO8emVubGVcIixcblx0XCJOQU1FX1RISVNfRk9STVwiOiBcIkZvcm1hIGlzaW0gdmVyXCIsXG5cdFwiU0FWRV9USElTX0ZPUk1cIjogXCJmb3JtdSBrYXlkZXRcIixcblx0XCJGSU5BTF9TVEVQXCI6IFwiU29uIGHFn2FtYSA6IGZvcm0gw7ZuaXpsZW1lc2lcIixcblx0XCJEQVRBX01PREVMXCI6IFwiVkVSxLAgTU9ERUzEsFwiLFxuXHRcIkZJRUxEU19NT0RFTFwiOiBcIkFMQU4gTU9ERUzEsCAodmVyaXRhYmFuxLFuYSBrYXlkZXRtZXllIGhhesSxcilcIixcblx0XCJTRUxFQ1RfQV9DVFJMXCI6IFwiRm9ybSDDtmdlc2kgc2XDp1wiLFxuXHRcIlNFTEVDVF9DVFJMX0lOX0xJU1RcIjogXCJWZXJpbGVuIGxpc3RlZGVuIGJpciBmb3JtIMO2Z2VzaSBzZcOnXCIsXG5cdFwiQ09MX1dJTExfQkVfQkxBTktcIjogXCJTw7x0dW4gYm/FnyBrYWxhY2FrXCIsXG5cdFwiRURJVF9QUk9QRVJUSUVTXCI6IFwiw5Z6ZWxsaWtsZXJpIGTDvHplbmxlXCIsXG5cdFwiSEVBREVSX1RFWFRcIjogXCJCYcWfbMSxayB5YXrEsXPEsVwiLFxuXHRcIkFERF9FRElUX0hFQURFUl9IRVJFXCI6IFwiQmHFn2zEsWsgeWF6xLFzxLFuxLEgZWtsZSAvIGTDvHplbmxlXCIsXG5cdFwiU1VCVElUTEVfVEVYVFwiOiBcIkFsdHlhesSxXCIsXG5cdFwiQUREX0VESVRfU1VCVElMX0hFUkVcIjogXCJBbHR5YXrEsSBla2xlIC8gZMO8emVubGVcIixcblx0XCJMQUJFTF9URVhUXCI6IFwiRm9ybSDDtmdlc2luaW4gYWTEsVwiLFxuXHRcIkFERF9FRElUX0xBQkVMX0hFUkVcIjogXCJBZCBla2xlIC8gZMO8emVubGVcIixcblx0XCJQTEFDRUhPTERFUlwiOiBcIkZvcm0gw7ZnZXNpbmluIGnDp2luZSBnZcOnaWNpIHlhesSxIGVrbGVcIixcblx0XCJBRERfRURJVF9QTEFDRUhPTERcIjogXCJHZcOnaWNpIHlhesSxIGVrbGUgLyBkw7x6ZW5sZVwiLFxuXHRcIlJFUVVJUkVEXCI6IFwiR2VyZWtsaVwiLFxuXHRcIkRFU0NSSVBUSU9OXCI6IFwiQcOnxLFrbGFtYVwiLFxuXHRcIkFEREVESVRfREVTQ1JJUFRJT05cIjogXCJBw6fEsWtsYW1hIGVrbGUgLyBkw7x6ZW5sZVwiLFxuXHRcIkRFRkFVTFRWQUxVRVwiOiBcIlZhcnNhecSxbGFuIGRlxJ9lclwiLFxuXHRcIkFERF9FRElUX0RFRkFVTFRWQUxVRV9QTEFDRUhPTERcIjogXCJWYXJzYXnEsWxhbiBkZcSfZXJpIGJ1cmF5YSBla2xleWluIC8gZMO8emVubGVcIixcblx0XCJEQVRFX0ZPUk1BVFwiOiBcIlRhcmloIGZvcm1hdMSxXCIsXG5cdFwiQUREX05FV19SQURJT1wiOiBcIlJhZGlvIGJ1dG9udSBla2xlXCIsXG5cdFwiQUREX1JBRElPX1BMQUNFSE9MRFwiOiBcInJhZGlvIGJ1dG9udSBla2xlXCIsXG5cdFwiRURJVF9SRU1PVkVfUkFESU9cIjogXCJSYWRpbyBidXRvbnVudSBla2xlIC8gZMO8emVubGVcIixcblx0XCJOT19SQURJT19BRERfTkVXXCI6IFwicmFkaW8gYnV0b251IHlvayA6IHllbmkgYnV0b24gZWtsZVwiLFxuXHRcIlNFQVJDSF80X09QVElPTlwiOiBcInNlw6dlbmVrIGFyYVwiLFxuXHRcIkFERFwiOiBcImVrbGVcIixcblx0XCJPUkRFUlwiOiBcInPEsXJhXCIsXG5cdFwiT1BUSU9OXCI6IFwic2XDp2VuZWtcIixcblx0XCJHUk9VUFwiOiBcImdydXBcIixcblx0XCJBRERfTkVXX09QVElPTlNcIjogXCJZZW5pIHNlw6dlbmVrIGVrbGVcIixcblx0XCJBRERfQV9ORVdfT1BUSU9OXCI6IFwieWVuaSBzZcOnZW5layBla2xlXCIsXG5cdFwiRURJVF9SRU1PVkVfT1BUSU9OU1wiOiBcIlNlw6dlbmVrbGVyaSBkw7x6ZW5sZS9zaWxcIixcblx0XCJOT19PUFRJT05fQUREX05FV1wiOiBcInNlw6dlbmVrIHlvayA6IHllbmkgc2XDp2VuZWsgZWtsZVwiLFxuXHRcIkFERF9ORVdfR1JPVVBTXCI6IFwiWWVuaSBncnVwIGVrbGVcIixcblx0XCJBRERfQV9ORVdfR1JPVVBcIjogXCJZZW5pIGdydXAgZWtsZVwiLFxuXHRcIkVESVRfR1JPVVBTX09QVElPTlNcIjogXCJTZcOnZW5lay9HcnVwIEVrbGUvc2lsXCIsXG5cdFwiTk9fR1JPVVBfQUREX05FV1wiOiBcInllbmkgZ3J1cCBla2xlXCIsXG5cdFwiT0tcIjogXCJUQU1BTVwiLFxuXHRcIkNBTkNFTFwiOiBcIsSwcHRhbFwiXG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2kxOG4vbG9jYWwtdHIuanNvblxuLy8gbW9kdWxlIGlkID0gMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 18 */
+/***/ function(module, exports) {
+
+ eval("module.exports = {\n\t\"SAY_HI\": \"こんにちわ\",\n\t\"EDIT_TAB\": \"編集 / 作成\",\n\t\"PREVIEW_TAB\": \"プレビュー\",\n\t\"WIZARD_LINES\": \"ライン\",\n\t\"WIZARD_LAYOUT\": \"レイアウト\",\n\t\"WIZARD_CONTROLS\": \"コントロール\",\n\t\"WIZARD_SAVE\": \"サーブ\",\n\t\"PAGER_PREVIOUS\": \"前\",\n\t\"PAGER_NEXT\": \"次\",\n\t\"COMMAND_PANEL\": \"コマンド\",\n\t\"VISUAL_PANEL\": \"ビジュアル\",\n\t\"ADD_NEW_LINE\": \"新しいライン追加\",\n\t\"SELECTED_LINE\": \"選択されたライン\",\n\t\"NUMBER_OF_COLUMN\": \"カラムの数\",\n\t\"APPLY_CTRL2COL\": \"カラムにコントロール適用\",\n\t\"CLIC_TAP_2_OPEN\": \"コントロール選択を広げるには列をクリック\",\n\t\"SELECT_2_APPLY_COL\": \"好きなコントロールを選び適用\",\n\t\"CUSTOM_SUBMIT_BTN\": \"適用ボタンの文字変更する場合\",\n\t\"CUSTOM_CANCEL_BTN\": \"キャンセルボタンの文字変更する場合\",\n\t\"NAME_THIS_FORM\": \"形式に名前を付ける\",\n\t\"SAVE_THIS_FORM\": \"形式をサーブ\",\n\t\"FINAL_STEP\": \"ファイナルステップ : プレビュー形式\",\n\t\"DATA_MODEL\": \"データーモデル\",\n\t\"FIELDS_MODEL\": \"モデルフィールド\",\n\t\"SELECT_A_CTRL\": \"コントロールを選び選択\",\n\t\"SELECT_CTRL_IN_LIST\": \"以下のリストからコントロールを選び選択\",\n\t\"COL_WILL_BE_BLANK\": \"空になる列\",\n\t\"EDIT_PROPERTIES\": \"プロパティの変更\",\n\t\"HEADER_TEXT\": \"ヘッダーテキスト\",\n\t\"ADD_EDIT_HEADER_HERE\": \"ヘッダーテキスト文字変更\",\n\t\"SUBTITLE_TEXT\": \"サブタイトル テキスト\",\n\t\"ADD_EDIT_SUBTIL_HERE\": \"サブタイトルテキスト文字変更\",\n\t\"LABEL_TEXT\": \"ラベルテキスト\",\n\t\"ADD_EDIT_LABEL_HERE\": \"ラベルテキスト文字変更\",\n\t\"PLACEHOLDER\": \"プレースホルダー\",\n\t\"ADD_EDIT_PLACEHOLD\": \"プレースホルダー文字変更\",\n\t\"REQUIRED\": \"必須\",\n\t\"DESCRIPTION\": \"説明\",\n\t\"ADDEDIT_DESCRIPTION\": \"説明の変更\",\n\t\"DEFAULTVALUE\": \"デフォルト値\",\n\t\"ADD_EDIT_DEFAULTVALUE_PLACEHOLD\": \"ここにデフォルト値を追加/編集する\",\n\t\"DATE_FORMAT\": \"日付の形式\",\n\t\"ADD_NEW_RADIO\": \"新ラジオボタンを追加\",\n\t\"ADD_RADIO_PLACEHOLD\": \"新ラジオボタンを追加\",\n\t\"EDIT_REMOVE_RADIO\": \"ラジオボタン変更\",\n\t\"NO_RADIO_ADD_NEW\": \"ラジオ無し : 新ラジオボタン追加\",\n\t\"SEARCH_4_OPTION\": \"オプション検索\",\n\t\"ADD\": \"追加\",\n\t\"ORDER\": \"順番\",\n\t\"OPTION\": \"オプション\",\n\t\"GROUP\": \"グループ\",\n\t\"ADD_NEW_OPTIONS\": \"新しいオプション追加\",\n\t\"ADD_A_NEW_OPTION\": \"新しいオプション追加\",\n\t\"EDIT_REMOVE_OPTIONS\": \"オプションの変更\",\n\t\"NO_OPTION_ADD_NEW\": \"オプション無し : 新しいオプション追加\",\n\t\"ADD_NEW_GROUPS\": \"新しいグループ追加\",\n\t\"ADD_A_NEW_GROUP\": \"新しいグループ追加\",\n\t\"EDIT_GROUPS_OPTIONS\": \"グループを変更\",\n\t\"NO_GROUP_ADD_NEW\": \"グループを追加\",\n\t\"OK\": \"オッケー\",\n\t\"CANCEL\": \"キャンセル\"\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvaTE4bi9sb2NhbC1qcC5qc29uPzlkMjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE4LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG5cdFwiU0FZX0hJXCI6IFwi44GT44KT44Gr44Gh44KPXCIsXG5cdFwiRURJVF9UQUJcIjogXCLnt6jpm4YgLyDkvZzmiJBcIixcblx0XCJQUkVWSUVXX1RBQlwiOiBcIuODl+ODrOODk+ODpeODvFwiLFxuXHRcIldJWkFSRF9MSU5FU1wiOiBcIuODqeOCpOODs1wiLFxuXHRcIldJWkFSRF9MQVlPVVRcIjogXCLjg6zjgqTjgqLjgqbjg4hcIixcblx0XCJXSVpBUkRfQ09OVFJPTFNcIjogXCLjgrPjg7Pjg4jjg63jg7zjg6tcIixcblx0XCJXSVpBUkRfU0FWRVwiOiBcIuOCteODvOODllwiLFxuXHRcIlBBR0VSX1BSRVZJT1VTXCI6IFwi5YmNXCIsXG5cdFwiUEFHRVJfTkVYVFwiOiBcIuasoVwiLFxuXHRcIkNPTU1BTkRfUEFORUxcIjogXCLjgrPjg57jg7Pjg4lcIixcblx0XCJWSVNVQUxfUEFORUxcIjogXCLjg5Pjgrjjg6XjgqLjg6tcIixcblx0XCJBRERfTkVXX0xJTkVcIjogXCLmlrDjgZfjgYTjg6njgqTjg7Pov73liqBcIixcblx0XCJTRUxFQ1RFRF9MSU5FXCI6IFwi6YG45oqe44GV44KM44Gf44Op44Kk44OzXCIsXG5cdFwiTlVNQkVSX09GX0NPTFVNTlwiOiBcIuOCq+ODqeODoOOBruaVsFwiLFxuXHRcIkFQUExZX0NUUkwyQ09MXCI6IFwi44Kr44Op44Og44Gr44Kz44Oz44OI44Ot44O844Or6YGp55SoXCIsXG5cdFwiQ0xJQ19UQVBfMl9PUEVOXCI6IFwi44Kz44Oz44OI44Ot44O844Or6YG45oqe44KS5bqD44GS44KL44Gr44Gv5YiX44KS44Kv44Oq44OD44KvXCIsXG5cdFwiU0VMRUNUXzJfQVBQTFlfQ09MXCI6IFwi5aW944GN44Gq44Kz44Oz44OI44Ot44O844Or44KS6YG444Gz6YGp55SoXCIsXG5cdFwiQ1VTVE9NX1NVQk1JVF9CVE5cIjogXCLpgannlKjjg5zjgr/jg7Pjga7mloflrZflpInmm7TjgZnjgovloLTlkIhcIixcblx0XCJDVVNUT01fQ0FOQ0VMX0JUTlwiOiBcIuOCreODo+ODs+OCu+ODq+ODnOOCv+ODs+OBruaWh+Wtl+WkieabtOOBmeOCi+WgtOWQiFwiLFxuXHRcIk5BTUVfVEhJU19GT1JNXCI6IFwi5b2i5byP44Gr5ZCN5YmN44KS5LuY44GR44KLXCIsXG5cdFwiU0FWRV9USElTX0ZPUk1cIjogXCLlvaLlvI/jgpLjgrXjg7zjg5ZcIixcblx0XCJGSU5BTF9TVEVQXCI6IFwi44OV44Kh44Kk44OK44Or44K544OG44OD44OXIDog44OX44Os44OT44Ol44O85b2i5byPXCIsXG5cdFwiREFUQV9NT0RFTFwiOiBcIuODh+ODvOOCv+ODvOODouODh+ODq1wiLFxuXHRcIkZJRUxEU19NT0RFTFwiOiBcIuODouODh+ODq+ODleOCo+ODvOODq+ODiVwiLFxuXHRcIlNFTEVDVF9BX0NUUkxcIjogXCLjgrPjg7Pjg4jjg63jg7zjg6vjgpLpgbjjgbPpgbjmip5cIixcblx0XCJTRUxFQ1RfQ1RSTF9JTl9MSVNUXCI6IFwi5Lul5LiL44Gu44Oq44K544OI44GL44KJ44Kz44Oz44OI44Ot44O844Or44KS6YG444Gz6YG45oqeXCIsXG5cdFwiQ09MX1dJTExfQkVfQkxBTktcIjogXCLnqbrjgavjgarjgovliJdcIixcblx0XCJFRElUX1BST1BFUlRJRVNcIjogXCLjg5fjg63jg5Hjg4bjgqPjga7lpInmm7RcIixcblx0XCJIRUFERVJfVEVYVFwiOiBcIuODmOODg+ODgOODvOODhuOCreOCueODiFwiLFxuXHRcIkFERF9FRElUX0hFQURFUl9IRVJFXCI6IFwi44OY44OD44OA44O844OG44Kt44K544OI5paH5a2X5aSJ5pu0XCIsXG5cdFwiU1VCVElUTEVfVEVYVFwiOiBcIuOCteODluOCv+OCpOODiOODq+OAgOODhuOCreOCueODiFwiLFxuXHRcIkFERF9FRElUX1NVQlRJTF9IRVJFXCI6IFwi44K144OW44K/44Kk44OI44Or44OG44Kt44K544OI5paH5a2X5aSJ5pu0XCIsXG5cdFwiTEFCRUxfVEVYVFwiOiBcIuODqeODmeODq+ODhuOCreOCueODiFwiLFxuXHRcIkFERF9FRElUX0xBQkVMX0hFUkVcIjogXCLjg6njg5njg6vjg4bjgq3jgrnjg4jmloflrZflpInmm7RcIixcblx0XCJQTEFDRUhPTERFUlwiOiBcIuODl+ODrOODvOOCueODm+ODq+ODgOODvFwiLFxuXHRcIkFERF9FRElUX1BMQUNFSE9MRFwiOiBcIuODl+ODrOODvOOCueODm+ODq+ODgOODvOaWh+Wtl+WkieabtFwiLFxuXHRcIlJFUVVJUkVEXCI6IFwi5b+F6aCIXCIsXG5cdFwiREVTQ1JJUFRJT05cIjogXCLoqqzmmI5cIixcblx0XCJBRERFRElUX0RFU0NSSVBUSU9OXCI6IFwi6Kqs5piO44Gu5aSJ5pu0XCIsXG5cdFwiREVGQVVMVFZBTFVFXCI6IFwi44OH44OV44Kp44Or44OI5YCkXCIsXG5cdFwiQUREX0VESVRfREVGQVVMVFZBTFVFX1BMQUNFSE9MRFwiOiBcIuOBk+OBk+OBq+ODh+ODleOCqeODq+ODiOWApOOCkui/veWKoC/nt6jpm4bjgZnjgotcIixcblx0XCJEQVRFX0ZPUk1BVFwiOiBcIuaXpeS7mOOBruW9ouW8j1wiLFxuXHRcIkFERF9ORVdfUkFESU9cIjogXCLmlrDjg6njgrjjgqrjg5zjgr/jg7PjgpLov73liqBcIixcblx0XCJBRERfUkFESU9fUExBQ0VIT0xEXCI6IFwi5paw44Op44K444Kq44Oc44K/44Oz44KS6L+95YqgXCIsXG5cdFwiRURJVF9SRU1PVkVfUkFESU9cIjogXCLjg6njgrjjgqrjg5zjgr/jg7PlpInmm7RcIixcblx0XCJOT19SQURJT19BRERfTkVXXCI6IFwi44Op44K444Kq54Sh44GXIDog5paw44Op44K444Kq44Oc44K/44Oz6L+95YqgXCIsXG5cdFwiU0VBUkNIXzRfT1BUSU9OXCI6IFwi44Kq44OX44K344On44Oz5qSc57SiXCIsXG5cdFwiQUREXCI6IFwi6L+95YqgXCIsXG5cdFwiT1JERVJcIjogXCLpoIbnlapcIixcblx0XCJPUFRJT05cIjogXCLjgqrjg5fjgrfjg6fjg7NcIixcblx0XCJHUk9VUFwiOiBcIuOCsOODq+ODvOODl1wiLFxuXHRcIkFERF9ORVdfT1BUSU9OU1wiOiBcIuaWsOOBl+OBhOOCquODl+OCt+ODp+ODs+i/veWKoFwiLFxuXHRcIkFERF9BX05FV19PUFRJT05cIjogXCLmlrDjgZfjgYTjgqrjg5fjgrfjg6fjg7Pov73liqBcIixcblx0XCJFRElUX1JFTU9WRV9PUFRJT05TXCI6IFwi44Kq44OX44K344On44Oz44Gu5aSJ5pu0XCIsXG5cdFwiTk9fT1BUSU9OX0FERF9ORVdcIjogXCLjgqrjg5fjgrfjg6fjg7PnhKHjgZcgOiDmlrDjgZfjgYTjgqrjg5fjgrfjg6fjg7Pov73liqBcIixcblx0XCJBRERfTkVXX0dST1VQU1wiOiBcIuaWsOOBl+OBhOOCsOODq+ODvOODl+i/veWKoFwiLFxuXHRcIkFERF9BX05FV19HUk9VUFwiOiBcIuaWsOOBl+OBhOOCsOODq+ODvOODl+i/veWKoFwiLFxuXHRcIkVESVRfR1JPVVBTX09QVElPTlNcIjogXCLjgrDjg6vjg7zjg5fjgpLlpInmm7RcIixcblx0XCJOT19HUk9VUF9BRERfTkVXXCI6IFwi44Kw44Or44O844OX44KS6L+95YqgXCIsXG5cdFwiT0tcIjogXCLjgqrjg4PjgrHjg7xcIixcblx0XCJDQU5DRUxcIjogXCLjgq3jg6Pjg7Pjgrvjg6tcIlxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9pMThuL2xvY2FsLWpwLmpzb25cbi8vIG1vZHVsZSBpZCA9IDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 19 */
+/***/ function(module, exports) {
+
+ eval("module.exports = {\n\t\"SAY_HI\": \"Olá\",\n\t\"EDIT_TAB\": \"Editar / Criar\",\n\t\"PREVIEW_TAB\": \"Pré-visualizar\",\n\t\"WIZARD_LINES\": \"linhas\",\n\t\"WIZARD_LAYOUT\": \"layout\",\n\t\"WIZARD_CONTROLS\": \"controles\",\n\t\"WIZARD_SAVE\": \"salvar\",\n\t\"PAGER_PREVIOUS\": \"Anterior\",\n\t\"PAGER_NEXT\": \"Próximo\",\n\t\"COMMAND_PANEL\": \"Comando\",\n\t\"VISUAL_PANEL\": \"Visual\",\n\t\"ADD_NEW_LINE\": \"Adicionar uma nova linha\",\n\t\"SELECTED_LINE\": \"Linha selecionada\",\n\t\"NUMBER_OF_COLUMN\": \"número de colunas\",\n\t\"APPLY_CTRL2COL\": \"Aplicar controles às colunas\",\n\t\"CLIC_TAP_2_OPEN\": \"Click / Toque em uma coluna para abrir controle de seleção\",\n\t\"SELECT_2_APPLY_COL\": \"Selecione o controle desejado para aplicar a esta coluna\",\n\t\"CUSTOM_SUBMIT_BTN\": \"Customizar texto do botão Enviar\",\n\t\"CUSTOM_CANCEL_BTN\": \"Customizar texto do botão Cancelar\",\n\t\"NAME_THIS_FORM\": \"Nome deste formulário\",\n\t\"SAVE_THIS_FORM\": \"Salvar este formulário\",\n\t\"FINAL_STEP\": \"Passo final : Visualizar formulário\",\n\t\"DATA_MODEL\": \"Modelo de dados\",\n\t\"FIELDS_MODEL\": \"Modelo de campos (pronto para salvar na base de dados)\",\n\t\"SELECT_A_CTRL\": \"Selecionar um controle\",\n\t\"SELECT_CTRL_IN_LIST\": \"Selecionar um controle na lista a seguir\",\n\t\"COL_WILL_BE_BLANK\": \"Coluna ficará em branco\",\n\t\"EDIT_PROPERTIES\": \"Editar propriedades\",\n\t\"HEADER_TEXT\": \"Texto do cabeçalho\",\n\t\"ADD_EDIT_HEADER_HERE\": \"Adicionar / editar o texto do cabeçalho aqui\",\n\t\"SUBTITLE_TEXT\": \"Texto da legenda\",\n\t\"ADD_EDIT_SUBTIL_HERE\": \"Adicionar /Editar o texto da legenda aqui\",\n\t\"LABEL_TEXT\": \"Texto do label\",\n\t\"ADD_EDIT_LABEL_HERE\": \"Adicionar / Editar texto do controle label aqui\",\n\t\"PLACEHOLDER\": \"placeholder\",\n\t\"ADD_EDIT_PLACEHOLD\": \"Adicionar / editar texto do placeholder aqui\",\n\t\"REQUIRED\": \"Obrigatório\",\n\t\"DESCRIPTION\": \"Descrição\",\n\t\"ADDEDIT_DESCRIPTION\": \"Adicionar / editar descrição aqui\",\n\t\"DEFAULTVALUE\": \"Valor padrão\",\n\t\"ADD_EDIT_DEFAULTVALUE_PLACEHOLD\": \"Adicionar / editar valor padrão aqui\",\n\t\"DATE_FORMAT\": \"Formato da data\",\n\t\"ADD_NEW_RADIO\": \"Adicionar novo radio\",\n\t\"ADD_RADIO_PLACEHOLD\": \"Adicionar novo radio\",\n\t\"EDIT_REMOVE_RADIO\": \"Editar/Remover radio\",\n\t\"NO_RADIO_ADD_NEW\": \"nenhum radio : Adicionar novo valor ao radio \",\n\t\"SEARCH_4_OPTION\": \"procurar por opções\",\n\t\"ADD\": \"adicionar\",\n\t\"ORDER\": \"ordem\",\n\t\"OPTION\": \"opção\",\n\t\"GROUP\": \"grupo\",\n\t\"Add_NEW_OPTIONS\": \"Adicionar nova opção\",\n\t\"ADD_A_NEW_OPTION\": \"Adicionar nova opção\",\n\t\"EDIT_REMOVE_OPTIONS\": \"Editar/Remover opções\",\n\t\"NO_OPTION_ADD_NEW\": \"nenhuma opção : adicionar nova opções\",\n\t\"ADD_NEW_GROUPS\": \"Adicionar novos grupos\",\n\t\"ADD_A_NEW_GROUP\": \"adicionar novo grupo\",\n\t\"EDIT_GROUPS_OPTIONS\": \"Editar/Remover opções/grupos\",\n\t\"NO_GROUP_ADD_NEW\": \"adicionar novo grupo\",\n\t\"OK\": \"OK\",\n\t\"CANCEL\": \"Cancelar\"\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvaTE4bi9sb2NhbC1wdC1ici5qc29uP2JmOWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE5LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG5cdFwiU0FZX0hJXCI6IFwiT2zDoVwiLFxuXHRcIkVESVRfVEFCXCI6IFwiRWRpdGFyIC8gQ3JpYXJcIixcblx0XCJQUkVWSUVXX1RBQlwiOiBcIlByw6ktdmlzdWFsaXphclwiLFxuXHRcIldJWkFSRF9MSU5FU1wiOiBcImxpbmhhc1wiLFxuXHRcIldJWkFSRF9MQVlPVVRcIjogXCJsYXlvdXRcIixcblx0XCJXSVpBUkRfQ09OVFJPTFNcIjogXCJjb250cm9sZXNcIixcblx0XCJXSVpBUkRfU0FWRVwiOiBcInNhbHZhclwiLFxuXHRcIlBBR0VSX1BSRVZJT1VTXCI6IFwiQW50ZXJpb3JcIixcblx0XCJQQUdFUl9ORVhUXCI6IFwiUHLDs3hpbW9cIixcblx0XCJDT01NQU5EX1BBTkVMXCI6IFwiQ29tYW5kb1wiLFxuXHRcIlZJU1VBTF9QQU5FTFwiOiBcIlZpc3VhbFwiLFxuXHRcIkFERF9ORVdfTElORVwiOiBcIkFkaWNpb25hciB1bWEgbm92YSBsaW5oYVwiLFxuXHRcIlNFTEVDVEVEX0xJTkVcIjogXCJMaW5oYSBzZWxlY2lvbmFkYVwiLFxuXHRcIk5VTUJFUl9PRl9DT0xVTU5cIjogXCJuw7ptZXJvIGRlIGNvbHVuYXNcIixcblx0XCJBUFBMWV9DVFJMMkNPTFwiOiBcIkFwbGljYXIgY29udHJvbGVzIMOgcyBjb2x1bmFzXCIsXG5cdFwiQ0xJQ19UQVBfMl9PUEVOXCI6IFwiQ2xpY2sgLyBUb3F1ZSBlbSB1bWEgY29sdW5hIHBhcmEgYWJyaXIgY29udHJvbGUgZGUgc2VsZcOnw6NvXCIsXG5cdFwiU0VMRUNUXzJfQVBQTFlfQ09MXCI6IFwiU2VsZWNpb25lIG8gY29udHJvbGUgZGVzZWphZG8gcGFyYSBhcGxpY2FyIGEgZXN0YSBjb2x1bmFcIixcblx0XCJDVVNUT01fU1VCTUlUX0JUTlwiOiBcIkN1c3RvbWl6YXIgdGV4dG8gZG8gYm90w6NvIEVudmlhclwiLFxuXHRcIkNVU1RPTV9DQU5DRUxfQlROXCI6IFwiQ3VzdG9taXphciB0ZXh0byBkbyBib3TDo28gQ2FuY2VsYXJcIixcblx0XCJOQU1FX1RISVNfRk9STVwiOiBcIk5vbWUgZGVzdGUgZm9ybXVsw6FyaW9cIixcblx0XCJTQVZFX1RISVNfRk9STVwiOiBcIlNhbHZhciBlc3RlIGZvcm11bMOhcmlvXCIsXG5cdFwiRklOQUxfU1RFUFwiOiBcIlBhc3NvIGZpbmFsIDogVmlzdWFsaXphciBmb3JtdWzDoXJpb1wiLFxuXHRcIkRBVEFfTU9ERUxcIjogXCJNb2RlbG8gZGUgZGFkb3NcIixcblx0XCJGSUVMRFNfTU9ERUxcIjogXCJNb2RlbG8gZGUgY2FtcG9zIChwcm9udG8gcGFyYSBzYWx2YXIgbmEgYmFzZSBkZSBkYWRvcylcIixcblx0XCJTRUxFQ1RfQV9DVFJMXCI6IFwiU2VsZWNpb25hciB1bSBjb250cm9sZVwiLFxuXHRcIlNFTEVDVF9DVFJMX0lOX0xJU1RcIjogXCJTZWxlY2lvbmFyIHVtIGNvbnRyb2xlIG5hIGxpc3RhIGEgc2VndWlyXCIsXG5cdFwiQ09MX1dJTExfQkVfQkxBTktcIjogXCJDb2x1bmEgZmljYXLDoSBlbSBicmFuY29cIixcblx0XCJFRElUX1BST1BFUlRJRVNcIjogXCJFZGl0YXIgcHJvcHJpZWRhZGVzXCIsXG5cdFwiSEVBREVSX1RFWFRcIjogXCJUZXh0byBkbyBjYWJlw6dhbGhvXCIsXG5cdFwiQUREX0VESVRfSEVBREVSX0hFUkVcIjogXCJBZGljaW9uYXIgLyBlZGl0YXIgbyB0ZXh0byBkbyBjYWJlw6dhbGhvIGFxdWlcIixcblx0XCJTVUJUSVRMRV9URVhUXCI6IFwiVGV4dG8gZGEgbGVnZW5kYVwiLFxuXHRcIkFERF9FRElUX1NVQlRJTF9IRVJFXCI6IFwiQWRpY2lvbmFyIC9FZGl0YXIgbyB0ZXh0byBkYSBsZWdlbmRhIGFxdWlcIixcblx0XCJMQUJFTF9URVhUXCI6IFwiVGV4dG8gZG8gbGFiZWxcIixcblx0XCJBRERfRURJVF9MQUJFTF9IRVJFXCI6IFwiQWRpY2lvbmFyIC8gRWRpdGFyIHRleHRvIGRvIGNvbnRyb2xlIGxhYmVsIGFxdWlcIixcblx0XCJQTEFDRUhPTERFUlwiOiBcInBsYWNlaG9sZGVyXCIsXG5cdFwiQUREX0VESVRfUExBQ0VIT0xEXCI6IFwiQWRpY2lvbmFyIC8gZWRpdGFyIHRleHRvIGRvIHBsYWNlaG9sZGVyIGFxdWlcIixcblx0XCJSRVFVSVJFRFwiOiBcIk9icmlnYXTDs3Jpb1wiLFxuXHRcIkRFU0NSSVBUSU9OXCI6IFwiRGVzY3Jpw6fDo29cIixcblx0XCJBRERFRElUX0RFU0NSSVBUSU9OXCI6IFwiQWRpY2lvbmFyIC8gZWRpdGFyIGRlc2NyacOnw6NvIGFxdWlcIixcblx0XCJERUZBVUxUVkFMVUVcIjogXCJWYWxvciBwYWRyw6NvXCIsXG5cdFwiQUREX0VESVRfREVGQVVMVFZBTFVFX1BMQUNFSE9MRFwiOiBcIkFkaWNpb25hciAvIGVkaXRhciB2YWxvciBwYWRyw6NvIGFxdWlcIixcblx0XCJEQVRFX0ZPUk1BVFwiOiBcIkZvcm1hdG8gZGEgZGF0YVwiLFxuXHRcIkFERF9ORVdfUkFESU9cIjogXCJBZGljaW9uYXIgbm92byByYWRpb1wiLFxuXHRcIkFERF9SQURJT19QTEFDRUhPTERcIjogXCJBZGljaW9uYXIgbm92byByYWRpb1wiLFxuXHRcIkVESVRfUkVNT1ZFX1JBRElPXCI6IFwiRWRpdGFyL1JlbW92ZXIgcmFkaW9cIixcblx0XCJOT19SQURJT19BRERfTkVXXCI6IFwibmVuaHVtIHJhZGlvIDogQWRpY2lvbmFyIG5vdm8gdmFsb3IgYW8gcmFkaW8gXCIsXG5cdFwiU0VBUkNIXzRfT1BUSU9OXCI6IFwicHJvY3VyYXIgcG9yIG9ww6fDtWVzXCIsXG5cdFwiQUREXCI6IFwiYWRpY2lvbmFyXCIsXG5cdFwiT1JERVJcIjogXCJvcmRlbVwiLFxuXHRcIk9QVElPTlwiOiBcIm9ww6fDo29cIixcblx0XCJHUk9VUFwiOiBcImdydXBvXCIsXG5cdFwiQWRkX05FV19PUFRJT05TXCI6IFwiQWRpY2lvbmFyIG5vdmEgb3DDp8Ojb1wiLFxuXHRcIkFERF9BX05FV19PUFRJT05cIjogXCJBZGljaW9uYXIgbm92YSBvcMOnw6NvXCIsXG5cdFwiRURJVF9SRU1PVkVfT1BUSU9OU1wiOiBcIkVkaXRhci9SZW1vdmVyIG9ww6fDtWVzXCIsXG5cdFwiTk9fT1BUSU9OX0FERF9ORVdcIjogXCJuZW5odW1hIG9ww6fDo28gOiBhZGljaW9uYXIgbm92YSBvcMOnw7Vlc1wiLFxuXHRcIkFERF9ORVdfR1JPVVBTXCI6IFwiQWRpY2lvbmFyIG5vdm9zIGdydXBvc1wiLFxuXHRcIkFERF9BX05FV19HUk9VUFwiOiBcImFkaWNpb25hciBub3ZvIGdydXBvXCIsXG5cdFwiRURJVF9HUk9VUFNfT1BUSU9OU1wiOiBcIkVkaXRhci9SZW1vdmVyIG9ww6fDtWVzL2dydXBvc1wiLFxuXHRcIk5PX0dST1VQX0FERF9ORVdcIjogXCJhZGljaW9uYXIgbm92byBncnVwb1wiLFxuXHRcIk9LXCI6IFwiT0tcIixcblx0XCJDQU5DRUxcIjogXCJDYW5jZWxhclwiXG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2kxOG4vbG9jYWwtcHQtYnIuanNvblxuLy8gbW9kdWxlIGlkID0gMTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 20 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* global angular */\nvar CORE_MODULES = ['textAngular', 'textAngularSetup', 'ngAnimate', 'toaster', 'formly', 'formlyBootstrap', 'ui.bootstrap', 'nya.bootstrap.select', 'pascalprecht.translate'];\n\nexports.default = angular.module('edaStepWayEasyFormGen.core', CORE_MODULES);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29yZS9jb3JlLm1vZHVsZS5qcz9hMGFmIl0sIm5hbWVzIjpbIkNPUkVfTU9EVUxFUyIsImFuZ3VsYXIiLCJtb2R1bGUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQSxJQUFNQSxlQUFlLENBQ25CLGFBRG1CLEVBRW5CLGtCQUZtQixFQUduQixXQUhtQixFQUluQixTQUptQixFQUtuQixRQUxtQixFQU1uQixpQkFObUIsRUFPbkIsY0FQbUIsRUFRbkIsc0JBUm1CLEVBU25CLHdCQVRtQixDQUFyQjs7a0JBWWVDLFFBQ0VDLE1BREYsQ0FDUyw0QkFEVCxFQUN1Q0YsWUFEdkMsQyIsImZpbGUiOiIyMC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCBhbmd1bGFyICovXG5jb25zdCBDT1JFX01PRFVMRVMgPSBbXG4gICd0ZXh0QW5ndWxhcicsXG4gICd0ZXh0QW5ndWxhclNldHVwJyxcbiAgJ25nQW5pbWF0ZScsXG4gICd0b2FzdGVyJyxcbiAgJ2Zvcm1seScsXG4gICdmb3JtbHlCb290c3RyYXAnLFxuICAndWkuYm9vdHN0cmFwJyxcbiAgJ255YS5ib290c3RyYXAuc2VsZWN0JyxcbiAgJ3Bhc2NhbHByZWNodC50cmFuc2xhdGUnXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZSgnZWRhU3RlcFdheUVhc3lGb3JtR2VuLmNvcmUnLCBDT1JFX01PRFVMRVMpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvcmUvY29yZS5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 21 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayMain = __webpack_require__(22);\n\nvar _stepwayMain2 = _interopRequireDefault(_stepwayMain);\n\nvar _stepwayMain3 = __webpack_require__(26);\n\nvar _stepwayMain4 = _interopRequireDefault(_stepwayMain3);\n\nvar _stepwayMain5 = __webpack_require__(28);\n\nvar _stepwayMain6 = _interopRequireDefault(_stepwayMain5);\n\nvar _stepwayMainPager = __webpack_require__(29);\n\nvar _stepwayMainPager2 = _interopRequireDefault(_stepwayMainPager);\n\nvar _stepwayMainStepIndicator = __webpack_require__(31);\n\nvar _stepwayMainStepIndicator2 = _interopRequireDefault(_stepwayMainStepIndicator);\n\nvar _stepwayMainStepZeroContent = __webpack_require__(33);\n\nvar _stepwayMainStepZeroContent2 = _interopRequireDefault(_stepwayMainStepZeroContent);\n\nvar _stepwayMainStepOneContent = __webpack_require__(37);\n\nvar _stepwayMainStepOneContent2 = _interopRequireDefault(_stepwayMainStepOneContent);\n\nvar _stepwayMainStepTwoContent = __webpack_require__(41);\n\nvar _stepwayMainStepTwoContent2 = _interopRequireDefault(_stepwayMainStepTwoContent);\n\nvar _stepwayMainStepThreeContent = __webpack_require__(45);\n\nvar _stepwayMainStepThreeContent2 = _interopRequireDefault(_stepwayMainStepThreeContent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar STEP_WAY_MAIN_MODULE = 'easyFormStepwayMainModule';\n\nvar TO_INJECT = [_stepwayMainPager2.default.name, _stepwayMainStepIndicator2.default.name, _stepwayMainStepZeroContent2.default.name, _stepwayMainStepOneContent2.default.name, _stepwayMainStepTwoContent2.default.name, _stepwayMainStepThreeContent2.default.name];\n\nexports.default = angular.module(STEP_WAY_MAIN_MODULE, TO_INJECT).controller(_stepwayMain.STEP_WAY_MAIN_CONTROLLER_NAME, _stepwayMain2.default).directive(_stepwayMain3.STEP_WAY_DIRECTIVE_NAME, _stepwayMain4.default).provider(_stepwayMain5.EASY_FORM_STEP_WAY_CONFIG_NAME, _stepwayMain6.default);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXB3YXkubWFpbi5tb2R1bGUuanM/MGJmMSJdLCJuYW1lcyI6WyJTVEVQX1dBWV9NQUlOX01PRFVMRSIsIlRPX0lOSkVDVCIsIm5hbWUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29udHJvbGxlciIsImRpcmVjdGl2ZSIsInByb3ZpZGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUdBOzs7O0FBR0E7Ozs7QUFHQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OztBQUVBLElBQU9BLHVCQUF1QiwyQkFBOUI7O0FBRUEsSUFBTUMsWUFBWSxDQUNoQiwyQkFBWUMsSUFESSxFQUVoQixtQ0FBb0JBLElBRkosRUFHaEIscUNBQXNCQSxJQUhOLEVBSWhCLG9DQUFxQkEsSUFKTCxFQUtoQixvQ0FBcUJBLElBTEwsRUFNaEIsc0NBQXVCQSxJQU5QLENBQWxCOztrQkFTZUMsUUFDRUMsTUFERixDQUNTSixvQkFEVCxFQUMrQkMsU0FEL0IsRUFFRUksVUFGRixvRUFHRUMsU0FIRiwrREFJRUMsUUFKRixxRSIsImZpbGUiOiIyMS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlZGFTdGVwV2F5RWFzeUZvcm1HZW5Db250cm9sbGVyLCB7XG4gIFNURVBfV0FZX01BSU5fQ09OVFJPTExFUl9OQU1FXG59ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL3N0ZXB3YXkubWFpbi5jb250cm9sbGVyJztcbmltcG9ydCBlZGFTdGVwV2F5RWFzeUZvcm1HZW5EaXJlY3RpdmUsIHtcbiAgU1RFUF9XQVlfRElSRUNUSVZFX05BTUVcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vc3RlcHdheS5tYWluLmRpcmVjdGl2ZSc7XG5pbXBvcnQgZWFzeUZvcm1TdGVXYXlDb25maWcsIHtcbiAgRUFTWV9GT1JNX1NURVBfV0FZX0NPTkZJR19OQU1FXG59ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL3N0ZXB3YXkubWFpbi5wcm92aWRlcic7XG5pbXBvcnQgcGFnZXJNb2R1bGUgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL3BhZ2VyL3N0ZXB3YXkubWFpbi5wYWdlci5tb2R1bGUnO1xuaW1wb3J0IHBhZ2VJbmRpY2F0b3JNb2R1bGUgICAgICAgICAgICAgICAgZnJvbSAnLi9zdGVwSW5kaWNhdG9yL3N0ZXB3YXkubWFpbi5zdGVwSW5kaWNhdG9yLm1vZHVsZSc7XG5pbXBvcnQgc3RlcFplcm9Db250ZW50TW9kdWxlICAgICAgICAgICAgICBmcm9tICcuL3N0ZXBaZXJvQ29udGVudC9zdGVwd2F5Lm1haW4uc3RlcFplcm9Db250ZW50Lm1vZHVsZSc7XG5pbXBvcnQgc3RlcE9uZUNvbnRlbnRNb2R1bGUgICAgICAgICAgICAgICBmcm9tICcuL3N0ZXBPbmVDb250ZW50L3N0ZXB3YXkubWFpbi5zdGVwT25lQ29udGVudC5tb2R1bGUnO1xuaW1wb3J0IHN0ZXBUd29Db250ZW50TW9kdWxlICAgICAgICAgICAgICAgZnJvbSAnLi9zdGVwVHdvQ29udGVudC9zdGVwd2F5Lm1haW4uc3RlcFR3b0NvbnRlbnQubW9kdWxlJztcbmltcG9ydCBzdGVwVGhyZWVDb250ZW50TW9kdWxlICAgICAgICAgICAgIGZyb20gJy4vc3RlcFRocmVlQ29udGVudC9zdGVwd2F5Lm1haW4uc3RlcFRocmVlQ29udGVudC5tb2R1bGUnO1xuXG5jb25zdCAgU1RFUF9XQVlfTUFJTl9NT0RVTEUgPSAnZWFzeUZvcm1TdGVwd2F5TWFpbk1vZHVsZSc7XG5cbmNvbnN0IFRPX0lOSkVDVCA9IFtcbiAgcGFnZXJNb2R1bGUubmFtZSxcbiAgcGFnZUluZGljYXRvck1vZHVsZS5uYW1lLFxuICBzdGVwWmVyb0NvbnRlbnRNb2R1bGUubmFtZSxcbiAgc3RlcE9uZUNvbnRlbnRNb2R1bGUubmFtZSxcbiAgc3RlcFR3b0NvbnRlbnRNb2R1bGUubmFtZSxcbiAgc3RlcFRocmVlQ29udGVudE1vZHVsZS5uYW1lXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShTVEVQX1dBWV9NQUlOX01PRFVMRSwgVE9fSU5KRUNUKVxuICAgICAgICAgICAgICAgIC5jb250cm9sbGVyKFNURVBfV0FZX01BSU5fQ09OVFJPTExFUl9OQU1FLCAgZWRhU3RlcFdheUVhc3lGb3JtR2VuQ29udHJvbGxlcilcbiAgICAgICAgICAgICAgICAuZGlyZWN0aXZlKFNURVBfV0FZX0RJUkVDVElWRV9OQU1FLCAgICAgICAgIGVkYVN0ZXBXYXlFYXN5Rm9ybUdlbkRpcmVjdGl2ZSlcbiAgICAgICAgICAgICAgICAucHJvdmlkZXIoRUFTWV9GT1JNX1NURVBfV0FZX0NPTkZJR19OQU1FLCAgIGVhc3lGb3JtU3RlV2F5Q29uZmlnKTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL21haW4vc3RlcHdheS5tYWluLm1vZHVsZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 22 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.STEP_WAY_MAIN_CONTROLLERAS_NAME = exports.STEP_WAY_MAIN_CONTROLLER_NAME = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _stepwayMainController = __webpack_require__(23);\n\nvar _stepwayEditControlModalTemplate = __webpack_require__(24);\n\nvar _stepwayEditControlModalTemplate2 = _interopRequireDefault(_stepwayEditControlModalTemplate);\n\nvar _stepwayEditControlModal = __webpack_require__(25);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar STEP_WAY_MAIN_CONTROLLER_NAME = 'edaStepWayEasyFormGenController';\nvar STEP_WAY_MAIN_CONTROLLERAS_NAME = 'vm';\n\nvar edaStepWayEasyFormGenController = function () {\n function edaStepWayEasyFormGenController(easyFormGenVersion, $filter, toaster, $timeout, $uibModal, $log, $formlyProxy, $modalProxy, easyFormSteWayConfig) {\n _classCallCheck(this, edaStepWayEasyFormGenController);\n\n this.easyFormGenVersion = easyFormGenVersion;\n this.$filter = $filter;\n this.toaster = toaster;\n this.$timeout = $timeout;\n this.$modal = $uibModal;\n this.$log = $log;\n this.$formlyProxy = $formlyProxy;\n this.$modalProxy = $modalProxy;\n this.easyFormSteWayConfig = easyFormSteWayConfig;\n\n this.init();\n }\n\n _createClass(edaStepWayEasyFormGenController, [{\n key: 'init',\n value: function init() {\n\n this.dataModel = {};\n this.wfFormFields = [];\n this.wfFormFieldsOnlyNeededProperties = [];\n this.easyFormGeneratorVERSION = this.easyFormGenVersion;\n this.debug = (0, _stepwayMainController.initDebugModel)();\n this.tab = (0, _stepwayMainController.initTabModel)(this.easyFormSteWayConfig.isPreviewPanelVisible(), this.easyFormSteWayConfig.arePreviewModelsVisible());\n this.configuration = {}; //configuration model (contains array of lines which contains array of columns)\n this.numberOfColumns = 1;\n this.MaxNumberOfColumns = 3;\n this.MinNumberOfColumns = 1;\n this.columnTemplate = (0, _stepwayMainController.initColumnTemplate)(); //TODO : check is really needed\n this.lineTemplate = (0, _stepwayMainController.initLineTemplate)(); //TODO : check if really needed\n this.nyaSelect = {};\n this.animationsEnabled = this.easyFormSteWayConfig.getModalAnimationValue(); //-> disabling animation untill correction in angular bootstrap\n this.editControlModalSize = 'lg';\n this.formlyList = {};\n this.previewLoadedForm = { fieldsModel: [] };\n this.configurationLoaded = {};\n this.returnSaveEvent = false;\n //this.resetToZeroModel = resetToZeroModel; //function no more used\n this.$formlyProxy.initConfigurationEditFromScratch(this.configuration);\n this.$modalProxy.initNyaSelect(this.nyaSelect);\n }\n }, {\n key: 'onSubmit',\n value: function onSubmit() {\n var JSONedModel = this.$filter('json')(this.dataModel, 4);\n this.toaster.pop({\n type: 'info',\n timeout: 2000,\n title: 'it should save data model if it were not in editor',\n body: 'data : ' + JSONedModel,\n showCloseButton: true\n });\n }\n }, {\n key: 'countConfigurationModelLines',\n value: function countConfigurationModelLines() {\n this.debug.configurationModelNumberofLines = this.configuration.lines.length;\n return this.configuration.lines.length;\n }\n }, {\n key: 'setActiveLineNumber',\n value: function setActiveLineNumber(lineNumber) {\n if (lineNumber <= this.countConfigurationModelLines()) {\n this.configuration.activeLine = lineNumber;\n }\n }\n }, {\n key: 'upThisLine',\n value: function upThisLine(indexLine) {\n if (indexLine > -1) {\n if (this.configuration.lines[indexLine - 1]) {\n var currentLineObj = this.configuration.lines[indexLine];\n this.configuration.lines.splice(indexLine, 1);\n this.configuration.lines.splice(indexLine - 1, 0, currentLineObj);\n //manage selected aciveLine\n this.configuration.activeLine = 1;\n }\n }\n //re-render formfield\n this.$formlyProxy.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n }\n }, {\n key: 'downThisLine',\n value: function downThisLine(indexLine) {\n if (indexLine > -1) {\n if (this.configuration.lines[indexLine + 1]) {\n var currentLineObj = this.configuration.lines[indexLine];\n this.configuration.lines.splice(indexLine, 1);\n this.configuration.lines.splice(indexLine + 1, 0, currentLineObj);\n //manage selected aciveLine\n this.configuration.activeLine = 1;\n }\n }\n //re-render formfield\n this.$formlyProxy.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n }\n }, {\n key: 'addNewline',\n value: function addNewline() {\n this.configuration.lines.push((0, _stepwayMainController.initLineTemplate)());\n //re-render formfield\n this.$formlyProxy.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n }\n }, {\n key: 'removeThisLine',\n value: function removeThisLine(index) {\n if (index > -1) {\n if (this.configuration.lines.length > 1) {\n //manage selected aciveLine\n if (this.configuration.activeLine === index + 1) this.configuration.activeLine = 1;\n this.configuration.lines.splice(index, 1);\n } else {\n this.$timeout(function () {\n this.toaster.pop({\n type: 'warning',\n title: 'Last line',\n body: 'Can\\'t delete the last line',\n showCloseButton: true\n });\n }, 100);\n }\n //re-render formfield\n this.$formlyProxy.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n }\n }\n }, {\n key: 'increaseNumberOfColumns',\n value: function increaseNumberOfColumns() {\n var lineIndex = this.configuration.activeLine - 1;\n if (this.configuration.lines[lineIndex].columns.length < this.MaxNumberOfColumns) {\n\n var newNumberOfColumns = this.configuration.lines[lineIndex].columns.push(angular.copy((0, _stepwayMainController.initColumnTemplate)()));\n this.configuration.lines[lineIndex].columns[newNumberOfColumns - 1].numColumn = newNumberOfColumns;\n }\n //re-render formfield\n this.$formlyProxy.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n }\n }, {\n key: 'decreaseNumberOfColumns',\n value: function decreaseNumberOfColumns() {\n if (this.configuration.lines[this.configuration.activeLine - 1].columns.length > 1) {\n this.configuration.lines[this.configuration.activeLine - 1].columns.splice(this.configuration.lines[this.configuration.activeLine - 1].columns.length - 1, 1);\n }\n this.$formlyProxy.applyConfigurationToformlyModel(this.configuration, this.wfFormFields, this.dataModel);\n this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n }\n }, {\n key: 'resetStepCounter',\n value: function resetStepCounter() {\n this.configuration.configStepCounter = 0;\n }\n }, {\n key: 'nextConfigStep',\n value: function nextConfigStep() {\n var configStepCounterMAX = this.configuration.listConfigStep.length - 1;\n if (this.configuration.configStepCounter !== configStepCounterMAX) {\n this.configuration.configStepCounter++;\n }\n this.setTrueThisStepIndicator(this.configuration.configStepCounter);\n }\n }, {\n key: 'resetAllIndicators',\n value: function resetAllIndicators() {\n for (var i = this.configuration.stepIndicators.length - 1; i >= 0; i--) {\n this.configuration.stepIndicators[i] = false;\n }\n }\n }, {\n key: 'setTrueThisStepIndicator',\n value: function setTrueThisStepIndicator(indexIndicator) {\n this.resetAllIndicators();\n this.configuration.stepIndicators[indexIndicator] = true;\n }\n }, {\n key: 'previousConfigStep',\n value: function previousConfigStep() {\n if (this.configuration.configStepCounter !== 0) {\n this.configuration.configStepCounter--;\n }\n this.setTrueThisStepIndicator(this.configuration.configStepCounter);\n }\n }, {\n key: 'goToStep',\n value: function goToStep(index) {\n this.configuration.configStepCounter = index;\n this.setTrueThisStepIndicator(this.configuration.configStepCounter);\n }\n }, {\n key: 'stepReachable',\n value: function stepReachable(indexStep) {\n if (indexStep < this.configuration.configStepCounter) {\n return 'disabled';\n } else {\n return 'enabled';\n }\n }\n }, {\n key: 'showModalAddCtrlToColumn',\n value: function showModalAddCtrlToColumn(size, indexLine, numcolumn) {\n var _this = this;\n\n var editControlModal = {};\n angular.extend(editControlModal, {\n animation: this.animationsEnabled,\n template: _stepwayEditControlModalTemplate2.default,\n controller: _stepwayEditControlModal.EDIT_MODAL_CONTROLLER_NAME,\n controllerAs: _stepwayEditControlModal.EDIT_MODAL_CONTROLLERAS_NAME,\n size: this.editControlModalSize,\n resolve: {\n nyaSelect: function nyaSelect() {\n return _this.$modalProxy.getNyASelectFromSelectedLineColumn(_this.nyaSelect, _this.configuration, indexLine, numcolumn);\n }\n }\n });\n\n var modalInstance = this.$modal.open(editControlModal);\n modalInstance.result.then(function (modalAddCtrlModel) {\n _this.$modalProxy.bindConfigurationModelFromModalReturn(indexLine, numcolumn, modalAddCtrlModel, _this.configuration);\n _this.$formlyProxy.applyConfigurationToformlyModel(_this.configuration, _this.wfFormFields, _this.dataModel);\n _this.wfFormFieldsOnlyNeededProperties = angular.copy(_this.wfFormFields);\n }, function () {\n //$log.info('Modal dismissed at: ' + new Date());\n });\n }\n }, {\n key: 'previewExistingform',\n value: function previewExistingform(formlyform) {\n var configlines = JSON.parse(formlyform.formlyField);\n //here to replace with $scope.configuration : initialise configuration with lines\n this.configurationLoaded = {};\n this.$formlyProxy.bindConfigurationLines(this.configurationLoaded, configlines);\n this.$formlyProxy.applyConfigurationToformlyModel(this.configurationLoaded, this.previewLoadedForm.fieldsModel, this.dataModel);\n this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n this.previewLoadedForm.cancelButtonText = formlyform.cancelButtonText;\n this.previewLoadedForm.submitButtonText = formlyform.submitButtonText;\n }\n }, {\n key: 'saveThisForm',\n value: function saveThisForm() {\n if (typeof this.configuration.formName === 'undefined') {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: 'Form name is undefined',\n body: 'Form has not been saved.',\n showCloseButton: true\n });\n return false;\n }\n\n if (this.configuration.formName === '') {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: 'Form name is required',\n body: 'Form has not been saved.',\n showCloseButton: true\n });\n return false;\n }\n\n this.toaster.pop({\n type: 'wait',\n timeout: 3000,\n title: ': Form is being saved',\n body: '',\n showCloseButton: true\n });\n // this.toaster.clear();\n this.returnSaveEvent = true;\n\n return true;\n }\n }]);\n\n return edaStepWayEasyFormGenController;\n}();\n\nvar toInject = ['easyFormGenVersion', '$filter', 'toaster', '$timeout', '$uibModal', '$log', '$formlyProxy', '$modalProxy', 'easyFormSteWayConfig'];\n\nedaStepWayEasyFormGenController.$inject = toInject;\nexports.default = edaStepWayEasyFormGenController;\nexports.STEP_WAY_MAIN_CONTROLLER_NAME = STEP_WAY_MAIN_CONTROLLER_NAME;\nexports.STEP_WAY_MAIN_CONTROLLERAS_NAME = STEP_WAY_MAIN_CONTROLLERAS_NAME;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXB3YXkubWFpbi5jb250cm9sbGVyLmpzPzgxYzciXSwibmFtZXMiOlsiU1RFUF9XQVlfTUFJTl9DT05UUk9MTEVSX05BTUUiLCJTVEVQX1dBWV9NQUlOX0NPTlRST0xMRVJBU19OQU1FIiwiZWRhU3RlcFdheUVhc3lGb3JtR2VuQ29udHJvbGxlciIsImVhc3lGb3JtR2VuVmVyc2lvbiIsIiRmaWx0ZXIiLCJ0b2FzdGVyIiwiJHRpbWVvdXQiLCIkdWliTW9kYWwiLCIkbG9nIiwiJGZvcm1seVByb3h5IiwiJG1vZGFsUHJveHkiLCJlYXN5Rm9ybVN0ZVdheUNvbmZpZyIsIiRtb2RhbCIsImluaXQiLCJkYXRhTW9kZWwiLCJ3ZkZvcm1GaWVsZHMiLCJ3ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyIsImVhc3lGb3JtR2VuZXJhdG9yVkVSU0lPTiIsImRlYnVnIiwidGFiIiwiaXNQcmV2aWV3UGFuZWxWaXNpYmxlIiwiYXJlUHJldmlld01vZGVsc1Zpc2libGUiLCJjb25maWd1cmF0aW9uIiwibnVtYmVyT2ZDb2x1bW5zIiwiTWF4TnVtYmVyT2ZDb2x1bW5zIiwiTWluTnVtYmVyT2ZDb2x1bW5zIiwiY29sdW1uVGVtcGxhdGUiLCJsaW5lVGVtcGxhdGUiLCJueWFTZWxlY3QiLCJhbmltYXRpb25zRW5hYmxlZCIsImdldE1vZGFsQW5pbWF0aW9uVmFsdWUiLCJlZGl0Q29udHJvbE1vZGFsU2l6ZSIsImZvcm1seUxpc3QiLCJwcmV2aWV3TG9hZGVkRm9ybSIsImZpZWxkc01vZGVsIiwiY29uZmlndXJhdGlvbkxvYWRlZCIsInJldHVyblNhdmVFdmVudCIsImluaXRDb25maWd1cmF0aW9uRWRpdEZyb21TY3JhdGNoIiwiaW5pdE55YVNlbGVjdCIsIkpTT05lZE1vZGVsIiwicG9wIiwidHlwZSIsInRpbWVvdXQiLCJ0aXRsZSIsImJvZHkiLCJzaG93Q2xvc2VCdXR0b24iLCJjb25maWd1cmF0aW9uTW9kZWxOdW1iZXJvZkxpbmVzIiwibGluZXMiLCJsZW5ndGgiLCJsaW5lTnVtYmVyIiwiY291bnRDb25maWd1cmF0aW9uTW9kZWxMaW5lcyIsImFjdGl2ZUxpbmUiLCJpbmRleExpbmUiLCJjdXJyZW50TGluZU9iaiIsInNwbGljZSIsImFwcGx5Q29uZmlndXJhdGlvblRvZm9ybWx5TW9kZWwiLCJhbmd1bGFyIiwiY29weSIsInB1c2giLCJpbmRleCIsImxpbmVJbmRleCIsImNvbHVtbnMiLCJuZXdOdW1iZXJPZkNvbHVtbnMiLCJudW1Db2x1bW4iLCJjb25maWdTdGVwQ291bnRlciIsImNvbmZpZ1N0ZXBDb3VudGVyTUFYIiwibGlzdENvbmZpZ1N0ZXAiLCJzZXRUcnVlVGhpc1N0ZXBJbmRpY2F0b3IiLCJpIiwic3RlcEluZGljYXRvcnMiLCJpbmRleEluZGljYXRvciIsInJlc2V0QWxsSW5kaWNhdG9ycyIsImluZGV4U3RlcCIsInNpemUiLCJudW1jb2x1bW4iLCJlZGl0Q29udHJvbE1vZGFsIiwiZXh0ZW5kIiwiYW5pbWF0aW9uIiwidGVtcGxhdGUiLCJjb250cm9sbGVyIiwiY29udHJvbGxlckFzIiwicmVzb2x2ZSIsImdldE55QVNlbGVjdEZyb21TZWxlY3RlZExpbmVDb2x1bW4iLCJtb2RhbEluc3RhbmNlIiwib3BlbiIsInJlc3VsdCIsInRoZW4iLCJtb2RhbEFkZEN0cmxNb2RlbCIsImJpbmRDb25maWd1cmF0aW9uTW9kZWxGcm9tTW9kYWxSZXR1cm4iLCJmb3JtbHlmb3JtIiwiY29uZmlnbGluZXMiLCJKU09OIiwicGFyc2UiLCJmb3JtbHlGaWVsZCIsImJpbmRDb25maWd1cmF0aW9uTGluZXMiLCJjYW5jZWxCdXR0b25UZXh0Iiwic3VibWl0QnV0dG9uVGV4dCIsImZvcm1OYW1lIiwidG9JbmplY3QiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFNQTs7OztBQUNBOzs7Ozs7QUFNQSxJQUFNQSxnQ0FBa0MsaUNBQXhDO0FBQ0EsSUFB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LGdCQUFNLFNBRE87QUFFYkMsbUJBQVEsSUFGSztBQUdiQyxpQkFBTyx1QkFITTtBQUliQyxnQkFBTSwwQkFKTztBQUtiQywyQkFBaUI7QUFMSixTQUFqQjtBQU9BLGVBQU8sS0FBUDtBQUNEOztBQUVELFdBQUt4QyxPQUFMLENBQWFtQyxHQUFiLENBQWlCO0FBQ2ZDLGNBQU0sTUFEUztBQUVmQyxpQkFBUyxJQUZNO0FBR2ZDLGVBQU8sdUJBSFE7QUFJZkMsY0FBTSxFQUpTO0FBS2ZDLHlCQUFpQjtBQUxGLE9BQWpCO0FBT0E7QUFDQSxXQUFLVCxlQUFMLEdBQXVCLElBQXZCOztBQUVBLGFBQU8sSUFBUDtBQUNEOzs7Ozs7QUFJSCxJQUFNOEQsV0FBVyxDQUNmLG9CQURlLEVBRWYsU0FGZSxFQUdmLFNBSGUsRUFJZixVQUplLEVBS2YsV0FMZSxFQU1mLE1BTmUsRUFPZixjQVBlLEVBUWYsYUFSZSxFQVNmLHNCQVRlLENBQWpCOztBQVlBaEcsZ0NBQWdDaUcsT0FBaEMsR0FBMENELFFBQTFDO2tCQUNlaEcsK0I7UUFDUEYsNkIsR0FBQUEsNkI7UUFBK0JDLCtCLEdBQUFBLCtCIiwiZmlsZSI6IjIyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaW5pdERlYnVnTW9kZWwsXG4gIGluaXRUYWJNb2RlbCxcbiAgaW5pdENvbHVtblRlbXBsYXRlLFxuICBpbml0TGluZVRlbXBsYXRlXG59ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL3N0ZXB3YXkubWFpbi5jb250cm9sbGVyLmhlbHBlcnMnO1xuaW1wb3J0IGVkaXRDb250cm9sTW9kYWxUZW1wbGF0ZSAgICAgZnJvbSAnLi4vbW9kYWwvc3RlcHdheS5lZGl0Q29udHJvbE1vZGFsLnRlbXBsYXRlLmh0bWwnO1xuaW1wb3J0IHtcbiAgRURJVF9NT0RBTF9DT05UUk9MTEVSX05BTUUsXG4gIEVESVRfTU9EQUxfQ09OVFJPTExFUkFTX05BTUVcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL21vZGFsL3N0ZXB3YXkuZWRpdENvbnRyb2xNb2RhbC5jb250cm9sbGVyJztcblxuXG5jb25zdCBTVEVQX1dBWV9NQUlOX0NPTlRST0xMRVJfTkFNRSAgID0gJ2VkYVN0ZXBXYXlFYXN5Rm9ybUdlbkNvbnRyb2xsZXInO1xuY29uc3QgU1RFUF9XQVlfTUFJTl9DT05UUk9MTEVSQVNfTkFNRSA9ICd2bSc7XG5cbmNsYXNzIGVkYVN0ZXBXYXlFYXN5Rm9ybUdlbkNvbnRyb2xsZXIge1xuXG4gIGNvbnN0cnVjdG9yICAoXG4gICAgZWFzeUZvcm1HZW5WZXJzaW9uLFxuICAgICRmaWx0ZXIsXG4gICAgdG9hc3RlcixcbiAgICAkdGltZW91dCxcbiAgICAkdWliTW9kYWwsXG4gICAgJGxvZyxcbiAgICAkZm9ybWx5UHJveHksXG4gICAgJG1vZGFsUHJveHksXG4gICAgZWFzeUZvcm1TdGVXYXlDb25maWcpIHtcblxuICAgIHRoaXMuZWFzeUZvcm1HZW5WZXJzaW9uICAgPSBlYXN5Rm9ybUdlblZlcnNpb247XG4gICAgdGhpcy4kZmlsdGVyICAgICAgICAgICAgICA9ICRmaWx0ZXI7XG4gICAgdGhpcy50b2FzdGVyICAgICAgICAgICAgICA9IHRvYXN0ZXI7XG4gICAgdGhpcy4kdGltZW91dCAgICAgICAgICAgICA9ICR0aW1lb3V0O1xuICAgIHRoaXMuJG1vZGFsICAgICAgICAgICAgICAgPSAkdWliTW9kYWw7XG4gICAgdGhpcy4kbG9nICAgICAgICAgICAgICAgICA9ICRsb2c7XG4gICAgdGhpcy4kZm9ybWx5UHJveHkgICAgICAgICA9ICRmb3JtbHlQcm94eTtcbiAgICB0aGlzLiRtb2RhbFByb3h5ICAgICAgICAgID0gJG1vZGFsUHJveHk7XG4gICAgdGhpcy5lYXN5Rm9ybVN0ZVdheUNvbmZpZyA9IGVhc3lGb3JtU3RlV2F5Q29uZmlnO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBpbml0KCkge1xuXG4gICAgdGhpcy5kYXRhTW9kZWwgICAgICAgICAgICAgICAgPSB7fTtcbiAgICB0aGlzLndmRm9ybUZpZWxkcyAgICAgICAgICAgICA9IFtdO1xuICAgIHRoaXMud2ZGb3JtRmllbGRzT25seU5lZWRlZFByb3BlcnRpZXMgPSBbXTtcbiAgICB0aGlzLmVhc3lGb3JtR2VuZXJhdG9yVkVSU0lPTiA9IHRoaXMuZWFzeUZvcm1HZW5WZXJzaW9uO1xuICAgIHRoaXMuZGVidWcgICAgICAgICAgICAgICAgICAgID0gaW5pdERlYnVnTW9kZWwoKTtcbiAgICB0aGlzLnRhYiAgICAgICAgICAgICAgICAgICAgICA9IGluaXRUYWJNb2RlbCh0aGlzLmVhc3lGb3JtU3RlV2F5Q29uZmlnLmlzUHJldmlld1BhbmVsVmlzaWJsZSgpLCB0aGlzLmVhc3lGb3JtU3RlV2F5Q29uZmlnLmFyZVByZXZpZXdNb2RlbHNWaXNpYmxlKCkpO1xuICAgIHRoaXMuY29uZmlndXJhdGlvbiAgICAgICAgICAgID0ge307IC8vY29uZmlndXJhdGlvbiBtb2RlbCAoY29udGFpbnMgYXJyYXkgb2YgbGluZXMgd2hpY2ggY29udGFpbnMgYXJyYXkgb2YgY29sdW1ucylcbiAgICB0aGlzLm51bWJlck9mQ29sdW1ucyAgICAgICAgICA9IDE7XG4gICAgdGhpcy5NYXhOdW1iZXJPZkNvbHVtbnMgICAgICAgPSAzO1xuICAgIHRoaXMuTWluTnVtYmVyT2ZDb2x1bW5zICAgICAgID0gMTtcbiAgICB0aGlzLmNvbHVtblRlbXBsYXRlICAgICAgICAgICA9IGluaXRDb2x1bW5UZW1wbGF0ZSgpOyAvL1RPRE8gOiBjaGVjayBpcyByZWFsbHkgbmVlZGVkXG4gICAgdGhpcy5saW5lVGVtcGxhdGUgICAgICAgICAgICAgPSBpbml0TGluZVRlbXBsYXRlKCk7ICAgLy9UT0RPIDogY2hlY2sgaWYgcmVhbGx5IG5lZWRlZFxuICAgIHRoaXMubnlhU2VsZWN0ICAgICAgICAgICAgICAgID0ge307XG4gICAgdGhpcy5hbmltYXRpb25zRW5hYmxlZCAgICAgICAgPSB0aGlzLmVhc3lGb3JtU3RlV2F5Q29uZmlnLmdldE1vZGFsQW5pbWF0aW9uVmFsdWUoKTsgIC8vLT4gZGlzYWJsaW5nIGFuaW1hdGlvbiB1bnRpbGwgY29ycmVjdGlvbiBpbiBhbmd1bGFyIGJvb3RzdHJhcFxuICAgIHRoaXMuZWRpdENvbnRyb2xNb2RhbFNpemUgICAgID0gJ2xnJztcbiAgICB0aGlzLmZvcm1seUxpc3QgICAgICAgICAgICAgICA9IHt9O1xuICAgIHRoaXMucHJldmlld0xvYWRlZEZvcm0gICAgICAgID0geyBmaWVsZHNNb2RlbDpbXSB9O1xuICAgIHRoaXMuY29uZmlndXJhdGlvbkxvYWRlZCAgICAgID0ge307XG4gICAgdGhpcy5yZXR1cm5TYXZlRXZlbnQgICAgICAgICAgPSBmYWxzZTtcbiAgICAvL3RoaXMucmVzZXRUb1plcm9Nb2RlbCAgICAgICAgID0gcmVzZXRUb1plcm9Nb2RlbDsgLy9mdW5jdGlvbiBubyBtb3JlIHVzZWRcbiAgICB0aGlzLiRmb3JtbHlQcm94eS5pbml0Q29uZmlndXJhdGlvbkVkaXRGcm9tU2NyYXRjaCh0aGlzLmNvbmZpZ3VyYXRpb24pO1xuICAgIHRoaXMuJG1vZGFsUHJveHkuaW5pdE55YVNlbGVjdCh0aGlzLm55YVNlbGVjdCk7XG4gIH1cblxuICBvblN1Ym1pdCgpIHtcbiAgICBjb25zdCBKU09OZWRNb2RlbCA9IHRoaXMuJGZpbHRlcignanNvbicpKHRoaXMuZGF0YU1vZGVsLCA0KTtcbiAgICB0aGlzLnRvYXN0ZXIucG9wKHtcbiAgICAgICAgdHlwZTogJ2luZm8nLFxuICAgICAgICB0aW1lb3V0OiAyMDAwLFxuICAgICAgICB0aXRsZTogJ2l0IHNob3VsZCBzYXZlIGRhdGEgbW9kZWwgaWYgaXQgd2VyZSBub3QgaW4gZWRpdG9yJyxcbiAgICAgICAgYm9keTogYGRhdGEgOiAke0pTT05lZE1vZGVsfWAsXG4gICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgY291bnRDb25maWd1cmF0aW9uTW9kZWxMaW5lcygpIHtcbiAgICB0aGlzLmRlYnVnLmNvbmZpZ3VyYXRpb25Nb2RlbE51bWJlcm9mTGluZXMgPSB0aGlzLmNvbmZpZ3VyYXRpb24ubGluZXMubGVuZ3RoO1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24ubGluZXMubGVuZ3RoO1xuICB9XG5cbiAgc2V0QWN0aXZlTGluZU51bWJlcihsaW5lTnVtYmVyKSB7XG4gICAgaWYgKGxpbmVOdW1iZXIgPD0gdGhpcy5jb3VudENvbmZpZ3VyYXRpb25Nb2RlbExpbmVzKCkpIHtcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lID0gbGluZU51bWJlcjtcbiAgICB9XG4gIH1cblxuICB1cFRoaXNMaW5lKGluZGV4TGluZSkge1xuICAgIGlmIChpbmRleExpbmUgPiAtMSkge1xuICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5saW5lc1tpbmRleExpbmUgLSAxXSkge1xuICAgICAgICB2YXIgY3VycmVudExpbmVPYmogPSB0aGlzLmNvbmZpZ3VyYXRpb24ubGluZXNbaW5kZXhMaW5lXTtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmxpbmVzLnNwbGljZShpbmRleExpbmUgLCAxKTtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmxpbmVzLnNwbGljZSgoaW5kZXhMaW5lIC0gMSksIDAsIGN1cnJlbnRMaW5lT2JqKTtcbiAgICAgICAgLy9tYW5hZ2Ugc2VsZWN0ZWQgYWNpdmVMaW5lXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lID0gMTtcbiAgICAgIH1cbiAgICB9XG4gICAgICAvL3JlLXJlbmRlciBmb3JtZmllbGRcbiAgICB0aGlzLiRmb3JtbHlQcm94eS5hcHBseUNvbmZpZ3VyYXRpb25Ub2Zvcm1seU1vZGVsKHRoaXMuY29uZmlndXJhdGlvbiwgdGhpcy53ZkZvcm1GaWVsZHMsIHRoaXMuZGF0YU1vZGVsKTtcbiAgICB0aGlzLndmRm9ybUZpZWxkc09ubHlOZWVkZWRQcm9wZXJ0aWVzID0gYW5ndWxhci5jb3B5KHRoaXMud2ZGb3JtRmllbGRzKTtcbiAgfVxuXG4gIGRvd25UaGlzTGluZShpbmRleExpbmUpIHtcbiAgICBpZiAoaW5kZXhMaW5lID4gLTEpIHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24ubGluZXNbaW5kZXhMaW5lICsgMV0pIHtcbiAgICAgICAgdmFyIGN1cnJlbnRMaW5lT2JqID0gdGhpcy5jb25maWd1cmF0aW9uLmxpbmVzW2luZGV4TGluZV07XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5saW5lcy5zcGxpY2UoaW5kZXhMaW5lICwgMSk7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5saW5lcy5zcGxpY2UoKGluZGV4TGluZSArIDEpLCAwLCBjdXJyZW50TGluZU9iaik7XG4gICAgICAgIC8vbWFuYWdlIHNlbGVjdGVkIGFjaXZlTGluZVxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uYWN0aXZlTGluZSA9IDE7XG4gICAgICB9XG4gICAgfVxuICAgIC8vcmUtcmVuZGVyIGZvcm1maWVsZFxuICAgIHRoaXMuJGZvcm1seVByb3h5LmFwcGx5Q29uZmlndXJhdGlvblRvZm9ybWx5TW9kZWwodGhpcy5jb25maWd1cmF0aW9uLCB0aGlzLndmRm9ybUZpZWxkcywgdGhpcy5kYXRhTW9kZWwpO1xuICAgIHRoaXMud2ZGb3JtRmllbGRzT25seU5lZWRlZFByb3BlcnRpZXMgPSBhbmd1bGFyLmNvcHkodGhpcy53ZkZvcm1GaWVsZHMpO1xuICB9XG5cbiAgYWRkTmV3bGluZSgpIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24ubGluZXMucHVzaChpbml0TGluZVRlbXBsYXRlKCkpO1xuICAgICAgLy9yZS1yZW5kZXIgZm9ybWZpZWxkXG4gICAgdGhpcy4kZm9ybWx5UHJveHkuYXBwbHlDb25maWd1cmF0aW9uVG9mb3JtbHlNb2RlbCh0aGlzLmNvbmZpZ3VyYXRpb24sIHRoaXMud2ZGb3JtRmllbGRzLCB0aGlzLmRhdGFNb2RlbCk7XG4gICAgdGhpcy53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyA9IGFuZ3VsYXIuY29weSh0aGlzLndmRm9ybUZpZWxkcyk7XG4gIH1cblxuICByZW1vdmVUaGlzTGluZShpbmRleCkge1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmxpbmVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAvL21hbmFnZSBzZWxlY3RlZCBhY2l2ZUxpbmVcbiAgICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUgPT09IGluZGV4ICsgMSkgdGhpcy5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUgPSAxO1xuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5saW5lcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4kdGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgIHRoaXMudG9hc3Rlci5wb3Aoe1xuICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgICAgICAgdGl0bGU6ICdMYXN0IGxpbmUnICxcbiAgICAgICAgICAgIGJvZHk6ICdDYW5cXCd0IGRlbGV0ZSB0aGUgbGFzdCBsaW5lJyxcbiAgICAgICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAxMDApO1xuICAgICAgfVxuICAgIC8vcmUtcmVuZGVyIGZvcm1maWVsZFxuICAgIHRoaXMuJGZvcm1seVByb3h5LmFwcGx5Q29uZmlndXJhdGlvblRvZm9ybWx5TW9kZWwodGhpcy5jb25maWd1cmF0aW9uLCB0aGlzLndmRm9ybUZpZWxkcywgdGhpcy5kYXRhTW9kZWwpO1xuICAgIHRoaXMud2ZGb3JtRmllbGRzT25seU5lZWRlZFByb3BlcnRpZXMgPSBhbmd1bGFyLmNvcHkodGhpcy53ZkZvcm1GaWVsZHMpO1xuICAgIH1cbiAgfVxuXG5cbiAgaW5jcmVhc2VOdW1iZXJPZkNvbHVtbnMoKSB7XG4gICAgY29uc3QgbGluZUluZGV4ID0gdGhpcy5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUgLTE7XG4gICAgaWYgKHRoaXNcbiAgICAgICAgICAuY29uZmlndXJhdGlvblxuICAgICAgICAgIC5saW5lc1tsaW5lSW5kZXhdXG4gICAgICAgICAgLmNvbHVtbnMubGVuZ3RoIDwgdGhpcy5NYXhOdW1iZXJPZkNvbHVtbnMpIHtcblxuICAgIGNvbnN0IG5ld051bWJlck9mQ29sdW1ucyA9IHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbmZpZ3VyYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmxpbmVzW2xpbmVJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnB1c2goYW5ndWxhci5jb3B5KGluaXRDb2x1bW5UZW1wbGF0ZSgpKSk7XG4gICAgICB0aGlzXG4gICAgICAgIC5jb25maWd1cmF0aW9uXG4gICAgICAgIC5saW5lc1tsaW5lSW5kZXhdXG4gICAgICAgIC5jb2x1bW5zW25ld051bWJlck9mQ29sdW1ucyAtIDFdXG4gICAgICAgIC5udW1Db2x1bW4gPSBuZXdOdW1iZXJPZkNvbHVtbnM7XG4gICAgICB9XG4gICAgICAvL3JlLXJlbmRlciBmb3JtZmllbGRcbiAgICAgIHRoaXMuJGZvcm1seVByb3h5LmFwcGx5Q29uZmlndXJhdGlvblRvZm9ybWx5TW9kZWwodGhpcy5jb25maWd1cmF0aW9uLCB0aGlzLndmRm9ybUZpZWxkcywgdGhpcy5kYXRhTW9kZWwpO1xuICAgICAgdGhpcy53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyA9IGFuZ3VsYXIuY29weSh0aGlzLndmRm9ybUZpZWxkcyk7XG4gIH1cblxuXG4gIGRlY3JlYXNlTnVtYmVyT2ZDb2x1bW5zKCkge1xuICAgIGlmICh0aGlzXG4gICAgICAgICAgLmNvbmZpZ3VyYXRpb25cbiAgICAgICAgICAubGluZXNbdGhpcy5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUgLTFdXG4gICAgICAgICAgLmNvbHVtbnMubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5jb25maWd1cmF0aW9uXG4gICAgICAgIC5saW5lc1t0aGlzLmNvbmZpZ3VyYXRpb24uYWN0aXZlTGluZSAtMV1cbiAgICAgICAgLmNvbHVtbnNcbiAgICAgICAgLnNwbGljZSh0aGlzLmNvbmZpZ3VyYXRpb24ubGluZXNbdGhpcy5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUgLTFdLmNvbHVtbnMubGVuZ3RoIC0xLCAxKTtcbiAgICB9XG4gICAgdGhpcy4kZm9ybWx5UHJveHkuYXBwbHlDb25maWd1cmF0aW9uVG9mb3JtbHlNb2RlbCh0aGlzLmNvbmZpZ3VyYXRpb24sIHRoaXMud2ZGb3JtRmllbGRzLCB0aGlzLmRhdGFNb2RlbCk7XG4gICAgdGhpcy53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyA9IGFuZ3VsYXIuY29weSh0aGlzLndmRm9ybUZpZWxkcyk7XG4gIH1cblxuXG4gIHJlc2V0U3RlcENvdW50ZXIoKSB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uLmNvbmZpZ1N0ZXBDb3VudGVyID0gMDtcbiAgfVxuXG5cbiAgbmV4dENvbmZpZ1N0ZXAoKSB7XG4gICAgdmFyIGNvbmZpZ1N0ZXBDb3VudGVyTUFYID0gdGhpcy5jb25maWd1cmF0aW9uLmxpc3RDb25maWdTdGVwLmxlbmd0aCAtMTtcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmNvbmZpZ1N0ZXBDb3VudGVyICE9PSBjb25maWdTdGVwQ291bnRlck1BWCkge1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uY29uZmlnU3RlcENvdW50ZXIgKys7XG4gICAgfVxuICAgIHRoaXMuc2V0VHJ1ZVRoaXNTdGVwSW5kaWNhdG9yKHRoaXMuY29uZmlndXJhdGlvbi5jb25maWdTdGVwQ291bnRlcik7XG4gIH1cblxuXG4gIHJlc2V0QWxsSW5kaWNhdG9ycygpe1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc3RlcEluZGljYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5zdGVwSW5kaWNhdG9yc1tpXSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG5cbiAgc2V0VHJ1ZVRoaXNTdGVwSW5kaWNhdG9yKGluZGV4SW5kaWNhdG9yKXtcbiAgICAgIHRoaXMucmVzZXRBbGxJbmRpY2F0b3JzKCk7XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc3RlcEluZGljYXRvcnNbaW5kZXhJbmRpY2F0b3JdID0gdHJ1ZTtcbiAgfVxuXG4gIHByZXZpb3VzQ29uZmlnU3RlcCgpIHtcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmNvbmZpZ1N0ZXBDb3VudGVyICE9PSAwKSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uY29uZmlnU3RlcENvdW50ZXIgLS07XG4gICAgfVxuICAgIHRoaXMuc2V0VHJ1ZVRoaXNTdGVwSW5kaWNhdG9yKHRoaXMuY29uZmlndXJhdGlvbi5jb25maWdTdGVwQ291bnRlcik7XG4gIH1cblxuICBnb1RvU3RlcChpbmRleCkge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbi5jb25maWdTdGVwQ291bnRlciA9IGluZGV4O1xuICAgIHRoaXMuc2V0VHJ1ZVRoaXNTdGVwSW5kaWNhdG9yKHRoaXMuY29uZmlndXJhdGlvbi5jb25maWdTdGVwQ291bnRlcik7XG4gIH1cblxuICBzdGVwUmVhY2hhYmxlKGluZGV4U3RlcCkge1xuICAgIGlmIChpbmRleFN0ZXAgPCB0aGlzLmNvbmZpZ3VyYXRpb24uY29uZmlnU3RlcENvdW50ZXIpIHtcbiAgICAgIHJldHVybiAnZGlzYWJsZWQnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2VuYWJsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHNob3dNb2RhbEFkZEN0cmxUb0NvbHVtbihzaXplLCBpbmRleExpbmUsIG51bWNvbHVtbikge1xuICAgIGNvbnN0IGVkaXRDb250cm9sTW9kYWwgPSB7fTtcbiAgICBhbmd1bGFyLmV4dGVuZChlZGl0Q29udHJvbE1vZGFsLCB7XG4gICAgICBhbmltYXRpb246IHRoaXMuYW5pbWF0aW9uc0VuYWJsZWQsXG4gICAgICB0ZW1wbGF0ZTogZWRpdENvbnRyb2xNb2RhbFRlbXBsYXRlLFxuICAgICAgY29udHJvbGxlcjogRURJVF9NT0RBTF9DT05UUk9MTEVSX05BTUUsXG4gICAgICBjb250cm9sbGVyQXM6IEVESVRfTU9EQUxfQ09OVFJPTExFUkFTX05BTUUsXG4gICAgICBzaXplOiB0aGlzLmVkaXRDb250cm9sTW9kYWxTaXplLFxuICAgICAgcmVzb2x2ZToge1xuICAgICAgICBueWFTZWxlY3Q6ICgpID0+IHRoaXMuJG1vZGFsUHJveHkuZ2V0TnlBU2VsZWN0RnJvbVNlbGVjdGVkTGluZUNvbHVtbih0aGlzLm55YVNlbGVjdCwgdGhpcy5jb25maWd1cmF0aW9uLGluZGV4TGluZSwgbnVtY29sdW1uKVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgbW9kYWxJbnN0YW5jZSA9IHRoaXMuJG1vZGFsLm9wZW4oZWRpdENvbnRyb2xNb2RhbCk7XG4gICAgbW9kYWxJbnN0YW5jZS5yZXN1bHQudGhlbihcbiAgICAgIChtb2RhbEFkZEN0cmxNb2RlbCkgPT4ge1xuICAgICAgICB0aGlzLiRtb2RhbFByb3h5LmJpbmRDb25maWd1cmF0aW9uTW9kZWxGcm9tTW9kYWxSZXR1cm4oaW5kZXhMaW5lLCBudW1jb2x1bW4sIG1vZGFsQWRkQ3RybE1vZGVsLCB0aGlzLmNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB0aGlzLiRmb3JtbHlQcm94eS5hcHBseUNvbmZpZ3VyYXRpb25Ub2Zvcm1seU1vZGVsKHRoaXMuY29uZmlndXJhdGlvbiwgdGhpcy53ZkZvcm1GaWVsZHMsIHRoaXMuZGF0YU1vZGVsKTtcbiAgICAgICAgdGhpcy53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyA9IGFuZ3VsYXIuY29weSh0aGlzLndmRm9ybUZpZWxkcyk7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyRsb2cuaW5mbygnTW9kYWwgZGlzbWlzc2VkIGF0OiAnICsgbmV3IERhdGUoKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByZXZpZXdFeGlzdGluZ2Zvcm0oZm9ybWx5Zm9ybSkge1xuICAgIGNvbnN0IGNvbmZpZ2xpbmVzID0gSlNPTi5wYXJzZShmb3JtbHlmb3JtLmZvcm1seUZpZWxkKTtcbiAgICAvL2hlcmUgdG8gcmVwbGFjZSB3aXRoICRzY29wZS5jb25maWd1cmF0aW9uIDogaW5pdGlhbGlzZSBjb25maWd1cmF0aW9uIHdpdGggbGluZXNcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25Mb2FkZWQgPSB7fTtcbiAgICB0aGlzLiRmb3JtbHlQcm94eS5iaW5kQ29uZmlndXJhdGlvbkxpbmVzKHRoaXMuY29uZmlndXJhdGlvbkxvYWRlZCxjb25maWdsaW5lcyk7XG4gICAgdGhpcy4kZm9ybWx5UHJveHkuYXBwbHlDb25maWd1cmF0aW9uVG9mb3JtbHlNb2RlbCh0aGlzLmNvbmZpZ3VyYXRpb25Mb2FkZWQsIHRoaXMucHJldmlld0xvYWRlZEZvcm0uZmllbGRzTW9kZWwsIHRoaXMuZGF0YU1vZGVsKTtcbiAgICB0aGlzLndmRm9ybUZpZWxkc09ubHlOZWVkZWRQcm9wZXJ0aWVzID0gYW5ndWxhci5jb3B5KHRoaXMud2ZGb3JtRmllbGRzKTtcbiAgICB0aGlzLnByZXZpZXdMb2FkZWRGb3JtLmNhbmNlbEJ1dHRvblRleHQgPSBmb3JtbHlmb3JtLmNhbmNlbEJ1dHRvblRleHQ7XG4gICAgdGhpcy5wcmV2aWV3TG9hZGVkRm9ybS5zdWJtaXRCdXR0b25UZXh0ID0gZm9ybWx5Zm9ybS5zdWJtaXRCdXR0b25UZXh0O1xuICB9XG5cblxuICBzYXZlVGhpc0Zvcm0oKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZ3VyYXRpb24uZm9ybU5hbWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLnRvYXN0ZXIucG9wKHtcbiAgICAgICAgICB0eXBlOiAnd2FybmluZycsXG4gICAgICAgICAgdGltZW91dDoyMDAwLFxuICAgICAgICAgIHRpdGxlOiAnRm9ybSBuYW1lIGlzIHVuZGVmaW5lZCcsXG4gICAgICAgICAgYm9keTogJ0Zvcm0gaGFzIG5vdCBiZWVuIHNhdmVkLicsXG4gICAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZm9ybU5hbWUgPT09ICcnKSB7XG4gICAgICB0aGlzLnRvYXN0ZXIucG9wKHtcbiAgICAgICAgICB0eXBlOiAnd2FybmluZycsXG4gICAgICAgICAgdGltZW91dDoyMDAwLFxuICAgICAgICAgIHRpdGxlOiAnRm9ybSBuYW1lIGlzIHJlcXVpcmVkJyxcbiAgICAgICAgICBib2R5OiAnRm9ybSBoYXMgbm90IGJlZW4gc2F2ZWQuJyxcbiAgICAgICAgICBzaG93Q2xvc2VCdXR0b246IHRydWVcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy50b2FzdGVyLnBvcCh7XG4gICAgICB0eXBlOiAnd2FpdCcsXG4gICAgICB0aW1lb3V0OiAzMDAwLFxuICAgICAgdGl0bGU6ICc6IEZvcm0gaXMgYmVpbmcgc2F2ZWQnLFxuICAgICAgYm9keTogJycsXG4gICAgICBzaG93Q2xvc2VCdXR0b246IHRydWVcbiAgICB9KTtcbiAgICAvLyB0aGlzLnRvYXN0ZXIuY2xlYXIoKTtcbiAgICB0aGlzLnJldHVyblNhdmVFdmVudCA9IHRydWU7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5cbmNvbnN0IHRvSW5qZWN0ID0gW1xuICAnZWFzeUZvcm1HZW5WZXJzaW9uJyxcbiAgJyRmaWx0ZXInLFxuICAndG9hc3RlcicsXG4gICckdGltZW91dCcsXG4gICckdWliTW9kYWwnLFxuICAnJGxvZycsXG4gICckZm9ybWx5UHJveHknLFxuICAnJG1vZGFsUHJveHknLFxuICAnZWFzeUZvcm1TdGVXYXlDb25maWcnXG5dO1xuXG5lZGFTdGVwV2F5RWFzeUZvcm1HZW5Db250cm9sbGVyLiRpbmplY3QgPSB0b0luamVjdDtcbmV4cG9ydCBkZWZhdWx0IGVkYVN0ZXBXYXlFYXN5Rm9ybUdlbkNvbnRyb2xsZXI7XG5leHBvcnQge1NURVBfV0FZX01BSU5fQ09OVFJPTExFUl9OQU1FLCBTVEVQX1dBWV9NQUlOX0NPTlRST0xMRVJBU19OQU1FfTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL21haW4vc3RlcHdheS5tYWluLmNvbnRyb2xsZXIuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 23 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* global angular */\nvar DEBUG_MODEL = {\n showDebug: false,\n configurationModelNumberofLines: 1\n};\n\nvar initDebugModel = function initDebugModel() {\n return angular.copy(DEBUG_MODEL);\n};\n\nvar DEFAULT_TAB_MODEL = {\n editTab: {\n active: true\n },\n previewTab: {\n active: false,\n tabVisible: true,\n modelsVisible: true\n }\n};\n\nvar initTabModel = function initTabModel(isPreviewPanelVisible, arePreviewModelsVisible) {\n var _tabModel = angular.copy(DEFAULT_TAB_MODEL);\n angular.extend(_tabModel.previewTab, {\n tabVisible: isPreviewPanelVisible,\n modelsVisible: arePreviewModelsVisible\n });\n return _tabModel;\n};\n\nvar COLUMN_TEMPLATE = {\n numColumn: -1,\n exist: true,\n control: {\n type: 'none',\n key: 'none',\n subtype: 'none'\n // templateOptions: {\n // label: 'none',\n // placeholder: 'none',\n // required: false,\n // description: 'Descriptive text'\n // }\n }\n};\n\nvar initColumnTemplate = function initColumnTemplate() {\n return angular.copy(COLUMN_TEMPLATE);\n};\n\nvar LINE_TEMPLATE = {\n line: -1,\n activeColumn: 1,\n columns: [{\n numColumn: 1,\n exist: true,\n control: {\n type: 'none',\n key: 'none'\n // templateOptions: {\n // label: 'none',\n // placeholder: 'none',\n // required: false,\n // description: 'Descriptive text'\n // }\n }\n }]\n};\nvar initLineTemplate = function initLineTemplate() {\n return angular.copy(LINE_TEMPLATE);\n};\n\nexports.initDebugModel = initDebugModel;\nexports.initTabModel = initTabModel;\nexports.initColumnTemplate = initColumnTemplate;\nexports.initLineTemplate = initLineTemplate;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXB3YXkubWFpbi5jb250cm9sbGVyLmhlbHBlcnMuanM/YWMxNCJdLCJuYW1lcyI6WyJERUJVR19NT0RFTCIsInNob3dEZWJ1ZyIsImNvbmZpZ3VyYXRpb25Nb2RlbE51bWJlcm9mTGluZXMiLCJpbml0RGVidWdNb2RlbCIsImFuZ3VsYXIiLCJjb3B5IiwiREVGQVVMVF9UQUJfTU9ERUwiLCJlZGl0VGFiIiwiYWN0aXZlIiwicHJldmlld1RhYiIsInRhYlZpc2libGUiLCJtb2RlbHNWaXNpYmxlIiwiaW5pdFRhYk1vZGVsIiwiaXNQcmV2aWV3UGFuZWxWaXNpYmxlIiwiYXJlUHJldmlld01vZGVsc1Zpc2libGUiLCJfdGFiTW9kZWwiLCJleHRlbmQiLCJDT0xVTU5fVEVNUExBVEUiLCJudW1Db2x1bW4iLCJleGlzdCIsImNvbnRyb2wiLCJ0eXBlIiwia2V5Iiwic3VidHlwZSIsImluaXRDb2x1bW5UZW1wbGF0ZSIsIkxJTkVfVEVNUExBVEUiLCJsaW5lIiwiYWN0aXZlQ29sdW1uIiwiY29sdW1ucyIsImluaXRMaW5lVGVtcGxhdGUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQSxJQUFNQSxjQUFjO0FBQ2xCQyxhQUFZLEtBRE07QUFFbEJDLG1DQUFrQztBQUZoQixDQUFwQjs7QUFLQSxJQUFNQyxpQkFBaUIsU0FBakJBLGNBQWlCO0FBQUEsU0FBTUMsUUFBUUMsSUFBUixDQUFhTCxXQUFiLENBQU47QUFBQSxDQUF2Qjs7QUFFQSxJQUFNTSxvQkFBb0I7QUFDeEJDLFdBQVM7QUFDUEMsWUFBUTtBQURELEdBRGU7QUFJeEJDLGNBQVk7QUFDVkQsWUFBUSxLQURFO0FBRVZFLGdCQUFZLElBRkY7QUFHVkMsbUJBQWU7QUFITDtBQUpZLENBQTFCOztBQVdBLElBQU1DLGVBQWUsU0FBZkEsWUFBZSxDQUFDQyxxQkFBRCxFQUF3QkMsdUJBQXhCLEVBQW9EO0FBQ3ZFLE1BQU1DLFlBQVlYLFFBQVFDLElBQVIsQ0FBYUMsaUJBQWIsQ0FBbEI7QUFDQUYsVUFBUVksTUFBUixDQUFlRCxVQUFVTixVQUF6QixFQUFxQztBQUNuQ0MsZ0JBQVlHLHFCQUR1QjtBQUVuQ0YsbUJBQWVHO0FBRm9CLEdBQXJDO0FBSUEsU0FBT0MsU0FBUDtBQUNELENBUEQ7O0FBU0EsSUFBTUUsa0JBQW1CO0FBQ3ZCQyxhQUFXLENBQUMsQ0FEVztBQUV2QkMsU0FBTyxJQUZnQjtBQUd2QkMsV0FBUztBQUNQQyxVQUFLLE1BREU7QUFFUEMsU0FBSyxNQUZFO0FBR1BDLGFBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUTztBQUhjLENBQXpCOztBQWdCQSxJQUFNQyxxQkFBcUIsU0FBckJBLGtCQUFxQjtBQUFBLFNBQU1wQixRQUFRQyxJQUFSLENBQWFZLGVBQWIsQ0FBTjtBQUFBLENBQTNCOztBQUVBLElBQU1RLGdCQUFnQjtBQUNwQkMsUUFBSyxDQUFDLENBRGM7QUFFcEJDLGdCQUFlLENBRks7QUFHcEJDLFdBQVMsQ0FDUDtBQUNFVixlQUFXLENBRGI7QUFFRUMsV0FBTSxJQUZSO0FBR0VDLGFBQVM7QUFDUEMsWUFBSyxNQURFO0FBRVBDLFdBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSTztBQUhYLEdBRE87QUFIVyxDQUF0QjtBQW9CQSxJQUFNTyxtQkFBbUIsU0FBbkJBLGdCQUFtQjtBQUFBLFNBQU16QixRQUFRQyxJQUFSLENBQWFvQixhQUFiLENBQU47QUFBQSxDQUF6Qjs7UUFHRXRCLGMsR0FBQUEsYztRQUNBUyxZLEdBQUFBLFk7UUFDQVksa0IsR0FBQUEsa0I7UUFDQUssZ0IsR0FBQUEsZ0IiLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgYW5ndWxhciAqL1xuY29uc3QgREVCVUdfTU9ERUwgPSB7XG4gIHNob3dEZWJ1ZyA6IGZhbHNlLFxuICBjb25maWd1cmF0aW9uTW9kZWxOdW1iZXJvZkxpbmVzIDogMVxufTtcblxuY29uc3QgaW5pdERlYnVnTW9kZWwgPSAoKSA9PiBhbmd1bGFyLmNvcHkoREVCVUdfTU9ERUwpO1xuXG5jb25zdCBERUZBVUxUX1RBQl9NT0RFTCA9IHtcbiAgZWRpdFRhYjoge1xuICAgIGFjdGl2ZTogdHJ1ZVxuICB9LFxuICBwcmV2aWV3VGFiOiB7XG4gICAgYWN0aXZlOiBmYWxzZSxcbiAgICB0YWJWaXNpYmxlOiB0cnVlLFxuICAgIG1vZGVsc1Zpc2libGU6IHRydWVcbiAgfVxufTtcblxuY29uc3QgaW5pdFRhYk1vZGVsID0gKGlzUHJldmlld1BhbmVsVmlzaWJsZSwgYXJlUHJldmlld01vZGVsc1Zpc2libGUpID0+IHtcbiAgY29uc3QgX3RhYk1vZGVsID0gYW5ndWxhci5jb3B5KERFRkFVTFRfVEFCX01PREVMKTtcbiAgYW5ndWxhci5leHRlbmQoX3RhYk1vZGVsLnByZXZpZXdUYWIsIHtcbiAgICB0YWJWaXNpYmxlOiBpc1ByZXZpZXdQYW5lbFZpc2libGUsXG4gICAgbW9kZWxzVmlzaWJsZTogYXJlUHJldmlld01vZGVsc1Zpc2libGVcbiAgfSk7XG4gIHJldHVybiBfdGFiTW9kZWw7XG59O1xuXG5jb25zdCBDT0xVTU5fVEVNUExBVEUgPSAge1xuICBudW1Db2x1bW46IC0xLFxuICBleGlzdDogdHJ1ZSxcbiAgY29udHJvbDoge1xuICAgIHR5cGU6J25vbmUnLFxuICAgIGtleTogJ25vbmUnLFxuICAgIHN1YnR5cGU6ICdub25lJ1xuICAgIC8vIHRlbXBsYXRlT3B0aW9uczoge1xuICAgIC8vICAgbGFiZWw6ICdub25lJyxcbiAgICAvLyAgIHBsYWNlaG9sZGVyOiAnbm9uZScsXG4gICAgLy8gICByZXF1aXJlZDogZmFsc2UsXG4gICAgLy8gICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aXZlIHRleHQnXG4gICAgLy8gfVxuICB9XG59O1xuXG5jb25zdCBpbml0Q29sdW1uVGVtcGxhdGUgPSAoKSA9PiBhbmd1bGFyLmNvcHkoQ09MVU1OX1RFTVBMQVRFKTtcblxuY29uc3QgTElORV9URU1QTEFURSA9IHtcbiAgbGluZTotMSxcbiAgYWN0aXZlQ29sdW1uIDogMSxcbiAgY29sdW1uczogW1xuICAgIHtcbiAgICAgIG51bUNvbHVtbjogMSxcbiAgICAgIGV4aXN0OnRydWUsXG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6J25vbmUnLFxuICAgICAgICBrZXk6ICdub25lJ1xuICAgICAgICAvLyB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ25vbmUnLFxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnbm9uZScsXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpdmUgdGV4dCdcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxufTtcbmNvbnN0IGluaXRMaW5lVGVtcGxhdGUgPSAoKSA9PiBhbmd1bGFyLmNvcHkoTElORV9URU1QTEFURSk7XG5cbmV4cG9ydCB7XG4gIGluaXREZWJ1Z01vZGVsLFxuICBpbml0VGFiTW9kZWwsXG4gIGluaXRDb2x1bW5UZW1wbGF0ZSxcbiAgaW5pdExpbmVUZW1wbGF0ZVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL21haW4vc3RlcHdheS5tYWluLmNvbnRyb2xsZXIuaGVscGVycy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 24 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'SELECT_CTRL_IN_LIST' | translate}} :\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n {{'SELECT_A_CTRL' | translate}}\\n \\n \\n
\\n
\\n\\n
\\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n
\\n\\n\\n \\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tb2RhbC9zdGVwd2F5LmVkaXRDb250cm9sTW9kYWwudGVtcGxhdGUuaHRtbD9hYTY0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZGQUE2Riw2QkFBNkIsaU9BQWlPLFlBQVksbUNBQW1DLHFxQkFBcXFCLEdBQUcsNkJBQTZCIiwiZmlsZSI6IjI0LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIjxkaXYgY2xhc3M9XFxcIm1vZGFsLWhlYWRlclxcXCI+XFxuICA8aDMgY2xhc3M9XFxcIm1vZGFsLXRpdGxlIGdyZXlUZXh0XFxcIj5cXG4gICAge3snU0VMRUNUX0FfQ1RSTCcgfCB0cmFuc2xhdGV9fVxcbiAgPC9oMz5cXG48L2Rpdj5cXG48ZGl2IGNsYXNzPVxcXCJtb2RhbC1ib2R5XFxcIj5cXG4gIDxoci8+XFxuICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJjb2wteHMtMTIgY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtbGctMTJcXFwiPlxcbiAgICAgIDxoNSBjbGFzcz1cXFwiZ3JleVRleHRcXFwiPlxcbiAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLWZpbHRlclxcXCI+PC9pPlxcbiAgICAgICAgJm5ic3A7XFxuICAgICAgICB7eydTRUxFQ1RfQ1RSTF9JTl9MSVNUJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICA8L2g1PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiY29sLXhzLTEyIGNvbC1zbS0xMiBjb2wtbWQtMTIgY29sLWxnLTEyXFxcIj5cXG4gICAgICA8ZWRpdC1jaG9vc2UtY29udHJvbFxcbiAgICAgICAgbW9kZWwtbnlhLXNlbGVjdD1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLm1vZGVsTnlhU2VsZWN0XFxcIlxcbiAgICAgICAgbnlhLXNlbGVjdC1maWx0ZXJlZD1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLm55YVNlbGVjdEZpbHRlcmVkXFxcIlxcbiAgICAgICAgc2VsZWN0LXRoaXMtY29udHJvbD1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLnNlbGVjdFRoaXNDb250cm9sKG9wdGlvbklkKVxcXCI+XFxuICAgICAgPC9lZGl0LWNob29zZS1jb250cm9sPlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbiAgPGhyLz5cXG4gIDxkaXYgbmctc3dpdGNoIG9uPVxcXCJlZGl0Q29udHJvbE1vZEN0cmwubnlhU2VsZWN0LnNlbGVjdGVkQ29udHJvbFxcXCI+XFxuXFxuICAgIDxkaXYgbmctc3dpdGNoLXdoZW49XFxcIm5vbmVcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtc20tMTJcXFwiPlxcbiAgICAgICAgICA8aDUgY2xhc3M9XFxcInRleHQtY2VudGVyIHRleHRlUm91Z2VcXFwiPlxcbiAgICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1hcnJvdy11cFxcXCI+PC9pPlxcbiAgICAgICAgICAgICZuYnNwOyB7eydTRUxFQ1RfQV9DVFJMJyB8IHRyYW5zbGF0ZX19XFxuICAgICAgICAgIDwvaDU+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuXFxuICAgIDxkaXYgbmctc3dpdGNoLXdoZW49XFxcImVtcHR5XFxcIj5cXG4gICAgICA8ZWRpdC1ibGFuay1jb250cm9sPjwvZWRpdC1ibGFuay1jb250cm9sPlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdiBuZy1zd2l0Y2gtd2hlbj1cXFwiSGVhZGVyXFxcIj5cXG4gICAgICA8ZWRpdC1oZWFkZXItY29udHJvbFxcbiAgICAgICAgbnlhLXNlbGVjdD1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLm55YVNlbGVjdFxcXCI+XFxuICAgICAgPC9lZGl0LWhlYWRlci1jb250cm9sPlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdiBuZy1zd2l0Y2gtd2hlbj1cXFwiU3VidGl0bGVcXFwiPlxcbiAgICAgIDxlZGl0LXN1Yi10aXRsZS1jb250cm9sXFxuICAgICAgICBueWEtc2VsZWN0PVxcXCJlZGl0Q29udHJvbE1vZEN0cmwubnlhU2VsZWN0XFxcIj5cXG4gICAgICA8L2VkaXQtc3ViLXRpdGxlLWNvbnRyb2w+XFxuICAgIDwvZGl2PlxcblxcbiAgICA8ZGl2IG5nLXN3aXRjaC13aGVuPVxcXCJUZXh0SW5wdXRcXFwiPlxcbiAgICAgIDxlZGl0LXRleHQtaW5wdXQtY29udHJvbFxcbiAgICAgICAgbnlhLXNlbGVjdD1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLm55YVNlbGVjdFxcXCI+XFxuICAgICAgPC9lZGl0LXRleHQtaW5wdXQtY29udHJvbD5cXG4gICAgPC9kaXY+XFxuXFxuICAgIDxkaXYgbmctc3dpdGNoLXdoZW49XFxcIlBhc3N3b3JkXFxcIj5cXG4gICAgICA8ZWRpdC1wYXNzd29yZC1jb250cm9sXFxuICAgICAgICBueWEtc2VsZWN0PVxcXCJlZGl0Q29udHJvbE1vZEN0cmwubnlhU2VsZWN0XFxcIj5cXG4gICAgICA8L2VkaXQtcGFzc3dvcmQtY29udHJvbD5cXG4gICAgPC9kaXY+XFxuXFxuICAgIDxkaXYgbmctc3dpdGNoLXdoZW49XFxcIkVtYWlsXFxcIj5cXG4gICAgICA8ZWRpdC1lbWFpbC1jb250cm9sXFxuICAgICAgICBueWEtc2VsZWN0PVxcXCJlZGl0Q29udHJvbE1vZEN0cmwubnlhU2VsZWN0XFxcIj5cXG4gICAgICA8L2VkaXQtZW1haWwtY29udHJvbD5cXG4gICAgPC9kaXY+XFxuXFxuICAgIDxkaXYgbmctc3dpdGNoLXdoZW49XFxcIklwQWRyZXNzXFxcIj5cXG4gICAgICA8ZWRpdC1pcC1hZHJlc3MtY29udHJvbFxcbiAgICAgICAgbnlhLXNlbGVjdD1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLm55YVNlbGVjdFxcXCI+XFxuICAgICAgPC9lZGl0LWlwLWFkcmVzcy1jb250cm9sPlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdiBuZy1zd2l0Y2gtd2hlbj1cXFwiRGF0ZVxcXCI+XFxuICAgICAgPGVkaXQtZGF0ZS1jb250cm9sXFxuICAgICAgICBueWEtc2VsZWN0PVxcXCJlZGl0Q29udHJvbE1vZEN0cmwubnlhU2VsZWN0XFxcIlxcbiAgICAgICAgZGVtb2R0PVxcXCJlZGl0Q29udHJvbE1vZEN0cmwuZGVtb2R0XFxcIlxcbiAgICAgICAgZGF0ZS1vcHRpb25zPVxcXCJlZGl0Q29udHJvbE1vZEN0cmwuZGF0ZU9wdGlvbnNcXFwiXFxuICAgICAgICBvcGVuPVxcXCJlZGl0Q29udHJvbE1vZEN0cmwub3BlbihldmVudClcXFwiPlxcbiAgICAgIDxlZGl0LWRhdGUtY29udHJvbD5cXG4gICAgPC9kaXY+XFxuXFxuICAgIDxkaXYgbmctc3dpdGNoLXdoZW49XFxcIlRleGFyZWFcXFwiPlxcbiAgICAgIDxlZGl0LXRleHRhcmVhLWNvbnRyb2xcXG4gICAgICAgIG55YS1zZWxlY3Q9XFxcImVkaXRDb250cm9sTW9kQ3RybC5ueWFTZWxlY3RcXFwiPlxcbiAgICAgIDwvZWRpdC10ZXh0YXJlYS1jb250cm9sPlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdiBuZy1zd2l0Y2gtd2hlbj1cXFwiUmljaFRleHRFZGl0b3JcXFwiPlxcbiAgICAgIDxlZGl0LXJpY2gtdGV4dC1lZGl0b3ItY29udHJvbFxcbiAgICAgICAgbnlhLXNlbGVjdD1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLm55YVNlbGVjdFxcXCI+XFxuICAgICAgPC9lZGl0LXJpY2gtdGV4dC1lZGl0b3ItY29udHJvbD5cXG4gICAgPC9kaXY+XFxuXFxuICAgIDxkaXYgbmctc3dpdGNoLXdoZW49XFxcIlJhZGlvXFxcIj5cXG4gICAgICA8ZWRpdC1yYWRpby1jb250cm9sXFxuICAgICAgICBueWEtc2VsZWN0PVxcXCJlZGl0Q29udHJvbE1vZEN0cmwubnlhU2VsZWN0XFxcIlxcbiAgICAgICAgcmFkaW8tcm93LWNvbGxlY3Rpb249XFxcImVkaXRDb250cm9sTW9kQ3RybC5yYWRpb1Jvd0NvbGxlY3Rpb25cXFwiXFxuICAgICAgICBuZXctb3B0aW9uLXJhZGlvPVxcXCJlZGl0Q29udHJvbE1vZEN0cmwubmV3T3B0aW9uUmFkaW9cXFwiXFxuICAgICAgICBhZGQtbmV3LW9wdGlvbi1yYWRpbz1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLmFkZE5ld09wdGlvblJhZGlvKClcXFwiXFxuICAgICAgICB1cC10aGlzLXJhZGlvLXJvdz1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLnVwVGhpc1JhZGlvUm93KGluZGV4KVxcXCJcXG4gICAgICAgIGRvd24tdGhpcy1yYWRpby1yb3c9XFxcImVkaXRDb250cm9sTW9kQ3RybC5kb3duVGhpc1JhZGlvUm93KGluZGV4KVxcXCJcXG4gICAgICAgIHJlbW92ZS1yYWRpby1yb3c9XFxcImVkaXRDb250cm9sTW9kQ3RybC5yZW1vdmVSYWRpb1JvdyhpbmRleClcXFwiPlxcbiAgICAgIDwvZWRpdC1yYWRpby1jb250cm9sPlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdiBuZy1zd2l0Y2gtd2hlbj1cXFwiQ2hlY2tib3hcXFwiPlxcbiAgICAgIDxlZGl0LWNoZWNrLWJveC1jb250cm9sXFxuICAgICAgICBueWEtc2VsZWN0PVxcXCJlZGl0Q29udHJvbE1vZEN0cmwubnlhU2VsZWN0XFxcIj5cXG4gICAgICA8L2VkaXQtY2hlY2stYm94LWNvbnRyb2w+XFxuICAgIDwvZGl2PlxcblxcbiAgICA8ZGl2IG5nLXN3aXRjaC13aGVuPVxcXCJCYXNpY1NlbGVjdFxcXCI+XFxuICAgICAgPGVkaXQtYmFzaWMtc2VsZWN0LWNvbnRyb2xcXG4gICAgICAgIG55YS1zZWxlY3Q9XFxcImVkaXRDb250cm9sTW9kQ3RybC5ueWFTZWxlY3RcXFwiXFxuICAgICAgICBiYXNpYy1zZWxlY3Qtcm93LWNvbGxlY3Rpb249XFxcImVkaXRDb250cm9sTW9kQ3RybC5iYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb25cXFwiXFxuICAgICAgICBuZXctb3B0aW9uLWJhc2ljLXNlbGVjdD1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLm5ld09wdGlvbkJhc2ljU2VsZWN0XFxcIlxcbiAgICAgICAgYWRkLW5ldy1vcHRpb24tYmFzaWMtc2VsZWN0PVxcXCJlZGl0Q29udHJvbE1vZEN0cmwuYWRkTmV3T3B0aW9uQmFzaWNTZWxlY3QoKVxcXCJcXG4gICAgICAgIHVwLXRoaXMtcm93PVxcXCJlZGl0Q29udHJvbE1vZEN0cmwudXBUaGlzUm93KGluZGV4KVxcXCJcXG4gICAgICAgIGRvd24tdGhpcy1yb3c9XFxcImVkaXRDb250cm9sTW9kQ3RybC5kb3duVGhpc1JvdyhpbmRleClcXFwiXFxuICAgICAgICByZW1vdmUtcm93PVxcXCJlZGl0Q29udHJvbE1vZEN0cmwucmVtb3ZlUm93KGluZGV4KVxcXCI+XFxuICAgICAgPC9lZGl0LWJhc2ljLXNlbGVjdC1jb250cm9sPlxcbiAgICA8L2Rpdj5cXG5cXG4gICAgPGRpdiBuZy1zd2l0Y2gtd2hlbj1cXFwiR3JvdXBlZFNlbGVjdFxcXCI+XFxuICAgICAgPGVkaXQtZ3JvdXBlZC1zZWxlY3QtY29udHJvbFxcbiAgICAgICAgbnlhLXNlbGVjdD1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLm55YVNlbGVjdFxcXCJcXG4gICAgICAgIGdyb3VwZWQtc2VsZWN0LXJvdy1jb2xsZWN0aW9uPVxcXCJlZGl0Q29udHJvbE1vZEN0cmwuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb25cXFwiXFxuICAgICAgICBuZXctb3B0aW9uLWdyb3VwZWQtc2VsZWN0PVxcXCJlZGl0Q29udHJvbE1vZEN0cmwubmV3T3B0aW9uR3JvdXBlZFNlbGVjdFxcXCJcXG4gICAgICAgIG5ldy1ncm91cC1ncm91cGVkLXNlbGVjdD1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLm5ld0dyb3VwR3JvdXBlZFNlbGVjdFxcXCJcXG4gICAgICAgIGdyb3VwLXNlbGVjdC1ncm91cC1jbGljaz1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLmdyb3VwU2VsZWN0R3JvdXBDbGlja1xcXCJcXG4gICAgICAgIGdyb3VwZWQtc2VsZWN0LWdyb3Vwcz1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLkdyb3VwZWRTZWxlY3RHcm91cHNcXFwiXFxuICAgICAgICBhZGQtbmV3LW9wdGlvbi1ncm91cGVkLXNlbGVjdD1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLmFkZE5ld09wdGlvbkdyb3VwZWRTZWxlY3QoKVxcXCJcXG4gICAgICAgIGFkZC1uZXctZ3JvdXAtdG8tZ3JvdXBlZC1zZWxlY3Q9XFxcImVkaXRDb250cm9sTW9kQ3RybC5hZGROZXdHcm91cFRvR3JvdXBlZFNlbGVjdCgpXFxcIlxcbiAgICAgICAgdXAtdGhpcy1ncm91cGVkLXNlbGVjdC1yb3c9XFxcImVkaXRDb250cm9sTW9kQ3RybC51cFRoaXNHcm91cGVkU2VsZWN0Um93KGluZGV4KVxcXCJcXG4gICAgICAgIGRvd24tdGhpcy1ncm91cGVkLXNlbGVjdC1yb3c9XFxcImVkaXRDb250cm9sTW9kQ3RybC5kb3duVGhpc0dyb3VwZWRTZWxlY3RSb3coaW5kZXgpXFxcIlxcbiAgICAgICAgc2hvdy1ncm91cC1saXN0LXRvLWNob29zZT1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLnNob3dHcm91cExpc3RUb0Nob29zZSgpXFxcIlxcbiAgICAgICAgcmVtb3ZlLWdyb3VwZWQtc2VsZWN0LXJvdz1cXFwiZWRpdENvbnRyb2xNb2RDdHJsLnJlbW92ZUdyb3VwZWRTZWxlY3RSb3coaW5kZXgpXFxcIlxcbiAgICAgICAgPlxcbiAgICAgIDwvZWRpdC1ncm91cGVkLXNlbGVjdC1jb250cm9sPlxcbiAgICA8L2Rpdj5cXG5cXG4gIDwvZGl2PlxcbjwvZGl2PlxcblxcbjxlZGl0LXZhbGlkLWVkaXQtZm9vdGVyXFxuICBueWEtc2VsZWN0PVxcXCJlZGl0Q29udHJvbE1vZEN0cmwubnlhU2VsZWN0XFxcIlxcbiAgb2s9XFxcImVkaXRDb250cm9sTW9kQ3RybC5vaygpXFxcIlxcbiAgY2FuY2VsPVxcXCJlZGl0Q29udHJvbE1vZEN0cmwuY2FuY2VsKClcXFwiID5cXG48L2VkaXQtdmFsaWQtZWRpdC1mb290ZXI+XFxuXCJcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL21vZGFsL3N0ZXB3YXkuZWRpdENvbnRyb2xNb2RhbC50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSAyNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 25 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_MODAL_CONTROLLER_NAME = 'editControlModalController';\nvar EDIT_MODAL_CONTROLLERAS_NAME = 'editControlModCtrl';\n\nvar editControlModalController = function () {\n function editControlModalController($uibModalInstance, nyaSelect, toaster, selectOptionManage, $modalProxy) {\n _classCallCheck(this, editControlModalController);\n\n this.$modalInstance = $uibModalInstance;\n this.nyaSelect = nyaSelect;\n this.toaster = toaster;\n this.selectOptionManage = selectOptionManage;\n this.$modalProxy = $modalProxy;\n\n this.init();\n }\n\n _createClass(editControlModalController, [{\n key: 'init',\n value: function init() {\n var initOptionModel = { rows: [] };\n\n this.radioRowCollection = initOptionModel;\n this.newOptionRadio = { saisie: '' };\n this.basicSelectRowCollection = initOptionModel;\n this.newOptionBasicSelect = { saisie: '' };\n this.groupedSelectRowCollection = initOptionModel;\n this.newOptionGroupedSelect = { saisie: '' };\n this.GroupedSelectGroups = { list: [] };\n this.newGroupGroupedSelect = { saisie: '' };\n this.groupSelectGroupClick = { showList: false };\n this.showGroupList = false;\n this.demodt = {};\n this.dateOptions = this.dateOptionsInit();\n this.demodt.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];\n this.nyaSelect.selectedControl = this.nyaSelect.temporyConfig.selectedControl;\n this.nyaSelectFiltered = {};\n this.modelNyaSelect = {};\n\n //init today date\n this.today();\n //init nyaSelect model depending selected control\n this.initNyaSelectConformingSelectedControl();\n }\n }, {\n key: 'initNyaSelectConformingSelectedControl',\n value: function initNyaSelectConformingSelectedControl() {\n //place nya-select to selection if not none :\n if (this.nyaSelect.selectedControl !== 'none') {\n for (var i = this.nyaSelect.controls.length - 1; i >= 0; i--) {\n if (this.nyaSelect.controls[i].id === this.nyaSelect.selectedControl) this.modelNyaSelect = this.nyaSelect.controls[i];\n }\n if (this.nyaSelect.selectedControl === 'BasicSelect') this.bindBasicSelectFromNYA();\n if (this.nyaSelect.selectedControl === 'GroupedSelect') this.bindGroupedSelectFromNYA();\n if (this.nyaSelect.selectedControl === 'Radio') this.bindRadioFromNYA();\n }\n this.initNyaSelectFiltered();\n }\n }, {\n key: 'initNyaSelectFiltered',\n value: function initNyaSelectFiltered() {\n var listCtrl = [].concat(this.$modalProxy.getFilteredNyaSelectObject());\n angular.extend(this.nyaSelectFiltered, {\n 'controls': listCtrl,\n 'selectedControl': this.nyaSelect.selectedControl,\n 'temporyConfig': this.nyaSelect.temporyConfig\n });\n }\n }, {\n key: 'bindBasicSelectFromNYA',\n value: function bindBasicSelectFromNYA() {\n if (this.nyaSelect.temporyConfig.formlyOptions.length > 0) {\n for (var i = 0; i <= this.nyaSelect.temporyConfig.formlyOptions.length - 1; i++) {\n var newOption = {\n 'option': this.nyaSelect.temporyConfig.formlyOptions[i].name,\n 'order': i,\n 'group': ''\n };\n this.basicSelectRowCollection.rows.push(newOption);\n }\n }\n }\n }, {\n key: 'bindRadioFromNYA',\n value: function bindRadioFromNYA() {\n if (this.nyaSelect.temporyConfig.formlyOptions.length > 0) {\n for (var i = 0; i <= this.nyaSelect.temporyConfig.formlyOptions.length - 1; i++) {\n var newOption = {\n 'option': this.nyaSelect.temporyConfig.formlyOptions[i].name,\n 'order': i,\n 'group': ''\n };\n this.radioRowCollection.rows.push(newOption);\n }\n }\n }\n }, {\n key: 'bindGroupedSelectFromNYA',\n value: function bindGroupedSelectFromNYA() {\n if (this.nyaSelect.temporyConfig.formlyOptions.length > 0) {\n for (var i = 0; i <= this.nyaSelect.temporyConfig.formlyOptions.length - 1; i++) {\n var newOption = {\n 'option': this.nyaSelect.temporyConfig.formlyOptions[i].name,\n 'order': i,\n 'group': this.nyaSelect.temporyConfig.formlyOptions[i].group\n };\n this.groupedSelectRowCollection.rows.push(newOption);\n }\n var filteredgroup = _.uniq(_.pluck(this.groupedSelectRowCollection.rows, 'group'));\n angular.copy(filteredgroup, this.GroupedSelectGroups.list);\n }\n }\n }, {\n key: 'addNewOptionRadio',\n value: function addNewOptionRadio() {\n var result = this.selectOptionManage.addNewOptionRadio(this.radioRowCollection, this.newOptionRadio.saisie);\n if (result.resultFlag === false) {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: result.details,\n body: '\\'' + this.newOptionRadio.saisie + '\\' cannot be added.',\n showCloseButton: true\n });\n }\n this.newOptionRadio = { saisie: '' }; //reset input\n }\n }, {\n key: 'removeRadioRow',\n value: function removeRadioRow(index) {\n var result = this.selectOptionManage.removeOption(this.radioRowCollection, index);\n if (result.resultFlag === false) {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: result.details,\n body: 'Delete was cancelled.',\n showCloseButton: true\n });\n }\n }\n }, {\n key: 'upThisRadioRow',\n value: function upThisRadioRow(index) {\n var result = this.selectOptionManage.upthisOption(this.radioRowCollection, index);\n if (result.resultFlag === false) {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: result.details,\n body: 'Operation cancelled.',\n showCloseButton: true\n });\n }\n }\n }, {\n key: 'downThisRadioRow',\n value: function downThisRadioRow(index) {\n var result = this.selectOptionManage.downthisOption(this.radioRowCollection, index);\n if (result.resultFlag === false) {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: result.details,\n body: 'Operation cancelled.',\n showCloseButton: true\n });\n }\n }\n }, {\n key: 'addNewOptionBasicSelect',\n value: function addNewOptionBasicSelect() {\n var result = this.selectOptionManage.addNewOptionBasicSelect(this.basicSelectRowCollection, this.newOptionBasicSelect.saisie);\n if (result.resultFlag === false) {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: result.details,\n body: '\\'' + this.newOptionBasicSelect.saisie + '\\' cannot be added.',\n showCloseButton: true\n });\n }\n this.newOptionBasicSelect = { saisie: '' }; //reset input\n }\n }, {\n key: 'removeRow',\n value: function removeRow(index) {\n var result = this.selectOptionManage.removeOption(this.basicSelectRowCollection, index);\n if (result.resultFlag === false) {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: result.details,\n body: 'Delete was cancelled.',\n showCloseButton: true\n });\n }\n }\n }, {\n key: 'upThisRow',\n value: function upThisRow(index) {\n var result = this.selectOptionManage.upthisOption(this.basicSelectRowCollection, index);\n if (result.resultFlag === false) {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: result.details,\n body: 'Operation cancelled.',\n showCloseButton: true\n });\n }\n }\n }, {\n key: 'downThisRow',\n value: function downThisRow(index) {\n var result = this.selectOptionManage.downthisOption(this.basicSelectRowCollection, index);\n if (result.resultFlag === false) {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: result.details,\n body: 'Operation cancelled.',\n showCloseButton: true\n });\n }\n }\n }, {\n key: 'showGroupListToChoose',\n value: function showGroupListToChoose() {\n this.groupSelectGroupClick.showList = !this.groupSelectGroupClick.showList;\n }\n }, {\n key: 'addNewGroupToGroupedSelect',\n value: function addNewGroupToGroupedSelect() {\n if (this.newGroupGroupedSelect.saisie !== '') {\n for (var i = this.GroupedSelectGroups.list.length - 1; i >= 0; i--) {\n if (this.GroupedSelectGroups.list[i] === this.newGroupGroupedSelect.saisie) {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: 'Group already exists',\n body: 'No group added.',\n showCloseButton: true\n });\n }\n }\n this.GroupedSelectGroups.list.push(this.newGroupGroupedSelect.saisie);\n } else {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: 'Not a valid group to add',\n body: 'No group added.',\n showCloseButton: true\n });\n }\n this.newGroupGroupedSelect.saisie = '';\n }\n }, {\n key: 'addNewOptionGroupedSelect',\n value: function addNewOptionGroupedSelect() {\n var result = this.selectOptionManage.addNewOptionGroupedSelect(this.groupedSelectRowCollection, this.newOptionGroupedSelect.saisie, '');\n if (result.resultFlag === false) {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: result.details,\n body: '\\'' + this.newOptionGroupedSelect.saisie + '\\' cannot be added.',\n showCloseButton: true\n });\n }\n // bind nya : dont bind here $apply is not done fast enough\n // bindGroupedSelectToNya();\n // reset input\n this.newOptionGroupedSelect = { saisie: '' };\n }\n }, {\n key: 'removeGroupedSelectRow',\n value: function removeGroupedSelectRow(index) {\n var result = this.selectOptionManage.removeOption(this.groupedSelectRowCollection, index);\n if (result.resultFlag === false) {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: result.details,\n body: 'Delete was cancelled.',\n showCloseButton: true\n });\n }\n }\n }, {\n key: 'upThisGroupedSelectRow',\n value: function upThisGroupedSelectRow(index) {\n var result = this.selectOptionManage.upthisOption(this.groupedSelectRowCollection, index);\n if (result.resultFlag === false) {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: result.details,\n body: 'Operation cancelled.',\n showCloseButton: true\n });\n }\n }\n }, {\n key: 'downThisGroupedSelectRow',\n value: function downThisGroupedSelectRow(index) {\n var result = this.selectOptionManage.downthisOption(this.groupedSelectRowCollection, index);\n if (result.resultFlag === false) {\n this.toaster.pop({\n type: 'warning',\n timeout: 2000,\n title: result.details,\n body: 'Operation cancelled.',\n showCloseButton: true\n });\n }\n }\n }, {\n key: 'today',\n value: function today() {\n this.demodt.dt = new Date();\n }\n }, {\n key: 'clear',\n value: function clear() {\n this.demodt.dt = null;\n }\n }, {\n key: 'open',\n value: function open($event) {\n $event.preventDefault();\n $event.stopPropagation();\n this.demodt.opened = true;\n }\n }, {\n key: 'dateOptionsInit',\n value: function dateOptionsInit() {\n return {\n formatYear: 'yy',\n startingDay: 1,\n showWeeks: true,\n initDate: null\n };\n }\n }, {\n key: 'selectThisControl',\n value: function selectThisControl(controlName) {\n this.nyaSelect.selectedControl = 'none';\n this.resetTemporyConfig();\n for (var i = this.nyaSelect.controls.length - 1; i >= 0; i--) {\n if (this.nyaSelect.controls[i].id === controlName) this.nyaSelect.selectedControl = this.nyaSelect.controls[i].id;\n }\n if (this.nyaSelect.selectedControl === 'Date') this.initDatePicker();\n }\n }, {\n key: 'ok',\n value: function ok() {\n if (this.nyaSelect.selectedControl === 'BasicSelect') this.bindBasicSelectToNya();\n if (this.nyaSelect.selectedControl === 'GroupedSelect') this.bindGroupedSelectToNya();\n if (this.nyaSelect.selectedControl === 'Radio') this.bindRadioToNya();\n //save config to control\n this.$modalProxy.applyConfigToSelectedControl(this.nyaSelect);\n //return current model to parent controller :\n this.$modalInstance.close(this.nyaSelect);\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.$modalInstance.dismiss('cancel');\n }\n }, {\n key: 'bindBasicSelectToNya',\n value: function bindBasicSelectToNya() {\n var resetNyASelectOptions = [];\n this.nyaSelect.temporyConfig.formlyOptions = resetNyASelectOptions;\n if (this.basicSelectRowCollection.rows.length > 0) {\n for (var i = 0; i <= this.basicSelectRowCollection.rows.length - 1; i++) {\n var newOption = {\n 'name': this.basicSelectRowCollection.rows[i].option,\n 'value': i,\n 'group': ''\n };\n this.nyaSelect.temporyConfig.formlyOptions.push(newOption);\n }\n }\n }\n }, {\n key: 'bindGroupedSelectToNya',\n value: function bindGroupedSelectToNya() {\n this.nyaSelect.temporyConfig.formlyOptions = [];\n for (var i = 0; i <= this.groupedSelectRowCollection.rows.length - 1; i++) {\n var newOption = {\n 'name': this.groupedSelectRowCollection.rows[i].option,\n 'value': i,\n 'group': this.groupedSelectRowCollection.rows[i].group\n };\n this.nyaSelect.temporyConfig.formlyOptions.push(newOption);\n }\n }\n }, {\n key: 'bindRadioToNya',\n value: function bindRadioToNya() {\n var resetNyASelectOptions = [];\n this.nyaSelect.temporyConfig.formlyOptions = resetNyASelectOptions;\n if (this.radioRowCollection.rows.length > 0) {\n for (var i = 0; i <= this.radioRowCollection.rows.length - 1; i++) {\n var newOption = {\n 'name': this.radioRowCollection.rows[i].option,\n 'value': i,\n 'group': ''\n };\n this.nyaSelect.temporyConfig.formlyOptions.push(newOption);\n }\n }\n }\n }, {\n key: 'initDatePicker',\n value: function initDatePicker() {\n this.nyaSelect.temporyConfig.datepickerOptions = {\n format: this.demodt.formats[0]\n };\n }\n }, {\n key: 'resetTemporyConfig',\n value: function resetTemporyConfig() {\n this.nyaSelectFiltered.temporyConfig = {\n formlyLabel: '',\n formlyRequired: false,\n formlyPlaceholder: '',\n formlyDescription: '',\n formlyOptions: []\n };\n }\n }]);\n\n return editControlModalController;\n}();\n\nvar toInject = ['$uibModalInstance', 'nyaSelect', 'toaster', 'selectOptionManage', '$modalProxy'];\n\neditControlModalController.$inject = toInject;\n\nexports.default = editControlModalController;\nexports.EDIT_MODAL_CONTROLLER_NAME = EDIT_MODAL_CONTROLLER_NAME;\nexports.EDIT_MODAL_CONTROLLERAS_NAME = EDIT_MODAL_CONTROLLERAS_NAME;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tb2RhbC9zdGVwd2F5LmVkaXRDb250cm9sTW9kYWwuY29udHJvbGxlci5qcz85MzAwIl0sIm5hbWVzIjpbIkVESVRfTU9EQUxfQ09OVFJPTExFUl9OQU1FIiwiRURJVF9NT0RBTF9DT05UUk9MTEVSQVNfTkFNRSIsImVkaXRDb250cm9sTW9kYWxDb250cm9sbGVyIiwiJHVpYk1vZGFsSW5zdGFuY2UiLCJueWFTZWxlY3QiLCJ0b2FzdGVyIiwic2VsZWN0T3B0aW9uTWFuYWdlIiwiJG1vZGFsUHJveHkiLCIkbW9kYWxJbnN0YW5jZSIsImluaXQiLCJpbml0T3B0aW9uTW9kZWwiLCJyb3dzIiwicmFkaW9Sb3dDb2xsZWN0aW9uIiwibmV3T3B0aW9uUmFkaW8iLCJzYWlzaWUiLCJiYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24iLCJuZXdPcHRpb25CYXNpY1NlbGVjdCIsImdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uIiwibmV3T3B0aW9uR3JvdXBlZFNlbGVjdCIsIkdyb3VwZWRTZWxlY3RHcm91cHMiLCJsaXN0IiwibmV3R3JvdXBHcm91cGVkU2VsZWN0IiwiZ3JvdXBTZWxlY3RHcm91cENsaWNrIiwic2hvd0xpc3QiLCJzaG93R3JvdXBMaXN0IiwiZGVtb2R0IiwiZGF0ZU9wdGlvbnMiLCJkYXRlT3B0aW9uc0luaXQiLCJmb3JtYXRzIiwic2VsZWN0ZWRDb250cm9sIiwidGVtcG9yeUNvbmZpZyIsIm55YVNlbGVjdEZpbHRlcmVkIiwibW9kZWxOeWFTZWxlY3QiLCJ0b2RheSIsImluaXROeWFTZWxlY3RDb25mb3JtaW5nU2VsZWN0ZWRDb250cm9sIiwiaSIsImNvbnRyb2xzIiwibGVuZ3RoIiwiaWQiLCJiaW5kQmFzaWNTZWxlY3RGcm9tTllBIiwiYmluZEdyb3VwZWRTZWxlY3RGcm9tTllBIiwiYmluZFJhZGlvRnJvbU5ZQSIsImluaXROeWFTZWxlY3RGaWx0ZXJlZCIsImxpc3RDdHJsIiwiY29uY2F0IiwiZ2V0RmlsdGVyZWROeWFTZWxlY3RPYmplY3QiLCJhbmd1bGFyIiwiZXh0ZW5kIiwiZm9ybWx5T3B0aW9ucyIsIm5ld09wdGlvbiIsIm5hbWUiLCJwdXNoIiwiZ3JvdXAiLCJmaWx0ZXJlZGdyb3VwIiwiXyIsInVuaXEiLCJwbHVjayIsImNvcHkiLCJyZXN1bHQiLCJhZGROZXdPcHRpb25SYWRpbyIsInJlc3VsdEZsYWciLCJwb3AiLCJ0eXBlIiwidGltZW91dCIsInRpdGxlIiwiZGV0YWlscyIsImJvZHkiLCJzaG93Q2xvc2VCdXR0b24iLCJpbmRleCIsInJlbW92ZU9wdGlvbiIsInVwdGhpc09wdGlvbiIsImRvd250aGlzT3B0aW9uIiwiYWRkTmV3T3B0aW9uQmFzaWNTZWxlY3QiLCJhZGROZXdPcHRpb25Hcm91cGVkU2VsZWN0IiwiZHQiLCJEYXRlIiwiJGV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJvcGVuZWQiLCJmb3JtYXRZZWFyIiwic3RhcnRpbmdEYXkiLCJzaG93V2Vla3MiLCJpbml0RGF0ZSIsImNvbnRyb2xOYW1lIiwicmVzZXRUZW1wb3J5Q29uZmlnIiwiaW5pdERhdGVQaWNrZXIiLCJiaW5kQmFzaWNTZWxlY3RUb055YSIsImJpbmRHcm91cGVkU2VsZWN0VG9OeWEiLCJiaW5kUmFkaW9Ub055YSIsImFwcGx5Q29uZmlnVG9TZWxlY3RlZENvbnRyb2wiLCJjbG9zZSIsImRpc21pc3MiLCJyZXNldE55QVNlbGVjdE9wdGlvbnMiLCJvcHRpb24iLCJkYXRlcGlja2VyT3B0aW9ucyIsImZvcm1hdCIsImZvcm1seUxhYmVsIiwiZm9ybWx5UmVxdWlyZWQiLCJmb3JtbHlQbGFjZWhvbGRlciIsImZvcm1seURlc2NyaXB0aW9uIiwidG9JbmplY3QiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBTUEsNkJBQWlDLDRCQUF2QztBQUNBLElBQU1DLCtCQUFpQyxvQkFBdkM7O0lBRU1DLDBCO0FBQ0osc0NBQWNDLGlC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N0IsR0FBc0MsQ0FBMUMsRUFBNkM7QUFDM0MsYUFBSyxJQUFJRixJQUFJLENBQWIsRUFBZ0JBLEtBQUssS0FBS3ZCLGtCQUFMLENBQXdCRCxJQUF4QixDQUE2QjBCLE1BQTdCLEdBQXNDLENBQTNELEVBQThERixHQUE5RCxFQUFrRTtBQUNoRSxjQUFNYyxZQUFZO0FBQ2hCLG9CQUFVLEtBQUtyQyxrQkFBTCxDQUF3QkQsSUFBeEIsQ0FBNkJ3QixDQUE3QixFQUFnQzJELE1BRDFCO0FBRWhCLHFCQUFXM0QsQ0FGSztBQUdoQixxQkFBVztBQUhLLFdBQWxCO0FBS0EsZUFBSy9CLFNBQUwsQ0FBZTBCLGFBQWYsQ0FBNkJrQixhQUE3QixDQUEyQ0csSUFBM0MsQ0FBZ0RGLFNBQWhEO0FBQ0M7QUFDSjtBQUNGOzs7cUNBRWdCO0FBQ2YsV0FBSzdDLFNBQUwsQ0FBZTBCLGFBQWYsQ0FBNkJpRSxpQkFBN0IsR0FBaUQ7QUFDL0NDLGdCQUFTLEtBQUt2RSxNQUFMLENBQVlHLE9BQVosQ0FBb0IsQ0FBcEI7QUFEc0MsT0FBakQ7QUFHRDs7O3lDQUVtQjtBQUNsQixXQUFLRyxpQkFBTCxDQUF1QkQsYUFBdkIsR0FBdUM7QUFDckNtRSxxQkFBcUIsRUFEZ0I7QUFFckNDLHdCQUFvQixLQUZpQjtBQUdyQ0MsMkJBQXFCLEVBSGdCO0FBSXJDQywyQkFBcUIsRUFKZ0I7QUFLckNwRCx1QkFBcUI7QUFMZ0IsT0FBdkM7QUFPRDs7Ozs7O0FBR0gsSUFBTXFELFdBQVksQ0FDaEIsbUJBRGdCLEVBRWhCLFdBRmdCLEVBR2hCLFNBSGdCLEVBSWhCLG9CQUpnQixFQUtoQixhQUxnQixDQUFsQjs7QUFRQW5HLDJCQUEyQm9HLE9BQTNCLEdBQXFDRCxRQUFyQzs7a0JBRWVuRywwQjtRQUdiRiwwQixHQUFBQSwwQjtRQUNBQyw0QixHQUFBQSw0QiIsImZpbGUiOiIyNS5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEVESVRfTU9EQUxfQ09OVFJPTExFUl9OQU1FICAgICA9ICdlZGl0Q29udHJvbE1vZGFsQ29udHJvbGxlcic7XG5jb25zdCBFRElUX01PREFMX0NPTlRST0xMRVJBU19OQU1FICAgPSAnZWRpdENvbnRyb2xNb2RDdHJsJztcblxuY2xhc3MgZWRpdENvbnRyb2xNb2RhbENvbnRyb2xsZXIge1xuICBjb25zdHJ1Y3RvciggICR1aWJNb2RhbEluc3RhbmNlLFxuICAgICAgICAgICAgICAgIG55YVNlbGVjdCxcbiAgICAgICAgICAgICAgICB0b2FzdGVyLFxuICAgICAgICAgICAgICAgIHNlbGVjdE9wdGlvbk1hbmFnZSxcbiAgICAgICAgICAgICAgICAkbW9kYWxQcm94eSkge1xuXG4gICAgdGhpcy4kbW9kYWxJbnN0YW5jZSAgICAgPSAkdWliTW9kYWxJbnN0YW5jZTtcbiAgICB0aGlzLm55YVNlbGVjdCAgICAgICAgICA9IG55YVNlbGVjdDtcbiAgICB0aGlzLnRvYXN0ZXIgICAgICAgICAgICA9IHRvYXN0ZXI7XG4gICAgdGhpcy5zZWxlY3RPcHRpb25NYW5hZ2UgPSBzZWxlY3RPcHRpb25NYW5hZ2U7XG4gICAgdGhpcy4kbW9kYWxQcm94eSAgICAgICAgPSAkbW9kYWxQcm94eTtcblxuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgaW5pdCgpIHtcbiAgICBjb25zdCBpbml0T3B0aW9uTW9kZWwgICAgICAgICAgID0geyByb3dzOltdIH07XG5cbiAgICB0aGlzLnJhZGlvUm93Q29sbGVjdGlvbiAgICAgICAgID0gaW5pdE9wdGlvbk1vZGVsO1xuICAgIHRoaXMubmV3T3B0aW9uUmFkaW8gICAgICAgICAgICAgPSB7c2Fpc2llOiAnJ307XG4gICAgdGhpcy5iYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24gICA9IGluaXRPcHRpb25Nb2RlbDtcbiAgICB0aGlzLm5ld09wdGlvbkJhc2ljU2VsZWN0ICAgICAgID0ge3NhaXNpZTogJyd9O1xuICAgIHRoaXMuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24gPSBpbml0T3B0aW9uTW9kZWw7XG4gICAgdGhpcy5uZXdPcHRpb25Hcm91cGVkU2VsZWN0ICAgICA9IHtzYWlzaWU6ICcnfTtcbiAgICB0aGlzLkdyb3VwZWRTZWxlY3RHcm91cHMgICAgICAgID0geyBsaXN0OltdIH07XG4gICAgdGhpcy5uZXdHcm91cEdyb3VwZWRTZWxlY3QgICAgICA9IHtzYWlzaWU6ICcnfTtcbiAgICB0aGlzLmdyb3VwU2VsZWN0R3JvdXBDbGljayAgICAgID0ge3Nob3dMaXN0IDogZmFsc2V9O1xuICAgIHRoaXMuc2hvd0dyb3VwTGlzdCAgICAgICAgICAgICAgPSBmYWxzZTtcbiAgICB0aGlzLmRlbW9kdCAgICAgICAgICAgICAgICAgICAgID0ge307XG4gICAgdGhpcy5kYXRlT3B0aW9ucyAgICAgICAgICAgICAgICA9IHRoaXMuZGF0ZU9wdGlvbnNJbml0KCk7XG4gICAgdGhpcy5kZW1vZHQuZm9ybWF0cyAgICAgICAgICAgICA9IFsnZGQtTU1NTS15eXl5JywgJ3l5eXkvTU0vZGQnLCAnZGQuTU0ueXl5eScsICdzaG9ydERhdGUnXTtcbiAgICB0aGlzLm55YVNlbGVjdC5zZWxlY3RlZENvbnRyb2wgID0gdGhpcy5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5zZWxlY3RlZENvbnRyb2w7XG4gICAgdGhpcy5ueWFTZWxlY3RGaWx0ZXJlZCAgICAgICAgICA9IHt9O1xuICAgIHRoaXMubW9kZWxOeWFTZWxlY3QgICAgICAgICAgICAgPSB7fTtcblxuICAgIC8vaW5pdCB0b2RheSBkYXRlXG4gICAgdGhpcy50b2RheSgpO1xuICAgIC8vaW5pdCBueWFTZWxlY3QgbW9kZWwgZGVwZW5kaW5nIHNlbGVjdGVkIGNvbnRyb2xcbiAgICB0aGlzLmluaXROeWFTZWxlY3RDb25mb3JtaW5nU2VsZWN0ZWRDb250cm9sKCk7XG4gIH1cblxuICBpbml0TnlhU2VsZWN0Q29uZm9ybWluZ1NlbGVjdGVkQ29udHJvbCgpe1xuICAgIC8vcGxhY2UgbnlhLXNlbGVjdCB0byBzZWxlY3Rpb24gaWYgbm90IG5vbmUgOlxuICAgIGlmICh0aGlzLm55YVNlbGVjdC5zZWxlY3RlZENvbnRyb2wgIT09ICdub25lJykge1xuICAgICAgZm9yIChsZXQgaSA9IHRoaXMubnlhU2VsZWN0LmNvbnRyb2xzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmICh0aGlzLm55YVNlbGVjdC5jb250cm9sc1tpXS5pZCA9PT0gdGhpcy5ueWFTZWxlY3Quc2VsZWN0ZWRDb250cm9sKSB0aGlzLm1vZGVsTnlhU2VsZWN0ID0gdGhpcy5ueWFTZWxlY3QuY29udHJvbHNbaV07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5ueWFTZWxlY3Quc2VsZWN0ZWRDb250cm9sID09PSAnQmFzaWNTZWxlY3QnKSAgIHRoaXMuYmluZEJhc2ljU2VsZWN0RnJvbU5ZQSgpO1xuICAgICAgaWYgKHRoaXMubnlhU2VsZWN0LnNlbGVjdGVkQ29udHJvbCA9PT0gJ0dyb3VwZWRTZWxlY3QnKSB0aGlzLmJpbmRHcm91cGVkU2VsZWN0RnJvbU5ZQSgpO1xuICAgICAgaWYgKHRoaXMubnlhU2VsZWN0LnNlbGVjdGVkQ29udHJvbCA9PT0gJ1JhZGlvJykgICAgICAgICB0aGlzLmJpbmRSYWRpb0Zyb21OWUEoKTtcbiAgICB9XG4gICAgdGhpcy5pbml0TnlhU2VsZWN0RmlsdGVyZWQoKTtcbiAgfVxuXG4gIGluaXROeWFTZWxlY3RGaWx0ZXJlZCgpe1xuICAgIGNvbnN0IGxpc3RDdHJsID0gW10uY29uY2F0KHRoaXMuJG1vZGFsUHJveHkuZ2V0RmlsdGVyZWROeWFTZWxlY3RPYmplY3QoKSk7XG4gICAgYW5ndWxhci5leHRlbmQodGhpcy5ueWFTZWxlY3RGaWx0ZXJlZCx7XG4gICAgICAnY29udHJvbHMnICAgICAgICA6IGxpc3RDdHJsLFxuICAgICAgJ3NlbGVjdGVkQ29udHJvbCcgOiB0aGlzLm55YVNlbGVjdC5zZWxlY3RlZENvbnRyb2wsXG4gICAgICAndGVtcG9yeUNvbmZpZycgICA6IHRoaXMubnlhU2VsZWN0LnRlbXBvcnlDb25maWdcbiAgICB9KTtcbiAgfVxuXG4gIGJpbmRCYXNpY1NlbGVjdEZyb21OWUEoKXtcbiAgICBpZiAodGhpcy5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHRoaXMubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9ucy5sZW5ndGgtMTsgaSsrKXtcbiAgICAgICAgY29uc3QgbmV3T3B0aW9uID0ge1xuICAgICAgICAgICdvcHRpb24nICA6IHRoaXMubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9uc1tpXS5uYW1lLFxuICAgICAgICAgICdvcmRlcicgICAgOiBpLFxuICAgICAgICAgICdncm91cCcgICAgOiAnJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbi5yb3dzLnB1c2gobmV3T3B0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBiaW5kUmFkaW9Gcm9tTllBKCkge1xuICAgIGlmICh0aGlzLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seU9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gdGhpcy5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlPcHRpb25zLmxlbmd0aC0xOyBpKyspe1xuICAgICAgICBjb25zdCBuZXdPcHRpb24gPSB7XG4gICAgICAgICAgICAnb3B0aW9uJyAgOiB0aGlzLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seU9wdGlvbnNbaV0ubmFtZSxcbiAgICAgICAgICAgICdvcmRlcicgICAgOiBpLFxuICAgICAgICAgICAgJ2dyb3VwJyAgICA6ICcnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmFkaW9Sb3dDb2xsZWN0aW9uLnJvd3MucHVzaChuZXdPcHRpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGJpbmRHcm91cGVkU2VsZWN0RnJvbU5ZQSgpe1xuICAgIGlmICh0aGlzLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seU9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gdGhpcy5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlPcHRpb25zLmxlbmd0aC0xOyBpKyspe1xuICAgICAgICBjb25zdCBuZXdPcHRpb24gPSB7XG4gICAgICAgICAgJ29wdGlvbicgIDogdGhpcy5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlPcHRpb25zW2ldLm5hbWUsXG4gICAgICAgICAgJ29yZGVyJyAgICA6IGksXG4gICAgICAgICAgJ2dyb3VwJyAgICA6IHRoaXMubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9uc1tpXS5ncm91cFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MucHVzaChuZXdPcHRpb24pO1xuICAgICAgfVxuICAgICAgY29uc3QgZmlsdGVyZWRncm91cCA9IF8udW5pcShfLnBsdWNrKHRoaXMuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24ucm93cywgJ2dyb3VwJykpO1xuICAgICAgYW5ndWxhci5jb3B5KGZpbHRlcmVkZ3JvdXAsIHRoaXMuR3JvdXBlZFNlbGVjdEdyb3Vwcy5saXN0KTtcbiAgICB9XG4gIH1cblxuICBhZGROZXdPcHRpb25SYWRpbygpIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlbGVjdE9wdGlvbk1hbmFnZS5hZGROZXdPcHRpb25SYWRpbyh0aGlzLnJhZGlvUm93Q29sbGVjdGlvbiwgdGhpcy5uZXdPcHRpb25SYWRpby5zYWlzaWUpO1xuICAgIGlmIChyZXN1bHQucmVzdWx0RmxhZyA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMudG9hc3Rlci5wb3Aoe1xuICAgICAgICB0eXBlICAgIDogJ3dhcm5pbmcnLFxuICAgICAgICB0aW1lb3V0ICA6IDIwMDAsXG4gICAgICAgIHRpdGxlICAgIDogcmVzdWx0LmRldGFpbHMsXG4gICAgICAgIGJvZHkgICAgOiBgJyR7dGhpcy5uZXdPcHRpb25SYWRpby5zYWlzaWV9JyBjYW5ub3QgYmUgYWRkZWQuYCxcbiAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5uZXdPcHRpb25SYWRpbyA9IHtzYWlzaWU6ICcnfTsgLy9yZXNldCBpbnB1dFxuICB9XG5cbiAgcmVtb3ZlUmFkaW9Sb3coaW5kZXgpIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlbGVjdE9wdGlvbk1hbmFnZS5yZW1vdmVPcHRpb24odGhpcy5yYWRpb1Jvd0NvbGxlY3Rpb24sIGluZGV4KTtcbiAgICAgIGlmIChyZXN1bHQucmVzdWx0RmxhZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy50b2FzdGVyLnBvcCh7XG4gICAgICAgICAgdHlwZSAgICAgIDogJ3dhcm5pbmcnLFxuICAgICAgICAgIHRpbWVvdXQgICAgOiAyMDAwLFxuICAgICAgICAgIHRpdGxlICAgICAgOiByZXN1bHQuZGV0YWlscyxcbiAgICAgICAgICBib2R5ICAgICAgOiAnRGVsZXRlIHdhcyBjYW5jZWxsZWQuJyxcbiAgICAgICAgICBzaG93Q2xvc2VCdXR0b246IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBUaGlzUmFkaW9Sb3coaW5kZXgpIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlbGVjdE9wdGlvbk1hbmFnZS51cHRoaXNPcHRpb24odGhpcy5yYWRpb1Jvd0NvbGxlY3Rpb24sIGluZGV4KTtcbiAgICBpZiAocmVzdWx0LnJlc3VsdEZsYWcgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnRvYXN0ZXIucG9wKHtcbiAgICAgICAgdHlwZSAgICA6ICd3YXJuaW5nJyxcbiAgICAgICAgdGltZW91dCAgOiAyMDAwLFxuICAgICAgICB0aXRsZSAgICA6IHJlc3VsdC5kZXRhaWxzLFxuICAgICAgICBib2R5ICAgIDogJ09wZXJhdGlvbiBjYW5jZWxsZWQuJyxcbiAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBkb3duVGhpc1JhZGlvUm93KGluZGV4KSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWxlY3RPcHRpb25NYW5hZ2UuZG93bnRoaXNPcHRpb24odGhpcy5yYWRpb1Jvd0NvbGxlY3Rpb24sIGluZGV4KTtcbiAgICBpZiAocmVzdWx0LnJlc3VsdEZsYWcgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnRvYXN0ZXIucG9wKHtcbiAgICAgICAgdHlwZSAgICA6ICd3YXJuaW5nJyxcbiAgICAgICAgdGltZW91dCAgOiAyMDAwLFxuICAgICAgICB0aXRsZSAgICA6IHJlc3VsdC5kZXRhaWxzLFxuICAgICAgICBib2R5ICAgIDogJ09wZXJhdGlvbiBjYW5jZWxsZWQuJyxcbiAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhZGROZXdPcHRpb25CYXNpY1NlbGVjdCgpIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlbGVjdE9wdGlvbk1hbmFnZS5hZGROZXdPcHRpb25CYXNpY1NlbGVjdCh0aGlzLmJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbiwgdGhpcy5uZXdPcHRpb25CYXNpY1NlbGVjdC5zYWlzaWUpO1xuICAgIGlmIChyZXN1bHQucmVzdWx0RmxhZyA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMudG9hc3Rlci5wb3Aoe1xuICAgICAgICB0eXBlICAgIDogJ3dhcm5pbmcnLFxuICAgICAgICB0aW1lb3V0ICA6IDIwMDAsXG4gICAgICAgIHRpdGxlICAgIDogcmVzdWx0LmRldGFpbHMsXG4gICAgICAgIGJvZHkgICAgOiBgJyR7dGhpcy5uZXdPcHRpb25CYXNpY1NlbGVjdC5zYWlzaWV9JyBjYW5ub3QgYmUgYWRkZWQuYCxcbiAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5uZXdPcHRpb25CYXNpY1NlbGVjdCA9IHtzYWlzaWU6ICcnfTsgLy9yZXNldCBpbnB1dFxuICB9XG5cbiAgcmVtb3ZlUm93KGluZGV4KSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWxlY3RPcHRpb25NYW5hZ2UucmVtb3ZlT3B0aW9uKHRoaXMuYmFzaWNTZWxlY3RSb3dDb2xsZWN0aW9uLCBpbmRleCk7XG4gICAgaWYgKHJlc3VsdC5yZXN1bHRGbGFnID09PSBmYWxzZSkge1xuICAgICAgdGhpcy50b2FzdGVyLnBvcCh7XG4gICAgICAgIHR5cGUgICAgOiAnd2FybmluZycsXG4gICAgICAgIHRpbWVvdXQgIDoyMDAwLFxuICAgICAgICB0aXRsZSAgICA6IHJlc3VsdC5kZXRhaWxzLFxuICAgICAgICBib2R5ICAgIDogJ0RlbGV0ZSB3YXMgY2FuY2VsbGVkLicsXG4gICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBUaGlzUm93KGluZGV4KSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWxlY3RPcHRpb25NYW5hZ2UudXB0aGlzT3B0aW9uKHRoaXMuYmFzaWNTZWxlY3RSb3dDb2xsZWN0aW9uLCBpbmRleCk7XG4gICAgaWYgKHJlc3VsdC5yZXN1bHRGbGFnID09PSBmYWxzZSkge1xuICAgICAgdGhpcy50b2FzdGVyLnBvcCh7XG4gICAgICAgIHR5cGUgICAgOiAnd2FybmluZycsXG4gICAgICAgIHRpbWVvdXQgIDogMjAwMCxcbiAgICAgICAgdGl0bGUgICAgOiByZXN1bHQuZGV0YWlscyxcbiAgICAgICAgYm9keSAgICA6ICdPcGVyYXRpb24gY2FuY2VsbGVkLicsXG4gICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZG93blRoaXNSb3coaW5kZXgpIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlbGVjdE9wdGlvbk1hbmFnZS5kb3dudGhpc09wdGlvbih0aGlzLmJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbiwgaW5kZXgpO1xuICAgIGlmIChyZXN1bHQucmVzdWx0RmxhZyA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMudG9hc3Rlci5wb3Aoe1xuICAgICAgICB0eXBlICAgIDogJ3dhcm5pbmcnLFxuICAgICAgICB0aW1lb3V0ICA6IDIwMDAsXG4gICAgICAgIHRpdGxlICAgIDogcmVzdWx0LmRldGFpbHMsXG4gICAgICAgIGJvZHkgICAgOiAnT3BlcmF0aW9uIGNhbmNlbGxlZC4nLFxuICAgICAgICBzaG93Q2xvc2VCdXR0b246IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNob3dHcm91cExpc3RUb0Nob29zZSgpIHtcbiAgICB0aGlzLmdyb3VwU2VsZWN0R3JvdXBDbGljay5zaG93TGlzdCA9ICF0aGlzLmdyb3VwU2VsZWN0R3JvdXBDbGljay5zaG93TGlzdDtcbiAgfVxuXG4gIGFkZE5ld0dyb3VwVG9Hcm91cGVkU2VsZWN0KCl7XG4gICAgaWYgKHRoaXMubmV3R3JvdXBHcm91cGVkU2VsZWN0LnNhaXNpZSAhPT0gJycpIHtcbiAgICAgIGZvciAobGV0IGkgPSB0aGlzLkdyb3VwZWRTZWxlY3RHcm91cHMubGlzdC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAodGhpcy5Hcm91cGVkU2VsZWN0R3JvdXBzLmxpc3RbaV0gPT09IHRoaXMubmV3R3JvdXBHcm91cGVkU2VsZWN0LnNhaXNpZSkge1xuICAgICAgICAgIHRoaXMudG9hc3Rlci5wb3Aoe1xuICAgICAgICAgICAgdHlwZSAgICA6ICd3YXJuaW5nJyxcbiAgICAgICAgICAgIHRpbWVvdXQgIDogMjAwMCxcbiAgICAgICAgICAgIHRpdGxlICAgIDogJ0dyb3VwIGFscmVhZHkgZXhpc3RzJyxcbiAgICAgICAgICAgIGJvZHkgICAgOiAnTm8gZ3JvdXAgYWRkZWQuJyxcbiAgICAgICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLkdyb3VwZWRTZWxlY3RHcm91cHMubGlzdC5wdXNoKHRoaXMubmV3R3JvdXBHcm91cGVkU2VsZWN0LnNhaXNpZSk7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLnRvYXN0ZXIucG9wKHtcbiAgICAgICAgdHlwZSAgICA6ICd3YXJuaW5nJyxcbiAgICAgICAgdGltZW91dCAgOiAyMDAwLFxuICAgICAgICB0aXRsZSAgICA6ICdOb3QgYSB2YWxpZCBncm91cCB0byBhZGQnLFxuICAgICAgICBib2R5ICAgIDogJ05vIGdyb3VwIGFkZGVkLicsXG4gICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMubmV3R3JvdXBHcm91cGVkU2VsZWN0LnNhaXNpZSA9ICcnO1xuICB9XG5cbiAgYWRkTmV3T3B0aW9uR3JvdXBlZFNlbGVjdCgpIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlbGVjdE9wdGlvbk1hbmFnZS5hZGROZXdPcHRpb25Hcm91cGVkU2VsZWN0KHRoaXMuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24sIHRoaXMubmV3T3B0aW9uR3JvdXBlZFNlbGVjdC5zYWlzaWUsICcnKTtcbiAgICBpZiAocmVzdWx0LnJlc3VsdEZsYWcgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnRvYXN0ZXIucG9wKHtcbiAgICAgICAgdHlwZSAgICA6ICd3YXJuaW5nJyxcbiAgICAgICAgdGltZW91dCAgOiAyMDAwLFxuICAgICAgICB0aXRsZSAgICA6IHJlc3VsdC5kZXRhaWxzLFxuICAgICAgICBib2R5ICAgIDogYCcke3RoaXMubmV3T3B0aW9uR3JvdXBlZFNlbGVjdC5zYWlzaWV9JyBjYW5ub3QgYmUgYWRkZWQuYCxcbiAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gYmluZCBueWEgOiBkb250IGJpbmQgaGVyZSAkYXBwbHkgaXMgbm90IGRvbmUgZmFzdCBlbm91Z2hcbiAgICAvLyBiaW5kR3JvdXBlZFNlbGVjdFRvTnlhKCk7XG4gICAgLy8gcmVzZXQgaW5wdXRcbiAgICB0aGlzLm5ld09wdGlvbkdyb3VwZWRTZWxlY3QgPSB7c2Fpc2llOiAnJ307XG4gIH1cblxuICByZW1vdmVHcm91cGVkU2VsZWN0Um93KGluZGV4KSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWxlY3RPcHRpb25NYW5hZ2UucmVtb3ZlT3B0aW9uKHRoaXMuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24sIGluZGV4KTtcbiAgICBpZiAocmVzdWx0LnJlc3VsdEZsYWcgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnRvYXN0ZXIucG9wKHtcbiAgICAgICAgdHlwZSAgICA6ICd3YXJuaW5nJyxcbiAgICAgICAgdGltZW91dCAgOiAyMDAwLFxuICAgICAgICB0aXRsZSAgICA6IHJlc3VsdC5kZXRhaWxzLFxuICAgICAgICBib2R5ICAgIDogJ0RlbGV0ZSB3YXMgY2FuY2VsbGVkLicsXG4gICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBUaGlzR3JvdXBlZFNlbGVjdFJvdyhpbmRleCl7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWxlY3RPcHRpb25NYW5hZ2UudXB0aGlzT3B0aW9uKHRoaXMuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24sIGluZGV4KTtcbiAgICBpZiAocmVzdWx0LnJlc3VsdEZsYWcgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnRvYXN0ZXIucG9wKHtcbiAgICAgICAgdHlwZSAgICA6ICd3YXJuaW5nJyxcbiAgICAgICAgdGltZW91dCAgOiAyMDAwLFxuICAgICAgICB0aXRsZSAgICA6IHJlc3VsdC5kZXRhaWxzLFxuICAgICAgICBib2R5ICAgIDogJ09wZXJhdGlvbiBjYW5jZWxsZWQuJyxcbiAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBkb3duVGhpc0dyb3VwZWRTZWxlY3RSb3coaW5kZXgpe1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2VsZWN0T3B0aW9uTWFuYWdlLmRvd250aGlzT3B0aW9uKHRoaXMuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24sIGluZGV4KTtcbiAgICBpZiAocmVzdWx0LnJlc3VsdEZsYWcgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnRvYXN0ZXIucG9wKHtcbiAgICAgICAgdHlwZSAgICA6ICd3YXJuaW5nJyxcbiAgICAgICAgdGltZW91dCAgOiAyMDAwLFxuICAgICAgICB0aXRsZSAgICA6IHJlc3VsdC5kZXRhaWxzLFxuICAgICAgICBib2R5ICAgIDogJ09wZXJhdGlvbiBjYW5jZWxsZWQuJyxcbiAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2RheSgpIHtcbiAgICB0aGlzLmRlbW9kdC5kdCA9IG5ldyBEYXRlKCk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLmRlbW9kdC5kdCA9IG51bGw7XG4gIH1cblxuICBvcGVuKCRldmVudCl7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZGVtb2R0Lm9wZW5lZCA9IHRydWU7XG4gIH1cblxuICBkYXRlT3B0aW9uc0luaXQoKXtcbiAgICByZXR1cm4gIHtcbiAgICAgIGZvcm1hdFllYXIgIDogJ3l5JyxcbiAgICAgIHN0YXJ0aW5nRGF5ICA6IDEsXG4gICAgICBzaG93V2Vla3MgICAgOiB0cnVlLFxuICAgICAgaW5pdERhdGUgICAgOiBudWxsXG4gICAgfTtcbiAgfVxuXG4gIHNlbGVjdFRoaXNDb250cm9sKGNvbnRyb2xOYW1lKSB7XG4gICAgdGhpcy5ueWFTZWxlY3Quc2VsZWN0ZWRDb250cm9sID0gJ25vbmUnO1xuICAgIHRoaXMucmVzZXRUZW1wb3J5Q29uZmlnKCk7XG4gICAgZm9yIChsZXQgaSA9IHRoaXMubnlhU2VsZWN0LmNvbnRyb2xzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAodGhpcy5ueWFTZWxlY3QuY29udHJvbHNbaV0uaWQgPT09IGNvbnRyb2xOYW1lKSB0aGlzLm55YVNlbGVjdC5zZWxlY3RlZENvbnRyb2wgPSB0aGlzLm55YVNlbGVjdC5jb250cm9sc1tpXS5pZDtcbiAgICB9XG4gICAgaWYgKHRoaXMubnlhU2VsZWN0LnNlbGVjdGVkQ29udHJvbCA9PT0gJ0RhdGUnKSB0aGlzLmluaXREYXRlUGlja2VyKCk7XG4gIH1cblxuICBvaygpIHtcbiAgICBpZiAodGhpcy5ueWFTZWxlY3Quc2VsZWN0ZWRDb250cm9sID09PSAnQmFzaWNTZWxlY3QnKSAgIHRoaXMuYmluZEJhc2ljU2VsZWN0VG9OeWEoKTtcbiAgICBpZiAodGhpcy5ueWFTZWxlY3Quc2VsZWN0ZWRDb250cm9sID09PSAnR3JvdXBlZFNlbGVjdCcpIHRoaXMuYmluZEdyb3VwZWRTZWxlY3RUb055YSgpO1xuICAgIGlmICh0aGlzLm55YVNlbGVjdC5zZWxlY3RlZENvbnRyb2wgPT09ICdSYWRpbycpICAgICAgICAgdGhpcy5iaW5kUmFkaW9Ub055YSgpO1xuICAgIC8vc2F2ZSBjb25maWcgdG8gY29udHJvbFxuICAgIHRoaXMuJG1vZGFsUHJveHkuYXBwbHlDb25maWdUb1NlbGVjdGVkQ29udHJvbCh0aGlzLm55YVNlbGVjdCk7XG4gICAgLy9yZXR1cm4gY3VycmVudCBtb2RlbCB0byBwYXJlbnQgY29udHJvbGxlciA6XG4gICAgdGhpcy4kbW9kYWxJbnN0YW5jZS5jbG9zZSh0aGlzLm55YVNlbGVjdCk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy4kbW9kYWxJbnN0YW5jZS5kaXNtaXNzKCdjYW5jZWwnKTtcbiAgfVxuXG4gIGJpbmRCYXNpY1NlbGVjdFRvTnlhKCkge1xuICAgIGNvbnN0IHJlc2V0TnlBU2VsZWN0T3B0aW9ucyA9IFtdO1xuICAgIHRoaXMubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9ucyA9IHJlc2V0TnlBU2VsZWN0T3B0aW9ucztcbiAgICBpZiAodGhpcy5iYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24ucm93cy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSB0aGlzLmJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbi5yb3dzLmxlbmd0aCAtIDE7IGkrKyl7XG4gICAgICAgIGNvbnN0IG5ld09wdGlvbiA9IHtcbiAgICAgICAgICAnbmFtZScgIDogdGhpcy5iYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24ucm93c1tpXS5vcHRpb24sXG4gICAgICAgICAgJ3ZhbHVlJyAgOiBpLFxuICAgICAgICAgICdncm91cCcgIDogJydcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlPcHRpb25zLnB1c2gobmV3T3B0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBiaW5kR3JvdXBlZFNlbGVjdFRvTnlhKCkge1xuICAgIHRoaXMubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHRoaXMuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24ucm93cy5sZW5ndGggLSAxOyBpKyspe1xuICAgICAgY29uc3QgbmV3T3B0aW9uID0ge1xuICAgICAgICAnbmFtZScgIDogdGhpcy5ncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbi5yb3dzW2ldLm9wdGlvbixcbiAgICAgICAgJ3ZhbHVlJyAgOiBpLFxuICAgICAgICAnZ3JvdXAnICA6IHRoaXMuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24ucm93c1tpXS5ncm91cFxuICAgICAgfTtcbiAgICAgIHRoaXMubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9ucy5wdXNoKG5ld09wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgYmluZFJhZGlvVG9OeWEoKXtcbiAgICBjb25zdCByZXNldE55QVNlbGVjdE9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seU9wdGlvbnMgPSByZXNldE55QVNlbGVjdE9wdGlvbnM7XG4gICAgaWYgKHRoaXMucmFkaW9Sb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gdGhpcy5yYWRpb1Jvd0NvbGxlY3Rpb24ucm93cy5sZW5ndGggLSAxOyBpKyspe1xuICAgICAgICBjb25zdCBuZXdPcHRpb24gPSB7XG4gICAgICAgICAgJ25hbWUnICA6IHRoaXMucmFkaW9Sb3dDb2xsZWN0aW9uLnJvd3NbaV0ub3B0aW9uLFxuICAgICAgICAgICd2YWx1ZScgIDogaSxcbiAgICAgICAgICAnZ3JvdXAnICA6ICcnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9ucy5wdXNoKG5ld09wdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbml0RGF0ZVBpY2tlcigpIHtcbiAgICB0aGlzLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmRhdGVwaWNrZXJPcHRpb25zID0ge1xuICAgICAgZm9ybWF0IDogdGhpcy5kZW1vZHQuZm9ybWF0c1swXVxuICAgIH07XG4gIH1cblxuICByZXNldFRlbXBvcnlDb25maWcoKXtcbiAgICB0aGlzLm55YVNlbGVjdEZpbHRlcmVkLnRlbXBvcnlDb25maWcgPSB7XG4gICAgICBmb3JtbHlMYWJlbCAgICAgICAgOiAnJyxcbiAgICAgIGZvcm1seVJlcXVpcmVkICAgIDogZmFsc2UsXG4gICAgICBmb3JtbHlQbGFjZWhvbGRlciAgOiAnJyxcbiAgICAgIGZvcm1seURlc2NyaXB0aW9uICA6ICcnLFxuICAgICAgZm9ybWx5T3B0aW9ucyAgICAgIDogW11cbiAgICB9O1xuICB9XG59XG5cbmNvbnN0IHRvSW5qZWN0ID0gIFtcbiAgJyR1aWJNb2RhbEluc3RhbmNlJyxcbiAgJ255YVNlbGVjdCcsXG4gICd0b2FzdGVyJyAsXG4gICdzZWxlY3RPcHRpb25NYW5hZ2UnLFxuICAnJG1vZGFsUHJveHknXG5dO1xuXG5lZGl0Q29udHJvbE1vZGFsQ29udHJvbGxlci4kaW5qZWN0ID0gdG9JbmplY3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGVkaXRDb250cm9sTW9kYWxDb250cm9sbGVyO1xuXG5leHBvcnQge1xuICBFRElUX01PREFMX0NPTlRST0xMRVJfTkFNRSxcbiAgRURJVF9NT0RBTF9DT05UUk9MTEVSQVNfTkFNRVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL21vZGFsL3N0ZXB3YXkuZWRpdENvbnRyb2xNb2RhbC5jb250cm9sbGVyLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 26 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.STEP_WAY_DIRECTIVE_NAME = undefined;\n\nvar _stepwayMainTemplate = __webpack_require__(27);\n\nvar _stepwayMainTemplate2 = _interopRequireDefault(_stepwayMainTemplate);\n\nvar _stepwayMain = __webpack_require__(22);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar STEP_WAY_DIRECTIVE_NAME = 'edaStepWayEasyFormGen';\n\nfunction edaStepWayEasyFormGenDirective($templateCache, $timeout, $formlyProxy, $modalProxy) {\n\n var directive = {\n restrict: 'E',\n scope: {\n edaEasyFormGeneratorModel: '=',\n wizardStepGeneratorModel: '=',\n edaSaveFormEvent: '&edaSaveFormEvent'\n },\n controller: _stepwayMain.STEP_WAY_MAIN_CONTROLLER_NAME,\n controllerAs: _stepwayMain.STEP_WAY_MAIN_CONTROLLERAS_NAME,\n replace: false,\n template: _stepwayMainTemplate2.default,\n link: linkFct\n };\n return directive;\n\n function linkFct(scope) {\n\n //watch \"scope.easyFormGeneratorModel\"\n scope.$watch(function () {\n return scope.edaEasyFormGeneratorModel;\n }, function () {\n return loadExistingConfigurationModel();\n }, true);\n\n if (scope.wizardStepGeneratorModel) {\n loadExistingConfigurationModel();\n scope.wizardStepGeneratorModel.configuration = scope.vm.configuration;\n scope.wizardStepGeneratorModel.edaFieldsModel = scope.vm.configuration.lines;\n scope.wizardStepGeneratorModel.formlyFieldsModel = scope.vm.wfFormFields;\n scope.wizardStepGeneratorModel.dataModel = scope.vm.dataModel;\n scope.vm.configuration.isWizard = true;\n if (scope.wizardStepGeneratorModel.loaded) {\n angular.copy(scope.wizardStepGeneratorModel.loaded.edaFieldsModel, scope.wizardStepGeneratorModel.edaFieldsModel);\n angular.copy(scope.wizardStepGeneratorModel.loaded.dataModel, scope.wizardStepGeneratorModel.dataModel);\n scope.wizardStepGeneratorModel.formlyFieldsModel.length = 0;\n angular.copy(scope.wizardStepGeneratorModel.loaded.formlyFieldsModel, scope.wizardStepGeneratorModel.formlyFieldsModel);\n }\n }\n\n //watch \"scope.vm.returnSaveEvent\"\" = catch saving form event\n scope.$watch(function () {\n return scope.vm.returnSaveEvent;\n }, function (newValue) {\n if (newValue === true) {\n var _easyFormGeneratorModel = {\n formName: scope.vm.configuration.formName,\n btnSubmitText: scope.vm.configuration.submitButtonText,\n btnCancelText: scope.vm.configuration.cancelButtonText,\n edaFieldsModel: scope.vm.configuration.lines,\n edaFieldsModelStringified: angular.toJson(scope.vm.configuration.lines),\n formlyFieldsModel: scope.vm.wfFormFieldsOnlyNeededProperties,\n dataModel: scope.vm.dataModel\n };\n scope.edaSaveFormEvent({ edaEasyFormGeneratorModel: _easyFormGeneratorModel });\n //back to false, waiting next save event\n scope.vm.returnSaveEvent = false;\n }\n });\n\n function loadExistingConfigurationModel() {\n if (angular.isDefined(scope.edaEasyFormGeneratorModel)) {\n var configlines = [].concat(returnAttributeConfigurationLinesIfNotEmpty());\n scope.configurationLoaded = {};\n $formlyProxy.bindConfigurationLines(scope.configurationLoaded, configlines);\n /**\n * rebind special control properties :\n *\n * formly expression properties\n * Validators\n * Validation\n */\n $modalProxy.refreshControlFormlyExpressionProperties(scope.configurationLoaded);\n $modalProxy.refreshControlFormlyValidators(scope.configurationLoaded);\n $modalProxy.refreshControlFormlyValidation(scope.configurationLoaded);\n //apply configuration model\n scope.vm.configuration = angular.copy(scope.configurationLoaded);\n //apply formly model\n $formlyProxy.applyConfigurationToformlyModel(scope.configurationLoaded, scope.vm.wfFormFields, scope.vm.model);\n scope.vm.wfFormFieldsOnlyNeededProperties = angular.copy(scope.vm.wfFormFields);\n scope.vm.dataModel = returnAttributeDataModelIfNotEmpty();\n scope.vm.configuration.formName = angular.isString(scope.edaEasyFormGeneratorModel.formName) ? scope.edaEasyFormGeneratorModel.formName : '';\n scope.vm.configuration.submitButtonText = angular.isString(scope.edaEasyFormGeneratorModel.btnSubmitText) ? scope.edaEasyFormGeneratorModel.btnSubmitText : 'Submit';\n scope.vm.configuration.cancelButtonText = angular.isString(scope.edaEasyFormGeneratorModel.btnCancelText) ? scope.edaEasyFormGeneratorModel.btnCancelText : 'Cancel';\n }\n }\n\n function returnAttributeConfigurationLinesIfNotEmpty() {\n var edaEasyFormGeneratorModelToReturn = angular.isArray(scope.edaEasyFormGeneratorModel.edaFieldsModel) ? scope.edaEasyFormGeneratorModel.edaFieldsModel.length > 0 ? scope.edaEasyFormGeneratorModel.edaFieldsModel : emptyEdaFieldsModel() : emptyEdaFieldsModel();\n return edaEasyFormGeneratorModelToReturn;\n }\n\n function returnAttributeDataModelIfNotEmpty() {\n var dataModelToReturn = angular.isArray(scope.edaEasyFormGeneratorModel.dataModel) ? scope.edaEasyFormGeneratorModel.dataModel.length > 0 ? scope.edaEasyFormGeneratorModel.dataModel : {} : {};\n return dataModelToReturn;\n }\n\n /**\n * empty fields model : to display at least an empty line\n * otherwise would look like ugly empty line like it were a bug\n */\n function emptyEdaFieldsModel() {\n var emptyModel = [{\n line: 1,\n activeColumn: 1,\n columns: [{\n numColumn: 1,\n exist: true,\n control: {\n type: 'none',\n key: 'none'\n }\n }]\n }];\n return emptyModel;\n }\n }\n}\n\nedaStepWayEasyFormGenDirective.$inject = ['$templateCache', '$timeout', '$formlyProxy', '$modalProxy'];\n\nexports.default = edaStepWayEasyFormGenDirective;\nexports.STEP_WAY_DIRECTIVE_NAME = STEP_WAY_DIRECTIVE_NAME;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXB3YXkubWFpbi5kaXJlY3RpdmUuanM/MDZmZiJdLCJuYW1lcyI6WyJTVEVQX1dBWV9ESVJFQ1RJVkVfTkFNRSIsImVkYVN0ZXBXYXlFYXN5Rm9ybUdlbkRpcmVjdGl2ZSIsIiR0ZW1wbGF0ZUNhY2hlIiwiJHRpbWVvdXQiLCIkZm9ybWx5UHJveHkiLCIkbW9kYWxQcm94eSIsImRpcmVjdGl2ZSIsInJlc3RyaWN0Iiwic2NvcGUiLCJlZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsIiwid2l6YXJkU3RlcEdlbmVyYXRvck1vZGVsIiwiZWRhU2F2ZUZvcm1FdmVudCIsImNvbnRyb2xsZXIiLCJjb250cm9sbGVyQXMiLCJyZXBsYWNlIiwidGVtcGxhdGUiLCJsaW5rIiwibGlua0ZjdCIsIiR3YXRjaCIsImxvYWRFeGlzdGluZ0NvbmZpZ3VyYXRpb25Nb2RlbCIsImNvbmZpZ3VyYXRpb24iLCJ2bSIsImVkYUZpZWxkc01vZGVsIiwibGluZXMiLCJmb3JtbHlGaWVsZHNNb2RlbCIsIndmRm9ybUZpZWxkcyIsImRhdGFNb2RlbCIsImlzV2l6YXJkIiwibG9hZGVkIiwiYW5ndWxhciIsImNvcHkiLCJsZW5ndGgiLCJyZXR1cm5TYXZlRXZlbnQiLCJuZXdWYWx1ZSIsIl9lYXN5Rm9ybUdlbmVyYXRvck1vZGVsIiwiZm9ybU5hbWUiLCJidG5TdWJtaXRUZXh0Iiwic3VibWl0QnV0dG9uVGV4dCIsImJ0bkNhbmNlbFRleHQiLCJjYW5jZWxCdXR0b25UZXh0IiwiZWRhRmllbGRzTW9kZWxTdHJpbmdpZmllZCIsInRvSnNvbiIsIndmRm9ybUZpZWxkc09ubHlOZWVkZWRQcm9wZXJ0aWVzIiwiaXNEZWZpbmVkIiwiY29uZmlnbGluZXMiLCJjb25jYXQiLCJyZXR1cm5BdHRyaWJ1dGVDb25maWd1cmF0aW9uTGluZXNJZk5vdEVtcHR5IiwiY29uZmlndXJhdGlvbkxvYWRlZCIsImJpbmRDb25maWd1cmF0aW9uTGluZXMiLCJyZWZyZXNoQ29udHJvbEZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzIiwicmVmcmVzaENvbnRyb2xGb3JtbHlWYWxpZGF0b3JzIiwicmVmcmVzaENvbnRyb2xGb3JtbHlWYWxpZGF0aW9uIiwiYXBwbHlDb25maWd1cmF0aW9uVG9mb3JtbHlNb2RlbCIsIm1vZGVsIiwicmV0dXJuQXR0cmlidXRlRGF0YU1vZGVsSWZOb3RFbXB0eSIsImlzU3RyaW5nIiwiZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbFRvUmV0dXJuIiwiaXNBcnJheSIsImVtcHR5RWRhRmllbGRzTW9kZWwiLCJkYXRhTW9kZWxUb1JldHVybiIsImVtcHR5TW9kZWwiLCJsaW5lIiwiYWN0aXZlQ29sdW1uIiwiY29sdW1ucyIsIm51bUNvbHVtbiIsImV4aXN0IiwiY29udHJvbCIsInR5cGUiLCJrZXkiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQU1BLElBQU1BLDBCQUEwQix1QkFBaEM7O0FBRUEsU0FBU0MsOEJBQVQsQ0FDRUMsY0FERixFQUVFQyxRQUZGLEVBR0VDLFlBSEYsRUFJRUMsV0FKRixFQUllOztBQUViLE1BQU1DLFlBQVk7QUFDaEJDLGNBQVUsR0FETTtBQUVoQkMsV0FBTztBQUNMQyxpQ0FBMkIsR0FEdEI7QUFFTEMsZ0NBQTBCLEdBRnJCO0FBR0xDLHdCQUFrQjtBQUhiLEtBRlM7QUFPaEJDLDBEQVBnQjtBQVFoQkMsOERBUmdCO0FBU2hCQyxhQUFTLEtBVE87QUFVaEJDLDJDQVZnQjtBQVdoQkMsVUFBTUM7QUFYVSxHQUFsQjtBQWFBLFNBQU9YLFNBQVA7O0FBRUEsV0FBU1csT0FBVCxDQUFpQlQsS0FBakIsRUFBdUI7O0FBRXJCO0FBQ0FBLFVBQU1VLE1BQU4sQ0FBYTtBQUFBLGFBQU1WLE1BQU1DLHlCQUFaO0FBQUEsS0FBYixFQUNFO0FBQUEsYUFBTVUsZ0NBQU47QUFBQSxLQURGLEVBRUUsSUFGRjs7QUFLQSxRQUFJWCxNQUFNRSx3QkFBVixF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RixrQ0FBVCxHQUE2QztBQUMzQyxVQUFNSyxvQkFDRjlCLFFBQVE0QixPQUFSLENBQWdCakQsTUFBTUMseUJBQU4sQ0FBZ0NpQixTQUFoRCxJQUNJbEIsTUFBTUMseUJBQU4sQ0FBZ0NpQixTQUFoQyxDQUEwQ0ssTUFBMUMsR0FBbUQsQ0FBbkQsR0FDQXZCLE1BQU1DLHlCQUFOLENBQWdDaUIsU0FEaEMsR0FFRSxFQUhOLEdBS0UsRUFOTjtBQVFFLGFBQU9pQyxpQkFBUDtBQUNIOztBQUVEOzs7O0FBSUEsYUFBU0QsbUJBQVQsR0FBOEI7QUFDNUIsVUFBSUUsYUFBYSxDQUNmO0FBQ0VDLGNBQU0sQ0FEUjtBQUVFQyxzQkFBYyxDQUZoQjtBQUdFQyxpQkFBUyxDQUNQO0FBQ0VDLHFCQUFXLENBRGI7QUFFRUMsaUJBQU8sSUFGVDtBQUdFQyxtQkFBUztBQUNQQyxrQkFBTSxNQURDO0FBRVBDLGlCQUFLO0FBRkU7QUFIWCxTQURPO0FBSFgsT0FEZSxDQUFqQjtBQWdCQSxhQUFPUixVQUFQO0FBQ0Q7QUFDRjtBQUNGOztBQUVEM0QsK0JBQStCb0UsT0FBL0IsR0FBeUMsQ0FDdkMsZ0JBRHVDLEVBRXZDLFVBRnVDLEVBR3ZDLGNBSHVDLEVBSXZDLGFBSnVDLENBQXpDOztrQkFPZXBFLDhCO1FBQ1BELHVCLEdBQUFBLHVCIiwiZmlsZSI6IjI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVhc3lmb3JtVGVtcGxhdGUgICAgICAgICAgICBmcm9tICcuL3N0ZXB3YXkubWFpbi50ZW1wbGF0ZS5odG1sJztcbmltcG9ydCB7XG4gIFNURVBfV0FZX01BSU5fQ09OVFJPTExFUl9OQU1FLFxuICBTVEVQX1dBWV9NQUlOX0NPTlRST0xMRVJBU19OQU1FXG59ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gICcuL3N0ZXB3YXkubWFpbi5jb250cm9sbGVyJztcblxuXG5jb25zdCBTVEVQX1dBWV9ESVJFQ1RJVkVfTkFNRSA9ICdlZGFTdGVwV2F5RWFzeUZvcm1HZW4nO1xuXG5mdW5jdGlvbiBlZGFTdGVwV2F5RWFzeUZvcm1HZW5EaXJlY3RpdmUoXG4gICR0ZW1wbGF0ZUNhY2hlLFxuICAkdGltZW91dCxcbiAgJGZvcm1seVByb3h5LFxuICAkbW9kYWxQcm94eSkge1xuXG4gIGNvbnN0IGRpcmVjdGl2ZSA9IHtcbiAgICByZXN0cmljdDogJ0UnLFxuICAgIHNjb3BlOiB7XG4gICAgICBlZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsOiAnPScsXG4gICAgICB3aXphcmRTdGVwR2VuZXJhdG9yTW9kZWw6ICc9JyxcbiAgICAgIGVkYVNhdmVGb3JtRXZlbnQ6ICcmZWRhU2F2ZUZvcm1FdmVudCdcbiAgICB9LFxuICAgIGNvbnRyb2xsZXI6IFNURVBfV0FZX01BSU5fQ09OVFJPTExFUl9OQU1FLFxuICAgIGNvbnRyb2xsZXJBczogU1RFUF9XQVlfTUFJTl9DT05UUk9MTEVSQVNfTkFNRSxcbiAgICByZXBsYWNlOiBmYWxzZSxcbiAgICB0ZW1wbGF0ZTogZWFzeWZvcm1UZW1wbGF0ZSxcbiAgICBsaW5rOiBsaW5rRmN0XG4gIH07XG4gIHJldHVybiBkaXJlY3RpdmU7XG5cbiAgZnVuY3Rpb24gbGlua0ZjdChzY29wZSl7XG5cbiAgICAvL3dhdGNoIFwic2NvcGUuZWFzeUZvcm1HZW5lcmF0b3JNb2RlbFwiXG4gICAgc2NvcGUuJHdhdGNoKCgpID0+IHNjb3BlLmVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwsXG4gICAgICAoKSA9PiBsb2FkRXhpc3RpbmdDb25maWd1cmF0aW9uTW9kZWwoKSxcbiAgICAgIHRydWVcbiAgICApO1xuXG4gICAgaWYgKHNjb3BlLndpemFyZFN0ZXBHZW5lcmF0b3JNb2RlbCl7XG4gICAgICBsb2FkRXhpc3RpbmdDb25maWd1cmF0aW9uTW9kZWwoKTtcbiAgICAgIHNjb3BlLndpemFyZFN0ZXBHZW5lcmF0b3JNb2RlbC5jb25maWd1cmF0aW9uID0gc2NvcGUudm0uY29uZmlndXJhdGlvbjtcbiAgICAgIHNjb3BlLndpemFyZFN0ZXBHZW5lcmF0b3JNb2RlbC5lZGFGaWVsZHNNb2RlbCAgICAgICAgICAgID0gc2NvcGUudm0uY29uZmlndXJhdGlvbi5saW5lcztcbiAgICAgIHNjb3BlLndpemFyZFN0ZXBHZW5lcmF0b3JNb2RlbC5mb3JtbHlGaWVsZHNNb2RlbCAgICAgICAgID0gc2NvcGUudm0ud2ZGb3JtRmllbGRzO1xuICAgICAgc2NvcGUud2l6YXJkU3RlcEdlbmVyYXRvck1vZGVsLmRhdGFNb2RlbCAgICAgICAgICAgICAgICAgPSBzY29wZS52bS5kYXRhTW9kZWw7ICAgICAgXG4gICAgICBzY29wZS52bS5jb25maWd1cmF0aW9uLmlzV2l6YXJkID0gdHJ1ZTtcbiAgICAgIGlmIChzY29wZS53aXphcmRTdGVwR2VuZXJhdG9yTW9kZWwubG9hZGVkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgIGFuZ3VsYXIuY29weShzY29wZS53aXphcmRTdGVwR2VuZXJhdG9yTW9kZWwubG9hZGVkLmVkYUZpZWxkc01vZGVsLCBzY29wZS53aXphcmRTdGVwR2VuZXJhdG9yTW9kZWwuZWRhRmllbGRzTW9kZWwpO1xuICAgICAgICBhbmd1bGFyLmNvcHkoc2NvcGUud2l6YXJkU3RlcEdlbmVyYXRvck1vZGVsLmxvYWRlZC5kYXRhTW9kZWwsIHNjb3BlLndpemFyZFN0ZXBHZW5lcmF0b3JNb2RlbC5kYXRhTW9kZWwpOyAgICAgICAgXG4gICAgICAgIHNjb3BlLndpemFyZFN0ZXBHZW5lcmF0b3JNb2RlbC5mb3JtbHlGaWVsZHNNb2RlbC5sZW5ndGggPSAwO1xuICAgICAgICBhbmd1bGFyLmNvcHkoc2NvcGUud2l6YXJkU3RlcEdlbmVyYXRvck1vZGVsLmxvYWRlZC5mb3JtbHlGaWVsZHNNb2RlbCwgc2NvcGUud2l6YXJkU3RlcEdlbmVyYXRvck1vZGVsLmZvcm1seUZpZWxkc01vZGVsKTsgICBcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvL3dhdGNoIFwic2NvcGUudm0ucmV0dXJuU2F2ZUV2ZW50XCJcIiA9IGNhdGNoIHNhdmluZyBmb3JtIGV2ZW50XG4gICAgc2NvcGUuJHdhdGNoKCgpID0+IHNjb3BlLnZtLnJldHVyblNhdmVFdmVudCxcbiAgICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBpZiAobmV3VmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICBjb25zdCBfZWFzeUZvcm1HZW5lcmF0b3JNb2RlbCA9IHtcbiAgICAgICAgICAgIGZvcm1OYW1lICAgICAgICAgICAgICAgICAgOiBzY29wZS52bS5jb25maWd1cmF0aW9uLmZvcm1OYW1lLFxuICAgICAgICAgICAgYnRuU3VibWl0VGV4dCAgICAgICAgICAgICA6IHNjb3BlLnZtLmNvbmZpZ3VyYXRpb24uc3VibWl0QnV0dG9uVGV4dCxcbiAgICAgICAgICAgIGJ0bkNhbmNlbFRleHQgICAgICAgICAgICAgOiBzY29wZS52bS5jb25maWd1cmF0aW9uLmNhbmNlbEJ1dHRvblRleHQsXG4gICAgICAgICAgICBlZGFGaWVsZHNNb2RlbCAgICAgICAgICAgIDogc2NvcGUudm0uY29uZmlndXJhdGlvbi5saW5lcyxcbiAgICAgICAgICAgIGVkYUZpZWxkc01vZGVsU3RyaW5naWZpZWQgOiBhbmd1bGFyLnRvSnNvbihzY29wZS52bS5jb25maWd1cmF0aW9uLmxpbmVzKSxcbiAgICAgICAgICAgIGZvcm1seUZpZWxkc01vZGVsICAgICAgICAgOiBzY29wZS52bS53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyxcbiAgICAgICAgICAgIGRhdGFNb2RlbCAgICAgICAgICAgICAgICAgOiBzY29wZS52bS5kYXRhTW9kZWxcbiAgICAgICAgICB9OyAgICAgICAgICBcbiAgICAgICAgICBzY29wZS5lZGFTYXZlRm9ybUV2ZW50KHsgZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbCA6IF9lYXN5Rm9ybUdlbmVyYXRvck1vZGVsIH0pO1xuICAgICAgICAgIC8vYmFjayB0byBmYWxzZSwgd2FpdGluZyBuZXh0IHNhdmUgZXZlbnRcbiAgICAgICAgICBzY29wZS52bS5yZXR1cm5TYXZlRXZlbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG5cbiAgICBmdW5jdGlvbiBsb2FkRXhpc3RpbmdDb25maWd1cmF0aW9uTW9kZWwoKXtcbiAgICAgIGlmKGFuZ3VsYXIuaXNEZWZpbmVkKHNjb3BlLmVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwpKXtcbiAgICAgICAgY29uc3QgY29uZmlnbGluZXMgPSBbXS5jb25jYXQocmV0dXJuQXR0cmlidXRlQ29uZmlndXJhdGlvbkxpbmVzSWZOb3RFbXB0eSgpKTtcbiAgICAgICAgc2NvcGUuY29uZmlndXJhdGlvbkxvYWRlZCA9IHt9O1xuICAgICAgICAkZm9ybWx5UHJveHkuYmluZENvbmZpZ3VyYXRpb25MaW5lcyhzY29wZS5jb25maWd1cmF0aW9uTG9hZGVkLGNvbmZpZ2xpbmVzKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAgKiByZWJpbmQgc3BlY2lhbCBjb250cm9sIHByb3BlcnRpZXMgOlxuICAgICAgICAgICpcbiAgICAgICAgICAqIGZvcm1seSBleHByZXNzaW9uIHByb3BlcnRpZXNcbiAgICAgICAgICAqIFZhbGlkYXRvcnNcbiAgICAgICAgICAqIFZhbGlkYXRpb25cbiAgICAgICAgICAqL1xuICAgICAgICAkbW9kYWxQcm94eS5yZWZyZXNoQ29udHJvbEZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzKHNjb3BlLmNvbmZpZ3VyYXRpb25Mb2FkZWQpO1xuICAgICAgICAkbW9kYWxQcm94eS5yZWZyZXNoQ29udHJvbEZvcm1seVZhbGlkYXRvcnMoc2NvcGUuY29uZmlndXJhdGlvbkxvYWRlZCk7XG4gICAgICAgICRtb2RhbFByb3h5LnJlZnJlc2hDb250cm9sRm9ybWx5VmFsaWRhdGlvbihzY29wZS5jb25maWd1cmF0aW9uTG9hZGVkKTtcbiAgICAgICAgLy9hcHBseSBjb25maWd1cmF0aW9uIG1vZGVsXG4gICAgICAgIHNjb3BlLnZtLmNvbmZpZ3VyYXRpb24gPSBhbmd1bGFyLmNvcHkoc2NvcGUuY29uZmlndXJhdGlvbkxvYWRlZCk7XG4gICAgICAgIC8vYXBwbHkgZm9ybWx5IG1vZGVsXG4gICAgICAgICRmb3JtbHlQcm94eS5hcHBseUNvbmZpZ3VyYXRpb25Ub2Zvcm1seU1vZGVsKHNjb3BlLmNvbmZpZ3VyYXRpb25Mb2FkZWQsIHNjb3BlLnZtLndmRm9ybUZpZWxkcywgc2NvcGUudm0ubW9kZWwpO1xuICAgICAgICBzY29wZS52bS53ZkZvcm1GaWVsZHNPbmx5TmVlZGVkUHJvcGVydGllcyA9IGFuZ3VsYXIuY29weShzY29wZS52bS53ZkZvcm1GaWVsZHMpO1xuICAgICAgICBzY29wZS52bS5kYXRhTW9kZWwgICAgICAgICAgICAgICAgICAgICAgICA9IHJldHVybkF0dHJpYnV0ZURhdGFNb2RlbElmTm90RW1wdHkoKTtcbiAgICAgICAgc2NvcGUudm0uY29uZmlndXJhdGlvbi5mb3JtTmFtZSAgICAgICAgICAgPSBhbmd1bGFyLmlzU3RyaW5nKHNjb3BlLmVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwuZm9ybU5hbWUpICAgICAgID8gc2NvcGUuZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbC5mb3JtTmFtZSAgICAgICA6ICcnO1xuICAgICAgICBzY29wZS52bS5jb25maWd1cmF0aW9uLnN1Ym1pdEJ1dHRvblRleHQgICA9IGFuZ3VsYXIuaXNTdHJpbmcoc2NvcGUuZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbC5idG5TdWJtaXRUZXh0KSAgPyBzY29wZS5lZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsLmJ0blN1Ym1pdFRleHQgIDogJ1N1Ym1pdCc7XG4gICAgICAgIHNjb3BlLnZtLmNvbmZpZ3VyYXRpb24uY2FuY2VsQnV0dG9uVGV4dCAgID0gYW5ndWxhci5pc1N0cmluZyhzY29wZS5lZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsLmJ0bkNhbmNlbFRleHQpICA/IHNjb3BlLmVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwuYnRuQ2FuY2VsVGV4dCAgOiAnQ2FuY2VsJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZXR1cm5BdHRyaWJ1dGVDb25maWd1cmF0aW9uTGluZXNJZk5vdEVtcHR5KCl7XG4gICAgICBjb25zdCBlZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsVG9SZXR1cm4gPSAoXG4gICAgICAgICAgYW5ndWxhci5pc0FycmF5KHNjb3BlLmVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwuZWRhRmllbGRzTW9kZWwpID8gIChcbiAgICAgICAgICAgICAgc2NvcGUuZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbC5lZGFGaWVsZHNNb2RlbC5sZW5ndGggPiAwID9cbiAgICAgICAgICAgICAgICBzY29wZS5lZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsLmVkYUZpZWxkc01vZGVsXG4gICAgICAgICAgICAgIDogZW1wdHlFZGFGaWVsZHNNb2RlbCgpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICA6IGVtcHR5RWRhRmllbGRzTW9kZWwoKVxuICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWxUb1JldHVybjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZXR1cm5BdHRyaWJ1dGVEYXRhTW9kZWxJZk5vdEVtcHR5KCl7XG4gICAgICBjb25zdCBkYXRhTW9kZWxUb1JldHVybiA9IChcbiAgICAgICAgICBhbmd1bGFyLmlzQXJyYXkoc2NvcGUuZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbC5kYXRhTW9kZWwpICAgPyAgKFxuICAgICAgICAgICAgICBzY29wZS5lZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsLmRhdGFNb2RlbC5sZW5ndGggPiAwID9cbiAgICAgICAgICAgICAgc2NvcGUuZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbC5kYXRhTW9kZWxcbiAgICAgICAgICAgICAgOiB7fVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgOiB7fVxuICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGRhdGFNb2RlbFRvUmV0dXJuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAgKiBlbXB0eSBmaWVsZHMgbW9kZWwgOiB0byBkaXNwbGF5IGF0IGxlYXN0IGFuIGVtcHR5IGxpbmVcbiAgICAgICogb3RoZXJ3aXNlIHdvdWxkIGxvb2sgbGlrZSB1Z2x5IGVtcHR5IGxpbmUgbGlrZSBpdCB3ZXJlIGEgYnVnXG4gICAgICAqL1xuICAgIGZ1bmN0aW9uIGVtcHR5RWRhRmllbGRzTW9kZWwoKXtcbiAgICAgIHZhciBlbXB0eU1vZGVsID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbGluZTogMSxcbiAgICAgICAgICBhY3RpdmVDb2x1bW46IDEsXG4gICAgICAgICAgY29sdW1uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBudW1Db2x1bW46IDEsXG4gICAgICAgICAgICAgIGV4aXN0OiB0cnVlLFxuICAgICAgICAgICAgICBjb250cm9sOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICAgICAgICAgIGtleTogJ25vbmUnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgICByZXR1cm4gZW1wdHlNb2RlbDtcbiAgICB9XG4gIH1cbn1cblxuZWRhU3RlcFdheUVhc3lGb3JtR2VuRGlyZWN0aXZlLiRpbmplY3QgPSBbXG4gICckdGVtcGxhdGVDYWNoZScsXG4gICckdGltZW91dCcsXG4gICckZm9ybWx5UHJveHknLFxuICAnJG1vZGFsUHJveHknXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBlZGFTdGVwV2F5RWFzeUZvcm1HZW5EaXJlY3RpdmU7XG5leHBvcnQge1NURVBfV0FZX0RJUkVDVElWRV9OQU1FfTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL21haW4vc3RlcHdheS5tYWluLmRpcmVjdGl2ZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 27 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n \\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n \\n \\n \\n \\n
\\n \\n
\\n \\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n
\\n
{{'DATA_MODEL' | translate}}
\\n
\\n {{vm.dataModel | json}}\\n \\n
\\n
\\n \\n
\\n
{{'FIELDS_MODEL' | translate}}
\\n
\\n {{vm.wfFormFieldsOnlyNeededProperties | json}}\\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXB3YXkubWFpbi50ZW1wbGF0ZS5odG1sPzQyOTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNFRBQTRULG1KQUFtSiwwTEFBMEwsd0JBQXdCLHM5RUFBczlFLDJCQUEyQixnbUJBQWdtQixtQ0FBbUMsNk1BQTZNLG1DQUFtQyx5WUFBeVksMEJBQTBCLHlEQUF5RCxxQkFBcUIsNFJBQTRSLDRCQUE0Qix5REFBeUQsNENBQTRDIiwiZmlsZSI6IjI3LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIjxzZWN0aW9uIGlkPVxcXCJwYWdlV2ZFZGl0XFxcIj5cXG4gIDxkaXYgbmctaW5pdD1cXFwiXFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiY29udGFpbmVyXFxcIj5cXG4gICAgICA8c2VjdGlvbiBpZD1cXFwicHJldmlld1xcXCI+XFxuICAgICAgICA8ZGl2IGlkPVxcXCJwcmV2aWV3LWNvbnRlbnRcXFwiPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb250ZW50LWNvbnRhaW5lclxcXCI+XFxuICAgICAgICAgICAgPCEtLSB0YW9zdGVyIGFsZXJ0IC0tPlxcbiAgICAgICAgICAgIDx0b2FzdGVyLWNvbnRhaW5lclxcbiAgICAgICAgICAgICAgdG9hc3Rlci1vcHRpb25zPVxcXCJ7XFxuICAgICAgICAgICAgICAgICdwb3NpdGlvbi1jbGFzcyc6ICd0b2FzdC10b3AtZnVsbC13aWR0aCcsXFxuICAgICAgICAgICAgICAgICdleHRlbmRlZFRpbWVvdXQnOjUwMCxcXG4gICAgICAgICAgICAgICAgJ3RpbWVPdXQnOjUwMFxcbiAgICAgICAgICAgICAgfVxcXCI+XFxuICAgICAgICAgICAgPC90b2FzdGVyLWNvbnRhaW5lcj5cXG4gICAgICAgICAgICA8dWliLXRhYnNldCBqdXN0aWZpZWQ9XFxcInRydWVcXFwiPlxcbiAgICAgICAgICAgICAgPHVpYi10YWJcXG4gICAgICAgICAgICAgICAgYWN0aXZlPVxcXCJ2bS50YWIuZWRpdFRhYi5hY3RpdmVcXFwiXFxuICAgICAgICAgICAgICAgIGhlYWRpbmc9XFxcInt7J0VESVRfVEFCJyB8IHRyYW5zbGF0ZX19XFxcIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICAgICAgICAgICAgICA8c3RlcC1pbmRpY2F0b3JcXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249XFxcInZtLmNvbmZpZ3VyYXRpb25cXFwiXFxuICAgICAgICAgICAgICAgICAgICBnby10by1zdGVwPVxcXCJ2bS5nb1RvU3RlcChpbmRleClcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDwvc3RlcC1pbmRpY2F0b3I+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxwYWdlclxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1cXFwidm0uY29uZmlndXJhdGlvblxcXCJcXG4gICAgICAgICAgICAgICAgICAgIHN0ZXAtaW5kaWNhdG9ycz1cXFwidm0uc3RlcEluZGljYXRvcnNcXFwiXFxuICAgICAgICAgICAgICAgICAgICBuZXh0LWNvbmZpZy1zdGVwPVxcXCJ2bS5uZXh0Q29uZmlnU3RlcCgpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMtY29uZmlnLXN0ZXA9XFxcInZtLnByZXZpb3VzQ29uZmlnU3RlcCgpXFxcIj5cXG4gICAgICAgICAgICAgICAgICA8L3BhZ2VyPlxcbiAgICAgICAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJhbmltYXRlLXN3aXRjaC1jb250YWluZXJcXFwiXFxuICAgICAgICAgICAgICAgICAgICBuZy1zd2l0Y2ggb249XFxcInZtLmNvbmZpZ3VyYXRpb24ubGlzdENvbmZpZ1N0ZXBbdm0uY29uZmlndXJhdGlvbi5jb25maWdTdGVwQ291bnRlcl1cXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPHN0ZXAtemVyby1jb250ZW50XFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249XFxcInZtLmNvbmZpZ3VyYXRpb25cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGFkZC1uZXdsaW5lPVxcXCJ2bS5hZGROZXdsaW5lKClcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGRvd24tdGhpcy1saW5lPVxcXCJ2bS5kb3duVGhpc0xpbmUoaW5kZXgpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICB1cC10aGlzLWxpbmU9XFxcInZtLnVwVGhpc0xpbmUoaW5kZXgpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICByZW1vdmUtdGhpcy1saW5lPVxcXCJ2bS5yZW1vdmVUaGlzTGluZShpbmRleClcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPC9zdGVwLXplcm8tY29udGVudD5cXG4gICAgICAgICAgICAgICAgICAgIDxzdGVwLW9uZS1jb250ZW50XFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249XFxcInZtLmNvbmZpZ3VyYXRpb25cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIGluY3JlYXNlLW51bWJlci1vZi1jb2x1bW5zPVxcXCJ2bS5pbmNyZWFzZU51bWJlck9mQ29sdW1ucygpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBkZWNyZWFzZS1udW1iZXItb2YtY29sdW1ucz1cXFwidm0uZGVjcmVhc2VOdW1iZXJPZkNvbHVtbnMoKVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgc2V0LWFjdGl2ZS1saW5lLW51bWJlcj1cXFwidm0uc2V0QWN0aXZlTGluZU51bWJlcihpbmRleClcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPC9zdGVwLW9uZS1jb250ZW50PlxcbiAgICAgICAgICAgICAgICAgICAgPHN0ZXAtdHdvLWNvbnRlbnRcXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1cXFwidm0uY29uZmlndXJhdGlvblxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgc2V0LWFjdGl2ZS1saW5lLW51bWJlcj1cXFwidm0uc2V0QWN0aXZlTGluZU51bWJlcihpbmRleClcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgIHNob3ctbW9kYWwtYWRkLWN0cmwtdG8tY29sdW1uPVxcXCJ2bS5zaG93TW9kYWxBZGRDdHJsVG9Db2x1bW4oc2l6ZSwgaW5kZXhMaW5lLCBudW1jb2x1bW4pXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIDwvc3RlcC10d28tY29udGVudD5cXG4gICAgICAgICAgICAgICAgICAgIDxzdGVwLXRocmVlLWNvbnRlbnRcXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1cXFwidm0uY29uZmlndXJhdGlvblxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgZWRhLWRhdGEtbW9kZWw9XFxcInZtLmRhdGFNb2RlbFxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgd2YtZm9ybS1maWVsZHM9XFxcInZtLndmRm9ybUZpZWxkc1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgb24tc3VibWl0PVxcXCJ2bS5vblN1Ym1pdCgpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBzYXZlLXRoaXMtZm9ybT1cXFwidm0uc2F2ZVRoaXNGb3JtKClcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPC9zdGVwLXRocmVlLWNvbnRlbnQ+XFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgPC91aWItdGFiPlxcbiAgICAgICAgICAgICAgPHVpYi10YWJcXG4gICAgICAgICAgICAgICAgYWN0aXZlPVxcXCJ2bS50YWIucHJldmlld1RhYi5hY3RpdmVcXFwiXFxuICAgICAgICAgICAgICAgIG5nLWlmPVxcXCJ2bS50YWIucHJldmlld1RhYi50YWJWaXNpYmxlICYmICF2bS5jb25maWd1cmF0aW9uLmlzV2l6YXJkXFxcIlxcbiAgICAgICAgICAgICAgICBoZWFkaW5nPVxcXCJ7eydQUkVWSUVXX1RBQicgfCB0cmFuc2xhdGV9fVxcXCI+XFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInBhbmVsIHBhbmVsLWRlZmF1bHRcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBmb3JtbHkgaGVyZSAtLT5cXG4gICAgICAgICAgICAgICAgICAgIDxmb3JtIG5nLXN1Ym1pdD1cXFwidm0ub25TdWJtaXQoKVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgIDxmb3JtbHktZm9ybVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVxcXCJwcmV2aWV3Rm9ybWx5Rm9ybVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlbD1cXFwidm0uZGF0YU1vZGVsXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkcz1cXFwidm0ud2ZGb3JtRmllbGRzXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwicHVsbC1yaWdodFxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XFxcInN1Ym1pdFxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dm0uY29uZmlndXJhdGlvbi5zdWJtaXRCdXR0b25UZXh0fX1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiYnRuIGJ0bi1wcmltYXJ5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVxcXCJjYW5jZWxcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZtLmNvbmZpZ3VyYXRpb24uY2FuY2VsQnV0dG9uVGV4dH19XFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybWx5LWZvcm0+XFxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICAgICAgbmctaWY9XFxcInZtLnRhYi5wcmV2aWV3VGFiLm1vZGVsc1Zpc2libGVcXFwiXFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcInBhbmVsIHBhbmVsLWRlZmF1bHRcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPHA+e3snREFUQV9NT0RFTCcgfCB0cmFuc2xhdGV9fTwvcD5cXG4gICAgICAgICAgICAgICAgICAgIDxwcmU+XFxuICAgICAgICAgICAgICAgICAgICAgIHt7dm0uZGF0YU1vZGVsIHwganNvbn19XFxuICAgICAgICAgICAgICAgICAgICA8L3ByZT5cXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDxkaXZcXG4gICAgICAgICAgICAgICAgICBuZy1pZj1cXFwidm0udGFiLnByZXZpZXdUYWIubW9kZWxzVmlzaWJsZVxcXCJcXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicGFuZWwtYm9keVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICA8cD57eydGSUVMRFNfTU9ERUwnIHwgdHJhbnNsYXRlfX08L3A+XFxuICAgICAgICAgICAgICAgICAgICA8cHJlPlxcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtLndmRm9ybUZpZWxkc09ubHlOZWVkZWRQcm9wZXJ0aWVzIHwganNvbn19XFxuICAgICAgICAgICAgICAgICAgICA8L3ByZT5cXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICA8L3VpYi10YWI+XFxuICAgICAgICAgICAgPC91aWItdGFic2V0PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvc2VjdGlvbj5cXG4gICAgICA8aHIvPlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2Plxcbjwvc2VjdGlvbj5cXG5cIlxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvbWFpbi9zdGVwd2F5Lm1haW4udGVtcGxhdGUuaHRtbFxuLy8gbW9kdWxlIGlkID0gMjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 28 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar EASY_FORM_STEP_WAY_CONFIG_NAME = 'easyFormSteWayConfig';\n\nfunction easyFormSteWayConfig($translateProvider) {\n var _configuration = defaultConfig();\n var _controlsList = controlsList();\n var _defaultLanguage = getDefaultLanguage();\n var _currentLanguage = initDefaultLanguage();\n var _showPreviewPanel = getDefaultshowPreviewPanel();\n var _showPreviewModels = getDefaultShowPreviewModel();\n\n this.$get = easyFormStepWayConfigGET;\n this.setModalAnimation = setModalAnimation;\n this.getModalAnimation = getModalAnimation;\n this.configuration = _configuration;\n this.getEnabledControls = getEnabledControls;\n this.disableControl = disableControl;\n this.enableControl = enableControl;\n this.setLanguage = setLanguage;\n this.getCurrentLanguage = getCurrentLanguage;\n this.showPreviewPanel = showPreviewPanel;\n this.showPreviewModels = showPreviewModels;\n\n //set default config\n function defaultConfig() {\n var _defaultConfiguration = {\n modalAnimated: false\n };\n return _defaultConfiguration;\n }\n\n //show preview panel by default\n function getDefaultshowPreviewPanel() {\n return true;\n }\n\n //show preview data, fields models in preview panel\n function getDefaultShowPreviewModel() {\n return true;\n }\n\n function getCurrentLanguage() {\n return _currentLanguage;\n }\n\n //list of controls\n function controlsList() {\n var controls = [{ name: 'empty', enabled: true }, { name: 'Header', enabled: true }, { name: 'Subtitle', enabled: true }, { name: 'TextInput', enabled: true }, { name: 'Password', enabled: true }, { name: 'Email', enabled: true }, { name: 'IpAdress', enabled: true }, { name: 'Date', enabled: true }, { name: 'Texarea', enabled: true }, { name: 'RichTextEditor', enabled: true }, { name: 'Radio', enabled: true }, { name: 'Checkbox', enabled: true }, { name: 'BasicSelect', enabled: true }, { name: 'GroupedSelect', enabled: true }];\n return controls;\n }\n\n function showPreviewPanel(wantToShow) {\n if (angular.isDefined(wantToShow)) {\n if (wantToShow === true) _showPreviewPanel = true;\n if (wantToShow === false) _showPreviewPanel = false;\n }\n }\n\n function showPreviewModels(wantToShow) {\n if (angular.isDefined(wantToShow)) {\n if (wantToShow === true) _showPreviewModels = true;\n if (wantToShow === false) _showPreviewModels = false;\n }\n }\n\n //language : set default to english\n function getDefaultLanguage() {\n var lang = 'en';\n return lang;\n }\n\n function setDefaultLanguage() {\n _currentLanguage = _defaultLanguage;\n $translateProvider.preferredLanguage(_currentLanguage);\n return _currentLanguage;\n }\n\n function setLanguage(language) {\n if (angular.isString(language)) {\n _currentLanguage = language;\n $translateProvider.preferredLanguage(language);\n } else {\n setDefaultLanguage();\n }\n }\n\n function initDefaultLanguage() {\n $translateProvider.useSanitizeValueStrategy('escape'); //security : Enable escaping of HTML\n $translateProvider.fallbackLanguage(_defaultLanguage); //fallback language to default language\n $translateProvider.preferredLanguage(_defaultLanguage);\n return _defaultLanguage;\n }\n\n function getEnabledControls() {\n return _controlsList;\n }\n\n function disableControl(control) {\n if (angular.isString(control)) {\n angular.forEach(_controlsList, function (aControl) {\n if (aControl.name === control) aControl.enabled = false;\n });\n } else if (angular.isArray(control)) {\n angular.forEach(control, function (controlName) {\n angular.forEach(_controlsList, function (aControl) {\n if (aControl.name === controlName) aControl.enabled = false;\n });\n });\n }\n }\n\n function enableControl(control) {\n if (angular.isString(control)) {\n angular.forEach(_controlsList, function (aControl) {\n if (aControl.name === control) aControl.enabled = true;\n });\n } else if (angular.isArray(control)) {\n angular.forEach(control, function (controlName) {\n angular.forEach(_controlsList, function (aControl) {\n if (aControl.name === controlName) aControl.enabled = true;\n });\n });\n }\n }\n\n function setModalAnimation(flagConfig) {\n var valueToApply = flagConfig === true ? flagConfig : flagConfig === false ? flagConfig : _configuration.modalAnimated;\n\n _configuration.modalAnimated = valueToApply;\n }\n\n function getModalAnimation() {\n return _configuration.modalAnimated;\n }\n\n //$get implementation :\n easyFormStepWayConfigGET.$inject = ['$translate'];\n function easyFormStepWayConfigGET($translate) {\n var service = {\n setModalAnimation: setModalAnimationFct,\n getModalAnimationValue: getModalAnimationValue,\n getListEnabledControl: getListEnabledControl,\n setLanguage: switchLanguage,\n getCurrentLanguage: getCurrentLanguage,\n isPreviewPanelVisible: isPreviewPanelVisible,\n arePreviewModelsVisible: arePreviewModelsVisible\n };\n return service;\n\n function getModalAnimationValue() {\n return _configuration.modalAnimated;\n }\n\n function setModalAnimationFct(value) {\n setModalAnimation(value);\n }\n\n function getListEnabledControl() {\n return angular.copy(_controlsList);\n }\n\n function switchLanguage(language) {\n if (angular.isString(language)) {\n _currentLanguage = language;\n $translate.use(language);\n } else {\n setDefaultLanguage();\n }\n }\n\n function isPreviewPanelVisible() {\n return _showPreviewPanel;\n }\n\n function arePreviewModelsVisible() {\n return _showPreviewModels;\n }\n }\n}\n\neasyFormSteWayConfig.$inject = ['$translateProvider'];\nexports.default = easyFormSteWayConfig;\nexports.EASY_FORM_STEP_WAY_CONFIG_NAME = EASY_FORM_STEP_WAY_CONFIG_NAME;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXB3YXkubWFpbi5wcm92aWRlci5qcz8wYTg4Il0sIm5hbWVzIjpbIkVBU1lfRk9STV9TVEVQX1dBWV9DT05GSUdfTkFNRSIsImVhc3lGb3JtU3RlV2F5Q29uZmlnIiwiJHRyYW5zbGF0ZVByb3ZpZGVyIiwiX2NvbmZpZ3VyYXRpb24iLCJkZWZhdWx0Q29uZmlnIiwiX2NvbnRyb2xzTGlzdCIsImNvbnRyb2xzTGlzdCIsIl9kZWZhdWx0TGFuZ3VhZ2UiLCJnZXREZWZhdWx0TGFuZ3VhZ2UiLCJfY3VycmVudExhbmd1YWdlIiwiaW5pdERlZmF1bHRMYW5ndWFnZSIsIl9zaG93UHJldmlld1BhbmVsIiwiZ2V0RGVmYXVsdHNob3dQcmV2aWV3UGFuZWwiLCJfc2hvd1ByZXZpZXdNb2RlbHMiLCJnZXREZWZhdWx0U2hvd1ByZXZpZXdNb2RlbCIsIiRnZXQiLCJlYXN5Rm9ybVN0ZXBXYXlDb25maWdHRVQiLCJzZXRNb2RhbEFuaW1hdGlvbiIsImdldE1vZGFsQW5pbWF0aW9uIiwiY29uZmlndXJhdGlvbiIsImdldEVuYWJsZWRDb250cm9scyIsImRpc2FibGVDb250cm9sIiwiZW5hYmxlQ29udHJvbCIsInNldExhbmd1YWdlIiwiZ2V0Q3VycmVudExhbmd1YWdlIiwic2hvd1ByZXZpZXdQYW5lbCIsInNob3dQcmV2aWV3TW9kZWxzIiwiX2RlZmF1bHRDb25maWd1cmF0aW9uIiwibW9kYWxBbmltYXRlZCIsImNvbnRyb2xzIiwibmFtZSIsImVuYWJsZWQiLCJ3YW50VG9TaG93IiwiYW5ndWxhciIsImlzRGVmaW5lZCIsImxhbmciLCJzZXREZWZhdWx0TGFuZ3VhZ2UiLCJwcmVmZXJyZWRMYW5ndWFnZSIsImxhbmd1YWdlIiwiaXNTdHJpbmciLCJ1c2VTYW5pdGl6ZVZhbHVlU3RyYXRlZ3kiLCJmYWxsYmFja0xhbmd1YWdlIiwiY29udHJvbCIsImZvckVhY2giLCJhQ29udHJvbCIsImlzQXJyYXkiLCJjb250cm9sTmFtZSIsImZsYWdDb25maWciLCJ2YWx1ZVRvQXBwbHkiLCIkaW5qZWN0IiwiJHRyYW5zbGF0ZSIsInNlcnZpY2UiLCJzZXRNb2RhbEFuaW1hdGlvbkZjdCIsImdldE1vZGFsQW5pbWF0aW9uVmFsdWUiLCJnZXRMaXN0RW5hYmxlZENvbnRyb2wiLCJzd2l0Y2hMYW5ndWFnZSIsImlzUHJldmlld1BhbmVsVmlzaWJsZSIsImFyZVByZXZpZXdNb2RlbHNWaXNpYmxlIiwidmFsdWUiLCJjb3B5IiwidXNlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQU1BLGlDQUFpQyxzQkFBdkM7O0FBRUEsU0FBU0Msb0JBQVQsQ0FBOEJDLGtCQUE5QixFQUFrRDtBQUNoRCxNQUFNQyxpQkFBb0JDLGVBQTFCO0FBQ0EsTUFBTUMsZ0JBQW9CQyxjQUExQjtBQUNBLE1BQU1DLG1CQUFvQkMsb0JBQTFCO0FBQ0EsTUFBSUMsbUJBQXNCQyxxQkFBMUI7QUFDQSxNQUFJQyxvQkFBc0JDLDRCQUExQjtBQUNBLE1BQUlDLHFCQUFzQkMsNEJBQTFCOztBQUVBLE9BQUtDLElBQUwsR0FBMEJDLHdCQUExQjtBQUNBLE9BQUtDLGlCQUFMLEdBQTBCQSxpQkFBMUI7QUFDQSxPQUFLQyxpQkFBTCxHQUEwQkEsaUJBQTFCO0FBQ0EsT0FBS0MsYUFBTCxHQUEwQmhCLGNBQTFCO0FBQ0EsT0FBS2lCLGtCQUFMLEdBQTBCQSxrQkFBMUI7QUFDQSxPQUFLQyxjQUFMLEdBQTBCQSxjQUExQjtBQUNBLE9BQUtDLGFBQUwsR0FBMEJBLGFBQTFCO0FBQ0EsT0FBS0MsV0FBTCxHQUEwQkEsV0FBMUI7QUFDQSxPQUFLQyxrQkFBTCxHQUEwQkEsa0JBQTFCO0FBQ0EsT0FBS0MsZ0JBQUwsR0FBMEJBLGdCQUExQjtBQUNBLE9BQUtDLGlCQUFMLEdBQTBCQSxpQkFBMUI7O0FBRUE7QUFDQSxXQUFTdEIsYUFBVCxHQUF5QjtBQUN2QixRQUFPdUIsd0JBQXdCO0FBQzdCQyxxQkFBZ0I7QUFEYSxLQUEvQjtBQUdBLFdBQU9E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RjtBQUNEO0FBQ0Y7O0FBRUQsYUFBU29CLHFCQUFULEdBQWlDO0FBQy9CLGFBQU83QyxpQkFBUDtBQUNEOztBQUVELGFBQVM4Qyx1QkFBVCxHQUFtQztBQUNqQyxhQUFPNUMsa0JBQVA7QUFDRDtBQUNGO0FBQ0Y7O0FBRURaLHFCQUFxQmdELE9BQXJCLEdBQStCLENBQUMsb0JBQUQsQ0FBL0I7a0JBQ2VoRCxvQjtRQUVQRCw4QixHQUFBQSw4QiIsImZpbGUiOiIyOC5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEVBU1lfRk9STV9TVEVQX1dBWV9DT05GSUdfTkFNRSA9ICdlYXN5Rm9ybVN0ZVdheUNvbmZpZyc7XG5cbmZ1bmN0aW9uIGVhc3lGb3JtU3RlV2F5Q29uZmlnKCR0cmFuc2xhdGVQcm92aWRlcikge1xuICBjb25zdCBfY29uZmlndXJhdGlvbiAgICA9IGRlZmF1bHRDb25maWcoKTtcbiAgY29uc3QgX2NvbnRyb2xzTGlzdCAgICAgPSBjb250cm9sc0xpc3QoKTtcbiAgY29uc3QgX2RlZmF1bHRMYW5ndWFnZSAgPSBnZXREZWZhdWx0TGFuZ3VhZ2UoKTtcbiAgbGV0IF9jdXJyZW50TGFuZ3VhZ2UgICAgPSBpbml0RGVmYXVsdExhbmd1YWdlKCk7XG4gIGxldCBfc2hvd1ByZXZpZXdQYW5lbCAgID0gZ2V0RGVmYXVsdHNob3dQcmV2aWV3UGFuZWwoKTtcbiAgbGV0IF9zaG93UHJldmlld01vZGVscyAgPSBnZXREZWZhdWx0U2hvd1ByZXZpZXdNb2RlbCgpO1xuXG4gIHRoaXMuJGdldCAgICAgICAgICAgICAgID0gZWFzeUZvcm1TdGVwV2F5Q29uZmlnR0VUO1xuICB0aGlzLnNldE1vZGFsQW5pbWF0aW9uICA9IHNldE1vZGFsQW5pbWF0aW9uO1xuICB0aGlzLmdldE1vZGFsQW5pbWF0aW9uICA9IGdldE1vZGFsQW5pbWF0aW9uO1xuICB0aGlzLmNvbmZpZ3VyYXRpb24gICAgICA9IF9jb25maWd1cmF0aW9uO1xuICB0aGlzLmdldEVuYWJsZWRDb250cm9scyA9IGdldEVuYWJsZWRDb250cm9scztcbiAgdGhpcy5kaXNhYmxlQ29udHJvbCAgICAgPSBkaXNhYmxlQ29udHJvbDtcbiAgdGhpcy5lbmFibGVDb250cm9sICAgICAgPSBlbmFibGVDb250cm9sO1xuICB0aGlzLnNldExhbmd1YWdlICAgICAgICA9IHNldExhbmd1YWdlO1xuICB0aGlzLmdldEN1cnJlbnRMYW5ndWFnZSA9IGdldEN1cnJlbnRMYW5ndWFnZTtcbiAgdGhpcy5zaG93UHJldmlld1BhbmVsICAgPSBzaG93UHJldmlld1BhbmVsO1xuICB0aGlzLnNob3dQcmV2aWV3TW9kZWxzICA9IHNob3dQcmV2aWV3TW9kZWxzO1xuXG4gIC8vc2V0IGRlZmF1bHQgY29uZmlnXG4gIGZ1bmN0aW9uIGRlZmF1bHRDb25maWcoKSB7XG4gICAgY29uc3QgIF9kZWZhdWx0Q29uZmlndXJhdGlvbiA9IHtcbiAgICAgIG1vZGFsQW5pbWF0ZWQgOiBmYWxzZVxuICAgIH07XG4gICAgcmV0dXJuIF9kZWZhdWx0Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIC8vc2hvdyBwcmV2aWV3IHBhbmVsIGJ5IGRlZmF1bHRcbiAgZnVuY3Rpb24gZ2V0RGVmYXVsdHNob3dQcmV2aWV3UGFuZWwoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvL3Nob3cgcHJldmlldyBkYXRhLCBmaWVsZHMgbW9kZWxzIGluIHByZXZpZXcgcGFuZWxcbiAgZnVuY3Rpb24gZ2V0RGVmYXVsdFNob3dQcmV2aWV3TW9kZWwoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRDdXJyZW50TGFuZ3VhZ2UoKSB7XG4gICAgICByZXR1cm4gX2N1cnJlbnRMYW5ndWFnZTtcbiAgfVxuXG4gIC8vbGlzdCBvZiBjb250cm9sc1xuICBmdW5jdGlvbiBjb250cm9sc0xpc3QoKSB7XG4gICAgY29uc3QgY29udHJvbHMgPSBbXG4gICAgICB7bmFtZTogJ2VtcHR5JywgICAgICAgICAgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICB7bmFtZTogJ0hlYWRlcicsICAgICAgICAgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICB7bmFtZTogJ1N1YnRpdGxlJywgICAgICAgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICB7bmFtZTogJ1RleHRJbnB1dCcsICAgICAgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICB7bmFtZTogJ1Bhc3N3b3JkJywgICAgICAgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICB7bmFtZTogJ0VtYWlsJywgICAgICAgICAgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICB7bmFtZTogJ0lwQWRyZXNzJywgICAgICAgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICB7bmFtZTogJ0RhdGUnLCAgICAgICAgICAgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICB7bmFtZTogJ1RleGFyZWEnLCAgICAgICAgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICB7bmFtZTogJ1JpY2hUZXh0RWRpdG9yJywgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICB7bmFtZTogJ1JhZGlvJywgICAgICAgICAgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICB7bmFtZTogJ0NoZWNrYm94JywgICAgICAgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICB7bmFtZTogJ0Jhc2ljU2VsZWN0JywgICAgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICB7bmFtZTogJ0dyb3VwZWRTZWxlY3QnLCAgZW5hYmxlZDogdHJ1ZX1cbiAgICBdO1xuICAgIHJldHVybiBjb250cm9scztcbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3dQcmV2aWV3UGFuZWwod2FudFRvU2hvdykge1xuICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZCh3YW50VG9TaG93KSkge1xuICAgICAgaWYod2FudFRvU2hvdyA9PT0gdHJ1ZSkgIF9zaG93UHJldmlld1BhbmVsID0gdHJ1ZTtcbiAgICAgIGlmKHdhbnRUb1Nob3cgPT09IGZhbHNlKSBfc2hvd1ByZXZpZXdQYW5lbCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3dQcmV2aWV3TW9kZWxzKHdhbnRUb1Nob3cpIHtcbiAgICBpZiAoYW5ndWxhci5pc0RlZmluZWQod2FudFRvU2hvdykpIHtcbiAgICAgIGlmKHdhbnRUb1Nob3cgPT09IHRydWUpICBfc2hvd1ByZXZpZXdNb2RlbHMgPSB0cnVlO1xuICAgICAgaWYod2FudFRvU2hvdyA9PT0gZmFsc2UpIF9zaG93UHJldmlld01vZGVscyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vbGFuZ3VhZ2UgOiBzZXQgZGVmYXVsdCB0byBlbmdsaXNoXG4gIGZ1bmN0aW9uIGdldERlZmF1bHRMYW5ndWFnZSgpIHtcbiAgICBjb25zdCBsYW5nID0gJ2VuJztcbiAgICByZXR1cm4gbGFuZztcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldERlZmF1bHRMYW5ndWFnZSgpIHtcbiAgICBfY3VycmVudExhbmd1YWdlID0gX2RlZmF1bHRMYW5ndWFnZTtcbiAgICAkdHJhbnNsYXRlUHJvdmlkZXIucHJlZmVycmVkTGFuZ3VhZ2UoX2N1cnJlbnRMYW5ndWFnZSk7XG4gICAgcmV0dXJuIF9jdXJyZW50TGFuZ3VhZ2U7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRMYW5ndWFnZShsYW5ndWFnZSkge1xuICAgIGlmIChhbmd1bGFyLmlzU3RyaW5nKGxhbmd1YWdlKSkge1xuICAgICAgX2N1cnJlbnRMYW5ndWFnZSA9IGxhbmd1YWdlO1xuICAgICAgJHRyYW5zbGF0ZVByb3ZpZGVyLnByZWZlcnJlZExhbmd1YWdlKGxhbmd1YWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RGVmYXVsdExhbmd1YWdlKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdERlZmF1bHRMYW5ndWFnZSgpIHtcbiAgICAkdHJhbnNsYXRlUHJvdmlkZXIudXNlU2FuaXRpemVWYWx1ZVN0cmF0ZWd5KCdlc2NhcGUnKTsgICAvL3NlY3VyaXR5IDogRW5hYmxlIGVzY2FwaW5nIG9mIEhUTUxcbiAgICAkdHJhbnNsYXRlUHJvdmlkZXIuZmFsbGJhY2tMYW5ndWFnZShfZGVmYXVsdExhbmd1YWdlKTsgIC8vZmFsbGJhY2sgbGFuZ3VhZ2UgdG8gZGVmYXVsdCBsYW5ndWFnZVxuICAgICR0cmFuc2xhdGVQcm92aWRlci5wcmVmZXJyZWRMYW5ndWFnZShfZGVmYXVsdExhbmd1YWdlKTtcbiAgICByZXR1cm4gX2RlZmF1bHRMYW5ndWFnZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEVuYWJsZWRDb250cm9scygpIHtcbiAgICByZXR1cm4gX2NvbnRyb2xzTGlzdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc2FibGVDb250cm9sKGNvbnRyb2wpIHtcbiAgICBpZiAoYW5ndWxhci5pc1N0cmluZyhjb250cm9sKSkge1xuICAgICAgYW5ndWxhci5mb3JFYWNoKF9jb250cm9sc0xpc3QsIChhQ29udHJvbCkgPT4ge1xuICAgICAgICBpZiAoYUNvbnRyb2wubmFtZSA9PT0gY29udHJvbCkgYUNvbnRyb2wuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChhbmd1bGFyLmlzQXJyYXkoY29udHJvbCkpIHtcbiAgICAgIGFuZ3VsYXIuZm9yRWFjaChjb250cm9sLCAoY29udHJvbE5hbWUpID0+IHtcbiAgICAgICAgYW5ndWxhci5mb3JFYWNoKF9jb250cm9sc0xpc3QsIChhQ29udHJvbCkgPT4ge1xuICAgICAgICAgIGlmIChhQ29udHJvbC5uYW1lID09PSBjb250cm9sTmFtZSkgYUNvbnRyb2wuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVuYWJsZUNvbnRyb2woY29udHJvbCkge1xuICAgIGlmIChhbmd1bGFyLmlzU3RyaW5nKGNvbnRyb2wpKSB7XG4gICAgICBhbmd1bGFyLmZvckVhY2goX2NvbnRyb2xzTGlzdCwgKGFDb250cm9sKSA9PiB7XG4gICAgICAgIGlmIChhQ29udHJvbC5uYW1lID09PSBjb250cm9sKSBhQ29udHJvbC5lbmFibGVkID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoYW5ndWxhci5pc0FycmF5KGNvbnRyb2wpKSB7XG4gICAgICBhbmd1bGFyLmZvckVhY2goY29udHJvbCwgKGNvbnRyb2xOYW1lKSA9PiB7XG4gICAgICAgIGFuZ3VsYXIuZm9yRWFjaChfY29udHJvbHNMaXN0LCAoYUNvbnRyb2wpID0+IHtcbiAgICAgICAgICBpZiAoYUNvbnRyb2wubmFtZSA9PT0gY29udHJvbE5hbWUpIGFDb250cm9sLmVuYWJsZWQgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNldE1vZGFsQW5pbWF0aW9uKGZsYWdDb25maWcpIHtcbiAgICBjb25zdCB2YWx1ZVRvQXBwbHkgPSAoZmxhZ0NvbmZpZyA9PT0gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZmxhZ0NvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAoZmxhZ0NvbmZpZyA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmbGFnQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogX2NvbmZpZ3VyYXRpb24ubW9kYWxBbmltYXRlZCk7XG5cbiAgICBfY29uZmlndXJhdGlvbi5tb2RhbEFuaW1hdGVkID0gdmFsdWVUb0FwcGx5O1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TW9kYWxBbmltYXRpb24oKXtcbiAgICByZXR1cm4gX2NvbmZpZ3VyYXRpb24ubW9kYWxBbmltYXRlZDtcbiAgfVxuXG5cbiAgLy8kZ2V0IGltcGxlbWVudGF0aW9uIDpcbiAgZWFzeUZvcm1TdGVwV2F5Q29uZmlnR0VULiRpbmplY3QgPSBbJyR0cmFuc2xhdGUnXTtcbiAgZnVuY3Rpb24gZWFzeUZvcm1TdGVwV2F5Q29uZmlnR0VUKCR0cmFuc2xhdGUpIHtcbiAgICBjb25zdCBzZXJ2aWNlID0ge1xuICAgICAgc2V0TW9kYWxBbmltYXRpb246ICAgICAgICBzZXRNb2RhbEFuaW1hdGlvbkZjdCxcbiAgICAgIGdldE1vZGFsQW5pbWF0aW9uVmFsdWU6ICAgZ2V0TW9kYWxBbmltYXRpb25WYWx1ZSxcbiAgICAgIGdldExpc3RFbmFibGVkQ29udHJvbDogICAgZ2V0TGlzdEVuYWJsZWRDb250cm9sLFxuICAgICAgc2V0TGFuZ3VhZ2U6ICAgICAgICAgICAgICBzd2l0Y2hMYW5ndWFnZSxcbiAgICAgIGdldEN1cnJlbnRMYW5ndWFnZTogICAgICAgZ2V0Q3VycmVudExhbmd1YWdlLFxuICAgICAgaXNQcmV2aWV3UGFuZWxWaXNpYmxlOiAgICBpc1ByZXZpZXdQYW5lbFZpc2libGUsXG4gICAgICBhcmVQcmV2aWV3TW9kZWxzVmlzaWJsZTogIGFyZVByZXZpZXdNb2RlbHNWaXNpYmxlXG4gICAgfTtcbiAgICByZXR1cm4gc2VydmljZTtcblxuXG4gICAgZnVuY3Rpb24gZ2V0TW9kYWxBbmltYXRpb25WYWx1ZSgpIHtcbiAgICAgIHJldHVybiBfY29uZmlndXJhdGlvbi5tb2RhbEFuaW1hdGVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE1vZGFsQW5pbWF0aW9uRmN0KHZhbHVlKSB7XG4gICAgICBzZXRNb2RhbEFuaW1hdGlvbih2YWx1ZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0TGlzdEVuYWJsZWRDb250cm9sKCkge1xuICAgICAgcmV0dXJuIGFuZ3VsYXIuY29weShfY29udHJvbHNMaXN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzd2l0Y2hMYW5ndWFnZShsYW5ndWFnZSkge1xuICAgICAgaWYgKGFuZ3VsYXIuaXNTdHJpbmcobGFuZ3VhZ2UpKSB7XG4gICAgICAgIF9jdXJyZW50TGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICAgICAgJHRyYW5zbGF0ZS51c2UobGFuZ3VhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdExhbmd1YWdlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNQcmV2aWV3UGFuZWxWaXNpYmxlKCkge1xuICAgICAgcmV0dXJuIF9zaG93UHJldmlld1BhbmVsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFyZVByZXZpZXdNb2RlbHNWaXNpYmxlKCkge1xuICAgICAgcmV0dXJuIF9zaG93UHJldmlld01vZGVscztcbiAgICB9XG4gIH1cbn1cblxuZWFzeUZvcm1TdGVXYXlDb25maWcuJGluamVjdCA9IFsnJHRyYW5zbGF0ZVByb3ZpZGVyJ107XG5leHBvcnQgZGVmYXVsdCBlYXN5Rm9ybVN0ZVdheUNvbmZpZztcblxuZXhwb3J0IHtFQVNZX0ZPUk1fU1RFUF9XQVlfQ09ORklHX05BTUV9O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvbWFpbi9zdGVwd2F5Lm1haW4ucHJvdmlkZXIuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 29 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayMainPager = __webpack_require__(30);\n\nvar PAGER_COMPONENT_MODULE = 'stepway.pager.module';\n\nexports.default = angular.module(PAGER_COMPONENT_MODULE, []).component(_stepwayMainPager.PAGER_COMPONENT_NAME, _stepwayMainPager.pagerComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3BhZ2VyL3N0ZXB3YXkubWFpbi5wYWdlci5tb2R1bGUuanM/Njg5MCJdLCJuYW1lcyI6WyJQQUdFUl9DT01QT05FTlRfTU9EVUxFIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBS0EsSUFBTUEseUJBQXlCLHNCQUEvQjs7a0JBRWVDLFFBQ0VDLE1BREYsQ0FDU0Ysc0JBRFQsRUFDaUMsRUFEakMsRUFFRUcsU0FGRiwwRSIsImZpbGUiOiIyOS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHBhZ2VyQ29tcG9uZW50LFxuICBQQUdFUl9DT01QT05FTlRfTkFNRVxufSAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi9zdGVwd2F5Lm1haW4ucGFnZXIuY29tcG9uZW50JztcblxuY29uc3QgUEFHRVJfQ09NUE9ORU5UX01PRFVMRSA9ICdzdGVwd2F5LnBhZ2VyLm1vZHVsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAubW9kdWxlKFBBR0VSX0NPTVBPTkVOVF9NT0RVTEUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoUEFHRVJfQ09NUE9ORU5UX05BTUUsIHBhZ2VyQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL21haW4vcGFnZXIvc3RlcHdheS5tYWluLnBhZ2VyLm1vZHVsZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 30 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PAGER_COMPONENT_NAME = exports.PAGER_COMPONENT_NAME = 'pager';\n\nvar pagerComponent = exports.pagerComponent = {\n template: '\\n \\n ',\n bindings: {\n stepIndicators: '<',\n nextConfigStep: '&',\n previousConfigStep: '&',\n configuration: '='\n },\n controller: function () {\n function pagerComponent() {\n _classCallCheck(this, pagerComponent);\n }\n\n _createClass(pagerComponent, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return pagerComponent;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3BhZ2VyL3N0ZXB3YXkubWFpbi5wYWdlci5jb21wb25lbnQuanM/ODQ1YyJdLCJuYW1lcyI6WyJQQUdFUl9DT01QT05FTlRfTkFNRSIsInBhZ2VyQ29tcG9uZW50IiwidGVtcGxhdGUiLCJiaW5kaW5ncyIsInN0ZXBJbmRpY2F0b3JzIiwibmV4dENvbmZpZ1N0ZXAiLCJwcmV2aW91c0NvbmZpZ1N0ZXAiLCJjb25maWd1cmF0aW9uIiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLHNEQUF1QixPQUE3Qjs7QUFFQSxJQUFNQywwQ0FBaUI7QUFDNUJDLGs5QkFENEI7QUF5QjVCQyxZQUFVO0FBQ1JDLG9CQUFvQixHQURaO0FBRVJDLG9CQUFvQixHQUZaO0FBR1JDLHdCQUFvQixHQUhaO0FBSVJDLG1CQUFlO0FBSlAsR0F6QmtCO0FBK0I1QkM7QUFFRSw4QkFBYztBQUFBO0FBRWI7O0FBSkg7QUFBQTtBQUFBLDBCQU11QjtBQUNuQixlQUFPLEVBQVA7QUFDRDtBQVJIOztBQUFBO0FBQUE7QUEvQjRCLENBQXZCIiwiZmlsZSI6IjMwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFBBR0VSX0NPTVBPTkVOVF9OQU1FID0gJ3BhZ2VyJztcblxuZXhwb3J0IGNvbnN0IHBhZ2VyQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZTogYFxuICA8dWwgY2xhc3M9XCJwYWdlclwiPlxuICAgIDxsaSBuZy1jbGFzcz1cInsnZGlzYWJsZWQnOiRjdHJsLnN0ZXBJbmRpY2F0b3JzWzBdfVwiIG5nLWlmPVwiJGN0cmwuY29uZmlndXJhdGlvbi5jb25maWdTdGVwQ291bnRlciA+IDBcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBjdXN0b21QYWdlckJ1dHRvblwiXG4gICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5wcmV2aW91c0NvbmZpZ1N0ZXAoKVwiID5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1sZWZ0IGZhLTJ4IHB1bGwtbGVmdFwiPjwvaT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0XCI+XG4gICAgICAgICAge3snUEFHRVJfUFJFVklPVVMnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9saT5cbiAgICA8bGkgbmctY2xhc3M9XCJ7J2Rpc2FibGVkJzokY3RybC5zdGVwSW5kaWNhdG9yc1szXX1cIiBuZy1pZj1cIigkY3RybC5jb25maWd1cmF0aW9uLmNvbmZpZ1N0ZXBDb3VudGVyIDwgMyAmJiAhJGN0cmwuY29uZmlndXJhdGlvbi5pc1dpemFyZCkgfHwgKCRjdHJsLmNvbmZpZ3VyYXRpb24uY29uZmlnU3RlcENvdW50ZXIgPCAyICYmICRjdHJsLmNvbmZpZ3VyYXRpb24uaXNXaXphcmQpIFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBjdXN0b21QYWdlckJ1dHRvblwiXG4gICAgICAgIG5nLWNsaWNrPVwiJGN0cmwubmV4dENvbmZpZ1N0ZXAoKVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInB1bGwtbGVmdFwiPlxuICAgICAgICAgIHt7J1BBR0VSX05FWFQnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LXJpZ2h0IGZhLTJ4IHB1bGwtcmlnaHRcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xpPlxuICA8L3VsPlxuICBgLFxuICBiaW5kaW5nczoge1xuICAgIHN0ZXBJbmRpY2F0b3JzOiAgICAgJzwnLFxuICAgIG5leHRDb25maWdTdGVwOiAgICAgJyYnLFxuICAgIHByZXZpb3VzQ29uZmlnU3RlcDogJyYnLFxuICAgIGNvbmZpZ3VyYXRpb246ICc9J1xuICB9LFxuICBjb250cm9sbGVyOlxuICBjbGFzcyBwYWdlckNvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG5cbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0ICRpbmplY3QoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvbWFpbi9wYWdlci9zdGVwd2F5Lm1haW4ucGFnZXIuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 31 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayMainStepIndicator = __webpack_require__(32);\n\nvar STEP_INDICATOR_COMPONENT_MODULE = 'stepway.stepIndicator.module';\n\nexports.default = angular.module(STEP_INDICATOR_COMPONENT_MODULE, []).component(_stepwayMainStepIndicator.STEP_INDICATOR_COMPONENT_NAME, _stepwayMainStepIndicator.stepIndicatorComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBJbmRpY2F0b3Ivc3RlcHdheS5tYWluLnN0ZXBJbmRpY2F0b3IubW9kdWxlLmpzPzU0NGQiXSwibmFtZXMiOlsiU1RFUF9JTkRJQ0FUT1JfQ09NUE9ORU5UX01PRFVMRSIsImFuZ3VsYXIiLCJtb2R1bGUiLCJjb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUtBLElBQU1BLGtDQUFrQyw4QkFBeEM7O2tCQUVlQyxRQUNFQyxNQURGLENBQ1NGLCtCQURULEVBQzBDLEVBRDFDLEVBRUVHLFNBRkYsMkciLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBzdGVwSW5kaWNhdG9yQ29tcG9uZW50LFxuICBTVEVQX0lORElDQVRPUl9DT01QT05FTlRfTkFNRVxufSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vc3RlcHdheS5tYWluLnN0ZXBJbmRpY2F0b3IuY29tcG9uZW50JztcblxuY29uc3QgU1RFUF9JTkRJQ0FUT1JfQ09NUE9ORU5UX01PRFVMRSA9ICdzdGVwd2F5LnN0ZXBJbmRpY2F0b3IubW9kdWxlJztcblxuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuICAgICAgICAgICAgICAgIC5tb2R1bGUoU1RFUF9JTkRJQ0FUT1JfQ09NUE9ORU5UX01PRFVMRSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChTVEVQX0lORElDQVRPUl9DT01QT05FTlRfTkFNRSwgc3RlcEluZGljYXRvckNvbXBvbmVudCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBJbmRpY2F0b3Ivc3RlcHdheS5tYWluLnN0ZXBJbmRpY2F0b3IubW9kdWxlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 32 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar STEP_INDICATOR_COMPONENT_NAME = exports.STEP_INDICATOR_COMPONENT_NAME = 'stepIndicator';\n\nvar stepIndicatorComponent = exports.stepIndicatorComponent = {\n template: '\\n \\n
\\n
\\n
\\n
\\n
\\n 0\\n \\n
\\n {{\\'WIZARD_LINES\\' | translate}}\\n
\\n
\\n
\\n
\\n 1\\n \\n
\\n {{\\'WIZARD_LAYOUT\\' | translate}}\\n
\\n
\\n
\\n
\\n 2\\n \\n
\\n {{\\'WIZARD_CONTROLS\\' | translate}}\\n
\\n
\\n
\\n
\\n 3\\n \\n
\\n {{\\'WIZARD_SAVE\\' | translate}}\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n configuration: '<',\n goToStep: '&'\n },\n controller: function () {\n function stepIndicatorComponent() {\n _classCallCheck(this, stepIndicatorComponent);\n }\n\n _createClass(stepIndicatorComponent, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return stepIndicatorComponent;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBJbmRpY2F0b3Ivc3RlcHdheS5tYWluLnN0ZXBJbmRpY2F0b3IuY29tcG9uZW50LmpzPzQ2NzYiXSwibmFtZXMiOlsiU1RFUF9JTkRJQ0FUT1JfQ09NUE9ORU5UX05BTUUiLCJzdGVwSW5kaWNhdG9yQ29tcG9uZW50IiwidGVtcGxhdGUiLCJiaW5kaW5ncyIsImNvbmZpZ3VyYXRpb24iLCJnb1RvU3RlcCIsImNvbnRyb2xsZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBTyxJQUFNQSx3RUFBZ0MsZUFBdEM7O0FBRUEsSUFBTUMsMERBQXlCO0FBQ3BDQyxxMUVBRG9DO0FBMkRwQ0MsWUFBVTtBQUNSQyxtQkFBZSxHQURQO0FBRVJDLGNBQVU7QUFGRixHQTNEMEI7QUErRHBDQztBQUVFLHNDQUFjO0FBQUE7QUFFYjs7QUFKSDtBQUFBO0FBQUEsMEJBTXVCO0FBQ25CLGVBQU8sRUFBUDtBQUNEO0FBUkg7O0FBQUE7QUFBQTtBQS9Eb0MsQ0FBL0IiLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU1RFUF9JTkRJQ0FUT1JfQ09NUE9ORU5UX05BTUUgPSAnc3RlcEluZGljYXRvcic7XG5cbmV4cG9ydCBjb25zdCBzdGVwSW5kaWNhdG9yQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZTogYFxuICA8ZGl2IGNsYXNzPVwicm93IHN0ZXB3aXphcmRUb3BtYXJnaW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTggY29sLWxnLW9mZnNldC0yIGNvbC1tZC04IGNvbC1tZC1vZmZzZXQtMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXB3aXphcmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBzdGVwd2l6YXJkLXJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwd2l6YXJkLXN0ZXAgY29sLW1kLTNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1jaXJjbGVcIlxuICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLmdvVG9TdGVwKHtpbmRleDowfSlcIlxuICAgICAgICAgICAgICBuZy1jbGFzcz1cInsnYnRuLXByaW1hcnknOiAkY3RybC5jb25maWd1cmF0aW9uLnN0ZXBJbmRpY2F0b3JzWzBdLCAnYnRuLWRlZmF1bHQnOiAhJGN0cmwuY29uZmlndXJhdGlvbi5zdGVwSW5kaWNhdG9yc1swXX1cIiA+XG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIHt7J1dJWkFSRF9MSU5FUycgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwd2l6YXJkLXN0ZXAgY29sLW1kLTNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1jaXJjbGVcIlxuICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLmdvVG9TdGVwKHtpbmRleDoxfSlcIlxuICAgICAgICAgICAgICBuZy1jbGFzcz1cInsnYnRuLXByaW1hcnknOiAkY3RybC5jb25maWd1cmF0aW9uLnN0ZXBJbmRpY2F0b3JzWzFdLCAnYnRuLWRlZmF1bHQnOiAhJGN0cmwuY29uZmlndXJhdGlvbi5zdGVwSW5kaWNhdG9yc1sxXSwgJ2Rpc2FibGVkJzogKCRjdHJsLmNvbmZpZ3VyYXRpb24uY29uZmlnU3RlcENvdW50ZXIgPCAxKX1cIiAgPlxuICAgICAgICAgICAgICAxXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICB7eydXSVpBUkRfTEFZT1VUJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXB3aXphcmQtc3RlcCBjb2wtbWQtM1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLWNpcmNsZVwiXG4gICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwuZ29Ub1N0ZXAoe2luZGV4OjJ9KVwiXG4gICAgICAgICAgICAgIG5nLWNsYXNzPVwieydidG4tcHJpbWFyeSc6ICRjdHJsLmNvbmZpZ3VyYXRpb24uc3RlcEluZGljYXRvcnNbMl0sICdidG4tZGVmYXVsdCc6ICEkY3RybC5jb25maWd1cmF0aW9uLnN0ZXBJbmRpY2F0b3JzWzJdLCAnZGlzYWJsZWQnOiAoJGN0cmwuY29uZmlndXJhdGlvbi5jb25maWdTdGVwQ291bnRlciA8IDIpfVwiID5cbiAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAge3snV0laQVJEX0NPTlRST0xTJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXB3aXphcmQtc3RlcCBjb2wtbWQtM1wiIG5nLWlmPVwiISRjdHJsLmNvbmZpZ3VyYXRpb24uaXNXaXphcmRcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1jaXJjbGVcIlxuICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLmdvVG9TdGVwKHtpbmRleDozfSlcIlxuICAgICAgICAgICAgICBuZy1jbGFzcz1cInsnYnRuLXByaW1hcnknOiAkY3RybC5jb25maWd1cmF0aW9uLnN0ZXBJbmRpY2F0b3JzWzNdLCAnYnRuLWRlZmF1bHQnOiAhJGN0cmwuY29uZmlndXJhdGlvbi5zdGVwSW5kaWNhdG9yc1szXSwgJ2Rpc2FibGVkJzogKCRjdHJsLmNvbmZpZ3VyYXRpb24uY29uZmlnU3RlcENvdW50ZXIgPCAzKX1cIiA+XG4gICAgICAgICAgICAgIDNcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIHt7J1dJWkFSRF9TQVZFJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBgLFxuICBiaW5kaW5nczoge1xuICAgIGNvbmZpZ3VyYXRpb246ICc8JyxcbiAgICBnb1RvU3RlcDogJyYnXG4gIH0sXG4gIGNvbnRyb2xsZXI6XG4gIGNsYXNzIHN0ZXBJbmRpY2F0b3JDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgfVxuXG4gICAgc3RhdGljIGdldCAkaW5qZWN0KCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL21haW4vc3RlcEluZGljYXRvci9zdGVwd2F5Lm1haW4uc3RlcEluZGljYXRvci5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 33 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayMainStepZeroContent = __webpack_require__(34);\n\nvar _stepwayMainStepZeroCommandPanel = __webpack_require__(35);\n\nvar _stepwayMainStepZeroVisualPanel = __webpack_require__(36);\n\nvar STEP_ZERO_CONTENT_COMPONENT_MODULE = 'stepway.stepZeroContent.module';\n\nexports.default = angular.module(STEP_ZERO_CONTENT_COMPONENT_MODULE, []).component(_stepwayMainStepZeroContent.LINE_STEP_ZERO_CONTENT_COMPONENT, _stepwayMainStepZeroContent.stepZeroContentComponent).component(_stepwayMainStepZeroCommandPanel.STEP_ZERO_COMMAND_PANEL_COMPONENT_NAME, _stepwayMainStepZeroCommandPanel.StepZeroCommandPanelComponent).component(_stepwayMainStepZeroVisualPanel.STEP_ZERO_VISUAL_PANEL_COMPONENT_NAME, _stepwayMainStepZeroVisualPanel.StepZeroVisualPanelComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBaZXJvQ29udGVudC9zdGVwd2F5Lm1haW4uc3RlcFplcm9Db250ZW50Lm1vZHVsZS5qcz85Y2NlIl0sIm5hbWVzIjpbIlNURVBfWkVST19DT05URU5UX0NPTVBPTkVOVF9NT0RVTEUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFJQTs7QUFJQTs7QUFLQSxJQUFNQSxxQ0FBcUMsZ0NBQTNDOztrQkFFZUMsUUFDRUMsTUFERixDQUNTRixrQ0FEVCxFQUM2QyxFQUQ3QyxFQUVFRyxTQUZGLHFIQUdFQSxTQUhGLDBJQUlFQSxTQUpGLHFJIiwiZmlsZSI6IjMzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgc3RlcFplcm9Db250ZW50Q29tcG9uZW50LFxuICBMSU5FX1NURVBfWkVST19DT05URU5UX0NPTVBPTkVOVFxufSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vc3RlcHdheS5tYWluLnN0ZXBaZXJvQ29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgU1RFUF9aRVJPX0NPTU1BTkRfUEFORUxfQ09NUE9ORU5UX05BTUUsXG4gIFN0ZXBaZXJvQ29tbWFuZFBhbmVsQ29tcG9uZW50XG59ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi9TdGVwWmVyb0NvbW1hbmRQYW5lbC9zdGVwd2F5Lm1haW4uU3RlcFplcm9Db21tYW5kUGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIFNURVBfWkVST19WSVNVQUxfUEFORUxfQ09NUE9ORU5UX05BTUUsXG4gIFN0ZXBaZXJvVmlzdWFsUGFuZWxDb21wb25lbnRcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL1N0ZXBaZXJvVmlzdWFsUGFuZWwvc3RlcHdheS5tYWluLlN0ZXBaZXJvVmlzdWFsUGFuZWwuY29tcG9uZW50JztcblxuY29uc3QgU1RFUF9aRVJPX0NPTlRFTlRfQ09NUE9ORU5UX01PRFVMRSA9ICdzdGVwd2F5LnN0ZXBaZXJvQ29udGVudC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShTVEVQX1pFUk9fQ09OVEVOVF9DT01QT05FTlRfTU9EVUxFLCBbXSlcbiAgICAgICAgICAgICAgICAuY29tcG9uZW50KExJTkVfU1RFUF9aRVJPX0NPTlRFTlRfQ09NUE9ORU5ULCBzdGVwWmVyb0NvbnRlbnRDb21wb25lbnQpXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChTVEVQX1pFUk9fQ09NTUFORF9QQU5FTF9DT01QT05FTlRfTkFNRSwgU3RlcFplcm9Db21tYW5kUGFuZWxDb21wb25lbnQpXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChTVEVQX1pFUk9fVklTVUFMX1BBTkVMX0NPTVBPTkVOVF9OQU1FLCBTdGVwWmVyb1Zpc3VhbFBhbmVsQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL21haW4vc3RlcFplcm9Db250ZW50L3N0ZXB3YXkubWFpbi5zdGVwWmVyb0NvbnRlbnQubW9kdWxlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 34 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar LINE_STEP_ZERO_CONTENT_COMPONENT = exports.LINE_STEP_ZERO_CONTENT_COMPONENT = 'stepZeroContent';\n\nvar stepZeroContentComponent = exports.stepZeroContentComponent = {\n template: '\\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n ',\n bindings: {\n configuration: '=',\n addNewline: '&',\n downThisLine: '&',\n upThisLine: '&',\n removeThisLine: '&'\n },\n controller: function () {\n function stepZeroContentController() {\n _classCallCheck(this, stepZeroContentController);\n }\n\n ///////////////////////////////////\n // WHY this function is needed :\n ///////////////////////////////////\n // CASE OF : function with parameter passing from parent to caller through another level component\n // parent -> intermediate component (here) -> caller\n // NOTE : intermediate should call parent function to be sure to pass function parameter upward to parent\n\n\n _createClass(stepZeroContentController, [{\n key: 'setActiveLineNumberParent',\n value: function setActiveLineNumberParent(index) {\n this.setActiveLineNumber({ index: index });\n }\n }, {\n key: 'removeThisLineParent',\n value: function removeThisLineParent(index) {\n this.removeThisLine({ index: index });\n }\n }, {\n key: 'upThisLineParent',\n value: function upThisLineParent(index) {\n this.upThisLine({ index: index });\n }\n }, {\n key: 'downThisLineParent',\n value: function downThisLineParent(index) {\n this.downThisLine({ index: index });\n }\n }], [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return stepZeroContentController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBaZXJvQ29udGVudC9zdGVwd2F5Lm1haW4uc3RlcFplcm9Db250ZW50LmNvbXBvbmVudC5qcz83NjkwIl0sIm5hbWVzIjpbIkxJTkVfU1RFUF9aRVJPX0NPTlRFTlRfQ09NUE9ORU5UIiwic3RlcFplcm9Db250ZW50Q29tcG9uZW50IiwidGVtcGxhdGUiLCJiaW5kaW5ncyIsImNvbmZpZ3VyYXRpb24iLCJhZGROZXdsaW5lIiwiZG93blRoaXNMaW5lIiwidXBUaGlzTGluZSIsInJlbW92ZVRoaXNMaW5lIiwiY29udHJvbGxlciIsImluZGV4Iiwic2V0QWN0aXZlTGluZU51bWJlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLDhFQUFtQyxpQkFBekM7O0FBRUEsSUFBTUMsOERBQTJCO0FBQ3RDQyw4bkJBRHNDO0FBcUJ0Q0MsWUFBVztBQUNUQyxtQkFBNEIsR0FEbkI7QUFFVEMsZ0JBQTRCLEdBRm5CO0FBR1RDLGtCQUE0QixHQUhuQjtBQUlUQyxnQkFBNEIsR0FKbkI7QUFLVEMsb0JBQTRCO0FBTG5CLEdBckIyQjtBQTRCdENDO0FBRUUseUNBQWM7QUFBQTtBQUViOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBWEY7QUFBQTtBQUFBLGdEQVk0QkMsS0FaNUIsRUFZbUM7QUFDL0IsYUFBS0MsbUJBQUwsQ0FBeUIsRUFBQ0QsWUFBRCxFQUF6QjtBQUNEO0FBZEg7QUFBQTtBQUFBLDJDQWdCdUJBLEtBaEJ2QixFQWdCOEI7QUFDMUIsYUFBS0YsY0FBTCxDQUFvQixFQUFDRSxZQUFELEVBQXBCO0FBQ0Q7QUFsQkg7QUFBQTtBQUFBLHVDQW9CbUJBLEtBcEJuQixFQW9CMEI7QUFDdEIsYUFBS0gsVUFBTCxDQUFnQixFQUFDRyxZQUFELEVBQWhCO0FBQ0Q7QUF0Qkg7QUFBQTtBQUFBLHlDQXdCcUJBLEtBeEJyQixFQXdCNEI7QUFDeEIsYUFBS0osWUFBTCxDQUFrQixFQUFDSSxZQUFELEVBQWxCO0FBQ0Q7QUExQkg7QUFBQTtBQUFBLDBCQTRCdUI7QUFDbkIsZUFBTyxFQUFQO0FBQ0Q7QUE5Qkg7O0FBQUE7QUFBQTtBQTVCc0MsQ0FBakMiLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTElORV9TVEVQX1pFUk9fQ09OVEVOVF9DT01QT05FTlQgPSAnc3RlcFplcm9Db250ZW50JztcblxuZXhwb3J0IGNvbnN0IHN0ZXBaZXJvQ29udGVudENvbXBvbmVudCA9IHtcbiAgdGVtcGxhdGUgOiBgXG4gIDxkaXZcbiAgICBjbGFzcz1cImFuaW1hdGUtc3dpdGNoXCJcbiAgICBuZy1zd2l0Y2gtd2hlbj1cImluaXRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cbiAgICAgIDxzdGVwLXplcm8tY29tbWFuZC1wYW5lbFxuICAgICAgICBhZGQtbmV3bGluZT1cIiRjdHJsLmFkZE5ld2xpbmUoKVwiPlxuICAgICAgPC9zdGVwLXplcm8tY29tbWFuZC1wYW5lbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLThcIj5cbiAgICAgIDxzdGVwLXplcm8tdmlzdWFsLXBhbmVsXG4gICAgICAgIGNvbmZpZ3VyYXRpb249XCIkY3RybC5jb25maWd1cmF0aW9uXCJcbiAgICAgICAgZG93bi10aGlzLWxpbmU9XCIkY3RybC5kb3duVGhpc0xpbmVQYXJlbnQoaW5kZXgpXCJcbiAgICAgICAgdXAtdGhpcy1saW5lPVwiJGN0cmwudXBUaGlzTGluZVBhcmVudChpbmRleClcIlxuICAgICAgICByZW1vdmUtdGhpcy1saW5lPVwiJGN0cmwucmVtb3ZlVGhpc0xpbmVQYXJlbnQoaW5kZXgpXCJcbiAgICAgICAgc2V0LWFjdGl2ZS1saW5lLW51bWJlcj1cIiRjdHJsLnNldEFjdGl2ZUxpbmVOdW1iZXJQYXJlbnQoaW5kZXgpXCI+XG4gICAgICA8L3N0ZXAtemVyby12aXN1YWwtcGFuZWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBgLFxuICBiaW5kaW5ncyA6IHtcbiAgICBjb25maWd1cmF0aW9uOiAgICAgICAgICAgICAgJz0nLFxuICAgIGFkZE5ld2xpbmU6ICAgICAgICAgICAgICAgICAnJicsXG4gICAgZG93blRoaXNMaW5lOiAgICAgICAgICAgICAgICcmJyxcbiAgICB1cFRoaXNMaW5lOiAgICAgICAgICAgICAgICAgJyYnLFxuICAgIHJlbW92ZVRoaXNMaW5lOiAgICAgICAgICAgICAnJidcbiAgfSxcbiAgY29udHJvbGxlcjpcbiAgY2xhc3Mgc3RlcFplcm9Db250ZW50Q29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG5cbiAgICB9XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFdIWSB0aGlzIGZ1bmN0aW9uIGlzIG5lZWRlZCA6XG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBDQVNFIE9GIDogIGZ1bmN0aW9uIHdpdGggcGFyYW1ldGVyIHBhc3NpbmcgZnJvbSBwYXJlbnQgdG8gY2FsbGVyIHRocm91Z2ggYW5vdGhlciBsZXZlbCBjb21wb25lbnRcbiAgICAvLyAgICAgICAgICAgIHBhcmVudCAtPiBpbnRlcm1lZGlhdGUgY29tcG9uZW50IChoZXJlKSAtPiBjYWxsZXJcbiAgICAvLyBOT1RFIDogaW50ZXJtZWRpYXRlIHNob3VsZCBjYWxsIHBhcmVudCBmdW5jdGlvbiB0byBiZSBzdXJlIHRvIHBhc3MgZnVuY3Rpb24gcGFyYW1ldGVyIHVwd2FyZCB0byBwYXJlbnRcbiAgICBzZXRBY3RpdmVMaW5lTnVtYmVyUGFyZW50KGluZGV4KSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZUxpbmVOdW1iZXIoe2luZGV4fSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlVGhpc0xpbmVQYXJlbnQoaW5kZXgpIHtcbiAgICAgIHRoaXMucmVtb3ZlVGhpc0xpbmUoe2luZGV4fSk7XG4gICAgfVxuXG4gICAgdXBUaGlzTGluZVBhcmVudChpbmRleCkge1xuICAgICAgdGhpcy51cFRoaXNMaW5lKHtpbmRleH0pO1xuICAgIH1cblxuICAgIGRvd25UaGlzTGluZVBhcmVudChpbmRleCkge1xuICAgICAgdGhpcy5kb3duVGhpc0xpbmUoe2luZGV4fSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCAkaW5qZWN0KCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL21haW4vc3RlcFplcm9Db250ZW50L3N0ZXB3YXkubWFpbi5zdGVwWmVyb0NvbnRlbnQuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 35 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar STEP_ZERO_COMMAND_PANEL_COMPONENT_NAME = exports.STEP_ZERO_COMMAND_PANEL_COMPONENT_NAME = 'stepZeroCommandPanel';\n\nvar StepZeroCommandPanelComponent = exports.StepZeroCommandPanelComponent = {\n template: '\\n \\n
\\n
\\n
\\n \\n \\n {{\\'COMMAND_PANEL\\' | translate}}\\n \\n \\n
\\n
\\n
\\n \\n {{\\'ADD_NEW_LINE\\' | translate}} :\\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n addNewline: '&'\n },\n controller: function () {\n function StepZeroCommandPanelController() {\n _classCallCheck(this, StepZeroCommandPanelController);\n }\n\n _createClass(StepZeroCommandPanelController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return StepZeroCommandPanelController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBaZXJvQ29udGVudC9TdGVwWmVyb0NvbW1hbmRQYW5lbC9zdGVwd2F5Lm1haW4uU3RlcFplcm9Db21tYW5kUGFuZWwuY29tcG9uZW50LmpzP2RmY2QiXSwibmFtZXMiOlsiU1RFUF9aRVJPX0NPTU1BTkRfUEFORUxfQ09NUE9ORU5UX05BTUUiLCJTdGVwWmVyb0NvbW1hbmRQYW5lbENvbXBvbmVudCIsInRlbXBsYXRlIiwiYmluZGluZ3MiLCJhZGROZXdsaW5lIiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLDBGQUF5QyxzQkFBL0M7O0FBRUEsSUFBTUMsd0VBQWdDO0FBQzNDQyx5dkJBRDJDO0FBNkIzQ0MsWUFBVTtBQUNSQyxnQkFBYTtBQURMLEdBN0JpQztBQWdDM0NDO0FBRUUsOENBQWM7QUFBQTtBQUViOztBQUpIO0FBQUE7QUFBQSwwQkFNdUI7QUFDbkIsZUFBTyxFQUFQO0FBQ0Q7QUFSSDs7QUFBQTtBQUFBO0FBaEMyQyxDQUF0QyIsImZpbGUiOiIzNS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTVEVQX1pFUk9fQ09NTUFORF9QQU5FTF9DT01QT05FTlRfTkFNRSA9ICdzdGVwWmVyb0NvbW1hbmRQYW5lbCc7XG5cbmV4cG9ydCBjb25zdCBTdGVwWmVyb0NvbW1hbmRQYW5lbENvbXBvbmVudCA9IHtcbiAgdGVtcGxhdGU6IGBcbiAgPGRpdiBpZD1cImNvbW1hbmRQYW5lbFwiPlxuICAgIDxkaXYgIGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwicGFuZWwtdGl0bGVcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWtleWJvYXJkLW9cIj48L2k+XG4gICAgICAgICAgJm5ic3A7XG4gICAgICAgICAge3snQ09NTUFORF9QQU5FTCcgfCB0cmFuc2xhdGV9fVxuICAgICAgICA8L2gzPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGROZXdMaW5lXCI+XG4gICAgICAgICAgICAgIHt7J0FERF9ORVdfTElORScgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLmFkZE5ld2xpbmUoKVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMgZmEtMXhcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzOiB7XG4gICAgYWRkTmV3bGluZTogICcmJ1xuICB9LFxuICBjb250cm9sbGVyOlxuICBjbGFzcyBTdGVwWmVyb0NvbW1hbmRQYW5lbENvbnRyb2xsZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgfVxuXG4gICAgc3RhdGljIGdldCAkaW5qZWN0KCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL21haW4vc3RlcFplcm9Db250ZW50L1N0ZXBaZXJvQ29tbWFuZFBhbmVsL3N0ZXB3YXkubWFpbi5TdGVwWmVyb0NvbW1hbmRQYW5lbC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 36 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar STEP_ZERO_VISUAL_PANEL_COMPONENT_NAME = exports.STEP_ZERO_VISUAL_PANEL_COMPONENT_NAME = 'stepZeroVisualPanel';\n\nvar StepZeroVisualPanelComponent = exports.StepZeroVisualPanelComponent = {\n template: '\\n \\n
\\n
\\n
\\n \\n \\n {{\\'VISUAL_PANEL\\' | translate}}\\n \\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
1\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n \\n {{line.columns[0].control.type !== \\'none\\' ? line.columns[0].control.type + \\' \\' + line.columns[0].control.subtype || \\'\\' : \\'column 1\\'}}\\n \\n
\\n
\\n
\\n
\\n
1\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n \\n {{line.columns[0].control.type !== \\'none\\' ? line.columns[0].control.type + \\' \\' + line.columns[0].control.subtype || \\'\\' : \\'column 1\\'}}\\n \\n
\\n
\\n \\n {{line.columns[1].control.type !== \\'none\\' ? line.columns[1].control.type + \\' \\' + line.columns[1].control.subtype || \\'\\' : \\'column 2\\'}}\\n \\n
\\n
\\n
\\n
\\n
1\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n \\n {{line.columns[0].control.type !== \\'none\\' ? line.columns[0].control.type + \\' \\' + line.columns[0].control.subtype || \\'\\' : \\'column 1\\'}}\\n \\n
\\n
\\n \\n {{line.columns[1].control.type !== \\'none\\' ? line.columns[1].control.type + \\' \\' + line.columns[1].control.subtype || \\'\\' : \\'column 2\\'}}\\n \\n
\\n
\\n \\n {{line.columns[2].control.type !== \\'none\\' ? line.columns[2].control.type + \\' \\' + line.columns[2].control.subtype || \\'\\' : \\'column 3\\'}}\\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n ',\n bindings: {\n configuration: '=',\n downThisLine: '&',\n upThisLine: '&',\n removeThisLine: '&'\n },\n controller: function () {\n function StepZeroVisualPanelController() {\n _classCallCheck(this, StepZeroVisualPanelController);\n }\n\n _createClass(StepZeroVisualPanelController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return StepZeroVisualPanelController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBaZXJvQ29udGVudC9TdGVwWmVyb1Zpc3VhbFBhbmVsL3N0ZXB3YXkubWFpbi5TdGVwWmVyb1Zpc3VhbFBhbmVsLmNvbXBvbmVudC5qcz8zYmQ0Il0sIm5hbWVzIjpbIlNURVBfWkVST19WSVNVQUxfUEFORUxfQ09NUE9ORU5UX05BTUUiLCJTdGVwWmVyb1Zpc3VhbFBhbmVsQ29tcG9uZW50IiwidGVtcGxhdGUiLCJiaW5kaW5ncyIsImNvbmZpZ3VyYXRpb24iLCJkb3duVGhpc0xpbmUiLCJ1cFRoaXNMaW5lIiwicmVtb3ZlVGhpc0xpbmUiLCJjb250cm9sbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sSUFBTUEsd0ZBQXdDLHFCQUE5Qzs7QUFFQSxJQUFNQyxzRUFBK0I7QUFDMUNDLCtuTUFEMEM7QUE0STFDQyxZQUFVO0FBQ1JDLG1CQUEwQixHQURsQjtBQUVSQyxrQkFBMEIsR0FGbEI7QUFHUkMsZ0JBQTBCLEdBSGxCO0FBSVJDLG9CQUEwQjtBQUpsQixHQTVJZ0M7QUFrSjFDQztBQUVFLDZDQUFjO0FBQUE7QUFFYjs7QUFKSDtBQUFBO0FBQUEsMEJBTXVCO0FBQ25CLGVBQU8sRUFBUDtBQUNEO0FBUkg7O0FBQUE7QUFBQTtBQWxKMEMsQ0FBckMiLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU1RFUF9aRVJPX1ZJU1VBTF9QQU5FTF9DT01QT05FTlRfTkFNRSA9ICdzdGVwWmVyb1Zpc3VhbFBhbmVsJztcblxuZXhwb3J0IGNvbnN0IFN0ZXBaZXJvVmlzdWFsUGFuZWxDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gIDxkaXYgaWQ9XCJ2aXN1YWxQYW5lbFwiPlxuICAgIDxkaXYgIGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwicGFuZWwtdGl0bGVcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZVwiPjwvaT5cbiAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICB7eydWSVNVQUxfUEFORUwnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgICAgPCEtLSBsaW5lcyAtLT5cbiAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cFwiPlxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW1cIlxuICAgICAgICAgICAgbmctcmVwZWF0PVwibGluZSBpbiAkY3RybC5jb25maWd1cmF0aW9uLmxpbmVzIHRyYWNrIGJ5ICRpbmRleFwiPlxuICAgICAgICAgICAgPCEtLSBjb2x1bW5zIC0tPlxuICAgICAgICAgICAgPGRpdiBuZy1zd2l0Y2ggb249XCJsaW5lLmNvbHVtbnMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJvdyBsaW5lc0xpc3RcIlxuICAgICAgICAgICAgICAgIG5nLXN3aXRjaC13aGVuPVwiMVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLW1kLTEyIGxpbmVDb21tYW5kQnV0dG9uc1wiXG4gICAgICAgICAgICAgICAgICBuZy1zaG93PVwiJGN0cmwuY29uZmlndXJhdGlvbi5saW5lcy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgbmctaGlkZT1cIiRpbmRleD09MFwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwudXBUaGlzTGluZSh7aW5kZXg6ICRpbmRleH0pXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctdXBcIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXdhcm5pbmdcIlxuICAgICAgICAgICAgICAgICAgICBuZy1oaWRlPVwiJGluZGV4PT0oJGN0cmwuY29uZmlndXJhdGlvbi5saW5lcy5sZW5ndGgtMSlcIlxuICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLmRvd25UaGlzTGluZSh7aW5kZXg6ICRpbmRleH0pXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93blwiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIHB1bGwtcmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLnJlbW92ZVRoaXNMaW5lKHtpbmRleDogJGluZGV4fSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiB3ZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGcgYnRuLWJsb2NrICBidG4tZGVmYXVsdCBkaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7bGluZS5jb2x1bW5zWzBdLmNvbnRyb2wudHlwZSAhPT0gJ25vbmUnICA/IGxpbmUuY29sdW1uc1swXS5jb250cm9sLnR5cGUgKyAnICcgKyBsaW5lLmNvbHVtbnNbMF0uY29udHJvbC5zdWJ0eXBlIHx8ICcnIDogJ2NvbHVtbiAxJ319XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgbGluZXNMaXN0XCJcbiAgICAgICAgICAgICAgICBuZy1zd2l0Y2gtd2hlbj1cIjJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1tZC0xMiBsaW5lQ29tbWFuZEJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgICAgbmctc2hvdz1cIiRjdHJsLmNvbmZpZ3VyYXRpb24ubGluZXMubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4td2FybmluZ1wiXG4gICAgICAgICAgICAgICAgICAgIG5nLWhpZGU9XCIkaW5kZXg9PTBcIlxuICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLnVwVGhpc0xpbmUoe2luZGV4OiAkaW5kZXh9KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LXVwXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgbmctaGlkZT1cIiRpbmRleD09KCRjdHJsLmNvbmZpZ3VyYXRpb24ubGluZXMubGVuZ3RoLTEpXCJcbiAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5kb3duVGhpc0xpbmUoe2luZGV4OiAkaW5kZXh9KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LWRvd25cIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBwdWxsLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5yZW1vdmVUaGlzTGluZSh7aW5kZXg6ICRpbmRleH0pXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiB3ZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxnIGJ0bi1ibG9jayAgYnRuLWRlZmF1bHQgZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bGluZS5jb2x1bW5zWzBdLmNvbnRyb2wudHlwZSAhPT0gJ25vbmUnICA/IGxpbmUuY29sdW1uc1swXS5jb250cm9sLnR5cGUgKyAnICcgKyBsaW5lLmNvbHVtbnNbMF0uY29udHJvbC5zdWJ0eXBlIHx8ICcnIDogJ2NvbHVtbiAxJ319XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgd2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tYmxvY2sgIGJ0bi1kZWZhdWx0IGRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xpbmUuY29sdW1uc1sxXS5jb250cm9sLnR5cGUgIT09ICdub25lJyAgPyBsaW5lLmNvbHVtbnNbMV0uY29udHJvbC50eXBlICsgJyAnICsgbGluZS5jb2x1bW5zWzFdLmNvbnRyb2wuc3VidHlwZSB8fCAnJyA6ICdjb2x1bW4gMid9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm93IGxpbmVzTGlzdFwiXG4gICAgICAgICAgICAgICAgbmctc3dpdGNoLXdoZW49XCIzXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbWQtMTIgbGluZUNvbW1hbmRCdXR0b25zXCJcbiAgICAgICAgICAgICAgICAgIG5nLXNob3c9XCIkY3RybC5jb25maWd1cmF0aW9uLmxpbmVzLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXdhcm5pbmdcIlxuICAgICAgICAgICAgICAgICAgICBuZy1oaWRlPVwiJGluZGV4PT0wXCJcbiAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC51cFRoaXNMaW5lKHtpbmRleDogJGluZGV4fSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy11cFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4td2FybmluZ1wiXG4gICAgICAgICAgICAgICAgICAgIG5nLWhpZGU9XCIkaW5kZXg9PSgkY3RybC5jb25maWd1cmF0aW9uLmxpbmVzLmxlbmd0aC0xKVwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwuZG93blRoaXNMaW5lKHtpbmRleDogJGluZGV4fSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1kb3duXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcbiAgICAgICAgICAgICAgICAgICAgcHVsbC1yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwucmVtb3ZlVGhpc0xpbmUoe2luZGV4OiAkaW5kZXh9KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoLW9cIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgd2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tYmxvY2sgIGJ0bi1kZWZhdWx0IGRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3tsaW5lLmNvbHVtbnNbMF0uY29udHJvbC50eXBlICE9PSAnbm9uZScgID8gbGluZS5jb2x1bW5zWzBdLmNvbnRyb2wudHlwZSArICcgJyArIGxpbmUuY29sdW1uc1swXS5jb250cm9sLnN1YnR5cGUgfHwgJycgOiAnY29sdW1uIDEnfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCB3ZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGcgYnRuLWJsb2NrICBidG4tZGVmYXVsdCBkaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7bGluZS5jb2x1bW5zWzFdLmNvbnRyb2wudHlwZSAhPT0gJ25vbmUnICA/IGxpbmUuY29sdW1uc1sxXS5jb250cm9sLnR5cGUgKyAnICcgKyBsaW5lLmNvbHVtbnNbMV0uY29udHJvbC5zdWJ0eXBlIHx8ICcnIDogJ2NvbHVtbiAyJ319XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCB3ZWxsXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tYmxvY2sgIGJ0bi1kZWZhdWx0IGRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7bGluZS5jb2x1bW5zWzJdLmNvbnRyb2wudHlwZSAhPT0gJ25vbmUnICA/IGxpbmUuY29sdW1uc1syXS5jb250cm9sLnR5cGUgKyAnICcgKyBsaW5lLmNvbHVtbnNbMl0uY29udHJvbC5zdWJ0eXBlIHx8ICcnIDogJ2NvbHVtbiAzJ319XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBgLFxuICBiaW5kaW5nczoge1xuICAgIGNvbmZpZ3VyYXRpb246ICAgICAgICAgICAgJz0nLFxuICAgIGRvd25UaGlzTGluZTogICAgICAgICAgICAgJyYnLFxuICAgIHVwVGhpc0xpbmU6ICAgICAgICAgICAgICAgJyYnLFxuICAgIHJlbW92ZVRoaXNMaW5lOiAgICAgICAgICAgJyYnXG4gIH0sXG4gIGNvbnRyb2xsZXI6XG4gIGNsYXNzIFN0ZXBaZXJvVmlzdWFsUGFuZWxDb250cm9sbGVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgJGluamVjdCgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBaZXJvQ29udGVudC9TdGVwWmVyb1Zpc3VhbFBhbmVsL3N0ZXB3YXkubWFpbi5TdGVwWmVyb1Zpc3VhbFBhbmVsLmNvbXBvbmVudC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 37 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayMainStepOneContent = __webpack_require__(38);\n\nvar _stepwayMainStepOneCommandPanel = __webpack_require__(39);\n\nvar _stepwayMainStepOneVisualPanel = __webpack_require__(40);\n\nvar STEP_ONE_CONTENT_COMPONENT_MODULE = 'stepway.stepOneContent.module';\n\nexports.default = angular.module(STEP_ONE_CONTENT_COMPONENT_MODULE, []).component(_stepwayMainStepOneContent.LINE_STEP_CONTENT_COMPONENT, _stepwayMainStepOneContent.stepOneContentComponent).component(_stepwayMainStepOneCommandPanel.STEP_ONE_COMMAND_PANEL_COMPONENT_NAME, _stepwayMainStepOneCommandPanel.StepOneCommandPanelComponent).component(_stepwayMainStepOneVisualPanel.STEP_ONE_VISUAL_PANEL_COMPONENT_NAME, _stepwayMainStepOneVisualPanel.StepOneVisualPanelComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBPbmVDb250ZW50L3N0ZXB3YXkubWFpbi5zdGVwT25lQ29udGVudC5tb2R1bGUuanM/YjA1ZiJdLCJuYW1lcyI6WyJTVEVQX09ORV9DT05URU5UX0NPTVBPTkVOVF9NT0RVTEUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFJQTs7QUFJQTs7QUFNQSxJQUFNQSxvQ0FBb0MsK0JBQTFDOztrQkFFZUMsUUFDRUMsTUFERixDQUNTRixpQ0FEVCxFQUM0QyxFQUQ1QyxFQUVFRyxTQUZGLDZHQUdFQSxTQUhGLHNJQUlFQSxTQUpGLGlJIiwiZmlsZSI6IjM3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgc3RlcE9uZUNvbnRlbnRDb21wb25lbnQsXG4gIExJTkVfU1RFUF9DT05URU5UX0NPTVBPTkVOVFxufSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vc3RlcHdheS5tYWluLnN0ZXBPbmVDb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBTVEVQX09ORV9DT01NQU5EX1BBTkVMX0NPTVBPTkVOVF9OQU1FLFxuICBTdGVwT25lQ29tbWFuZFBhbmVsQ29tcG9uZW50XG59ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi9TdGVwT25lQ29tbWFuZFBhbmVsL3N0ZXB3YXkubWFpbi5TdGVwT25lQ29tbWFuZFBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBTVEVQX09ORV9WSVNVQUxfUEFORUxfQ09NUE9ORU5UX05BTUUsXG4gIFN0ZXBPbmVWaXN1YWxQYW5lbENvbXBvbmVudFxufSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vU3RlcE9uZVZpc3VhbFBhbmVsL3N0ZXB3YXkubWFpbi5TdGVwT25lVmlzdWFsUGFuZWwuY29tcG9uZW50JztcblxuXG5jb25zdCBTVEVQX09ORV9DT05URU5UX0NPTVBPTkVOVF9NT0RVTEUgPSAnc3RlcHdheS5zdGVwT25lQ29udGVudC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShTVEVQX09ORV9DT05URU5UX0NPTVBPTkVOVF9NT0RVTEUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoTElORV9TVEVQX0NPTlRFTlRfQ09NUE9ORU5ULCBzdGVwT25lQ29udGVudENvbXBvbmVudClcbiAgICAgICAgICAgICAgICAuY29tcG9uZW50KFNURVBfT05FX0NPTU1BTkRfUEFORUxfQ09NUE9ORU5UX05BTUUsIFN0ZXBPbmVDb21tYW5kUGFuZWxDb21wb25lbnQpXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChTVEVQX09ORV9WSVNVQUxfUEFORUxfQ09NUE9ORU5UX05BTUUsIFN0ZXBPbmVWaXN1YWxQYW5lbENvbXBvbmVudCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBPbmVDb250ZW50L3N0ZXB3YXkubWFpbi5zdGVwT25lQ29udGVudC5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 38 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar LINE_STEP_CONTENT_COMPONENT = 'stepOneContent';\n\nvar stepOneContentComponent = exports.stepOneContentComponent = {\n template: '\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n ',\n bindings: {\n configuration: '=',\n increaseNumberOfColumns: '&',\n decreaseNumberOfColumns: '&',\n setActiveLineNumber: '&'\n },\n controller: function () {\n function stepOneContentController() {\n _classCallCheck(this, stepOneContentController);\n }\n\n ///////////////////////////////////\n // WHY this function is needed :\n ///////////////////////////////////\n // CASE OF : function with parameter passing from parent to caller through another level component\n // parent -> intermediate component (here) -> caller\n // NOTE : intermediate should call parent function to be sure to pass function parameter upward to parent\n\n\n _createClass(stepOneContentController, [{\n key: 'setActiveLineNumberParent',\n value: function setActiveLineNumberParent(index) {\n this.setActiveLineNumber({ index: index });\n }\n }], [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return stepOneContentController;\n }()\n};\n\nexports.default = stepOneContentComponent;\nexports.LINE_STEP_CONTENT_COMPONENT = LINE_STEP_CONTENT_COMPONENT;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBPbmVDb250ZW50L3N0ZXB3YXkubWFpbi5zdGVwT25lQ29udGVudC5jb21wb25lbnQuanM/OTkyZSJdLCJuYW1lcyI6WyJMSU5FX1NURVBfQ09OVEVOVF9DT01QT05FTlQiLCJzdGVwT25lQ29udGVudENvbXBvbmVudCIsInRlbXBsYXRlIiwiYmluZGluZ3MiLCJjb25maWd1cmF0aW9uIiwiaW5jcmVhc2VOdW1iZXJPZkNvbHVtbnMiLCJkZWNyZWFzZU51bWJlck9mQ29sdW1ucyIsInNldEFjdGl2ZUxpbmVOdW1iZXIiLCJjb250cm9sbGVyIiwiaW5kZXgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNQSw4QkFBOEIsZ0JBQXBDOztBQUVPLElBQU1DLDREQUEwQjtBQUNyQ0MsNGxCQURxQztBQW9CckNDLFlBQVc7QUFDVEMsbUJBQTRCLEdBRG5CO0FBRVRDLDZCQUE0QixHQUZuQjtBQUdUQyw2QkFBNEIsR0FIbkI7QUFJVEMseUJBQXNCO0FBSmIsR0FwQjBCO0FBMEJyQ0M7QUFFRSx3Q0FBYztBQUFBO0FBRWI7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFYRjtBQUFBO0FBQUEsZ0RBWTRCQyxLQVo1QixFQVltQztBQUMvQixhQUFLRixtQkFBTCxDQUF5QixFQUFFRSxPQUFPQSxLQUFULEVBQXpCO0FBQ0Q7QUFkSDtBQUFBO0FBQUEsMEJBZ0J1QjtBQUNuQixlQUFPLEVBQVA7QUFDRDtBQWxCSDs7QUFBQTtBQUFBO0FBMUJxQyxDQUFoQzs7a0JBZ0RRUix1QjtRQUViRCwyQixHQUFBQSwyQiIsImZpbGUiOiIzOC5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IExJTkVfU1RFUF9DT05URU5UX0NPTVBPTkVOVCA9ICdzdGVwT25lQ29udGVudCc7XG5cbmV4cG9ydCBjb25zdCBzdGVwT25lQ29udGVudENvbXBvbmVudCA9IHtcbiAgdGVtcGxhdGUgOiBgXG4gIDxkaXZcbiAgICBjbGFzcz1cImFuaW1hdGUtc3dpdGNoXCJcbiAgICBuZy1zd2l0Y2gtd2hlbj1cImZpcnN0XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICA8c3RlcC1vbmUtY29tbWFuZC1wYW5lbFxuICAgICAgICBjb25maWd1cmF0aW9uPVwiJGN0cmwuY29uZmlndXJhdGlvblwiXG4gICAgICAgIGluY3JlYXNlLW51bWJlci1vZi1jb2x1bW5zPVwiJGN0cmwuaW5jcmVhc2VOdW1iZXJPZkNvbHVtbnMoKVwiXG4gICAgICAgIGRlY3JlYXNlLW51bWJlci1vZi1jb2x1bW5zPVwiJGN0cmwuZGVjcmVhc2VOdW1iZXJPZkNvbHVtbnMoKVwiPlxuICAgICAgPC9zdGVwLW9uZS1jb21tYW5kLXBhbmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOFwiPlxuICAgICAgPHN0ZXAtb25lLXZpc3VhbC1wYW5lbFxuICAgICAgICBjb25maWd1cmF0aW9uPVwiJGN0cmwuY29uZmlndXJhdGlvblwiXG4gICAgICAgIHNldC1hY3RpdmUtbGluZS1udW1iZXI9XCIkY3RybC5zZXRBY3RpdmVMaW5lTnVtYmVyUGFyZW50KGluZGV4KVwiPlxuICAgICAgPC9zdGVwLW9uZS12aXN1YWwtcGFuZWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBgLFxuICBiaW5kaW5ncyA6IHtcbiAgICBjb25maWd1cmF0aW9uOiAgICAgICAgICAgICAgJz0nLFxuICAgIGluY3JlYXNlTnVtYmVyT2ZDb2x1bW5zOiAgICAnJicsXG4gICAgZGVjcmVhc2VOdW1iZXJPZkNvbHVtbnM6ICAgICcmJyxcbiAgICBzZXRBY3RpdmVMaW5lTnVtYmVyOiAgJyYnXG4gIH0sXG4gIGNvbnRyb2xsZXI6XG4gIGNsYXNzIHN0ZXBPbmVDb250ZW50Q29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG5cbiAgICB9XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFdIWSB0aGlzIGZ1bmN0aW9uIGlzIG5lZWRlZCA6XG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBDQVNFIE9GIDogIGZ1bmN0aW9uIHdpdGggcGFyYW1ldGVyIHBhc3NpbmcgZnJvbSBwYXJlbnQgdG8gY2FsbGVyIHRocm91Z2ggYW5vdGhlciBsZXZlbCBjb21wb25lbnRcbiAgICAvLyAgICAgICAgICAgIHBhcmVudCAtPiBpbnRlcm1lZGlhdGUgY29tcG9uZW50IChoZXJlKSAtPiBjYWxsZXJcbiAgICAvLyBOT1RFIDogaW50ZXJtZWRpYXRlIHNob3VsZCBjYWxsIHBhcmVudCBmdW5jdGlvbiB0byBiZSBzdXJlIHRvIHBhc3MgZnVuY3Rpb24gcGFyYW1ldGVyIHVwd2FyZCB0byBwYXJlbnRcbiAgICBzZXRBY3RpdmVMaW5lTnVtYmVyUGFyZW50KGluZGV4KSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZUxpbmVOdW1iZXIoeyBpbmRleDogaW5kZXggfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCAkaW5qZWN0KCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgc3RlcE9uZUNvbnRlbnRDb21wb25lbnQ7XG5leHBvcnQge1xuICBMSU5FX1NURVBfQ09OVEVOVF9DT01QT05FTlRcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBPbmVDb250ZW50L3N0ZXB3YXkubWFpbi5zdGVwT25lQ29udGVudC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 39 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar STEP_ONE_COMMAND_PANEL_COMPONENT_NAME = exports.STEP_ONE_COMMAND_PANEL_COMPONENT_NAME = 'stepOneCommandPanel';\n\nvar StepOneCommandPanelComponent = exports.StepOneCommandPanelComponent = {\n template: '\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'COMMAND_PANEL\\' | translate}}\\n \\n \\n
\\n
\\n
\\n
\\n \\n - {{\\'SELECTED_LINE\\' | translate}} -\\n \\n \\n \\n {{\\'NUMBER_OF_COLUMN\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n \\n {{$ctrl.configuration.lines[$ctrl.configuration.activeLine -1].columns.length}}\\n \\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n configuration: '=',\n increaseNumberOfColumns: '&',\n decreaseNumberOfColumns: '&'\n },\n controller: function () {\n function StepOneCommandPanelController() {\n _classCallCheck(this, StepOneCommandPanelController);\n }\n\n _createClass(StepOneCommandPanelController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return StepOneCommandPanelController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBPbmVDb250ZW50L1N0ZXBPbmVDb21tYW5kUGFuZWwvc3RlcHdheS5tYWluLlN0ZXBPbmVDb21tYW5kUGFuZWwuY29tcG9uZW50LmpzPzIwYjgiXSwibmFtZXMiOlsiU1RFUF9PTkVfQ09NTUFORF9QQU5FTF9DT01QT05FTlRfTkFNRSIsIlN0ZXBPbmVDb21tYW5kUGFuZWxDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwiY29uZmlndXJhdGlvbiIsImluY3JlYXNlTnVtYmVyT2ZDb2x1bW5zIiwiZGVjcmVhc2VOdW1iZXJPZkNvbHVtbnMiLCJjb250cm9sbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sSUFBTUEsd0ZBQXdDLHFCQUE5Qzs7QUFFQSxJQUFNQyxzRUFBK0I7QUFDMUNDLGdvREFEMEM7QUFpRDFDQyxZQUFVO0FBQ1JDLG1CQUEwQixHQURsQjtBQUVSQyw2QkFBMEIsR0FGbEI7QUFHUkMsNkJBQTBCO0FBSGxCLEdBakRnQztBQXNEMUNDO0FBRUUsNkNBQWM7QUFBQTtBQUViOztBQUpIO0FBQUE7QUFBQSwwQkFNdUI7QUFDbkIsZUFBTyxFQUFQO0FBQ0Q7QUFSSDs7QUFBQTtBQUFBO0FBdEQwQyxDQUFyQyIsImZpbGUiOiIzOS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTVEVQX09ORV9DT01NQU5EX1BBTkVMX0NPTVBPTkVOVF9OQU1FID0gJ3N0ZXBPbmVDb21tYW5kUGFuZWwnO1xuXG5leHBvcnQgY29uc3QgU3RlcE9uZUNvbW1hbmRQYW5lbENvbXBvbmVudCA9IHtcbiAgdGVtcGxhdGU6IGBcbiAgPGRpdiBpZD1cImNvbW1hbmRQYW5lbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGluZ1wiPlxuICAgICAgICA8aDMgY2xhc3M9XCJwYW5lbC10aXRsZVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEta2V5Ym9hcmQtb1wiPjwvaT5cbiAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICB7eydDT01NQU5EX1BBTkVMJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgIDwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICA8aDQgY2xhc3M9XCJudW1iZXJPZmNvbHVtc1RleHQgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGk+XG4gICAgICAgICAgICAgICAgLSB7eydTRUxFQ1RFRF9MSU5FJyB8IHRyYW5zbGF0ZX19IC1cbiAgICAgICAgICAgICAgPC9pPlxuICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgIDxoNCBjbGFzcz1cIm51bWJlck9mY29sdW1zVGV4dCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICB7eydOVU1CRVJfT0ZfQ09MVU1OJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0yIGNvbC14cy1vZmZzZXQtMyBjb2wtc20tMiBjb2wtc20tb2Zmc2V0LTMgY29sLW1kLTIgY29sLW1kLW9mZnNldC0zXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB1bGwtcmlnaHQgYnRuTWludXNDb2x1bW5zXCJcbiAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5kZWNyZWFzZU51bWJlck9mQ29sdW1ucygpXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtbWludXMgZmEtMXhcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTIgY29sLXNtLTIgY29sLW1kLTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibnVtYmVyT2ZDb2x1bW5zTGFiZWwgXCI+XG4gICAgICAgICAgICAgIHt7JGN0cmwuY29uZmlndXJhdGlvbi5saW5lc1skY3RybC5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUgLTFdLmNvbHVtbnMubGVuZ3RofX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTIgY29sLXNtLTIgY29sLW1kLTJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHVsbC1sZWZ0IGJ0bkFkZENvbHVtbnNcIlxuICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLmluY3JlYXNlTnVtYmVyT2ZDb2x1bW5zKClcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzIGZhLTF4XCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBgLFxuICBiaW5kaW5nczoge1xuICAgIGNvbmZpZ3VyYXRpb246ICAgICAgICAgICAgJz0nLFxuICAgIGluY3JlYXNlTnVtYmVyT2ZDb2x1bW5zOiAgJyYnLFxuICAgIGRlY3JlYXNlTnVtYmVyT2ZDb2x1bW5zOiAgJyYnXG4gIH0sXG4gIGNvbnRyb2xsZXI6XG4gIGNsYXNzIFN0ZXBPbmVDb21tYW5kUGFuZWxDb250cm9sbGVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgJGluamVjdCgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBPbmVDb250ZW50L1N0ZXBPbmVDb21tYW5kUGFuZWwvc3RlcHdheS5tYWluLlN0ZXBPbmVDb21tYW5kUGFuZWwuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 40 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar STEP_ONE_VISUAL_PANEL_COMPONENT_NAME = exports.STEP_ONE_VISUAL_PANEL_COMPONENT_NAME = 'stepOneVisualPanel';\n\nvar StepOneVisualPanelComponent = exports.StepOneVisualPanelComponent = {\n template: '\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'VISUAL_PANEL\\' | translate}}\\n \\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
1\">\\n \\n \\n \\n \\n
\\n
\\n
\\n \\n {{line.columns[0].control.type !== \\'none\\' ? line.columns[0].control.type + \\' \\' + line.columns[0].control.subtype || \\'\\' : \\'column 1\\'}}\\n \\n
\\n
\\n
\\n
\\n
1\">\\n \\n \\n \\n \\n
\\n
\\n
\\n \\n {{line.columns[0].control.type !== \\'none\\' ? line.columns[0].control.type + \\' \\' + line.columns[0].control.subtype || \\'\\' : \\'column 1\\'}}\\n \\n
\\n
\\n \\n {{line.columns[1].control.type !== \\'none\\' ? line.columns[1].control.type + \\' \\' + line.columns[1].control.subtype || \\'\\' : \\'column 2\\'}}\\n \\n
\\n
\\n
\\n
\\n
1\">\\n \\n \\n \\n \\n
\\n
\\n
\\n \\n {{line.columns[0].control.type !== \\'none\\' ? line.columns[0].control.type + \\' \\' + line.columns[0].control.subtype || \\'\\' : \\'column 1\\'}}\\n \\n
\\n
\\n \\n {{line.columns[1].control.type !== \\'none\\' ? line.columns[1].control.type + \\' \\' + line.columns[1].control.subtype || \\'\\' : \\'column 2\\'}}\\n \\n
\\n
\\n \\n {{line.columns[2].control.type !== \\'none\\' ? line.columns[2].control.type + \\' \\' + line.columns[2].control.subtype || \\'\\' : \\'column 3\\'}}\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n ',\n bindings: {\n configuration: '=',\n setActiveLineNumber: '&'\n },\n controller: function () {\n function StepOneVisualPanelController() {\n _classCallCheck(this, StepOneVisualPanelController);\n }\n\n _createClass(StepOneVisualPanelController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return StepOneVisualPanelController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBPbmVDb250ZW50L1N0ZXBPbmVWaXN1YWxQYW5lbC9zdGVwd2F5Lm1haW4uU3RlcE9uZVZpc3VhbFBhbmVsLmNvbXBvbmVudC5qcz81MDQ4Il0sIm5hbWVzIjpbIlNURVBfT05FX1ZJU1VBTF9QQU5FTF9DT01QT05FTlRfTkFNRSIsIlN0ZXBPbmVWaXN1YWxQYW5lbENvbXBvbmVudCIsInRlbXBsYXRlIiwiYmluZGluZ3MiLCJjb25maWd1cmF0aW9uIiwic2V0QWN0aXZlTGluZU51bWJlciIsImNvbnRyb2xsZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBTyxJQUFNQSxzRkFBdUMsb0JBQTdDOztBQUVBLElBQU1DLG9FQUE4QjtBQUN6Q0MsZy9LQUR5QztBQWlIekNDLFlBQVU7QUFDUkMsbUJBQTBCLEdBRGxCO0FBRVJDLHlCQUEwQjtBQUZsQixHQWpIK0I7QUFxSHpDQztBQUVFLDRDQUFjO0FBQUE7QUFFYjs7QUFKSDtBQUFBO0FBQUEsMEJBTXVCO0FBQ25CLGVBQU8sRUFBUDtBQUNEO0FBUkg7O0FBQUE7QUFBQTtBQXJIeUMsQ0FBcEMiLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU1RFUF9PTkVfVklTVUFMX1BBTkVMX0NPTVBPTkVOVF9OQU1FID0gJ3N0ZXBPbmVWaXN1YWxQYW5lbCc7XG5cbmV4cG9ydCBjb25zdCBTdGVwT25lVmlzdWFsUGFuZWxDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gIDxkaXYgaWQ9XCJ2aXN1YWxQYW5lbFwiPlxuICAgIDxkaXYgIGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwicGFuZWwtdGl0bGVcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZVwiPjwvaT5cbiAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICB7eydWSVNVQUxfUEFORUwnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgICAgPCEtLSBsaW5lcyAvIGNvbHVtbnMgLS0+XG4gICAgICAgIDx1bCBjbGFzcz1cImxpc3QtZ3JvdXBcIj5cbiAgICAgICAgICA8bGlcbiAgICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtXCJcbiAgICAgICAgICAgIG5nLXJlcGVhdD1cImxpbmUgaW4gJGN0cmwuY29uZmlndXJhdGlvbi5saW5lcyB0cmFjayBieSAkaW5kZXhcIj5cbiAgICAgICAgICAgIDwhLS0gY29sdW1ucyAtLT5cbiAgICAgICAgICAgIDxkaXYgbmctc3dpdGNoIG9uPVwibGluZS5jb2x1bW5zLmxlbmd0aFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgbGluZXNMaXN0XCJcbiAgICAgICAgICAgICAgICBuZy1zd2l0Y2gtd2hlbj1cIjFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1tZC0xMiBsaW5lQ29tbWFuZEJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgICAgbmctc2hvdz1cIiRjdHJsLmNvbmZpZ3VyYXRpb24ubGluZXMubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWNsYXNzPVwieydidG4td2FybmluZyc6KCRpbmRleCArIDEpICE9PSAkY3RybC5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUsICdidG4tc3VjY2Vzcyc6ICgkaW5kZXggKyAxKSA9PT0gJGN0cmwuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lfVwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwuc2V0QWN0aXZlTGluZU51bWJlcih7aW5kZXg6ICRpbmRleCArIDF9KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFcIlxuICAgICAgICAgICAgICAgICAgICAgIG5nLWNsYXNzPVwieydmYS1zcXVhcmUtbyc6ICgkaW5kZXggKyAxKSAhPT0gJGN0cmwuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lLCAnZmEtY2hlY2stc3F1YXJlLW8nOiAoJGluZGV4ICsgMSkgPT09ICRjdHJsLmNvbmZpZ3VyYXRpb24uYWN0aXZlTGluZX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiB3ZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxnIGJ0bi1ibG9jayAgYnRuLWRlZmF1bHQgZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7e2xpbmUuY29sdW1uc1swXS5jb250cm9sLnR5cGUgIT09ICdub25lJyAgPyBsaW5lLmNvbHVtbnNbMF0uY29udHJvbC50eXBlICsgJyAnICsgbGluZS5jb2x1bW5zWzBdLmNvbnRyb2wuc3VidHlwZSB8fCAnJyA6ICdjb2x1bW4gMSd9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicm93IGxpbmVzTGlzdFwiXG4gICAgICAgICAgICAgICAgbmctc3dpdGNoLXdoZW49XCIyXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbWQtMTIgbGluZUNvbW1hbmRCdXR0b25zXCJcbiAgICAgICAgICAgICAgICAgIG5nLXNob3c9XCIkY3RybC5jb25maWd1cmF0aW9uLmxpbmVzLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgICAgICAgICBuZy1jbGFzcz1cInsnYnRuLXdhcm5pbmcnOigkaW5kZXggKyAxKSAhPT0gJGN0cmwuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lLCAnYnRuLXN1Y2Nlc3MnOiAoJGluZGV4ICsgMSkgPT09ICRjdHJsLmNvbmZpZ3VyYXRpb24uYWN0aXZlTGluZX1cIlxuICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLnNldEFjdGl2ZUxpbmVOdW1iZXIoe2luZGV4OiAkaW5kZXggKyAxfSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhXCJcbiAgICAgICAgICAgICAgICAgICAgICBuZy1jbGFzcz1cInsnZmEtc3F1YXJlLW8nOiAoJGluZGV4ICsgMSkgIT09ICRjdHJsLmNvbmZpZ3VyYXRpb24uYWN0aXZlTGluZSwgJ2ZhLWNoZWNrLXNxdWFyZS1vJzogKCRpbmRleCArIDEpID09PSAkY3RybC5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmV9XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiB3ZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxnIGJ0bi1ibG9jayAgYnRuLWRlZmF1bHQgZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7e2xpbmUuY29sdW1uc1swXS5jb250cm9sLnR5cGUgIT09ICdub25lJyAgPyBsaW5lLmNvbHVtbnNbMF0uY29udHJvbC50eXBlICsgJyAnICsgbGluZS5jb2x1bW5zWzBdLmNvbnRyb2wuc3VidHlwZSB8fCAnJyA6ICdjb2x1bW4gMSd9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHdlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGcgYnRuLWJsb2NrICBidG4tZGVmYXVsdCBkaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7bGluZS5jb2x1bW5zWzFdLmNvbnRyb2wudHlwZSAhPT0gJ25vbmUnICA/IGxpbmUuY29sdW1uc1sxXS5jb250cm9sLnR5cGUgKyAnICcgKyBsaW5lLmNvbHVtbnNbMV0uY29udHJvbC5zdWJ0eXBlIHx8ICcnIDogJ2NvbHVtbiAyJ319XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgbGluZXNMaXN0XCJcbiAgICAgICAgICAgICAgICBuZy1zd2l0Y2gtd2hlbj1cIjNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1tZC0xMiBsaW5lQ29tbWFuZEJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgICAgbmctc2hvdz1cIiRjdHJsLmNvbmZpZ3VyYXRpb24ubGluZXMubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWNsYXNzPVwieydidG4td2FybmluZyc6KCRpbmRleCArIDEpICE9PSAkY3RybC5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUsICdidG4tc3VjY2Vzcyc6ICgkaW5kZXggKyAxKSA9PT0gJGN0cmwuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lfVwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwuc2V0QWN0aXZlTGluZU51bWJlcih7aW5kZXg6ICRpbmRleCArIDF9KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFcIlxuICAgICAgICAgICAgICAgICAgICAgIG5nLWNsYXNzPVwieydmYS1zcXVhcmUtbyc6ICgkaW5kZXggKyAxKSAhPT0gJGN0cmwuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lLCAnZmEtY2hlY2stc3F1YXJlLW8nOiAoJGluZGV4ICsgMSkgPT09ICRjdHJsLmNvbmZpZ3VyYXRpb24uYWN0aXZlTGluZX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHdlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGcgYnRuLWJsb2NrICBidG4tZGVmYXVsdCBkaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7bGluZS5jb2x1bW5zWzBdLmNvbnRyb2wudHlwZSAhPT0gJ25vbmUnICA/IGxpbmUuY29sdW1uc1swXS5jb250cm9sLnR5cGUgKyAnICcgKyBsaW5lLmNvbHVtbnNbMF0uY29udHJvbC5zdWJ0eXBlIHx8ICcnIDogJ2NvbHVtbiAxJ319XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgd2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tYmxvY2sgIGJ0bi1kZWZhdWx0IGRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3tsaW5lLmNvbHVtbnNbMV0uY29udHJvbC50eXBlICE9PSAnbm9uZScgID8gbGluZS5jb2x1bW5zWzFdLmNvbnRyb2wudHlwZSArICcgJyArIGxpbmUuY29sdW1uc1sxXS5jb250cm9sLnN1YnR5cGUgfHwgJycgOiAnY29sdW1uIDInfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCB3ZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxnIGJ0bi1ibG9jayAgYnRuLWRlZmF1bHQgZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7e2xpbmUuY29sdW1uc1syXS5jb250cm9sLnR5cGUgIT09ICdub25lJyAgPyBsaW5lLmNvbHVtbnNbMl0uY29udHJvbC50eXBlICsgJyAnICsgbGluZS5jb2x1bW5zWzJdLmNvbnRyb2wuc3VidHlwZSB8fCAnJyA6ICdjb2x1bW4gMyd9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzOiB7XG4gICAgY29uZmlndXJhdGlvbjogICAgICAgICAgICAnPScsXG4gICAgc2V0QWN0aXZlTGluZU51bWJlcjogICAgICAnJidcbiAgfSxcbiAgY29udHJvbGxlcjpcbiAgY2xhc3MgU3RlcE9uZVZpc3VhbFBhbmVsQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG5cbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0ICRpbmplY3QoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvbWFpbi9zdGVwT25lQ29udGVudC9TdGVwT25lVmlzdWFsUGFuZWwvc3RlcHdheS5tYWluLlN0ZXBPbmVWaXN1YWxQYW5lbC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 41 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayMainStepTwoContent = __webpack_require__(42);\n\nvar _stepwayMainStepTwoCommandPanel = __webpack_require__(43);\n\nvar _stepwayMainStepTwoVisualPanel = __webpack_require__(44);\n\nvar STEP_TWO_CONTENT_COMPONENT_MODULE = 'stepway.stepTwoContent.module';\n\nexports.default = angular.module(STEP_TWO_CONTENT_COMPONENT_MODULE, []).component(_stepwayMainStepTwoContent.LINE_STEP_TWO_CONTENT_COMPONENT, _stepwayMainStepTwoContent.stepTwoContentComponent).component(_stepwayMainStepTwoCommandPanel.STEP_TWO_COMMAND_PANEL_COMPONENT_NAME, _stepwayMainStepTwoCommandPanel.StepTwoCommandPanelComponent).component(_stepwayMainStepTwoVisualPanel.STEP_TWO_VISUAL_PANEL_COMPONENT_NAME, _stepwayMainStepTwoVisualPanel.StepTwoVisualPanelComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBUd29Db250ZW50L3N0ZXB3YXkubWFpbi5zdGVwVHdvQ29udGVudC5tb2R1bGUuanM/NTQyNyJdLCJuYW1lcyI6WyJTVEVQX1RXT19DT05URU5UX0NPTVBPTkVOVF9NT0RVTEUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFJQTs7QUFJQTs7QUFLQSxJQUFNQSxvQ0FBb0MsK0JBQTFDOztrQkFFZUMsUUFDRUMsTUFERixDQUNTRixpQ0FEVCxFQUM0QyxFQUQ1QyxFQUVFRyxTQUZGLGlIQUdFQSxTQUhGLHNJQUlFQSxTQUpGLGlJIiwiZmlsZSI6IjQxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgc3RlcFR3b0NvbnRlbnRDb21wb25lbnQsXG4gIExJTkVfU1RFUF9UV09fQ09OVEVOVF9DT01QT05FTlRcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL3N0ZXB3YXkubWFpbi5zdGVwVHdvQ29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgU1RFUF9UV09fQ09NTUFORF9QQU5FTF9DT01QT05FTlRfTkFNRSxcbiAgU3RlcFR3b0NvbW1hbmRQYW5lbENvbXBvbmVudFxufSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vU3RlcFR3b0NvbW1hbmRQYW5lbC9zdGVwd2F5Lm1haW4uU3RlcFR3b0NvbW1hbmRQYW5lbC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgU1RFUF9UV09fVklTVUFMX1BBTkVMX0NPTVBPTkVOVF9OQU1FLFxuICBTdGVwVHdvVmlzdWFsUGFuZWxDb21wb25lbnRcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL1N0ZXBUd29WaXN1YWxQYW5lbC9zdGVwd2F5Lm1haW4uU3RlcFR3b1Zpc3VhbFBhbmVsLmNvbXBvbmVudCc7XG5cbmNvbnN0IFNURVBfVFdPX0NPTlRFTlRfQ09NUE9ORU5UX01PRFVMRSA9ICdzdGVwd2F5LnN0ZXBUd29Db250ZW50Lm1vZHVsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAubW9kdWxlKFNURVBfVFdPX0NPTlRFTlRfQ09NUE9ORU5UX01PRFVMRSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChMSU5FX1NURVBfVFdPX0NPTlRFTlRfQ09NUE9ORU5ULCBzdGVwVHdvQ29udGVudENvbXBvbmVudClcbiAgICAgICAgICAgICAgICAuY29tcG9uZW50KFNURVBfVFdPX0NPTU1BTkRfUEFORUxfQ09NUE9ORU5UX05BTUUsIFN0ZXBUd29Db21tYW5kUGFuZWxDb21wb25lbnQpXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChTVEVQX1RXT19WSVNVQUxfUEFORUxfQ09NUE9ORU5UX05BTUUsIFN0ZXBUd29WaXN1YWxQYW5lbENvbXBvbmVudCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBUd29Db250ZW50L3N0ZXB3YXkubWFpbi5zdGVwVHdvQ29udGVudC5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 42 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar LINE_STEP_TWO_CONTENT_COMPONENT = exports.LINE_STEP_TWO_CONTENT_COMPONENT = 'stepTwoContent';\n\nvar stepTwoContentComponent = exports.stepTwoContentComponent = {\n template: '\\n
\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n ',\n bindings: {\n configuration: '=',\n setActiveLineNumber: '&',\n showModalAddCtrlToColumn: '&'\n },\n controller: function () {\n function stepTwoContentController() {\n _classCallCheck(this, stepTwoContentController);\n }\n ///////////////////////////////////\n // WHY this function is needed :\n ///////////////////////////////////\n // CASE OF : function with parameter passing from parent to caller through another level component\n // parent -> intermediate component (here) -> caller\n // NOTE : intermediate should call parent function to be sure to pass function parameter upward to parent\n\n\n _createClass(stepTwoContentController, [{\n key: 'setActiveLineNumberParent',\n value: function setActiveLineNumberParent(index) {\n this.setActiveLineNumber({ index: index });\n }\n\n // Needed for same reason as setActiveLineNumberParent\n\n }, {\n key: 'showModalAddCtrlToColumnParent',\n value: function showModalAddCtrlToColumnParent(size, indexLine, numcolumn) {\n this.showModalAddCtrlToColumn({\n size: size,\n indexLine: indexLine,\n numcolumn: numcolumn\n });\n }\n }], [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return stepTwoContentController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBUd29Db250ZW50L3N0ZXB3YXkubWFpbi5zdGVwVHdvQ29udGVudC5jb21wb25lbnQuanM/MTZiNSJdLCJuYW1lcyI6WyJMSU5FX1NURVBfVFdPX0NPTlRFTlRfQ09NUE9ORU5UIiwic3RlcFR3b0NvbnRlbnRDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwiY29uZmlndXJhdGlvbiIsInNldEFjdGl2ZUxpbmVOdW1iZXIiLCJzaG93TW9kYWxBZGRDdHJsVG9Db2x1bW4iLCJjb250cm9sbGVyIiwiaW5kZXgiLCJzaXplIiwiaW5kZXhMaW5lIiwibnVtY29sdW1uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sSUFBTUEsNEVBQWtDLGdCQUF4Qzs7QUFFQSxJQUFNQyw0REFBMEI7QUFDckNDLHNnQkFEcUM7QUFpQnJDQyxZQUFXO0FBQ1RDLG1CQUEwQixHQURqQjtBQUVUQyx5QkFBMEIsR0FGakI7QUFHVEMsOEJBQTBCO0FBSGpCLEdBakIwQjtBQXNCckNDO0FBRUUsd0NBQWM7QUFBQTtBQUViO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFWRjtBQUFBO0FBQUEsZ0RBVzRCQyxLQVg1QixFQVdtQztBQUMvQixhQUFLSCxtQkFBTCxDQUF5QixFQUFFRyxPQUFPQSxLQUFULEVBQXpCO0FBQ0Q7O0FBRUQ7O0FBZkY7QUFBQTtBQUFBLHFEQWdCaUNDLElBaEJqQyxFQWdCdUNDLFNBaEJ2QyxFQWdCa0RDLFNBaEJsRCxFQWdCNkQ7QUFDekQsYUFBS0wsd0JBQUwsQ0FBOEI7QUFDNUJHLG9CQUQ0QjtBQUU1QkMsOEJBRjRCO0FBRzVCQztBQUg0QixTQUE5QjtBQUtEO0FBdEJIO0FBQUE7QUFBQSwwQkF3QnVCO0FBQ25CLGVBQU8sRUFBUDtBQUNEO0FBMUJIOztBQUFBO0FBQUE7QUF0QnFDLENBQWhDIiwiZmlsZSI6IjQyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IExJTkVfU1RFUF9UV09fQ09OVEVOVF9DT01QT05FTlQgPSAnc3RlcFR3b0NvbnRlbnQnO1xuXG5leHBvcnQgY29uc3Qgc3RlcFR3b0NvbnRlbnRDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlIDogYFxuICA8ZGl2XG4gICAgY2xhc3M9XCJhbmltYXRlLXN3aXRjaFwiXG4gICAgbmctc3dpdGNoLXdoZW49XCJzZWNvbmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cbiAgICAgIDxzdGVwLXR3by1jb21tYW5kLXBhbmVsPjwvc3RlcC10d28tY29tbWFuZC1wYW5lbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLThcIj5cbiAgICAgIDxzdGVwLXR3by12aXN1YWwtcGFuZWxcbiAgICAgICAgY29uZmlndXJhdGlvbj1cIiRjdHJsLmNvbmZpZ3VyYXRpb25cIlxuICAgICAgICBzZXQtYWN0aXZlLWxpbmUtbnVtYmVyPVwiJGN0cmwuc2V0QWN0aXZlTGluZU51bWJlclBhcmVudChpbmRleClcIlxuICAgICAgICBzaG93LW1vZGFsLWFkZC1jdHJsLXRvLWNvbHVtbj1cIiRjdHJsLnNob3dNb2RhbEFkZEN0cmxUb0NvbHVtblBhcmVudChzaXplLCBpbmRleExpbmUsIG51bWNvbHVtbilcIj5cbiAgICAgIDwvc3RlcC10d28tdmlzdWFsLXBhbmVsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgYCxcbiAgYmluZGluZ3MgOiB7XG4gICAgY29uZmlndXJhdGlvbjogICAgICAgICAgICAnPScsXG4gICAgc2V0QWN0aXZlTGluZU51bWJlcjogICAgICAnJicsXG4gICAgc2hvd01vZGFsQWRkQ3RybFRvQ29sdW1uOiAnJidcbiAgfSxcbiAgY29udHJvbGxlcjpcbiAgY2xhc3Mgc3RlcFR3b0NvbnRlbnRDb250cm9sbGVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIH1cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFdIWSB0aGlzIGZ1bmN0aW9uIGlzIG5lZWRlZCA6XG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBDQVNFIE9GIDogIGZ1bmN0aW9uIHdpdGggcGFyYW1ldGVyIHBhc3NpbmcgZnJvbSBwYXJlbnQgdG8gY2FsbGVyIHRocm91Z2ggYW5vdGhlciBsZXZlbCBjb21wb25lbnRcbiAgICAvLyAgICAgICAgICAgIHBhcmVudCAtPiBpbnRlcm1lZGlhdGUgY29tcG9uZW50IChoZXJlKSAtPiBjYWxsZXJcbiAgICAvLyBOT1RFIDogaW50ZXJtZWRpYXRlIHNob3VsZCBjYWxsIHBhcmVudCBmdW5jdGlvbiB0byBiZSBzdXJlIHRvIHBhc3MgZnVuY3Rpb24gcGFyYW1ldGVyIHVwd2FyZCB0byBwYXJlbnRcbiAgICBzZXRBY3RpdmVMaW5lTnVtYmVyUGFyZW50KGluZGV4KSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZUxpbmVOdW1iZXIoeyBpbmRleDogaW5kZXggfSk7XG4gICAgfVxuXG4gICAgLy8gTmVlZGVkIGZvciBzYW1lIHJlYXNvbiBhcyBzZXRBY3RpdmVMaW5lTnVtYmVyUGFyZW50XG4gICAgc2hvd01vZGFsQWRkQ3RybFRvQ29sdW1uUGFyZW50KHNpemUsIGluZGV4TGluZSwgbnVtY29sdW1uKSB7XG4gICAgICB0aGlzLnNob3dNb2RhbEFkZEN0cmxUb0NvbHVtbih7XG4gICAgICAgIHNpemUsXG4gICAgICAgIGluZGV4TGluZSxcbiAgICAgICAgbnVtY29sdW1uXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0ICRpbmplY3QoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvbWFpbi9zdGVwVHdvQ29udGVudC9zdGVwd2F5Lm1haW4uc3RlcFR3b0NvbnRlbnQuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 43 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar STEP_TWO_COMMAND_PANEL_COMPONENT_NAME = exports.STEP_TWO_COMMAND_PANEL_COMPONENT_NAME = 'stepTwoCommandPanel';\n\nvar StepTwoCommandPanelComponent = exports.StepTwoCommandPanelComponent = {\n template: '\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'COMMAND_PANEL\\' | translate}}\\n \\n \\n
\\n
\\n
\\n
\\n - {{\\'APPLY_CTRL2COL\\' | translate}} -\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n {{\\'CLIC_TAP_2_OPEN\\' | translate}}.\\n
\\n \\n \\n \\n {{\\'SELECT_2_APPLY_COL\\' | translate}}.\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {},\n controller: function () {\n function StepTwoCommandPanelController() {\n _classCallCheck(this, StepTwoCommandPanelController);\n }\n\n _createClass(StepTwoCommandPanelController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return StepTwoCommandPanelController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBUd29Db250ZW50L1N0ZXBUd29Db21tYW5kUGFuZWwvc3RlcHdheS5tYWluLlN0ZXBUd29Db21tYW5kUGFuZWwuY29tcG9uZW50LmpzPzhlMmYiXSwibmFtZXMiOlsiU1RFUF9UV09fQ09NTUFORF9QQU5FTF9DT01QT05FTlRfTkFNRSIsIlN0ZXBUd29Db21tYW5kUGFuZWxDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLHdGQUF3QyxxQkFBOUM7O0FBRUEsSUFBTUMsc0VBQStCO0FBQzFDQyw0bUNBRDBDO0FBd0MxQ0MsWUFBVSxFQXhDZ0M7QUEyQzFDQztBQUVFLDZDQUFjO0FBQUE7QUFFYjs7QUFKSDtBQUFBO0FBQUEsMEJBTXVCO0FBQ25CLGVBQU8sRUFBUDtBQUNEO0FBUkg7O0FBQUE7QUFBQTtBQTNDMEMsQ0FBckMiLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU1RFUF9UV09fQ09NTUFORF9QQU5FTF9DT01QT05FTlRfTkFNRSA9ICdzdGVwVHdvQ29tbWFuZFBhbmVsJztcblxuZXhwb3J0IGNvbnN0IFN0ZXBUd29Db21tYW5kUGFuZWxDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gIDxkaXYgaWQ9XCJjb21tYW5kUGFuZWxcIj5cbiAgICA8ZGl2ICBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInBhbmVsLXRpdGxlXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1rZXlib2FyZC1vXCI+PC9pPlxuICAgICAgICAgICZuYnNwO1xuICAgICAgICAgIHt7J0NPTU1BTkRfUEFORUwnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgIDxoNCBjbGFzcz1cIm51bWJlck9mY29sdW1zVGV4dCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAtIHt7J0FQUExZX0NUUkwyQ09MJyB8IHRyYW5zbGF0ZX19IC1cbiAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiID5cbiAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgICA8YmxvY2txdW90ZT5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJudW1iZXJPZmNvbHVtc1RleHRcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLW1pbnVzXCI+PC9pPlxuICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgIHt7J0NMSUNfVEFQXzJfT1BFTicgfCB0cmFuc2xhdGV9fS5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm51bWJlck9mY29sdW1zVGV4dFwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtbWludXNcIj48L2k+XG4gICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAge3snU0VMRUNUXzJfQVBQTFlfQ09MJyB8IHRyYW5zbGF0ZX19LlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9ibG9ja3F1b3RlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgYCxcbiAgYmluZGluZ3M6IHtcblxuICB9LFxuICBjb250cm9sbGVyOlxuICBjbGFzcyBTdGVwVHdvQ29tbWFuZFBhbmVsQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG5cbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0ICRpbmplY3QoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvbWFpbi9zdGVwVHdvQ29udGVudC9TdGVwVHdvQ29tbWFuZFBhbmVsL3N0ZXB3YXkubWFpbi5TdGVwVHdvQ29tbWFuZFBhbmVsLmNvbXBvbmVudC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 44 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar STEP_TWO_VISUAL_PANEL_COMPONENT_NAME = exports.STEP_TWO_VISUAL_PANEL_COMPONENT_NAME = 'stepTwoVisualPanel';\n\nvar StepTwoVisualPanelComponent = exports.StepTwoVisualPanelComponent = {\n template: '\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'VISUAL_PANEL\\' | translate}}\\n \\n \\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
1\">\\n \\n \\n \\n \\n
\\n
\\n
\\n \\n {{line.columns[0].control.type !== \\'none\\' ? line.columns[0].control.type + \\' \\' + line.columns[0].control.subtype || \\'\\' : \\'column 1\\'}}\\n \\n
\\n
\\n
\\n
\\n
1\">\\n \\n \\n \\n \\n
\\n
\\n
\\n \\n {{line.columns[0].control.type !== \\'none\\' ? line.columns[0].control.type + \\' \\' + line.columns[0].control.subtype || \\'\\' : \\'column 1\\'}}\\n \\n
\\n
\\n \\n {{line.columns[1].control.type !== \\'none\\' ? line.columns[1].control.type + \\' \\' + line.columns[1].control.subtype || \\'\\' : \\'column 2\\'}}\\n \\n
\\n
\\n
\\n
\\n
1\">\\n \\n \\n \\n \\n
\\n
\\n
\\n \\n {{line.columns[0].control.type !== \\'none\\' ? line.columns[0].control.type + \\' \\' + line.columns[0].control.subtype || \\'\\' : \\'column 1\\'}}\\n \\n
\\n
\\n \\n {{line.columns[1].control.type !== \\'none\\' ? line.columns[1].control.type + \\' \\' + line.columns[1].control.subtype || \\'\\' : \\'column 2\\'}}\\n \\n
\\n
\\n \\n {{line.columns[2].control.type !== \\'none\\' ? line.columns[2].control.type + \\' \\' + line.columns[2].control.subtype || \\'\\' : \\'column 3\\'}}\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n ',\n bindings: {\n configuration: '=',\n setActiveLineNumber: '&',\n showModalAddCtrlToColumn: '&'\n },\n controller: function () {\n function StepTwoVisualPanelController() {\n _classCallCheck(this, StepTwoVisualPanelController);\n }\n\n _createClass(StepTwoVisualPanelController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return StepTwoVisualPanelController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBUd29Db250ZW50L1N0ZXBUd29WaXN1YWxQYW5lbC9zdGVwd2F5Lm1haW4uU3RlcFR3b1Zpc3VhbFBhbmVsLmNvbXBvbmVudC5qcz9mMjYxIl0sIm5hbWVzIjpbIlNURVBfVFdPX1ZJU1VBTF9QQU5FTF9DT01QT05FTlRfTkFNRSIsIlN0ZXBUd29WaXN1YWxQYW5lbENvbXBvbmVudCIsInRlbXBsYXRlIiwiYmluZGluZ3MiLCJjb25maWd1cmF0aW9uIiwic2V0QWN0aXZlTGluZU51bWJlciIsInNob3dNb2RhbEFkZEN0cmxUb0NvbHVtbiIsImNvbnRyb2xsZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBTyxJQUFNQSxzRkFBdUMsb0JBQTdDOztBQUVBLElBQU1DLG9FQUE4QjtBQUN6Q0MsMDZOQUR5QztBQW9JekNDLFlBQVU7QUFDUkMsbUJBQTBCLEdBRGxCO0FBRVJDLHlCQUEwQixHQUZsQjtBQUdSQyw4QkFBMEI7QUFIbEIsR0FwSStCO0FBeUl6Q0M7QUFFRSw0Q0FBYztBQUFBO0FBRWI7O0FBSkg7QUFBQTtBQUFBLDBCQU11QjtBQUNuQixlQUFPLEVBQVA7QUFDRDtBQVJIOztBQUFBO0FBQUE7QUF6SXlDLENBQXBDIiwiZmlsZSI6IjQ0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFNURVBfVFdPX1ZJU1VBTF9QQU5FTF9DT01QT05FTlRfTkFNRSA9ICdzdGVwVHdvVmlzdWFsUGFuZWwnO1xuXG5leHBvcnQgY29uc3QgU3RlcFR3b1Zpc3VhbFBhbmVsQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZTogYFxuICA8ZGl2IGlkPVwidmlzdWFsUGFuZWxcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nXCI+XG4gICAgICA8aDMgY2xhc3M9XCJwYW5lbC10aXRsZVwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZVwiPjwvaT5cbiAgICAgICAgJm5ic3A7XG4gICAgICAgIHt7J1ZJU1VBTF9QQU5FTCcgfCB0cmFuc2xhdGV9fVxuICAgICAgPC9oMz5cbiAgICA8L2gzPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICA8IS0tIGxpbmVzIC8gY29sdW1ucyAtLT5cbiAgICAgIDx1bCBjbGFzcz1cImxpc3QtZ3JvdXBcIj5cbiAgICAgICAgPGxpXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW1cIlxuICAgICAgICAgIG5nLXJlcGVhdD1cImxpbmUgaW4gJGN0cmwuY29uZmlndXJhdGlvbi5saW5lcyB0cmFjayBieSAkaW5kZXhcIj5cbiAgICAgICAgICAgIDwhLS0gY29sdW1ucyAtLT5cbiAgICAgICAgICAgIDxkaXYgbmctc3dpdGNoIG9uPVwibGluZS5jb2x1bW5zLmxlbmd0aFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgbGluZXNMaXN0XCJcbiAgICAgICAgICAgICAgICBuZy1zd2l0Y2gtd2hlbj1cIjFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1tZC0xMiBsaW5lQ29tbWFuZEJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgICAgbmctc2hvdz1cIiRjdHJsLmNvbmZpZ3VyYXRpb24ubGluZXMubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWNsYXNzPVwieydidG4td2FybmluZyc6KCRpbmRleCArIDEpICE9PSAkY3RybC5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUsICdidG4tc3VjY2Vzcyc6ICgkaW5kZXggKyAxKSA9PT0gJGN0cmwuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lfVwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwuc2V0QWN0aXZlTGluZU51bWJlcih7aW5kZXg6ICRpbmRleCArIDF9KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFcIlxuICAgICAgICAgICAgICAgICAgICAgIG5nLWNsYXNzPVwieydmYS1zcXVhcmUtbyc6ICgkaW5kZXggKyAxKSAhPT0gJGN0cmwuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lLCAnZmEtY2hlY2stc3F1YXJlLW8nOiAoJGluZGV4ICsgMSkgPT09ICRjdHJsLmNvbmZpZ3VyYXRpb24uYWN0aXZlTGluZX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiB3ZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGcgYnRuLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICBuZy1jbGFzcz1cInsnYnRuLXByaW1hcnknOiAhbGluZS5jb2x1bW5zWzBdLmNvbnRyb2wuZWRpdGVkLCAnYnRuLXN1Y2Nlc3MnOiBsaW5lLmNvbHVtbnNbMF0uY29udHJvbC5lZGl0ZWR9XCJcbiAgICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLnNob3dNb2RhbEFkZEN0cmxUb0NvbHVtbih7c2l6ZTogJycsIGluZGV4TGluZTogJGluZGV4LCBudW1jb2x1bW46IDB9KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7bGluZS5jb2x1bW5zWzBdLmNvbnRyb2wudHlwZSAhPT0gJ25vbmUnICA/IGxpbmUuY29sdW1uc1swXS5jb250cm9sLnR5cGUgKyAnICcgKyBsaW5lLmNvbHVtbnNbMF0uY29udHJvbC5zdWJ0eXBlIHx8ICcnIDogJ2NvbHVtbiAxJ319XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgbGluZXNMaXN0XCJcbiAgICAgICAgICAgICAgICBuZy1zd2l0Y2gtd2hlbj1cIjJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1tZC0xMiBsaW5lQ29tbWFuZEJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgICAgbmctc2hvdz1cIiRjdHJsLmNvbmZpZ3VyYXRpb24ubGluZXMubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWNsYXNzPVwieydidG4td2FybmluZyc6KCRpbmRleCArIDEpICE9PSAkY3RybC5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUsICdidG4tc3VjY2Vzcyc6ICgkaW5kZXggKyAxKSA9PT0gJGN0cmwuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lfVwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwuc2V0QWN0aXZlTGluZU51bWJlcih7aW5kZXg6ICRpbmRleCArIDF9KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFcIlxuICAgICAgICAgICAgICAgICAgICAgIG5nLWNsYXNzPVwieydmYS1zcXVhcmUtbyc6ICgkaW5kZXggKyAxKSAhPT0gJGN0cmwuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lLCAnZmEtY2hlY2stc3F1YXJlLW8nOiAoJGluZGV4ICsgMSkgPT09ICRjdHJsLmNvbmZpZ3VyYXRpb24uYWN0aXZlTGluZX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHdlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgIG5nLWNsYXNzPVwieydidG4tcHJpbWFyeSc6ICFsaW5lLmNvbHVtbnNbMF0uY29udHJvbC5lZGl0ZWQsICdidG4tc3VjY2Vzcyc6IGxpbmUuY29sdW1uc1swXS5jb250cm9sLmVkaXRlZH1cIlxuICAgICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwuc2hvd01vZGFsQWRkQ3RybFRvQ29sdW1uKHtzaXplOiAnJywgaW5kZXhMaW5lOiAkaW5kZXgsIG51bWNvbHVtbjogMH0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3tsaW5lLmNvbHVtbnNbMF0uY29udHJvbC50eXBlICE9PSAnbm9uZScgID8gbGluZS5jb2x1bW5zWzBdLmNvbnRyb2wudHlwZSArICcgJyArIGxpbmUuY29sdW1uc1swXS5jb250cm9sLnN1YnR5cGUgfHwgJycgOiAnY29sdW1uIDEnfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiB3ZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGcgYnRuLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICBuZy1jbGFzcz1cInsnYnRuLXByaW1hcnknOiAhbGluZS5jb2x1bW5zWzFdLmNvbnRyb2wuZWRpdGVkLCAnYnRuLXN1Y2Nlc3MnOiBsaW5lLmNvbHVtbnNbMV0uY29udHJvbC5lZGl0ZWR9XCJcbiAgICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLnNob3dNb2RhbEFkZEN0cmxUb0NvbHVtbih7c2l6ZTogJycsIGluZGV4TGluZTogJGluZGV4LCBudW1jb2x1bW46IDF9KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7bGluZS5jb2x1bW5zWzFdLmNvbnRyb2wudHlwZSAhPT0gJ25vbmUnICA/IGxpbmUuY29sdW1uc1sxXS5jb250cm9sLnR5cGUgKyAnICcgKyBsaW5lLmNvbHVtbnNbMV0uY29udHJvbC5zdWJ0eXBlIHx8ICcnIDogJ2NvbHVtbiAyJ319XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgbGluZXNMaXN0XCJcbiAgICAgICAgICAgICAgICBuZy1zd2l0Y2gtd2hlbj1cIjNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1tZC0xMiBsaW5lQ29tbWFuZEJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgICAgbmctc2hvdz1cIiRjdHJsLmNvbmZpZ3VyYXRpb24ubGluZXMubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWNsYXNzPVwieydidG4td2FybmluZyc6KCRpbmRleCArIDEpICE9PSAkY3RybC5jb25maWd1cmF0aW9uLmFjdGl2ZUxpbmUsICdidG4tc3VjY2Vzcyc6ICgkaW5kZXggKyAxKSA9PT0gJGN0cmwuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lfVwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwuc2V0QWN0aXZlTGluZU51bWJlcih7aW5kZXg6ICRpbmRleCArIDF9KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFcIlxuICAgICAgICAgICAgICAgICAgICAgIG5nLWNsYXNzPVwieydmYS1zcXVhcmUtbyc6ICgkaW5kZXggKyAxKSAhPT0gJGN0cmwuY29uZmlndXJhdGlvbi5hY3RpdmVMaW5lLCAnZmEtY2hlY2stc3F1YXJlLW8nOiAoJGluZGV4ICsgMSkgPT09ICRjdHJsLmNvbmZpZ3VyYXRpb24uYWN0aXZlTGluZX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHdlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgIG5nLWNsYXNzPVwieydidG4tcHJpbWFyeSc6ICFsaW5lLmNvbHVtbnNbMF0uY29udHJvbC5lZGl0ZWQsICdidG4tc3VjY2Vzcyc6IGxpbmUuY29sdW1uc1swXS5jb250cm9sLmVkaXRlZH1cIlxuICAgICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwuc2hvd01vZGFsQWRkQ3RybFRvQ29sdW1uKHtzaXplOiAnJywgaW5kZXhMaW5lOiAkaW5kZXgsIG51bWNvbHVtbjogMH0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3tsaW5lLmNvbHVtbnNbMF0uY29udHJvbC50eXBlICE9PSAnbm9uZScgID8gbGluZS5jb2x1bW5zWzBdLmNvbnRyb2wudHlwZSArICcgJyArIGxpbmUuY29sdW1uc1swXS5jb250cm9sLnN1YnR5cGUgfHwgJycgOiAnY29sdW1uIDEnfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCB3ZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGcgYnRuLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICBuZy1jbGFzcz1cInsnYnRuLXByaW1hcnknOiAhbGluZS5jb2x1bW5zWzFdLmNvbnRyb2wuZWRpdGVkLCAnYnRuLXN1Y2Nlc3MnOiBsaW5lLmNvbHVtbnNbMV0uY29udHJvbC5lZGl0ZWR9XCJcbiAgICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLnNob3dNb2RhbEFkZEN0cmxUb0NvbHVtbih7c2l6ZTogJycsIGluZGV4TGluZTogJGluZGV4LCBudW1jb2x1bW46IDF9KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7bGluZS5jb2x1bW5zWzFdLmNvbnRyb2wudHlwZSAhPT0gJ25vbmUnICA/IGxpbmUuY29sdW1uc1sxXS5jb250cm9sLnR5cGUgKyAnICcgKyBsaW5lLmNvbHVtbnNbMV0uY29udHJvbC5zdWJ0eXBlIHx8ICcnIDogJ2NvbHVtbiAyJ319XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgd2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxnIGJ0bi1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgbmctY2xhc3M9XCJ7J2J0bi1wcmltYXJ5JzogIWxpbmUuY29sdW1uc1syXS5jb250cm9sLmVkaXRlZCwgJ2J0bi1zdWNjZXNzJzogbGluZS5jb2x1bW5zWzJdLmNvbnRyb2wuZWRpdGVkfVwiXG4gICAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5zaG93TW9kYWxBZGRDdHJsVG9Db2x1bW4oe3NpemU6ICcnLCBpbmRleExpbmU6ICRpbmRleCwgbnVtY29sdW1uOiAyfSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7e2xpbmUuY29sdW1uc1syXS5jb250cm9sLnR5cGUgIT09ICdub25lJyAgPyBsaW5lLmNvbHVtbnNbMl0uY29udHJvbC50eXBlICsgJyAnICsgbGluZS5jb2x1bW5zWzJdLmNvbnRyb2wuc3VidHlwZSB8fCAnJyA6ICdjb2x1bW4gMyd9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzOiB7XG4gICAgY29uZmlndXJhdGlvbjogICAgICAgICAgICAnPScsXG4gICAgc2V0QWN0aXZlTGluZU51bWJlcjogICAgICAnJicsXG4gICAgc2hvd01vZGFsQWRkQ3RybFRvQ29sdW1uOiAnJidcbiAgfSxcbiAgY29udHJvbGxlcjpcbiAgY2xhc3MgU3RlcFR3b1Zpc3VhbFBhbmVsQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG5cbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0ICRpbmplY3QoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvbWFpbi9zdGVwVHdvQ29udGVudC9TdGVwVHdvVmlzdWFsUGFuZWwvc3RlcHdheS5tYWluLlN0ZXBUd29WaXN1YWxQYW5lbC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 45 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayMainStepThreeContent = __webpack_require__(46);\n\nvar _stepwayMainStepThreeCommandPanel = __webpack_require__(47);\n\nvar _stepwayMainStepThreeVisualPanel = __webpack_require__(48);\n\nvar STEP_THREE_CONTENT_COMPONENT_MODULE = 'stepway.stepThreeContent.module';\n\nexports.default = angular.module(STEP_THREE_CONTENT_COMPONENT_MODULE, []).component(_stepwayMainStepThreeContent.LINE_STEP_THREE_CONTENT_COMPONENT, _stepwayMainStepThreeContent.stepThreeContentComponent).component(_stepwayMainStepThreeCommandPanel.STEP_THREE_COMMAND_PANEL_COMPONENT_NAME, _stepwayMainStepThreeCommandPanel.StepThreeCommandPanelComponent).component(_stepwayMainStepThreeVisualPanel.STEP_THREE_VISUAL_PANEL_COMPONENT_NAME, _stepwayMainStepThreeVisualPanel.StepThreeVisualPanelComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBUaHJlZUNvbnRlbnQvc3RlcHdheS5tYWluLnN0ZXBUaHJlZUNvbnRlbnQubW9kdWxlLmpzP2YwZTUiXSwibmFtZXMiOlsiU1RFUF9USFJFRV9DT05URU5UX0NPTVBPTkVOVF9NT0RVTEUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFJQTs7QUFJQTs7QUFLQSxJQUFNQSxzQ0FBc0MsaUNBQTVDOztrQkFFZUMsUUFDRUMsTUFERixDQUNTRixtQ0FEVCxFQUM4QyxFQUQ5QyxFQUVFRyxTQUZGLHlIQUdFQSxTQUhGLDhJQUlFQSxTQUpGLHlJIiwiZmlsZSI6IjQ1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgc3RlcFRocmVlQ29udGVudENvbXBvbmVudCxcbiAgTElORV9TVEVQX1RIUkVFX0NPTlRFTlRfQ09NUE9ORU5UXG59ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi9zdGVwd2F5Lm1haW4uc3RlcFRocmVlQ29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgU1RFUF9USFJFRV9DT01NQU5EX1BBTkVMX0NPTVBPTkVOVF9OQU1FLFxuICBTdGVwVGhyZWVDb21tYW5kUGFuZWxDb21wb25lbnRcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL1N0ZXBUaHJlZUNvbW1hbmRQYW5lbC9zdGVwd2F5Lm1haW4uU3RlcFRocmVlQ29tbWFuZFBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBTVEVQX1RIUkVFX1ZJU1VBTF9QQU5FTF9DT01QT05FTlRfTkFNRSxcbiAgU3RlcFRocmVlVmlzdWFsUGFuZWxDb21wb25lbnRcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL1N0ZXBUaHJlZVZpc3VhbFBhbmVsL3N0ZXB3YXkubWFpbi5TdGVwVGhyZWVWaXN1YWxQYW5lbC5jb21wb25lbnQnO1xuXG5jb25zdCBTVEVQX1RIUkVFX0NPTlRFTlRfQ09NUE9ORU5UX01PRFVMRSA9ICdzdGVwd2F5LnN0ZXBUaHJlZUNvbnRlbnQubW9kdWxlJztcblxuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuICAgICAgICAgICAgICAgIC5tb2R1bGUoU1RFUF9USFJFRV9DT05URU5UX0NPTVBPTkVOVF9NT0RVTEUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoTElORV9TVEVQX1RIUkVFX0NPTlRFTlRfQ09NUE9ORU5ULCBzdGVwVGhyZWVDb250ZW50Q29tcG9uZW50KVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoU1RFUF9USFJFRV9DT01NQU5EX1BBTkVMX0NPTVBPTkVOVF9OQU1FLCBTdGVwVGhyZWVDb21tYW5kUGFuZWxDb21wb25lbnQpXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChTVEVQX1RIUkVFX1ZJU1VBTF9QQU5FTF9DT01QT05FTlRfTkFNRSwgU3RlcFRocmVlVmlzdWFsUGFuZWxDb21wb25lbnQpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvbWFpbi9zdGVwVGhyZWVDb250ZW50L3N0ZXB3YXkubWFpbi5zdGVwVGhyZWVDb250ZW50Lm1vZHVsZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 46 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar LINE_STEP_THREE_CONTENT_COMPONENT = exports.LINE_STEP_THREE_CONTENT_COMPONENT = 'stepThreeContent';\n\nvar stepThreeContentComponent = exports.stepThreeContentComponent = {\n template: '\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n ',\n bindings: {\n configuration: '=',\n edaDataModel: '=',\n wfFormFields: '=',\n onSubmit: '&',\n saveThisForm: '&'\n },\n controller: function () {\n function stepThreeContentController() {\n _classCallCheck(this, stepThreeContentController);\n }\n\n _createClass(stepThreeContentController, [{\n key: '$onInit',\n value: function $onInit() {\n // console.log('stepThreeContentComponent init, edaDataModel: ', this.edaDataModel);\n }\n }, {\n key: '$onChange',\n value: function $onChange(changesObj) {\n // console.log('stepThreeContentComponent onChange, changesObj: ', changesObj);\n }\n }], [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return stepThreeContentController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBUaHJlZUNvbnRlbnQvc3RlcHdheS5tYWluLnN0ZXBUaHJlZUNvbnRlbnQuY29tcG9uZW50LmpzP2M3YWMiXSwibmFtZXMiOlsiTElORV9TVEVQX1RIUkVFX0NPTlRFTlRfQ09NUE9ORU5UIiwic3RlcFRocmVlQ29udGVudENvbXBvbmVudCIsInRlbXBsYXRlIiwiYmluZGluZ3MiLCJjb25maWd1cmF0aW9uIiwiZWRhRGF0YU1vZGVsIiwid2ZGb3JtRmllbGRzIiwib25TdWJtaXQiLCJzYXZlVGhpc0Zvcm0iLCJjb250cm9sbGVyIiwiY2hhbmdlc09iaiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLGdGQUFvQyxrQkFBMUM7O0FBRUEsSUFBTUMsZ0VBQTRCO0FBQ3ZDQyw4akJBRHVDO0FBcUJ2Q0MsWUFBVztBQUNUQyxtQkFBZ0IsR0FEUDtBQUVUQyxrQkFBZ0IsR0FGUDtBQUdUQyxrQkFBZ0IsR0FIUDtBQUlUQyxjQUFnQixHQUpQO0FBS1RDLGtCQUFnQjtBQUxQLEdBckI0QjtBQTRCdkNDO0FBRUUsMENBQWM7QUFBQTtBQUViOztBQUpIO0FBQUE7QUFBQSxnQ0FNWTtBQUNSO0FBQ0Q7QUFSSDtBQUFBO0FBQUEsZ0NBVVlDLFVBVlosRUFVd0I7QUFDcEI7QUFDRDtBQVpIO0FBQUE7QUFBQSwwQkFjdUI7QUFDbkIsZUFBTyxFQUFQO0FBQ0Q7QUFoQkg7O0FBQUE7QUFBQTtBQTVCdUMsQ0FBbEMiLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTElORV9TVEVQX1RIUkVFX0NPTlRFTlRfQ09NUE9ORU5UID0gJ3N0ZXBUaHJlZUNvbnRlbnQnO1xuXG5leHBvcnQgY29uc3Qgc3RlcFRocmVlQ29udGVudENvbXBvbmVudCA9IHtcbiAgdGVtcGxhdGUgOiBgXG4gIDxkaXZcbiAgICBjbGFzcz1cImFuaW1hdGUtc3dpdGNoXCJcbiAgICBuZy1zd2l0Y2gtd2hlbj1cInRoaXJkXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICA8c3RlcC10aHJlZS1jb21tYW5kLXBhbmVsXG4gICAgICAgIGNvbmZpZ3VyYXRpb249XCIkY3RybC5jb25maWd1cmF0aW9uXCJcbiAgICAgICAgc2F2ZS10aGlzLWZvcm09XCIkY3RybC5zYXZlVGhpc0Zvcm0oKVwiPlxuICAgICAgPC9zdGVwLXRocmVlLWNvbW1hbmQtcGFuZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XG4gICAgICA8c3RlcC10aHJlZS12aXN1YWwtcGFuZWxcbiAgICAgICAgY29uZmlndXJhdGlvbj1cIiRjdHJsLmNvbmZpZ3VyYXRpb25cIlxuICAgICAgICBlZGEtZGF0YS1tb2RlbD1cIiRjdHJsLmVkYURhdGFNb2RlbFwiXG4gICAgICAgIHdmLWZvcm0tZmllbGRzPVwiJGN0cmwud2ZGb3JtRmllbGRzXCJcbiAgICAgICAgb24tc3VibWl0PVwiJGN0cmwub25TdWJtaXQoKVwiPlxuICAgICAgPC9zdGVwLXRocmVlLXZpc3VhbC1wYW5lbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzIDoge1xuICAgIGNvbmZpZ3VyYXRpb246ICAnPScsXG4gICAgZWRhRGF0YU1vZGVsOiAgICc9JyxcbiAgICB3ZkZvcm1GaWVsZHM6ICAgJz0nLFxuICAgIG9uU3VibWl0OiAgICAgICAnJicsXG4gICAgc2F2ZVRoaXNGb3JtOiAgICcmJ1xuICB9LFxuICBjb250cm9sbGVyOlxuICBjbGFzcyBzdGVwVGhyZWVDb250ZW50Q29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG5cbiAgICB9XG5cbiAgICAkb25Jbml0KCkge1xuICAgICAgLy8gY29uc29sZS5sb2coJ3N0ZXBUaHJlZUNvbnRlbnRDb21wb25lbnQgaW5pdCwgZWRhRGF0YU1vZGVsOiAnLCB0aGlzLmVkYURhdGFNb2RlbCk7XG4gICAgfVxuXG4gICAgJG9uQ2hhbmdlKGNoYW5nZXNPYmopIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdzdGVwVGhyZWVDb250ZW50Q29tcG9uZW50IG9uQ2hhbmdlLCBjaGFuZ2VzT2JqOiAnLCBjaGFuZ2VzT2JqKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0ICRpbmplY3QoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvbWFpbi9zdGVwVGhyZWVDb250ZW50L3N0ZXB3YXkubWFpbi5zdGVwVGhyZWVDb250ZW50LmNvbXBvbmVudC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 47 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar STEP_THREE_COMMAND_PANEL_COMPONENT_NAME = exports.STEP_THREE_COMMAND_PANEL_COMPONENT_NAME = 'stepThreeCommandPanel';\n\nvar StepThreeCommandPanelComponent = exports.StepThreeCommandPanelComponent = {\n template: '\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'COMMAND_PANEL\\' | translate}}\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n {{\\'SAVE_THIS_FORM\\' | translate}}\\n \\n
\\n
\\n
\\n ',\n bindings: {\n configuration: '=',\n saveThisForm: '&'\n },\n controller: function () {\n function StepThreeCommandPanelController() {\n _classCallCheck(this, StepThreeCommandPanelController);\n }\n\n _createClass(StepThreeCommandPanelController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return StepThreeCommandPanelController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBUaHJlZUNvbnRlbnQvU3RlcFRocmVlQ29tbWFuZFBhbmVsL3N0ZXB3YXkubWFpbi5TdGVwVGhyZWVDb21tYW5kUGFuZWwuY29tcG9uZW50LmpzPzY4MTMiXSwibmFtZXMiOlsiU1RFUF9USFJFRV9DT01NQU5EX1BBTkVMX0NPTVBPTkVOVF9OQU1FIiwiU3RlcFRocmVlQ29tbWFuZFBhbmVsQ29tcG9uZW50IiwidGVtcGxhdGUiLCJiaW5kaW5ncyIsImNvbmZpZ3VyYXRpb24iLCJzYXZlVGhpc0Zvcm0iLCJjb250cm9sbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sSUFBTUEsNEZBQTBDLHVCQUFoRDs7QUFFQSxJQUFNQywwRUFBaUM7QUFDNUNDLDg5RUFENEM7QUFnRjVDQyxZQUFVO0FBQ1JDLG1CQUFnQixHQURSO0FBRVJDLGtCQUFnQjtBQUZSLEdBaEZrQztBQW9GNUNDO0FBRUUsK0NBQWM7QUFBQTtBQUViOztBQUpIO0FBQUE7QUFBQSwwQkFNdUI7QUFDbkIsZUFBTyxFQUFQO0FBQ0Q7QUFSSDs7QUFBQTtBQUFBO0FBcEY0QyxDQUF2QyIsImZpbGUiOiI0Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTVEVQX1RIUkVFX0NPTU1BTkRfUEFORUxfQ09NUE9ORU5UX05BTUUgPSAnc3RlcFRocmVlQ29tbWFuZFBhbmVsJztcblxuZXhwb3J0IGNvbnN0IFN0ZXBUaHJlZUNvbW1hbmRQYW5lbENvbXBvbmVudCA9IHtcbiAgdGVtcGxhdGU6IGBcbiAgPGRpdiBpZD1cImNvbW1hbmRQYW5lbFwiIG5nLWlmPVwiISRjdHJsLmNvbmZpZ3VyYXRpb24uaXNXaXphcmRcIj5cbiAgICA8ZGl2ICBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInBhbmVsLXRpdGxlXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1rZXlib2FyZC1vXCI+PC9pPlxuICAgICAgICAgICZuYnNwO1xuICAgICAgICAgIHt7J0NPTU1BTkRfUEFORUwnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGZvcj1cImlucHV0U3VibWl0QnV0dG9udGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCIgZ3JleVRleHQgY29udHJvbC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgIHt7J0NVU1RPTV9TVUJNSVRfQlROJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJpbnB1dFN1Ym1pdEJ1dHRvbnRleHRcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5jb25maWd1cmF0aW9uLnN1Ym1pdEJ1dHRvblRleHRcIj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxoci8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBmb3I9XCJpbnB1dENhbmNlbEJ1dHRvbnRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiIGdyZXlUZXh0IGNvbnRyb2wtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7eydDVVNUT01fQ0FOQ0VMX0JUTicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwiaW5wdXRDYW5jZWxCdXR0b250ZXh0XCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiXCJcbiAgICAgICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwuY29uZmlndXJhdGlvbi5jYW5jZWxCdXR0b25UZXh0XCI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgZm9yPVwiaW5wdXROYW1lRm9ybXRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiIGdyZXlUZXh0IGNvbnRyb2wtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7eydOQU1FX1RISVNfRk9STScgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwiaW5wdXROYW1lRm9ybXRleHRcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIlxuICAgICAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5jb25maWd1cmF0aW9uLmZvcm1OYW1lXCI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWJsb2NrIGJ0bi1sZ1wiXG4gICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5zYXZlVGhpc0Zvcm0oKVwiPlxuICAgICAgICAgIHt7J1NBVkVfVEhJU19GT1JNJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBgLFxuICBiaW5kaW5nczoge1xuICAgIGNvbmZpZ3VyYXRpb246ICAnPScsXG4gICAgc2F2ZVRoaXNGb3JtOiAgICcmJ1xuICB9LFxuICBjb250cm9sbGVyOlxuICBjbGFzcyBTdGVwVGhyZWVDb21tYW5kUGFuZWxDb250cm9sbGVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgJGluamVjdCgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBUaHJlZUNvbnRlbnQvU3RlcFRocmVlQ29tbWFuZFBhbmVsL3N0ZXB3YXkubWFpbi5TdGVwVGhyZWVDb21tYW5kUGFuZWwuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 48 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar STEP_THREE_VISUAL_PANEL_COMPONENT_NAME = exports.STEP_THREE_VISUAL_PANEL_COMPONENT_NAME = 'stepThreeVisualPanel';\n\nvar StepThreeVisualPanelComponent = exports.StepThreeVisualPanelComponent = {\n template: '\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'FINAL_STEP\\' | translate}}\\n \\n \\n
\\n \\n
\\n
\\n
\\n ',\n controllerAs: 'vizPanel',\n bindings: {\n configuration: '=',\n edaDataModel: '=',\n wfFormFields: '=',\n onSubmit: '&'\n },\n controller: function () {\n function StepThreeVisualPanelController() {\n _classCallCheck(this, StepThreeVisualPanelController);\n }\n\n _createClass(StepThreeVisualPanelController, [{\n key: '$onInit',\n value: function $onInit() {\n // console.log('stepThreeVisualPanel init, edaDataModel: ', this.edaDataModel);\n }\n }], [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return StepThreeVisualPanelController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tYWluL3N0ZXBUaHJlZUNvbnRlbnQvU3RlcFRocmVlVmlzdWFsUGFuZWwvc3RlcHdheS5tYWluLlN0ZXBUaHJlZVZpc3VhbFBhbmVsLmNvbXBvbmVudC5qcz80ODAyIl0sIm5hbWVzIjpbIlNURVBfVEhSRUVfVklTVUFMX1BBTkVMX0NPTVBPTkVOVF9OQU1FIiwiU3RlcFRocmVlVmlzdWFsUGFuZWxDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImNvbnRyb2xsZXJBcyIsImJpbmRpbmdzIiwiY29uZmlndXJhdGlvbiIsImVkYURhdGFNb2RlbCIsIndmRm9ybUZpZWxkcyIsIm9uU3VibWl0IiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLDBGQUF5QyxzQkFBL0M7O0FBRUEsSUFBTUMsd0VBQWdDO0FBQzNDQyxpK0JBRDJDO0FBbUMzQ0MsZ0JBQWMsVUFuQzZCO0FBb0MzQ0MsWUFBVTtBQUNSQyxtQkFBZSxHQURQO0FBRVJDLGtCQUFjLEdBRk47QUFHUkMsa0JBQWMsR0FITjtBQUlSQyxjQUFVO0FBSkYsR0FwQ2lDO0FBMEMzQ0M7QUFFRSw4Q0FBYztBQUFBO0FBRWI7O0FBSkg7QUFBQTtBQUFBLGdDQU1ZO0FBQ1I7QUFDRDtBQVJIO0FBQUE7QUFBQSwwQkFVdUI7QUFDbkIsZUFBTyxFQUFQO0FBQ0Q7QUFaSDs7QUFBQTtBQUFBO0FBMUMyQyxDQUF0QyIsImZpbGUiOiI0OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTVEVQX1RIUkVFX1ZJU1VBTF9QQU5FTF9DT01QT05FTlRfTkFNRSA9ICdzdGVwVGhyZWVWaXN1YWxQYW5lbCc7XG5cbmV4cG9ydCBjb25zdCBTdGVwVGhyZWVWaXN1YWxQYW5lbENvbXBvbmVudCA9IHtcbiAgdGVtcGxhdGU6IGBcbiAgPGRpdiBpZD1cInZpc3VhbFBhbmVsXCI+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInBhbmVsLXRpdGxlXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aHVtYnMtby11cFwiPjwvaT5cbiAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICB7eydGSU5BTF9TVEVQJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgIDwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICAgIDxmb3JtIG5nLXN1Ym1pdD1cInZpelBhbmVsLm9uU3VibWl0KClcIj5cbiAgICAgICAgICA8Zm9ybWx5LWZvcm1cbiAgICAgICAgICAgIGlkPVwic2F2ZUZvcm1seUZvbVwiXG4gICAgICAgICAgICBtb2RlbD1cInZpelBhbmVsLmVkYURhdGFNb2RlbFwiXG4gICAgICAgICAgICBmaWVsZHM9XCJ2aXpQYW5lbC53ZkZvcm1GaWVsZHNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHVsbC1yaWdodFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIj5cbiAgICAgICAgICAgICAge3t2aXpQYW5lbC5jb25maWd1cmF0aW9uLnN1Ym1pdEJ1dHRvblRleHR9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgdHlwZT1cImNhbmNlbFwiPlxuICAgICAgICAgICAgICB7e3ZpelBhbmVsLmNvbmZpZ3VyYXRpb24uY2FuY2VsQnV0dG9uVGV4dH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Zvcm1seS1mb3JtPlxuICAgICAgICA8L2Zvcm0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIGNvbnRyb2xsZXJBczogJ3ZpelBhbmVsJyxcbiAgYmluZGluZ3M6IHtcbiAgICBjb25maWd1cmF0aW9uOiAnPScsXG4gICAgZWRhRGF0YU1vZGVsOiAnPScsXG4gICAgd2ZGb3JtRmllbGRzOiAnPScsXG4gICAgb25TdWJtaXQ6ICcmJ1xuICB9LFxuICBjb250cm9sbGVyOlxuICBjbGFzcyBTdGVwVGhyZWVWaXN1YWxQYW5lbENvbnRyb2xsZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgfVxuXG4gICAgJG9uSW5pdCgpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdzdGVwVGhyZWVWaXN1YWxQYW5lbCBpbml0LCBlZGFEYXRhTW9kZWw6ICcsIHRoaXMuZWRhRGF0YU1vZGVsKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0ICRpbmplY3QoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvbWFpbi9zdGVwVGhyZWVDb250ZW50L1N0ZXBUaHJlZVZpc3VhbFBhbmVsL3N0ZXB3YXkubWFpbi5TdGVwVGhyZWVWaXN1YWxQYW5lbC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 49 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayWizard = __webpack_require__(50);\n\nvar _stepwayWizard2 = _interopRequireDefault(_stepwayWizard);\n\nvar _stepwayWizard3 = __webpack_require__(52);\n\nvar _stepwayWizard4 = _interopRequireDefault(_stepwayWizard3);\n\nvar _stepwayWizard5 = __webpack_require__(54);\n\nvar _stepwayWizard6 = _interopRequireDefault(_stepwayWizard5);\n\nvar _stepwayWizardAddStepContent = __webpack_require__(55);\n\nvar _stepwayWizardAddStepContent2 = _interopRequireDefault(_stepwayWizardAddStepContent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar STEP_WAY_WIZARD_MODULE = 'easyWizardFormStepwayModule';\n\nvar TO_INJECT = [_stepwayWizardAddStepContent2.default.name, 'mgo-angular-wizard'];\n\nexports.default = angular.module(STEP_WAY_WIZARD_MODULE, TO_INJECT).controller(_stepwayWizard.STEP_WAY_WIZARD_CONTROLLER_NAME, _stepwayWizard2.default).directive(_stepwayWizard3.STEP_WAY_WIZARD_DIRECTIVE_NAME, _stepwayWizard4.default).provider(_stepwayWizard5.EASY_WIZARD_FORM_STEP_WAY_CONFIG_NAME, _stepwayWizard6.default);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy93aXphcmQvc3RlcHdheS53aXphcmQubW9kdWxlLmpzPzRkNDYiXSwibmFtZXMiOlsiU1RFUF9XQVlfV0laQVJEX01PRFVMRSIsIlRPX0lOSkVDVCIsIm5hbWUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29udHJvbGxlciIsImRpcmVjdGl2ZSIsInByb3ZpZGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUdBOzs7O0FBR0E7Ozs7QUFHQTs7Ozs7O0FBR0EsSUFBT0EseUJBQXlCLDZCQUFoQzs7QUFFQSxJQUFNQyxZQUFZLENBQ2hCLHNDQUFxQkMsSUFETCxFQUVoQixvQkFGZ0IsQ0FBbEI7O2tCQUtlQyxRQUNFQyxNQURGLENBQ1NKLHNCQURULEVBQ2lDQyxTQURqQyxFQUVFSSxVQUZGLDBFQUdFQyxTQUhGLDBFQUlFQyxRQUpGLGdGIiwiZmlsZSI6IjQ5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVkYVN0ZXBXYXlFYXN5V2l6YXJkRm9ybUdlbkNvbnRyb2xsZXIsIHtcbiAgU1RFUF9XQVlfV0laQVJEX0NPTlRST0xMRVJfTkFNRVxufSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi9zdGVwd2F5LndpemFyZC5jb250cm9sbGVyJztcbmltcG9ydCBlZGFTdGVwV2F5RWFzeVdpemFyZEZvcm1HZW5EaXJlY3RpdmUsIHtcbiAgU1RFUF9XQVlfV0laQVJEX0RJUkVDVElWRV9OQU1FXG59ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL3N0ZXB3YXkud2l6YXJkLmRpcmVjdGl2ZSc7XG5pbXBvcnQgZWFzeVdpemFyZEZvcm1TdGVwV2F5Q29uZmlnLCB7XG4gIEVBU1lfV0laQVJEX0ZPUk1fU1RFUF9XQVlfQ09ORklHX05BTUVcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vc3RlcHdheS53aXphcmQucHJvdmlkZXInO1xuaW1wb3J0IGFkZFN0ZXBDb250ZW50TW9kdWxlICAgICAgICAgICAgIGZyb20gJy4vYWRkU3RlcENvbnRlbnQvc3RlcHdheS53aXphcmQuYWRkU3RlcENvbnRlbnQubW9kdWxlJztcblxuXG5jb25zdCAgU1RFUF9XQVlfV0laQVJEX01PRFVMRSA9ICdlYXN5V2l6YXJkRm9ybVN0ZXB3YXlNb2R1bGUnO1xuXG5jb25zdCBUT19JTkpFQ1QgPSBbXG4gIGFkZFN0ZXBDb250ZW50TW9kdWxlLm5hbWUsXG4gICdtZ28tYW5ndWxhci13aXphcmQnXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShTVEVQX1dBWV9XSVpBUkRfTU9EVUxFLCBUT19JTkpFQ1QpXG4gICAgICAgICAgICAgICAgLmNvbnRyb2xsZXIoU1RFUF9XQVlfV0laQVJEX0NPTlRST0xMRVJfTkFNRSwgZWRhU3RlcFdheUVhc3lXaXphcmRGb3JtR2VuQ29udHJvbGxlcilcbiAgICAgICAgICAgICAgICAuZGlyZWN0aXZlKFNURVBfV0FZX1dJWkFSRF9ESVJFQ1RJVkVfTkFNRSwgZWRhU3RlcFdheUVhc3lXaXphcmRGb3JtR2VuRGlyZWN0aXZlKVxuICAgICAgICAgICAgICAgIC5wcm92aWRlcihFQVNZX1dJWkFSRF9GT1JNX1NURVBfV0FZX0NPTkZJR19OQU1FLCBlYXN5V2l6YXJkRm9ybVN0ZXBXYXlDb25maWcpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvd2l6YXJkL3N0ZXB3YXkud2l6YXJkLm1vZHVsZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 50 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.STEP_WAY_WIZARD_CONTROLLERAS_NAME = exports.STEP_WAY_WIZARD_CONTROLLER_NAME = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _stepwayWizardController = __webpack_require__(51);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar STEP_WAY_WIZARD_CONTROLLER_NAME = 'edaStepWayEasyWizardFormGenController';\nvar STEP_WAY_WIZARD_CONTROLLERAS_NAME = 'vm';\n\nvar edaStepWayEasyWizardFormGenController = function () {\n function edaStepWayEasyWizardFormGenController(WizardHandler, easyFormGenVersion, $filter, toaster, $timeout, $uibModal, $log, easyWizardFormStepWayConfig) {\n _classCallCheck(this, edaStepWayEasyWizardFormGenController);\n\n this.easyFormGenVersion = easyFormGenVersion;\n this.$filter = $filter;\n this.toaster = toaster;\n this.$timeout = $timeout;\n this.$modal = $uibModal;\n this.$log = $log;\n this.easyWizardFormStepWayConfig = easyWizardFormStepWayConfig;\n this.wizardHandler = WizardHandler;\n\n this.init();\n }\n\n _createClass(edaStepWayEasyWizardFormGenController, [{\n key: 'init',\n value: function init() {\n this.dataModel = {};\n this.easyFormGeneratorVERSION = this.easyFormGenVersion;\n this.debug = (0, _stepwayWizardController.initDebugModel)();\n this.tab = (0, _stepwayWizardController.initTabModel)(this.easyWizardFormStepWayConfig.isPreviewPanelVisible(), this.easyWizardFormStepWayConfig.arePreviewModelsVisible());\n this.configuration = {}; //configuration model (contains array of lines which contains array of columns)\n this.nyaSelect = {};\n this.editControlModalSize = 'lg';\n this.previewLoadedForm = {\n fieldsModel: []\n };\n this.configurationLoaded = {};\n this.returnSaveEvent = false;\n this.configuration.steps = this.configuration.steps || [];\n this.configuration.steps.push({\n easyFormGeneratorModel: {}\n });\n }\n }, {\n key: 'onSubmit',\n value: function onSubmit() {\n this.toaster.pop({\n type: 'info',\n timeout: 2000,\n title: 'it should save data model if it were not in editor',\n showCloseButton: true\n });\n return true;\n }\n }, {\n key: 'leftThisStep',\n value: function leftThisStep(indexStep) {\n if (indexStep > -1) {\n if (this.configuration.steps[indexStep - 1]) {\n var currentStepObj = this.configuration.steps[indexStep];\n this.configuration.steps.splice(indexStep, 1);\n this.configuration.steps.splice(indexStep - 1, 0, currentStepObj);\n this.wizard.goTo(indexStep - 1);\n }\n }\n }\n }, {\n key: 'rightThisStep',\n value: function rightThisStep(indexStep) {\n if (indexStep > -1) {\n if (this.configuration.steps[indexStep + 1]) {\n var currentStepObj = this.configuration.steps[indexStep];\n this.configuration.steps.splice(indexStep, 1);\n this.configuration.steps.splice(indexStep + 1, 0, currentStepObj);\n this.wizard.goTo(indexStep + 1);\n }\n }\n }\n }, {\n key: 'addNewstep',\n value: function addNewstep() {\n this.configuration.steps = this.configuration.steps || [];\n this.configuration.steps.push({\n easyFormGeneratorModel: {}\n });\n this.wizard.goTo(this.configuration.steps.length - 1);\n }\n }, {\n key: 'removeThisStep',\n value: function removeThisStep(index) {\n if (index > -1) {\n if (this.configuration.steps.length > 1) {\n this.configuration.steps.splice(index, 1);\n this.wizard.goTo(Math.max(index - 1, 0));\n } else {\n this.$timeout(function () {\n this.toaster.pop({\n type: 'warning',\n title: 'Last step',\n body: 'Can\\'t delete the last step',\n showCloseButton: true\n });\n }, 100);\n }\n }\n }\n\n // previewExistingform(formlyform) {\n // const configlines = JSON.parse(formlyform.formlyField);\n // //here to replace with $scope.configuration : initialise configuration with lines\n // this.configurationLoaded = {};\n // this.$formlyProxy.bindConfigurationLines(this.configurationLoaded,configlines);\n // this.$formlyProxy.applyConfigurationToformlyModel(this.configurationLoaded, this.previewLoadedForm.fieldsModel, this.dataModel);\n // this.wfFormFieldsOnlyNeededProperties = angular.copy(this.wfFormFields);\n // this.previewLoadedForm.cancelButtonText = formlyform.cancelButtonText;\n // this.previewLoadedForm.submitButtonText = formlyform.submitButtonText;\n // }\n\n\n }, {\n key: 'saveThisForm',\n value: function saveThisForm() {\n this.toaster.pop({\n type: 'wait',\n timeout: 3000,\n title: ': Form is being saved',\n body: 'Fake for demo: Wait.',\n showCloseButton: true\n });\n this.returnSaveEvent = true;\n return true;\n }\n }, {\n key: 'wizard',\n get: function get() {\n this.wizardInstance = this.wizardInstance || this.wizardHandler.wizard();\n return this.wizardInstance;\n }\n }]);\n\n return edaStepWayEasyWizardFormGenController;\n}();\n\nvar toInject = ['WizardHandler', 'easyFormGenVersion', '$filter', 'toaster', '$timeout', '$uibModal', '$log', 'easyWizardFormStepWayConfig'];\n\nedaStepWayEasyWizardFormGenController.$inject = toInject;\nexports.default = edaStepWayEasyWizardFormGenController;\nexports.STEP_WAY_WIZARD_CONTROLLER_NAME = STEP_WAY_WIZARD_CONTROLLER_NAME;\nexports.STEP_WAY_WIZARD_CONTROLLERAS_NAME = STEP_WAY_WIZARD_CONTROLLERAS_NAME;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy93aXphcmQvc3RlcHdheS53aXphcmQuY29udHJvbGxlci5qcz9lOGVlIl0sIm5hbWVzIjpbIlNURVBfV0FZX1dJWkFSRF9DT05UUk9MTEVSX05BTUUiLCJTVEVQX1dBWV9XSVpBUkRfQ09OVFJPTExFUkFTX05BTUUiLCJlZGFTdGVwV2F5RWFzeVdpemFyZEZvcm1HZW5Db250cm9sbGVyIiwiV2l6YXJkSGFuZGxlciIsImVhc3lGb3JtR2VuVmVyc2lvbiIsIiRmaWx0ZXIiLCJ0b2FzdGVyIiwiJHRpbWVvdXQiLCIkdWliTW9kYWwiLCIkbG9nIiwiZWFzeVdpemFyZEZvcm1TdGVwV2F5Q29uZmlnIiwiJG1vZGFsIiwid2l6YXJkSGFuZGxlciIsImluaXQiLCJkYXRhTW9kZWwiLCJlYXN5Rm9ybUdlbmVyYXRvclZFUlNJT04iLCJkZWJ1ZyIsInRhYiIsImlzUHJldmlld1BhbmVsVmlzaWJsZSIsImFyZVByZXZpZXdNb2RlbHNWaXNpYmxlIiwiY29uZmlndXJhdGlvbiIsIm55YVNlbGVjdCIsImVkaXRDb250cm9sTW9kYWxTaXplIiwicHJldmlld0xvYWRlZEZvcm0iLCJmaWVsZHNNb2RlbCIsImNvbmZpZ3VyYXRpb25Mb2FkZWQiLCJyZXR1cm5TYXZlRXZlbnQiLCJzdGVwcyIsInB1c2giLCJlYXN5Rm9ybUdlbmVyYXRvck1vZGVsIiwicG9wIiwidHlwZSIsInRpbWVvdXQiLCJ0aXRsZSIsInNob3dDbG9zZUJ1dHRvbiIsImluZGV4U3RlcCIsImN1cnJlbnRTdGVwT2JqIiwic3BsaWNlIiwid2l6YXJkIiwiZ29UbyIsImxlbmd0aCIsImluZGV4IiwiTWF0aCIsIm1heCIsImJvZHkiLCJ3aXphcmRJbnN0YW5jZSIsInRvSW5qZWN0IiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7QUFLQSxJQUFNQSxrQ0FBa0MsdUNBQXhDO0FBQ0EsSUFBTUMsb0NBQW9DLElBQTFD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QUFpQjtBQUxGLE9BQWpCO0FBT0EsV0FBS1IsZUFBTCxHQUF1QixJQUF2QjtBQUNBLGFBQU8sSUFBUDtBQUNEOzs7d0JBdEZZO0FBQ1gsV0FBS21CLGNBQUwsR0FBc0IsS0FBS0EsY0FBTCxJQUF1QixLQUFLakMsYUFBTCxDQUFtQjBCLE1BQW5CLEVBQTdDO0FBQ0EsYUFBTyxLQUFLTyxjQUFaO0FBQ0Q7Ozs7OztBQXVGSCxJQUFNQyxXQUFXLENBQ2YsZUFEZSxFQUVmLG9CQUZlLEVBR2YsU0FIZSxFQUlmLFNBSmUsRUFLZixVQUxlLEVBTWYsV0FOZSxFQU9mLE1BUGUsRUFRZiw2QkFSZSxDQUFqQjs7QUFXQTVDLHNDQUFzQzZDLE9BQXRDLEdBQWdERCxRQUFoRDtrQkFDZTVDLHFDO1FBRWJGLCtCLEdBQUFBLCtCO1FBQ0FDLGlDLEdBQUFBLGlDIiwiZmlsZSI6IjUwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaW5pdERlYnVnTW9kZWwsXG4gIGluaXRUYWJNb2RlbCxcbn0gZnJvbSAnLi9zdGVwd2F5LndpemFyZC5jb250cm9sbGVyLmhlbHBlcnMnO1xuXG5jb25zdCBTVEVQX1dBWV9XSVpBUkRfQ09OVFJPTExFUl9OQU1FID0gJ2VkYVN0ZXBXYXlFYXN5V2l6YXJkRm9ybUdlbkNvbnRyb2xsZXInO1xuY29uc3QgU1RFUF9XQVlfV0laQVJEX0NPTlRST0xMRVJBU19OQU1FID0gJ3ZtJztcblxuY2xhc3MgZWRhU3RlcFdheUVhc3lXaXphcmRGb3JtR2VuQ29udHJvbGxlciB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgV2l6YXJkSGFuZGxlcixcbiAgICBlYXN5Rm9ybUdlblZlcnNpb24sXG4gICAgJGZpbHRlcixcbiAgICB0b2FzdGVyLFxuICAgICR0aW1lb3V0LFxuICAgICR1aWJNb2RhbCxcbiAgICAkbG9nLFxuICAgIGVhc3lXaXphcmRGb3JtU3RlcFdheUNvbmZpZykge1xuXG4gICAgdGhpcy5lYXN5Rm9ybUdlblZlcnNpb24gPSBlYXN5Rm9ybUdlblZlcnNpb247XG4gICAgdGhpcy4kZmlsdGVyID0gJGZpbHRlcjtcbiAgICB0aGlzLnRvYXN0ZXIgPSB0b2FzdGVyO1xuICAgIHRoaXMuJHRpbWVvdXQgPSAkdGltZW91dDtcbiAgICB0aGlzLiRtb2RhbCA9ICR1aWJNb2RhbDtcbiAgICB0aGlzLiRsb2cgPSAkbG9nO1xuICAgIHRoaXMuZWFzeVdpemFyZEZvcm1TdGVwV2F5Q29uZmlnID0gZWFzeVdpemFyZEZvcm1TdGVwV2F5Q29uZmlnO1xuICAgIHRoaXMud2l6YXJkSGFuZGxlciA9IFdpemFyZEhhbmRsZXI7XG5cbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGluaXQoKSB7ICAgIFxuICAgIHRoaXMuZGF0YU1vZGVsID0ge307XG4gICAgdGhpcy5lYXN5Rm9ybUdlbmVyYXRvclZFUlNJT04gPSB0aGlzLmVhc3lGb3JtR2VuVmVyc2lvbjtcbiAgICB0aGlzLmRlYnVnID0gaW5pdERlYnVnTW9kZWwoKTtcbiAgICB0aGlzLnRhYiA9IGluaXRUYWJNb2RlbCh0aGlzLmVhc3lXaXphcmRGb3JtU3RlcFdheUNvbmZpZy5pc1ByZXZpZXdQYW5lbFZpc2libGUoKSwgdGhpcy5lYXN5V2l6YXJkRm9ybVN0ZXBXYXlDb25maWcuYXJlUHJldmlld01vZGVsc1Zpc2libGUoKSk7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0ge307IC8vY29uZmlndXJhdGlvbiBtb2RlbCAoY29udGFpbnMgYXJyYXkgb2YgbGluZXMgd2hpY2ggY29udGFpbnMgYXJyYXkgb2YgY29sdW1ucylcbiAgICB0aGlzLm55YVNlbGVjdCA9IHt9O1xuICAgIHRoaXMuZWRpdENvbnRyb2xNb2RhbFNpemUgPSAnbGcnO1xuICAgIHRoaXMucHJldmlld0xvYWRlZEZvcm0gPSB7XG4gICAgICBmaWVsZHNNb2RlbDogW11cbiAgICB9O1xuICAgIHRoaXMuY29uZmlndXJhdGlvbkxvYWRlZCA9IHt9O1xuICAgIHRoaXMucmV0dXJuU2F2ZUV2ZW50ID0gZmFsc2U7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uLnN0ZXBzID0gdGhpcy5jb25maWd1cmF0aW9uLnN0ZXBzIHx8IFtdO1xuICAgIHRoaXMuY29uZmlndXJhdGlvbi5zdGVwcy5wdXNoKHtcbiAgICAgIGVhc3lGb3JtR2VuZXJhdG9yTW9kZWw6IHt9XG4gICAgfSk7XG5cbiAgfVxuXG4gIGdldCB3aXphcmQoKSB7XG4gICAgdGhpcy53aXphcmRJbnN0YW5jZSA9IHRoaXMud2l6YXJkSW5zdGFuY2UgfHwgdGhpcy53aXphcmRIYW5kbGVyLndpemFyZCgpO1xuICAgIHJldHVybiB0aGlzLndpemFyZEluc3RhbmNlO1xuICB9XG5cbiAgb25TdWJtaXQoKSB7ICAgIFxuICAgIHRoaXMudG9hc3Rlci5wb3Aoe1xuICAgICAgdHlwZTogJ2luZm8nLFxuICAgICAgdGltZW91dDogMjAwMCxcbiAgICAgIHRpdGxlOiAnaXQgc2hvdWxkIHNhdmUgZGF0YSBtb2RlbCBpZiBpdCB3ZXJlIG5vdCBpbiBlZGl0b3InLCAgICAgIFxuICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG4gICAgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGxlZnRUaGlzU3RlcChpbmRleFN0ZXApIHtcbiAgICBpZiAoaW5kZXhTdGVwID4gLTEpIHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uc3RlcHNbaW5kZXhTdGVwIC0gMV0pIHtcbiAgICAgICAgdmFyIGN1cnJlbnRTdGVwT2JqID0gdGhpcy5jb25maWd1cmF0aW9uLnN0ZXBzW2luZGV4U3RlcF07XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5zdGVwcy5zcGxpY2UoaW5kZXhTdGVwLCAxKTtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnN0ZXBzLnNwbGljZSgoaW5kZXhTdGVwIC0gMSksIDAsIGN1cnJlbnRTdGVwT2JqKTtcbiAgICAgICAgdGhpcy53aXphcmQuZ29UbyhpbmRleFN0ZXAgLSAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByaWdodFRoaXNTdGVwKGluZGV4U3RlcCkge1xuICAgIGlmIChpbmRleFN0ZXAgPiAtMSkge1xuICAgICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5zdGVwc1tpbmRleFN0ZXAgKyAxXSkge1xuICAgICAgICB2YXIgY3VycmVudFN0ZXBPYmogPSB0aGlzLmNvbmZpZ3VyYXRpb24uc3RlcHNbaW5kZXhTdGVwXTtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnN0ZXBzLnNwbGljZShpbmRleFN0ZXAsIDEpO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc3RlcHMuc3BsaWNlKChpbmRleFN0ZXAgKyAxKSwgMCwgY3VycmVudFN0ZXBPYmopO1xuICAgICAgICB0aGlzLndpemFyZC5nb1RvKGluZGV4U3RlcCArIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZE5ld3N0ZXAoKSB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uLnN0ZXBzID0gdGhpcy5jb25maWd1cmF0aW9uLnN0ZXBzIHx8IFtdO1xuICAgIHRoaXMuY29uZmlndXJhdGlvbi5zdGVwcy5wdXNoKHtcbiAgICAgIGVhc3lGb3JtR2VuZXJhdG9yTW9kZWw6IHt9XG4gICAgfSk7XG4gICAgdGhpcy53aXphcmQuZ29Ubyh0aGlzLmNvbmZpZ3VyYXRpb24uc3RlcHMubGVuZ3RoIC0gMSk7XG4gIH1cblxuICByZW1vdmVUaGlzU3RlcChpbmRleCkge1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLnN0ZXBzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnN0ZXBzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMud2l6YXJkLmdvVG8oTWF0aC5tYXgoaW5kZXggLSAxLCAwKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiR0aW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aGlzLnRvYXN0ZXIucG9wKHtcbiAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICAgICAgICAgIHRpdGxlOiAnTGFzdCBzdGVwJyxcbiAgICAgICAgICAgIGJvZHk6ICdDYW5cXCd0IGRlbGV0ZSB0aGUgbGFzdCBzdGVwJyxcbiAgICAgICAgICAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAxMDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgLy8gcHJldmlld0V4aXN0aW5nZm9ybShmb3JtbHlmb3JtKSB7XG4gIC8vICAgY29uc3QgY29uZmlnbGluZXMgPSBKU09OLnBhcnNlKGZvcm1seWZvcm0uZm9ybWx5RmllbGQpO1xuICAvLyAgIC8vaGVyZSB0byByZXBsYWNlIHdpdGggJHNjb3BlLmNvbmZpZ3VyYXRpb24gOiBpbml0aWFsaXNlIGNvbmZpZ3VyYXRpb24gd2l0aCBsaW5lc1xuICAvLyAgIHRoaXMuY29uZmlndXJhdGlvbkxvYWRlZCA9IHt9O1xuICAvLyAgIHRoaXMuJGZvcm1seVByb3h5LmJpbmRDb25maWd1cmF0aW9uTGluZXModGhpcy5jb25maWd1cmF0aW9uTG9hZGVkLGNvbmZpZ2xpbmVzKTtcbiAgLy8gICB0aGlzLiRmb3JtbHlQcm94eS5hcHBseUNvbmZpZ3VyYXRpb25Ub2Zvcm1seU1vZGVsKHRoaXMuY29uZmlndXJhdGlvbkxvYWRlZCwgdGhpcy5wcmV2aWV3TG9hZGVkRm9ybS5maWVsZHNNb2RlbCwgdGhpcy5kYXRhTW9kZWwpO1xuICAvLyAgIHRoaXMud2ZGb3JtRmllbGRzT25seU5lZWRlZFByb3BlcnRpZXMgPSBhbmd1bGFyLmNvcHkodGhpcy53ZkZvcm1GaWVsZHMpO1xuICAvLyAgIHRoaXMucHJldmlld0xvYWRlZEZvcm0uY2FuY2VsQnV0dG9uVGV4dCA9IGZvcm1seWZvcm0uY2FuY2VsQnV0dG9uVGV4dDtcbiAgLy8gICB0aGlzLnByZXZpZXdMb2FkZWRGb3JtLnN1Ym1pdEJ1dHRvblRleHQgPSBmb3JtbHlmb3JtLnN1Ym1pdEJ1dHRvblRleHQ7XG4gIC8vIH1cblxuXG4gIHNhdmVUaGlzRm9ybSgpIHtcbiAgICB0aGlzLnRvYXN0ZXIucG9wKHtcbiAgICAgIHR5cGU6ICd3YWl0JyxcbiAgICAgIHRpbWVvdXQ6IDMwMDAsXG4gICAgICB0aXRsZTogJzogRm9ybSBpcyBiZWluZyBzYXZlZCcsXG4gICAgICBib2R5OiAnRmFrZSBmb3IgZGVtbzogV2FpdC4nLFxuICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlXG4gICAgfSk7ICAgIFxuICAgIHRoaXMucmV0dXJuU2F2ZUV2ZW50ID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5cbmNvbnN0IHRvSW5qZWN0ID0gW1xuICAnV2l6YXJkSGFuZGxlcicsXG4gICdlYXN5Rm9ybUdlblZlcnNpb24nLFxuICAnJGZpbHRlcicsXG4gICd0b2FzdGVyJyxcbiAgJyR0aW1lb3V0JyxcbiAgJyR1aWJNb2RhbCcsXG4gICckbG9nJyxcbiAgJ2Vhc3lXaXphcmRGb3JtU3RlcFdheUNvbmZpZycsXG5dO1xuXG5lZGFTdGVwV2F5RWFzeVdpemFyZEZvcm1HZW5Db250cm9sbGVyLiRpbmplY3QgPSB0b0luamVjdDtcbmV4cG9ydCBkZWZhdWx0IGVkYVN0ZXBXYXlFYXN5V2l6YXJkRm9ybUdlbkNvbnRyb2xsZXI7XG5leHBvcnQge1xuICBTVEVQX1dBWV9XSVpBUkRfQ09OVFJPTExFUl9OQU1FLFxuICBTVEVQX1dBWV9XSVpBUkRfQ09OVFJPTExFUkFTX05BTUVcbn07XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvd2l6YXJkL3N0ZXB3YXkud2l6YXJkLmNvbnRyb2xsZXIuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 51 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* global angular */\nvar DEBUG_MODEL = {\n showDebug: false,\n configurationModelNumberofLines: 1\n};\n\nvar initDebugModel = function initDebugModel() {\n return angular.copy(DEBUG_MODEL);\n};\n\nvar DEFAULT_TAB_MODEL = {\n editTab: {\n active: true\n },\n previewTab: {\n active: false,\n tabVisible: true,\n modelsVisible: true\n }\n};\n\nvar initTabModel = function initTabModel(isPreviewPanelVisible, arePreviewModelsVisible) {\n var _tabModel = angular.copy(DEFAULT_TAB_MODEL);\n angular.extend(_tabModel.previewTab, {\n tabVisible: isPreviewPanelVisible,\n modelsVisible: arePreviewModelsVisible\n });\n return _tabModel;\n};\n\nvar COLUMN_TEMPLATE = {\n numColumn: -1,\n exist: true,\n control: {\n type: 'none',\n key: 'none',\n subtype: 'none'\n }\n};\n\nvar initColumnTemplate = function initColumnTemplate() {\n return angular.copy(COLUMN_TEMPLATE);\n};\n\nvar LINE_TEMPLATE = {\n line: -1,\n activeColumn: 1,\n columns: [{\n numColumn: 1,\n exist: true,\n control: {\n type: 'none',\n key: 'none'\n }\n }]\n};\nvar initLineTemplate = function initLineTemplate() {\n return angular.copy(LINE_TEMPLATE);\n};\n\nexports.initDebugModel = initDebugModel;\nexports.initTabModel = initTabModel;\nexports.initColumnTemplate = initColumnTemplate;\nexports.initLineTemplate = initLineTemplate;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy93aXphcmQvc3RlcHdheS53aXphcmQuY29udHJvbGxlci5oZWxwZXJzLmpzP2Y3YTciXSwibmFtZXMiOlsiREVCVUdfTU9ERUwiLCJzaG93RGVidWciLCJjb25maWd1cmF0aW9uTW9kZWxOdW1iZXJvZkxpbmVzIiwiaW5pdERlYnVnTW9kZWwiLCJhbmd1bGFyIiwiY29weSIsIkRFRkFVTFRfVEFCX01PREVMIiwiZWRpdFRhYiIsImFjdGl2ZSIsInByZXZpZXdUYWIiLCJ0YWJWaXNpYmxlIiwibW9kZWxzVmlzaWJsZSIsImluaXRUYWJNb2RlbCIsImlzUHJldmlld1BhbmVsVmlzaWJsZSIsImFyZVByZXZpZXdNb2RlbHNWaXNpYmxlIiwiX3RhYk1vZGVsIiwiZXh0ZW5kIiwiQ09MVU1OX1RFTVBMQVRFIiwibnVtQ29sdW1uIiwiZXhpc3QiLCJjb250cm9sIiwidHlwZSIsImtleSIsInN1YnR5cGUiLCJpbml0Q29sdW1uVGVtcGxhdGUiLCJMSU5FX1RFTVBMQVRFIiwibGluZSIsImFjdGl2ZUNvbHVtbiIsImNvbHVtbnMiLCJpbml0TGluZVRlbXBsYXRlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0EsSUFBTUEsY0FBYztBQUNsQkMsYUFBWSxLQURNO0FBRWxCQyxtQ0FBa0M7QUFGaEIsQ0FBcEI7O0FBS0EsSUFBTUMsaUJBQWlCLFNBQWpCQSxjQUFpQjtBQUFBLFNBQU1DLFFBQVFDLElBQVIsQ0FBYUwsV0FBYixDQUFOO0FBQUEsQ0FBdkI7O0FBRUEsSUFBTU0sb0JBQW9CO0FBQ3hCQyxXQUFlO0FBQ2JDLFlBQVM7QUFESSxHQURTO0FBSXhCQyxjQUFlO0FBQ2JELFlBQWlCLEtBREo7QUFFYkUsZ0JBQWlCLElBRko7QUFHYkMsbUJBQWdCO0FBSEg7QUFKUyxDQUExQjs7QUFXQSxJQUFNQyxlQUFlLFNBQWZBLFlBQWUsQ0FBQ0MscUJBQUQsRUFBd0JDLHVCQUF4QixFQUFvRDtBQUN2RSxNQUFNQyxZQUFZWCxRQUFRQyxJQUFSLENBQWFDLGlCQUFiLENBQWxCO0FBQ0FGLFVBQVFZLE1BQVIsQ0FBZUQsVUFBVU4sVUFBekIsRUFBcUM7QUFDbkNDLGdCQUFpQkcscUJBRGtCO0FBRW5DRixtQkFBZ0JHO0FBRm1CLEdBQXJDO0FBSUEsU0FBT0MsU0FBUDtBQUNELENBUEQ7O0FBU0EsSUFBTUUsa0JBQW1CO0FBQ3ZCQyxhQUFlLENBQUMsQ0FETztBQUV2QkMsU0FBYyxJQUZTO0FBR3ZCQyxXQUFlO0FBQ2JDLFVBQVMsTUFESTtBQUViQyxTQUFXLE1BRkU7QUFHYkMsYUFBVztBQUhFO0FBSFEsQ0FBekI7O0FBVUEsSUFBTUMscUJBQXFCLFNBQXJCQSxrQkFBcUI7QUFBQSxTQUFNcEIsUUFBUUMsSUFBUixDQUFhWSxlQUFiLENBQU47QUFBQSxDQUEzQjs7QUFFQSxJQUFNUSxnQkFBZ0I7QUFDcEJDLFFBQUssQ0FBQyxDQURjO0FBRXBCQyxnQkFBZSxDQUZLO0FBR3BCQyxXQUFTLENBQ1A7QUFDRVYsZUFBVyxDQURiO0FBRUVDLFdBQU0sSUFGUjtBQUdFQyxhQUFTO0FBQ1BDLFlBQUssTUFERTtBQUVQQyxXQUFLO0FBRkU7QUFIWCxHQURPO0FBSFcsQ0FBdEI7QUFjQSxJQUFNTyxtQkFBbUIsU0FBbkJBLGdCQUFtQjtBQUFBLFNBQU16QixRQUFRQyxJQUFSLENBQWFvQixhQUFiLENBQU47QUFBQSxDQUF6Qjs7UUFHRXRCLGMsR0FBQUEsYztRQUNBUyxZLEdBQUFBLFk7UUFDQVksa0IsR0FBQUEsa0I7UUFDQUssZ0IsR0FBQUEsZ0IiLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgYW5ndWxhciAqL1xuY29uc3QgREVCVUdfTU9ERUwgPSB7XG4gIHNob3dEZWJ1ZyA6IGZhbHNlLFxuICBjb25maWd1cmF0aW9uTW9kZWxOdW1iZXJvZkxpbmVzIDogMVxufTtcblxuY29uc3QgaW5pdERlYnVnTW9kZWwgPSAoKSA9PiBhbmd1bGFyLmNvcHkoREVCVUdfTU9ERUwpO1xuXG5jb25zdCBERUZBVUxUX1RBQl9NT0RFTCA9IHtcbiAgZWRpdFRhYiAgICAgIDoge1xuICAgIGFjdGl2ZSA6IHRydWVcbiAgfSxcbiAgcHJldmlld1RhYiAgIDoge1xuICAgIGFjdGl2ZSAgICAgICAgIDogZmFsc2UsXG4gICAgdGFiVmlzaWJsZSAgICAgOiB0cnVlLFxuICAgIG1vZGVsc1Zpc2libGUgOiB0cnVlXG4gIH1cbn07XG5cbmNvbnN0IGluaXRUYWJNb2RlbCA9IChpc1ByZXZpZXdQYW5lbFZpc2libGUsIGFyZVByZXZpZXdNb2RlbHNWaXNpYmxlKSA9PiB7XG4gIGNvbnN0IF90YWJNb2RlbCA9IGFuZ3VsYXIuY29weShERUZBVUxUX1RBQl9NT0RFTCk7XG4gIGFuZ3VsYXIuZXh0ZW5kKF90YWJNb2RlbC5wcmV2aWV3VGFiLCB7XG4gICAgdGFiVmlzaWJsZSAgICAgOiBpc1ByZXZpZXdQYW5lbFZpc2libGUsXG4gICAgbW9kZWxzVmlzaWJsZSA6IGFyZVByZXZpZXdNb2RlbHNWaXNpYmxlXG4gIH0pO1xuICByZXR1cm4gX3RhYk1vZGVsO1xufTtcblxuY29uc3QgQ09MVU1OX1RFTVBMQVRFID0gIHtcbiAgbnVtQ29sdW1uICAgIDogLTEsXG4gIGV4aXN0ICAgICAgICA6dHJ1ZSxcbiAgY29udHJvbCAgICAgIDoge1xuICAgIHR5cGUgICAgOidub25lJyxcbiAgICBrZXkgICAgICA6ICdub25lJyxcbiAgICBzdWJ0eXBlICA6ICdub25lJ1xuICB9XG59O1xuXG5jb25zdCBpbml0Q29sdW1uVGVtcGxhdGUgPSAoKSA9PiBhbmd1bGFyLmNvcHkoQ09MVU1OX1RFTVBMQVRFKTtcblxuY29uc3QgTElORV9URU1QTEFURSA9IHtcbiAgbGluZTotMSxcbiAgYWN0aXZlQ29sdW1uIDogMSxcbiAgY29sdW1uczogW1xuICAgIHtcbiAgICAgIG51bUNvbHVtbjogMSxcbiAgICAgIGV4aXN0OnRydWUsXG4gICAgICBjb250cm9sOiB7XG4gICAgICAgIHR5cGU6J25vbmUnLFxuICAgICAgICBrZXk6ICdub25lJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxufTtcbmNvbnN0IGluaXRMaW5lVGVtcGxhdGUgPSAoKSA9PiBhbmd1bGFyLmNvcHkoTElORV9URU1QTEFURSk7XG5cbmV4cG9ydCB7XG4gIGluaXREZWJ1Z01vZGVsLFxuICBpbml0VGFiTW9kZWwsXG4gIGluaXRDb2x1bW5UZW1wbGF0ZSxcbiAgaW5pdExpbmVUZW1wbGF0ZVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL3dpemFyZC9zdGVwd2F5LndpemFyZC5jb250cm9sbGVyLmhlbHBlcnMuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 52 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.STEP_WAY_WIZARD_DIRECTIVE_NAME = undefined;\n\nvar _stepwayWizardTemplate = __webpack_require__(53);\n\nvar _stepwayWizardTemplate2 = _interopRequireDefault(_stepwayWizardTemplate);\n\nvar _stepwayWizard = __webpack_require__(50);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar STEP_WAY_WIZARD_DIRECTIVE_NAME = 'edaStepWayEasyWizardFormGen';\n\nfunction edaStepWayEasyWizardFormGenDirective() {\n\n var directive = {\n restrict: 'E',\n scope: {\n edaEasyFormGeneratorModel: '=',\n edaSaveFormEvent: '&edaSaveFormEvent'\n },\n controller: _stepwayWizard.STEP_WAY_WIZARD_CONTROLLER_NAME,\n controllerAs: _stepwayWizard.STEP_WAY_WIZARD_CONTROLLERAS_NAME,\n replace: false,\n template: _stepwayWizardTemplate2.default,\n link: linkFct\n };\n return directive;\n\n function linkFct(scope) {\n\n scope.$watch(function () {\n return scope.edaEasyFormGeneratorModel;\n }, function () {\n return loadExistingConfigurationModel();\n }, true);\n\n //watch \"scope.vm.returnSaveEvent\"\" = catch saving form eventscope.vm.wfFormFieldsOnlyNeededProperties = angular.copy(scope.vm.wfFormFields);\n scope.$watch(function () {\n return scope.vm.returnSaveEvent;\n }, function (newValue) {\n if (newValue === true) {\n\n var _easyFormGeneratorModel = scope.vm.configuration.steps.map(function (step) {\n var easyFormGeneratorModel = step.easyFormGeneratorModel;\n easyFormGeneratorModel.formlyFieldsModel.forEach(function (model) {\n delete model.formControl;\n });\n return {\n formName: step.title,\n // btnSubmitText: easyFormGeneratorModel.configuration.submitButtonText,\n // btnCancelText: easyFormGeneratorModel.configuration.cancelButtonText,\n edaFieldsModel: easyFormGeneratorModel.edaFieldsModel,\n edaFieldsModelStringified: easyFormGeneratorModel.edaFieldsModelStringified,\n formlyFieldsModel: easyFormGeneratorModel.formlyFieldsModel,\n dataModel: easyFormGeneratorModel.dataModel\n };\n });\n\n scope.edaSaveFormEvent({\n edaEasyFormGeneratorModel: _easyFormGeneratorModel\n });\n //back to false, waiting next save event\n scope.vm.returnSaveEvent = false;\n }\n });\n\n function loadExistingConfigurationModel() {\n var steps = scope.edaEasyFormGeneratorModel.map(function (step) {\n var item = {\n title: step.formName,\n easyFormGeneratorModel: {\n configuration: step.configuration,\n edaFieldsModel: step.edaFieldsModel,\n edaFieldsModelStringified: step.edaFieldsModelStringified,\n formlyFieldsModel: step.formlyFieldsModel,\n dataModel: step.dataModel,\n loaded: {\n configuration: step.configuration,\n edaFieldsModel: step.edaFieldsModel,\n edaFieldsModelStringified: step.edaFieldsModelStringified,\n formlyFieldsModel: step.formlyFieldsModel,\n dataModel: step.dataModel\n }\n }\n };\n return item;\n });\n scope.vm.configuration.steps = steps;\n }\n }\n}\n\nedaStepWayEasyWizardFormGenDirective.$inject = [];\n\nexports.default = edaStepWayEasyWizardFormGenDirective;\nexports.STEP_WAY_WIZARD_DIRECTIVE_NAME = STEP_WAY_WIZARD_DIRECTIVE_NAME;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy93aXphcmQvc3RlcHdheS53aXphcmQuZGlyZWN0aXZlLmpzPzg3YTQiXSwibmFtZXMiOlsiU1RFUF9XQVlfV0laQVJEX0RJUkVDVElWRV9OQU1FIiwiZWRhU3RlcFdheUVhc3lXaXphcmRGb3JtR2VuRGlyZWN0aXZlIiwiZGlyZWN0aXZlIiwicmVzdHJpY3QiLCJzY29wZSIsImVkYUVhc3lGb3JtR2VuZXJhdG9yTW9kZWwiLCJlZGFTYXZlRm9ybUV2ZW50IiwiY29udHJvbGxlciIsImNvbnRyb2xsZXJBcyIsInJlcGxhY2UiLCJ0ZW1wbGF0ZSIsImxpbmsiLCJsaW5rRmN0IiwiJHdhdGNoIiwibG9hZEV4aXN0aW5nQ29uZmlndXJhdGlvbk1vZGVsIiwidm0iLCJyZXR1cm5TYXZlRXZlbnQiLCJuZXdWYWx1ZSIsIl9lYXN5Rm9ybUdlbmVyYXRvck1vZGVsIiwiY29uZmlndXJhdGlvbiIsInN0ZXBzIiwibWFwIiwic3RlcCIsImVhc3lGb3JtR2VuZXJhdG9yTW9kZWwiLCJmb3JtbHlGaWVsZHNNb2RlbCIsImZvckVhY2giLCJtb2RlbCIsImZvcm1Db250cm9sIiwiZm9ybU5hbWUiLCJ0aXRsZSIsImVkYUZpZWxkc01vZGVsIiwiZWRhRmllbGRzTW9kZWxTdHJpbmdpZmllZCIsImRhdGFNb2RlbCIsIml0ZW0iLCJsb2FkZWQiLCIkaW5qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQU1BLElBQU1BLGlDQUFpQyw2QkFBdkM7O0FBRUEsU0FBU0Msb0NBQVQsR0FFRTs7QUFFQSxNQUFNQyxZQUFZO0FBQ2hCQyxjQUFVLEdBRE07QUFFaEJDLFdBQU87QUFDTEMsaUNBQTJCLEdBRHRCO0FBRUxDLHdCQUFrQjtBQUZiLEtBRlM7QUFNaEJDLDhEQU5nQjtBQU9oQkMsa0VBUGdCO0FBUWhCQyxhQUFTLEtBUk87QUFTaEJDLDZDQVRnQjtBQVVoQkMsVUFBTUM7QUFWVSxHQUFsQjtBQVlBLFNBQU9WLFNBQVA7O0FBRUEsV0FBU1UsT0FBVCxDQUFpQlIsS0FBakIsRUFBd0I7O0FBRXRCQSxVQUFNUyxNQUFOLENBQWE7QUFBQSxhQUFNVCxNQUFNQyx5QkFBWjtBQUFBLEtBQWIsRUFDRTtBQUFBLGFBQU1TLGdDQUFOO0FBQUEsS0FERixFQUVFLElBRkY7O0FBS0E7QUFDQVYsVUFBTVMsTUFBTixDQUFhO0FBQUEsYUFBTVQsTUFBTVcsRUFBTixDQUFTQyxlQUFmO0FBQUEsS0FBYixFQUNFLFVBQUNDLFFBQUQsRUFBYztBQUNaLFVBQUlBLGFBQWEsSUFBakIsRUFBdUI7O0FBRXJCLFlBQU1DLDBCQUEwQmQsTUFBTVcsRUFBTixDQUFTSSxhQUFULENBQXVCQyxLQUF2QixDQUE2QkMsR0FBN0IsQ0FBaUMsVUFBQ0MsSUFBRCxFQUFVO0FBQ3pFLGNBQUlDLHlCQUF5QkQsS0FBS0Msc0JBQWxDO0FBQ0FBLGlDQUF1QkMsaUJBQXZCLENBQXlDQyxPQUF6QyxDQUFpRCxVQUFDQyxLQUFELEVBQVc7QUFDMUQsbUJBQU9BLE1BQU1DLFdBQWI7QUFDRCxXQUZEO0FBR0EsaUJBQU87QUFDTEMsc0JBQVVOLEtBQUtPLEtBRFY7QUFFTDtBQUNBO0FBQ0FDLDRCQUFnQlAsdUJBQXVCTyxjQUpsQztBQUtMQyx1Q0FBMkJSLHVCQUF1QlEseUJBTDdDO0FBTUxQLCtCQUFtQkQsdUJBQXVCQyxpQkFOckM7QUFPTFEsdUJBQVdULHVCQUF1QlM7QUFQN0IsV0FBUDtBQVVELFNBZitCLENBQWhDOztBQWlCQTVCLGNBQU1FLGdCQUFOLENBQXVCO0FBQ3JCRCxxQ0FBMkJhO0FBRE4sU0FBdkI7QUFHQTtBQUNBZCxjQUFNVyxFQUFOLENBQVNDLGVBQVQsR0FBMkIsS0FBM0I7QUFDRDtBQUNGLEtBM0JIOztBQThCQSxhQUFTRiw4QkFBVCxHQUEwQztBQUN2QyxVQUFNTSxRQUFRaEIsTUFBTUMseUJBQU4sQ0FBZ0NnQixHQUFoQyxDQUFvQyxVQUFDQyxJQUFELEVBQVU7QUFDM0QsWUFBTVcsT0FBTztBQUNYSixpQkFBT1AsS0FBS00sUUFERDtBQUVYTCxrQ0FBd0I7QUFDdEJKLDJCQUFlRyxLQUFLSCxhQURFO0FBRXRCVyw0QkFBZ0JSLEtBQUtRLGNBRkM7QUFHdEJDLHVDQUEyQlQsS0FBS1MseUJBSFY7QUFJdEJQLCtCQUFtQkYsS0FBS0UsaUJBSkY7QUFLdEJRLHVCQUFXVixLQUFLVSxTQUxNO0FBTXRCRSxvQkFBUTtBQUNOZiw2QkFBZUcsS0FBS0gsYUFEZDtBQUVOVyw4QkFBZ0JSLEtBQUtRLGNBRmY7QUFHTkMseUNBQTJCVCxLQUFLUyx5QkFIMUI7QUFJTlAsaUNBQW1CRixLQUFLRSxpQkFKbEI7QUFLTlEseUJBQVdWLEtBQUtVO0FBTFY7QUFOYztBQUZiLFNBQWI7QUFpQkEsZUFBT0MsSUFBUDtBQUNELE9BbkJjLENBQWQ7QUFvQkQ3QixZQUFNVyxFQUFOLENBQVNJLGFBQVQsQ0FBdUJDLEtBQXZCLEdBQStCQSxLQUEvQjtBQUNEO0FBQ0Y7QUFDRjs7QUFFRG5CLHFDQUFxQ2tDLE9BQXJDLEdBQStDLEVBQS9DOztrQkFFZWxDLG9DO1FBRWJELDhCLEdBQUFBLDhCIiwiZmlsZSI6IjUyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVhc3lXaXphcmRGb3JtVGVtcGxhdGUgZnJvbSAnLi9zdGVwd2F5LndpemFyZC50ZW1wbGF0ZS5odG1sJztcbmltcG9ydCB7XG4gIFNURVBfV0FZX1dJWkFSRF9DT05UUk9MTEVSX05BTUUsXG4gIFNURVBfV0FZX1dJWkFSRF9DT05UUk9MTEVSQVNfTkFNRVxufSBmcm9tICcuL3N0ZXB3YXkud2l6YXJkLmNvbnRyb2xsZXInO1xuXG5cbmNvbnN0IFNURVBfV0FZX1dJWkFSRF9ESVJFQ1RJVkVfTkFNRSA9ICdlZGFTdGVwV2F5RWFzeVdpemFyZEZvcm1HZW4nO1xuXG5mdW5jdGlvbiBlZGFTdGVwV2F5RWFzeVdpemFyZEZvcm1HZW5EaXJlY3RpdmUoXG5cbikge1xuXG4gIGNvbnN0IGRpcmVjdGl2ZSA9IHtcbiAgICByZXN0cmljdDogJ0UnLFxuICAgIHNjb3BlOiB7XG4gICAgICBlZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsOiAnPScsXG4gICAgICBlZGFTYXZlRm9ybUV2ZW50OiAnJmVkYVNhdmVGb3JtRXZlbnQnXG4gICAgfSxcbiAgICBjb250cm9sbGVyOiBTVEVQX1dBWV9XSVpBUkRfQ09OVFJPTExFUl9OQU1FLFxuICAgIGNvbnRyb2xsZXJBczogU1RFUF9XQVlfV0laQVJEX0NPTlRST0xMRVJBU19OQU1FLFxuICAgIHJlcGxhY2U6IGZhbHNlLFxuICAgIHRlbXBsYXRlOiBlYXN5V2l6YXJkRm9ybVRlbXBsYXRlLFxuICAgIGxpbms6IGxpbmtGY3RcbiAgfTtcbiAgcmV0dXJuIGRpcmVjdGl2ZTtcblxuICBmdW5jdGlvbiBsaW5rRmN0KHNjb3BlKSB7XG5cbiAgICBzY29wZS4kd2F0Y2goKCkgPT4gc2NvcGUuZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbCxcbiAgICAgICgpID0+IGxvYWRFeGlzdGluZ0NvbmZpZ3VyYXRpb25Nb2RlbCgpLFxuICAgICAgdHJ1ZVxuICAgICk7XG5cbiAgICAvL3dhdGNoIFwic2NvcGUudm0ucmV0dXJuU2F2ZUV2ZW50XCJcIiA9IGNhdGNoIHNhdmluZyBmb3JtIGV2ZW50c2NvcGUudm0ud2ZGb3JtRmllbGRzT25seU5lZWRlZFByb3BlcnRpZXMgPSBhbmd1bGFyLmNvcHkoc2NvcGUudm0ud2ZGb3JtRmllbGRzKTtcbiAgICBzY29wZS4kd2F0Y2goKCkgPT4gc2NvcGUudm0ucmV0dXJuU2F2ZUV2ZW50LFxuICAgICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdHJ1ZSkge1xuXG4gICAgICAgICAgY29uc3QgX2Vhc3lGb3JtR2VuZXJhdG9yTW9kZWwgPSBzY29wZS52bS5jb25maWd1cmF0aW9uLnN0ZXBzLm1hcCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgdmFyIGVhc3lGb3JtR2VuZXJhdG9yTW9kZWwgPSBzdGVwLmVhc3lGb3JtR2VuZXJhdG9yTW9kZWw7XG4gICAgICAgICAgICBlYXN5Rm9ybUdlbmVyYXRvck1vZGVsLmZvcm1seUZpZWxkc01vZGVsLmZvckVhY2goKG1vZGVsKSA9PiB7XG4gICAgICAgICAgICAgIGRlbGV0ZSBtb2RlbC5mb3JtQ29udHJvbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZm9ybU5hbWU6IHN0ZXAudGl0bGUsXG4gICAgICAgICAgICAgIC8vIGJ0blN1Ym1pdFRleHQ6IGVhc3lGb3JtR2VuZXJhdG9yTW9kZWwuY29uZmlndXJhdGlvbi5zdWJtaXRCdXR0b25UZXh0LFxuICAgICAgICAgICAgICAvLyBidG5DYW5jZWxUZXh0OiBlYXN5Rm9ybUdlbmVyYXRvck1vZGVsLmNvbmZpZ3VyYXRpb24uY2FuY2VsQnV0dG9uVGV4dCxcbiAgICAgICAgICAgICAgZWRhRmllbGRzTW9kZWw6IGVhc3lGb3JtR2VuZXJhdG9yTW9kZWwuZWRhRmllbGRzTW9kZWwsXG4gICAgICAgICAgICAgIGVkYUZpZWxkc01vZGVsU3RyaW5naWZpZWQ6IGVhc3lGb3JtR2VuZXJhdG9yTW9kZWwuZWRhRmllbGRzTW9kZWxTdHJpbmdpZmllZCxcbiAgICAgICAgICAgICAgZm9ybWx5RmllbGRzTW9kZWw6IGVhc3lGb3JtR2VuZXJhdG9yTW9kZWwuZm9ybWx5RmllbGRzTW9kZWwsXG4gICAgICAgICAgICAgIGRhdGFNb2RlbDogZWFzeUZvcm1HZW5lcmF0b3JNb2RlbC5kYXRhTW9kZWwsXG4gICAgICAgICAgICAgIC8vY29uZmlndXJhdGlvbjogZWFzeUZvcm1HZW5lcmF0b3JNb2RlbC5jb25maWd1cmF0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgc2NvcGUuZWRhU2F2ZUZvcm1FdmVudCh7XG4gICAgICAgICAgICBlZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsOiBfZWFzeUZvcm1HZW5lcmF0b3JNb2RlbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vYmFjayB0byBmYWxzZSwgd2FpdGluZyBuZXh0IHNhdmUgZXZlbnRcbiAgICAgICAgICBzY29wZS52bS5yZXR1cm5TYXZlRXZlbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG5cbiAgICBmdW5jdGlvbiBsb2FkRXhpc3RpbmdDb25maWd1cmF0aW9uTW9kZWwoKSB7XG4gICAgICAgY29uc3Qgc3RlcHMgPSBzY29wZS5lZGFFYXN5Rm9ybUdlbmVyYXRvck1vZGVsLm1hcCgoc3RlcCkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtID0ge1xuICAgICAgICAgIHRpdGxlOiBzdGVwLmZvcm1OYW1lLFxuICAgICAgICAgIGVhc3lGb3JtR2VuZXJhdG9yTW9kZWw6IHtcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246IHN0ZXAuY29uZmlndXJhdGlvbixcbiAgICAgICAgICAgIGVkYUZpZWxkc01vZGVsOiBzdGVwLmVkYUZpZWxkc01vZGVsLFxuICAgICAgICAgICAgZWRhRmllbGRzTW9kZWxTdHJpbmdpZmllZDogc3RlcC5lZGFGaWVsZHNNb2RlbFN0cmluZ2lmaWVkLFxuICAgICAgICAgICAgZm9ybWx5RmllbGRzTW9kZWw6IHN0ZXAuZm9ybWx5RmllbGRzTW9kZWwsXG4gICAgICAgICAgICBkYXRhTW9kZWw6IHN0ZXAuZGF0YU1vZGVsLFxuICAgICAgICAgICAgbG9hZGVkOiB7XG4gICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246IHN0ZXAuY29uZmlndXJhdGlvbixcbiAgICAgICAgICAgICAgZWRhRmllbGRzTW9kZWw6IHN0ZXAuZWRhRmllbGRzTW9kZWwsXG4gICAgICAgICAgICAgIGVkYUZpZWxkc01vZGVsU3RyaW5naWZpZWQ6IHN0ZXAuZWRhRmllbGRzTW9kZWxTdHJpbmdpZmllZCxcbiAgICAgICAgICAgICAgZm9ybWx5RmllbGRzTW9kZWw6IHN0ZXAuZm9ybWx5RmllbGRzTW9kZWwsXG4gICAgICAgICAgICAgIGRhdGFNb2RlbDogc3RlcC5kYXRhTW9kZWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KTtcbiAgICAgIHNjb3BlLnZtLmNvbmZpZ3VyYXRpb24uc3RlcHMgPSBzdGVwcztcbiAgICB9XG4gIH1cbn1cblxuZWRhU3RlcFdheUVhc3lXaXphcmRGb3JtR2VuRGlyZWN0aXZlLiRpbmplY3QgPSBbXTtcblxuZXhwb3J0IGRlZmF1bHQgZWRhU3RlcFdheUVhc3lXaXphcmRGb3JtR2VuRGlyZWN0aXZlO1xuZXhwb3J0IHtcbiAgU1RFUF9XQVlfV0laQVJEX0RJUkVDVElWRV9OQU1FXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvd2l6YXJkL3N0ZXB3YXkud2l6YXJkLmRpcmVjdGl2ZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 53 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"
\\n \\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n \\n \\n \\n \\n \\n
\\n \\n \\n \\n \\n \\n \\n 0\\\" wz-previous>\\n \\n \\n Previous\\n \\n \\n \\n \\n \\n Next\\n \\n \\n \\n \\n \\n Submit\\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n
\\n
{{'DATA_MODEL' | translate}}
\\n
\\n {{vm.dataModel | json}}\\n \\n
\\n
\\n \\n
\\n
{{'FIELDS_MODEL' | translate}}
\\n
\\n {{vm | json}} \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n
\\n \"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy93aXphcmQvc3RlcHdheS53aXphcmQudGVtcGxhdGUuaHRtbD82NDFmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRUQUE0VCxtSkFBbUosd0pBQXdKLHdCQUF3QiwrbUJBQSttQiwyQkFBMkIsb1VBQW9VLHNDQUFzQyxxM0RBQXEzRCwwQkFBMEIseURBQXlELHFCQUFxQixzUEFBc1AsNEJBQTRCLHlEQUF5RCxXQUFXIiwiZmlsZSI6IjUzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIjxzZWN0aW9uIGlkPVxcXCJwYWdlV2ZFZGl0XFxcIj5cXG4gIDxkaXYgbmctaW5pdD1cXFwiXFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwiY29udGFpbmVyXFxcIj5cXG4gICAgICA8c2VjdGlvbiBpZD1cXFwicHJldmlld1xcXCI+XFxuICAgICAgICA8ZGl2IGlkPVxcXCJwcmV2aWV3LWNvbnRlbnRcXFwiPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb250ZW50LWNvbnRhaW5lclxcXCI+XFxuICAgICAgICAgICAgPCEtLSB0YW9zdGVyIGFsZXJ0IC0tPlxcbiAgICAgICAgICAgIDx0b2FzdGVyLWNvbnRhaW5lclxcbiAgICAgICAgICAgICAgdG9hc3Rlci1vcHRpb25zPVxcXCJ7XFxuICAgICAgICAgICAgICAgICdwb3NpdGlvbi1jbGFzcyc6ICd0b2FzdC10b3AtZnVsbC13aWR0aCcsXFxuICAgICAgICAgICAgICAgICdleHRlbmRlZFRpbWVvdXQnOjUwMCxcXG4gICAgICAgICAgICAgICAgJ3RpbWVPdXQnOjUwMFxcbiAgICAgICAgICAgICAgfVxcXCI+XFxuICAgICAgICAgICAgPC90b2FzdGVyLWNvbnRhaW5lcj5cXG4gICAgICAgICAgICA8dWliLXRhYnNldCBqdXN0aWZpZWQ9XFxcInRydWVcXFwiPlxcbiAgICAgICAgICAgICAgPHVpYi10YWIgYWN0aXZlPVxcXCJ2bS50YWIuZWRpdFRhYi5hY3RpdmVcXFwiIGhlYWRpbmc9XFxcInt7J0VESVRfVEFCJyB8IHRyYW5zbGF0ZX19XFxcIj5cXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICAgICAgICAgICAgICA8YWRkLXN0ZXAtY29udGVudCBjb25maWd1cmF0aW9uPVxcXCJ2bS5jb25maWd1cmF0aW9uXFxcIiBcXG4gICAgICAgICAgICAgICAgICAgIGFkZC1uZXdzdGVwPVxcXCJ2bS5hZGROZXdzdGVwKClcXFwiIFxcbiAgICAgICAgICAgICAgICAgICAgc2F2ZS10aGlzLWZvcm09XFxcInZtLnNhdmVUaGlzRm9ybSgpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlLXRoaXMtc3RlcD1cXFwidm0ucmVtb3ZlVGhpc1N0ZXAoaW5kZXgpXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQtdGhpcy1zdGVwPVxcXCJ2bS5yaWdodFRoaXNTdGVwKGluZGV4KVxcXCIgXFxuICAgICAgICAgICAgICAgICAgICBsZWZ0LXRoaXMtc3RlcD1cXFwidm0ubGVmdFRoaXNTdGVwKGluZGV4KVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPC9hZGQtc3RlcC1jb250ZW50PlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvdWliLXRhYj5cXG4gICAgICAgICAgICAgIDx1aWItdGFiIGFjdGl2ZT1cXFwidm0udGFiLnByZXZpZXdUYWIuYWN0aXZlXFxcIiBuZy1pZj1cXFwidm0udGFiLnByZXZpZXdUYWIudGFiVmlzaWJsZVxcXCIgaGVhZGluZz1cXFwie3snUFJFVklFV19UQUInIHwgdHJhbnNsYXRlfX1cXFwiPlxcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gZm9ybWx5IGhlcmUgLS0+XFxuICAgICAgICAgICAgICAgICAgICBcXG4gICAgICAgICAgICAgICAgICAgICAgPHdpemFyZCBlZGl0LW1vZGU9XFxcInRydWVcXFwiIGluZGljYXRvcnMtcG9zaXRpb249XFxcInRvcFxcXCIgb24tZmluaXNoPVxcXCJmaW5pc2hlZFdpemFyZCgpXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8d3otc3RlcCB3ei10aXRsZT1cXFwie3t2bS5jb25maWd1cmF0aW9uLnN0ZXBzWyRpbmRleF0udGl0bGV9fVxcXCIgbmctcmVwZWF0PVxcXCJzdGVwIGluIHZtLmNvbmZpZ3VyYXRpb24uc3RlcHMgdHJhY2sgYnkgJGluZGV4XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtbHktZm9ybSBtb2RlbD1cXFwidm0uZGF0YU1vZGVsXFxcIiBmaWVsZHM9XFxcInZtLmNvbmZpZ3VyYXRpb24uc3RlcHNbJGluZGV4XS5lYXN5Rm9ybUdlbmVyYXRvck1vZGVsLmZvcm1seUZpZWxkc01vZGVsXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInB1bGwtcmlnaHRcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnlcXFwiIG5nLWlmPVxcXCIkaW5kZXggPiAwXFxcIiB3ei1wcmV2aW91cz5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1hcnJvdy1sZWZ0IGZhLTJ4IHB1bGwtbGVmdFxcXCI+PC9pPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XFxcInB1bGwtcmlnaHQgbmctYmluZGluZ1xcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXZpb3VzXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnlcXFwiIG5nLWlmPVxcXCIkaW5kZXggPCB2bS5jb25maWd1cmF0aW9uLnN0ZXBzLmxlbmd0aCAtIDFcXFwiIHd6LW5leHQ+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cXFwiZmEgZmEtYXJyb3ctcmlnaHQgZmEtMnggcHVsbC1sZWZ0XFxcIj48L2k+XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cXFwicHVsbC1yaWdodCBuZy1iaW5kaW5nXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV4dFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeVxcXCIgbmctaWY9XFxcIiRpbmRleCA9PSB2bS5jb25maWd1cmF0aW9uLnN0ZXBzLmxlbmd0aCAtIDFcXFwiIFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XFxcIlN1Ym1pdFxcXCI+ICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLXNhdmUgZmEtMnggcHVsbC1sZWZ0XFxcIj48L2k+ICAgICAgICAgICAgICAgICAgICBcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVxcXCJwdWxsLXJpZ2h0IG5nLWJpbmRpbmdcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJtaXRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtbHktZm9ybT5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3d6LXN0ZXA+XFxuICAgICAgICAgICAgICAgICAgICAgIDwvd2l6YXJkPlxcbiAgICAgICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8ZGl2IG5nLWlmPVxcXCJ2bS50YWIucHJldmlld1RhYi5tb2RlbHNWaXNpYmxlXFxcIiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicGFuZWwtYm9keVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICA8cD57eydEQVRBX01PREVMJyB8IHRyYW5zbGF0ZX19PC9wPlxcbiAgICAgICAgICAgICAgICAgICAgPHByZT5cXG4gICAgICAgICAgICAgICAgICAgICAge3t2bS5kYXRhTW9kZWwgfCBqc29ufX1cXG4gICAgICAgICAgICAgICAgICAgIDwvcHJlPlxcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgICAgPGRpdiBuZy1pZj1cXFwidm0udGFiLnByZXZpZXdUYWIubW9kZWxzVmlzaWJsZVxcXCIgY2xhc3M9XFxcInBhbmVsIHBhbmVsLWRlZmF1bHRcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgPHA+e3snRklFTERTX01PREVMJyB8IHRyYW5zbGF0ZX19PC9wPlxcbiAgICAgICAgICAgICAgICAgICAgPHByZT5cXG4gICAgICAgICAgICAgICAgICAgICAge3t2bSB8IGpzb259fSAgICAgICAgICAgICAgICAgICAgICBcXG4gICAgICAgICAgICAgICAgICAgIDwvcHJlPlxcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDwvdWliLXRhYj5cXG4gICAgICAgICAgICA8L3VpYi10YWJzZXQ+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9zZWN0aW9uPlxcbiAgICAgIDxoci8+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC9zZWN0aW9uPlwiXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy93aXphcmQvc3RlcHdheS53aXphcmQudGVtcGxhdGUuaHRtbFxuLy8gbW9kdWxlIGlkID0gNTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 54 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar EASY_WIZARD_FORM_STEP_WAY_CONFIG_NAME = 'easyWizardFormStepWayConfig';\n\nfunction easyWizardFormStepWayConfig($translateProvider) {\n var _configuration = defaultConfig();\n var _defaultLanguage = getDefaultLanguage();\n var _currentLanguage = initDefaultLanguage();\n var _showPreviewPanel = getDefaultshowPreviewPanel();\n var _showPreviewModels = getDefaultShowPreviewModel();\n\n this.$get = easyFormStepWayConfigGET;\n this.configuration = _configuration;\n this.setLanguage = setLanguage;\n this.getCurrentLanguage = getCurrentLanguage;\n this.showPreviewPanel = showPreviewPanel;\n this.showPreviewModels = showPreviewModels;\n\n //set default config\n function defaultConfig() {\n var _defaultConfiguration = {\n modalAnimated: false\n };\n return _defaultConfiguration;\n }\n\n //show preview panel by default\n function getDefaultshowPreviewPanel() {\n return true;\n }\n\n //show preview data, fields models in preview panel\n function getDefaultShowPreviewModel() {\n return true;\n }\n\n function getCurrentLanguage() {\n return _currentLanguage;\n }\n\n //list of controls\n // function controlsList() {\n // const controls = [\n // {name: 'empty', enabled: true},\n // {name: 'Header', enabled: true},\n // {name: 'Subtitle', enabled: true},\n // {name: 'TextInput', enabled: true},\n // {name: 'Password', enabled: true},\n // {name: 'Email', enabled: true},\n // {name: 'IpAdress', enabled: true},\n // {name: 'Date', enabled: true},\n // {name: 'Texarea', enabled: true},\n // {name: 'RichTextEditor', enabled: true},\n // {name: 'Radio', enabled: true},\n // {name: 'Checkbox', enabled: true},\n // {name: 'BasicSelect', enabled: true},\n // {name: 'GroupedSelect', enabled: true}\n // ];\n // return controls;\n // }\n\n function showPreviewPanel(wantToShow) {\n if (angular.isDefined(wantToShow)) {\n if (wantToShow === true) _showPreviewPanel = true;\n if (wantToShow === false) _showPreviewPanel = false;\n }\n }\n\n function showPreviewModels(wantToShow) {\n if (angular.isDefined(wantToShow)) {\n if (wantToShow === true) _showPreviewModels = true;\n if (wantToShow === false) _showPreviewModels = false;\n }\n }\n\n //language : set default to english\n function getDefaultLanguage() {\n var lang = 'en';\n return lang;\n }\n\n function setDefaultLanguage() {\n _currentLanguage = _defaultLanguage;\n $translateProvider.preferredLanguage(_currentLanguage);\n return _currentLanguage;\n }\n\n function setLanguage(language) {\n if (angular.isString(language)) {\n _currentLanguage = language;\n $translateProvider.preferredLanguage(language);\n } else {\n setDefaultLanguage();\n }\n }\n\n function initDefaultLanguage() {\n $translateProvider.useSanitizeValueStrategy('escape'); //security : Enable escaping of HTML\n $translateProvider.fallbackLanguage(_defaultLanguage); //fallback language to default language\n $translateProvider.preferredLanguage(_defaultLanguage);\n return _defaultLanguage;\n }\n\n //$get implementation :\n easyFormStepWayConfigGET.$inject = ['$translate'];\n function easyFormStepWayConfigGET($translate) {\n\n var service = {\n setLanguage: switchLanguage,\n getCurrentLanguage: getCurrentLanguage,\n isPreviewPanelVisible: isPreviewPanelVisible,\n arePreviewModelsVisible: arePreviewModelsVisible\n };\n return service;\n\n function switchLanguage(language) {\n if (angular.isString(language)) {\n _currentLanguage = language;\n $translate.use(language);\n } else {\n setDefaultLanguage();\n }\n }\n\n function isPreviewPanelVisible() {\n return _showPreviewPanel;\n }\n\n function arePreviewModelsVisible() {\n return _showPreviewModels;\n }\n }\n}\n\neasyWizardFormStepWayConfig.$inject = ['$translateProvider'];\nexports.default = easyWizardFormStepWayConfig;\nexports.EASY_WIZARD_FORM_STEP_WAY_CONFIG_NAME = EASY_WIZARD_FORM_STEP_WAY_CONFIG_NAME;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy93aXphcmQvc3RlcHdheS53aXphcmQucHJvdmlkZXIuanM/ZjkyMyJdLCJuYW1lcyI6WyJFQVNZX1dJWkFSRF9GT1JNX1NURVBfV0FZX0NPTkZJR19OQU1FIiwiZWFzeVdpemFyZEZvcm1TdGVwV2F5Q29uZmlnIiwiJHRyYW5zbGF0ZVByb3ZpZGVyIiwiX2NvbmZpZ3VyYXRpb24iLCJkZWZhdWx0Q29uZmlnIiwiX2RlZmF1bHRMYW5ndWFnZSIsImdldERlZmF1bHRMYW5ndWFnZSIsIl9jdXJyZW50TGFuZ3VhZ2UiLCJpbml0RGVmYXVsdExhbmd1YWdlIiwiX3Nob3dQcmV2aWV3UGFuZWwiLCJnZXREZWZhdWx0c2hvd1ByZXZpZXdQYW5lbCIsIl9zaG93UHJldmlld01vZGVscyIsImdldERlZmF1bHRTaG93UHJldmlld01vZGVsIiwiJGdldCIsImVhc3lGb3JtU3RlcFdheUNvbmZpZ0dFVCIsImNvbmZpZ3VyYXRpb24iLCJzZXRMYW5ndWFnZSIsImdldEN1cnJlbnRMYW5ndWFnZSIsInNob3dQcmV2aWV3UGFuZWwiLCJzaG93UHJldmlld01vZGVscyIsIl9kZWZhdWx0Q29uZmlndXJhdGlvbiIsIm1vZGFsQW5pbWF0ZWQiLCJ3YW50VG9TaG93IiwiYW5ndWxhciIsImlzRGVmaW5lZCIsImxhbmciLCJzZXREZWZhdWx0TGFuZ3VhZ2UiLCJwcmVmZXJyZWRMYW5ndWFnZSIsImxhbmd1YWdlIiwiaXNTdHJpbmciLCJ1c2VTYW5pdGl6ZVZhbHVlU3RyYXRlZ3kiLCJmYWxsYmFja0xhbmd1YWdlIiwiJGluamVjdCIsIiR0cmFuc2xhdGUiLCJzZXJ2aWNlIiwic3dpdGNoTGFuZ3VhZ2UiLCJpc1ByZXZpZXdQYW5lbFZpc2libGUiLCJhcmVQcmV2aWV3TW9kZWxzVmlzaWJsZSIsInVzZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFNQSx3Q0FBd0MsNkJBQTlDOztBQUVBLFNBQVNDLDJCQUFU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QUF3QlAsUUFBeEIsRUFBa0M7QUFDaEMsVUFBSUwsUUFBUU0sUUFBUixDQUFpQkQsUUFBakIsQ0FBSixFQUFnQztBQUM5QnJCLDJCQUFtQnFCLFFBQW5CO0FBQ0FLLG1CQUFXSyxHQUFYLENBQWVWLFFBQWY7QUFDRCxPQUhELE1BR0s7QUFDSEY7QUFDRDtBQUNGOztBQUVELGFBQVNVLHFCQUFULEdBQWlDO0FBQy9CLGFBQU8zQixpQkFBUDtBQUNEOztBQUVELGFBQVM0Qix1QkFBVCxHQUFtQztBQUNqQyxhQUFPMUIsa0JBQVA7QUFDRDtBQUNGO0FBQ0Y7O0FBRURWLDRCQUE0QitCLE9BQTVCLEdBQXNDLENBQUMsb0JBQUQsQ0FBdEM7a0JBQ2UvQiwyQjtRQUVQRCxxQyxHQUFBQSxxQyIsImZpbGUiOiI1NC5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEVBU1lfV0laQVJEX0ZPUk1fU1RFUF9XQVlfQ09ORklHX05BTUUgPSAnZWFzeVdpemFyZEZvcm1TdGVwV2F5Q29uZmlnJztcblxuZnVuY3Rpb24gZWFzeVdpemFyZEZvcm1TdGVwV2F5Q29uZmlnKCR0cmFuc2xhdGVQcm92aWRlcikge1xuICBjb25zdCBfY29uZmlndXJhdGlvbiAgICAgPSBkZWZhdWx0Q29uZmlnKCk7ICBcbiAgY29uc3QgX2RlZmF1bHRMYW5ndWFnZSAgPSBnZXREZWZhdWx0TGFuZ3VhZ2UoKTtcbiAgbGV0IF9jdXJyZW50TGFuZ3VhZ2UgICAgPSBpbml0RGVmYXVsdExhbmd1YWdlKCk7XG4gIGxldCBfc2hvd1ByZXZpZXdQYW5lbCAgICA9IGdldERlZmF1bHRzaG93UHJldmlld1BhbmVsKCk7XG4gIGxldCBfc2hvd1ByZXZpZXdNb2RlbHMgID0gZ2V0RGVmYXVsdFNob3dQcmV2aWV3TW9kZWwoKTtcblxuICB0aGlzLiRnZXQgICAgICAgICAgICAgICA9IGVhc3lGb3JtU3RlcFdheUNvbmZpZ0dFVDsgIFxuICB0aGlzLmNvbmZpZ3VyYXRpb24gICAgICA9IF9jb25maWd1cmF0aW9uOyAgXG4gIHRoaXMuc2V0TGFuZ3VhZ2UgICAgICAgID0gc2V0TGFuZ3VhZ2U7XG4gIHRoaXMuZ2V0Q3VycmVudExhbmd1YWdlICA9IGdldEN1cnJlbnRMYW5ndWFnZTtcbiAgdGhpcy5zaG93UHJldmlld1BhbmVsICAgID0gc2hvd1ByZXZpZXdQYW5lbDtcbiAgdGhpcy5zaG93UHJldmlld01vZGVscyAgPSBzaG93UHJldmlld01vZGVscztcblxuICAvL3NldCBkZWZhdWx0IGNvbmZpZ1xuICBmdW5jdGlvbiBkZWZhdWx0Q29uZmlnKCkge1xuICAgIGNvbnN0ICBfZGVmYXVsdENvbmZpZ3VyYXRpb24gPSB7XG4gICAgICBtb2RhbEFuaW1hdGVkIDogZmFsc2VcbiAgICB9O1xuICAgIHJldHVybiBfZGVmYXVsdENvbmZpZ3VyYXRpb247XG4gIH1cblxuICAvL3Nob3cgcHJldmlldyBwYW5lbCBieSBkZWZhdWx0XG4gIGZ1bmN0aW9uIGdldERlZmF1bHRzaG93UHJldmlld1BhbmVsKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy9zaG93IHByZXZpZXcgZGF0YSwgZmllbGRzIG1vZGVscyBpbiBwcmV2aWV3IHBhbmVsXG4gIGZ1bmN0aW9uIGdldERlZmF1bHRTaG93UHJldmlld01vZGVsKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Q3VycmVudExhbmd1YWdlKCkge1xuICAgICAgcmV0dXJuIF9jdXJyZW50TGFuZ3VhZ2U7XG4gIH1cblxuICAvL2xpc3Qgb2YgY29udHJvbHNcbiAgLy8gZnVuY3Rpb24gY29udHJvbHNMaXN0KCkge1xuICAvLyAgIGNvbnN0IGNvbnRyb2xzID0gW1xuICAvLyAgICAge25hbWU6ICdlbXB0eScsICAgICAgICAgICBlbmFibGVkOiB0cnVlfSxcbiAgLy8gICAgIHtuYW1lOiAnSGVhZGVyJywgICAgICAgICAgIGVuYWJsZWQ6IHRydWV9LFxuICAvLyAgICAge25hbWU6ICdTdWJ0aXRsZScsICAgICAgICAgZW5hYmxlZDogdHJ1ZX0sXG4gIC8vICAgICB7bmFtZTogJ1RleHRJbnB1dCcsICAgICAgIGVuYWJsZWQ6IHRydWV9LFxuICAvLyAgICAge25hbWU6ICdQYXNzd29yZCcsICAgICAgICAgZW5hYmxlZDogdHJ1ZX0sXG4gIC8vICAgICB7bmFtZTogJ0VtYWlsJywgICAgICAgICAgIGVuYWJsZWQ6IHRydWV9LFxuICAvLyAgICAge25hbWU6ICdJcEFkcmVzcycsICAgICAgICAgZW5hYmxlZDogdHJ1ZX0sXG4gIC8vICAgICB7bmFtZTogJ0RhdGUnLCAgICAgICAgICAgICBlbmFibGVkOiB0cnVlfSxcbiAgLy8gICAgIHtuYW1lOiAnVGV4YXJlYScsICAgICAgICAgICBlbmFibGVkOiB0cnVlfSxcbiAgLy8gICAgIHtuYW1lOiAnUmljaFRleHRFZGl0b3InLCAgIGVuYWJsZWQ6IHRydWV9LFxuICAvLyAgICAge25hbWU6ICdSYWRpbycsICAgICAgICAgICBlbmFibGVkOiB0cnVlfSxcbiAgLy8gICAgIHtuYW1lOiAnQ2hlY2tib3gnLCAgICAgICAgIGVuYWJsZWQ6IHRydWV9LFxuICAvLyAgICAge25hbWU6ICdCYXNpY1NlbGVjdCcsICAgICBlbmFibGVkOiB0cnVlfSxcbiAgLy8gICAgIHtuYW1lOiAnR3JvdXBlZFNlbGVjdCcsICAgZW5hYmxlZDogdHJ1ZX1cbiAgLy8gICBdO1xuICAvLyAgIHJldHVybiBjb250cm9scztcbiAgLy8gfVxuXG4gIGZ1bmN0aW9uIHNob3dQcmV2aWV3UGFuZWwod2FudFRvU2hvdykge1xuICAgIGlmIChhbmd1bGFyLmlzRGVmaW5lZCh3YW50VG9TaG93KSkge1xuICAgICAgaWYod2FudFRvU2hvdyA9PT0gdHJ1ZSkgICBfc2hvd1ByZXZpZXdQYW5lbCAgID0gdHJ1ZTtcbiAgICAgIGlmKHdhbnRUb1Nob3cgPT09IGZhbHNlKSAgIF9zaG93UHJldmlld1BhbmVsICAgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzaG93UHJldmlld01vZGVscyh3YW50VG9TaG93KSB7XG4gICAgaWYgKGFuZ3VsYXIuaXNEZWZpbmVkKHdhbnRUb1Nob3cpKSB7XG4gICAgICBpZih3YW50VG9TaG93ID09PSB0cnVlKSAgIF9zaG93UHJldmlld01vZGVscyAgID0gdHJ1ZTtcbiAgICAgIGlmKHdhbnRUb1Nob3cgPT09IGZhbHNlKSAgIF9zaG93UHJldmlld01vZGVscyAgID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy9sYW5ndWFnZSA6IHNldCBkZWZhdWx0IHRvIGVuZ2xpc2hcbiAgZnVuY3Rpb24gZ2V0RGVmYXVsdExhbmd1YWdlKCkge1xuICAgIGNvbnN0IGxhbmcgPSAnZW4nO1xuICAgIHJldHVybiBsYW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0RGVmYXVsdExhbmd1YWdlKCkge1xuICAgIF9jdXJyZW50TGFuZ3VhZ2UgPSBfZGVmYXVsdExhbmd1YWdlO1xuICAgICR0cmFuc2xhdGVQcm92aWRlci5wcmVmZXJyZWRMYW5ndWFnZShfY3VycmVudExhbmd1YWdlKTtcbiAgICByZXR1cm4gX2N1cnJlbnRMYW5ndWFnZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldExhbmd1YWdlKGxhbmd1YWdlKSB7XG4gICAgaWYgKGFuZ3VsYXIuaXNTdHJpbmcobGFuZ3VhZ2UpKSB7XG4gICAgICBfY3VycmVudExhbmd1YWdlID0gbGFuZ3VhZ2U7XG4gICAgICAkdHJhbnNsYXRlUHJvdmlkZXIucHJlZmVycmVkTGFuZ3VhZ2UobGFuZ3VhZ2UpO1xuICAgIH1lbHNle1xuICAgICAgc2V0RGVmYXVsdExhbmd1YWdlKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdERlZmF1bHRMYW5ndWFnZSgpIHtcbiAgICAkdHJhbnNsYXRlUHJvdmlkZXIudXNlU2FuaXRpemVWYWx1ZVN0cmF0ZWd5KCdlc2NhcGUnKTsgICAvL3NlY3VyaXR5IDogRW5hYmxlIGVzY2FwaW5nIG9mIEhUTUxcbiAgICAkdHJhbnNsYXRlUHJvdmlkZXIuZmFsbGJhY2tMYW5ndWFnZShfZGVmYXVsdExhbmd1YWdlKTsgIC8vZmFsbGJhY2sgbGFuZ3VhZ2UgdG8gZGVmYXVsdCBsYW5ndWFnZVxuICAgICR0cmFuc2xhdGVQcm92aWRlci5wcmVmZXJyZWRMYW5ndWFnZShfZGVmYXVsdExhbmd1YWdlKTtcbiAgICByZXR1cm4gX2RlZmF1bHRMYW5ndWFnZTtcbiAgfVxuXG4gIC8vJGdldCBpbXBsZW1lbnRhdGlvbiA6XG4gIGVhc3lGb3JtU3RlcFdheUNvbmZpZ0dFVC4kaW5qZWN0ID0gWyckdHJhbnNsYXRlJ107XG4gIGZ1bmN0aW9uIGVhc3lGb3JtU3RlcFdheUNvbmZpZ0dFVCgkdHJhbnNsYXRlKSB7XG5cbiAgICBjb25zdCBzZXJ2aWNlID0ge1xuICAgICAgc2V0TGFuZ3VhZ2UgICAgICAgICAgICAgOiBzd2l0Y2hMYW5ndWFnZSxcbiAgICAgIGdldEN1cnJlbnRMYW5ndWFnZSAgICAgIDogZ2V0Q3VycmVudExhbmd1YWdlLFxuICAgICAgaXNQcmV2aWV3UGFuZWxWaXNpYmxlICAgIDogaXNQcmV2aWV3UGFuZWxWaXNpYmxlLFxuICAgICAgYXJlUHJldmlld01vZGVsc1Zpc2libGUgIDogYXJlUHJldmlld01vZGVsc1Zpc2libGVcbiAgICB9O1xuICAgIHJldHVybiBzZXJ2aWNlO1xuXG4gICAgZnVuY3Rpb24gc3dpdGNoTGFuZ3VhZ2UobGFuZ3VhZ2UpIHtcbiAgICAgIGlmIChhbmd1bGFyLmlzU3RyaW5nKGxhbmd1YWdlKSkge1xuICAgICAgICBfY3VycmVudExhbmd1YWdlID0gbGFuZ3VhZ2U7XG4gICAgICAgICR0cmFuc2xhdGUudXNlKGxhbmd1YWdlKTtcbiAgICAgIH1lbHNle1xuICAgICAgICBzZXREZWZhdWx0TGFuZ3VhZ2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ByZXZpZXdQYW5lbFZpc2libGUoKSB7XG4gICAgICByZXR1cm4gX3Nob3dQcmV2aWV3UGFuZWw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXJlUHJldmlld01vZGVsc1Zpc2libGUoKSB7XG4gICAgICByZXR1cm4gX3Nob3dQcmV2aWV3TW9kZWxzO1xuICAgIH1cbiAgfVxufVxuXG5lYXN5V2l6YXJkRm9ybVN0ZXBXYXlDb25maWcuJGluamVjdCA9IFsnJHRyYW5zbGF0ZVByb3ZpZGVyJ107XG5leHBvcnQgZGVmYXVsdCBlYXN5V2l6YXJkRm9ybVN0ZXBXYXlDb25maWc7XG5cbmV4cG9ydCB7RUFTWV9XSVpBUkRfRk9STV9TVEVQX1dBWV9DT05GSUdfTkFNRX07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy93aXphcmQvc3RlcHdheS53aXphcmQucHJvdmlkZXIuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 55 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayWizardAddStepContent = __webpack_require__(56);\n\nvar _stepwayWizardAddStepCommandPanel = __webpack_require__(57);\n\nvar _stepwayWizardAddStepVisualPanel = __webpack_require__(58);\n\nvar ADD_STEP_CONTENT_COMPONENT_MODULE = 'stepway.addStepContent.module';\n\nexports.default = angular.module(ADD_STEP_CONTENT_COMPONENT_MODULE, []).component(_stepwayWizardAddStepContent.ADD_STEP_CONTENT_COMPONENT, _stepwayWizardAddStepContent.addStepContentComponent).component(_stepwayWizardAddStepCommandPanel.ADD_STEP_COMMAND_PANEL_COMPONENT_NAME, _stepwayWizardAddStepCommandPanel.AddStepCommandPanelComponent).component(_stepwayWizardAddStepVisualPanel.ADD_STEP_VISUAL_PANEL_COMPONENT_NAME, _stepwayWizardAddStepVisualPanel.AddStepVisualPanelComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy93aXphcmQvYWRkU3RlcENvbnRlbnQvc3RlcHdheS53aXphcmQuYWRkU3RlcENvbnRlbnQubW9kdWxlLmpzPzgxYjIiXSwibmFtZXMiOlsiQUREX1NURVBfQ09OVEVOVF9DT01QT05FTlRfTU9EVUxFIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBSUE7O0FBSUE7O0FBTUEsSUFBTUEsb0NBQW9DLCtCQUExQzs7a0JBRWVDLFFBQ0VDLE1BREYsQ0FDU0YsaUNBRFQsRUFDNEMsRUFENUMsRUFFRUcsU0FGRixnSEFHRUEsU0FIRiwwSUFJRUEsU0FKRixxSSIsImZpbGUiOiI1NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFkZFN0ZXBDb250ZW50Q29tcG9uZW50LFxuICBBRERfU1RFUF9DT05URU5UX0NPTVBPTkVOVFxufSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vc3RlcHdheS53aXphcmQuYWRkU3RlcENvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFERF9TVEVQX0NPTU1BTkRfUEFORUxfQ09NUE9ORU5UX05BTUUsXG4gIEFkZFN0ZXBDb21tYW5kUGFuZWxDb21wb25lbnRcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL0FkZFN0ZXBDb21tYW5kUGFuZWwvc3RlcHdheS53aXphcmQuQWRkU3RlcENvbW1hbmRQYW5lbC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQUREX1NURVBfVklTVUFMX1BBTkVMX0NPTVBPTkVOVF9OQU1FLFxuICBBZGRTdGVwVmlzdWFsUGFuZWxDb21wb25lbnRcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL0FkZFN0ZXBWaXN1YWxQYW5lbC9zdGVwd2F5LndpemFyZC5BZGRTdGVwVmlzdWFsUGFuZWwuY29tcG9uZW50JztcblxuXG5jb25zdCBBRERfU1RFUF9DT05URU5UX0NPTVBPTkVOVF9NT0RVTEUgPSAnc3RlcHdheS5hZGRTdGVwQ29udGVudC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShBRERfU1RFUF9DT05URU5UX0NPTVBPTkVOVF9NT0RVTEUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoQUREX1NURVBfQ09OVEVOVF9DT01QT05FTlQsIGFkZFN0ZXBDb250ZW50Q29tcG9uZW50KVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoQUREX1NURVBfQ09NTUFORF9QQU5FTF9DT01QT05FTlRfTkFNRSwgQWRkU3RlcENvbW1hbmRQYW5lbENvbXBvbmVudClcbiAgICAgICAgICAgICAgICAuY29tcG9uZW50KEFERF9TVEVQX1ZJU1VBTF9QQU5FTF9DT01QT05FTlRfTkFNRSwgQWRkU3RlcFZpc3VhbFBhbmVsQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL3dpemFyZC9hZGRTdGVwQ29udGVudC9zdGVwd2F5LndpemFyZC5hZGRTdGVwQ29udGVudC5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 56 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ADD_STEP_CONTENT_COMPONENT = 'addStepContent';\n\nvar addStepContentComponent = exports.addStepContentComponent = {\n template: '\\n
\\n ',\n bindings: {\n configuration: '=',\n addNewstep: '&',\n setActiveStepNumber: '&',\n removeThisStep: '&',\n rightThisStep: '&',\n leftThisStep: '&',\n saveThisForm: '&'\n },\n controller: function () {\n function addStepContentController() {\n _classCallCheck(this, addStepContentController);\n }\n\n _createClass(addStepContentController, [{\n key: 'removeThisStepParent',\n value: function removeThisStepParent(index) {\n this.removeThisStep({\n index: index\n });\n }\n }, {\n key: 'rightThisStepParent',\n value: function rightThisStepParent(index) {\n this.rightThisStep({\n index: index\n });\n }\n }, {\n key: 'leftThisStepParent',\n value: function leftThisStepParent(index) {\n this.leftThisStep({\n index: index\n });\n }\n }, {\n key: 'saveThisFormParent',\n value: function saveThisFormParent(event) {\n event.preventDefault();\n this.saveThisForm(event);\n }\n\n ///////////////////////////////////\n // WHY this function is needed :\n ///////////////////////////////////\n // CASE OF : function with parameter passing from parent to caller through another level component\n // parent -> intermediate component (here) -> caller\n // NOTE : intermediate should call parent function to be sure to pass function parameter upward to parent\n\n }, {\n key: 'setActiveStepNumberParent',\n value: function setActiveStepNumberParent(index) {\n this.setActiveStepNumber({\n index: index\n });\n }\n }], [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return addStepContentController;\n }()\n};\n\nexports.default = addStepContentComponent;\nexports.ADD_STEP_CONTENT_COMPONENT = ADD_STEP_CONTENT_COMPONENT;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy93aXphcmQvYWRkU3RlcENvbnRlbnQvc3RlcHdheS53aXphcmQuYWRkU3RlcENvbnRlbnQuY29tcG9uZW50LmpzPzU5NTQiXSwibmFtZXMiOlsiQUREX1NURVBfQ09OVEVOVF9DT01QT05FTlQiLCJhZGRTdGVwQ29udGVudENvbXBvbmVudCIsInRlbXBsYXRlIiwiYmluZGluZ3MiLCJjb25maWd1cmF0aW9uIiwiYWRkTmV3c3RlcCIsInNldEFjdGl2ZVN0ZXBOdW1iZXIiLCJyZW1vdmVUaGlzU3RlcCIsInJpZ2h0VGhpc1N0ZXAiLCJsZWZ0VGhpc1N0ZXAiLCJzYXZlVGhpc0Zvcm0iLCJjb250cm9sbGVyIiwiaW5kZXgiLCJldmVudCIsInByZXZlbnREZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBTUEsNkJBQTZCLGdCQUFuQzs7QUFFTyxJQUFNQyw0REFBMEI7QUFDckNDLGdyQkFEcUM7QUFxQnJDQyxZQUFVO0FBQ1JDLG1CQUFlLEdBRFA7QUFFUkMsZ0JBQVksR0FGSjtBQUdSQyx5QkFBcUIsR0FIYjtBQUlSQyxvQkFBZ0IsR0FKUjtBQUtSQyxtQkFBZSxHQUxQO0FBTVJDLGtCQUFjLEdBTk47QUFPUkMsa0JBQWM7QUFQTixHQXJCMkI7QUE4QnJDQztBQUNFLHdDQUFjO0FBQUE7QUFFYjs7QUFISDtBQUFBO0FBQUEsMkNBS3VCQyxLQUx2QixFQUs4QjtBQUMxQixhQUFLTCxjQUFMLENBQW9CO0FBQ2xCSztBQURrQixTQUFwQjtBQUdEO0FBVEg7QUFBQTtBQUFBLDBDQVdzQkEsS0FYdEIsRUFXNkI7QUFDekIsYUFBS0osYUFBTCxDQUFtQjtBQUNqQkk7QUFEaUIsU0FBbkI7QUFHRDtBQWZIO0FBQUE7QUFBQSx5Q0FpQnFCQSxLQWpCckIsRUFpQjRCO0FBQ3hCLGFBQUtILFlBQUwsQ0FBa0I7QUFDaEJHO0FBRGdCLFNBQWxCO0FBR0Q7QUFyQkg7QUFBQTtBQUFBLHlDQXVCcUJDLEtBdkJyQixFQXVCNEI7QUFDeEJBLGNBQU1DLGNBQU47QUFDQSxhQUFLSixZQUFMLENBQWtCRyxLQUFsQjtBQUNEOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFqQ0Y7QUFBQTtBQUFBLGdEQWtDNEJELEtBbEM1QixFQWtDbUM7QUFDL0IsYUFBS04sbUJBQUwsQ0FBeUI7QUFDdkJNLGlCQUFPQTtBQURnQixTQUF6QjtBQUdEO0FBdENIO0FBQUE7QUFBQSwwQkF3Q3VCO0FBQ25CLGVBQU8sRUFBUDtBQUNEO0FBMUNIOztBQUFBO0FBQUE7QUE5QnFDLENBQWhDOztrQkE0RVFYLHVCO1FBRWJELDBCLEdBQUFBLDBCIiwiZmlsZSI6IjU2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQUREX1NURVBfQ09OVEVOVF9DT01QT05FTlQgPSAnYWRkU3RlcENvbnRlbnQnO1xuXG5leHBvcnQgY29uc3QgYWRkU3RlcENvbnRlbnRDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gIDxkaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICA8YWRkLXN0ZXAtY29tbWFuZC1wYW5lbFxuICAgICAgICBjb25maWd1cmF0aW9uPVwiJGN0cmwuY29uZmlndXJhdGlvblwiXG4gICAgICAgIGFkZC1uZXdzdGVwPVwiJGN0cmwuYWRkTmV3c3RlcCgpXCJcbiAgICAgICAgc2F2ZS10aGlzLWZvcm09XCIkY3RybC5zYXZlVGhpc0Zvcm1QYXJlbnQoZXZlbnQpXCI+XG4gICAgICA8L2FkZC1zdGVwLWNvbW1hbmQtcGFuZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XG4gICAgICA8YWRkLXN0ZXAtdmlzdWFsLXBhbmVsXG4gICAgICAgIGNvbmZpZ3VyYXRpb249XCIkY3RybC5jb25maWd1cmF0aW9uXCJcbiAgICAgICAgc2V0LWFjdGl2ZS1zdGVwLW51bWJlcj1cIiRjdHJsLnNldEFjdGl2ZVN0ZXBOdW1iZXJQYXJlbnQoaW5kZXgpXCJcbiAgICAgICAgcmVtb3ZlLXRoaXMtc3RlcD1cIiRjdHJsLnJlbW92ZVRoaXNTdGVwUGFyZW50KGluZGV4KVwiXG4gICAgICAgIHJpZ2h0LXRoaXMtc3RlcD1cIiRjdHJsLnJpZ2h0VGhpc1N0ZXBQYXJlbnQoaW5kZXgpXCJcbiAgICAgICAgbGVmdC10aGlzLXN0ZXA9XCIkY3RybC5sZWZ0VGhpc1N0ZXBQYXJlbnQoaW5kZXgpXCI+XG4gICAgICA8L2FkZC1zdGVwLXZpc3VhbC1wYW5lbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzOiB7XG4gICAgY29uZmlndXJhdGlvbjogJz0nLFxuICAgIGFkZE5ld3N0ZXA6ICcmJyxcbiAgICBzZXRBY3RpdmVTdGVwTnVtYmVyOiAnJicsXG4gICAgcmVtb3ZlVGhpc1N0ZXA6ICcmJyxcbiAgICByaWdodFRoaXNTdGVwOiAnJicsXG4gICAgbGVmdFRoaXNTdGVwOiAnJicsXG4gICAgc2F2ZVRoaXNGb3JtOiAnJicsXG4gIH0sXG4gIGNvbnRyb2xsZXI6IGNsYXNzIGFkZFN0ZXBDb250ZW50Q29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG5cbiAgICB9XG5cbiAgICByZW1vdmVUaGlzU3RlcFBhcmVudChpbmRleCkge1xuICAgICAgdGhpcy5yZW1vdmVUaGlzU3RlcCh7XG4gICAgICAgIGluZGV4XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByaWdodFRoaXNTdGVwUGFyZW50KGluZGV4KSB7XG4gICAgICB0aGlzLnJpZ2h0VGhpc1N0ZXAoe1xuICAgICAgICBpbmRleFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbGVmdFRoaXNTdGVwUGFyZW50KGluZGV4KSB7XG4gICAgICB0aGlzLmxlZnRUaGlzU3RlcCh7XG4gICAgICAgIGluZGV4XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBzYXZlVGhpc0Zvcm1QYXJlbnQoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNhdmVUaGlzRm9ybShldmVudCk7XG4gICAgfVxuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBXSFkgdGhpcyBmdW5jdGlvbiBpcyBuZWVkZWQgOlxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gQ0FTRSBPRiA6ICBmdW5jdGlvbiB3aXRoIHBhcmFtZXRlciBwYXNzaW5nIGZyb20gcGFyZW50IHRvIGNhbGxlciB0aHJvdWdoIGFub3RoZXIgbGV2ZWwgY29tcG9uZW50XG4gICAgLy8gICAgICAgICAgICBwYXJlbnQgLT4gaW50ZXJtZWRpYXRlIGNvbXBvbmVudCAoaGVyZSkgLT4gY2FsbGVyXG4gICAgLy8gTk9URSA6IGludGVybWVkaWF0ZSBzaG91bGQgY2FsbCBwYXJlbnQgZnVuY3Rpb24gdG8gYmUgc3VyZSB0byBwYXNzIGZ1bmN0aW9uIHBhcmFtZXRlciB1cHdhcmQgdG8gcGFyZW50XG4gICAgc2V0QWN0aXZlU3RlcE51bWJlclBhcmVudChpbmRleCkge1xuICAgICAgdGhpcy5zZXRBY3RpdmVTdGVwTnVtYmVyKHtcbiAgICAgICAgaW5kZXg6IGluZGV4XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0ICRpbmplY3QoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBhZGRTdGVwQ29udGVudENvbXBvbmVudDtcbmV4cG9ydCB7XG4gIEFERF9TVEVQX0NPTlRFTlRfQ09NUE9ORU5UXG59O1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL3dpemFyZC9hZGRTdGVwQ29udGVudC9zdGVwd2F5LndpemFyZC5hZGRTdGVwQ29udGVudC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 57 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ADD_STEP_COMMAND_PANEL_COMPONENT_NAME = exports.ADD_STEP_COMMAND_PANEL_COMPONENT_NAME = 'addStepCommandPanel';\n\nvar AddStepCommandPanelComponent = exports.AddStepCommandPanelComponent = {\n template: '\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'COMMAND_PANEL\\' | translate}}\\n \\n \\n
\\n
\\n
\\n \\n {{\\'ADD_NEW_STEP\\' | translate}} :\\n \\n \\n \\n \\n \\n
\\n
\\n
\\n {{\\'SAVE_THIS_FORM\\' | translate}}\\n \\n
\\n
\\n
\\n ',\n bindings: {\n addNewstep: '&',\n saveThisForm: '&'\n },\n controller: function () {\n function AddStepCommandPanelController() {\n _classCallCheck(this, AddStepCommandPanelController);\n }\n\n _createClass(AddStepCommandPanelController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return AddStepCommandPanelController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy93aXphcmQvYWRkU3RlcENvbnRlbnQvQWRkU3RlcENvbW1hbmRQYW5lbC9zdGVwd2F5LndpemFyZC5BZGRTdGVwQ29tbWFuZFBhbmVsLmNvbXBvbmVudC5qcz84NzI3Il0sIm5hbWVzIjpbIkFERF9TVEVQX0NPTU1BTkRfUEFORUxfQ09NUE9ORU5UX05BTUUiLCJBZGRTdGVwQ29tbWFuZFBhbmVsQ29tcG9uZW50IiwidGVtcGxhdGUiLCJiaW5kaW5ncyIsImFkZE5ld3N0ZXAiLCJzYXZlVGhpc0Zvcm0iLCJjb250cm9sbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sSUFBTUEsd0ZBQXdDLHFCQUE5Qzs7QUFFQSxJQUFNQyxzRUFBK0I7QUFDMUNDLG84QkFEMEM7QUFrQzFDQyxZQUFVO0FBQ1JDLGdCQUFZLEdBREo7QUFFUkMsa0JBQWM7QUFGTixHQWxDZ0M7QUFzQzFDQztBQUNFLDZDQUFjO0FBQUE7QUFFYjs7QUFISDtBQUFBO0FBQUEsMEJBS3VCO0FBQ25CLGVBQU8sRUFBUDtBQUNEO0FBUEg7O0FBQUE7QUFBQTtBQXRDMEMsQ0FBckMiLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQUREX1NURVBfQ09NTUFORF9QQU5FTF9DT01QT05FTlRfTkFNRSA9ICdhZGRTdGVwQ29tbWFuZFBhbmVsJztcblxuZXhwb3J0IGNvbnN0IEFkZFN0ZXBDb21tYW5kUGFuZWxDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gIDxkaXYgaWQ9XCJjb21tYW5kUGFuZWxcIj5cbiAgICA8ZGl2ICBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInBhbmVsLXRpdGxlXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1rZXlib2FyZC1vXCI+PC9pPlxuICAgICAgICAgICZuYnNwO1xuICAgICAgICAgIHt7J0NPTU1BTkRfUEFORUwnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRkTmV3TGluZVwiPlxuICAgICAgICAgICAgICB7eydBRERfTkVXX1NURVAnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5hZGROZXdzdGVwKClcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzIGZhLTF4XCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+ICAgICAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1ibG9jayBidG4tbGdcIlxuICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwuc2F2ZVRoaXNGb3JtKHtldmVudDogJGV2ZW50fSlcIj5cbiAgICAgICAgICB7eydTQVZFX1RISVNfRk9STScgfCB0cmFuc2xhdGV9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgYCxcbiAgYmluZGluZ3M6IHtcbiAgICBhZGROZXdzdGVwOiAnJicsXG4gICAgc2F2ZVRoaXNGb3JtOiAnJidcbiAgfSxcbiAgY29udHJvbGxlcjogY2xhc3MgQWRkU3RlcENvbW1hbmRQYW5lbENvbnRyb2xsZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgfVxuXG4gICAgc3RhdGljIGdldCAkaW5qZWN0KCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxufTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy93aXphcmQvYWRkU3RlcENvbnRlbnQvQWRkU3RlcENvbW1hbmRQYW5lbC9zdGVwd2F5LndpemFyZC5BZGRTdGVwQ29tbWFuZFBhbmVsLmNvbXBvbmVudC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 58 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ADD_STEP_VISUAL_PANEL_COMPONENT_NAME = exports.ADD_STEP_VISUAL_PANEL_COMPONENT_NAME = 'addStepVisualPanel';\n\nvar AddStepVisualPanelComponent = exports.AddStepVisualPanelComponent = {\n template: '\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'VISUAL_PANEL\\' | translate}}\\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n {{\\'STEP_TITLE\\' | translate}}:\\n \\n \\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n \\n \\n {{$ctrl.configuration.steps[$index] | json}} \\n \\n \\n
\\n
\\n
\\n ',\n bindings: {\n configuration: '=',\n removeThisStep: '&',\n rightThisStep: '&',\n leftThisStep: '&'\n },\n controller: function () {\n function AddStepVisualPanelController() {\n _classCallCheck(this, AddStepVisualPanelController);\n }\n\n _createClass(AddStepVisualPanelController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return AddStepVisualPanelController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy93aXphcmQvYWRkU3RlcENvbnRlbnQvQWRkU3RlcFZpc3VhbFBhbmVsL3N0ZXB3YXkud2l6YXJkLkFkZFN0ZXBWaXN1YWxQYW5lbC5jb21wb25lbnQuanM/YTcwZSJdLCJuYW1lcyI6WyJBRERfU1RFUF9WSVNVQUxfUEFORUxfQ09NUE9ORU5UX05BTUUiLCJBZGRTdGVwVmlzdWFsUGFuZWxDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwiY29uZmlndXJhdGlvbiIsInJlbW92ZVRoaXNTdGVwIiwicmlnaHRUaGlzU3RlcCIsImxlZnRUaGlzU3RlcCIsImNvbnRyb2xsZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBTyxJQUFNQSxzRkFBdUMsb0JBQTdDOztBQUVBLElBQU1DLG9FQUE4QjtBQUN6Q0MsdXZGQUR5QztBQWlFekNDLFlBQVU7QUFDUkMsbUJBQWUsR0FEUDtBQUVSQyxvQkFBZ0IsR0FGUjtBQUdSQyxtQkFBZSxHQUhQO0FBSVJDLGtCQUFjO0FBSk4sR0FqRStCO0FBdUV6Q0M7QUFDRSw0Q0FBYztBQUFBO0FBQ2I7O0FBRkg7QUFBQTtBQUFBLDBCQUl1QjtBQUNuQixlQUFPLEVBQVA7QUFDRDtBQU5IOztBQUFBO0FBQUE7QUF2RXlDLENBQXBDIiwiZmlsZSI6IjU4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFERF9TVEVQX1ZJU1VBTF9QQU5FTF9DT01QT05FTlRfTkFNRSA9ICdhZGRTdGVwVmlzdWFsUGFuZWwnO1xuXG5leHBvcnQgY29uc3QgQWRkU3RlcFZpc3VhbFBhbmVsQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZTogYFxuICA8ZGl2IGlkPVwidmlzdWFsUGFuZWxcIj5cbiAgICA8ZGl2ICBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInBhbmVsLXRpdGxlXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leWVcIj48L2k+XG4gICAgICAgICAgJm5ic3A7XG4gICAgICAgICAge3snVklTVUFMX1BBTkVMJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgIDwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICAgIFxuICAgICAgICA8d2l6YXJkIGVkaXQtbW9kZT1cInRydWVcIiBpbmRpY2F0b3JzLXBvc2l0aW9uPVwidG9wXCIgb24tZmluaXNoPVwiZmluaXNoZWRXaXphcmQoKVwiPlxuICAgICAgICAgIDx3ei1zdGVwIHd6LXRpdGxlPVwie3skY3RybC5jb25maWd1cmF0aW9uLnN0ZXBzWyRpbmRleF0udGl0bGV9fVwiIG5nLXJlcGVhdD1cInN0ZXAgaW4gJGN0cmwuY29uZmlndXJhdGlvbi5zdGVwcyB0cmFjayBieSAkaW5kZXhcIiAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGxpbmVDb21tYW5kQnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIHB1bGwtbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4td2FybmluZ1wiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3snTU9WRV9TVEVQX0xFRlQnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgICAgICAgICBuZy1oaWRlPVwiJGluZGV4PT0wXCJcbiAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5sZWZ0VGhpc1N0ZXAoe2luZGV4OiAkaW5kZXh9KVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LWxlZnRcIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXdhcm5pbmdcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7J01PVkVfU1RFUF9SSUdIVCcgfCB0cmFuc2xhdGV9fVwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWhpZGU9XCIkaW5kZXg9PSgkY3RybC5jb25maWd1cmF0aW9uLnN0ZXBzLmxlbmd0aC0xKVwiXG4gICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwucmlnaHRUaGlzU3RlcCh7aW5kZXg6ICRpbmRleH0pXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctcmlnaHRcIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgdGV4dC1jZW50ZXJcIj4gXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZE5ld0xpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAge3snU1RFUF9USVRMRScgfCB0cmFuc2xhdGV9fTpcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImFkZE5ld0xpbmVcIiBcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3snU1RFUF9USVRMRScgfCB0cmFuc2xhdGV9fVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J1NURVBfVElUTEUnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5jb25maWd1cmF0aW9uLnN0ZXBzWyRpbmRleF0udGl0bGVcIiBcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgcHVsbC1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgcHVsbC1yaWdodFwiICAgXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3snREVMRVRFX1NURVAnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgICAgICAgICBuZy1oaWRlPVwiJGN0cmwuY29uZmlndXJhdGlvbi5zdGVwcy5sZW5ndGggPD0gMVwiICAgICBcbiAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5yZW1vdmVUaGlzU3RlcCh7aW5kZXg6ICRpbmRleH0pXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZWRhLXN0ZXAtd2F5LWVhc3ktZm9ybS1nZW5cbiAgICAgICAgICAgICAgd2l6YXJkLXN0ZXAtZ2VuZXJhdG9yLW1vZGVsPVwiJGN0cmwuY29uZmlndXJhdGlvbi5zdGVwc1skaW5kZXhdLmVhc3lGb3JtR2VuZXJhdG9yTW9kZWxcIlxuICAgICAgICAgICAgICBlZGEtc2F2ZS1mb3JtLWV2ZW50PVwiJGN0cmwuc2F2ZUZvcm0oZWRhRWFzeUZvcm1HZW5lcmF0b3JNb2RlbClcIj5cbiAgICAgICAgICAgIDwvZWRhLXN0ZXAtd2F5LWVhc3ktZm9ybS1nZW4+XG4gICAgICAgICAgICB7eyRjdHJsLmNvbmZpZ3VyYXRpb24uc3RlcHNbJGluZGV4XSB8IGpzb259fSAgIFxuICAgICAgICAgIDwvd3otc3RlcD4gICAgICAgICAgICAgICAgXG4gICAgICAgIDwvd2l6YXJkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBgLFxuICBiaW5kaW5nczoge1xuICAgIGNvbmZpZ3VyYXRpb246ICc9JyxcbiAgICByZW1vdmVUaGlzU3RlcDogJyYnLFxuICAgIHJpZ2h0VGhpc1N0ZXA6ICcmJyxcbiAgICBsZWZ0VGhpc1N0ZXA6ICcmJyxcbiAgfSxcbiAgY29udHJvbGxlcjogY2xhc3MgQWRkU3RlcFZpc3VhbFBhbmVsQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7ICAgICAgXG4gICAgfVxuXG4gICAgc3RhdGljIGdldCAkaW5qZWN0KCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxufTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy93aXphcmQvYWRkU3RlcENvbnRlbnQvQWRkU3RlcFZpc3VhbFBhbmVsL3N0ZXB3YXkud2l6YXJkLkFkZFN0ZXBWaXN1YWxQYW5lbC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 59 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayEditControlModal = __webpack_require__(25);\n\nvar _stepwayEditControlModal2 = _interopRequireDefault(_stepwayEditControlModal);\n\nvar _stepwayEditValidEditFooter = __webpack_require__(60);\n\nvar _stepwayEditChooseControl = __webpack_require__(61);\n\nvar _index = __webpack_require__(62);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EDIT_CONTROLE_MODAL_NAME = 'editControlModal.module';\n\nvar EDIT_CONTROL_INJECT = _index.controls.map(function (control) {\n return control.moduleName;\n});\n\nexports.default = angular.module(EDIT_CONTROLE_MODAL_NAME, EDIT_CONTROL_INJECT).controller(_stepwayEditControlModal.EDIT_MODAL_CONTROLLER_NAME, _stepwayEditControlModal2.default).component(_stepwayEditChooseControl.EDIT_CHOOSE_CONTROL_COMPONENT, _stepwayEditChooseControl.editChooseControlComponent).component(_stepwayEditValidEditFooter.EDIT_EDIT_VALID_FOOTER_COMPONENT, _stepwayEditValidEditFooter.editValidEditFooterComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tb2RhbC9zdGVwd2F5LmVkaXRDb250cm9sTW9kYWwubW9kdWxlLmpzPzI0NWQiXSwibmFtZXMiOlsiRURJVF9DT05UUk9MRV9NT0RBTF9OQU1FIiwiRURJVF9DT05UUk9MX0lOSkVDVCIsIm1hcCIsImNvbnRyb2wiLCJtb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbnRyb2xsZXIiLCJjb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBR0E7O0FBSUE7O0FBSUE7Ozs7QUFHQSxJQUFNQSwyQkFBMkIseUJBQWpDOztBQUVBLElBQU1DLHNCQUFzQixnQkFBU0MsR0FBVCxDQUMxQjtBQUFBLFNBQVdDLFFBQVFDLFVBQW5CO0FBQUEsQ0FEMEIsQ0FBNUI7O2tCQUllQyxRQUNFQyxNQURGLENBQ1NOLHdCQURULEVBQ21DQyxtQkFEbkMsRUFFRU0sVUFGRix5RkFHRUMsU0FIRixnSEFJRUEsU0FKRix3SCIsImZpbGUiOiI1OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlZGl0TW9kYWxDb250cm9sbGVyLCB7XG4gIEVESVRfTU9EQUxfQ09OVFJPTExFUl9OQU1FXG59ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL3N0ZXB3YXkuZWRpdENvbnRyb2xNb2RhbC5jb250cm9sbGVyJztcbmltcG9ydCB7XG4gIGVkaXRWYWxpZEVkaXRGb290ZXJDb21wb25lbnQsXG4gIEVESVRfRURJVF9WQUxJRF9GT09URVJfQ09NUE9ORU5UXG59ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL2VkaXRWYWxpZEVkaXRGb290ZXIvc3RlcHdheS5lZGl0VmFsaWRFZGl0Rm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBlZGl0Q2hvb3NlQ29udHJvbENvbXBvbmVudCxcbiAgRURJVF9DSE9PU0VfQ09OVFJPTF9DT01QT05FTlRcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vZWRpdENob29zZUNvbnRyb2wvc3RlcHdheS5lZGl0Q2hvb3NlQ29udHJvbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29udHJvbHMgfSAgICAgICAgICAgICAgICAgZnJvbSAnLi4vY29udHJvbHMvaW5kZXgnO1xuXG5cbmNvbnN0IEVESVRfQ09OVFJPTEVfTU9EQUxfTkFNRSA9ICdlZGl0Q29udHJvbE1vZGFsLm1vZHVsZSc7XG5cbmNvbnN0IEVESVRfQ09OVFJPTF9JTkpFQ1QgPSBjb250cm9scy5tYXAoXG4gIGNvbnRyb2wgPT4gY29udHJvbC5tb2R1bGVOYW1lXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShFRElUX0NPTlRST0xFX01PREFMX05BTUUsIEVESVRfQ09OVFJPTF9JTkpFQ1QpXG4gICAgICAgICAgICAgICAgLmNvbnRyb2xsZXIoRURJVF9NT0RBTF9DT05UUk9MTEVSX05BTUUsIGVkaXRNb2RhbENvbnRyb2xsZXIpXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChFRElUX0NIT09TRV9DT05UUk9MX0NPTVBPTkVOVCwgZWRpdENob29zZUNvbnRyb2xDb21wb25lbnQpXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChFRElUX0VESVRfVkFMSURfRk9PVEVSX0NPTVBPTkVOVCwgZWRpdFZhbGlkRWRpdEZvb3RlckNvbXBvbmVudCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tb2RhbC9zdGVwd2F5LmVkaXRDb250cm9sTW9kYWwubW9kdWxlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 60 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_EDIT_VALID_FOOTER_COMPONENT = exports.EDIT_EDIT_VALID_FOOTER_COMPONENT = 'editValidEditFooter';\n\nvar editValidEditFooterComponent = exports.editValidEditFooterComponent = {\n template: '\\n \\n ',\n bindings: {\n nyaSelect: '=',\n ok: '&',\n cancel: '&'\n },\n controller: (_temp = _class = function editValidEditFooterController() {\n //\n\n _classCallCheck(this, editValidEditFooterController);\n }, _class.$inject = [], _temp)\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tb2RhbC9lZGl0VmFsaWRFZGl0Rm9vdGVyL3N0ZXB3YXkuZWRpdFZhbGlkRWRpdEZvb3Rlci5jb21wb25lbnQuanM/OWMwMiJdLCJuYW1lcyI6WyJFRElUX0VESVRfVkFMSURfRk9PVEVSX0NPTVBPTkVOVCIsImVkaXRWYWxpZEVkaXRGb290ZXJDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0Iiwib2siLCJjYW5jZWwiLCJjb250cm9sbGVyIiwiJGluamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLDhFQUFtQyxxQkFBekM7O0FBRUEsSUFBTUMsc0VBQStCO0FBQzFDQywrWEFEMEM7QUFnQjFDQyxZQUFnQjtBQUNkQyxlQUFZLEdBREU7QUFFZEMsUUFBWSxHQUZFO0FBR2RDLFlBQVk7QUFIRSxHQWhCMEI7QUFxQjFDQyxnQ0FJRSx5Q0FBYztBQUNaOztBQURZO0FBRWIsR0FOSCxTQUVTQyxPQUZULEdBRW1CLEVBRm5CO0FBckIwQyxDQUFyQyIsImZpbGUiOiI2MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBFRElUX0VESVRfVkFMSURfRk9PVEVSX0NPTVBPTkVOVCA9ICdlZGl0VmFsaWRFZGl0Rm9vdGVyJztcblxuZXhwb3J0IGNvbnN0IGVkaXRWYWxpZEVkaXRGb290ZXJDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlICAgICAgOiBgXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICBuZy1jbGFzcz1cInsnZGlzYWJsZWQnOiAkY3RybC5ueWFTZWxlY3Quc2VsZWN0ZWRDb250cm9sID09PSAnbm9uZSd9XCJcbiAgICAgIG5nLWNsaWNrPVwiJGN0cmwub2soKVwiPlxuICAgICAge3snT0snIHwgdHJhbnNsYXRlfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4td2FybmluZ1wiXG4gICAgICBuZy1jbGljaz1cIiRjdHJsLmNhbmNlbCgpXCI+XG4gICAgICB7eydDQU5DRUwnIHwgdHJhbnNsYXRlfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzICAgICAgOiB7XG4gICAgbnlhU2VsZWN0OiAgJz0nLFxuICAgIG9rOiAgICAgICAgICcmJyxcbiAgICBjYW5jZWw6ICAgICAnJidcbiAgfSxcbiAgY29udHJvbGxlciAgICA6XG4gIGNsYXNzIGVkaXRWYWxpZEVkaXRGb290ZXJDb250cm9sbGVyIHtcbiAgICBzdGF0aWMgJGluamVjdCA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAvL1xuICAgIH1cbiAgfVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL21vZGFsL2VkaXRWYWxpZEVkaXRGb290ZXIvc3RlcHdheS5lZGl0VmFsaWRFZGl0Rm9vdGVyLmNvbXBvbmVudC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 61 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_CHOOSE_CONTROL_COMPONENT = exports.EDIT_CHOOSE_CONTROL_COMPONENT = 'editChooseControl';\n\nvar editChooseControlComponent = exports.editChooseControlComponent = {\n template: '\\n
\\n \\n \\n \\n \\n {{ option.name }}\\n \\n \\n \\n \\n \\n ',\n bindings: {\n modelNyaSelect: '=',\n nyaSelectFiltered: '=',\n selectThisControl: '&'\n },\n controller: function () {\n function editChooseControlController() {\n //\n\n _classCallCheck(this, editChooseControlController);\n }\n\n _createClass(editChooseControlController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return editChooseControlController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tb2RhbC9lZGl0Q2hvb3NlQ29udHJvbC9zdGVwd2F5LmVkaXRDaG9vc2VDb250cm9sLmNvbXBvbmVudC5qcz8yZDNiIl0sIm5hbWVzIjpbIkVESVRfQ0hPT1NFX0NPTlRST0xfQ09NUE9ORU5UIiwiZWRpdENob29zZUNvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibW9kZWxOeWFTZWxlY3QiLCJueWFTZWxlY3RGaWx0ZXJlZCIsInNlbGVjdFRoaXNDb250cm9sIiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLHdFQUFnQyxtQkFBdEM7O0FBRUEsSUFBTUMsa0VBQTZCO0FBQ3hDQyw0bEJBRHdDO0FBbUJ4Q0MsWUFBVTtBQUNSQyxvQkFBb0IsR0FEWjtBQUVSQyx1QkFBb0IsR0FGWjtBQUdSQyx1QkFBb0I7QUFIWixHQW5COEI7QUF3QnhDQztBQUVFLDJDQUFjO0FBQ1o7O0FBRFk7QUFFYjs7QUFKSDtBQUFBO0FBQUEsMEJBTXVCO0FBQ25CLGVBQU8sRUFBUDtBQUNEO0FBUkg7O0FBQUE7QUFBQTtBQXhCd0MsQ0FBbkMiLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRURJVF9DSE9PU0VfQ09OVFJPTF9DT01QT05FTlQgPSAnZWRpdENob29zZUNvbnRyb2wnO1xuXG5leHBvcnQgY29uc3QgZWRpdENob29zZUNvbnRyb2xDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gIDxvbFxuICAgIGNsYXNzPVwibnlhLWJzLXNlbGVjdCBjb2wteHMtMTIgY29sLXNtLTEyIGNvbC1tZC0xMiBjb2wtbGctMTJcIlxuICAgIG5nLW1vZGVsPVwiJGN0cmwubW9kZWxOeWFTZWxlY3RcIlxuICAgIGRhdGEtbGl2ZS1zZWFyY2g9XCJmYWxzZVwiPlxuICAgIDxsaSBueWEtYnMtb3B0aW9uPVwib3B0aW9uIGluICRjdHJsLm55YVNlbGVjdEZpbHRlcmVkLmNvbnRyb2xzIGdyb3VwIGJ5IG9wdGlvbi5ncm91cFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1oZWFkZXIgZ3JleVRleHRcIj5cbiAgICAgICAge3sgJGdyb3VwIH19XG4gICAgICA8L3NwYW4+IDwhLS0gZ3JvdXAgaGVhZGVyIGNhbm5vdCBiZSBzZWFyY2hlZCAtLT5cbiAgICAgIDxhIG5nLWNsaWNrPVwiJGN0cmwuc2VsZWN0VGhpc0NvbnRyb2woe29wdGlvbklkOiBvcHRpb24uaWR9KVwiPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICB7eyBvcHRpb24ubmFtZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1vayBjaGVjay1tYXJrXCI+PC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvbGk+XG4gIDwvb2w+XG4gIGAsXG4gIGJpbmRpbmdzOiB7XG4gICAgbW9kZWxOeWFTZWxlY3Q6ICAgICAnPScsXG4gICAgbnlhU2VsZWN0RmlsdGVyZWQ6ICAnPScsXG4gICAgc2VsZWN0VGhpc0NvbnRyb2w6ICAnJidcbiAgfSxcbiAgY29udHJvbGxlciAgICA6XG4gIGNsYXNzIGVkaXRDaG9vc2VDb250cm9sQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAvL1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgJGluamVjdCgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9tb2RhbC9lZGl0Q2hvb3NlQ29udHJvbC9zdGVwd2F5LmVkaXRDaG9vc2VDb250cm9sLmNvbXBvbmVudC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 62 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.controls = exports.configs = undefined;\n\nvar _blank = __webpack_require__(63);\n\nvar _editBlankControl = __webpack_require__(64);\n\nvar _editBlankControl2 = _interopRequireDefault(_editBlankControl);\n\nvar _IpAdress = __webpack_require__(65);\n\nvar _editIpAdress = __webpack_require__(66);\n\nvar _editIpAdress2 = _interopRequireDefault(_editIpAdress);\n\nvar _date = __webpack_require__(67);\n\nvar _editDate = __webpack_require__(68);\n\nvar _editDate2 = _interopRequireDefault(_editDate);\n\nvar _checkbox = __webpack_require__(69);\n\nvar _editCheckBox = __webpack_require__(70);\n\nvar _editCheckBox2 = _interopRequireDefault(_editCheckBox);\n\nvar _email = __webpack_require__(71);\n\nvar _editEmail = __webpack_require__(72);\n\nvar _editEmail2 = _interopRequireDefault(_editEmail);\n\nvar _basicSelect = __webpack_require__(73);\n\nvar _editBasicSelect = __webpack_require__(74);\n\nvar _editBasicSelect2 = _interopRequireDefault(_editBasicSelect);\n\nvar _groupedSelect = __webpack_require__(75);\n\nvar _editGroupedSelect = __webpack_require__(76);\n\nvar _editGroupedSelect2 = _interopRequireDefault(_editGroupedSelect);\n\nvar _header = __webpack_require__(77);\n\nvar _editHeaderControl = __webpack_require__(78);\n\nvar _editHeaderControl2 = _interopRequireDefault(_editHeaderControl);\n\nvar _password = __webpack_require__(79);\n\nvar _editPassword = __webpack_require__(80);\n\nvar _editPassword2 = _interopRequireDefault(_editPassword);\n\nvar _stepwayRadio = __webpack_require__(81);\n\nvar _stepwayEditRadio = __webpack_require__(82);\n\nvar _stepwayEditRadio2 = __webpack_require__(84);\n\nvar _stepwayEditRadio3 = _interopRequireDefault(_stepwayEditRadio2);\n\nvar _stepwayRichTextEditor = __webpack_require__(85);\n\nvar _stepwayEditRichTextEditor = __webpack_require__(86);\n\nvar _stepwayEditRichTextEditor2 = __webpack_require__(88);\n\nvar _stepwayEditRichTextEditor3 = _interopRequireDefault(_stepwayEditRichTextEditor2);\n\nvar _stepwaySubTitle = __webpack_require__(89);\n\nvar _stepwayEditSubTitle = __webpack_require__(90);\n\nvar _stepwayEditSubTitle2 = __webpack_require__(92);\n\nvar _stepwayEditSubTitle3 = _interopRequireDefault(_stepwayEditSubTitle2);\n\nvar _stepwayTextArea = __webpack_require__(93);\n\nvar _stepwayEditTextArea = __webpack_require__(94);\n\nvar _stepwayEditTextArea2 = __webpack_require__(96);\n\nvar _stepwayEditTextArea3 = _interopRequireDefault(_stepwayEditTextArea2);\n\nvar _stepwayTextInput = __webpack_require__(97);\n\nvar _stepwayEditTextInput = __webpack_require__(98);\n\nvar _stepwayEditTextInput2 = __webpack_require__(100);\n\nvar _stepwayEditTextInput3 = _interopRequireDefault(_stepwayEditTextInput2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// controls configs\nvar configs = [_IpAdress.IpAdressConfig, _date.DateConfig, _checkbox.CheckBoxConfig, _email.EmailConfig, _basicSelect.BasicSelectConfig, _blank.BlankConfig, _groupedSelect.GroupedSelectConfig, _header.HeaderConfig, _password.PasswordConfig, _stepwayRadio.RadioConfig, _stepwayRichTextEditor.RichTextEditorConfig, _stepwaySubTitle.SubTitleConfig, _stepwayTextArea.TextAreaConfig, _stepwayTextInput.TextInputConfig];\n\n// controls component (for edit control modal)\nvar controls = [\n// editBlankControl:\n{\n name: _editBlankControl.EDIT_BLANK_CONTROL_COMPONENT,\n component: _editBlankControl.editBlankControlComponent,\n moduleName: _editBlankControl2.default.name\n},\n// editIpAdress:\n{\n name: _editIpAdress.EDIT_IP_ADRESS_COMPONENT,\n component: _editIpAdress.editIpAdressControlComponent,\n moduleName: _editIpAdress2.default.name\n},\n// editDate:\n{\n name: _editDate.EDIT_DATE_COMPONENT,\n component: _editDate.editDateControlComponent,\n moduleName: _editDate2.default.name\n},\n// editBasicSelect:\n{\n name: _editBasicSelect.EDIT_BASIC_SELECT_COMPONENT,\n component: _editBasicSelect.editBasicSelectControlComponent,\n moduleName: _editBasicSelect2.default.name\n},\n// editGroupedSelect:\n{\n name: _editGroupedSelect.EDIT_GROUPED_SELECT_COMPONENT,\n component: _editGroupedSelect.editGroupedSelectControlComponent,\n moduleName: _editGroupedSelect2.default.name\n},\n// editCheckBox:\n{\n name: _editCheckBox.EDIT_CHECKBOX_COMPONENT,\n component: _editCheckBox.editCheckBoxControlComponent,\n moduleName: _editCheckBox2.default.name\n},\n// editEmail:\n{\n name: _editEmail.EDIT_EMAIL_COMPONENT,\n component: _editEmail.editEmailControlComponent,\n moduleName: _editEmail2.default.name\n},\n// editHeader:\n{\n name: _editHeaderControl.EDIT_HEADER_CONTROL_COMPONENT,\n component: _editHeaderControl.editHeaderControlComponent,\n moduleName: _editHeaderControl2.default.name\n},\n// editPassword:\n{\n name: _editPassword.EDIT_PASSWORD_CONTROL_COMPONENT,\n component: _editPassword.editPasswordControlComponent,\n moduleName: _editPassword2.default.name\n},\n// editRadio:\n{\n name: _stepwayEditRadio.EDIT_RADIO_CONTROL_COMPONENT,\n component: _stepwayEditRadio.editRadioControlComponent,\n moduleName: _stepwayEditRadio3.default.name\n},\n// editRichTextEditor:\n{\n name: _stepwayEditRichTextEditor.EDIT_RICH_TEXT_EDITOR_COMPONENT,\n component: _stepwayEditRichTextEditor.editRichTextEditorControlComponent,\n moduleName: _stepwayEditRichTextEditor3.default.name\n},\n// editSubTitle:\n{\n name: _stepwayEditSubTitle.EDIT_SUBTITLE_CONTROL_COMPONENT,\n component: _stepwayEditSubTitle.editSubTitleControlComponent,\n moduleName: _stepwayEditSubTitle3.default.name\n},\n// editTextArea:\n{\n name: _stepwayEditTextArea.EDIT_TEXTAREA_CONTROL_COMPONENT,\n component: _stepwayEditTextArea.editTextareaControlComponent,\n moduleName: _stepwayEditTextArea3.default.name\n},\n// editTextInput:\n{\n name: _stepwayEditTextInput.EDIT_TEXTINPUT_CONTROL_COMPONENT,\n component: _stepwayEditTextInput.editTextInputControlComponent,\n moduleName: _stepwayEditTextInput3.default.name\n}];\n\nexports.configs = configs;\nexports.controls = controls;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9pbmRleC5qcz83NzZhIl0sIm5hbWVzIjpbImNvbmZpZ3MiLCJjb250cm9scyIsIm5hbWUiLCJjb21wb25lbnQiLCJtb2R1bGVOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7Ozs7QUFFQTs7QUFDQTs7OztBQUVBOztBQUNBOzs7O0FBRUE7O0FBQ0E7Ozs7QUFFQTs7QUFDQTs7OztBQUVBOztBQUNBOzs7O0FBRUE7O0FBQ0E7Ozs7QUFFQTs7QUFDQTs7OztBQUVBOztBQUNBOzs7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7OztBQUVBOztBQUNBOztBQUNBOzs7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7O0FBR0E7QUFDQSxJQUFNQSxVQUFVLCtZQUFoQjs7QUFpQkE7QUFDQSxJQUFNQyxXQUFXO0FBQ2Y7QUFDQTtBQUNFQyxzREFERjtBQUVFQyx3REFGRjtBQUdFQyxjQUFZLDJCQUFnQkY7QUFIOUIsQ0FGZTtBQU9mO0FBQ0M7QUFDQ0EsOENBREQ7QUFFQ0MsdURBRkQ7QUFHQ0MsY0FBWSx1QkFBbUJGO0FBSGhDLENBUmM7QUFhZjtBQUNBO0FBQ0VBLHFDQURGO0FBRUVDLCtDQUZGO0FBR0VDLGNBQVksbUJBQWVGO0FBSDdCLENBZGU7QUFtQmY7QUFDQTtBQUNFQSxvREFERjtBQUVFQyw2REFGRjtBQUdFQyxjQUFZLDBCQUFzQkY7QUFIcEMsQ0FwQmU7QUF5QmY7QUFDQTtBQUNFQSx3REFERjtBQUVFQyxpRUFGRjtBQUdFQyxjQUFZLDRCQUF3QkY7QUFIdEMsQ0ExQmU7QUErQmY7QUFDQTtBQUNFQSw2Q0FERjtBQUVFQyx1REFGRjtBQUdFQyxjQUFZLHVCQUFtQkY7QUFIakMsQ0FoQ2U7QUFxQ2Y7QUFDQTtBQUNFQSx1Q0FERjtBQUVFQyxpREFGRjtBQUdFQyxjQUFZLG9CQUF1QkY7QUFIckMsQ0F0Q2U7QUEyQ2Y7QUFDQTtBQUNFQSx3REFERjtBQUVFQywwREFGRjtBQUdFQyxjQUFZLDRCQUFrQkY7QUFIaEMsQ0E1Q2U7QUFpRGY7QUFDQTtBQUNFQSxxREFERjtBQUVFQyx1REFGRjtBQUdFQyxjQUFZLHVCQUFtQkY7QUFIakMsQ0FsRGU7QUF1RGY7QUFDQTtBQUNFQSxzREFERjtBQUVFQyx3REFGRjtBQUdFQyxjQUFZLDJCQUFnQkY7QUFIOUIsQ0F4RGU7QUE2RGY7QUFDQTtBQUNFQSxrRUFERjtBQUVFQywwRUFGRjtBQUdFQyxjQUFZLG9DQUF5QkY7QUFIdkMsQ0E5RGU7QUFtRWY7QUFDQTtBQUNFQSw0REFERjtBQUVFQyw4REFGRjtBQUdFQyxjQUFZLDhCQUFhRjtBQUgzQixDQXBFZTtBQXlFZjtBQUNBO0FBQ0VBLDREQURGO0FBRUVDLDhEQUZGO0FBR0VDLGNBQVksOEJBQTBCRjtBQUh4QyxDQTFFZTtBQStFZjtBQUNBO0FBQ0VBLDhEQURGO0FBRUVDLGdFQUZGO0FBR0VDLGNBQVksK0JBQTJCRjtBQUh6QyxDQWhGZSxDQUFqQjs7UUF3RkVGLE8sR0FBQUEsTztRQUNBQyxRLEdBQUFBLFEiLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCbGFua0NvbmZpZyB9IGZyb20gJy4vYmxhbmsvY29uZmlnL2JsYW5rLmNvbmZpZyc7XG5pbXBvcnQgZWRpdEJsYW5rTW9kdWxlLCB7ZWRpdEJsYW5rQ29udHJvbENvbXBvbmVudCwgRURJVF9CTEFOS19DT05UUk9MX0NPTVBPTkVOVH0gZnJvbSAnLi9ibGFuay9lZGl0QmxhbmsvZWRpdEJsYW5rQ29udHJvbC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBJcEFkcmVzc0NvbmZpZyB9IGZyb20gJy4vSXBBZHJlc3MvY29uZmlnL0lwQWRyZXNzLmNvbmZpZyc7XG5pbXBvcnQgZWRpdElwQWRyZXNzTW9kdWxlLCB7ZWRpdElwQWRyZXNzQ29udHJvbENvbXBvbmVudCwgRURJVF9JUF9BRFJFU1NfQ09NUE9ORU5UfSBmcm9tICcuL0lwQWRyZXNzL2VkaXRJcEFkcmVzcy9lZGl0SXBBZHJlc3MuY29tcG9uZW50JztcblxuaW1wb3J0IHsgRGF0ZUNvbmZpZyB9IGZyb20gJy4vRGF0ZS9jb25maWcvZGF0ZS5jb25maWcnO1xuaW1wb3J0IGVkaXREYXRlTW9kdWxlLCB7ZWRpdERhdGVDb250cm9sQ29tcG9uZW50LCBFRElUX0RBVEVfQ09NUE9ORU5UfSBmcm9tICcuL0RhdGUvZWRpdERhdGUvZWRpdERhdGUuY29tcG9uZW50JztcblxuaW1wb3J0IHsgQ2hlY2tCb3hDb25maWcgfSBmcm9tICcuL0NoZWNrQm94L2NvbmZpZy9jaGVja2JveC5jb25maWcnO1xuaW1wb3J0IGVkaXRDaGVja0JveE1vZHVsZSwge2VkaXRDaGVja0JveENvbnRyb2xDb21wb25lbnQsIEVESVRfQ0hFQ0tCT1hfQ09NUE9ORU5UfSBmcm9tICcuL0NoZWNrQm94L2VkaXRDaGVja0JveC9lZGl0Q2hlY2tCb3guY29tcG9uZW50JztcblxuaW1wb3J0IHsgRW1haWxDb25maWcgfSBmcm9tICcuL0VtYWlsL2NvbmZpZy9lbWFpbC5jb25maWcnO1xuaW1wb3J0IGVkaXRFbWFpbENvbnRyb2xNb2R1bGUsIHtlZGl0RW1haWxDb250cm9sQ29tcG9uZW50LCBFRElUX0VNQUlMX0NPTVBPTkVOVH0gZnJvbSAnLi9FbWFpbC9lZGl0RW1haWwvZWRpdEVtYWlsLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEJhc2ljU2VsZWN0Q29uZmlnIH0gZnJvbSAnLi9iYXNpY1NlbGVjdC9jb25maWcvYmFzaWNTZWxlY3QuY29uZmlnJztcbmltcG9ydCBlZGl0QmFzaWNTZWxlY3RNb2R1bGUsIHsgZWRpdEJhc2ljU2VsZWN0Q29udHJvbENvbXBvbmVudCwgRURJVF9CQVNJQ19TRUxFQ1RfQ09NUE9ORU5UIH0gZnJvbSAnLi9iYXNpY1NlbGVjdC9lZGl0QmFzaWNTZWxlY3QvZWRpdEJhc2ljU2VsZWN0LmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEdyb3VwZWRTZWxlY3RDb25maWcgfSBmcm9tICcuL2dyb3VwZWRTZWxlY3QvY29uZmlnL2dyb3VwZWRTZWxlY3QuY29uZmlnJztcbmltcG9ydCBlZGl0R3JvdXBlZFNlbGVjdE1vZHVsZSwge2VkaXRHcm91cGVkU2VsZWN0Q29udHJvbENvbXBvbmVudCwgRURJVF9HUk9VUEVEX1NFTEVDVF9DT01QT05FTlR9IGZyb20gJy4vZ3JvdXBlZFNlbGVjdC9lZGl0R3JvdXBlZFNlbGVjdC9lZGl0R3JvdXBlZFNlbGVjdC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBIZWFkZXJDb25maWcgfSBmcm9tICcuL2hlYWRlci9jb25maWcvaGVhZGVyLmNvbmZpZyc7XG5pbXBvcnQgZWRpdEhlYWRlckNvbnRyb2wsIHtlZGl0SGVhZGVyQ29udHJvbENvbXBvbmVudCwgRURJVF9IRUFERVJfQ09OVFJPTF9DT01QT05FTlR9IGZyb20gJy4vaGVhZGVyL2VkaXRIZWFkZXIvZWRpdEhlYWRlckNvbnRyb2wuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUGFzc3dvcmRDb25maWcgfSBmcm9tICcuL3Bhc3N3b3JkL2NvbmZpZy9wYXNzd29yZC5jb25maWcnO1xuaW1wb3J0IGVkaXRQYXNzd29yZE1vZHVsZSwge2VkaXRQYXNzd29yZENvbnRyb2xDb21wb25lbnQsIEVESVRfUEFTU1dPUkRfQ09OVFJPTF9DT01QT05FTlR9IGZyb20gJy4vcGFzc3dvcmQvZWRpdFBhc3N3b3JkL2VkaXRQYXNzd29yZC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBSYWRpb0NvbmZpZyB9IGZyb20gJy4vcmFkaW8vY29uZmlnL3N0ZXB3YXkucmFkaW8uY29uZmlnJztcbmltcG9ydCB7ZWRpdFJhZGlvQ29udHJvbENvbXBvbmVudCwgRURJVF9SQURJT19DT05UUk9MX0NPTVBPTkVOVH0gZnJvbSAnLi9yYWRpby9lZGl0UmFkaW8vc3RlcHdheS5lZGl0UmFkaW8uY29tcG9uZW50JztcbmltcG9ydCBlZGl0UmFkaW9Nb2R1bGUgZnJvbSAnLi9yYWRpby9lZGl0UmFkaW8vc3RlcHdheS5lZGl0UmFkaW8ubW9kdWxlJztcblxuaW1wb3J0IHsgUmljaFRleHRFZGl0b3JDb25maWcgfSAgZnJvbSAnLi9yaWNoVGV4dEVkaXRvci9jb25maWcvc3RlcHdheS5yaWNoVGV4dEVkaXRvci5jb25maWcnO1xuaW1wb3J0IHtlZGl0UmljaFRleHRFZGl0b3JDb250cm9sQ29tcG9uZW50LCBFRElUX1JJQ0hfVEVYVF9FRElUT1JfQ09NUE9ORU5UfSBmcm9tICcuL3JpY2hUZXh0RWRpdG9yL2VkaXRSaWNoVGV4dEVkaXRvci9zdGVwd2F5LmVkaXRSaWNoVGV4dEVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IGVkaXRSaWNoVGV4dEVkaXRvck1vZHVsZSBmcm9tICcuL3JpY2hUZXh0RWRpdG9yL2VkaXRSaWNoVGV4dEVkaXRvci9zdGVwd2F5LmVkaXRSaWNoVGV4dEVkaXRvci5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTdWJUaXRsZUNvbmZpZyB9ICBmcm9tICcuL3N1YlRpdGxlL2NvbmZpZy9zdGVwd2F5LnN1YlRpdGxlLmNvbmZpZyc7XG5pbXBvcnQge2VkaXRTdWJUaXRsZUNvbnRyb2xDb21wb25lbnQsIEVESVRfU1VCVElUTEVfQ09OVFJPTF9DT01QT05FTlR9IGZyb20gJy4vc3ViVGl0bGUvZWRpdFN1YlRpdGxlL3N0ZXB3YXkuZWRpdFN1YlRpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgZWRpdFN1YlRpdGxlIGZyb20gJy4vc3ViVGl0bGUvZWRpdFN1YlRpdGxlL3N0ZXB3YXkuZWRpdFN1YlRpdGxlLm1vZHVsZSc7XG5cbmltcG9ydCB7IFRleHRBcmVhQ29uZmlnIH0gIGZyb20gJy4vdGV4dEFyZWEvY29uZmlnL3N0ZXB3YXkudGV4dEFyZWEuY29uZmlnJztcbmltcG9ydCB7ZWRpdFRleHRhcmVhQ29udHJvbENvbXBvbmVudCwgRURJVF9URVhUQVJFQV9DT05UUk9MX0NPTVBPTkVOVH0gZnJvbSAnLi90ZXh0QXJlYS9lZGl0VGV4dEFyZWEvc3RlcHdheS5lZGl0VGV4dEFyZWEuY29tcG9uZW50JztcbmltcG9ydCBlZGl0VGV4dGFyZWFDb250cm9sTW9kdWxlIGZyb20gJy4vdGV4dEFyZWEvZWRpdFRleHRBcmVhL3N0ZXB3YXkuZWRpdFRleHRBcmVhLm1vZHVsZSc7XG5cbmltcG9ydCB7IFRleHRJbnB1dENvbmZpZyB9ICBmcm9tICcuL3RleHRJbnB1dC9jb25maWcvc3RlcHdheS50ZXh0SW5wdXQuY29uZmlnJztcbmltcG9ydCB7ZWRpdFRleHRJbnB1dENvbnRyb2xDb21wb25lbnQsIEVESVRfVEVYVElOUFVUX0NPTlRST0xfQ09NUE9ORU5UfSBmcm9tICcuL3RleHRJbnB1dC9lZGl0VGV4dElucHV0L3N0ZXB3YXkuZWRpdFRleHRJbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IGVkaXRUZXh0SW5wdXRDb250cm9sTW9kdWxlIGZyb20gJy4vdGV4dElucHV0L2VkaXRUZXh0SW5wdXQvc3RlcHdheS5lZGl0VGV4dElucHV0Lm1vZHVsZSc7XG5cblxuLy8gY29udHJvbHMgY29uZmlnc1xuY29uc3QgY29uZmlncyA9IFtcbiAgSXBBZHJlc3NDb25maWcsXG4gIERhdGVDb25maWcsXG4gIENoZWNrQm94Q29uZmlnLFxuICBFbWFpbENvbmZpZyxcbiAgQmFzaWNTZWxlY3RDb25maWcsXG4gIEJsYW5rQ29uZmlnLFxuICBHcm91cGVkU2VsZWN0Q29uZmlnLFxuICBIZWFkZXJDb25maWcsXG4gIFBhc3N3b3JkQ29uZmlnLFxuICBSYWRpb0NvbmZpZyxcbiAgUmljaFRleHRFZGl0b3JDb25maWcsXG4gIFN1YlRpdGxlQ29uZmlnLFxuICBUZXh0QXJlYUNvbmZpZyxcbiAgVGV4dElucHV0Q29uZmlnXG5dO1xuXG4vLyBjb250cm9scyBjb21wb25lbnQgKGZvciBlZGl0IGNvbnRyb2wgbW9kYWwpXG5jb25zdCBjb250cm9scyA9IFtcbiAgLy8gZWRpdEJsYW5rQ29udHJvbDpcbiAge1xuICAgIG5hbWU6ICAgICAgIEVESVRfQkxBTktfQ09OVFJPTF9DT01QT05FTlQsXG4gICAgY29tcG9uZW50OiAgZWRpdEJsYW5rQ29udHJvbENvbXBvbmVudCxcbiAgICBtb2R1bGVOYW1lOiBlZGl0QmxhbmtNb2R1bGUubmFtZVxuICB9LFxuICAvLyBlZGl0SXBBZHJlc3M6XG4gICB7XG4gICAgbmFtZTogICAgICAgRURJVF9JUF9BRFJFU1NfQ09NUE9ORU5ULFxuICAgIGNvbXBvbmVudDogIGVkaXRJcEFkcmVzc0NvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdElwQWRyZXNzTW9kdWxlLm5hbWVcbiAgfSxcbiAgLy8gZWRpdERhdGU6XG4gIHtcbiAgICBuYW1lOiAgICAgICBFRElUX0RBVEVfQ09NUE9ORU5ULFxuICAgIGNvbXBvbmVudDogIGVkaXREYXRlQ29udHJvbENvbXBvbmVudCxcbiAgICBtb2R1bGVOYW1lOiBlZGl0RGF0ZU1vZHVsZS5uYW1lXG4gIH0sXG4gIC8vIGVkaXRCYXNpY1NlbGVjdDpcbiAge1xuICAgIG5hbWU6IEVESVRfQkFTSUNfU0VMRUNUX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRCYXNpY1NlbGVjdENvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdEJhc2ljU2VsZWN0TW9kdWxlLm5hbWVcbiAgfSxcbiAgLy8gZWRpdEdyb3VwZWRTZWxlY3Q6XG4gIHtcbiAgICBuYW1lOiBFRElUX0dST1VQRURfU0VMRUNUX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRHcm91cGVkU2VsZWN0Q29udHJvbENvbXBvbmVudCxcbiAgICBtb2R1bGVOYW1lOiBlZGl0R3JvdXBlZFNlbGVjdE1vZHVsZS5uYW1lXG4gIH0sXG4gIC8vIGVkaXRDaGVja0JveDpcbiAge1xuICAgIG5hbWU6IEVESVRfQ0hFQ0tCT1hfQ09NUE9ORU5ULFxuICAgIGNvbXBvbmVudDogZWRpdENoZWNrQm94Q29udHJvbENvbXBvbmVudCxcbiAgICBtb2R1bGVOYW1lOiBlZGl0Q2hlY2tCb3hNb2R1bGUubmFtZVxuICB9LFxuICAvLyBlZGl0RW1haWw6XG4gIHtcbiAgICBuYW1lOiBFRElUX0VNQUlMX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRFbWFpbENvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdEVtYWlsQ29udHJvbE1vZHVsZS5uYW1lXG4gIH0sXG4gIC8vIGVkaXRIZWFkZXI6XG4gIHtcbiAgICBuYW1lOiBFRElUX0hFQURFUl9DT05UUk9MX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRIZWFkZXJDb250cm9sQ29tcG9uZW50LFxuICAgIG1vZHVsZU5hbWU6IGVkaXRIZWFkZXJDb250cm9sLm5hbWVcbiAgfSxcbiAgLy8gZWRpdFBhc3N3b3JkOlxuICB7XG4gICAgbmFtZTogRURJVF9QQVNTV09SRF9DT05UUk9MX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRQYXNzd29yZENvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdFBhc3N3b3JkTW9kdWxlLm5hbWVcbiAgfSxcbiAgLy8gZWRpdFJhZGlvOlxuICB7XG4gICAgbmFtZTogRURJVF9SQURJT19DT05UUk9MX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRSYWRpb0NvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdFJhZGlvTW9kdWxlLm5hbWVcbiAgfSxcbiAgLy8gZWRpdFJpY2hUZXh0RWRpdG9yOlxuICB7XG4gICAgbmFtZTogRURJVF9SSUNIX1RFWFRfRURJVE9SX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRSaWNoVGV4dEVkaXRvckNvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdFJpY2hUZXh0RWRpdG9yTW9kdWxlLm5hbWVcbiAgfSxcbiAgLy8gZWRpdFN1YlRpdGxlOlxuICB7XG4gICAgbmFtZTogRURJVF9TVUJUSVRMRV9DT05UUk9MX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRTdWJUaXRsZUNvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdFN1YlRpdGxlLm5hbWVcbiAgfSxcbiAgLy8gZWRpdFRleHRBcmVhOlxuICB7XG4gICAgbmFtZTogRURJVF9URVhUQVJFQV9DT05UUk9MX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRUZXh0YXJlYUNvbnRyb2xDb21wb25lbnQsXG4gICAgbW9kdWxlTmFtZTogZWRpdFRleHRhcmVhQ29udHJvbE1vZHVsZS5uYW1lXG4gIH0sXG4gIC8vIGVkaXRUZXh0SW5wdXQ6XG4gIHtcbiAgICBuYW1lOiBFRElUX1RFWFRJTlBVVF9DT05UUk9MX0NPTVBPTkVOVCxcbiAgICBjb21wb25lbnQ6IGVkaXRUZXh0SW5wdXRDb250cm9sQ29tcG9uZW50LFxuICAgIG1vZHVsZU5hbWU6IGVkaXRUZXh0SW5wdXRDb250cm9sTW9kdWxlLm5hbWVcbiAgfVxuXTtcblxuZXhwb3J0IHtcbiAgY29uZmlncyxcbiAgY29udHJvbHNcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9pbmRleC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 63 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar BlankConfig = exports.BlankConfig = {\n id: 'empty',\n name: 'no control',\n subtitle: 'no control',\n group: 'Blank',\n formlyType: 'blank',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {}\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9ibGFuay9jb25maWcvYmxhbmsuY29uZmlnLmpzPzFjMTUiXSwibmFtZXMiOlsiQmxhbmtDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiZm9ybWx5VmFsaWRhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFNQSxvQ0FBYztBQUN6QkMsTUFBSSxPQURxQjtBQUV6QkMsUUFBTSxZQUZtQjtBQUd6QkMsWUFBVSxZQUhlO0FBSXpCQyxTQUFPLE9BSmtCO0FBS3pCQyxjQUFZLE9BTGE7QUFNekJDLGlCQUFlLEVBTlU7QUFPekJDLGVBQWEsRUFQWTtBQVF6QkMsa0JBQWdCLEtBUlM7QUFTekJDLHFCQUFtQixFQVRNO0FBVXpCQyxpQkFBZSxFQVZVO0FBV3pCQyw4QkFBNEIsRUFYSDtBQVl6QkMsb0JBQWtCLEVBWk87QUFhekJDLG9CQUFrQjtBQWJPLENBQXBCIiwiZmlsZSI6IjYzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEJsYW5rQ29uZmlnID0ge1xuICBpZDogJ2VtcHR5JyxcbiAgbmFtZTogJ25vIGNvbnRyb2wnLFxuICBzdWJ0aXRsZTogJ25vIGNvbnRyb2wnLFxuICBncm91cDogJ0JsYW5rJyxcbiAgZm9ybWx5VHlwZTogJ2JsYW5rJyxcbiAgZm9ybWx5U3VidHlwZTogJycsXG4gIGZvcm1seUxhYmVsOiAnJyxcbiAgZm9ybWx5UmVxdWlyZWQ6IGZhbHNlLFxuICBmb3JtbHlEZXNjcmlwdGlvbjogJycsXG4gIGZvcm1seU9wdGlvbnM6IFtdICxcbiAgZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXM6IHt9LFxuICBmb3JtbHlWYWxpZGF0b3JzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdGlvbjoge31cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9ibGFuay9jb25maWcvYmxhbmsuY29uZmlnLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 64 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_BLANK_CONTROL_COMPONENT = exports.EDIT_BLANK_CONTROL_COMPONENT = 'editBlankControl';\n\nvar editBlankControlComponent = exports.editBlankControlComponent = {\n template: '\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n {{\\'COL_WILL_BE_BLANK\\' | translate}}\\n \\n \\n
\\n
\\n
\\n
\\n ',\n bindings: {},\n controller: (_temp = _class = function editBlankControlController() {\n //\n\n _classCallCheck(this, editBlankControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editBlankModuleName = 'stepway.editBlankControl.module';\nexports.default = angular.module(editBlankModuleName, []).component(EDIT_BLANK_CONTROL_COMPONENT, editBlankControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9ibGFuay9lZGl0QmxhbmsvZWRpdEJsYW5rQ29udHJvbC5jb21wb25lbnQuanM/NmRhZCJdLCJuYW1lcyI6WyJFRElUX0JMQU5LX0NPTlRST0xfQ09NUE9ORU5UIiwiZWRpdEJsYW5rQ29udHJvbENvbXBvbmVudCIsInRlbXBsYXRlIiwiYmluZGluZ3MiLCJjb250cm9sbGVyIiwiJGluamVjdCIsImVkaXRCbGFua01vZHVsZU5hbWUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sSUFBTUEsc0VBQStCLGtCQUFyQzs7QUFFQSxJQUFNQyxnRUFBNEI7QUFDdkNDLHlvQkFEdUM7QUEwQnZDQyxZQUFVLEVBMUI2QjtBQTJCdkNDLGdDQUlFLHNDQUFjO0FBQ1o7O0FBRFk7QUFFYixHQU5ILFNBRVNDLE9BRlQsR0FFbUIsRUFGbkI7QUEzQnVDLENBQWxDOztBQXFDUCxJQUFNQyxzQkFBc0IsaUNBQTVCO2tCQUNlQyxRQUNFQyxNQURGLENBQ1NGLG1CQURULEVBQzhCLEVBRDlCLEVBRUVHLFNBRkYsQ0FFWVQsNEJBRlosRUFFMENDLHlCQUYxQyxDIiwiZmlsZSI6IjY0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVESVRfQkxBTktfQ09OVFJPTF9DT01QT05FTlQgPSAnZWRpdEJsYW5rQ29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0QmxhbmtDb250cm9sQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZTogYFxuICA8ZGl2IG5nLXN3aXRjaC13aGVuPVwiZW1wdHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cImdyZXlUZXh0XCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCI+PC9pPlxuICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAge3snUFJFVklFV19UQUInIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxoci8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJ0ZXh0LWNlbnRlciBncmV5VGV4dFwiPlxuICAgICAgICAgICAgICB7eydDT0xfV0lMTF9CRV9CTEFOSycgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzOiB7fSxcbiAgY29udHJvbGxlcjpcbiAgY2xhc3MgZWRpdEJsYW5rQ29udHJvbENvbnRyb2xsZXIge1xuICAgIHN0YXRpYyAkaW5qZWN0ID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIC8vXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBlZGl0QmxhbmtNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdEJsYW5rQ29udHJvbC5tb2R1bGUnO1xuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuICAgICAgICAgICAgICAgIC5tb2R1bGUoZWRpdEJsYW5rTW9kdWxlTmFtZSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChFRElUX0JMQU5LX0NPTlRST0xfQ09NUE9ORU5ULCBlZGl0QmxhbmtDb250cm9sQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL2JsYW5rL2VkaXRCbGFuay9lZGl0QmxhbmtDb250cm9sLmNvbXBvbmVudC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 65 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar IpAdressConfig = exports.IpAdressConfig = {\n id: 'IpAdress',\n name: 'IpAdress',\n subtitle: 'IpAdress',\n group: 'input',\n formlyType: 'input',\n formlySubtype: 'ipadress',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {\n ipAddressShape: {\n expression: function expression(viewValue, modelValue) {\n var value = modelValue || viewValue;\n return (/(\\d{1,3}\\.){3}\\d{1,3}/.test(value)\n );\n },\n message: '$viewValue + \\' is not a valid IP Address\\''\n }\n },\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n var defaultReturnMsg = 'this IP Adress field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n if (scope.to.required) return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9JcEFkcmVzcy9jb25maWcvSXBBZHJlc3MuY29uZmlnLmpzPzY2NjMiXSwibmFtZXMiOlsiSXBBZHJlc3NDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiaXBBZGRyZXNzU2hhcGUiLCJleHByZXNzaW9uIiwidmlld1ZhbHVlIiwibW9kZWxWYWx1ZSIsInZhbHVlIiwidGVzdCIsIm1lc3NhZ2UiLCJmb3JtbHlWYWxpZGF0aW9uIiwibWVzc2FnZXMiLCJyZXF1aXJlZCIsInNjb3BlIiwiZGVmYXVsdFJldHVybk1zZyIsInJldHVybk1zZyIsInRvIiwibGFiZWwiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQU8sSUFBTUEsMENBQWlCO0FBQzVCQyxNQUFJLFVBRHdCO0FBRTVCQyxRQUFNLFVBRnNCO0FBRzVCQyxZQUFVLFVBSGtCO0FBSTVCQyxTQUFPLE9BSnFCO0FBSzVCQyxjQUFZLE9BTGdCO0FBTTVCQyxpQkFBZSxVQU5hO0FBTzVCQyxlQUFhLEVBUGU7QUFRNUJDLGtCQUFnQixLQVJZO0FBUzVCQyxxQkFBbUIsRUFUUztBQVU1QkMsaUJBQWUsRUFWYTtBQVc1QkMsOEJBQTRCLEVBWEE7QUFZNUJDLG9CQUFrQjtBQUNoQkMsb0JBQWdCO0FBQ2RDLGtCQUFZLG9CQUFTQyxTQUFULEVBQW9CQyxVQUFwQixFQUFnQztBQUMxQyxZQUFNQyxRQUFRRCxjQUFjRCxTQUE1QjtBQUNBLGVBQU8seUJBQXdCRyxJQUF4QixDQUE2QkQsS0FBN0I7QUFBUDtBQUNELE9BSmE7QUFLZEUsZUFBUztBQUxLO0FBREEsR0FaVTtBQXFCNUJDLG9CQUFrQjtBQUNoQkMsY0FBVTtBQUNSQyxnQkFBVSxrQkFBU1AsU0FBVCxFQUFvQkMsVUFBcEIsRUFBZ0NPLEtBQWhDLEVBQXVDO0FBQy9DLFlBQU1DLG1CQUFtQixrQ0FBekI7QUFDQSxZQUFNQyxZQUFhLE9BQU9GLE1BQU1HLEVBQU4sQ0FBU0MsS0FBaEIsS0FBMEIsV0FBM0IsR0FBNENKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxLQUFtQixFQUFwQixHQUEwQkosTUFBTUcsRUFBTixDQUFTQyxLQUFULEdBQWlCLGNBQTNDLEdBQTRESCxnQkFBdkcsR0FBMkhBLGdCQUE3STtBQUNBLFlBQUlELE1BQU1HLEVBQU4sQ0FBU0osUUFBYixFQUF1QixPQUFPRyxTQUFQO0FBQ3hCO0FBTE87QUFETTtBQXJCVSxDQUF2QiIsImZpbGUiOiI2NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBJcEFkcmVzc0NvbmZpZyA9IHtcbiAgaWQ6ICdJcEFkcmVzcycsXG4gIG5hbWU6ICdJcEFkcmVzcycsXG4gIHN1YnRpdGxlOiAnSXBBZHJlc3MnLFxuICBncm91cDogJ2lucHV0JyxcbiAgZm9ybWx5VHlwZTogJ2lucHV0JyxcbiAgZm9ybWx5U3VidHlwZTogJ2lwYWRyZXNzJyxcbiAgZm9ybWx5TGFiZWw6ICcnLFxuICBmb3JtbHlSZXF1aXJlZDogZmFsc2UsXG4gIGZvcm1seURlc2NyaXB0aW9uOiAnJyxcbiAgZm9ybWx5T3B0aW9uczogW10sXG4gIGZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdG9yczoge1xuICAgIGlwQWRkcmVzc1NoYXBlOiB7XG4gICAgICBleHByZXNzaW9uOiBmdW5jdGlvbih2aWV3VmFsdWUsIG1vZGVsVmFsdWUpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBtb2RlbFZhbHVlIHx8IHZpZXdWYWx1ZTtcbiAgICAgICAgcmV0dXJuIC8oXFxkezEsM31cXC4pezN9XFxkezEsM30vLnRlc3QodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIG1lc3NhZ2U6ICckdmlld1ZhbHVlICsgXFwnIGlzIG5vdCBhIHZhbGlkIElQIEFkZHJlc3NcXCcnXG4gICAgfVxuICB9LFxuICBmb3JtbHlWYWxpZGF0aW9uOiB7XG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHJlcXVpcmVkOiBmdW5jdGlvbih2aWV3VmFsdWUsIG1vZGVsVmFsdWUsIHNjb3BlKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRSZXR1cm5Nc2cgPSAndGhpcyBJUCBBZHJlc3MgZmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgICBjb25zdCByZXR1cm5Nc2cgPSAodHlwZW9mIHNjb3BlLnRvLmxhYmVsICE9PSAndW5kZWZpbmVkJykgPyAoKHNjb3BlLnRvLmxhYmVsICE9PSAnJykgPyBzY29wZS50by5sYWJlbCArICcgaXMgcmVxdWlyZWQnIDogZGVmYXVsdFJldHVybk1zZykgOiBkZWZhdWx0UmV0dXJuTXNnO1xuICAgICAgICBpZiAoc2NvcGUudG8ucmVxdWlyZWQpIHJldHVybiByZXR1cm5Nc2c7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvSXBBZHJlc3MvY29uZmlnL0lwQWRyZXNzLmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 66 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_IP_ADRESS_COMPONENT = exports.EDIT_IP_ADRESS_COMPONENT = 'editIpAdressControl';\n\nvar editIpAdressControlComponent = exports.editIpAdressControlComponent = {\n template: '\\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n nyaSelect: '='\n },\n controller: (_temp = _class = function editIpAdressControlController() {\n _classCallCheck(this, editIpAdressControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editIpAdressModuleName = 'stepway.editIpAdress.module';\n\nexports.default = angular.module(editIpAdressModuleName, []).component(EDIT_IP_ADRESS_COMPONENT, editIpAdressControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9JcEFkcmVzcy9lZGl0SXBBZHJlc3MvZWRpdElwQWRyZXNzLmNvbXBvbmVudC5qcz84MWQyIl0sIm5hbWVzIjpbIkVESVRfSVBfQURSRVNTX0NPTVBPTkVOVCIsImVkaXRJcEFkcmVzc0NvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0IiwiY29udHJvbGxlciIsIiRpbmplY3QiLCJlZGl0SXBBZHJlc3NNb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLDhEQUEyQixxQkFBakM7O0FBRUEsSUFBTUMsc0VBQStCO0FBQzFDQywwbUlBRDBDO0FBaUkxQ0MsWUFBVTtBQUNSQyxlQUFXO0FBREgsR0FqSWdDO0FBb0kxQ0MsZ0NBR0UseUNBQWM7QUFBQTtBQUViLEdBTEgsU0FFU0MsT0FGVCxHQUVtQixFQUZuQjtBQXBJMEMsQ0FBckM7O0FBNklQLElBQU1DLHlCQUF5Qiw2QkFBL0I7O2tCQUVlQyxRQUNFQyxNQURGLENBQ1NGLHNCQURULEVBQ2lDLEVBRGpDLEVBRUVHLFNBRkYsQ0FFWVYsd0JBRlosRUFFc0NDLDRCQUZ0QyxDIiwiZmlsZSI6IjY2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVESVRfSVBfQURSRVNTX0NPTVBPTkVOVCA9ICdlZGl0SXBBZHJlc3NDb250cm9sJztcblxuZXhwb3J0IGNvbnN0IGVkaXRJcEFkcmVzc0NvbnRyb2xDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPGg1IGNsYXNzPVwiZ3JleVRleHRcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCI+PC9pPlxuICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICB7eydQUkVWSUVXX1RBQicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9oNT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoci8+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGZvcj1cImlucHV0SXBBZHJlc3NcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWwgdGV4dENvbnRyb2xMYWJlbFwiPlxuICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsfX1cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBuZy1pZj1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHRDb250cm9sTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJpbnB1dElwQWRyZXNzXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UGxhY2Vob2xkZXJ9fVwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlbHAtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9ufX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8aDUgY2xhc3M9XCJncmV5VGV4dFwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cIj48L2k+XG4gICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9oNT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoci8+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJpbnB1dFRleHRMYWJlbFVwZGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAge3snTEFCRUxfVEVYVCcgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlMYWJlbFwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FERF9FRElUX0xBQkVMX0hFUkUnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJpbnB1dFRleHRwbGFjZWhvbGRlclVwZGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAge3snUExBQ0VIT0xERVInIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICBpZD1cImlucHV0VGV4dHBsYWNlaG9sZGVyVXBkYXRlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBRERfRURJVF9QTEFDRUhPTEQnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAge3snUkVRVUlSRUQnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hDc3NDb3JyZWN0aW9uXCI+XG4gICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlSZXF1aXJlZFwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0UmVxdWlyZWRVcGRhdGVcIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJpbnB1dFRleHREZXNjcmlwdGlvblVwZGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAge3snREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICBpZD1cImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBRERFRElUX0RFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBgLFxuICBiaW5kaW5nczoge1xuICAgIG55YVNlbGVjdDogJz0nXG4gIH0sXG4gIGNvbnRyb2xsZXI6XG4gIGNsYXNzIGVkaXRJcEFkcmVzc0NvbnRyb2xDb250cm9sbGVyIHtcbiAgICBzdGF0aWMgJGluamVjdCA9IFtdO1xuICAgIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBlZGl0SXBBZHJlc3NNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdElwQWRyZXNzLm1vZHVsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAubW9kdWxlKGVkaXRJcEFkcmVzc01vZHVsZU5hbWUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoRURJVF9JUF9BRFJFU1NfQ09NUE9ORU5ULCBlZGl0SXBBZHJlc3NDb250cm9sQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL0lwQWRyZXNzL2VkaXRJcEFkcmVzcy9lZGl0SXBBZHJlc3MuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 67 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar DateConfig = exports.DateConfig = {\n id: 'Date',\n name: 'Date',\n subtitle: 'Date',\n group: 'input',\n formlyType: 'datepicker',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n datepickerOptions: { format: 'dd-MMMM-yyyy' },\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> '
is required '\n //-> or if not exists or empty just 'this field is required'\n var defaultReturnMsg = 'this Date field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9EYXRlL2NvbmZpZy9kYXRlLmNvbmZpZy5qcz8zODg3Il0sIm5hbWVzIjpbIkRhdGVDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZGF0ZXBpY2tlck9wdGlvbnMiLCJmb3JtYXQiLCJmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyIsImZvcm1seVZhbGlkYXRvcnMiLCJmb3JtbHlWYWxpZGF0aW9uIiwibWVzc2FnZXMiLCJyZXF1aXJlZCIsInZpZXdWYWx1ZSIsIm1vZGVsVmFsdWUiLCJzY29wZSIsImRlZmF1bHRSZXR1cm5Nc2ciLCJyZXR1cm5Nc2ciLCJ0byIsImxhYmVsIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFPLElBQU1BLGtDQUFtQjtBQUM5QkMsTUFBSSxNQUQwQjtBQUU5QkMsUUFBTSxNQUZ3QjtBQUc5QkMsWUFBVSxNQUhvQjtBQUk5QkMsU0FBTyxPQUp1QjtBQUs5QkMsY0FBWSxZQUxrQjtBQU05QkMsaUJBQWUsRUFOZTtBQU85QkMsZUFBYSxFQVBpQjtBQVE5QkMsa0JBQWdCLEtBUmM7QUFTOUJDLHFCQUFtQixFQVRXO0FBVTlCQyxpQkFBZSxFQVZlO0FBVzlCQyxxQkFBbUIsRUFBRUMsUUFBUSxjQUFWLEVBWFc7QUFZOUJDLDhCQUE0QixFQVpFO0FBYTlCQyxvQkFBa0IsRUFiWTtBQWM5QkMsb0JBQWtCO0FBQ2hCQyxjQUFVO0FBQ1JDLGdCQUFVLGtCQUFTQyxTQUFULEVBQW9CQyxVQUFwQixFQUFnQ0MsS0FBaEMsRUFBdUM7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsWUFBTUMsbUJBQW1CLDZCQUF6QjtBQUNBLFlBQU1DLFlBQWEsT0FBT0YsTUFBTUcsRUFBTixDQUFTQyxLQUFoQixLQUEwQixXQUEzQixHQUE0Q0osTUFBTUcsRUFBTixDQUFTQyxLQUFULEtBQW1CLEVBQXBCLEdBQTBCSixNQUFNRyxFQUFOLENBQVNDLEtBQVQsR0FBaUIsY0FBM0MsR0FBNERILGdCQUF2RyxHQUEySEEsZ0JBQTdJO0FBQ0EsZUFBT0MsU0FBUDtBQUNEO0FBUk87QUFETTtBQWRZLENBQXpCIiwiZmlsZSI6IjY3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IERhdGVDb25maWcgPSAgICAgICB7XG4gIGlkOiAnRGF0ZScsXG4gIG5hbWU6ICdEYXRlJyxcbiAgc3VidGl0bGU6ICdEYXRlJyxcbiAgZ3JvdXA6ICdpbnB1dCcsXG4gIGZvcm1seVR5cGU6ICdkYXRlcGlja2VyJyxcbiAgZm9ybWx5U3VidHlwZTogJycsXG4gIGZvcm1seUxhYmVsOiAnJyxcbiAgZm9ybWx5UmVxdWlyZWQ6IGZhbHNlLFxuICBmb3JtbHlEZXNjcmlwdGlvbjogJycsXG4gIGZvcm1seU9wdGlvbnM6IFtdLFxuICBkYXRlcGlja2VyT3B0aW9uczogeyBmb3JtYXQ6ICdkZC1NTU1NLXl5eXknIH0sXG4gIGZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdG9yczoge30sXG4gIGZvcm1seVZhbGlkYXRpb246IHtcbiAgICBtZXNzYWdlczoge1xuICAgICAgcmVxdWlyZWQ6IGZ1bmN0aW9uKHZpZXdWYWx1ZSwgbW9kZWxWYWx1ZSwgc2NvcGUpIHtcbiAgICAgICAgLy9yZXR1cm4gYSByZXF1aXJlZCB2YWxpZGF0aW9uIG1lc3NhZ2UgOlxuICAgICAgICAvLy0+ICc8bGFiZWwgYXMgbmFtZT4gaXMgcmVxdWlyZWQgJ1xuICAgICAgICAvLy0+IG9yIGlmIG5vdCBleGlzdHMgb3IgZW1wdHkganVzdCAndGhpcyBmaWVsZCBpcyByZXF1aXJlZCdcbiAgICAgICAgY29uc3QgZGVmYXVsdFJldHVybk1zZyA9ICd0aGlzIERhdGUgZmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgICBjb25zdCByZXR1cm5Nc2cgPSAodHlwZW9mIHNjb3BlLnRvLmxhYmVsICE9PSAndW5kZWZpbmVkJykgPyAoKHNjb3BlLnRvLmxhYmVsICE9PSAnJykgPyBzY29wZS50by5sYWJlbCArICcgaXMgcmVxdWlyZWQnIDogZGVmYXVsdFJldHVybk1zZykgOiBkZWZhdWx0UmV0dXJuTXNnO1xuICAgICAgICByZXR1cm4gcmV0dXJuTXNnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL0RhdGUvY29uZmlnL2RhdGUuY29uZmlnLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 68 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_DATE_COMPONENT = exports.EDIT_DATE_COMPONENT = 'editDateControl';\n\nvar editDateControlComponent = exports.editDateControlComponent = {\n template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n nyaSelect: '=',\n demodt: '=',\n dateOptions: '=',\n open: '&'\n },\n controller: (_temp = _class = function editDateControlController() {\n _classCallCheck(this, editDateControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editDateControlModuleName = 'stepway.editDateControl.module';\n\nexports.default = angular.module(editDateControlModuleName, []).component(EDIT_DATE_COMPONENT, editDateControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9EYXRlL2VkaXREYXRlL2VkaXREYXRlLmNvbXBvbmVudC5qcz8zOTY4Il0sIm5hbWVzIjpbIkVESVRfREFURV9DT01QT05FTlQiLCJlZGl0RGF0ZUNvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0IiwiZGVtb2R0IiwiZGF0ZU9wdGlvbnMiLCJvcGVuIiwiY29udHJvbGxlciIsIiRpbmplY3QiLCJlZGl0RGF0ZUNvbnRyb2xNb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLG9EQUFzQixpQkFBNUI7O0FBRUEsSUFBTUMsOERBQTJCO0FBQ3RDQyw4NUpBRHNDO0FBaUp0Q0MsWUFBVTtBQUNSQyxlQUFXLEdBREg7QUFFUkMsWUFBUSxHQUZBO0FBR1JDLGlCQUFhLEdBSEw7QUFJUkMsVUFBTTtBQUpFLEdBako0QjtBQXVKdENDLGdDQUlFLHFDQUFjO0FBQUE7QUFFYixHQU5ILFNBRVNDLE9BRlQsR0FFbUIsRUFGbkI7QUF2SnNDLENBQWpDOztBQWlLUCxJQUFNQyw0QkFBNEIsZ0NBQWxDOztrQkFFZUMsUUFDRUMsTUFERixDQUNTRix5QkFEVCxFQUNvQyxFQURwQyxFQUVFRyxTQUZGLENBRVliLG1CQUZaLEVBRWlDQyx3QkFGakMsQyIsImZpbGUiOiI2OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBFRElUX0RBVEVfQ09NUE9ORU5UID0gJ2VkaXREYXRlQ29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0RGF0ZUNvbnRyb2xDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJncmV5VGV4dFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZVwiPjwvaT5cbiAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgIHt7J1BSRVZJRVdfVEFCJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICAgIDwvaDU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgZm9yPVwiaW5wdXREYXRlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWwgdGV4dENvbnRyb2xMYWJlbFwiPlxuICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWx9fVxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBuZy1pZj1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dENvbnRyb2xMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJnbHlwaGljb24gZ2x5cGhpY29uLWNhbGVuZGFyXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICB1aWItZGF0ZXBpY2tlci1wb3B1cD1cInt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZGF0ZXBpY2tlck9wdGlvbnMuZm9ybWF0fX1cIlxuICAgICAgICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLmRlbW9kdC5kdFwiXG4gICAgICAgICAgICAgICAgICAgIGlzLW9wZW49XCIkY3RybC5kZW1vZHQub3BlbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0ZXBpY2tlci1vcHRpb25zPVwiJGN0cmwuZGF0ZU9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBjbG9zZS10ZXh0PVwiQ2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLm9wZW4oe2V2ZW50IDogJGV2ZW50fSlcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlbHAtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb259fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwiZ3JleVRleHRcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cIj48L2k+XG4gICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICB7eydFRElUX1BST1BFUlRJRVMnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxoci8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAge3snREFURV9GT1JNQVQnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICA8b2xcbiAgICAgICAgICAgICAgY2xhc3M9XCJueWEtYnMtc2VsZWN0IGNvbC1zbS0xMiBjb2wteHMtMTIgY29sLW1kLTEyIGNvbC1sZzEyXCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5kYXRlcGlja2VyT3B0aW9ucy5mb3JtYXRcIlxuICAgICAgICAgICAgICBpZD1cImRhdGVmb3JtYXRTZWxlY3RcIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJueWEtYnMtb3B0aW9uXCJcbiAgICAgICAgICAgICAgICBueWEtYnMtb3B0aW9uPVwiZGF0ZWZvcm1hdCBpbiAkY3RybC5kZW1vZHQuZm9ybWF0c1wiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJkYXRlZm9ybWF0XCI+XG4gICAgICAgICAgICAgICAgPGE+XG4gICAgICAgICAgICAgICAgICB7e2RhdGVmb3JtYXR9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvb2w+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWFyZ2luVG9wRml2ZXBpeGVsc1wiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICAgIHt7J0xBQkVMX1RFWFQnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWxcIlxuICAgICAgICAgICAgICBpZD1cImlucHV0VGV4dExhYmVsVXBkYXRlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBRERfRURJVF9MQUJFTF9IRVJFJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWFyZ2luVG9wRml2ZXBpeGVsc1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBmb3I9XCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICAgIHt7J1JFUVVJUkVEJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94Q3NzQ29ycmVjdGlvblwiPlxuICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBpZD1cImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICAgICAge3snREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snQURERURJVF9ERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzOiB7XG4gICAgbnlhU2VsZWN0OiAnPScsXG4gICAgZGVtb2R0OiAnPScsXG4gICAgZGF0ZU9wdGlvbnM6ICc9JyxcbiAgICBvcGVuOiAnJidcbiAgfSxcbiAgY29udHJvbGxlcjpcbiAgY2xhc3MgZWRpdERhdGVDb250cm9sQ29udHJvbGxlciB7XG4gICAgc3RhdGljICRpbmplY3QgPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBlZGl0RGF0ZUNvbnRyb2xNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdERhdGVDb250cm9sLm1vZHVsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAubW9kdWxlKGVkaXREYXRlQ29udHJvbE1vZHVsZU5hbWUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoRURJVF9EQVRFX0NPTVBPTkVOVCwgZWRpdERhdGVDb250cm9sQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL0RhdGUvZWRpdERhdGUvZWRpdERhdGUuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 69 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar CheckBoxConfig = exports.CheckBoxConfig = {\n id: 'Checkbox',\n name: 'Checkbox',\n subtitle: 'Checkbox',\n group: 'Checkbox',\n formlyType: 'checkbox',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n var defaultReturnMsg = 'this Checkbox field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9DaGVja0JveC9jb25maWcvY2hlY2tib3guY29uZmlnLmpzPzY2N2YiXSwibmFtZXMiOlsiQ2hlY2tCb3hDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiZm9ybWx5VmFsaWRhdGlvbiIsIm1lc3NhZ2VzIiwicmVxdWlyZWQiLCJ2aWV3VmFsdWUiLCJtb2RlbFZhbHVlIiwic2NvcGUiLCJkZWZhdWx0UmV0dXJuTXNnIiwicmV0dXJuTXNnIiwidG8iLCJsYWJlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFNQSwwQ0FBaUI7QUFDNUJDLE1BQUksVUFEd0I7QUFFNUJDLFFBQU0sVUFGc0I7QUFHNUJDLFlBQVUsVUFIa0I7QUFJNUJDLFNBQU8sVUFKcUI7QUFLNUJDLGNBQVksVUFMZ0I7QUFNNUJDLGlCQUFlLEVBTmE7QUFPNUJDLGVBQWEsRUFQZTtBQVE1QkMsa0JBQWdCLEtBUlk7QUFTNUJDLHFCQUFtQixFQVRTO0FBVTVCQyxpQkFBZSxFQVZhO0FBVzVCQyw4QkFBNEIsRUFYQTtBQVk1QkMsb0JBQWtCLEVBWlU7QUFhNUJDLG9CQUFrQjtBQUNoQkMsY0FBVTtBQUNSQyxnQkFBVSxrQkFBU0MsU0FBVCxFQUFvQkMsVUFBcEIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQy9DLFlBQU1DLG1CQUFtQixpQ0FBekI7QUFDQSxZQUFNQyxZQUFhLE9BQU9GLE1BQU1HLEVBQU4sQ0FBU0MsS0FBaEIsS0FBMEIsV0FBM0IsR0FBNENKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxLQUFtQixFQUFwQixHQUEwQkosTUFBTUcsRUFBTixDQUFTQyxLQUFULEdBQWlCLGNBQTNDLEdBQTRESCxnQkFBdkcsR0FBMkhBLGdCQUE3STtBQUNBLGVBQU9DLFNBQVA7QUFDRDtBQUxPO0FBRE07QUFiVSxDQUF2QiIsImZpbGUiOiI2OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDaGVja0JveENvbmZpZyA9IHtcbiAgaWQ6ICdDaGVja2JveCcsXG4gIG5hbWU6ICdDaGVja2JveCcsXG4gIHN1YnRpdGxlOiAnQ2hlY2tib3gnLFxuICBncm91cDogJ0NoZWNrYm94JyxcbiAgZm9ybWx5VHlwZTogJ2NoZWNrYm94JyxcbiAgZm9ybWx5U3VidHlwZTogJycsXG4gIGZvcm1seUxhYmVsOiAnJyxcbiAgZm9ybWx5UmVxdWlyZWQ6IGZhbHNlLFxuICBmb3JtbHlEZXNjcmlwdGlvbjogJycsXG4gIGZvcm1seU9wdGlvbnM6IFtdLFxuICBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllczoge30sXG4gIGZvcm1seVZhbGlkYXRvcnM6IHt9LFxuICBmb3JtbHlWYWxpZGF0aW9uOiB7XG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHJlcXVpcmVkOiBmdW5jdGlvbih2aWV3VmFsdWUsIG1vZGVsVmFsdWUsIHNjb3BlKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRSZXR1cm5Nc2cgPSAndGhpcyBDaGVja2JveCBmaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICAgIGNvbnN0IHJldHVybk1zZyA9ICh0eXBlb2Ygc2NvcGUudG8ubGFiZWwgIT09ICd1bmRlZmluZWQnKSA/ICgoc2NvcGUudG8ubGFiZWwgIT09ICcnKSA/IHNjb3BlLnRvLmxhYmVsICsgJyBpcyByZXF1aXJlZCcgOiBkZWZhdWx0UmV0dXJuTXNnKSA6IGRlZmF1bHRSZXR1cm5Nc2c7XG4gICAgICAgIHJldHVybiByZXR1cm5Nc2c7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvQ2hlY2tCb3gvY29uZmlnL2NoZWNrYm94LmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 70 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_CHECKBOX_COMPONENT = exports.EDIT_CHECKBOX_COMPONENT = 'editCheckBoxControl';\n\nvar editCheckBoxControlComponent = exports.editCheckBoxControlComponent = {\n template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n nyaSelect: '='\n },\n controller: (_temp = _class = function editCheckBoxControlController() {\n _classCallCheck(this, editCheckBoxControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editCheckBoxModuleName = 'stepway.editCheckBox.module';\n\nexports.default = angular.module(editCheckBoxModuleName, []).component(EDIT_CHECKBOX_COMPONENT, editCheckBoxControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9DaGVja0JveC9lZGl0Q2hlY2tCb3gvZWRpdENoZWNrQm94LmNvbXBvbmVudC5qcz9lZDcwIl0sIm5hbWVzIjpbIkVESVRfQ0hFQ0tCT1hfQ09NUE9ORU5UIiwiZWRpdENoZWNrQm94Q29udHJvbENvbXBvbmVudCIsInRlbXBsYXRlIiwiYmluZGluZ3MiLCJueWFTZWxlY3QiLCJjb250cm9sbGVyIiwiJGluamVjdCIsImVkaXRDaGVja0JveE1vZHVsZU5hbWUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sSUFBTUEsNERBQTBCLHFCQUFoQzs7QUFFQSxJQUFNQyxzRUFBK0I7QUFDMUNDLDQ1SkFEMEM7QUFnSjFDQyxZQUFVO0FBQ1JDLGVBQVc7QUFESCxHQWhKZ0M7QUFtSjFDQyxnQ0FJRSx5Q0FBYztBQUFBO0FBRWIsR0FOSCxTQUVTQyxPQUZULEdBRW1CLEVBRm5CO0FBbkowQyxDQUFyQzs7QUE2SlAsSUFBTUMseUJBQXlCLDZCQUEvQjs7a0JBRWVDLFFBQ0VDLE1BREYsQ0FDU0Ysc0JBRFQsRUFDaUMsRUFEakMsRUFFRUcsU0FGRixDQUVZVix1QkFGWixFQUVxQ0MsNEJBRnJDLEMiLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRURJVF9DSEVDS0JPWF9DT01QT05FTlQgPSAnZWRpdENoZWNrQm94Q29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0Q2hlY2tCb3hDb250cm9sQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwiZ3JleVRleHRcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leWVcIj48L2k+XG4gICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICB7eydQUkVWSUVXX1RBQicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGZvcj1cImlucHV0RGF0ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sLWxhYmVsIHRleHRDb250cm9sTGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsfX1cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgbmctaWY9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlSZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHRDb250cm9sTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIiA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1jYWxlbmRhclwiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgdWliLWRhdGVwaWNrZXItcG9wdXA9XCJ7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmRhdGVwaWNrZXJPcHRpb25zLmZvcm1hdH19XCJcbiAgICAgICAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5kZW1vZHQuZHRcIlxuICAgICAgICAgICAgICAgICAgICBpcy1vcGVuPVwiJGN0cmwuZGVtb2R0Lm9wZW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGVwaWNrZXItb3B0aW9ucz1cIiRjdHJsLmRhdGVPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2UtdGV4dD1cIkNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5vcGVuKHtldmVudCA6ICRldmVudH0pXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWxwLWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9ufX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJncmV5VGV4dFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbC1zcXVhcmUtb1wiPjwvaT5cbiAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydEQVRFX0ZPUk1BVCcgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxvbFxuICAgICAgICAgICAgICBjbGFzcz1cIm55YS1icy1zZWxlY3QgY29sLXNtLTEyIGNvbC14cy0xMiBjb2wtbWQtMTIgY29sLWxnMTJcIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmRhdGVwaWNrZXJPcHRpb25zLmZvcm1hdFwiXG4gICAgICAgICAgICAgIGlkPVwiZGF0ZWZvcm1hdFNlbGVjdFwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm55YS1icy1vcHRpb25cIlxuICAgICAgICAgICAgICAgIG55YS1icy1vcHRpb249XCJkYXRlZm9ybWF0IGluICRjdHJsLmRlbW9kdC5mb3JtYXRzXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT1cImRhdGVmb3JtYXRcIj5cbiAgICAgICAgICAgICAgICA8YT5cbiAgICAgICAgICAgICAgICAgIHt7ZGF0ZWZvcm1hdH19XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9vbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJpbnB1dFRleHRMYWJlbFVwZGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAge3snTEFCRUxfVEVYVCcgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlMYWJlbFwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FERF9FRElUX0xBQkVMX0hFUkUnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICAgICAge3snUkVRVUlSRUQnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hDc3NDb3JyZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0UmVxdWlyZWRVcGRhdGVcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgZm9yPVwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAgICB7eydERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgaWQ9XCJpbnB1dFRleHREZXNjcmlwdGlvblVwZGF0ZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBRERFRElUX0RFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgYmluZGluZ3M6IHtcbiAgICBueWFTZWxlY3Q6ICc9J1xuICB9LFxuICBjb250cm9sbGVyOlxuICBjbGFzcyBlZGl0Q2hlY2tCb3hDb250cm9sQ29udHJvbGxlciB7XG4gICAgc3RhdGljICRpbmplY3QgPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBlZGl0Q2hlY2tCb3hNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdENoZWNrQm94Lm1vZHVsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAubW9kdWxlKGVkaXRDaGVja0JveE1vZHVsZU5hbWUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoRURJVF9DSEVDS0JPWF9DT01QT05FTlQsIGVkaXRDaGVja0JveENvbnRyb2xDb21wb25lbnQpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvQ2hlY2tCb3gvZWRpdENoZWNrQm94L2VkaXRDaGVja0JveC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 71 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar EmailConfig = exports.EmailConfig = {\n id: 'Email',\n name: 'Email',\n subtitle: 'Email',\n group: 'input',\n formlyType: 'input',\n formlySubtype: 'email',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {\n emailShape: {\n expression: function expression(viewValue, modelValue) {\n var value = modelValue || viewValue;\n return (/^[a-z]+[a-z0-9._]+@[a-z]+\\.[a-z.]{2,5}$/.test(value)\n );\n },\n message: '$viewValue + \\' is not a valid email\\''\n }\n },\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n var defaultReturnMsg = 'this Email field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n if (scope.to.required) return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9FbWFpbC9jb25maWcvZW1haWwuY29uZmlnLmpzP2Q5MTIiXSwibmFtZXMiOlsiRW1haWxDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiZW1haWxTaGFwZSIsImV4cHJlc3Npb24iLCJ2aWV3VmFsdWUiLCJtb2RlbFZhbHVlIiwidmFsdWUiLCJ0ZXN0IiwibWVzc2FnZSIsImZvcm1seVZhbGlkYXRpb24iLCJtZXNzYWdlcyIsInJlcXVpcmVkIiwic2NvcGUiLCJkZWZhdWx0UmV0dXJuTXNnIiwicmV0dXJuTXNnIiwidG8iLCJsYWJlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFNQSxvQ0FBZTtBQUMxQkMsTUFBSSxPQURzQjtBQUUxQkMsUUFBTSxPQUZvQjtBQUcxQkMsWUFBVSxPQUhnQjtBQUkxQkMsU0FBTyxPQUptQjtBQUsxQkMsY0FBWSxPQUxjO0FBTTFCQyxpQkFBZSxPQU5XO0FBTzFCQyxlQUFhLEVBUGE7QUFRMUJDLGtCQUFnQixLQVJVO0FBUzFCQyxxQkFBbUIsRUFUTztBQVUxQkMsaUJBQWUsRUFWVztBQVcxQkMsOEJBQTRCLEVBWEY7QUFZMUJDLG9CQUFrQjtBQUNoQkMsZ0JBQVk7QUFDVkMsa0JBQVksb0JBQVNDLFNBQVQsRUFBb0JDLFVBQXBCLEVBQWdDO0FBQzFDLFlBQU1DLFFBQVFELGNBQWNELFNBQTVCO0FBQ0EsZUFBTywyQ0FBMENHLElBQTFDLENBQStDRCxLQUEvQztBQUFQO0FBQ0QsT0FKUztBQUtWRSxlQUFTO0FBTEM7QUFESSxHQVpRO0FBcUIxQkMsb0JBQWtCO0FBQ2hCQyxjQUFVO0FBQ1JDLGdCQUFVLGtCQUFTUCxTQUFULEVBQW9CQyxVQUFwQixFQUFnQ08sS0FBaEMsRUFBdUM7QUFDL0MsWUFBTUMsbUJBQW1CLDhCQUF6QjtBQUNBLFlBQU1DLFlBQWEsT0FBT0YsTUFBTUcsRUFBTixDQUFTQyxLQUFoQixLQUEwQixXQUEzQixHQUE0Q0osTUFBTUcsRUFBTixDQUFTQyxLQUFULEtBQW1CLEVBQXBCLEdBQTBCSixNQUFNRyxFQUFOLENBQVNDLEtBQVQsR0FBaUIsY0FBM0MsR0FBNERILGdCQUF2RyxHQUEySEEsZ0JBQTdJO0FBQ0EsWUFBSUQsTUFBTUcsRUFBTixDQUFTSixRQUFiLEVBQXVCLE9BQU9HLFNBQVA7QUFDeEI7QUFMTztBQURNO0FBckJRLENBQXJCIiwiZmlsZSI6IjcxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVtYWlsQ29uZmlnID0gIHtcbiAgaWQ6ICdFbWFpbCcsXG4gIG5hbWU6ICdFbWFpbCcsXG4gIHN1YnRpdGxlOiAnRW1haWwnLFxuICBncm91cDogJ2lucHV0JyxcbiAgZm9ybWx5VHlwZTogJ2lucHV0JyxcbiAgZm9ybWx5U3VidHlwZTogJ2VtYWlsJyxcbiAgZm9ybWx5TGFiZWw6ICcnLFxuICBmb3JtbHlSZXF1aXJlZDogZmFsc2UsXG4gIGZvcm1seURlc2NyaXB0aW9uOiAnJyxcbiAgZm9ybWx5T3B0aW9uczogW10sXG4gIGZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdG9yczoge1xuICAgIGVtYWlsU2hhcGU6IHtcbiAgICAgIGV4cHJlc3Npb246IGZ1bmN0aW9uKHZpZXdWYWx1ZSwgbW9kZWxWYWx1ZSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG1vZGVsVmFsdWUgfHwgdmlld1ZhbHVlO1xuICAgICAgICByZXR1cm4gL15bYS16XStbYS16MC05Ll9dK0BbYS16XStcXC5bYS16Ll17Miw1fSQvLnRlc3QodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIG1lc3NhZ2U6ICckdmlld1ZhbHVlICsgXFwnIGlzIG5vdCBhIHZhbGlkIGVtYWlsXFwnJ1xuICAgIH1cbiAgfSxcbiAgZm9ybWx5VmFsaWRhdGlvbjoge1xuICAgIG1lc3NhZ2VzOiB7XG4gICAgICByZXF1aXJlZDogZnVuY3Rpb24odmlld1ZhbHVlLCBtb2RlbFZhbHVlLCBzY29wZSkge1xuICAgICAgICBjb25zdCBkZWZhdWx0UmV0dXJuTXNnID0gJ3RoaXMgRW1haWwgZmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgICBjb25zdCByZXR1cm5Nc2cgPSAodHlwZW9mIHNjb3BlLnRvLmxhYmVsICE9PSAndW5kZWZpbmVkJykgPyAoKHNjb3BlLnRvLmxhYmVsICE9PSAnJykgPyBzY29wZS50by5sYWJlbCArICcgaXMgcmVxdWlyZWQnIDogZGVmYXVsdFJldHVybk1zZykgOiBkZWZhdWx0UmV0dXJuTXNnO1xuICAgICAgICBpZiAoc2NvcGUudG8ucmVxdWlyZWQpIHJldHVybiByZXR1cm5Nc2c7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvRW1haWwvY29uZmlnL2VtYWlsLmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 72 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_EMAIL_COMPONENT = exports.EDIT_EMAIL_COMPONENT = 'editEmailControl';\n\nvar editEmailControlComponent = exports.editEmailControlComponent = {\n template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n nyaSelect: '='\n },\n controller: (_temp = _class = function editEmailControlController() {\n _classCallCheck(this, editEmailControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editEmailControlModuleName = 'stepway.editEmailControl.module';\n\nexports.default = angular.module(editEmailControlModuleName, []).component(EDIT_EMAIL_COMPONENT, editEmailControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9FbWFpbC9lZGl0RW1haWwvZWRpdEVtYWlsLmNvbXBvbmVudC5qcz9kNmMyIl0sIm5hbWVzIjpbIkVESVRfRU1BSUxfQ09NUE9ORU5UIiwiZWRpdEVtYWlsQ29udHJvbENvbXBvbmVudCIsInRlbXBsYXRlIiwiYmluZGluZ3MiLCJueWFTZWxlY3QiLCJjb250cm9sbGVyIiwiJGluamVjdCIsImVkaXRFbWFpbENvbnRyb2xNb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLHNEQUF1QixrQkFBN0I7O0FBRUEsSUFBTUMsZ0VBQTRCO0FBQ3ZDQyxvbUlBRHVDO0FBaUl2Q0MsWUFBVTtBQUNSQyxlQUFXO0FBREgsR0FqSTZCO0FBb0l2Q0MsZ0NBR0Usc0NBQWM7QUFBQTtBQUViLEdBTEgsU0FFU0MsT0FGVCxHQUVtQixFQUZuQjtBQXBJdUMsQ0FBbEM7O0FBNklQLElBQU1DLDZCQUE2QixpQ0FBbkM7O2tCQUVlQyxRQUNFQyxNQURGLENBQ1NGLDBCQURULEVBQ3FDLEVBRHJDLEVBRUVHLFNBRkYsQ0FFWVYsb0JBRlosRUFFa0NDLHlCQUZsQyxDIiwiZmlsZSI6IjcyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVESVRfRU1BSUxfQ09NUE9ORU5UID0gJ2VkaXRFbWFpbENvbnRyb2wnO1xuXG5leHBvcnQgY29uc3QgZWRpdEVtYWlsQ29udHJvbENvbXBvbmVudCA9IHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8aDUgY2xhc3M9XCJncmV5VGV4dFwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leWVcIj48L2k+XG4gICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgIHt7J1BSRVZJRVdfVEFCJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2g1PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGhyLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgZm9yPVwiaW5wdXRFbWFpbFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbCB0ZXh0Q29udHJvbExhYmVsXCI+XG4gICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWx9fVxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIG5nLWlmPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dENvbnRyb2xMYWJlbFwiPlxuICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICBpZD1cImlucHV0RW1haWxcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3skY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlQbGFjZWhvbGRlcn19XCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVscC1ibG9ja1wiPlxuICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb259fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxoNSBjbGFzcz1cImdyZXlUZXh0XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbC1zcXVhcmUtb1wiPjwvaT5cbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAge3snRURJVF9QUk9QRVJUSUVTJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2g1PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGhyLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dExhYmVsVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydMQUJFTF9URVhUJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsXCJcbiAgICAgICAgICAgICAgaWQ9XCJpbnB1dFRleHRMYWJlbFVwZGF0ZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snQUREX0VESVRfTEFCRUxfSEVSRScgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dHBsYWNlaG9sZGVyVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydQTEFDRUhPTERFUicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0cGxhY2Vob2xkZXJVcGRhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FERF9FRElUX1BMQUNFSE9MRCcgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydSRVFVSVJFRCcgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveENzc0NvcnJlY3Rpb25cIj5cbiAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgaWQ9XCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FEREVESVRfREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzOiB7XG4gICAgbnlhU2VsZWN0OiAnPSdcbiAgfSxcbiAgY29udHJvbGxlcjpcbiAgY2xhc3MgZWRpdEVtYWlsQ29udHJvbENvbnRyb2xsZXIge1xuICAgIHN0YXRpYyAkaW5qZWN0ID0gW107XG4gICAgY29uc3RydWN0b3IoKSB7XG5cbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IGVkaXRFbWFpbENvbnRyb2xNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdEVtYWlsQ29udHJvbC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShlZGl0RW1haWxDb250cm9sTW9kdWxlTmFtZSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChFRElUX0VNQUlMX0NPTVBPTkVOVCwgZWRpdEVtYWlsQ29udHJvbENvbXBvbmVudCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9FbWFpbC9lZGl0RW1haWwvZWRpdEVtYWlsLmNvbXBvbmVudC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 73 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar BasicSelectConfig = exports.BasicSelectConfig = {\n id: 'BasicSelect',\n name: 'Basic select',\n subtitle: 'Basic select',\n options: [],\n group: 'Select',\n formlyType: 'basicSelect',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> ' is required '\n //-> or if not exists or empty just 'this field is required'\n var defaultReturnMsg = 'this Basic select field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9iYXNpY1NlbGVjdC9jb25maWcvYmFzaWNTZWxlY3QuY29uZmlnLmpzPzQyYzQiXSwibmFtZXMiOlsiQmFzaWNTZWxlY3RDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsIm9wdGlvbnMiLCJncm91cCIsImZvcm1seVR5cGUiLCJmb3JtbHlTdWJ0eXBlIiwiZm9ybWx5TGFiZWwiLCJmb3JtbHlSZXF1aXJlZCIsImZvcm1seURlc2NyaXB0aW9uIiwiZm9ybWx5T3B0aW9ucyIsImZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzIiwiZm9ybWx5VmFsaWRhdG9ycyIsImZvcm1seVZhbGlkYXRpb24iLCJtZXNzYWdlcyIsInJlcXVpcmVkIiwidmlld1ZhbHVlIiwibW9kZWxWYWx1ZSIsInNjb3BlIiwiZGVmYXVsdFJldHVybk1zZyIsInJldHVybk1zZyIsInRvIiwibGFiZWwiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQU8sSUFBTUEsZ0RBQW9CO0FBQy9CQyxNQUFJLGFBRDJCO0FBRS9CQyxRQUFNLGNBRnlCO0FBRy9CQyxZQUFVLGNBSHFCO0FBSS9CQyxXQUFTLEVBSnNCO0FBSy9CQyxTQUFPLFFBTHdCO0FBTS9CQyxjQUFZLGFBTm1CO0FBTy9CQyxpQkFBZSxFQVBnQjtBQVEvQkMsZUFBYSxFQVJrQjtBQVMvQkMsa0JBQWdCLEtBVGU7QUFVL0JDLHFCQUFtQixFQVZZO0FBVy9CQyxpQkFBZSxFQVhnQjtBQVkvQkMsOEJBQTRCLEVBWkc7QUFhL0JDLG9CQUFrQixFQWJhO0FBYy9CQyxvQkFBa0I7QUFDaEJDLGNBQVU7QUFDUkMsZ0JBQVUsa0JBQVNDLFNBQVQsRUFBb0JDLFVBQXBCLEVBQWdDQyxLQUFoQyxFQUF1QztBQUMvQztBQUNBO0FBQ0E7QUFDQSxZQUFNQyxtQkFBbUIscUNBQXpCO0FBQ0EsWUFBTUMsWUFBYSxPQUFPRixNQUFNRyxFQUFOLENBQVNDLEtBQWhCLEtBQTBCLFdBQTNCLEdBQTRDSixNQUFNRyxFQUFOLENBQVNDLEtBQVQsS0FBbUIsRUFBcEIsR0FBMEJKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxHQUFpQixjQUEzQyxHQUE0REgsZ0JBQXZHLEdBQTJIQSxnQkFBN0k7QUFDQSxlQUFPQyxTQUFQO0FBQ0Q7QUFSTztBQURNO0FBZGEsQ0FBMUIiLCJmaWxlIjoiNzMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQmFzaWNTZWxlY3RDb25maWcgPSB7XG4gIGlkOiAnQmFzaWNTZWxlY3QnLFxuICBuYW1lOiAnQmFzaWMgc2VsZWN0JyxcbiAgc3VidGl0bGU6ICdCYXNpYyBzZWxlY3QnLFxuICBvcHRpb25zOiBbXSxcbiAgZ3JvdXA6ICdTZWxlY3QnLFxuICBmb3JtbHlUeXBlOiAnYmFzaWNTZWxlY3QnLFxuICBmb3JtbHlTdWJ0eXBlOiAnJyxcbiAgZm9ybWx5TGFiZWw6ICcnLFxuICBmb3JtbHlSZXF1aXJlZDogZmFsc2UsXG4gIGZvcm1seURlc2NyaXB0aW9uOiAnJyxcbiAgZm9ybWx5T3B0aW9uczogW10sXG4gIGZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdG9yczoge30sXG4gIGZvcm1seVZhbGlkYXRpb246IHtcbiAgICBtZXNzYWdlczoge1xuICAgICAgcmVxdWlyZWQ6IGZ1bmN0aW9uKHZpZXdWYWx1ZSwgbW9kZWxWYWx1ZSwgc2NvcGUpIHtcbiAgICAgICAgLy9yZXR1cm4gYSByZXF1aXJlZCB2YWxpZGF0aW9uIG1lc3NhZ2UgOlxuICAgICAgICAvLy0+ICc8bGFiZWwgYXMgbmFtZT4gaXMgcmVxdWlyZWQgJ1xuICAgICAgICAvLy0+IG9yIGlmIG5vdCBleGlzdHMgb3IgZW1wdHkganVzdCAndGhpcyBmaWVsZCBpcyByZXF1aXJlZCdcbiAgICAgICAgY29uc3QgZGVmYXVsdFJldHVybk1zZyA9ICd0aGlzIEJhc2ljIHNlbGVjdCBmaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICAgIGNvbnN0IHJldHVybk1zZyA9ICh0eXBlb2Ygc2NvcGUudG8ubGFiZWwgIT09ICd1bmRlZmluZWQnKSA/ICgoc2NvcGUudG8ubGFiZWwgIT09ICcnKSA/IHNjb3BlLnRvLmxhYmVsICsgJyBpcyByZXF1aXJlZCcgOiBkZWZhdWx0UmV0dXJuTXNnKSA6IGRlZmF1bHRSZXR1cm5Nc2c7XG4gICAgICAgIHJldHVybiByZXR1cm5Nc2c7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvYmFzaWNTZWxlY3QvY29uZmlnL2Jhc2ljU2VsZWN0LmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 74 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_BASIC_SELECT_COMPONENT = exports.EDIT_BASIC_SELECT_COMPONENT = 'editBasicSelectControl';\n\nvar editBasicSelectControlComponent = exports.editBasicSelectControlComponent = {\n template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n \\n {{\\'ADD_NEW_OPTIONS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n {{\\'EDIT_REMOVE_OPTIONS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n ',\n bindings: {\n nyaSelect: '=',\n basicSelectRowCollection: '=',\n newOptionBasicSelect: '=',\n addNewOptionBasicSelect: '&',\n upThisRow: '&',\n downThisRow: '&',\n removeRow: '&'\n },\n controller: (_temp = _class = function editBasicSelectController() {\n _classCallCheck(this, editBasicSelectController);\n }, _class.$inject = [], _temp)\n};\n\nvar editBasicSelectModuleName = 'stepway.editBasicSelect.module';\nexports.default = angular.module(editBasicSelectModuleName, []).component(EDIT_BASIC_SELECT_COMPONENT, editBasicSelectControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9iYXNpY1NlbGVjdC9lZGl0QmFzaWNTZWxlY3QvZWRpdEJhc2ljU2VsZWN0LmNvbXBvbmVudC5qcz8wNTNlIl0sIm5hbWVzIjpbIkVESVRfQkFTSUNfU0VMRUNUX0NPTVBPTkVOVCIsImVkaXRCYXNpY1NlbGVjdENvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0IiwiYmFzaWNTZWxlY3RSb3dDb2xsZWN0aW9uIiwibmV3T3B0aW9uQmFzaWNTZWxlY3QiLCJhZGROZXdPcHRpb25CYXNpY1NlbGVjdCIsInVwVGhpc1JvdyIsImRvd25UaGlzUm93IiwicmVtb3ZlUm93IiwiY29udHJvbGxlciIsIiRpbmplY3QiLCJlZGl0QmFzaWNTZWxlY3RNb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLG9FQUE4Qix3QkFBcEM7O0FBRUEsSUFBTUMsNEVBQWtDO0FBQzdDQyx1bVFBRDZDO0FBeU83Q0MsWUFBVTtBQUNSQyxlQUFXLEdBREg7QUFFUkMsOEJBQTBCLEdBRmxCO0FBR1JDLDBCQUFzQixHQUhkO0FBSVJDLDZCQUF5QixHQUpqQjtBQUtSQyxlQUFXLEdBTEg7QUFNUkMsaUJBQWEsR0FOTDtBQU9SQyxlQUFXO0FBUEgsR0F6T21DO0FBa1A3Q0MsZ0NBSUUscUNBQWM7QUFBQTtBQUViLEdBTkgsU0FFU0MsT0FGVCxHQUVtQixFQUZuQjtBQWxQNkMsQ0FBeEM7O0FBNFBQLElBQU1DLDRCQUE0QixnQ0FBbEM7a0JBQ2VDLFFBQ0VDLE1BREYsQ0FDU0YseUJBRFQsRUFDb0MsRUFEcEMsRUFFRUcsU0FGRixDQUVZaEIsMkJBRlosRUFFeUNDLCtCQUZ6QyxDIiwiZmlsZSI6Ijc0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVESVRfQkFTSUNfU0VMRUNUX0NPTVBPTkVOVCA9ICdlZGl0QmFzaWNTZWxlY3RDb250cm9sJztcblxuZXhwb3J0IGNvbnN0IGVkaXRCYXNpY1NlbGVjdENvbnRyb2xDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxoNSBjbGFzcz1cImdyZXlUZXh0XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZVwiPjwvaT5cbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAge3snUFJFVklFV19UQUInIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvaDU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8aHIvPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBmb3I9XCJiYXNpY1NlbGVjdFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbCB0ZXh0Q29udHJvbExhYmVsXCI+XG4gICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWx9fVxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIG5nLWlmPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dENvbnRyb2xMYWJlbFwiPlxuICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgPG9sXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJueWEtYnMtc2VsZWN0IGNvbC1zbS0xMiBjb2wteHMtMTIgY29sLW1kLTEyIGNvbC1sZzEyXCJcbiAgICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm1vZGVsYmFzaWNTZWxlY3RcIlxuICAgICAgICAgICAgICAgIGlkPVwiYmFzaWNTZWxlY3RcIlxuICAgICAgICAgICAgICAgIGRpc2FibGVkPVwiJGN0cmwuYmFzaWNTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm55YS1icy1vcHRpb25cIlxuICAgICAgICAgICAgICAgICAgbnlhLWJzLW9wdGlvbj1cImJhc2ljU2VsZWN0Um93IGluICRjdHJsLmJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbi5yb3dzXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiJGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICA8YT5cbiAgICAgICAgICAgICAgICAgICAge3tiYXNpY1NlbGVjdFJvdy5vcHRpb259fVxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvb2w+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVscC1ibG9ja1wiPlxuICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb259fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxoNSBjbGFzcz1cImdyZXlUZXh0XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbC1zcXVhcmUtb1wiPjwvaT5cbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAge3snRURJVF9QUk9QRVJUSUVTJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2g1PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGhyLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC1tZC0zXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJiYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb25cIlxuICAgICAgICAgICAgY2xhc3M9XCIgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydBRERfTkVXX09QVElPTlMnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOSBjb2wteHMtOSBjb2wtbWQtOSBjb2wtbGctOVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBpZD1cImlucHV0QWRkTmV3QmFzaWNPcHRpb25cIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FERF9BX05FV19PUFRJT04nIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm5ld09wdGlvbkJhc2ljU2VsZWN0LnNhaXNpZVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTMgY29sLXhzLTMgY29sLW1kLTMgY29sLWxnLTNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLmFkZE5ld09wdGlvbkJhc2ljU2VsZWN0KClcIj5cbiAgICAgICAgICAgICAgICB7eydBREQnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC1tZC0zXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgICAge3snRURJVF9SRU1PVkVfT1BUSU9OUycgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzLVwiY29sLWxnLTEyIGNvbC1tZC0xMiBjb2wtc20tMTIgY29sLXhzLTEyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgbmctaWY9XCIkY3RybC5iYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24ucm93cy5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJ0ZXh0LWNlbnRlciBncmV5VGV4dFwiPlxuICAgICAgICAgICAgICAgICAgPGVtPlxuICAgICAgICAgICAgICAgICAgICAtIHt7J05PX09QVElPTl9BRERfTkVXJyB8IHRyYW5zbGF0ZX19IC1cbiAgICAgICAgICAgICAgICAgIDwvZW0+XG4gICAgICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDx0YWJsZVxuICAgICAgICAgICAgICAgIG5nLWlmPVwiJGN0cmwuYmFzaWNTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkXCI+XG4gICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XCIyMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7J09SREVSJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cIjU1XCI+XG4gICAgICAgICAgICAgICAgICAgICAge3snT1BUSU9OJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cIjI1XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XCIyMFwiPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XCI1NVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5iYXNpY1NlbGVjdEZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J1NFQVJDSF80X09QVElPTicgfCB0cmFuc2xhdGV9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LXNtIGZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XCIyNVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgIDx0ciBuZy1yZXBlYXQ9XCJiYXNpY1NlbGVjdFJvdyBpbiAkY3RybC5iYXNpY1NlbGVjdFJvd0NvbGxlY3Rpb24ucm93cyB8IGZpbHRlcjokY3RybC5iYXNpY1NlbGVjdEZpbHRlciBhcyBiYXNpY1NlbGVjdFJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdC1yYXRpbz1cIjIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyRpbmRleH19XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgc3QtcmF0aW89XCI1NVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tiYXNpY1NlbGVjdFJvdy5vcHRpb259fVxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIHN0LXJhdGlvPVwiMjVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdWxsLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC51cFRoaXNSb3coe2luZGV4OiAkaW5kZXh9KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctdXBcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwuZG93blRoaXNSb3coe2luZGV4OiAkaW5kZXh9KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93blwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLnJlbW92ZVJvdyh7aW5kZXg6ICRpbmRleH0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBmb3I9XCJpbnB1dFRleHRMYWJlbFVwZGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICAgIHt7J0xBQkVMX1RFWFQnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWxcIlxuICAgICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snQUREX0VESVRfTEFCRUxfSEVSRScgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWFyZ2luVG9wRml2ZXBpeGVsc1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBmb3I9XCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICAgIFJlcXVpcmVkIDpcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94Q3NzQ29ycmVjdGlvblwiPlxuICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBuZy1tb2RlbD1cIm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBpZD1cImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICAgICAge3snREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snQURERURJVF9ERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBgLFxuICBiaW5kaW5nczoge1xuICAgIG55YVNlbGVjdDogJz0nLFxuICAgIGJhc2ljU2VsZWN0Um93Q29sbGVjdGlvbjogJz0nLFxuICAgIG5ld09wdGlvbkJhc2ljU2VsZWN0OiAnPScsXG4gICAgYWRkTmV3T3B0aW9uQmFzaWNTZWxlY3Q6ICcmJyxcbiAgICB1cFRoaXNSb3c6ICcmJyxcbiAgICBkb3duVGhpc1JvdzogJyYnLFxuICAgIHJlbW92ZVJvdzogJyYnXG4gIH0sXG4gIGNvbnRyb2xsZXI6XG4gIGNsYXNzIGVkaXRCYXNpY1NlbGVjdENvbnRyb2xsZXIge1xuICAgIHN0YXRpYyAkaW5qZWN0ID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIH1cbiAgfVxufTtcblxuY29uc3QgZWRpdEJhc2ljU2VsZWN0TW9kdWxlTmFtZSA9ICdzdGVwd2F5LmVkaXRCYXNpY1NlbGVjdC5tb2R1bGUnO1xuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuICAgICAgICAgICAgICAgIC5tb2R1bGUoZWRpdEJhc2ljU2VsZWN0TW9kdWxlTmFtZSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChFRElUX0JBU0lDX1NFTEVDVF9DT01QT05FTlQsIGVkaXRCYXNpY1NlbGVjdENvbnRyb2xDb21wb25lbnQpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvYmFzaWNTZWxlY3QvZWRpdEJhc2ljU2VsZWN0L2VkaXRCYXNpY1NlbGVjdC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 75 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar GroupedSelectConfig = exports.GroupedSelectConfig = {\n id: 'GroupedSelect',\n name: 'Grouped Select',\n subtitle: 'Grouped Select',\n options: [],\n group: 'Select',\n formlyType: 'groupedSelect',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> ' is required '\n //-> or if not exists or empty just 'this field is required'\n var defaultReturnMsg = 'this Grouped Select field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9ncm91cGVkU2VsZWN0L2NvbmZpZy9ncm91cGVkU2VsZWN0LmNvbmZpZy5qcz9kY2ZiIl0sIm5hbWVzIjpbIkdyb3VwZWRTZWxlY3RDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsIm9wdGlvbnMiLCJncm91cCIsImZvcm1seVR5cGUiLCJmb3JtbHlTdWJ0eXBlIiwiZm9ybWx5TGFiZWwiLCJmb3JtbHlSZXF1aXJlZCIsImZvcm1seURlc2NyaXB0aW9uIiwiZm9ybWx5T3B0aW9ucyIsImZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzIiwiZm9ybWx5VmFsaWRhdG9ycyIsImZvcm1seVZhbGlkYXRpb24iLCJtZXNzYWdlcyIsInJlcXVpcmVkIiwidmlld1ZhbHVlIiwibW9kZWxWYWx1ZSIsInNjb3BlIiwiZGVmYXVsdFJldHVybk1zZyIsInJldHVybk1zZyIsInRvIiwibGFiZWwiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQU8sSUFBTUEsb0RBQXNCO0FBQ2pDQyxNQUFJLGVBRDZCO0FBRWpDQyxRQUFNLGdCQUYyQjtBQUdqQ0MsWUFBVSxnQkFIdUI7QUFJakNDLFdBQVMsRUFKd0I7QUFLakNDLFNBQU8sUUFMMEI7QUFNakNDLGNBQVksZUFOcUI7QUFPakNDLGlCQUFlLEVBUGtCO0FBUWpDQyxlQUFhLEVBUm9CO0FBU2pDQyxrQkFBZ0IsS0FUaUI7QUFVakNDLHFCQUFtQixFQVZjO0FBV2pDQyxpQkFBZSxFQVhrQjtBQVlqQ0MsOEJBQTRCLEVBWks7QUFhakNDLG9CQUFrQixFQWJlO0FBY2pDQyxvQkFBa0I7QUFDaEJDLGNBQVU7QUFDUkMsZ0JBQVUsa0JBQUNDLFNBQUQsRUFBWUMsVUFBWixFQUF3QkMsS0FBeEIsRUFBa0M7QUFDMUM7QUFDQTtBQUNBO0FBQ0EsWUFBTUMsbUJBQW1CLHVDQUF6QjtBQUNBLFlBQU1DLFlBQWEsT0FBT0YsTUFBTUcsRUFBTixDQUFTQyxLQUFoQixLQUEwQixXQUEzQixHQUE0Q0osTUFBTUcsRUFBTixDQUFTQyxLQUFULEtBQW1CLEVBQXBCLEdBQTBCSixNQUFNRyxFQUFOLENBQVNDLEtBQVQsR0FBaUIsY0FBM0MsR0FBNERILGdCQUF2RyxHQUEySEEsZ0JBQTdJO0FBQ0EsZUFBT0MsU0FBUDtBQUNEO0FBUk87QUFETTtBQWRlLENBQTVCIiwiZmlsZSI6Ijc1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEdyb3VwZWRTZWxlY3RDb25maWcgPSB7XG4gIGlkOiAnR3JvdXBlZFNlbGVjdCcsXG4gIG5hbWU6ICdHcm91cGVkIFNlbGVjdCcsXG4gIHN1YnRpdGxlOiAnR3JvdXBlZCBTZWxlY3QnLFxuICBvcHRpb25zOiBbXSxcbiAgZ3JvdXA6ICdTZWxlY3QnLFxuICBmb3JtbHlUeXBlOiAnZ3JvdXBlZFNlbGVjdCcsXG4gIGZvcm1seVN1YnR5cGU6ICcnLFxuICBmb3JtbHlMYWJlbDogJycsXG4gIGZvcm1seVJlcXVpcmVkOiBmYWxzZSxcbiAgZm9ybWx5RGVzY3JpcHRpb246ICcnLFxuICBmb3JtbHlPcHRpb25zOiBbXSxcbiAgZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXM6IHt9LFxuICBmb3JtbHlWYWxpZGF0b3JzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdGlvbjoge1xuICAgIG1lc3NhZ2VzOiB7XG4gICAgICByZXF1aXJlZDogKHZpZXdWYWx1ZSwgbW9kZWxWYWx1ZSwgc2NvcGUpID0+IHtcbiAgICAgICAgLy9yZXR1cm4gYSByZXF1aXJlZCB2YWxpZGF0aW9uIG1lc3NhZ2UgOlxuICAgICAgICAvLy0+ICc8bGFiZWwgYXMgbmFtZT4gaXMgcmVxdWlyZWQgJ1xuICAgICAgICAvLy0+IG9yIGlmIG5vdCBleGlzdHMgb3IgZW1wdHkganVzdCAndGhpcyBmaWVsZCBpcyByZXF1aXJlZCdcbiAgICAgICAgY29uc3QgZGVmYXVsdFJldHVybk1zZyA9ICd0aGlzIEdyb3VwZWQgU2VsZWN0IGZpZWxkIGlzIHJlcXVpcmVkJztcbiAgICAgICAgY29uc3QgcmV0dXJuTXNnID0gKHR5cGVvZiBzY29wZS50by5sYWJlbCAhPT0gJ3VuZGVmaW5lZCcpID8gKChzY29wZS50by5sYWJlbCAhPT0gJycpID8gc2NvcGUudG8ubGFiZWwgKyAnIGlzIHJlcXVpcmVkJyA6IGRlZmF1bHRSZXR1cm5Nc2cpIDogZGVmYXVsdFJldHVybk1zZztcbiAgICAgICAgcmV0dXJuIHJldHVybk1zZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9ncm91cGVkU2VsZWN0L2NvbmZpZy9ncm91cGVkU2VsZWN0LmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 76 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_GROUPED_SELECT_COMPONENT = exports.EDIT_GROUPED_SELECT_COMPONENT = 'editGroupedSelectControl';\n\nvar editGroupedSelectControlComponent = exports.editGroupedSelectControlComponent = {\n template: '\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n \\n {{\\'ADD_NEW_OPTIONS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n {{\\'ADD_NEW_GROUPS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n {{\\'EDIT_GROUPS_OPTIONS\\' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n nyaSelect: '=',\n groupedSelectRowCollection: '=',\n newOptionGroupedSelect: '=',\n newGroupGroupedSelect: '=',\n groupSelectGroupClick: '=',\n groupedSelectGroups: '=',\n\n addNewOptionGroupedSelect: '&',\n addNewGroupToGroupedSelect: '&',\n upThisGroupedSelectRow: '&',\n downThisGroupedSelectRow: '&',\n showGroupListToChoose: '&',\n removeGroupedSelectRow: '&'\n },\n controller: (_temp = _class = function editGroupedSelectControlController() {\n _classCallCheck(this, editGroupedSelectControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editGroupedSelectModuleName = 'stepway.editGroupedSelect.module';\n\nexports.default = angular.module(editGroupedSelectModuleName, []).component(EDIT_GROUPED_SELECT_COMPONENT, editGroupedSelectControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9ncm91cGVkU2VsZWN0L2VkaXRHcm91cGVkU2VsZWN0L2VkaXRHcm91cGVkU2VsZWN0LmNvbXBvbmVudC5qcz84OTE4Il0sIm5hbWVzIjpbIkVESVRfR1JPVVBFRF9TRUxFQ1RfQ09NUE9ORU5UIiwiZWRpdEdyb3VwZWRTZWxlY3RDb250cm9sQ29tcG9uZW50IiwidGVtcGxhdGUiLCJiaW5kaW5ncyIsIm55YVNlbGVjdCIsImdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uIiwibmV3T3B0aW9uR3JvdXBlZFNlbGVjdCIsIm5ld0dyb3VwR3JvdXBlZFNlbGVjdCIsImdyb3VwU2VsZWN0R3JvdXBDbGljayIsImdyb3VwZWRTZWxlY3RHcm91cHMiLCJhZGROZXdPcHRpb25Hcm91cGVkU2VsZWN0IiwiYWRkTmV3R3JvdXBUb0dyb3VwZWRTZWxlY3QiLCJ1cFRoaXNHcm91cGVkU2VsZWN0Um93IiwiZG93blRoaXNHcm91cGVkU2VsZWN0Um93Iiwic2hvd0dyb3VwTGlzdFRvQ2hvb3NlIiwicmVtb3ZlR3JvdXBlZFNlbGVjdFJvdyIsImNvbnRyb2xsZXIiLCIkaW5qZWN0IiwiZWRpdEdyb3VwZWRTZWxlY3RNb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLHdFQUFnQywwQkFBdEM7O0FBRUEsSUFBTUMsZ0ZBQW9DO0FBQy9DQywyZ1ZBRCtDO0FBNFIvQ0MsWUFBVTtBQUNSQyxlQUE0QixHQURwQjtBQUVSQyxnQ0FBNEIsR0FGcEI7QUFHUkMsNEJBQTRCLEdBSHBCO0FBSVJDLDJCQUE0QixHQUpwQjtBQUtSQywyQkFBNEIsR0FMcEI7QUFNUkMseUJBQTRCLEdBTnBCOztBQVFSQywrQkFBNEIsR0FScEI7QUFTUkMsZ0NBQTRCLEdBVHBCO0FBVVJDLDRCQUE0QixHQVZwQjtBQVdSQyw4QkFBNEIsR0FYcEI7QUFZUkMsMkJBQTRCLEdBWnBCO0FBYVJDLDRCQUE0QjtBQWJwQixHQTVScUM7QUEyUy9DQyxnQ0FJRSw4Q0FBYztBQUFBO0FBRWIsR0FOSCxTQUVTQyxPQUZULEdBRW1CLEVBRm5CO0FBM1MrQyxDQUExQzs7QUFxVFAsSUFBTUMsOEJBQThCLGtDQUFwQzs7a0JBRWVDLFFBQ0VDLE1BREYsQ0FDU0YsMkJBRFQsRUFDc0MsRUFEdEMsRUFFRUcsU0FGRixDQUVZckIsNkJBRlosRUFFMkNDLGlDQUYzQyxDIiwiZmlsZSI6Ijc2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVESVRfR1JPVVBFRF9TRUxFQ1RfQ09NUE9ORU5UID0gJ2VkaXRHcm91cGVkU2VsZWN0Q29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0R3JvdXBlZFNlbGVjdENvbnRyb2xDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPGg1XG4gICAgICAgICAgICBjbGFzcz1cImdyZXlUZXh0XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZVwiPjwvaT5cbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAge3snUFJFVklFV19UQUInIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvaDU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8aHIvPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBmb3I9XCJzZWxlY3RcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWwgdGV4dENvbnRyb2xMYWJlbFwiPlxuICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsfX1cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBuZy1pZj1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHRDb250cm9sTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgIDxvbFxuICAgICAgICAgICAgICAgIGNsYXNzPVwibnlhLWJzLXNlbGVjdCBjb2wtc20tMTIgY29sLXhzLTEyIGNvbC1tZC0xMiBjb2wtbGcxMlwiXG4gICAgICAgICAgICAgICAgbmctbW9kZWw9XCJtb2RlbEdyb3VwZWRTZWxlY3RcIlxuICAgICAgICAgICAgICAgIGRhdGEtbGl2ZS1zZWFyY2g9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBkaXNhYmxlZD1cIiRjdHJsLmdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICBueWEtYnMtb3B0aW9uPVwiZ3JvdXBlZFNlbGVjdFJvdyBpbiAkY3RybC5ncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbi5yb3dzIGdyb3VwIGJ5IGdyb3VwZWRTZWxlY3RSb3cuZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCIkaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7Z3JvdXBlZFNlbGVjdFJvdy5ncm91cH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAge3tncm91cGVkU2VsZWN0Um93Lm9wdGlvbn19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnbHlwaGljb24gZ2x5cGhpY29uLW9rIGNoZWNrLW1hcmtcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvb2w+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVscC1ibG9ja1wiPlxuICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb259fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxoNVxuICAgICAgICAgICAgY2xhc3M9XCJncmV5VGV4dFwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cIj48L2k+XG4gICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9oNT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoci8+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wtbWQtM1wiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwiZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb25cIlxuICAgICAgICAgICAgY2xhc3M9XCIgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydBRERfTkVXX09QVElPTlMnIHwgdHJhbnNsYXRlfX0gOlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOSBjb2wteHMtOSBjb2wtbWQtOSBjb2wtbGctOVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIGlkPVwiaW5wdXRBZGROZXdHcm91cGVkT3B0aW9uXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FERF9BX05FV19PUFRJT04nIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgICAgIG5nLW1vZGVsPVwiJGN0cmwubmV3T3B0aW9uR3JvdXBlZFNlbGVjdC5zYWlzaWVcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zIGNvbC14cy0zIGNvbC1tZC0zIGNvbC1sZy0zXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5hZGROZXdPcHRpb25Hcm91cGVkU2VsZWN0KClcIj5cbiAgICAgICAgICAgICAgICB7eydBREQnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGNvbC1tZC0zXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvblwiXG4gICAgICAgICAgICBjbGFzcz1cIiBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICAgIHt7J0FERF9ORVdfR1JPVVBTJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTkgY29sLXhzLTkgY29sLW1kLTkgY29sLWxnLTlcIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgaWQ9XCJpbnB1dEFkZE5ld0dyb3VwR3JvdXBlZE9wdGlvblwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm5ld0dyb3VwR3JvdXBlZFNlbGVjdC5zYWlzaWVcIiBpZD1cImlucHV0VGV4dExhYmVsVXBkYXRlR3JvdXBlZFNlbGVjdFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBRERfQV9ORVdfR1JPVVAnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zIGNvbC14cy0zIGNvbC1tZC0zIGNvbC1sZy0zXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgbmctY2xpY2s9XCIkY3RybC5hZGROZXdHcm91cFRvR3JvdXBlZFNlbGVjdCgpXCI+XG4gICAgICAgICAgICAgICAge3snQUREJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBjb2wtbWQtM1wiPlxuICAgICAgICAgIDxsYWJlbCAgY2xhc3M9XCIgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydFRElUX0dST1VQU19PUFRJT05TJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgY29sLW1kLTEyIGNvbC1zbS0xMiBjb2wteHMtMTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBuZy1pZj1cIiRjdHJsLmdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidGV4dC1jZW50ZXIgZ3JleVRleHRcIj5cbiAgICAgICAgICAgICAgICAgIDxlbT5cbiAgICAgICAgICAgICAgICAgICAgLSB7eydOT19PUFRJT05fQUREX05FVycgfCB0cmFuc2xhdGV9fSAtXG4gICAgICAgICAgICAgICAgICA8L2VtPlxuICAgICAgICAgICAgICAgIDwvaDU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8dGFibGVcbiAgICAgICAgICAgICAgICBuZy1pZj1cIiRjdHJsLmdyb3VwZWRTZWxlY3RSb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkXCI+XG4gICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XCIyMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7J09SREVSJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cIjI1XCI+XG4gICAgICAgICAgICAgICAgICAgICAge3snR1JPVVAnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVwiMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eydPUFRJT04nIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVwiMjVcIj5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cIjIwXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cIjI1XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cIjMwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLmdyb3VwZWRTZWxlY3RGaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydTRUFSQ0hfNF9PUFRJT04nIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1zbSBmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVwiMjVcIj5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgPHRyIG5nLXJlcGVhdD1cImdyb3VwZWRTZWxlY3RSb3cgaW4gJGN0cmwuZ3JvdXBlZFNlbGVjdFJvd0NvbGxlY3Rpb24ucm93cyB8IGZpbHRlcjokY3RybC5ncm91cGVkU2VsZWN0RmlsdGVyIGFzIGdyb3VwZWRTZWxlY3RSb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIHN0LXJhdGlvPVwiMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyRpbmRleH19XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBzdC1yYXRpbz1cIjI1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZy1pZj1cIiRjdHJsLmdyb3VwU2VsZWN0R3JvdXBDbGljay5zaG93TGlzdCA9PT0gdHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZy1pZj1cIiRjdHJsLmdyb3VwZWRTZWxlY3RHcm91cHMubGlzdC5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxlZnQgbm9Hcm91cFRleHRcIj4tIHt7J05PX0dST1VQX0FERF9ORVcnIHwgdHJhbnNsYXRlfX0gLTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZy1pZj1cIiRjdHJsLmdyb3VwZWRTZWxlY3RHcm91cHMubGlzdC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibnlhLWJzLXNlbGVjdCBjb2wtc20tMTIgY29sLXhzLTEyIGNvbC1tZC0xMiBjb2wtbGcxMiBlZGl0R3JvdXBlZFNlbGVjdG55YVNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmctbW9kZWw9XCJncm91cGVkU2VsZWN0Um93Lmdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm1vZGVsR3JvdXBlZE9wdGlvbkdyb3VwZWRDaG9vc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPVwiJGN0cmwuZ3JvdXBlZFNlbGVjdEdyb3Vwcy5saXN0Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJueWEtYnMtb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG55YS1icy1vcHRpb249XCJHcm91cGVkU2VsZWN0R3JvdXAgaW4gJGN0cmwuZ3JvdXBlZFNlbGVjdEdyb3Vwcy5saXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiR3JvdXBlZFNlbGVjdEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YT57e0dyb3VwZWRTZWxlY3RHcm91cH19PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2w+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nLWlmPVwiJGN0cmwuZ3JvdXBTZWxlY3RHcm91cENsaWNrLnNob3dMaXN0ID09PSBmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tncm91cGVkU2VsZWN0Um93Lmdyb3VwfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIHN0LXJhdGlvPVwiMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7e2dyb3VwZWRTZWxlY3RSb3cub3B0aW9ufX1cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIHN0LXJhdGlvPVwiMjVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVsbC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwudXBUaGlzR3JvdXBlZFNlbGVjdFJvdyh7aW5kZXg6ICRpbmRleH0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctdXBcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cIiRjdHJsLmRvd25UaGlzR3JvdXBlZFNlbGVjdFJvdyh7aW5kZXg6ICRpbmRleH0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93blwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4td2FybmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwuc2hvd0dyb3VwTGlzdFRvQ2hvb3NlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVwiJGN0cmwucmVtb3ZlR3JvdXBlZFNlbGVjdFJvdyh7aW5kZXg6ICRpbmRleH0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPGhyLz5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBmb3I9XCJpbnB1dFRleHRMYWJlbFVwZGF0ZVwiXG4gICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICB7eydMQUJFTF9URVhUJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsXCJcbiAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBRERfRURJVF9MQUJFTF9IRVJFJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWFyZ2luVG9wRml2ZXBpeGVsc1wiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGZvcj1cImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXCJcbiAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFwiPlxuICAgICAgICAgIHt7J0RFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydBRERFRElUX0RFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzOiB7XG4gICAgbnlhU2VsZWN0OiAgICAgICAgICAgICAgICAgICc9JyxcbiAgICBncm91cGVkU2VsZWN0Um93Q29sbGVjdGlvbjogJz0nLFxuICAgIG5ld09wdGlvbkdyb3VwZWRTZWxlY3Q6ICAgICAnPScsXG4gICAgbmV3R3JvdXBHcm91cGVkU2VsZWN0OiAgICAgICc9JyxcbiAgICBncm91cFNlbGVjdEdyb3VwQ2xpY2s6ICAgICAgJz0nLFxuICAgIGdyb3VwZWRTZWxlY3RHcm91cHM6ICAgICAgICAnPScsXG5cbiAgICBhZGROZXdPcHRpb25Hcm91cGVkU2VsZWN0OiAgJyYnLFxuICAgIGFkZE5ld0dyb3VwVG9Hcm91cGVkU2VsZWN0OiAnJicsXG4gICAgdXBUaGlzR3JvdXBlZFNlbGVjdFJvdzogICAgICcmJyxcbiAgICBkb3duVGhpc0dyb3VwZWRTZWxlY3RSb3c6ICAgJyYnLFxuICAgIHNob3dHcm91cExpc3RUb0Nob29zZTogICAgICAnJicsXG4gICAgcmVtb3ZlR3JvdXBlZFNlbGVjdFJvdzogICAgICcmJ1xuICB9LFxuICBjb250cm9sbGVyICAgIDpcbiAgY2xhc3MgZWRpdEdyb3VwZWRTZWxlY3RDb250cm9sQ29udHJvbGxlciB7XG4gICAgc3RhdGljICRpbmplY3QgPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBlZGl0R3JvdXBlZFNlbGVjdE1vZHVsZU5hbWUgPSAnc3RlcHdheS5lZGl0R3JvdXBlZFNlbGVjdC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShlZGl0R3JvdXBlZFNlbGVjdE1vZHVsZU5hbWUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoRURJVF9HUk9VUEVEX1NFTEVDVF9DT01QT05FTlQsIGVkaXRHcm91cGVkU2VsZWN0Q29udHJvbENvbXBvbmVudCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9ncm91cGVkU2VsZWN0L2VkaXRHcm91cGVkU2VsZWN0L2VkaXRHcm91cGVkU2VsZWN0LmNvbXBvbmVudC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 77 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar HeaderConfig = exports.HeaderConfig = {\n id: 'Header',\n name: 'Header',\n subtitle: 'no control',\n group: 'Decoration',\n formlyType: 'header',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {}\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9oZWFkZXIvY29uZmlnL2hlYWRlci5jb25maWcuanM/NDBmZSJdLCJuYW1lcyI6WyJIZWFkZXJDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiZm9ybWx5VmFsaWRhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFNQSxzQ0FBZTtBQUMxQkMsTUFBSSxRQURzQjtBQUUxQkMsUUFBTSxRQUZvQjtBQUcxQkMsWUFBVSxZQUhnQjtBQUkxQkMsU0FBTyxZQUptQjtBQUsxQkMsY0FBWSxRQUxjO0FBTTFCQyxpQkFBZSxFQU5XO0FBTzFCQyxlQUFhLEVBUGE7QUFRMUJDLGtCQUFnQixLQVJVO0FBUzFCQyxxQkFBbUIsRUFUTztBQVUxQkMsaUJBQWUsRUFWVztBQVcxQkMsOEJBQTRCLEVBWEY7QUFZMUJDLG9CQUFrQixFQVpRO0FBYTFCQyxvQkFBa0I7QUFiUSxDQUFyQiIsImZpbGUiOiI3Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBIZWFkZXJDb25maWcgPSB7XG4gIGlkOiAnSGVhZGVyJyxcbiAgbmFtZTogJ0hlYWRlcicsXG4gIHN1YnRpdGxlOiAnbm8gY29udHJvbCcsXG4gIGdyb3VwOiAnRGVjb3JhdGlvbicsXG4gIGZvcm1seVR5cGU6ICdoZWFkZXInLFxuICBmb3JtbHlTdWJ0eXBlOiAnJyxcbiAgZm9ybWx5TGFiZWw6ICcnLFxuICBmb3JtbHlSZXF1aXJlZDogZmFsc2UsXG4gIGZvcm1seURlc2NyaXB0aW9uOiAnJyxcbiAgZm9ybWx5T3B0aW9uczogW10gLFxuICBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllczoge30sXG4gIGZvcm1seVZhbGlkYXRvcnM6IHt9LFxuICBmb3JtbHlWYWxpZGF0aW9uOiB7fVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL2hlYWRlci9jb25maWcvaGVhZGVyLmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 78 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_HEADER_CONTROL_COMPONENT = exports.EDIT_HEADER_CONTROL_COMPONENT = 'editHeaderControl';\n\nvar editHeaderControlComponent = exports.editHeaderControlComponent = {\n template: '\\n
\\n
\\n
\\n
\\n
\\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n nyaSelect: '='\n },\n controller: (_temp = _class = function editHeaderControlController() {\n //\n\n _classCallCheck(this, editHeaderControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editHeaderControlModuleName = 'stepway.editHeaderControl.module';\n\nexports.default = angular.module(editHeaderControlModuleName, []).component(EDIT_HEADER_CONTROL_COMPONENT, editHeaderControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9oZWFkZXIvZWRpdEhlYWRlci9lZGl0SGVhZGVyQ29udHJvbC5jb21wb25lbnQuanM/NzU3NCJdLCJuYW1lcyI6WyJFRElUX0hFQURFUl9DT05UUk9MX0NPTVBPTkVOVCIsImVkaXRIZWFkZXJDb250cm9sQ29tcG9uZW50IiwidGVtcGxhdGUiLCJiaW5kaW5ncyIsIm55YVNlbGVjdCIsImNvbnRyb2xsZXIiLCIkaW5qZWN0IiwiZWRpdEhlYWRlckNvbnRyb2xNb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFPLElBQU1BLHdFQUFnQyxtQkFBdEM7O0FBRUEsSUFBTUMsa0VBQTZCO0FBQ3hDQyw0MEVBRHdDO0FBOEV4Q0MsWUFBVTtBQUNSQyxlQUFXO0FBREgsR0E5RThCO0FBaUZ4Q0MsZ0NBSUUsdUNBQWM7QUFDWjs7QUFEWTtBQUViLEdBTkgsU0FFU0MsT0FGVCxHQUVtQixFQUZuQjtBQWpGd0MsQ0FBbkM7O0FBMkZQLElBQU1DLDhCQUE4QixrQ0FBcEM7O2tCQUVlQyxRQUNFQyxNQURGLENBQ1NGLDJCQURULEVBQ3NDLEVBRHRDLEVBRUVHLFNBRkYsQ0FFWVYsNkJBRlosRUFFMkNDLDBCQUYzQyxDIiwiZmlsZSI6Ijc4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVESVRfSEVBREVSX0NPTlRST0xfQ09NUE9ORU5UID0gJ2VkaXRIZWFkZXJDb250cm9sJztcblxuZXhwb3J0IGNvbnN0IGVkaXRIZWFkZXJDb250cm9sQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZTogYFxuICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8aDUgY2xhc3M9XCJncmV5VGV4dFwiPjxpIGNsYXNzPVwiZmEgZmEtZXllXCI+PC9pPlxuICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICB7eydQUkVWSUVXX1RBQicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9oNT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoci8+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UGxhY2Vob2xkZXJ9fVxuICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8aDUgY2xhc3M9XCJncmV5VGV4dFwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cIj48L2k+XG4gICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGhyLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBmb3I9XCJpbnB1dEhlYWRlclRleHRVcGRhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICAgIHt7J0hFQURFUl9URVhUJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgaWQ9XCJpbnB1dEhlYWRlclRleHRVcGRhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FERF9FRElUX0hFQURFUl9IRVJFJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWFyZ2luVG9wRml2ZXBpeGVsc1wiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcIj5cbiAgICAgICAgICAgIHt7J0RFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgaWQ9XCJpbnB1dFRleHREZXNjcmlwdGlvblVwZGF0ZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snQURERURJVF9ERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgYCxcbiAgYmluZGluZ3M6IHtcbiAgICBueWFTZWxlY3Q6ICc9J1xuICB9LFxuICBjb250cm9sbGVyOlxuICBjbGFzcyBlZGl0SGVhZGVyQ29udHJvbENvbnRyb2xsZXIge1xuICAgIHN0YXRpYyAkaW5qZWN0ID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIC8vXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBlZGl0SGVhZGVyQ29udHJvbE1vZHVsZU5hbWUgPSAnc3RlcHdheS5lZGl0SGVhZGVyQ29udHJvbC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShlZGl0SGVhZGVyQ29udHJvbE1vZHVsZU5hbWUsIFtdKVxuICAgICAgICAgICAgICAgIC5jb21wb25lbnQoRURJVF9IRUFERVJfQ09OVFJPTF9DT01QT05FTlQsIGVkaXRIZWFkZXJDb250cm9sQ29tcG9uZW50KTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9oZWFkZXIvZWRpdEhlYWRlci9lZGl0SGVhZGVyQ29udHJvbC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 79 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar PasswordConfig = exports.PasswordConfig = {\n id: 'Password',\n name: 'Password',\n subtitle: 'Password',\n group: 'input',\n formlyType: 'input',\n formlySubtype: 'password',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n var defaultReturnMsg = 'this Password field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9wYXNzd29yZC9jb25maWcvcGFzc3dvcmQuY29uZmlnLmpzPzY4YjMiXSwibmFtZXMiOlsiUGFzc3dvcmRDb25maWciLCJpZCIsIm5hbWUiLCJzdWJ0aXRsZSIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiZm9ybWx5VmFsaWRhdGlvbiIsIm1lc3NhZ2VzIiwicmVxdWlyZWQiLCJ2aWV3VmFsdWUiLCJtb2RlbFZhbHVlIiwic2NvcGUiLCJkZWZhdWx0UmV0dXJuTXNnIiwicmV0dXJuTXNnIiwidG8iLCJsYWJlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFNQSwwQ0FBdUI7QUFDbENDLE1BQUksVUFEOEI7QUFFbENDLFFBQU0sVUFGNEI7QUFHbENDLFlBQVUsVUFId0I7QUFJbENDLFNBQU8sT0FKMkI7QUFLbENDLGNBQVksT0FMc0I7QUFNbENDLGlCQUFlLFVBTm1CO0FBT2xDQyxlQUFhLEVBUHFCO0FBUWxDQyxrQkFBZ0IsS0FSa0I7QUFTbENDLHFCQUFtQixFQVRlO0FBVWxDQyxpQkFBZSxFQVZtQjtBQVdsQ0MsOEJBQTRCLEVBWE07QUFZbENDLG9CQUFrQixFQVpnQjtBQWFsQ0Msb0JBQWtCO0FBQ2hCQyxjQUFVO0FBQ1JDLGdCQUFVLGtCQUFDQyxTQUFELEVBQVlDLFVBQVosRUFBd0JDLEtBQXhCLEVBQWtDO0FBQzFDLFlBQU1DLG1CQUFtQixpQ0FBekI7QUFDQSxZQUFNQyxZQUFhLE9BQU9GLE1BQU1HLEVBQU4sQ0FBU0MsS0FBaEIsS0FBMEIsV0FBM0IsR0FBNENKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxLQUFtQixFQUFwQixHQUEwQkosTUFBTUcsRUFBTixDQUFTQyxLQUFULEdBQWlCLGNBQTNDLEdBQTRESCxnQkFBdkcsR0FBMkhBLGdCQUE3STtBQUNBLGVBQU9DLFNBQVA7QUFDRDtBQUxPO0FBRE07QUFiZ0IsQ0FBN0IiLCJmaWxlIjoiNzkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUGFzc3dvcmRDb25maWcgPSAgICAgICB7XG4gIGlkOiAnUGFzc3dvcmQnLFxuICBuYW1lOiAnUGFzc3dvcmQnLFxuICBzdWJ0aXRsZTogJ1Bhc3N3b3JkJyxcbiAgZ3JvdXA6ICdpbnB1dCcsXG4gIGZvcm1seVR5cGU6ICdpbnB1dCcsXG4gIGZvcm1seVN1YnR5cGU6ICdwYXNzd29yZCcsXG4gIGZvcm1seUxhYmVsOiAnJyxcbiAgZm9ybWx5UmVxdWlyZWQ6IGZhbHNlLFxuICBmb3JtbHlEZXNjcmlwdGlvbjogJycsXG4gIGZvcm1seU9wdGlvbnM6IFtdICxcbiAgZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXM6IHt9LFxuICBmb3JtbHlWYWxpZGF0b3JzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdGlvbjoge1xuICAgIG1lc3NhZ2VzOiB7XG4gICAgICByZXF1aXJlZDogKHZpZXdWYWx1ZSwgbW9kZWxWYWx1ZSwgc2NvcGUpID0+IHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFJldHVybk1zZyA9ICd0aGlzIFBhc3N3b3JkIGZpZWxkIGlzIHJlcXVpcmVkJztcbiAgICAgICAgY29uc3QgcmV0dXJuTXNnID0gKHR5cGVvZiBzY29wZS50by5sYWJlbCAhPT0gJ3VuZGVmaW5lZCcpID8gKChzY29wZS50by5sYWJlbCAhPT0gJycpID8gc2NvcGUudG8ubGFiZWwgKyAnIGlzIHJlcXVpcmVkJyA6IGRlZmF1bHRSZXR1cm5Nc2cpIDogZGVmYXVsdFJldHVybk1zZztcbiAgICAgICAgcmV0dXJuIHJldHVybk1zZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9wYXNzd29yZC9jb25maWcvcGFzc3dvcmQuY29uZmlnLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 80 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _class, _temp;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_PASSWORD_CONTROL_COMPONENT = exports.EDIT_PASSWORD_CONTROL_COMPONENT = 'editPasswordControl';\n\nvar editPasswordControlComponent = exports.editPasswordControlComponent = {\n template: '\\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'PREVIEW_TAB\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{\\'EDIT_PROPERTIES\\' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n ',\n bindings: {\n nyaSelect: '='\n },\n controller: (_temp = _class = function editPasswordControlController() {\n //\n\n _classCallCheck(this, editPasswordControlController);\n }, _class.$inject = [], _temp)\n};\n\nvar editeditPasswordModuleName = 'stepway.editPasswordControl.module';\n\nexports.default = angular.module(editeditPasswordModuleName, []).component(EDIT_PASSWORD_CONTROL_COMPONENT, editPasswordControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9wYXNzd29yZC9lZGl0UGFzc3dvcmQvZWRpdFBhc3N3b3JkLmNvbXBvbmVudC5qcz8zYjA2Il0sIm5hbWVzIjpbIkVESVRfUEFTU1dPUkRfQ09OVFJPTF9DT01QT05FTlQiLCJlZGl0UGFzc3dvcmRDb250cm9sQ29tcG9uZW50IiwidGVtcGxhdGUiLCJiaW5kaW5ncyIsIm55YVNlbGVjdCIsImNvbnRyb2xsZXIiLCIkaW5qZWN0IiwiZWRpdGVkaXRQYXNzd29yZE1vZHVsZU5hbWUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sSUFBTUEsNEVBQWtDLHFCQUF4Qzs7QUFFQSxJQUFNQyxzRUFBK0I7QUFDMUNDLDhuSUFEMEM7QUFpSTFDQyxZQUFVO0FBQ1JDLGVBQVc7QUFESCxHQWpJZ0M7QUFvSTFDQyxnQ0FHRSx5Q0FBYztBQUNaOztBQURZO0FBRWIsR0FMSCxTQUVTQyxPQUZULEdBRW1CLEVBRm5CO0FBcEkwQyxDQUFyQzs7QUE2SVAsSUFBTUMsNkJBQTZCLG9DQUFuQzs7a0JBRWVDLFFBQ0VDLE1BREYsQ0FDU0YsMEJBRFQsRUFDcUMsRUFEckMsRUFFRUcsU0FGRixDQUVZViwrQkFGWixFQUU2Q0MsNEJBRjdDLEMiLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRURJVF9QQVNTV09SRF9DT05UUk9MX0NPTVBPTkVOVCA9ICdlZGl0UGFzc3dvcmRDb250cm9sJztcblxuZXhwb3J0IGNvbnN0IGVkaXRQYXNzd29yZENvbnRyb2xDb21wb25lbnQgPSB7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPGg1IGNsYXNzPVwiZ3JleVRleHRcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCI+PC9pPlxuICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICB7eydQUkVWSUVXX1RBQicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9oNT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoci8+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGZvcj1cImlucHV0UGFzc3dvcmRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWwgdGV4dENvbnRyb2xMYWJlbFwiPlxuICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsfX1cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBuZy1pZj1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHRDb250cm9sTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIGlkPVwiaW5wdXRQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVBsYWNlaG9sZGVyfX1cIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlbHAtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb259fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJncmV5VGV4dFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbC1zcXVhcmUtb1wiPjwvaT5cbiAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGhyLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dExhYmVsVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydMQUJFTF9URVhUJyB8IHRyYW5zbGF0ZX19IDpcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsXCJcbiAgICAgICAgICAgICAgaWQ9XCJpbnB1dFRleHRMYWJlbFVwZGF0ZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snQUREX0VESVRfTEFCRUxfSEVSRScgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dHBsYWNlaG9sZGVyVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydQTEFDRUhPTERFUicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0cGxhY2Vob2xkZXJVcGRhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FERF9FRElUX1BMQUNFSE9MRCcgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydSRVFVSVJFRCcgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveENzc0NvcnJlY3Rpb25cIj5cbiAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBuZy1tb2RlbD1cIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgaWQ9XCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpblRvcEZpdmVwaXhlbHNcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGZvcj1cImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXCI+XG4gICAgICAgICAgICB7eydERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fSA6XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgbmctbW9kZWw9XCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J0FEREVESVRfREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIGJpbmRpbmdzOiB7XG4gICAgbnlhU2VsZWN0OiAnPSdcbiAgfSxcbiAgY29udHJvbGxlcjpcbiAgY2xhc3MgZWRpdFBhc3N3b3JkQ29udHJvbENvbnRyb2xsZXIge1xuICAgIHN0YXRpYyAkaW5qZWN0ID0gW107XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAvL1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgZWRpdGVkaXRQYXNzd29yZE1vZHVsZU5hbWUgPSAnc3RlcHdheS5lZGl0UGFzc3dvcmRDb250cm9sLm1vZHVsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAubW9kdWxlKGVkaXRlZGl0UGFzc3dvcmRNb2R1bGVOYW1lLCBbXSlcbiAgICAgICAgICAgICAgICAuY29tcG9uZW50KEVESVRfUEFTU1dPUkRfQ09OVFJPTF9DT01QT05FTlQsIGVkaXRQYXNzd29yZENvbnRyb2xDb21wb25lbnQpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvcGFzc3dvcmQvZWRpdFBhc3N3b3JkL2VkaXRQYXNzd29yZC5jb21wb25lbnQuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 81 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar RadioConfig = exports.RadioConfig = {\n id: 'Radio',\n name: 'Radio',\n subtitle: 'Radio',\n options: [],\n group: 'Radio',\n formlyType: 'radio',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> '
is required '\n //-> or if not exists or empty just 'this field is required'\n var defaultReturnMsg = 'this Password field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yYWRpby9jb25maWcvc3RlcHdheS5yYWRpby5jb25maWcuanM/NThiMiJdLCJuYW1lcyI6WyJSYWRpb0NvbmZpZyIsImlkIiwibmFtZSIsInN1YnRpdGxlIiwib3B0aW9ucyIsImdyb3VwIiwiZm9ybWx5VHlwZSIsImZvcm1seVN1YnR5cGUiLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlPcHRpb25zIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJmb3JtbHlWYWxpZGF0b3JzIiwiZm9ybWx5VmFsaWRhdGlvbiIsIm1lc3NhZ2VzIiwicmVxdWlyZWQiLCJ2aWV3VmFsdWUiLCJtb2RlbFZhbHVlIiwic2NvcGUiLCJkZWZhdWx0UmV0dXJuTXNnIiwicmV0dXJuTXNnIiwidG8iLCJsYWJlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxJQUFNQSxvQ0FBb0I7QUFDL0JDLE1BQUksT0FEMkI7QUFFL0JDLFFBQU0sT0FGeUI7QUFHL0JDLFlBQVUsT0FIcUI7QUFJL0JDLFdBQVMsRUFKc0I7QUFLL0JDLFNBQU8sT0FMd0I7QUFNL0JDLGNBQVksT0FObUI7QUFPL0JDLGlCQUFlLEVBUGdCO0FBUS9CQyxlQUFhLEVBUmtCO0FBUy9CQyxrQkFBZ0IsS0FUZTtBQVUvQkMscUJBQW1CLEVBVlk7QUFXL0JDLGlCQUFlLEVBWGdCO0FBWS9CQyw4QkFBNEIsRUFaRztBQWEvQkMsb0JBQWtCLEVBYmE7QUFjL0JDLG9CQUFrQjtBQUNoQkMsY0FBVTtBQUNSQyxnQkFBVSxrQkFBU0MsU0FBVCxFQUFvQkMsVUFBcEIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLFlBQU1DLG1CQUFtQixpQ0FBekI7QUFDQSxZQUFNQyxZQUFhLE9BQU9GLE1BQU1HLEVBQU4sQ0FBU0MsS0FBaEIsS0FBMEIsV0FBM0IsR0FBNENKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxLQUFtQixFQUFwQixHQUEwQkosTUFBTUcsRUFBTixDQUFTQyxLQUFULEdBQWlCLGNBQTNDLEdBQTRESCxnQkFBdkcsR0FBMkhBLGdCQUE3STtBQUNBLGVBQU9DLFNBQVA7QUFDRDtBQVJPO0FBRE07QUFkYSxDQUExQiIsImZpbGUiOiI4MS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBSYWRpb0NvbmZpZyA9ICAgICAgIHtcbiAgaWQ6ICdSYWRpbycsXG4gIG5hbWU6ICdSYWRpbycsXG4gIHN1YnRpdGxlOiAnUmFkaW8nLFxuICBvcHRpb25zOiBbXSxcbiAgZ3JvdXA6ICdSYWRpbycsXG4gIGZvcm1seVR5cGU6ICdyYWRpbycsXG4gIGZvcm1seVN1YnR5cGU6ICcnLFxuICBmb3JtbHlMYWJlbDogJycsXG4gIGZvcm1seVJlcXVpcmVkOiBmYWxzZSxcbiAgZm9ybWx5RGVzY3JpcHRpb246ICcnICxcbiAgZm9ybWx5T3B0aW9uczogW10sXG4gIGZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdG9yczoge30sXG4gIGZvcm1seVZhbGlkYXRpb246IHtcbiAgICBtZXNzYWdlczoge1xuICAgICAgcmVxdWlyZWQ6IGZ1bmN0aW9uKHZpZXdWYWx1ZSwgbW9kZWxWYWx1ZSwgc2NvcGUpIHtcbiAgICAgICAgLy9yZXR1cm4gYSByZXF1aXJlZCB2YWxpZGF0aW9uIG1lc3NhZ2UgOlxuICAgICAgICAvLy0+ICc8bGFiZWwgYXMgbmFtZT4gaXMgcmVxdWlyZWQgJ1xuICAgICAgICAvLy0+IG9yIGlmIG5vdCBleGlzdHMgb3IgZW1wdHkganVzdCAndGhpcyBmaWVsZCBpcyByZXF1aXJlZCdcbiAgICAgICAgY29uc3QgZGVmYXVsdFJldHVybk1zZyA9ICd0aGlzIFBhc3N3b3JkIGZpZWxkIGlzIHJlcXVpcmVkJztcbiAgICAgICAgY29uc3QgcmV0dXJuTXNnID0gKHR5cGVvZiBzY29wZS50by5sYWJlbCAhPT0gJ3VuZGVmaW5lZCcpID8gKChzY29wZS50by5sYWJlbCAhPT0gJycpID8gc2NvcGUudG8ubGFiZWwgKyAnIGlzIHJlcXVpcmVkJyA6IGRlZmF1bHRSZXR1cm5Nc2cpIDogZGVmYXVsdFJldHVybk1zZztcbiAgICAgICAgcmV0dXJuIHJldHVybk1zZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yYWRpby9jb25maWcvc3RlcHdheS5yYWRpby5jb25maWcuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 82 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.editRadioControlComponent = exports.EDIT_RADIO_CONTROL_COMPONENT = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _stepwayEditRadioTemplate = __webpack_require__(83);\n\nvar _stepwayEditRadioTemplate2 = _interopRequireDefault(_stepwayEditRadioTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_RADIO_CONTROL_COMPONENT = exports.EDIT_RADIO_CONTROL_COMPONENT = 'editRadioControl';\n\nvar editRadioControlComponent = exports.editRadioControlComponent = {\n template: _stepwayEditRadioTemplate2.default,\n bindings: {\n nyaSelect: '=',\n radioRowCollection: '=',\n newOptionRadio: '=',\n addNewOptionRadio: '&',\n upThisRadioRow: '&',\n downThisRadioRow: '&',\n removeRadioRow: '&'\n },\n controller: function () {\n function editRadioControlController() {\n //\n\n _classCallCheck(this, editRadioControlController);\n }\n\n _createClass(editRadioControlController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return editRadioControlController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yYWRpby9lZGl0UmFkaW8vc3RlcHdheS5lZGl0UmFkaW8uY29tcG9uZW50LmpzPzQyODMiXSwibmFtZXMiOlsiRURJVF9SQURJT19DT05UUk9MX0NPTVBPTkVOVCIsImVkaXRSYWRpb0NvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0IiwicmFkaW9Sb3dDb2xsZWN0aW9uIiwibmV3T3B0aW9uUmFkaW8iLCJhZGROZXdPcHRpb25SYWRpbyIsInVwVGhpc1JhZGlvUm93IiwiZG93blRoaXNSYWRpb1JvdyIsInJlbW92ZVJhZGlvUm93IiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRU8sSUFBTUEsc0VBQStCLGtCQUFyQzs7QUFFQSxJQUFNQyxnRUFBNEI7QUFDdkNDLDhDQUR1QztBQUV2Q0MsWUFBZ0I7QUFDZEMsZUFBb0IsR0FETjtBQUVkQyx3QkFBb0IsR0FGTjtBQUdkQyxvQkFBb0IsR0FITjtBQUlkQyx1QkFBb0IsR0FKTjtBQUtkQyxvQkFBb0IsR0FMTjtBQU1kQyxzQkFBb0IsR0FOTjtBQU9kQyxvQkFBb0I7QUFQTixHQUZ1QjtBQVd2Q0M7QUFFRSwwQ0FBYztBQUNaOztBQURZO0FBRWI7O0FBSkg7QUFBQTtBQUFBLDBCQU11QjtBQUNuQixlQUFPLEVBQVA7QUFDRDtBQVJIOztBQUFBO0FBQUE7QUFYdUMsQ0FBbEMiLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZWRpdFJhZGlvQ29udHJvbFRlbXBsYXRlIGZyb20gJy4vc3RlcHdheS5lZGl0UmFkaW8udGVtcGxhdGUuaHRtbCc7XG5cbmV4cG9ydCBjb25zdCBFRElUX1JBRElPX0NPTlRST0xfQ09NUE9ORU5UID0gJ2VkaXRSYWRpb0NvbnRyb2wnO1xuXG5leHBvcnQgY29uc3QgZWRpdFJhZGlvQ29udHJvbENvbXBvbmVudCA9IHtcbiAgdGVtcGxhdGUgICAgICA6IGVkaXRSYWRpb0NvbnRyb2xUZW1wbGF0ZSxcbiAgYmluZGluZ3MgICAgICA6IHtcbiAgICBueWFTZWxlY3Q6ICAgICAgICAgICc9JyxcbiAgICByYWRpb1Jvd0NvbGxlY3Rpb246ICc9JyxcbiAgICBuZXdPcHRpb25SYWRpbzogICAgICc9JyxcbiAgICBhZGROZXdPcHRpb25SYWRpbzogICcmJyxcbiAgICB1cFRoaXNSYWRpb1JvdzogICAgICcmJyxcbiAgICBkb3duVGhpc1JhZGlvUm93OiAgICcmJyxcbiAgICByZW1vdmVSYWRpb1JvdzogICAgICcmJ1xuICB9LFxuICBjb250cm9sbGVyICAgIDpcbiAgY2xhc3MgZWRpdFJhZGlvQ29udHJvbENvbnRyb2xsZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgLy9cbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0ICRpbmplY3QoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvcmFkaW8vZWRpdFJhZGlvL3N0ZXB3YXkuZWRpdFJhZGlvLmNvbXBvbmVudC5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 83 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n \\n {{'ADD_NEW_RADIO' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n \\n {{'EDIT_REMOVE_RADIO' | translate}} :\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yYWRpby9lZGl0UmFkaW8vc3RlcHdheS5lZGl0UmFkaW8udGVtcGxhdGUuaHRtbD82MWE2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVPQUF1TyxjQUFjLDJCQUEyQiw4UUFBOFEsMkNBQTJDLHllQUF5ZSwwQkFBMEIsNkZBQTZGLGlCQUFpQixvR0FBb0csaURBQWlELDhVQUE4VSxjQUFjLCtCQUErQiw4UEFBOFAsNkJBQTZCLDJWQUEyVixtQ0FBbUMsbVJBQW1SLG1CQUFtQiwyUkFBMlIsaUNBQWlDLDBZQUEwWSxnQ0FBZ0MsaVVBQWlVLHFCQUFxQix5RkFBeUYsc0JBQXNCLDBXQUEwVywrQkFBK0IsaWRBQWlkLFFBQVEsK0ZBQStGLGlCQUFpQiwwUUFBMFEsY0FBYyx3UEFBd1AsY0FBYyx1UEFBdVAsY0FBYyxpakJBQWlqQiwwQkFBMEIsa1NBQWtTLG1DQUFtQyxnVEFBZ1Qsd0JBQXdCLG1JQUFtSSxpZkFBaWYsMkJBQTJCLDhTQUE4UyxtQ0FBbUMiLCJmaWxlIjoiODMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1leWVcXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIHt7J1BSRVZJRVdfVEFCJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvaDU+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8aHIvPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgPGxhYmVsXFxuICAgICAgICAgICAgZm9yPVxcXCJiYXNpY1NlbGVjdFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiY29udHJvbC1sYWJlbCB0ZXh0Q29udHJvbExhYmVsXFxcIj5cXG4gICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsfX1cXG4gICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgbmctaWY9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHRDb250cm9sTGFiZWxcXFwiPlxcbiAgICAgICAgICAgICAgKlxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgICA8ZGl2XFxuICAgICAgICAgICAgICBjbGFzcz1cXFwicmFkaW9cXFwiXFxuICAgICAgICAgICAgICBuZy1yZXBlYXQ9XFxcInJhZGlvUm93IGluICRjdHJsLnJhZGlvUm93Q29sbGVjdGlvbi5yb3dzXFxcIj5cXG4gICAgICAgICAgICAgIDxsYWJlbD5cXG4gICAgICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICAgICAgdHlwZT1cXFwicmFkaW9cXFwiXFxuICAgICAgICAgICAgICAgICAgbmFtZT1cXFwib3B0aW9uc1JhZGlvc1xcXCJcXG4gICAgICAgICAgICAgICAgICBpZD1cXFwie3snb3B0aW9uc1JhZGlvLScgKyAkaW5kZXh9fVxcXCJcXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cXFwiJGluZGV4XFxcIlxcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9XFxcIlxcXCI+XFxuICAgICAgICAgICAgICAgICAge3tyYWRpb1Jvdy5vcHRpb259fVxcbiAgICAgICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwiaGVscC1ibG9ja1xcXCI+XFxuICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9ufX1cXG4gICAgICAgICAgICA8L3A+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1XFxuICAgICAgICAgIGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGhyLz5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbGctMyBjb2wtbWQtM1xcXCI+XFxuICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgZm9yPVxcXCJyYWRpb1Jvd0NvbGxlY3Rpb25cXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCIgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAge3snQUREX05FV19SQURJTycgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2PlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1zbS05IGNvbC14cy05IGNvbC1tZC05IGNvbC1sZy05XFxcIj5cXG4gICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgICAgaWQ9XFxcImlucHV0QWRkTmV3UmFkaW9PcHRpb25cXFwiXFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwie3snQUREX1JBRElPX1BMQUNFSE9MRCcgfCB0cmFuc2xhdGV9fVxcXCJcXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVxcXCIkY3RybC5uZXdPcHRpb25SYWRpby5zYWlzaWVcXFwiPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLXNtLTMgY29sLXhzLTMgY29sLW1kLTMgY29sLWxnLTNcXFwiPlxcbiAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnlcXFwiXFxuICAgICAgICAgICAgICBuZy1jbGljaz1cXFwiJGN0cmwuYWRkTmV3T3B0aW9uUmFkaW8oKVxcXCI+XFxuICAgICAgICAgICAgICB7eydBREQnIHwgdHJhbnNsYXRlfX1cXG4gICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLWxnLTMgY29sLW1kLTNcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwicmFkaW9Sb3dDb2xsZWN0aW9uXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFxcXCI+XFxuICAgICAgICAgIHt7J0VESVRfUkVNT1ZFX1JBRElPJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvbGFiZWw+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcy1cXFwiY29sLWxnLTEyIGNvbC1tZC0xMiBjb2wtc20tMTIgY29sLXhzLTEyXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb250YWluZXJcXFwiPlxcbiAgICAgICAgICAgICAgPGRpdiBuZy1zaG93PVxcXCIkY3RybC5yYWRpb1Jvd0NvbGxlY3Rpb24ucm93cy5sZW5ndGggPT09IDBcXFwiPlxcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XFxcInRleHQtY2VudGVyIGdyZXlUZXh0XFxcIj5cXG4gICAgICAgICAgICAgICAgICA8ZW0+XFxuICAgICAgICAgICAgICAgICAgICAtIHt7J05PX1JBRElPX0FERF9ORVcnIHwgdHJhbnNsYXRlfX0gLVxcbiAgICAgICAgICAgICAgICAgIDwvZW0+XFxuICAgICAgICAgICAgICAgIDwvaDU+XFxuICAgICAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgICAgIDx0YWJsZVxcbiAgICAgICAgICAgICAgICBuZy1pZj1cXFwiJGN0cmwucmFkaW9Sb3dDb2xsZWN0aW9uLnJvd3MubGVuZ3RoID4gMFxcXCJcXG4gICAgICAgICAgICAgICAgY2xhc3M9XFxcInRhYmxlIHRhYmxlLXN0cmlwZWRcXFwiPlxcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XFxuICAgICAgICAgICAgICAgIDx0cj5cXG4gICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XFxcIjIwXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIHt7J09SREVSJyB8IHRyYW5zbGF0ZX19XFxuICAgICAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgICAgICA8dGggc3QtcmF0aW89XFxcIjU1XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIHt7J09QVElPTicgfCB0cmFuc2xhdGV9fVxcbiAgICAgICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVxcXCIyNVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgICAgICAgPHRyPlxcbiAgICAgICAgICAgICAgICAgIDx0aCBzdC1yYXRpbz1cXFwiMjBcXFwiPlxcbiAgICAgICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVxcXCI1NVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgICAgICAgICAgbmctbW9kZWw9XFxcIiRjdHJsLnJhZGlvRmlsdGVyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwie3snU0VBUkNIXzRfT1BUSU9OJyB8IHRyYW5zbGF0ZX19XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cXFwiaW5wdXQtc20gZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVxcXCJzZWFyY2hcXFwiXFxuICAgICAgICAgICAgICAgICAgICAvPlxcbiAgICAgICAgICAgICAgICAgIDwvdGg+XFxuICAgICAgICAgICAgICAgICAgPHRoIHN0LXJhdGlvPVxcXCIyNVxcXCI+XFxuICAgICAgICAgICAgICAgICAgPC90aD5cXG4gICAgICAgICAgICAgICAgPC90cj5cXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cXG4gICAgICAgICAgICAgICAgPHRib2R5PlxcbiAgICAgICAgICAgICAgICAgIDx0ciBuZy1yZXBlYXQ9XFxcInJhZGlvUm93IGluICRjdHJsLnJhZGlvUm93Q29sbGVjdGlvbi5yb3dzIHwgZmlsdGVyOnJhZGlvRmlsdGVyIGFzIHJhZGlvUm93XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBzdC1yYXRpbz1cXFwiMjBcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICB7eyRpbmRleH19XFxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgICAgICAgPHRkIHN0LXJhdGlvPVxcXCI1NVxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgIHt7cmFkaW9Sb3cub3B0aW9ufX1cXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XFxuICAgICAgICAgICAgICAgICAgICA8dGQgc3QtcmF0aW89XFxcIjI1XFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwicHVsbC1yaWdodFxcXCI+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImJ0biBidG4tcHJpbWFyeVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nLWNsaWNrPVxcXCIkY3RybC51cFRoaXNSYWRpb1Jvdyh7aW5kZXg6ICRpbmRleH0pXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1hcnJvdy11cFxcXCI+PC9pPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVxcXCJidG4gYnRuLXByaW1hcnlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZy1jbGljaz1cXFwiJGN0cmwuZG93blRoaXNSYWRpb1Jvdyh7aW5kZXg6ICRpbmRleH0pXFxcIj5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1hcnJvdy1kb3duXFxcIj48L2k+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XFxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XFxcImJ0biBidG4tZGFuZ2VyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmctY2xpY2s9XFxcIiRjdHJsLnJlbW92ZVJhZGlvUm93KHtpbmRleDogJGluZGV4fSlcXFwiPlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLXRyYXNoLW9cXFwiPjwvaT5cXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxcbiAgICAgICAgICAgICAgICAgIDwvdHI+XFxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XFxuICAgICAgICAgICAgICA8L3RhYmxlPlxcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxoci8+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dExhYmVsVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPnt7J0xBQkVMX1RFWFQnIHwgdHJhbnNsYXRlfX0gOlxcbiAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbGctOVxcXCI+XFxuICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVxcXCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlMYWJlbFxcXCJcXG4gICAgICAgICAgICAgIGlkPVxcXCJpbnB1dFRleHRMYWJlbFVwZGF0ZVxcXCJcXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJ7eydBRERfRURJVF9MQUJFTF9IRVJFJyB8IHRyYW5zbGF0ZX19XFxcIj5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICAgICAgICAgIDxsYWJlbFxcbiAgICAgICAgICAgIGZvcj1cXFwiaW5wdXRUZXh0UmVxdWlyZWRVcGRhdGVcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFxcXCI+e3snUkVRVUlSRUQnIHwgdHJhbnNsYXRlfX0gOlxcbiAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbGctOVxcXCI+XFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY2hlY2tib3hDc3NDb3JyZWN0aW9uXFxcIj5cXG4gICAgICAgICAgICAgICZuYnNwO1xcbiAgICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgICBuZy1tb2RlbD1cXFwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UmVxdWlyZWRcXFwiXFxuICAgICAgICAgICAgICBpZD1cXFwiaW5wdXRUZXh0UmVxdWlyZWRVcGRhdGVcXFwiPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgPGxhYmVsXFxuICAgICAgICAgICAgZm9yPVxcXCJpbnB1dFRleHREZXNjcmlwdGlvblVwZGF0ZVxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj57eydERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1sZy05XFxcIj5cXG4gICAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgICAgbmctbW9kZWw9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9uXFxcIlxcbiAgICAgICAgICAgICAgaWQ9XFxcImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcInt7J0FEREVESVRfREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX1cXFwiPlxcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gIDwvZGl2PlxcbjwvZGl2PlxcblwiXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yYWRpby9lZGl0UmFkaW8vc3RlcHdheS5lZGl0UmFkaW8udGVtcGxhdGUuaHRtbFxuLy8gbW9kdWxlIGlkID0gODNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 84 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayEditRadio = __webpack_require__(82);\n\nvar editRadioControlModuleName = 'stepway.editRadioControl.module';\n\nexports.default = angular.module(editRadioControlModuleName, []).component(_stepwayEditRadio.EDIT_RADIO_CONTROL_COMPONENT, _stepwayEditRadio.editRadioControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yYWRpby9lZGl0UmFkaW8vc3RlcHdheS5lZGl0UmFkaW8ubW9kdWxlLmpzPzM5NGQiXSwibmFtZXMiOlsiZWRpdFJhZGlvQ29udHJvbE1vZHVsZU5hbWUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFLQSxJQUFNQSw2QkFBNkIsaUNBQW5DOztrQkFFZUMsUUFDRUMsTUFERixDQUNTRiwwQkFEVCxFQUNxQyxFQURyQyxFQUVFRyxTQUZGLDZGIiwiZmlsZSI6Ijg0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZWRpdFJhZGlvQ29udHJvbENvbXBvbmVudCxcbiAgRURJVF9SQURJT19DT05UUk9MX0NPTVBPTkVOVFxufSBmcm9tICcuL3N0ZXB3YXkuZWRpdFJhZGlvLmNvbXBvbmVudCc7XG5cbmNvbnN0IGVkaXRSYWRpb0NvbnRyb2xNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdFJhZGlvQ29udHJvbC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShlZGl0UmFkaW9Db250cm9sTW9kdWxlTmFtZSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChFRElUX1JBRElPX0NPTlRST0xfQ09NUE9ORU5ULCBlZGl0UmFkaW9Db250cm9sQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3JhZGlvL2VkaXRSYWRpby9zdGVwd2F5LmVkaXRSYWRpby5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 85 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar RichTextEditorConfig = exports.RichTextEditorConfig = {\n id: 'RichTextEditor',\n name: 'RichTextEditor',\n subtitle: 'RichTextEditor',\n group: 'Textarea',\n formlyType: 'richEditor',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> '
is required '\n //-> or if not exists or empty just 'this field is required'\n var defaultReturnMsg = 'this RichTextEditor field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yaWNoVGV4dEVkaXRvci9jb25maWcvc3RlcHdheS5yaWNoVGV4dEVkaXRvci5jb25maWcuanM/NTU1YSJdLCJuYW1lcyI6WyJSaWNoVGV4dEVkaXRvckNvbmZpZyIsImlkIiwibmFtZSIsInN1YnRpdGxlIiwiZ3JvdXAiLCJmb3JtbHlUeXBlIiwiZm9ybWx5U3VidHlwZSIsImZvcm1seUxhYmVsIiwiZm9ybWx5UmVxdWlyZWQiLCJmb3JtbHlEZXNjcmlwdGlvbiIsImZvcm1seU9wdGlvbnMiLCJmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyIsImZvcm1seVZhbGlkYXRvcnMiLCJmb3JtbHlWYWxpZGF0aW9uIiwibWVzc2FnZXMiLCJyZXF1aXJlZCIsInZpZXdWYWx1ZSIsIm1vZGVsVmFsdWUiLCJzY29wZSIsImRlZmF1bHRSZXR1cm5Nc2ciLCJyZXR1cm5Nc2ciLCJ0byIsImxhYmVsIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFPLElBQU1BLHNEQUE2QjtBQUN4Q0MsTUFBSSxnQkFEb0M7QUFFeENDLFFBQU0sZ0JBRmtDO0FBR3hDQyxZQUFVLGdCQUg4QjtBQUl4Q0MsU0FBTyxVQUppQztBQUt4Q0MsY0FBWSxZQUw0QjtBQU14Q0MsaUJBQWUsRUFOeUI7QUFPeENDLGVBQWEsRUFQMkI7QUFReENDLGtCQUFnQixLQVJ3QjtBQVN4Q0MscUJBQW1CLEVBVHFCO0FBVXhDQyxpQkFBZSxFQVZ5QjtBQVd4Q0MsOEJBQTRCLEVBWFk7QUFZeENDLG9CQUFrQixFQVpzQjtBQWF4Q0Msb0JBQWtCO0FBQ2hCQyxjQUFVO0FBQ1JDLGdCQUFVLGtCQUFTQyxTQUFULEVBQW9CQyxVQUFwQixFQUFnQ0MsS0FBaEMsRUFBdUM7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsWUFBTUMsbUJBQW9CLHVDQUExQjtBQUNBLFlBQU1DLFlBQXFCLE9BQU9GLE1BQU1HLEVBQU4sQ0FBU0MsS0FBaEIsS0FBMEIsV0FBM0IsR0FBNENKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxLQUFtQixFQUFwQixHQUEwQkosTUFBTUcsRUFBTixDQUFTQyxLQUFULEdBQWlCLGNBQTNDLEdBQTRESCxnQkFBdkcsR0FBMkhBLGdCQUFySjtBQUNBLGVBQU9DLFNBQVA7QUFDRDtBQVJPO0FBRE07QUFic0IsQ0FBbkMiLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUmljaFRleHRFZGl0b3JDb25maWcgPSAgICAgICB7XG4gIGlkOiAnUmljaFRleHRFZGl0b3InLFxuICBuYW1lOiAnUmljaFRleHRFZGl0b3InLFxuICBzdWJ0aXRsZTogJ1JpY2hUZXh0RWRpdG9yJyxcbiAgZ3JvdXA6ICdUZXh0YXJlYScsXG4gIGZvcm1seVR5cGU6ICdyaWNoRWRpdG9yJyxcbiAgZm9ybWx5U3VidHlwZTogJycsXG4gIGZvcm1seUxhYmVsOiAnJyxcbiAgZm9ybWx5UmVxdWlyZWQ6IGZhbHNlLFxuICBmb3JtbHlEZXNjcmlwdGlvbjogJycsXG4gIGZvcm1seU9wdGlvbnM6IFtdLFxuICBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllczoge30sXG4gIGZvcm1seVZhbGlkYXRvcnM6IHt9LFxuICBmb3JtbHlWYWxpZGF0aW9uOiB7XG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHJlcXVpcmVkOiBmdW5jdGlvbih2aWV3VmFsdWUsIG1vZGVsVmFsdWUsIHNjb3BlKSB7XG4gICAgICAgIC8vcmV0dXJuIGEgcmVxdWlyZWQgdmFsaWRhdGlvbiBtZXNzYWdlIDpcbiAgICAgICAgLy8tPiAnPGxhYmVsIGFzIG5hbWU+IGlzIHJlcXVpcmVkICdcbiAgICAgICAgLy8tPiBvciBpZiBub3QgZXhpc3RzIG9yIGVtcHR5IGp1c3QgJ3RoaXMgZmllbGQgaXMgcmVxdWlyZWQnXG4gICAgICAgIGNvbnN0IGRlZmF1bHRSZXR1cm5Nc2cgID0gJ3RoaXMgUmljaFRleHRFZGl0b3IgZmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgICBjb25zdCByZXR1cm5Nc2cgICAgICAgICA9ICh0eXBlb2Ygc2NvcGUudG8ubGFiZWwgIT09ICd1bmRlZmluZWQnKSA/ICgoc2NvcGUudG8ubGFiZWwgIT09ICcnKSA/IHNjb3BlLnRvLmxhYmVsICsgJyBpcyByZXF1aXJlZCcgOiBkZWZhdWx0UmV0dXJuTXNnKSA6IGRlZmF1bHRSZXR1cm5Nc2c7XG4gICAgICAgIHJldHVybiByZXR1cm5Nc2c7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvcmljaFRleHRFZGl0b3IvY29uZmlnL3N0ZXB3YXkucmljaFRleHRFZGl0b3IuY29uZmlnLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 86 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.editRichTextEditorControlComponent = exports.EDIT_RICH_TEXT_EDITOR_COMPONENT = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _stepwayEditRichTextEditorTemplate = __webpack_require__(87);\n\nvar _stepwayEditRichTextEditorTemplate2 = _interopRequireDefault(_stepwayEditRichTextEditorTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_RICH_TEXT_EDITOR_COMPONENT = exports.EDIT_RICH_TEXT_EDITOR_COMPONENT = 'editRichTextEditorControl';\n\nvar editRichTextEditorControlComponent = exports.editRichTextEditorControlComponent = {\n template: _stepwayEditRichTextEditorTemplate2.default,\n bindings: {\n nyaSelect: '='\n },\n controller: function () {\n function editRichTextEditorControlController() {\n //\n\n _classCallCheck(this, editRichTextEditorControlController);\n }\n\n _createClass(editRichTextEditorControlController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return editRichTextEditorControlController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yaWNoVGV4dEVkaXRvci9lZGl0UmljaFRleHRFZGl0b3Ivc3RlcHdheS5lZGl0UmljaFRleHRFZGl0b3IuY29tcG9uZW50LmpzP2Q3ZTIiXSwibmFtZXMiOlsiRURJVF9SSUNIX1RFWFRfRURJVE9SX0NPTVBPTkVOVCIsImVkaXRSaWNoVGV4dEVkaXRvckNvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0IiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRU8sSUFBTUEsNEVBQWtDLDJCQUF4Qzs7QUFFQSxJQUFNQyxrRkFBcUM7QUFDaERDLHVEQURnRDtBQUVoREMsWUFBZ0I7QUFDZEMsZUFBVztBQURHLEdBRmdDO0FBS2hEQztBQUVFLG1EQUFjO0FBQ1o7O0FBRFk7QUFFYjs7QUFKSDtBQUFBO0FBQUEsMEJBTXVCO0FBQ25CLGVBQU8sRUFBUDtBQUNEO0FBUkg7O0FBQUE7QUFBQTtBQUxnRCxDQUEzQyIsImZpbGUiOiI4Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlZGl0UmljaFRleHRFZGl0b3JDb250cm9sVGVtcGxhdGUgZnJvbSAnLi9zdGVwd2F5LmVkaXRSaWNoVGV4dEVkaXRvci50ZW1wbGF0ZS5odG1sJztcblxuZXhwb3J0IGNvbnN0IEVESVRfUklDSF9URVhUX0VESVRPUl9DT01QT05FTlQgPSAnZWRpdFJpY2hUZXh0RWRpdG9yQ29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0UmljaFRleHRFZGl0b3JDb250cm9sQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZSAgICAgIDogZWRpdFJpY2hUZXh0RWRpdG9yQ29udHJvbFRlbXBsYXRlLFxuICBiaW5kaW5ncyAgICAgIDoge1xuICAgIG55YVNlbGVjdDogJz0nXG4gIH0sXG4gIGNvbnRyb2xsZXIgICAgOlxuICBjbGFzcyBlZGl0UmljaFRleHRFZGl0b3JDb250cm9sQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAvL1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgJGluamVjdCgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yaWNoVGV4dEVkaXRvci9lZGl0UmljaFRleHRFZGl0b3Ivc3RlcHdheS5lZGl0UmljaFRleHRFZGl0b3IuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 87 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n\\n\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yaWNoVGV4dEVkaXRvci9lZGl0UmljaFRleHRFZGl0b3Ivc3RlcHdheS5lZGl0UmljaFRleHRFZGl0b3IudGVtcGxhdGUuaHRtbD9hM2Y2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVPQUF1TyxjQUFjLDJCQUEyQixpUkFBaVIsMkNBQTJDLGdZQUFnWSxpREFBaUQsbVVBQW1VLGNBQWMsK0JBQStCLHljQUF5YyxpZEFBaWQsMkJBQTJCLDhSQUE4UixtQ0FBbUMiLCJmaWxlIjoiODcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1leWVcXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIHt7J1BSRVZJRVdfVEFCJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvaDU+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8aHIvPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgPGxhYmVsXFxuICAgICAgICAgICAgZm9yPVxcXCJSaWNoVGV4dEVkaXRvclxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiY29udHJvbC1sYWJlbCB0ZXh0Q29udHJvbExhYmVsXFxcIj5cXG4gICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsfX1cXG4gICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgbmctaWY9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHRDb250cm9sTGFiZWxcXFwiPlxcbiAgICAgICAgICAgICAgKlxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgICA8dGV4dC1hbmd1bGFyXFxuICAgICAgICAgICAgICBuZy1tb2RlbD1cXFwiJGN0cmwubW9kZWxbb3B0aW9ucy5rZXldXFxcIj5cXG4gICAgICAgICAgICA8L3RleHQtYW5ndWxhcj5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwiaGVscC1ibG9ja1xcXCI+XFxuICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9ufX1cXG4gICAgICAgICAgICA8L3A+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGhyLz5cXG48IS0tIHJlcXVpcmVkIGNhbid0IGJlIGFwcGxpZWQgdG8gcmljaCB0ZXh0IGVkaXRvciAodGV4dEFuZ3VsYXIpIHJpZ2h0IG5vdyAtLT5cXG48IS0tPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5SZXF1aXJlZCA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLWxnLTlcXFwiPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjaGVja2JveENzc0NvcnJlY3Rpb25cXFwiPlxcbiAgICAgICAgICAgICZuYnNwO1xcbiAgICAgICAgICA8L2Rpdj5cXG4gICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgbmctbW9kZWw9XFxcIm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXFxcIiBpZD1cXFwiaW5wdXRUZXh0UmVxdWlyZWRVcGRhdGVcXFwiPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj4tLT5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAge3snREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX0gOlxcbiAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1sZy05XFxcIj5cXG4gICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiZm9ybS1jb250cm9sXFxcIlxcbiAgICAgICAgICAgIG5nLW1vZGVsPVxcXCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlEZXNjcmlwdGlvblxcXCJcXG4gICAgICAgICAgICBpZD1cXFwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcXFwiXFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcInt7J0FEREVESVRfREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlfX1cXFwiPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3JpY2hUZXh0RWRpdG9yL2VkaXRSaWNoVGV4dEVkaXRvci9zdGVwd2F5LmVkaXRSaWNoVGV4dEVkaXRvci50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSA4N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 88 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayEditRichTextEditor = __webpack_require__(86);\n\nvar editRichTextEditorModuleName = 'stepway.editRichTextEditor.module';\n\nexports.default = angular.module(editRichTextEditorModuleName, []).component(_stepwayEditRichTextEditor.EDIT_RICH_TEXT_EDITOR_COMPONENT, _stepwayEditRichTextEditor.editRichTextEditorControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9yaWNoVGV4dEVkaXRvci9lZGl0UmljaFRleHRFZGl0b3Ivc3RlcHdheS5lZGl0UmljaFRleHRFZGl0b3IubW9kdWxlLmpzPzgwZDEiXSwibmFtZXMiOlsiZWRpdFJpY2hUZXh0RWRpdG9yTW9kdWxlTmFtZSIsImFuZ3VsYXIiLCJtb2R1bGUiLCJjb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUtBLElBQU1BLCtCQUErQixtQ0FBckM7O2tCQUVlQyxRQUNFQyxNQURGLENBQ1NGLDRCQURULEVBQ3VDLEVBRHZDLEVBRUVHLFNBRkYsMkgiLCJmaWxlIjoiODguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBlZGl0UmljaFRleHRFZGl0b3JDb250cm9sQ29tcG9uZW50LFxuICBFRElUX1JJQ0hfVEVYVF9FRElUT1JfQ09NUE9ORU5UXG59IGZyb20gJy4vc3RlcHdheS5lZGl0UmljaFRleHRFZGl0b3IuY29tcG9uZW50JztcblxuY29uc3QgZWRpdFJpY2hUZXh0RWRpdG9yTW9kdWxlTmFtZSA9ICdzdGVwd2F5LmVkaXRSaWNoVGV4dEVkaXRvci5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShlZGl0UmljaFRleHRFZGl0b3JNb2R1bGVOYW1lLCBbXSlcbiAgICAgICAgICAgICAgICAuY29tcG9uZW50KEVESVRfUklDSF9URVhUX0VESVRPUl9DT01QT05FTlQsIGVkaXRSaWNoVGV4dEVkaXRvckNvbnRyb2xDb21wb25lbnQpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L2NvbXBvbmVudHMvY29udHJvbHMvcmljaFRleHRFZGl0b3IvZWRpdFJpY2hUZXh0RWRpdG9yL3N0ZXB3YXkuZWRpdFJpY2hUZXh0RWRpdG9yLm1vZHVsZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 89 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar SubTitleConfig = exports.SubTitleConfig = {\n id: 'Subtitle',\n name: 'Subtitle',\n subtitle: 'no control',\n group: 'Decoration',\n formlyType: 'subTitle',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {}\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9zdWJUaXRsZS9jb25maWcvc3RlcHdheS5zdWJUaXRsZS5jb25maWcuanM/NWZjYiJdLCJuYW1lcyI6WyJTdWJUaXRsZUNvbmZpZyIsImlkIiwibmFtZSIsInN1YnRpdGxlIiwiZ3JvdXAiLCJmb3JtbHlUeXBlIiwiZm9ybWx5U3VidHlwZSIsImZvcm1seUxhYmVsIiwiZm9ybWx5UmVxdWlyZWQiLCJmb3JtbHlEZXNjcmlwdGlvbiIsImZvcm1seU9wdGlvbnMiLCJmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyIsImZvcm1seVZhbGlkYXRvcnMiLCJmb3JtbHlWYWxpZGF0aW9uIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFPLElBQU1BLDBDQUF1QjtBQUNsQ0MsTUFBSSxVQUQ4QjtBQUVsQ0MsUUFBTSxVQUY0QjtBQUdsQ0MsWUFBVSxZQUh3QjtBQUlsQ0MsU0FBTyxZQUoyQjtBQUtsQ0MsY0FBWSxVQUxzQjtBQU1sQ0MsaUJBQWUsRUFObUI7QUFPbENDLGVBQWEsRUFQcUI7QUFRbENDLGtCQUFnQixLQVJrQjtBQVNsQ0MscUJBQW1CLEVBVGU7QUFVbENDLGlCQUFlLEVBVm1CO0FBV2xDQyw4QkFBNEIsRUFYTTtBQVlsQ0Msb0JBQWtCLEVBWmdCO0FBYWxDQyxvQkFBa0I7QUFiZ0IsQ0FBN0IiLCJmaWxlIjoiODkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU3ViVGl0bGVDb25maWcgPSAgICAgICB7XG4gIGlkOiAnU3VidGl0bGUnLFxuICBuYW1lOiAnU3VidGl0bGUnLFxuICBzdWJ0aXRsZTogJ25vIGNvbnRyb2wnLFxuICBncm91cDogJ0RlY29yYXRpb24nLFxuICBmb3JtbHlUeXBlOiAnc3ViVGl0bGUnLFxuICBmb3JtbHlTdWJ0eXBlOiAnJyxcbiAgZm9ybWx5TGFiZWw6ICcnLFxuICBmb3JtbHlSZXF1aXJlZDogZmFsc2UsXG4gIGZvcm1seURlc2NyaXB0aW9uOiAnJyxcbiAgZm9ybWx5T3B0aW9uczogW10gLFxuICBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllczoge30sXG4gIGZvcm1seVZhbGlkYXRvcnM6IHt9LFxuICBmb3JtbHlWYWxpZGF0aW9uOiB7fVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3N1YlRpdGxlL2NvbmZpZy9zdGVwd2F5LnN1YlRpdGxlLmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 90 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.editSubTitleControlComponent = exports.EDIT_SUBTITLE_CONTROL_COMPONENT = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _stepwayEditSubTitleTemplate = __webpack_require__(91);\n\nvar _stepwayEditSubTitleTemplate2 = _interopRequireDefault(_stepwayEditSubTitleTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_SUBTITLE_CONTROL_COMPONENT = exports.EDIT_SUBTITLE_CONTROL_COMPONENT = 'editSubTitleControl';\n\nvar editSubTitleControlComponent = exports.editSubTitleControlComponent = {\n template: _stepwayEditSubTitleTemplate2.default,\n bindings: {\n nyaSelect: '='\n },\n controller: function () {\n function editSubTitleControlController() {\n //\n\n _classCallCheck(this, editSubTitleControlController);\n }\n\n _createClass(editSubTitleControlController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return editSubTitleControlController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9zdWJUaXRsZS9lZGl0U3ViVGl0bGUvc3RlcHdheS5lZGl0U3ViVGl0bGUuY29tcG9uZW50LmpzPzc4NzgiXSwibmFtZXMiOlsiRURJVF9TVUJUSVRMRV9DT05UUk9MX0NPTVBPTkVOVCIsImVkaXRTdWJUaXRsZUNvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0IiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRU8sSUFBTUEsNEVBQWtDLHFCQUF4Qzs7QUFFQSxJQUFNQyxzRUFBK0I7QUFDMUNDLGlEQUQwQztBQUUxQ0MsWUFBZ0I7QUFDZEMsZUFBVztBQURHLEdBRjBCO0FBSzFDQztBQUVFLDZDQUFjO0FBQ1o7O0FBRFk7QUFFYjs7QUFKSDtBQUFBO0FBQUEsMEJBTXVCO0FBQ25CLGVBQU8sRUFBUDtBQUNEO0FBUkg7O0FBQUE7QUFBQTtBQUwwQyxDQUFyQyIsImZpbGUiOiI5MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlZGl0U3ViVGl0bGVDb250cm9sVGVtcGxhdGUgZnJvbSAnLi9zdGVwd2F5LmVkaXRTdWJUaXRsZS50ZW1wbGF0ZS5odG1sJztcblxuZXhwb3J0IGNvbnN0IEVESVRfU1VCVElUTEVfQ09OVFJPTF9DT01QT05FTlQgPSAnZWRpdFN1YlRpdGxlQ29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0U3ViVGl0bGVDb250cm9sQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZSAgICAgIDogZWRpdFN1YlRpdGxlQ29udHJvbFRlbXBsYXRlLFxuICBiaW5kaW5ncyAgICAgIDoge1xuICAgIG55YVNlbGVjdDogJz0nXG4gIH0sXG4gIGNvbnRyb2xsZXIgICAgOlxuICBjbGFzcyBlZGl0U3ViVGl0bGVDb250cm9sQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAvL1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgJGluamVjdCgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9zdWJUaXRsZS9lZGl0U3ViVGl0bGUvc3RlcHdheS5lZGl0U3ViVGl0bGUuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 91 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9zdWJUaXRsZS9lZGl0U3ViVGl0bGUvc3RlcHdheS5lZGl0U3ViVGl0bGUudGVtcGxhdGUuaHRtbD80OTVmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9RQUFvUSxrQkFBa0IsMkJBQTJCLGtRQUFrUSxpREFBaUQsb1hBQW9YLGNBQWMsK0JBQStCLG1UQUFtVCw2QkFBNkIsMlJBQTJSLG9DQUFvQyIsImZpbGUiOiI5MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCI8ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG4gIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIj5cXG4gICAgICAgICAgICA8aDVcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgICAgICA8aSBjbGFzcz1cXFwiZmEgZmEtZXllXFxcIj48L2k+XFxuICAgICAgICAgICAgICAmbmJzcDtcXG4gICAgICAgICAgICAgIHt7J1BSRVZJRVdfVEFCJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgICAgICA8L2g1PlxcbiAgICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8aHIvPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XFxcIlxcXCI+XFxuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cXFwidGV4dC1jZW50ZXJcXFwiPlxcbiAgICAgICAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UGxhY2Vob2xkZXJ9fVxcbiAgICAgICAgICAgICAgICA8L2g0PlxcbiAgICAgICAgICAgICAgICA8aHIvPlxcbiAgICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG48L2Rpdj5cXG48ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG4gIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8aDVcXG4gICAgICAgICAgY2xhc3M9XFxcImdyZXlUZXh0XFxcIj5cXG4gICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLXBlbmNpbC1zcXVhcmUtb1xcXCI+PC9pPlxcbiAgICAgICAgICAmbmJzcDtcXG4gICAgICAgICAge3snRURJVF9QUk9QRVJUSUVTJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvaDU+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8aHIvPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcImlucHV0U3ViVGl0bGVUZXh0VXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAge3snU1VCVElUTEVfVEVYVCcgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLWxnLTlcXFwiPlxcbiAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgbmctbW9kZWw9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVBsYWNlaG9sZGVyXFxcIlxcbiAgICAgICAgICAgIGlkPVxcXCJpbnB1dFN1YlRpdGxlVGV4dFVwZGF0ZVxcXCJcXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwie3snQUREX0VESVRfU1VCVElMX0hFUkUnIHwgdHJhbnNsYXRlfX1cXFwiPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3N1YlRpdGxlL2VkaXRTdWJUaXRsZS9zdGVwd2F5LmVkaXRTdWJUaXRsZS50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSA5MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 92 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayEditSubTitle = __webpack_require__(90);\n\nvar editSubTitleModuleName = 'stepway.editSubTitleControl.module';\n\nexports.default = angular.module(editSubTitleModuleName, []).component(_stepwayEditSubTitle.EDIT_SUBTITLE_CONTROL_COMPONENT, _stepwayEditSubTitle.editSubTitleControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy9zdWJUaXRsZS9lZGl0U3ViVGl0bGUvc3RlcHdheS5lZGl0U3ViVGl0bGUubW9kdWxlLmpzPzlmNTkiXSwibmFtZXMiOlsiZWRpdFN1YlRpdGxlTW9kdWxlTmFtZSIsImFuZ3VsYXIiLCJtb2R1bGUiLCJjb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUtBLElBQU1BLHlCQUF5QixvQ0FBL0I7O2tCQUVlQyxRQUNFQyxNQURGLENBQ1NGLHNCQURULEVBQ2lDLEVBRGpDLEVBRUVHLFNBRkYseUciLCJmaWxlIjoiOTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBlZGl0U3ViVGl0bGVDb250cm9sQ29tcG9uZW50LFxuICBFRElUX1NVQlRJVExFX0NPTlRST0xfQ09NUE9ORU5UXG59IGZyb20gJy4vc3RlcHdheS5lZGl0U3ViVGl0bGUuY29tcG9uZW50JztcblxuY29uc3QgZWRpdFN1YlRpdGxlTW9kdWxlTmFtZSA9ICdzdGVwd2F5LmVkaXRTdWJUaXRsZUNvbnRyb2wubW9kdWxlJztcblxuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuICAgICAgICAgICAgICAgIC5tb2R1bGUoZWRpdFN1YlRpdGxlTW9kdWxlTmFtZSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChFRElUX1NVQlRJVExFX0NPTlRST0xfQ09NUE9ORU5ULCBlZGl0U3ViVGl0bGVDb250cm9sQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3N1YlRpdGxlL2VkaXRTdWJUaXRsZS9zdGVwd2F5LmVkaXRTdWJUaXRsZS5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 93 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar TextAreaConfig = exports.TextAreaConfig = {\n id: 'Texarea',\n name: 'Textarea',\n subtitle: 'Textarea',\n group: 'Textarea',\n formlyType: 'textarea',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> ' is required '\n //-> or if not exists or empty just 'this field is required'\n var defaultReturnMsg = 'this Textarea field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0QXJlYS9jb25maWcvc3RlcHdheS50ZXh0QXJlYS5jb25maWcuanM/ODJmYyJdLCJuYW1lcyI6WyJUZXh0QXJlYUNvbmZpZyIsImlkIiwibmFtZSIsInN1YnRpdGxlIiwiZ3JvdXAiLCJmb3JtbHlUeXBlIiwiZm9ybWx5U3VidHlwZSIsImZvcm1seUxhYmVsIiwiZm9ybWx5UmVxdWlyZWQiLCJmb3JtbHlEZXNjcmlwdGlvbiIsImZvcm1seU9wdGlvbnMiLCJmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyIsImZvcm1seVZhbGlkYXRvcnMiLCJmb3JtbHlWYWxpZGF0aW9uIiwibWVzc2FnZXMiLCJyZXF1aXJlZCIsInZpZXdWYWx1ZSIsIm1vZGVsVmFsdWUiLCJzY29wZSIsImRlZmF1bHRSZXR1cm5Nc2ciLCJyZXR1cm5Nc2ciLCJ0byIsImxhYmVsIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFPLElBQU1BLDBDQUF1QjtBQUNsQ0MsTUFBSSxTQUQ4QjtBQUVsQ0MsUUFBTSxVQUY0QjtBQUdsQ0MsWUFBVSxVQUh3QjtBQUlsQ0MsU0FBTyxVQUoyQjtBQUtsQ0MsY0FBWSxVQUxzQjtBQU1sQ0MsaUJBQWUsRUFObUI7QUFPbENDLGVBQWEsRUFQcUI7QUFRbENDLGtCQUFnQixLQVJrQjtBQVNsQ0MscUJBQW1CLEVBVGU7QUFVbENDLGlCQUFlLEVBVm1CO0FBV2xDQyw4QkFBNEIsRUFYTTtBQVlsQ0Msb0JBQWtCLEVBWmdCO0FBYWxDQyxvQkFBa0I7QUFDaEJDLGNBQVU7QUFDUkMsZ0JBQVUsa0JBQVNDLFNBQVQsRUFBb0JDLFVBQXBCLEVBQWdDQyxLQUFoQyxFQUF1QztBQUMvQztBQUNBO0FBQ0E7QUFDQSxZQUFNQyxtQkFBbUIsaUNBQXpCO0FBQ0EsWUFBTUMsWUFBYSxPQUFPRixNQUFNRyxFQUFOLENBQVNDLEtBQWhCLEtBQTBCLFdBQTNCLEdBQTRDSixNQUFNRyxFQUFOLENBQVNDLEtBQVQsS0FBbUIsRUFBcEIsR0FBMEJKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxHQUFpQixjQUEzQyxHQUE0REgsZ0JBQXZHLEdBQTJIQSxnQkFBN0k7QUFDQSxlQUFPQyxTQUFQO0FBQ0Q7QUFSTztBQURNO0FBYmdCLENBQTdCIiwiZmlsZSI6IjkzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRleHRBcmVhQ29uZmlnID0gICAgICAge1xuICBpZDogJ1RleGFyZWEnLFxuICBuYW1lOiAnVGV4dGFyZWEnLFxuICBzdWJ0aXRsZTogJ1RleHRhcmVhJyxcbiAgZ3JvdXA6ICdUZXh0YXJlYScsXG4gIGZvcm1seVR5cGU6ICd0ZXh0YXJlYScsXG4gIGZvcm1seVN1YnR5cGU6ICcnLFxuICBmb3JtbHlMYWJlbDogJycsXG4gIGZvcm1seVJlcXVpcmVkOiBmYWxzZSxcbiAgZm9ybWx5RGVzY3JpcHRpb246ICcnLFxuICBmb3JtbHlPcHRpb25zOiBbXSxcbiAgZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXM6IHt9LFxuICBmb3JtbHlWYWxpZGF0b3JzOiB7fSxcbiAgZm9ybWx5VmFsaWRhdGlvbjoge1xuICAgIG1lc3NhZ2VzOiB7XG4gICAgICByZXF1aXJlZDogZnVuY3Rpb24odmlld1ZhbHVlLCBtb2RlbFZhbHVlLCBzY29wZSkge1xuICAgICAgICAvL3JldHVybiBhIHJlcXVpcmVkIHZhbGlkYXRpb24gbWVzc2FnZSA6XG4gICAgICAgIC8vLT4gJzxsYWJlbCBhcyBuYW1lPiBpcyByZXF1aXJlZCAnXG4gICAgICAgIC8vLT4gb3IgaWYgbm90IGV4aXN0cyBvciBlbXB0eSBqdXN0ICd0aGlzIGZpZWxkIGlzIHJlcXVpcmVkJ1xuICAgICAgICBjb25zdCBkZWZhdWx0UmV0dXJuTXNnID0gJ3RoaXMgVGV4dGFyZWEgZmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgICBjb25zdCByZXR1cm5Nc2cgPSAodHlwZW9mIHNjb3BlLnRvLmxhYmVsICE9PSAndW5kZWZpbmVkJykgPyAoKHNjb3BlLnRvLmxhYmVsICE9PSAnJykgPyBzY29wZS50by5sYWJlbCArICcgaXMgcmVxdWlyZWQnIDogZGVmYXVsdFJldHVybk1zZykgOiBkZWZhdWx0UmV0dXJuTXNnO1xuICAgICAgICByZXR1cm4gcmV0dXJuTXNnO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3RleHRBcmVhL2NvbmZpZy9zdGVwd2F5LnRleHRBcmVhLmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 94 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.editTextareaControlComponent = exports.EDIT_TEXTAREA_CONTROL_COMPONENT = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _stepwayEditTextAreaTemplate = __webpack_require__(95);\n\nvar _stepwayEditTextAreaTemplate2 = _interopRequireDefault(_stepwayEditTextAreaTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_TEXTAREA_CONTROL_COMPONENT = exports.EDIT_TEXTAREA_CONTROL_COMPONENT = 'editTextareaControl';\n\nvar editTextareaControlComponent = exports.editTextareaControlComponent = {\n template: _stepwayEditTextAreaTemplate2.default,\n bindings: {\n nyaSelect: '='\n },\n controller: function () {\n function editTextareaControlController() {\n //\n\n _classCallCheck(this, editTextareaControlController);\n }\n\n _createClass(editTextareaControlController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return editTextareaControlController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0QXJlYS9lZGl0VGV4dEFyZWEvc3RlcHdheS5lZGl0VGV4dEFyZWEuY29tcG9uZW50LmpzPzAzZTQiXSwibmFtZXMiOlsiRURJVF9URVhUQVJFQV9DT05UUk9MX0NPTVBPTkVOVCIsImVkaXRUZXh0YXJlYUNvbnRyb2xDb21wb25lbnQiLCJ0ZW1wbGF0ZSIsImJpbmRpbmdzIiwibnlhU2VsZWN0IiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRU8sSUFBTUEsNEVBQWtDLHFCQUF4Qzs7QUFFQSxJQUFNQyxzRUFBK0I7QUFDMUNDLGlEQUQwQztBQUUxQ0MsWUFBZ0I7QUFDZEMsZUFBVztBQURHLEdBRjBCO0FBSzFDQztBQUVFLDZDQUFjO0FBQ1o7O0FBRFk7QUFFYjs7QUFKSDtBQUFBO0FBQUEsMEJBTXVCO0FBQ25CLGVBQU8sRUFBUDtBQUNEO0FBUkg7O0FBQUE7QUFBQTtBQUwwQyxDQUFyQyIsImZpbGUiOiI5NC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlZGl0VGV4dGFyZWFDb250cm9sVGVtcGxhdGUgZnJvbSAnLi9zdGVwd2F5LmVkaXRUZXh0QXJlYS50ZW1wbGF0ZS5odG1sJztcblxuZXhwb3J0IGNvbnN0IEVESVRfVEVYVEFSRUFfQ09OVFJPTF9DT01QT05FTlQgPSAnZWRpdFRleHRhcmVhQ29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0VGV4dGFyZWFDb250cm9sQ29tcG9uZW50ID0ge1xuICB0ZW1wbGF0ZSAgICAgIDogZWRpdFRleHRhcmVhQ29udHJvbFRlbXBsYXRlLFxuICBiaW5kaW5ncyAgICAgIDoge1xuICAgIG55YVNlbGVjdDogJz0nXG4gIH0sXG4gIGNvbnRyb2xsZXIgICAgOlxuICBjbGFzcyBlZGl0VGV4dGFyZWFDb250cm9sQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAvL1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgJGluamVjdCgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0QXJlYS9lZGl0VGV4dEFyZWEvc3RlcHdheS5lZGl0VGV4dEFyZWEuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 95 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0QXJlYS9lZGl0VGV4dEFyZWEvc3RlcHdheS5lZGl0VGV4dEFyZWEudGVtcGxhdGUuaHRtbD80YmMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVPQUF1TyxjQUFjLDJCQUEyQiwyUUFBMlEsMkNBQTJDLGlkQUFpZCxpREFBaUQsbVVBQW1VLGNBQWMsK0JBQStCLGlRQUFpUSwwQkFBMEIsa1JBQWtSLG1DQUFtQyxzVEFBc1Qsd0JBQXdCLG1JQUFtSSxpZkFBaWYsMkJBQTJCLDhTQUE4UyxtQ0FBbUMiLCJmaWxlIjoiOTUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IFwiPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1leWVcXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIHt7J1BSRVZJRVdfVEFCJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvaDU+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8aHIvPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgPGxhYmVsXFxuICAgICAgICAgICAgZm9yPVxcXCJ0ZXh0QXJlYVxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiY29udHJvbC1sYWJlbCB0ZXh0Q29udHJvbExhYmVsXFxcIj5cXG4gICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsfX1cXG4gICAgICAgICAgICA8c3BhblxcbiAgICAgICAgICAgICAgbmctaWY9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXFxcIlxcbiAgICAgICAgICAgICAgY2xhc3M9XFxcInRleHRDb250cm9sTGFiZWxcXFwiPlxcbiAgICAgICAgICAgICAgKlxcbiAgICAgICAgICAgIDwvc3Bhbj5cXG4gICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiXFxcIj5cXG4gICAgICAgICAgICA8dGV4dGFyZWFcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgICBuZy1tb2RlbD1cXFwibW9kZWxbb3B0aW9ucy5rZXldXFxcIlxcbiAgICAgICAgICAgICAgcm93cz1cXFwiM1xcXCJcXG4gICAgICAgICAgICAgIGlkPVxcXCJ0ZXh0QXJlYVxcXCI+XFxuICAgICAgICAgICAgPC90ZXh0YXJlYT5cXG4gICAgICAgICAgICA8cCBjbGFzcz1cXFwiaGVscC1ibG9ja1xcXCI+XFxuICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9ufX1cXG4gICAgICAgICAgICA8L3A+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuPGRpdiBjbGFzcz1cXFwicGFuZWwgcGFuZWwtZGVmYXVsdFxcXCI+XFxuICA8ZGl2IGNsYXNzPVxcXCJwYW5lbC1ib2R5XFxcIj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGg1IGNsYXNzPVxcXCJncmV5VGV4dFxcXCI+XFxuICAgICAgICAgIDxpIGNsYXNzPVxcXCJmYSBmYS1wZW5jaWwtc3F1YXJlLW9cXFwiPjwvaT5cXG4gICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgIHt7J0VESVRfUFJPUEVSVElFUycgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGhyLz5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dExhYmVsVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAge3snTEFCRUxfVEVYVCcgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLWxnLTlcXFwiPlxcbiAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgbmctbW9kZWw9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seUxhYmVsXFxcIlxcbiAgICAgICAgICAgIGlkPVxcXCJpbnB1dFRleHRMYWJlbFVwZGF0ZVxcXCJcXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwie3snQUREX0VESVRfTEFCRUxfSEVSRScgfCB0cmFuc2xhdGV9fVxcXCI+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgICAgPGxhYmVsXFxuICAgICAgICAgICAgZm9yPVxcXCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVxcXCJcXG4gICAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAgICB7eydSRVFVSVJFRCcgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICAgIDwvbGFiZWw+XFxuICAgICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1sZy05XFxcIj5cXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjaGVja2JveENzc0NvcnJlY3Rpb25cXFwiPlxcbiAgICAgICAgICAgICAgJm5ic3A7XFxuICAgICAgICAgICAgPC9kaXY+XFxuICAgICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgICB0eXBlPVxcXCJjaGVja2JveFxcXCJcXG4gICAgICAgICAgICAgIG5nLW1vZGVsPVxcXCIkY3RybC5ueWFTZWxlY3QudGVtcG9yeUNvbmZpZy5mb3JtbHlSZXF1aXJlZFxcXCJcXG4gICAgICAgICAgICAgIGlkPVxcXCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVxcXCI+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dERlc2NyaXB0aW9uVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPnt7J0RFU0NSSVBUSU9OJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLWxnLTlcXFwiPlxcbiAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgICBuZy1tb2RlbD1cXFwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVzY3JpcHRpb25cXFwiXFxuICAgICAgICAgICAgICBpZD1cXFwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcXFwiXFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwie3snQURERURJVF9ERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fVxcXCI+XFxuICAgICAgICAgIDwvZGl2PlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuXCJcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3RleHRBcmVhL2VkaXRUZXh0QXJlYS9zdGVwd2F5LmVkaXRUZXh0QXJlYS50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSA5NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 96 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayEditTextArea = __webpack_require__(94);\n\nvar edittextareaControlModuleName = 'stepway.editTextAreaControl.module';\n\nexports.default = angular.module(edittextareaControlModuleName, []).component(_stepwayEditTextArea.EDIT_TEXTAREA_CONTROL_COMPONENT, _stepwayEditTextArea.editTextareaControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0QXJlYS9lZGl0VGV4dEFyZWEvc3RlcHdheS5lZGl0VGV4dEFyZWEubW9kdWxlLmpzPzY1MjIiXSwibmFtZXMiOlsiZWRpdHRleHRhcmVhQ29udHJvbE1vZHVsZU5hbWUiLCJhbmd1bGFyIiwibW9kdWxlIiwiY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFLQSxJQUFNQSxnQ0FBZ0Msb0NBQXRDOztrQkFFZUMsUUFDRUMsTUFERixDQUNTRiw2QkFEVCxFQUN3QyxFQUR4QyxFQUVFRyxTQUZGLHlHIiwiZmlsZSI6Ijk2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZWRpdFRleHRhcmVhQ29udHJvbENvbXBvbmVudCxcbiAgRURJVF9URVhUQVJFQV9DT05UUk9MX0NPTVBPTkVOVFxufSBmcm9tICcuL3N0ZXB3YXkuZWRpdFRleHRBcmVhLmNvbXBvbmVudCc7XG5cbmNvbnN0IGVkaXR0ZXh0YXJlYUNvbnRyb2xNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdFRleHRBcmVhQ29udHJvbC5tb2R1bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBhbmd1bGFyXG4gICAgICAgICAgICAgICAgLm1vZHVsZShlZGl0dGV4dGFyZWFDb250cm9sTW9kdWxlTmFtZSwgW10pXG4gICAgICAgICAgICAgICAgLmNvbXBvbmVudChFRElUX1RFWFRBUkVBX0NPTlRST0xfQ09NUE9ORU5ULCBlZGl0VGV4dGFyZWFDb250cm9sQ29tcG9uZW50KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3RleHRBcmVhL2VkaXRUZXh0QXJlYS9zdGVwd2F5LmVkaXRUZXh0QXJlYS5tb2R1bGUuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 97 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar TextInputConfig = exports.TextInputConfig = {\n id: 'TextInput',\n name: 'Text input',\n subtitle: 'Text input',\n group: 'input',\n formlyType: 'input',\n formlySubtype: '',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyDefaultValue: '',\n formlyOptions: [],\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {\n messages: {\n required: function required(viewValue, modelValue, scope) {\n //return a required validation message :\n //-> ' is required '\n //-> or if not exists or empty just 'this field is required'\n var defaultReturnMsg = 'this Text input field is required';\n var returnMsg = typeof scope.to.label !== 'undefined' ? scope.to.label !== '' ? scope.to.label + ' is required' : defaultReturnMsg : defaultReturnMsg;\n return returnMsg;\n }\n }\n }\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0SW5wdXQvY29uZmlnL3N0ZXB3YXkudGV4dElucHV0LmNvbmZpZy5qcz9lYzBiIl0sIm5hbWVzIjpbIlRleHRJbnB1dENvbmZpZyIsImlkIiwibmFtZSIsInN1YnRpdGxlIiwiZ3JvdXAiLCJmb3JtbHlUeXBlIiwiZm9ybWx5U3VidHlwZSIsImZvcm1seUxhYmVsIiwiZm9ybWx5UmVxdWlyZWQiLCJmb3JtbHlEZXNjcmlwdGlvbiIsImZvcm1seURlZmF1bHRWYWx1ZSIsImZvcm1seU9wdGlvbnMiLCJmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyIsImZvcm1seVZhbGlkYXRvcnMiLCJmb3JtbHlWYWxpZGF0aW9uIiwibWVzc2FnZXMiLCJyZXF1aXJlZCIsInZpZXdWYWx1ZSIsIm1vZGVsVmFsdWUiLCJzY29wZSIsImRlZmF1bHRSZXR1cm5Nc2ciLCJyZXR1cm5Nc2ciLCJ0byIsImxhYmVsIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFPLElBQU1BLDRDQUF3QjtBQUNuQ0MsTUFBSSxXQUQrQjtBQUVuQ0MsUUFBTSxZQUY2QjtBQUduQ0MsWUFBVSxZQUh5QjtBQUluQ0MsU0FBTyxPQUo0QjtBQUtuQ0MsY0FBWSxPQUx1QjtBQU1uQ0MsaUJBQWUsRUFOb0I7QUFPbkNDLGVBQWEsRUFQc0I7QUFRbkNDLGtCQUFnQixLQVJtQjtBQVNuQ0MscUJBQW1CLEVBVGdCO0FBVW5DQyxzQkFBcUIsRUFWYztBQVduQ0MsaUJBQWUsRUFYb0I7QUFZbkNDLDhCQUE0QixFQVpPO0FBYW5DQyxvQkFBa0IsRUFiaUI7QUFjbkNDLG9CQUFrQjtBQUNoQkMsY0FBVTtBQUNSQyxnQkFBVSxrQkFBU0MsU0FBVCxFQUFvQkMsVUFBcEIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLFlBQU1DLG1CQUFtQixtQ0FBekI7QUFDQSxZQUFNQyxZQUFhLE9BQU9GLE1BQU1HLEVBQU4sQ0FBU0MsS0FBaEIsS0FBMEIsV0FBM0IsR0FBNENKLE1BQU1HLEVBQU4sQ0FBU0MsS0FBVCxLQUFtQixFQUFwQixHQUEwQkosTUFBTUcsRUFBTixDQUFTQyxLQUFULEdBQWlCLGNBQTNDLEdBQTRESCxnQkFBdkcsR0FBMkhBLGdCQUE3STtBQUNBLGVBQU9DLFNBQVA7QUFDRDtBQVJPO0FBRE07QUFkaUIsQ0FBOUIiLCJmaWxlIjoiOTcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVGV4dElucHV0Q29uZmlnID0gICAgICAge1xuICBpZDogJ1RleHRJbnB1dCcsXG4gIG5hbWU6ICdUZXh0IGlucHV0JyxcbiAgc3VidGl0bGU6ICdUZXh0IGlucHV0JyxcbiAgZ3JvdXA6ICdpbnB1dCcsXG4gIGZvcm1seVR5cGU6ICdpbnB1dCcsXG4gIGZvcm1seVN1YnR5cGU6ICcnLFxuICBmb3JtbHlMYWJlbDogJycsXG4gIGZvcm1seVJlcXVpcmVkOiBmYWxzZSxcbiAgZm9ybWx5RGVzY3JpcHRpb246ICcnLFxuICBmb3JtbHlEZWZhdWx0VmFsdWUgOiAnJyxcbiAgZm9ybWx5T3B0aW9uczogW10gLFxuICBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllczoge30sXG4gIGZvcm1seVZhbGlkYXRvcnM6IHt9LFxuICBmb3JtbHlWYWxpZGF0aW9uOiB7XG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHJlcXVpcmVkOiBmdW5jdGlvbih2aWV3VmFsdWUsIG1vZGVsVmFsdWUsIHNjb3BlKSB7XG4gICAgICAgIC8vcmV0dXJuIGEgcmVxdWlyZWQgdmFsaWRhdGlvbiBtZXNzYWdlIDpcbiAgICAgICAgLy8tPiAnPGxhYmVsIGFzIG5hbWU+IGlzIHJlcXVpcmVkICdcbiAgICAgICAgLy8tPiBvciBpZiBub3QgZXhpc3RzIG9yIGVtcHR5IGp1c3QgJ3RoaXMgZmllbGQgaXMgcmVxdWlyZWQnXG4gICAgICAgIGNvbnN0IGRlZmF1bHRSZXR1cm5Nc2cgPSAndGhpcyBUZXh0IGlucHV0IGZpZWxkIGlzIHJlcXVpcmVkJztcbiAgICAgICAgY29uc3QgcmV0dXJuTXNnID0gKHR5cGVvZiBzY29wZS50by5sYWJlbCAhPT0gJ3VuZGVmaW5lZCcpID8gKChzY29wZS50by5sYWJlbCAhPT0gJycpID8gc2NvcGUudG8ubGFiZWwgKyAnIGlzIHJlcXVpcmVkJyA6IGRlZmF1bHRSZXR1cm5Nc2cpIDogZGVmYXVsdFJldHVybk1zZztcbiAgICAgICAgcmV0dXJuIHJldHVybk1zZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0SW5wdXQvY29uZmlnL3N0ZXB3YXkudGV4dElucHV0LmNvbmZpZy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 98 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.editTextInputControlComponent = exports.EDIT_TEXTINPUT_CONTROL_COMPONENT = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _stepwayEditTextInputTemplate = __webpack_require__(99);\n\nvar _stepwayEditTextInputTemplate2 = _interopRequireDefault(_stepwayEditTextInputTemplate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EDIT_TEXTINPUT_CONTROL_COMPONENT = exports.EDIT_TEXTINPUT_CONTROL_COMPONENT = 'editTextInputControl';\n\nvar editTextInputControlComponent = exports.editTextInputControlComponent = {\n template: _stepwayEditTextInputTemplate2.default,\n bindings: {\n nyaSelect: '='\n },\n controller: function () {\n function editTextInputControlController() {\n //\n\n _classCallCheck(this, editTextInputControlController);\n }\n\n _createClass(editTextInputControlController, null, [{\n key: '$inject',\n get: function get() {\n return [];\n }\n }]);\n\n return editTextInputControlController;\n }()\n};//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0SW5wdXQvZWRpdFRleHRJbnB1dC9zdGVwd2F5LmVkaXRUZXh0SW5wdXQuY29tcG9uZW50LmpzPzMwMWIiXSwibmFtZXMiOlsiRURJVF9URVhUSU5QVVRfQ09OVFJPTF9DT01QT05FTlQiLCJlZGl0VGV4dElucHV0Q29udHJvbENvbXBvbmVudCIsInRlbXBsYXRlIiwiYmluZGluZ3MiLCJueWFTZWxlY3QiLCJjb250cm9sbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7QUFFTyxJQUFNQSw4RUFBbUMsc0JBQXpDOztBQUVBLElBQU1DLHdFQUFnQztBQUMzQ0Msa0RBRDJDO0FBRTNDQyxZQUFnQjtBQUNkQyxlQUFXO0FBREcsR0FGMkI7QUFLM0NDO0FBRUUsOENBQWM7QUFDWjs7QUFEWTtBQUViOztBQUpIO0FBQUE7QUFBQSwwQkFNdUI7QUFDbkIsZUFBTyxFQUFQO0FBQ0Q7QUFSSDs7QUFBQTtBQUFBO0FBTDJDLENBQXRDIiwiZmlsZSI6Ijk4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVkaXRUZXh0SW5wdXRDb250cm9sVGVtcGxhdGUgZnJvbSAnLi9zdGVwd2F5LmVkaXRUZXh0SW5wdXQudGVtcGxhdGUuaHRtbCc7XG5cbmV4cG9ydCBjb25zdCBFRElUX1RFWFRJTlBVVF9DT05UUk9MX0NPTVBPTkVOVCA9ICdlZGl0VGV4dElucHV0Q29udHJvbCc7XG5cbmV4cG9ydCBjb25zdCBlZGl0VGV4dElucHV0Q29udHJvbENvbXBvbmVudCA9IHtcbiAgdGVtcGxhdGUgICAgICA6IGVkaXRUZXh0SW5wdXRDb250cm9sVGVtcGxhdGUsXG4gIGJpbmRpbmdzICAgICAgOiB7XG4gICAgbnlhU2VsZWN0OiAnPSdcbiAgfSxcbiAgY29udHJvbGxlciAgICA6XG4gIGNsYXNzIGVkaXRUZXh0SW5wdXRDb250cm9sQ29udHJvbGxlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAvL1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgJGluamVjdCgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0SW5wdXQvZWRpdFRleHRJbnB1dC9zdGVwd2F5LmVkaXRUZXh0SW5wdXQuY29tcG9uZW50LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 99 */
+/***/ function(module, exports) {
+
+ eval("module.exports = \"\\n
\\n
\\n
\\n
\\n \\n \\n {{'PREVIEW_TAB' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n {{'EDIT_PROPERTIES' | translate}} :\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0SW5wdXQvZWRpdFRleHRJbnB1dC9zdGVwd2F5LmVkaXRUZXh0SW5wdXQudGVtcGxhdGUuaHRtbD82MzQ0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVPQUF1TyxjQUFjLDJCQUEyQiw0UUFBNFEsMkNBQTJDLGlYQUFpWCxpREFBaUQsNkRBQTZELGlEQUFpRCxxVUFBcVUsY0FBYywrQkFBK0IsaVFBQWlRLDBCQUEwQixrUkFBa1IsbUNBQW1DLDZTQUE2UywyQkFBMkIsOFJBQThSLGtDQUFrQywwU0FBMFMsd0JBQXdCLDZHQUE2RyxxZEFBcWQsMkJBQTJCLDhSQUE4UixtQ0FBbUMsOFNBQThTLDRCQUE0QixnU0FBZ1MsK0NBQStDIiwiZmlsZSI6Ijk5LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIjxkaXYgY2xhc3M9XFxcInBhbmVsIHBhbmVsLWRlZmF1bHRcXFwiPlxcbiAgPGRpdiBjbGFzcz1cXFwicGFuZWwtYm9keVxcXCI+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLW1kLTEyXFxcIj5cXG4gICAgICAgIDxoNSBjbGFzcz1cXFwiZ3JleVRleHRcXFwiPlxcbiAgICAgICAgICA8aSBjbGFzcz1cXFwiZmEgZmEtZXllXFxcIj48L2k+XFxuICAgICAgICAgICZuYnNwO1xcbiAgICAgICAgICB7eydQUkVWSUVXX1RBQicgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2g1PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGhyLz5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbWQtMTJcXFwiPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICAgICAgICAgIDxsYWJlbFxcbiAgICAgICAgICAgIGZvcj1cXFwiaW5wdXRUZXh0XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJjb250cm9sLWxhYmVsIHRleHRDb250cm9sTGFiZWxcXFwiPlxcbiAgICAgICAgICAgIHt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWx9fVxcbiAgICAgICAgICAgIDxzcGFuXFxuICAgICAgICAgICAgICBuZy1pZj1cXFwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UmVxdWlyZWRcXFwiXFxuICAgICAgICAgICAgICBjbGFzcz1cXFwidGV4dENvbnRyb2xMYWJlbFxcXCI+XFxuICAgICAgICAgICAgICAqXFxuICAgICAgICAgICAgPC9zcGFuPlxcbiAgICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgICA8ZGl2IGNsYXNzPVxcXCJcXFwiPlxcbiAgICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgICAgdHlwZT1cXFwidGV4dFxcXCJcXG4gICAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgICBpZD1cXFwiaW5wdXRUZXh0XFxcIlxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcInt7JGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UGxhY2Vob2xkZXJ9fVxcXCI+XFxuICAgICAgICAgICAgICA8cCBjbGFzcz1cXFwiaGVscC1ibG9ja1xcXCI+XFxuICAgICAgICAgICAgICB7eyRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9ufX1cXG4gICAgICAgICAgICAgIDwvcD5cXG4gICAgICAgICAgPC9kaXY+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICA8L2Rpdj5cXG48L2Rpdj5cXG48ZGl2IGNsYXNzPVxcXCJwYW5lbCBwYW5lbC1kZWZhdWx0XFxcIj5cXG4gIDxkaXYgY2xhc3M9XFxcInBhbmVsLWJvZHlcXFwiPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1tZC0xMlxcXCI+XFxuICAgICAgICA8aDUgY2xhc3M9XFxcImdyZXlUZXh0XFxcIj5cXG4gICAgICAgICAgPGkgY2xhc3M9XFxcImZhIGZhLXBlbmNpbC1zcXVhcmUtb1xcXCI+PC9pPlxcbiAgICAgICAgICAmbmJzcDtcXG4gICAgICAgICAge3snRURJVF9QUk9QRVJUSUVTJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvaDU+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8aHIvPlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwiaW5wdXRUZXh0TGFiZWxVcGRhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICB7eydMQUJFTF9URVhUJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvbGFiZWw+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbGctOVxcXCI+XFxuICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICBuZy1tb2RlbD1cXFwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWxcXFwiXFxuICAgICAgICAgICAgaWQ9XFxcImlucHV0VGV4dExhYmVsVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJ7eydBRERfRURJVF9MQUJFTF9IRVJFJyB8IHRyYW5zbGF0ZX19XFxcIj5cXG4gICAgICAgIDwvZGl2PlxcbiAgICAgIDwvZGl2PlxcbiAgICA8L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwibWFyZ2luVG9wRml2ZXBpeGVsc1xcXCI+PC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcInJvd1xcXCI+XFxuICAgICAgPGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+XFxuICAgICAgICA8bGFiZWxcXG4gICAgICAgICAgZm9yPVxcXCJpbnB1dFRleHRwbGFjZWhvbGRlclVwZGF0ZVxcXCJcXG4gICAgICAgICAgY2xhc3M9XFxcImNvbC1sZy0zIGNvbnRyb2wtbGFiZWwgZ3JleVRleHQgZWRpdFByb3BlcnRpZXNMYWJlbFxcXCI+XFxuICAgICAgICAgIHt7J1BMQUNFSE9MREVSJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvbGFiZWw+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbGctOVxcXCI+XFxuICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICBuZy1tb2RlbD1cXFwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5UGxhY2Vob2xkZXJcXFwiXFxuICAgICAgICAgICAgaWQ9XFxcImlucHV0VGV4dHBsYWNlaG9sZGVyVXBkYXRlXFxcIlxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVxcXCJ7eydBRERfRURJVF9QTEFDRUhPTEQnIHwgdHJhbnNsYXRlfX1cXFwiPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJtYXJnaW5Ub3BGaXZlcGl4ZWxzXFxcIj48L2Rpdj5cXG4gICAgPGRpdiBjbGFzcz1cXFwicm93XFxcIj5cXG4gICAgICA8ZGl2IGNsYXNzPVxcXCJmb3JtLWdyb3VwXFxcIj5cXG4gICAgICAgIDxsYWJlbFxcbiAgICAgICAgICBmb3I9XFxcImlucHV0VGV4dFJlcXVpcmVkVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAge3snUkVRVUlSRUQnIHwgdHJhbnNsYXRlfX0gOlxcbiAgICAgICAgPC9sYWJlbD5cXG4gICAgICAgIDxkaXYgY2xhc3M9XFxcImNvbC1sZy05XFxcIj5cXG4gICAgICAgICAgPGRpdiBjbGFzcz1cXFwiY2hlY2tib3hDc3NDb3JyZWN0aW9uXFxcIj4mbmJzcDs8L2Rpdj5cXG4gICAgICAgICAgPGlucHV0XFxuICAgICAgICAgICAgdHlwZT1cXFwiY2hlY2tib3hcXFwiXFxuICAgICAgICAgICAgbmctbW9kZWw9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkXFxcIlxcbiAgICAgICAgICAgIGlkPVxcXCJpbnB1dFRleHRSZXF1aXJlZFVwZGF0ZVxcXCI+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwiaW5wdXRUZXh0RGVzY3JpcHRpb25VcGRhdGVcXFwiXFxuICAgICAgICAgIGNsYXNzPVxcXCJjb2wtbGctMyBjb250cm9sLWxhYmVsIGdyZXlUZXh0IGVkaXRQcm9wZXJ0aWVzTGFiZWxcXFwiPlxcbiAgICAgICAgICB7eydERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fSA6XFxuICAgICAgICA8L2xhYmVsPlxcbiAgICAgICAgPGRpdiBjbGFzcz1cXFwiY29sLWxnLTlcXFwiPlxcbiAgICAgICAgICA8aW5wdXRcXG4gICAgICAgICAgICB0eXBlPVxcXCJ0ZXh0XFxcIlxcbiAgICAgICAgICAgIGNsYXNzPVxcXCJmb3JtLWNvbnRyb2xcXFwiXFxuICAgICAgICAgICAgbmctbW9kZWw9XFxcIiRjdHJsLm55YVNlbGVjdC50ZW1wb3J5Q29uZmlnLmZvcm1seURlc2NyaXB0aW9uXFxcIlxcbiAgICAgICAgICAgIGlkPVxcXCJpbnB1dFRleHREZXNjcmlwdGlvblVwZGF0ZVxcXCJcXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cXFwie3snQURERURJVF9ERVNDUklQVElPTicgfCB0cmFuc2xhdGV9fVxcXCI+XFxuICAgICAgICA8L2Rpdj5cXG4gICAgICA8L2Rpdj5cXG4gICAgPC9kaXY+XFxuICAgIDxkaXYgY2xhc3M9XFxcIm1hcmdpblRvcEZpdmVwaXhlbHNcXFwiPjwvZGl2PlxcbiAgICA8ZGl2IGNsYXNzPVxcXCJyb3dcXFwiPlxcbiAgICAgIDxkaXYgY2xhc3M9XFxcImZvcm0tZ3JvdXBcXFwiPlxcbiAgICAgICAgPGxhYmVsXFxuICAgICAgICAgIGZvcj1cXFwiaW5wdXRUZXh0RGVmYXVsdFZhbHVlVXBkYXRlXFxcIlxcbiAgICAgICAgICBjbGFzcz1cXFwiY29sLWxnLTMgY29udHJvbC1sYWJlbCBncmV5VGV4dCBlZGl0UHJvcGVydGllc0xhYmVsXFxcIj5cXG4gICAgICAgICAge3snREVGQVVMVFZBTFVFJyB8IHRyYW5zbGF0ZX19IDpcXG4gICAgICAgIDwvbGFiZWw+XFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJjb2wtbGctOVxcXCI+XFxuICAgICAgICAgIDxpbnB1dFxcbiAgICAgICAgICAgIHR5cGU9XFxcInRleHRcXFwiXFxuICAgICAgICAgICAgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCJcXG4gICAgICAgICAgICBuZy1tb2RlbD1cXFwiJGN0cmwubnlhU2VsZWN0LnRlbXBvcnlDb25maWcuZm9ybWx5RGVmYXVsdFZhbHVlXFxcIlxcbiAgICAgICAgICAgIGlkPVxcXCJpbnB1dFRleHREZWZhdWx0VmFsdWVVcGRhdGVcXFwiXFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XFxcInt7J0FERF9FRElUX0RFRkFVTFRWQUxVRV9QTEFDRUhPTEQnIHwgdHJhbnNsYXRlfX1cXFwiPlxcbiAgICAgICAgPC9kaXY+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvZGl2PlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuXCJcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9hcHAvc3RlcHdheS9jb21wb25lbnRzL2NvbnRyb2xzL3RleHRJbnB1dC9lZGl0VGV4dElucHV0L3N0ZXB3YXkuZWRpdFRleHRJbnB1dC50ZW1wbGF0ZS5odG1sXG4vLyBtb2R1bGUgaWQgPSA5OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 100 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stepwayEditTextInput = __webpack_require__(98);\n\nvar editTextInputControlModuleName = 'stepway.editTextInputControl.module';\n\nexports.default = angular.module(editTextInputControlModuleName, []).component(_stepwayEditTextInput.EDIT_TEXTINPUT_CONTROL_COMPONENT, _stepwayEditTextInput.editTextInputControlComponent);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0SW5wdXQvZWRpdFRleHRJbnB1dC9zdGVwd2F5LmVkaXRUZXh0SW5wdXQubW9kdWxlLmpzPzc5NDQiXSwibmFtZXMiOlsiZWRpdFRleHRJbnB1dENvbnRyb2xNb2R1bGVOYW1lIiwiYW5ndWxhciIsIm1vZHVsZSIsImNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBS0EsSUFBTUEsaUNBQWlDLHFDQUF2Qzs7a0JBRWVDLFFBQ0VDLE1BREYsQ0FDU0YsOEJBRFQsRUFDeUMsRUFEekMsRUFFRUcsU0FGRiw2RyIsImZpbGUiOiIxMDAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBlZGl0VGV4dElucHV0Q29udHJvbENvbXBvbmVudCxcbiAgRURJVF9URVhUSU5QVVRfQ09OVFJPTF9DT01QT05FTlRcbn0gZnJvbSAnLi9zdGVwd2F5LmVkaXRUZXh0SW5wdXQuY29tcG9uZW50JztcblxuY29uc3QgZWRpdFRleHRJbnB1dENvbnRyb2xNb2R1bGVOYW1lID0gJ3N0ZXB3YXkuZWRpdFRleHRJbnB1dENvbnRyb2wubW9kdWxlJztcblxuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuICAgICAgICAgICAgICAgIC5tb2R1bGUoZWRpdFRleHRJbnB1dENvbnRyb2xNb2R1bGVOYW1lLCBbXSlcbiAgICAgICAgICAgICAgICAuY29tcG9uZW50KEVESVRfVEVYVElOUFVUX0NPTlRST0xfQ09NUE9ORU5ULCBlZGl0VGV4dElucHV0Q29udHJvbENvbXBvbmVudCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvY29tcG9uZW50cy9jb250cm9scy90ZXh0SW5wdXQvZWRpdFRleHRJbnB1dC9zdGVwd2F5LmVkaXRUZXh0SW5wdXQubW9kdWxlLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==");
+
+/***/ },
+/* 101 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MODAL_PROXY_MODULE_NAME = exports.CONTROLLER_MODAL_PROXY_SERVICE = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _modalProxyServiceHelpers = __webpack_require__(102);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar CONTROLLER_MODAL_PROXY_SERVICE = exports.CONTROLLER_MODAL_PROXY_SERVICE = '$modalProxy';\n\nvar $modalProxy = function () {\n function $modalProxy(easyFormSteWayConfig) {\n _classCallCheck(this, $modalProxy);\n\n this.easyFormSteWayConfig = easyFormSteWayConfig;\n }\n\n _createClass($modalProxy, [{\n key: 'initNyaSelect',\n value: function initNyaSelect(nyaSelectObj) {\n return (0, _modalProxyServiceHelpers.resetNyaSelect)(nyaSelectObj);\n }\n }, {\n key: 'getControlsDefinition',\n value: function getControlsDefinition() {\n var controls = {};\n (0, _modalProxyServiceHelpers.resetNyaSelect)(controls);\n return controls;\n }\n }, {\n key: 'getNyASelectFromSelectedLineColumn',\n value: function getNyASelectFromSelectedLineColumn(nyaSelectObj, configurationObj, indexLine, numcolumn) {\n (0, _modalProxyServiceHelpers.resetNyaSelect)(nyaSelectObj);\n /**\n * data send to modal controller\n */\n var controlAtThisLineThisCol = configurationObj.lines[indexLine].columns[numcolumn].control;\n\n if (controlAtThisLineThisCol && controlAtThisLineThisCol.templateOptions) {\n nyaSelectObj.temporyConfig = {\n selectedControl: controlAtThisLineThisCol.selectedControl ? controlAtThisLineThisCol.selectedControl : 'none',\n formlyLabel: controlAtThisLineThisCol.templateOptions.label ? controlAtThisLineThisCol.templateOptions.label : '',\n formlyRequired: controlAtThisLineThisCol.templateOptions.required ? controlAtThisLineThisCol.templateOptions.required : '',\n formlyDescription: controlAtThisLineThisCol.templateOptions.description ? controlAtThisLineThisCol.templateOptions.description : '',\n formlyDefaultValue: controlAtThisLineThisCol.defaultValue ? controlAtThisLineThisCol.defaultValue : '',\n formlyPlaceholder: controlAtThisLineThisCol.templateOptions.placeholder ? controlAtThisLineThisCol.templateOptions.placeholder : '',\n formlyOptions: controlAtThisLineThisCol.templateOptions.options ? controlAtThisLineThisCol.templateOptions.options : '',\n formlyExpressionProperties: controlAtThisLineThisCol.formlyExpressionProperties ? angular.copy(controlAtThisLineThisCol.formlyExpressionProperties) : {},\n formlyValidators: controlAtThisLineThisCol.formlyValidators ? angular.copy(controlAtThisLineThisCol.formlyValidators) : {},\n formlyValidation: controlAtThisLineThisCol.formlyValidation ? angular.copy(controlAtThisLineThisCol.formlyValidation) : {}\n };\n // particular case : datepicker needs an additionnal property:\n if (nyaSelectObj.temporyConfig.selectedControl === 'Date') {\n nyaSelectObj.temporyConfig.datepickerOptions = controlAtThisLineThisCol.templateOptions.datepickerOptions ? angular.copy(controlAtThisLineThisCol.templateOptions.datepickerOptions) : { format: '' };\n }\n }\n return nyaSelectObj;\n }\n }, {\n key: 'bindConfigurationModelFromModalReturn',\n value: function bindConfigurationModelFromModalReturn(indexLine, numcolumn, modalAddCtrlModel, configurationObj) {\n var extractedProps = (0, _modalProxyServiceHelpers.returnControlFromAddCtrlModalModel)(modalAddCtrlModel);\n\n var updatedControl = {\n selectedControl: extractedProps.selectedControl,\n type: extractedProps.formlyType,\n subtype: extractedProps.formlySubtype,\n defaultValue: extractedProps.defaultValue,\n templateOptions: {\n label: extractedProps.formlyLabel,\n required: extractedProps.formlyRequired,\n description: extractedProps.formlyDescription,\n placeholder: extractedProps.formlyPlaceholder,\n options: [].concat(_toConsumableArray(extractedProps.formlyOptions))\n },\n formlyExpressionProperties: angular.copy(extractedProps.formlyExpressionProperties),\n formlyValidators: angular.copy(extractedProps.formlyValidators),\n formlyValidation: angular.copy(extractedProps.formlyValidation)\n };\n // particular case: datepicker : additionnal prop datepickerOptions\n if (updatedControl.type === 'datepicker') {\n updatedControl.templateOptions.datepickerOptions = angular.copy(extractedProps.datepickerOptions);\n }\n /**\n * unique key (set only first time) in this model is formly control type + Date.now();\n */\n // 1st attempt\n var newKey = updatedControl.type + '-' + Date.now();\n if ((0, _modalProxyServiceHelpers.validKeyUniqueness)(newKey, configurationObj) === true) {\n updatedControl.key = newKey;\n } else {\n // 2nd attempt\n newKey = updatedControl.type + '-' + Date.now();\n if ((0, _modalProxyServiceHelpers.validKeyUniqueness)(newKey, configurationObj) === true) {\n updatedControl.key = newKey;\n } else {\n // 3rd attempt\n updatedControl.type + '-' + Date.now();\n }\n }\n updatedControl.edited = true;\n // ///////////////////////\n // finally bind it:\n // ///////////////////////\n configurationObj.lines[indexLine].columns[numcolumn].control = angular.copy(updatedControl);\n }\n }, {\n key: 'applyConfigToSelectedControl',\n value: function applyConfigToSelectedControl(nyaSelectObj) {\n /**\n * used in modal (edit control)\n */\n var selectedControl = nyaSelectObj.selectedControl;\n\n nyaSelectObj.controls.forEach(function (control) {\n if (control.id === selectedControl) {\n control.formlyLabel = nyaSelectObj.temporyConfig.formlyLabel, control.formlyRequired = nyaSelectObj.temporyConfig.formlyRequired;\n control.formlyDescription = nyaSelectObj.temporyConfig.formlyDescription;\n control.formlyDefaultValue = nyaSelectObj.temporyConfig.formlyDefaultValue;\n control.formlyPlaceholder = nyaSelectObj.temporyConfig.formlyPlaceholder;\n control.formlyOptions = nyaSelectObj.temporyConfig.formlyOptions;\n }\n\n if (control.id === 'Date') {\n control.datepickerOptions = angular.copy(nyaSelectObj.temporyConfig.datepickerOptions);\n }\n });\n }\n }, {\n key: 'resetTemporyConfig',\n value: function resetTemporyConfig() {\n return (0, _modalProxyServiceHelpers.getResetConfig)();\n }\n\n /**\n * loading forms will not be able to retrieve formlyExpressionProperties\n * -> here does the job\n */\n\n }, {\n key: 'refreshControlFormlyExpressionProperties',\n value: function refreshControlFormlyExpressionProperties(configurationModel) {\n var _this = this;\n\n if (angular.isObject(configurationModel)) {\n //iterates lines\n angular.forEach(configurationModel.lines, function (line) {\n angular.forEach(line.columns, function (column) {\n var _controlsDefinition = _this.getControlsDefinition();\n angular.forEach(_controlsDefinition.controls, function (aControl) {\n if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {\n //----> update control formlyExpressionProperties property\n column.control.formlyExpressionProperties = aControl.formlyExpressionProperties;\n }\n });\n });\n });\n }\n }\n\n /**\n * loading forms will not be able to retrieve formlyValidators\n * -> here does the job\n */\n\n }, {\n key: 'refreshControlFormlyValidators',\n value: function refreshControlFormlyValidators(configurationModel) {\n var _this2 = this;\n\n if (angular.isObject(configurationModel)) {\n //iterates lines\n angular.forEach(configurationModel.lines, function (line) {\n angular.forEach(line.columns, function (column) {\n var _controlsDefinition = _this2.getControlsDefinition();\n angular.forEach(_controlsDefinition.controls, function (aControl) {\n if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {\n //----> update control formlyValidators property\n column.control.formlyValidators = aControl.formlyValidators;\n }\n });\n });\n });\n }\n }\n\n /**\n * loading forms will not be able to retrieve formlyValidation\n * -> here does the job\n */\n\n }, {\n key: 'refreshControlFormlyValidation',\n value: function refreshControlFormlyValidation(configurationModel) {\n var _this3 = this;\n\n if (angular.isObject(configurationModel)) {\n //iterates lines\n angular.forEach(configurationModel.lines, function (line) {\n angular.forEach(line.columns, function (column) {\n var _controlsDefinition = _this3.getControlsDefinition();\n angular.forEach(_controlsDefinition.controls, function (aControl) {\n if (column.control.type === aControl.formlyType && column.control.subtype === aControl.formlySubtype) {\n //----> update control formlyValidation property\n column.control.formlyValidation = aControl.formlyValidation;\n }\n });\n });\n });\n }\n }\n }, {\n key: 'filterDisabledControl',\n value: function filterDisabledControl(nyaSelectObj) {\n var listAllEnabledControl = this.easyFormSteWayConfig.getListEnabledControl();\n var filteredNyaList = [];\n angular.forEach(listAllEnabledControl, function (enabledControl) {\n angular.forEach(nyaSelectObj.controls, function (nyaControl) {\n if (nyaControl.id === enabledControl.name && enabledControl.enabled === true) {\n filteredNyaList = filteredNyaList.concat(nyaControl);\n }\n });\n });\n return filteredNyaList;\n }\n }, {\n key: 'getFilteredNyaSelectObject',\n value: function getFilteredNyaSelectObject() {\n var newNyaSelectObj = {};\n (0, _modalProxyServiceHelpers.resetNyaSelect)(newNyaSelectObj);\n return angular.copy(this.filterDisabledControl(angular.copy(newNyaSelectObj)));\n //return angular.copy(angular.copy(newNyaSelectObj));\n }\n }]);\n\n return $modalProxy;\n}();\n\n$modalProxy.$inject = ['easyFormSteWayConfig'];\nvar MODAL_PROXY_MODULE_NAME = exports.MODAL_PROXY_MODULE_NAME = 'modalProxyModule';\nexports.default = angular.module(MODAL_PROXY_MODULE_NAME, []).service(CONTROLLER_MODAL_PROXY_SERVICE, $modalProxy);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvc2VydmljZXMvbW9kYWxQcm94eS9tb2RhbFByb3h5LnNlcnZpY2UuanM/ZTQyMCJdLCJuYW1lcyI6WyJDT05UUk9MTEVSX01PREFMX1BST1hZX1NFUlZJQ0UiLCIkbW9kYWxQcm94eSIsImVhc3lGb3JtU3RlV2F5Q29uZmlnIiwibnlhU2VsZWN0T2JqIiwiY29udHJvbHMiLCJjb25maWd1cmF0aW9uT2JqIiwiaW5kZXhMaW5lIiwibnVtY29sdW1uIiwiY29udHJvbEF0VGhpc0xpbmVUaGlzQ29sIiwibGluZXMiLCJjb2x1bW5zIiwiY29udHJvbCIsInRlbXBsYXRlT3B0aW9ucyIsInRlbXBvcnlDb25maWciLCJzZWxlY3RlZENvbnRyb2wiLCJmb3JtbHlMYWJlbCIsImxhYmVsIiwiZm9ybWx5UmVxdWlyZWQiLCJyZXF1aXJlZCIsImZvcm1seURlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJmb3JtbHlEZWZhdWx0VmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJmb3JtbHlQbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiZm9ybWx5T3B0aW9ucyIsIm9wdGlvbnMiLCJmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyIsImFuZ3VsYXIiLCJjb3B5IiwiZm9ybWx5VmFsaWRhdG9ycyIsImZvcm1seVZhbGlkYXRpb24iLCJkYXRlcGlja2VyT3B0aW9ucyIsImZvcm1hdCIsIm1vZGFsQWRkQ3RybE1vZGVsIiwiZXh0cmFjdGVkUHJvcHMiLCJ1cGRhdGVkQ29udHJvbCIsInR5cGUiLCJmb3JtbHlUeXBlIiwic3VidHlwZSIsImZvcm1seVN1YnR5cGUiLCJuZXdLZXkiLCJEYXRlIiwibm93Iiwia2V5IiwiZWRpdGVkIiwiZm9yRWFjaCIsImlkIiwiY29uZmlndXJhdGlvbk1vZGVsIiwiaXNPYmplY3QiLCJsaW5lIiwiY29sdW1uIiwiX2NvbnRyb2xzRGVmaW5pdGlvbiIsImdldENvbnRyb2xzRGVmaW5pdGlvbiIsImFDb250cm9sIiwibGlzdEFsbEVuYWJsZWRDb250cm9sIiwiZ2V0TGlzdEVuYWJsZWRDb250cm9sIiwiZmlsdGVyZWROeWFMaXN0IiwiZW5hYmxlZENvbnRyb2wiLCJueWFDb250cm9sIiwibmFtZSIsImVuYWJsZWQiLCJjb25jYXQiLCJuZXdOeWFTZWxlY3RPYmoiLCJmaWx0ZXJEaXNhYmxlZENvbnRyb2wiLCIkaW5qZWN0IiwiTU9EQUxfUFJPWFlfTU9EVUxFX05BTUUiLCJtb2R1bGUiLCJzZXJ2aWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Ozs7O0FBT08sSUFBTUEsMEVBQWlDLGFBQXZDOztJQUVEQyxXO0FBR0osdUJBQVlDLG9CQUFaLEVBQWtDO0FBQUE7O0FBQ2hDLFNBQUtBLG9CQUFMLEdBQTRCQSxvQkFBNUI7QUFDRDs7OztrQ0FFYUMsWSxFQUFjO0FBQzFCLGFBQU8sOENBQWVBLFlBQWYsQ0FBUDtBQUNEOzs7NENBRXVCO0FBQ3RCLFVBQU1DLFdBQVcsRUFBakI7QUFDQSxvREFBZUEsUUFBZjtBQUNBLGFBQU9BLFFBQVA7QUFDRDs7O3VEQUVrQ0QsWSxFQUFjRSxnQixFQUFrQkMsUyxFQUFXQyxTLEVBQVc7QUFDdkYsb0RBQWVKLFlBQWY7QUFDQTs7O0FBR0EsVUFBTUssMkJBQTJCSCxpQkFBaUJJLEtBQWpCLENBQXVCSCxTQUF2QixFQUFrQ0ksT0FBbEMsQ0FBMENILFNBQTFDLEVBQXFESSxPQUF0Rjs7QUFFQSxVQUFJSCw0QkFBNEJBLHlCQUF5QkksZUFBekQsRUFBMEU7QUFDeEVULHFCQUFhVSxhQUFiLEdBQTZCO0FBQzNCQywyQkFBaUJOLHlCQUF5Qk0sZUFBekIsR0FBMkNOLHlCQUF5Qk0sZUFBcEUsR0FBc0YsTUFENUU7QUFFM0JDLHVCQUFhUCx5QkFBeUJJLGVBQXpCLENBQXlDSSxLQUF6QyxHQUFpRFIseUJBQXlCSSxlQUF6QixDQUF5Q0ksS0FBMUYsR0FBa0csRUFGcEY7QUFHM0JDLDBCQUFnQlQseUJBQXlCSSxlQUF6QixDQUF5Q00sUUFBekMsR0FBb0RWLHlCQUF5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QXVDLFVBQUNHLGNBQUQsRUFBb0I7QUFDekQ5QixnQkFBUWtCLE9BQVIsQ0FBZ0IzQyxhQUFhQyxRQUE3QixFQUF1QyxVQUFDdUQsVUFBRCxFQUFnQjtBQUNyRCxjQUFLQSxXQUFXWixFQUFYLEtBQWtCVyxlQUFlRSxJQUFsQyxJQUNDRixlQUFlRyxPQUFmLEtBQTJCLElBRGhDLEVBQ3VDO0FBQ3JDSiw4QkFBa0JBLGdCQUFnQkssTUFBaEIsQ0FBdUJILFVBQXZCLENBQWxCO0FBQ0Q7QUFDRixTQUxEO0FBTUQsT0FQRDtBQVFBLGFBQU9GLGVBQVA7QUFDRDs7O2lEQUUyQjtBQUMxQixVQUFNTSxrQkFBa0IsRUFBeEI7QUFDQSxvREFBZUEsZUFBZjtBQUNBLGFBQU9uQyxRQUFRQyxJQUFSLENBQWEsS0FBS21DLHFCQUFMLENBQTJCcEMsUUFBUUMsSUFBUixDQUFha0MsZUFBYixDQUEzQixDQUFiLENBQVA7QUFDQTtBQUNEOzs7Ozs7QUFwTkc5RCxXLENBQ0dnRSxPLEdBQVMsQ0FBQyxzQkFBRCxDO0FBdU5YLElBQU1DLDREQUEwQixrQkFBaEM7a0JBQ1F0QyxRQUNJdUMsTUFESixDQUNXRCx1QkFEWCxFQUNvQyxFQURwQyxFQUVJRSxPQUZKLENBRVlwRSw4QkFGWixFQUU2Q0MsV0FGN0MsQyIsImZpbGUiOiIxMDEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICByZXNldE55YVNlbGVjdCxcbiAgcmV0dXJuQ29udHJvbEZyb21BZGRDdHJsTW9kYWxNb2RlbCxcbiAgdmFsaWRLZXlVbmlxdWVuZXNzLFxuICBnZXRSZXNldENvbmZpZ1xufSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi9tb2RhbFByb3h5LnNlcnZpY2UuaGVscGVycy5qcyc7XG5cbmV4cG9ydCBjb25zdCBDT05UUk9MTEVSX01PREFMX1BST1hZX1NFUlZJQ0UgPSAnJG1vZGFsUHJveHknO1xuXG5jbGFzcyAkbW9kYWxQcm94eSB7XG4gIHN0YXRpYyAkaW5qZWN0PSBbJ2Vhc3lGb3JtU3RlV2F5Q29uZmlnJ107XG5cbiAgY29uc3RydWN0b3IoZWFzeUZvcm1TdGVXYXlDb25maWcpIHtcbiAgICB0aGlzLmVhc3lGb3JtU3RlV2F5Q29uZmlnID0gZWFzeUZvcm1TdGVXYXlDb25maWc7XG4gIH1cblxuICBpbml0TnlhU2VsZWN0KG55YVNlbGVjdE9iaikge1xuICAgIHJldHVybiByZXNldE55YVNlbGVjdChueWFTZWxlY3RPYmopO1xuICB9XG5cbiAgZ2V0Q29udHJvbHNEZWZpbml0aW9uKCkge1xuICAgIGNvbnN0IGNvbnRyb2xzID0ge307XG4gICAgcmVzZXROeWFTZWxlY3QoY29udHJvbHMpO1xuICAgIHJldHVybiBjb250cm9scztcbiAgfVxuXG4gIGdldE55QVNlbGVjdEZyb21TZWxlY3RlZExpbmVDb2x1bW4obnlhU2VsZWN0T2JqLCBjb25maWd1cmF0aW9uT2JqLCBpbmRleExpbmUsIG51bWNvbHVtbikge1xuICAgIHJlc2V0TnlhU2VsZWN0KG55YVNlbGVjdE9iaik7XG4gICAgLyoqXG4gICAgICAqIGRhdGEgc2VuZCB0byBtb2RhbCBjb250cm9sbGVyXG4gICAgICAqL1xuICAgIGNvbnN0IGNvbnRyb2xBdFRoaXNMaW5lVGhpc0NvbCA9IGNvbmZpZ3VyYXRpb25PYmoubGluZXNbaW5kZXhMaW5lXS5jb2x1bW5zW251bWNvbHVtbl0uY29udHJvbDtcblxuICAgIGlmIChjb250cm9sQXRUaGlzTGluZVRoaXNDb2wgJiYgY29udHJvbEF0VGhpc0xpbmVUaGlzQ29sLnRlbXBsYXRlT3B0aW9ucykge1xuICAgICAgbnlhU2VsZWN0T2JqLnRlbXBvcnlDb25maWcgPSB7XG4gICAgICAgIHNlbGVjdGVkQ29udHJvbDogY29udHJvbEF0VGhpc0xpbmVUaGlzQ29sLnNlbGVjdGVkQ29udHJvbCA/IGNvbnRyb2xBdFRoaXNMaW5lVGhpc0NvbC5zZWxlY3RlZENvbnRyb2wgOiAnbm9uZScsXG4gICAgICAgIGZvcm1seUxhYmVsOiBjb250cm9sQXRUaGlzTGluZVRoaXNDb2wudGVtcGxhdGVPcHRpb25zLmxhYmVsID8gY29udHJvbEF0VGhpc0xpbmVUaGlzQ29sLnRlbXBsYXRlT3B0aW9ucy5sYWJlbCA6ICcnLFxuICAgICAgICBmb3JtbHlSZXF1aXJlZDogY29udHJvbEF0VGhpc0xpbmVUaGlzQ29sLnRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZCA/IGNvbnRyb2xBdFRoaXNMaW5lVGhpc0NvbC50ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWQgOiAnJyxcbiAgICAgICAgZm9ybWx5RGVzY3JpcHRpb246IGNvbnRyb2xBdFRoaXNMaW5lVGhpc0NvbC50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24gPyBjb250cm9sQXRUaGlzTGluZVRoaXNDb2wudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uIDogJycsXG4gICAgICAgIGZvcm1seURlZmF1bHRWYWx1ZTogY29udHJvbEF0VGhpc0xpbmVUaGlzQ29sLmRlZmF1bHRWYWx1ZSA/IGNvbnRyb2xBdFRoaXNMaW5lVGhpc0NvbC5kZWZhdWx0VmFsdWUgOiAnJyxcbiAgICAgICAgZm9ybWx5UGxhY2Vob2xkZXI6IGNvbnRyb2xBdFRoaXNMaW5lVGhpc0NvbC50ZW1wbGF0ZU9wdGlvbnMucGxhY2Vob2xkZXIgPyBjb250cm9sQXRUaGlzTGluZVRoaXNDb2wudGVtcGxhdGVPcHRpb25zLnBsYWNlaG9sZGVyIDogJycsXG4gICAgICAgIGZvcm1seU9wdGlvbnM6IGNvbnRyb2xBdFRoaXNMaW5lVGhpc0NvbC50ZW1wbGF0ZU9wdGlvbnMub3B0aW9ucyA/IGNvbnRyb2xBdFRoaXNMaW5lVGhpc0NvbC50ZW1wbGF0ZU9wdGlvbnMub3B0aW9ucyA6ICcnLFxuICAgICAgICBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllczogY29udHJvbEF0VGhpc0xpbmVUaGlzQ29sLmZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzID8gYW5ndWxhci5jb3B5KGNvbnRyb2xBdFRoaXNMaW5lVGhpc0NvbC5mb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcykgOiB7fSxcbiAgICAgICAgZm9ybWx5VmFsaWRhdG9yczogY29udHJvbEF0VGhpc0xpbmVUaGlzQ29sLmZvcm1seVZhbGlkYXRvcnMgPyBhbmd1bGFyLmNvcHkoY29udHJvbEF0VGhpc0xpbmVUaGlzQ29sLmZvcm1seVZhbGlkYXRvcnMpIDoge30sXG4gICAgICAgIGZvcm1seVZhbGlkYXRpb246IGNvbnRyb2xBdFRoaXNMaW5lVGhpc0NvbC5mb3JtbHlWYWxpZGF0aW9uID8gYW5ndWxhci5jb3B5KGNvbnRyb2xBdFRoaXNMaW5lVGhpc0NvbC5mb3JtbHlWYWxpZGF0aW9uKSA6IHt9XG4gICAgICB9O1xuICAgICAgLy8gcGFydGljdWxhciBjYXNlIDogZGF0ZXBpY2tlciBuZWVkcyBhbiBhZGRpdGlvbm5hbCBwcm9wZXJ0eTpcbiAgICAgIGlmIChueWFTZWxlY3RPYmoudGVtcG9yeUNvbmZpZy5zZWxlY3RlZENvbnRyb2wgPT09ICdEYXRlJykge1xuICAgICAgICBueWFTZWxlY3RPYmoudGVtcG9yeUNvbmZpZy5kYXRlcGlja2VyT3B0aW9ucyA9IGNvbnRyb2xBdFRoaXNMaW5lVGhpc0NvbC50ZW1wbGF0ZU9wdGlvbnMuZGF0ZXBpY2tlck9wdGlvbnNcbiAgICAgICAgPyBhbmd1bGFyLmNvcHkoY29udHJvbEF0VGhpc0xpbmVUaGlzQ29sLnRlbXBsYXRlT3B0aW9ucy5kYXRlcGlja2VyT3B0aW9ucylcbiAgICAgICAgOiB7IGZvcm1hdDogJycgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG55YVNlbGVjdE9iajtcbiAgfVxuXG5cbiAgYmluZENvbmZpZ3VyYXRpb25Nb2RlbEZyb21Nb2RhbFJldHVybihpbmRleExpbmUsIG51bWNvbHVtbiwgbW9kYWxBZGRDdHJsTW9kZWwsIGNvbmZpZ3VyYXRpb25PYmopIHtcbiAgICBjb25zdCBleHRyYWN0ZWRQcm9wcyA9IHJldHVybkNvbnRyb2xGcm9tQWRkQ3RybE1vZGFsTW9kZWwobW9kYWxBZGRDdHJsTW9kZWwpO1xuXG4gICAgY29uc3QgdXBkYXRlZENvbnRyb2wgPSB7XG4gICAgICBzZWxlY3RlZENvbnRyb2w6IGV4dHJhY3RlZFByb3BzLnNlbGVjdGVkQ29udHJvbCxcbiAgICAgIHR5cGU6IGV4dHJhY3RlZFByb3BzLmZvcm1seVR5cGUsXG4gICAgICBzdWJ0eXBlOiBleHRyYWN0ZWRQcm9wcy5mb3JtbHlTdWJ0eXBlLFxuICAgICAgZGVmYXVsdFZhbHVlOiBleHRyYWN0ZWRQcm9wcy5kZWZhdWx0VmFsdWUsXG4gICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgbGFiZWw6IGV4dHJhY3RlZFByb3BzLmZvcm1seUxhYmVsLFxuICAgICAgICByZXF1aXJlZDogZXh0cmFjdGVkUHJvcHMuZm9ybWx5UmVxdWlyZWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBleHRyYWN0ZWRQcm9wcy5mb3JtbHlEZXNjcmlwdGlvbixcbiAgICAgICAgcGxhY2Vob2xkZXI6IGV4dHJhY3RlZFByb3BzLmZvcm1seVBsYWNlaG9sZGVyLFxuICAgICAgICBvcHRpb25zOiBbLi4uZXh0cmFjdGVkUHJvcHMuZm9ybWx5T3B0aW9uc11cbiAgICAgIH0sXG4gICAgICBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllczogYW5ndWxhci5jb3B5KGV4dHJhY3RlZFByb3BzLmZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzKSxcbiAgICAgIGZvcm1seVZhbGlkYXRvcnM6IGFuZ3VsYXIuY29weShleHRyYWN0ZWRQcm9wcy5mb3JtbHlWYWxpZGF0b3JzKSxcbiAgICAgIGZvcm1seVZhbGlkYXRpb246IGFuZ3VsYXIuY29weShleHRyYWN0ZWRQcm9wcy5mb3JtbHlWYWxpZGF0aW9uKVxuICAgIH07XG4gICAgLy8gcGFydGljdWxhciBjYXNlOiBkYXRlcGlja2VyIDogYWRkaXRpb25uYWwgcHJvcCBkYXRlcGlja2VyT3B0aW9uc1xuICAgIGlmICh1cGRhdGVkQ29udHJvbC50eXBlID09PSAnZGF0ZXBpY2tlcicpIHtcbiAgICAgIHVwZGF0ZWRDb250cm9sLnRlbXBsYXRlT3B0aW9ucy5kYXRlcGlja2VyT3B0aW9ucyA9IGFuZ3VsYXIuY29weShleHRyYWN0ZWRQcm9wcy5kYXRlcGlja2VyT3B0aW9ucyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgKiB1bmlxdWUga2V5IChzZXQgb25seSBmaXJzdCB0aW1lKSBpbiB0aGlzIG1vZGVsIGlzIGZvcm1seSBjb250cm9sIHR5cGUgKyBEYXRlLm5vdygpO1xuICAgICAgKi9cbiAgICAvLyAxc3QgYXR0ZW1wdFxuICAgIGxldCBuZXdLZXkgPSB1cGRhdGVkQ29udHJvbC50eXBlICsgJy0nICsgRGF0ZS5ub3coKTtcbiAgICBpZiAodmFsaWRLZXlVbmlxdWVuZXNzKG5ld0tleSwgY29uZmlndXJhdGlvbk9iaikgPT09IHRydWUpe1xuICAgICAgdXBkYXRlZENvbnRyb2wua2V5ID0gbmV3S2V5O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyAybmQgYXR0ZW1wdFxuICAgICAgbmV3S2V5ID0gdXBkYXRlZENvbnRyb2wudHlwZSArICctJyArIERhdGUubm93KCk7XG4gICAgICBpZiAodmFsaWRLZXlVbmlxdWVuZXNzKG5ld0tleSwgY29uZmlndXJhdGlvbk9iaikgPT09IHRydWUpIHtcbiAgICAgICAgdXBkYXRlZENvbnRyb2wua2V5ID0gbmV3S2V5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gM3JkIGF0dGVtcHRcbiAgICAgICAgdXBkYXRlZENvbnRyb2wudHlwZSArICctJyArIERhdGUubm93KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHVwZGF0ZWRDb250cm9sLmVkaXRlZCA9IHRydWU7XG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBmaW5hbGx5IGJpbmQgaXQ6XG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBjb25maWd1cmF0aW9uT2JqLmxpbmVzW2luZGV4TGluZV0uY29sdW1uc1tudW1jb2x1bW5dLmNvbnRyb2wgPSBhbmd1bGFyLmNvcHkodXBkYXRlZENvbnRyb2wpO1xuICB9XG5cblxuICBhcHBseUNvbmZpZ1RvU2VsZWN0ZWRDb250cm9sKG55YVNlbGVjdE9iail7XG4gICAgLyoqXG4gICAgICAqIHVzZWQgaW4gbW9kYWwgKGVkaXQgY29udHJvbClcbiAgICAgICovXG4gICAgY29uc3Qgc2VsZWN0ZWRDb250cm9sID0gbnlhU2VsZWN0T2JqLnNlbGVjdGVkQ29udHJvbDtcblxuICAgIG55YVNlbGVjdE9iai5jb250cm9scy5mb3JFYWNoKFxuICAgICAgY29udHJvbCA9PiB7XG4gICAgICAgIGlmIChjb250cm9sLmlkID09PSBzZWxlY3RlZENvbnRyb2wpIHtcbiAgICAgICAgICBjb250cm9sLmZvcm1seUxhYmVsID0gbnlhU2VsZWN0T2JqLnRlbXBvcnlDb25maWcuZm9ybWx5TGFiZWwsXG4gICAgICAgICAgY29udHJvbC5mb3JtbHlSZXF1aXJlZCA9IG55YVNlbGVjdE9iai50ZW1wb3J5Q29uZmlnLmZvcm1seVJlcXVpcmVkO1xuICAgICAgICAgIGNvbnRyb2wuZm9ybWx5RGVzY3JpcHRpb24gPSBueWFTZWxlY3RPYmoudGVtcG9yeUNvbmZpZy5mb3JtbHlEZXNjcmlwdGlvbjtcbiAgICAgICAgICBjb250cm9sLmZvcm1seURlZmF1bHRWYWx1ZSA9IG55YVNlbGVjdE9iai50ZW1wb3J5Q29uZmlnLmZvcm1seURlZmF1bHRWYWx1ZTtcbiAgICAgICAgICBjb250cm9sLmZvcm1seVBsYWNlaG9sZGVyID0gbnlhU2VsZWN0T2JqLnRlbXBvcnlDb25maWcuZm9ybWx5UGxhY2Vob2xkZXI7XG4gICAgICAgICAgY29udHJvbC5mb3JtbHlPcHRpb25zID0gbnlhU2VsZWN0T2JqLnRlbXBvcnlDb25maWcuZm9ybWx5T3B0aW9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250cm9sLmlkID09PSdEYXRlJyApIHtcbiAgICAgICAgICBjb250cm9sLmRhdGVwaWNrZXJPcHRpb25zID0gYW5ndWxhci5jb3B5KG55YVNlbGVjdE9iai50ZW1wb3J5Q29uZmlnLmRhdGVwaWNrZXJPcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICByZXNldFRlbXBvcnlDb25maWcoKXtcbiAgICByZXR1cm4gZ2V0UmVzZXRDb25maWcoKTtcbiAgfVxuXG4gIC8qKlxuICAgICogbG9hZGluZyBmb3JtcyB3aWxsIG5vdCBiZSBhYmxlIHRvIHJldHJpZXZlIGZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzXG4gICAgKiAtPiBoZXJlIGRvZXMgdGhlIGpvYlxuICAgICovXG4gIHJlZnJlc2hDb250cm9sRm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMoY29uZmlndXJhdGlvbk1vZGVsKXtcbiAgICBpZiAoYW5ndWxhci5pc09iamVjdChjb25maWd1cmF0aW9uTW9kZWwpKSB7XG4gICAgICAvL2l0ZXJhdGVzIGxpbmVzXG4gICAgICBhbmd1bGFyLmZvckVhY2goY29uZmlndXJhdGlvbk1vZGVsLmxpbmVzLCAobGluZSkgPT4ge1xuICAgICAgICBhbmd1bGFyLmZvckVhY2gobGluZS5jb2x1bW5zLCAoY29sdW1uKSA9PiB7XG4gICAgICAgICAgY29uc3QgX2NvbnRyb2xzRGVmaW5pdGlvbiA9IHRoaXMuZ2V0Q29udHJvbHNEZWZpbml0aW9uKCk7XG4gICAgICAgICAgYW5ndWxhci5mb3JFYWNoKF9jb250cm9sc0RlZmluaXRpb24uY29udHJvbHMsIChhQ29udHJvbCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5jb250cm9sLnR5cGUgPT09IGFDb250cm9sLmZvcm1seVR5cGUgJiZcbiAgICAgICAgICAgICAgICBjb2x1bW4uY29udHJvbC5zdWJ0eXBlID09PSBhQ29udHJvbC5mb3JtbHlTdWJ0eXBlKSB7XG4gICAgICAgICAgICAgICAgLy8tLS0tPiB1cGRhdGUgY29udHJvbCBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyBwcm9wZXJ0eVxuICAgICAgICAgICAgICAgIGNvbHVtbi5jb250cm9sLmZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzID0gYUNvbnRyb2wuZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICAqIGxvYWRpbmcgZm9ybXMgd2lsbCBub3QgYmUgYWJsZSB0byByZXRyaWV2ZSBmb3JtbHlWYWxpZGF0b3JzXG4gICAgKiAtPiBoZXJlIGRvZXMgdGhlIGpvYlxuICAgICovXG4gIHJlZnJlc2hDb250cm9sRm9ybWx5VmFsaWRhdG9ycyhjb25maWd1cmF0aW9uTW9kZWwpe1xuICAgIGlmIChhbmd1bGFyLmlzT2JqZWN0KGNvbmZpZ3VyYXRpb25Nb2RlbCkpIHtcbiAgICAgIC8vaXRlcmF0ZXMgbGluZXNcbiAgICAgIGFuZ3VsYXIuZm9yRWFjaChjb25maWd1cmF0aW9uTW9kZWwubGluZXMsIChsaW5lKSA9PiB7XG4gICAgICAgIGFuZ3VsYXIuZm9yRWFjaChsaW5lLmNvbHVtbnMsIChjb2x1bW4pID0+IHtcbiAgICAgICAgICBjb25zdCBfY29udHJvbHNEZWZpbml0aW9uID0gdGhpcy5nZXRDb250cm9sc0RlZmluaXRpb24oKTtcbiAgICAgICAgICBhbmd1bGFyLmZvckVhY2goX2NvbnRyb2xzRGVmaW5pdGlvbi5jb250cm9scywgKGFDb250cm9sKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmNvbnRyb2wudHlwZSA9PT0gYUNvbnRyb2wuZm9ybWx5VHlwZSAmJlxuICAgICAgICAgICAgICAgIGNvbHVtbi5jb250cm9sLnN1YnR5cGUgPT09IGFDb250cm9sLmZvcm1seVN1YnR5cGUpIHtcbiAgICAgICAgICAgICAgICAvLy0tLS0+IHVwZGF0ZSBjb250cm9sIGZvcm1seVZhbGlkYXRvcnMgcHJvcGVydHlcbiAgICAgICAgICAgICAgICBjb2x1bW4uY29udHJvbC5mb3JtbHlWYWxpZGF0b3JzID0gYUNvbnRyb2wuZm9ybWx5VmFsaWRhdG9ycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgICogbG9hZGluZyBmb3JtcyB3aWxsIG5vdCBiZSBhYmxlIHRvIHJldHJpZXZlIGZvcm1seVZhbGlkYXRpb25cbiAgICAqIC0+IGhlcmUgZG9lcyB0aGUgam9iXG4gICAgKi9cbiAgcmVmcmVzaENvbnRyb2xGb3JtbHlWYWxpZGF0aW9uKGNvbmZpZ3VyYXRpb25Nb2RlbCl7XG4gICAgaWYgKGFuZ3VsYXIuaXNPYmplY3QoY29uZmlndXJhdGlvbk1vZGVsKSkge1xuICAgICAgLy9pdGVyYXRlcyBsaW5lc1xuICAgICAgYW5ndWxhci5mb3JFYWNoKGNvbmZpZ3VyYXRpb25Nb2RlbC5saW5lcywgKGxpbmUpID0+IHtcbiAgICAgICAgYW5ndWxhci5mb3JFYWNoKGxpbmUuY29sdW1ucywgKGNvbHVtbikgPT4ge1xuICAgICAgICAgIGNvbnN0IF9jb250cm9sc0RlZmluaXRpb24gPSB0aGlzLmdldENvbnRyb2xzRGVmaW5pdGlvbigpO1xuICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChfY29udHJvbHNEZWZpbml0aW9uLmNvbnRyb2xzLCAoYUNvbnRyb2wpID0+IHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uY29udHJvbC50eXBlID09PSBhQ29udHJvbC5mb3JtbHlUeXBlICYmXG4gICAgICAgICAgICAgICAgY29sdW1uLmNvbnRyb2wuc3VidHlwZSA9PT0gYUNvbnRyb2wuZm9ybWx5U3VidHlwZSkge1xuICAgICAgICAgICAgICAgIC8vLS0tLT4gdXBkYXRlIGNvbnRyb2wgZm9ybWx5VmFsaWRhdGlvbiBwcm9wZXJ0eVxuICAgICAgICAgICAgICAgIGNvbHVtbi5jb250cm9sLmZvcm1seVZhbGlkYXRpb24gPSBhQ29udHJvbC5mb3JtbHlWYWxpZGF0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG5cbiAgZmlsdGVyRGlzYWJsZWRDb250cm9sKG55YVNlbGVjdE9iail7XG4gICAgY29uc3QgbGlzdEFsbEVuYWJsZWRDb250cm9sID0gdGhpcy5lYXN5Rm9ybVN0ZVdheUNvbmZpZy5nZXRMaXN0RW5hYmxlZENvbnRyb2woKTtcbiAgICBsZXQgZmlsdGVyZWROeWFMaXN0ID0gW107XG4gICAgYW5ndWxhci5mb3JFYWNoKGxpc3RBbGxFbmFibGVkQ29udHJvbCwgKGVuYWJsZWRDb250cm9sKSA9PiB7XG4gICAgICBhbmd1bGFyLmZvckVhY2gobnlhU2VsZWN0T2JqLmNvbnRyb2xzLCAobnlhQ29udHJvbCkgPT4ge1xuICAgICAgICBpZiAoKG55YUNvbnRyb2wuaWQgPT09IGVuYWJsZWRDb250cm9sLm5hbWUpICYmXG4gICAgICAgICAgICAoZW5hYmxlZENvbnRyb2wuZW5hYmxlZCA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgICBmaWx0ZXJlZE55YUxpc3QgPSBmaWx0ZXJlZE55YUxpc3QuY29uY2F0KG55YUNvbnRyb2wpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gZmlsdGVyZWROeWFMaXN0O1xuICB9XG5cbiAgZ2V0RmlsdGVyZWROeWFTZWxlY3RPYmplY3QoKXtcbiAgICBjb25zdCBuZXdOeWFTZWxlY3RPYmogPSB7fTtcbiAgICByZXNldE55YVNlbGVjdChuZXdOeWFTZWxlY3RPYmopO1xuICAgIHJldHVybiBhbmd1bGFyLmNvcHkodGhpcy5maWx0ZXJEaXNhYmxlZENvbnRyb2woYW5ndWxhci5jb3B5KG5ld055YVNlbGVjdE9iaikpKTtcbiAgICAvL3JldHVybiBhbmd1bGFyLmNvcHkoYW5ndWxhci5jb3B5KG5ld055YVNlbGVjdE9iaikpO1xuICB9XG5cbn1cblxuZXhwb3J0IGNvbnN0IE1PREFMX1BST1hZX01PRFVMRV9OQU1FID0gJ21vZGFsUHJveHlNb2R1bGUnO1xuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuICAgICAgICAgICAgICAgICAgLm1vZHVsZShNT0RBTF9QUk9YWV9NT0RVTEVfTkFNRSwgW10pXG4gICAgICAgICAgICAgICAgICAuc2VydmljZShDT05UUk9MTEVSX01PREFMX1BST1hZX1NFUlZJQ0UsICAkbW9kYWxQcm94eSk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvc2VydmljZXMvbW9kYWxQcm94eS9tb2RhbFByb3h5LnNlcnZpY2UuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 102 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getResetConfig = exports.validKeyUniqueness = exports.returnControlFromAddCtrlModalModel = exports.resetNyaSelect = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _controls = __webpack_require__(62);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar resetNyaSelect = function resetNyaSelect(nyaSelectObj) {\n //reset\n angular.copy({\n controls: [].concat(_toConsumableArray(_controls.configs)),\n selectedControl: 'none',\n temporyConfig: {\n selectedControl: 'none',\n formlyLabel: 'label',\n formlyRequired: false,\n formlyDescription: '',\n formlyPlaceholder: '',\n formlyDefaultValue: '',\n formlyOptions: [],\n //expressions/validation fields\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {}\n }\n }, nyaSelectObj);\n return true;\n};\n\nvar getResetConfig = function getResetConfig() {\n return {\n formlyLabel: '',\n formlyRequired: false,\n formlyPlaceholder: '',\n formlyDescription: '',\n formlyDefaultValue: '',\n formlyOptions: []\n };\n};\n\n/**\n * data passed back to parent controller\n * after control being finsihed editing in modal\n */\nvar returnControlFromAddCtrlModalModel = function returnControlFromAddCtrlModalModel(CtrlModalModel) {\n if (CtrlModalModel && CtrlModalModel.selectedControl && Array.isArray(CtrlModalModel.controls)) {\n var _ret = function () {\n var selectedControl = CtrlModalModel.selectedControl;\n var controlRef = CtrlModalModel.controls.find(function (control) {\n return control.id === selectedControl;\n });\n // return a deep copy of selected control:\n if (controlRef) {\n var returnCtrl = {\n selectedControl: selectedControl,\n formlyType: controlRef.formlyType,\n formlySubtype: controlRef.formlySubtype,\n formlyLabel: controlRef.formlyLabel,\n formlyRequired: controlRef.formlyRequired,\n formlyDescription: controlRef.formlyDescription,\n formlyPlaceholder: controlRef.formlyPlaceholder,\n formlyOptions: [].concat(_toConsumableArray(controlRef.formlyOptions)),\n //validation fields\n formlyExpressionProperties: angular.copy(controlRef.formlyExpressionProperties),\n formlyValidators: angular.copy(controlRef.formlyValidators),\n formlyValidation: angular.copy(controlRef.formlyValidation)\n };\n // particular case: date picker needs an additional property\n if (controlRef.formlyType === 'datepicker') {\n returnCtrl.datepickerOptions = controlRef.datepickerOptions;\n }\n return {\n v: returnCtrl\n };\n }\n }();\n\n if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n }\n // by default: returns an empty control object:\n return {\n selectedControl: 'none',\n formlyType: 'none',\n formlySubtype: 'none',\n formlyLabel: '',\n formlyRequired: false,\n formlyDescription: '',\n formlyPlaceholder: '',\n formlyOptions: [],\n //validation fields\n formlyExpressionProperties: {},\n formlyValidators: {},\n formlyValidation: {}\n };\n};\n\n/**\n * validKeyUniqueness\n * to be sure the \"keys\" are unique (in same formly field model)\n */\nvar validKeyUniqueness = function validKeyUniqueness(thisKey, configurationObj) {\n var lines = configurationObj.lines;\n return !lines.map(function (line) {\n return line.columns.some(function (column) {\n return column.control.key === thisKey;\n });\n }).reduce(function (prev, next) {\n return prev || next;\n }, false);\n};\n\nexports.resetNyaSelect = resetNyaSelect;\nexports.returnControlFromAddCtrlModalModel = returnControlFromAddCtrlModalModel;\nexports.validKeyUniqueness = validKeyUniqueness;\nexports.getResetConfig = getResetConfig;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvc2VydmljZXMvbW9kYWxQcm94eS9tb2RhbFByb3h5LnNlcnZpY2UuaGVscGVycy5qcz85NGJlIl0sIm5hbWVzIjpbInJlc2V0TnlhU2VsZWN0IiwibnlhU2VsZWN0T2JqIiwiYW5ndWxhciIsImNvcHkiLCJjb250cm9scyIsInNlbGVjdGVkQ29udHJvbCIsInRlbXBvcnlDb25maWciLCJmb3JtbHlMYWJlbCIsImZvcm1seVJlcXVpcmVkIiwiZm9ybWx5RGVzY3JpcHRpb24iLCJmb3JtbHlQbGFjZWhvbGRlciIsImZvcm1seURlZmF1bHRWYWx1ZSIsImZvcm1seU9wdGlvbnMiLCJmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyIsImZvcm1seVZhbGlkYXRvcnMiLCJmb3JtbHlWYWxpZGF0aW9uIiwiZ2V0UmVzZXRDb25maWciLCJyZXR1cm5Db250cm9sRnJvbUFkZEN0cmxNb2RhbE1vZGVsIiwiQ3RybE1vZGFsTW9kZWwiLCJBcnJheSIsImlzQXJyYXkiLCJjb250cm9sUmVmIiwiZmluZCIsImNvbnRyb2wiLCJpZCIsInJldHVybkN0cmwiLCJmb3JtbHlUeXBlIiwiZm9ybWx5U3VidHlwZSIsImRhdGVwaWNrZXJPcHRpb25zIiwidmFsaWRLZXlVbmlxdWVuZXNzIiwidGhpc0tleSIsImNvbmZpZ3VyYXRpb25PYmoiLCJsaW5lcyIsIm1hcCIsImxpbmUiLCJjb2x1bW5zIiwic29tZSIsImNvbHVtbiIsImtleSIsInJlZHVjZSIsInByZXYiLCJuZXh0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7OztBQUVBLElBQU1BLGlCQUFpQixTQUFqQkEsY0FBaUIsQ0FBQ0MsWUFBRCxFQUFrQjtBQUN2QztBQUNBQyxVQUFRQyxJQUFSLENBQ0U7QUFDRUMsOERBREY7QUFFRUMscUJBQWtCLE1BRnBCO0FBR0VDLG1CQUFnQjtBQUNkRCx1QkFBaUIsTUFESDtBQUVkRSxtQkFBYSxPQUZDO0FBR2RDLHNCQUFnQixL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a0M7UUFDQVksa0IsR0FBQUEsa0I7UUFDQWIsYyxHQUFBQSxjIiwiZmlsZSI6IjEwMi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbmZpZ3MgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvbnRyb2xzJztcblxuY29uc3QgcmVzZXROeWFTZWxlY3QgPSAobnlhU2VsZWN0T2JqKSA9PiB7XG4gIC8vcmVzZXRcbiAgYW5ndWxhci5jb3B5KFxuICAgIHsgXG4gICAgICBjb250cm9sczogWy4uLmNvbmZpZ3NdLFxuICAgICAgc2VsZWN0ZWRDb250cm9sIDogJ25vbmUnICxcbiAgICAgIHRlbXBvcnlDb25maWcgOiB7XG4gICAgICAgIHNlbGVjdGVkQ29udHJvbDogJ25vbmUnLFxuICAgICAgICBmb3JtbHlMYWJlbDogJ2xhYmVsJywgXG4gICAgICAgIGZvcm1seVJlcXVpcmVkOiBmYWxzZSwgXG4gICAgICAgIGZvcm1seURlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgZm9ybWx5UGxhY2Vob2xkZXI6ICcnLFxuICAgICAgICBmb3JtbHlEZWZhdWx0VmFsdWU6ICcnLFxuICAgICAgICBmb3JtbHlPcHRpb25zIDogW10sXG4gICAgICAgIC8vZXhwcmVzc2lvbnMvdmFsaWRhdGlvbiBmaWVsZHNcbiAgICAgICAgZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXM6IHt9LFxuICAgICAgICBmb3JtbHlWYWxpZGF0b3JzOiB7fSxcbiAgICAgICAgZm9ybWx5VmFsaWRhdGlvbjoge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICB9IFxuICAgIH0sIFxuICAgIG55YVNlbGVjdE9iaik7XG4gIHJldHVybiB0cnVlO1xufTtcblxuY29uc3QgZ2V0UmVzZXRDb25maWcgPSAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgZm9ybWx5TGFiZWw6ICcnLFxuICAgIGZvcm1seVJlcXVpcmVkOiBmYWxzZSxcbiAgICBmb3JtbHlQbGFjZWhvbGRlcjogJycsXG4gICAgZm9ybWx5RGVzY3JpcHRpb246ICcnLFxuICAgIGZvcm1seURlZmF1bHRWYWx1ZTogJycsXG4gICAgZm9ybWx5T3B0aW9uczogW11cbiAgfTtcbn07XG5cbi8qKlxuICAqIGRhdGEgcGFzc2VkIGJhY2sgdG8gcGFyZW50IGNvbnRyb2xsZXJcbiAgKiBhZnRlciBjb250cm9sIGJlaW5nIGZpbnNpaGVkIGVkaXRpbmcgaW4gbW9kYWxcbiAgKi9cbmNvbnN0IHJldHVybkNvbnRyb2xGcm9tQWRkQ3RybE1vZGFsTW9kZWwgPSAoQ3RybE1vZGFsTW9kZWwpID0+e1xuICBpZiAoQ3RybE1vZGFsTW9kZWwgJiYgQ3RybE1vZGFsTW9kZWwuc2VsZWN0ZWRDb250cm9sICYmIEFycmF5LmlzQXJyYXkoQ3RybE1vZGFsTW9kZWwuY29udHJvbHMpKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRDb250cm9sID0gQ3RybE1vZGFsTW9kZWwuc2VsZWN0ZWRDb250cm9sO1xuICAgIGNvbnN0IGNvbnRyb2xSZWYgPSBDdHJsTW9kYWxNb2RlbC5jb250cm9scy5maW5kKGNvbnRyb2wgPT4gY29udHJvbC5pZCA9PT0gc2VsZWN0ZWRDb250cm9sKTtcbiAgICAvLyByZXR1cm4gYSBkZWVwIGNvcHkgb2Ygc2VsZWN0ZWQgY29udHJvbDpcbiAgICBpZiAoY29udHJvbFJlZikge1xuICAgICAgY29uc3QgcmV0dXJuQ3RybCA9IHtcbiAgICAgICAgc2VsZWN0ZWRDb250cm9sOiBzZWxlY3RlZENvbnRyb2wgLFxuICAgICAgICBmb3JtbHlUeXBlIDogY29udHJvbFJlZi5mb3JtbHlUeXBlLFxuICAgICAgICBmb3JtbHlTdWJ0eXBlOiBjb250cm9sUmVmLmZvcm1seVN1YnR5cGUsXG4gICAgICAgIGZvcm1seUxhYmVsOiBjb250cm9sUmVmLmZvcm1seUxhYmVsLFxuICAgICAgICBmb3JtbHlSZXF1aXJlZCA6IGNvbnRyb2xSZWYuZm9ybWx5UmVxdWlyZWQsXG4gICAgICAgIGZvcm1seURlc2NyaXB0aW9uOiBjb250cm9sUmVmLmZvcm1seURlc2NyaXB0aW9uLFxuICAgICAgICBmb3JtbHlQbGFjZWhvbGRlcjogY29udHJvbFJlZi5mb3JtbHlQbGFjZWhvbGRlcixcbiAgICAgICAgZm9ybWx5T3B0aW9uczogWy4uLmNvbnRyb2xSZWYuZm9ybWx5T3B0aW9uc10sXG4gICAgICAgIC8vdmFsaWRhdGlvbiBmaWVsZHNcbiAgICAgICAgZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXM6IGFuZ3VsYXIuY29weShjb250cm9sUmVmLmZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzKSxcbiAgICAgICAgZm9ybWx5VmFsaWRhdG9yczogYW5ndWxhci5jb3B5KGNvbnRyb2xSZWYuZm9ybWx5VmFsaWRhdG9ycyksXG4gICAgICAgIGZvcm1seVZhbGlkYXRpb246IGFuZ3VsYXIuY29weShjb250cm9sUmVmLmZvcm1seVZhbGlkYXRpb24pXG4gICAgICB9O1xuICAgICAgLy8gcGFydGljdWxhciBjYXNlOiBkYXRlIHBpY2tlciBuZWVkcyBhbiBhZGRpdGlvbmFsIHByb3BlcnR5XG4gICAgICBpZiAoY29udHJvbFJlZi5mb3JtbHlUeXBlID09PSAnZGF0ZXBpY2tlcicpIHtcbiAgICAgICAgcmV0dXJuQ3RybC5kYXRlcGlja2VyT3B0aW9ucyA9IGNvbnRyb2xSZWYuZGF0ZXBpY2tlck9wdGlvbnM7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0dXJuQ3RybDtcbiAgICB9XG4gIH1cbiAgLy8gYnkgZGVmYXVsdDogcmV0dXJucyBhbiBlbXB0eSBjb250cm9sIG9iamVjdDpcbiAgcmV0dXJuIHtcbiAgICBzZWxlY3RlZENvbnRyb2w6ICdub25lJyxcbiAgICBmb3JtbHlUeXBlIDogJ25vbmUnLFxuICAgIGZvcm1seVN1YnR5cGU6ICdub25lJyxcbiAgICBmb3JtbHlMYWJlbDogJycsXG4gICAgZm9ybWx5UmVxdWlyZWQgOiBmYWxzZSxcbiAgICBmb3JtbHlEZXNjcmlwdGlvbjogJycsXG4gICAgZm9ybWx5UGxhY2Vob2xkZXI6ICcnLFxuICAgIGZvcm1seU9wdGlvbnM6IFtdLFxuICAgIC8vdmFsaWRhdGlvbiBmaWVsZHNcbiAgICBmb3JtbHlFeHByZXNzaW9uUHJvcGVydGllczoge30sXG4gICAgZm9ybWx5VmFsaWRhdG9yczoge30sXG4gICAgZm9ybWx5VmFsaWRhdGlvbjoge31cbiAgfTtcbn07XG5cbi8qKlxuICAqIHZhbGlkS2V5VW5pcXVlbmVzc1xuICAqIHRvIGJlIHN1cmUgdGhlIFwia2V5c1wiIGFyZSB1bmlxdWUgKGluIHNhbWUgZm9ybWx5IGZpZWxkIG1vZGVsKVxuICAqL1xuY29uc3QgdmFsaWRLZXlVbmlxdWVuZXNzID0gKHRoaXNLZXksIGNvbmZpZ3VyYXRpb25PYmopID0+IHtcbiAgY29uc3QgbGluZXMgPSBjb25maWd1cmF0aW9uT2JqLmxpbmVzO1xuICByZXR1cm4gIWxpbmVzXG4gICAgICAgICAgICAgIC5tYXAobGluZSA9PiBsaW5lLmNvbHVtbnMuc29tZShjb2x1bW4gPT4gY29sdW1uLmNvbnRyb2wua2V5ID09PSB0aGlzS2V5KSlcbiAgICAgICAgICAgICAgLnJlZHVjZSgocHJldiwgbmV4dCkgPT4gcHJldiB8fCBuZXh0LCBmYWxzZSk7XG59O1xuXG5leHBvcnQge1xuICByZXNldE55YVNlbGVjdCxcbiAgcmV0dXJuQ29udHJvbEZyb21BZGRDdHJsTW9kYWxNb2RlbCxcbiAgdmFsaWRLZXlVbmlxdWVuZXNzLFxuICBnZXRSZXNldENvbmZpZ1xuXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L3NlcnZpY2VzL21vZGFsUHJveHkvbW9kYWxQcm94eS5zZXJ2aWNlLmhlbHBlcnMuanMiXSwic291cmNlUm9vdCI6IiJ9");
+
+/***/ },
+/* 103 */
+/***/ function(module, exports, __webpack_require__) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FORMLY_PROXY_MODULE_NAME = exports.FORMLY_PROXY_SERVICE = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _formlyProxyService = __webpack_require__(104);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar FORMLY_PROXY_SERVICE = exports.FORMLY_PROXY_SERVICE = '$formlyProxy';\n\nvar $formlyProxy = function () {\n function $formlyProxy() {\n _classCallCheck(this, $formlyProxy);\n }\n\n _createClass($formlyProxy, [{\n key: 'initConfigurationEditFromScratch',\n value: function initConfigurationEditFromScratch(configurationModel) {\n angular.copy(_formlyProxyService.configurationModelInit, configurationModel);\n }\n }, {\n key: 'bindConfigurationLines',\n value: function bindConfigurationLines(configurationModel, lines) {\n if (angular.isArray(lines)) {\n var configModelResult = _formlyProxyService.configurationModelResult;\n configModelResult.lines = [].concat(_toConsumableArray(lines));\n angular.copy(configModelResult, configurationModel);\n return this.getMessageObject('configuration model is bound', 'lines are bound to configuration model.');\n } else {\n return this.getErrorObject('lines is not an array', 'Checks lines type, it is not an array.');\n }\n }\n }, {\n key: 'applyConfigurationToformlyModel',\n value: function applyConfigurationToformlyModel(configurationModel, formlyModel, formlyDataModel) {\n (0, _formlyProxyService.resetFormlyModel)(formlyModel);\n (0, _formlyProxyService.resetDataModel)(formlyDataModel);\n\n configurationModel.lines.forEach(function (line, lineIndex) {\n if (line.columns.length === 1) {\n (0, _formlyProxyService.addOneColumnControl)(formlyModel, configurationModel, lineIndex);\n }\n if (line.columns.length === 2) {\n (0, _formlyProxyService.addTwoColumnControl)(formlyModel, configurationModel, lineIndex);\n }\n if (line.columns.length === 3) {\n (0, _formlyProxyService.addThreeColumnControl)(formlyModel, configurationModel, lineIndex);\n }\n });\n }\n }, {\n key: 'getMessageObject',\n value: function getMessageObject(messageTitle, messageBody) {\n var messageObj = {\n noError: true,\n title: messageTitle,\n Message: messageBody\n };\n return messageObj;\n }\n }]);\n\n return $formlyProxy;\n}();\n\n$formlyProxy.$inject = [];\nvar FORMLY_PROXY_MODULE_NAME = exports.FORMLY_PROXY_MODULE_NAME = 'formlyProxyModule';\nexports.default = angular.module(FORMLY_PROXY_MODULE_NAME, []).service(FORMLY_PROXY_SERVICE, $formlyProxy);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvc2VydmljZXMvZm9ybWx5UHJveHkvZm9ybWx5UHJveHkuc2VydmljZS5qcz8yZjM2Il0sIm5hbWVzIjpbIkZPUk1MWV9QUk9YWV9TRVJWSUNFIiwiJGZvcm1seVByb3h5IiwiY29uZmlndXJhdGlvbk1vZGVsIiwiYW5ndWxhciIsImNvcHkiLCJsaW5lcyIsImlzQXJyYXkiLCJjb25maWdNb2RlbFJlc3VsdCIsImdldE1lc3NhZ2VPYmplY3QiLCJnZXRFcnJvck9iamVjdCIsImZvcm1seU1vZGVsIiwiZm9ybWx5RGF0YU1vZGVsIiwiZm9yRWFjaCIsImxpbmUiLCJsaW5lSW5kZXgiLCJjb2x1bW5zIiwibGVuZ3RoIiwibWVzc2FnZVRpdGxlIiwibWVzc2FnZUJvZHkiLCJtZXNzYWdlT2JqIiwibm9FcnJvciIsInRpdGxlIiwiTWVzc2FnZSIsIiRpbmplY3QiLCJGT1JNTFlfUFJPWFlfTU9EVUxFX05BTUUiLCJtb2R1bGUiLCJzZXJ2aWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Ozs7O0FBVU8sSUFBTUEsc0RBQXVCLGNBQTdCOztJQUVEQyxZO0FBR0osMEJBQWM7QUFBQTtBQUViOzs7O3FEQUVnQ0Msa0IsRUFBb0I7QUFDbkRDLGNBQVFDLElBQVIsNkNBQXFDRixrQkFBckM7QUFDRDs7OzJDQUVzQkEsa0IsRUFBb0JHLEssRUFBTztBQUNoRCxVQUFJRixRQUFRRyxPQUFSLENBQWdCRCxLQUFoQixDQUFKLEVBQTRCO0FBQzFCLFlBQU1FLGdFQUFOO0FBQ0FBLDBCQUFrQkYsS0FBbEIsZ0NBQThCQSxLQUE5QjtBQUNBRixnQkFBUUMsSUFBUixDQUFhRyxpQkFBYixFQUFnQ0wsa0JBQWhDO0FBQ0EsZUFBTyxLQUFLTSxnQkFBTCxDQUFzQiw4QkFBdEIsRUFBcUQseUNBQXJELENBQVA7QUFDRCxPQUxELE1BS087QUFDTCxlQUFPLEtBQUtDLGNBQUwsQ0FBb0IsdUJBQXBCLEVBQTZDLHdDQUE3QyxDQUFQO0FBQ0Q7QUFDRjs7O29EQUUrQlAsa0IsRUFBb0JRLFcsRUFBYUMsZSxFQUFpQjtBQUNoRixnREFBaUJELFdBQWpCO0FBQ0EsOENBQWVDLGVBQWY7O0FBRUFULHlCQUFtQkcsS0FBbkIsQ0FBeUJPLE9BQXpCLENBQ0UsVUFBQ0MsSUFBRCxFQUFPQyxTQUFQLEVBQXFCO0FBQ25CLFlBQUlELEtBQUtFLE9BQUwsQ0FBYUMsTUFBYixLQUF3QixDQUE1QixFQUErQjtBQUM3Qix1REFBb0JOLFdBQXBCLEVBQWlDUixrQkFBakMsRUFBcURZLFNBQXJEO0FBQ0Q7QUFDRCxZQUFJRCxLQUFLRSxPQUFMLENBQWFDLE1BQWIsS0FBd0IsQ0FBNUIsRUFBK0I7QUFDN0IsdURBQW9CTixXQUFwQixFQUFpQ1Isa0JBQWpDLEVBQXFEWSxTQUFyRDtBQUNEO0FBQ0QsWUFBSUQsS0FBS0UsT0FBTCxDQUFhQyxNQUFiLEtBQXdCLENBQTVCLEVBQStCO0FBQzdCLHlEQUFzQk4sV0FBdEIsRUFBbUNSLGtCQUFuQyxFQUF1RFksU0FBdkQ7QUFDRDtBQUNGLE9BWEg7QUFhRDs7O3FDQUVnQkcsWSxFQUFjQyxXLEVBQWE7QUFDMUMsVUFBTUMsYUFBYTtBQUNqQkMsaUJBQVMsSUFEUTtBQUVqQkMsZUFBT0osWUFGVTtBQUdqQkssaUJBQVNKO0FBSFEsT0FBbkI7QUFLQSxhQUFPQyxVQUFQO0FBQ0Q7Ozs7OztBQWhER2xCLFksQ0FDR3NCLE8sR0FBVSxFO0FBa0RaLElBQU1DLDhEQUEyQixtQkFBakM7a0JBQ1FyQixRQUNJc0IsTUFESixDQUNXRCx3QkFEWCxFQUNxQyxFQURyQyxFQUVJRSxPQUZKLENBRVkxQixvQkFGWixFQUVrQ0MsWUFGbEMsQyIsImZpbGUiOiIxMDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjb25maWd1cmF0aW9uTW9kZWxJbml0LFxuICBjb25maWd1cmF0aW9uTW9kZWxSZXN1bHQsXG4gIHJlc2V0RGF0YU1vZGVsLFxuICByZXNldEZvcm1seU1vZGVsLFxuICBhZGRPbmVDb2x1bW5Db250cm9sLFxuICBhZGRUd29Db2x1bW5Db250cm9sLFxuICBhZGRUaHJlZUNvbHVtbkNvbnRyb2xcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4vZm9ybWx5UHJveHkuc2VydmljZS5oZWxwZXJzJztcblxuZXhwb3J0IGNvbnN0IEZPUk1MWV9QUk9YWV9TRVJWSUNFID0gJyRmb3JtbHlQcm94eSc7XG5cbmNsYXNzICRmb3JtbHlQcm94eSB7XG4gIHN0YXRpYyAkaW5qZWN0ID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgfVxuXG4gIGluaXRDb25maWd1cmF0aW9uRWRpdEZyb21TY3JhdGNoKGNvbmZpZ3VyYXRpb25Nb2RlbCkge1xuICAgIGFuZ3VsYXIuY29weShjb25maWd1cmF0aW9uTW9kZWxJbml0LCBjb25maWd1cmF0aW9uTW9kZWwpO1xuICB9XG5cbiAgYmluZENvbmZpZ3VyYXRpb25MaW5lcyhjb25maWd1cmF0aW9uTW9kZWwsIGxpbmVzKSB7XG4gICAgaWYgKGFuZ3VsYXIuaXNBcnJheShsaW5lcykpIHtcbiAgICAgIGNvbnN0IGNvbmZpZ01vZGVsUmVzdWx0ID0gY29uZmlndXJhdGlvbk1vZGVsUmVzdWx0O1xuICAgICAgY29uZmlnTW9kZWxSZXN1bHQubGluZXMgPSBbLi4ubGluZXNdO1xuICAgICAgYW5ndWxhci5jb3B5KGNvbmZpZ01vZGVsUmVzdWx0LCBjb25maWd1cmF0aW9uTW9kZWwpO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TWVzc2FnZU9iamVjdCgnY29uZmlndXJhdGlvbiBtb2RlbCBpcyBib3VuZCcsJ2xpbmVzIGFyZSBib3VuZCB0byBjb25maWd1cmF0aW9uIG1vZGVsLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRFcnJvck9iamVjdCgnbGluZXMgaXMgbm90IGFuIGFycmF5JywgJ0NoZWNrcyBsaW5lcyB0eXBlLCBpdCBpcyBub3QgYW4gYXJyYXkuJyk7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlDb25maWd1cmF0aW9uVG9mb3JtbHlNb2RlbChjb25maWd1cmF0aW9uTW9kZWwsIGZvcm1seU1vZGVsLCBmb3JtbHlEYXRhTW9kZWwpIHtcbiAgICByZXNldEZvcm1seU1vZGVsKGZvcm1seU1vZGVsKTtcbiAgICByZXNldERhdGFNb2RlbChmb3JtbHlEYXRhTW9kZWwpO1xuXG4gICAgY29uZmlndXJhdGlvbk1vZGVsLmxpbmVzLmZvckVhY2goXG4gICAgICAobGluZSwgbGluZUluZGV4KSA9PiB7XG4gICAgICAgIGlmIChsaW5lLmNvbHVtbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgYWRkT25lQ29sdW1uQ29udHJvbChmb3JtbHlNb2RlbCwgY29uZmlndXJhdGlvbk1vZGVsLCBsaW5lSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaW5lLmNvbHVtbnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgYWRkVHdvQ29sdW1uQ29udHJvbChmb3JtbHlNb2RlbCwgY29uZmlndXJhdGlvbk1vZGVsLCBsaW5lSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaW5lLmNvbHVtbnMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgYWRkVGhyZWVDb2x1bW5Db250cm9sKGZvcm1seU1vZGVsLCBjb25maWd1cmF0aW9uTW9kZWwsIGxpbmVJbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlVGl0bGUsIG1lc3NhZ2VCb2R5KSB7XG4gICAgY29uc3QgbWVzc2FnZU9iaiA9IHtcbiAgICAgIG5vRXJyb3I6IHRydWUsXG4gICAgICB0aXRsZTogbWVzc2FnZVRpdGxlLFxuICAgICAgTWVzc2FnZTogbWVzc2FnZUJvZHlcbiAgICB9O1xuICAgIHJldHVybiBtZXNzYWdlT2JqO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBGT1JNTFlfUFJPWFlfTU9EVUxFX05BTUUgPSAnZm9ybWx5UHJveHlNb2R1bGUnO1xuZXhwb3J0IGRlZmF1bHQgYW5ndWxhclxuICAgICAgICAgICAgICAgICAgLm1vZHVsZShGT1JNTFlfUFJPWFlfTU9EVUxFX05BTUUsIFtdKVxuICAgICAgICAgICAgICAgICAgLnNlcnZpY2UoRk9STUxZX1BST1hZX1NFUlZJQ0UsICRmb3JtbHlQcm94eSk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvc2VydmljZXMvZm9ybWx5UHJveHkvZm9ybWx5UHJveHkuc2VydmljZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 104 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar configurationModelInit = {\n activeLine: 1,\n listConfigStep: ['init', 'first', 'second', 'third'],\n stepIndicators: [true, false, false, false],\n configStepCounter: 0,\n submitButtonText: 'submit',\n cancelButtonText: 'cancel',\n lines: [{\n line: 1,\n activeColumn: 1,\n columns: [{\n numColumn: 1,\n exist: true,\n control: {\n type: 'none',\n key: 'none' // ,\n // templateOptions: {\n // label: 'none',\n // placeholder: 'none',\n // required: false,\n // description: 'Descriptive text'\n // }\n }\n }]\n }]\n};\n\nvar configurationModelResult = {\n activeLine: 1,\n listConfigStep: ['init', 'first', 'second', 'third'],\n stepIndicators: [true, false, false, false],\n configStepCounter: 0,\n submitButtonText: 'submit',\n cancelButtonTex: 'cancel',\n lines: []\n};\n\nvar isTemplateOptionDefined = function isTemplateOptionDefined(obj) {\n var defaultValue = false;\n if (obj && obj.templateOptions) {\n return true;\n }\n return defaultValue;\n};\n\nvar extractTemplateOptionLabel = function extractTemplateOptionLabel(obj) {\n var defaultValue = '';\n if (isTemplateOptionDefined(obj) && obj.templateOptions.label) {\n return obj.templateOptions.label;\n }\n return defaultValue;\n};\n\nvar extractTemplateOptionDatepickerOptions = function extractTemplateOptionDatepickerOptions(obj) {\n var defaultValue = { format: '' };\n if (isTemplateOptionDefined(obj) && obj.templateOptions.datepickerOptions) {\n return _extends({}, obj.templateOptions.datepickerOptions);\n }\n return defaultValue;\n};\n\nvar extractTemplateOptionRequired = function extractTemplateOptionRequired(obj) {\n var defaultValue = false;\n if (isTemplateOptionDefined(obj) && obj.templateOptions.required) {\n return true;\n }\n return defaultValue;\n};\n\nvar extractTemplateOptionOptions = function extractTemplateOptionOptions(obj) {\n var defaultValue = '';\n if (isTemplateOptionDefined(obj) && obj.templateOptions.options) {\n return obj.templateOptions.options;\n }\n return defaultValue;\n};\n\nvar extractTemplateOptionType = function extractTemplateOptionType(obj) {\n var defaultValue = '';\n if (obj && obj.subtype) {\n return obj.subtype;\n }\n return defaultValue;\n};\n\nvar extractTemplateOptionPlaceholder = function extractTemplateOptionPlaceholder(obj) {\n var defaultValue = '';\n if (isTemplateOptionDefined(obj) && obj.templateOptions.placeholder) {\n return obj.templateOptions.placeholder;\n }\n return defaultValue;\n};\n\nvar extractTemplateOptionDescription = function extractTemplateOptionDescription(obj) {\n var defaultValue = '';\n if (isTemplateOptionDefined(obj) && obj.templateOptions.description) {\n return obj.templateOptions.description;\n }\n return defaultValue;\n};\n\nvar extractDefaultValue = function extractDefaultValue(obj) {\n var defaultValue = '';\n if (obj && obj.defaultValue) {\n return obj.defaultValue;\n }\n return defaultValue;\n};\n\nvar extractFormlyExpressionProperties = function extractFormlyExpressionProperties(obj) {\n var defaultValue = {};\n if (obj && obj.formlyExpressionProperties) {\n return angular.copy(obj.formlyExpressionProperties);\n }\n return defaultValue;\n};\n\nvar extractFormlyValidators = function extractFormlyValidators(obj) {\n var defaultValue = {};\n if (obj && obj.formlyValidators) {\n return angular.copy(obj.formlyValidators);\n }\n return defaultValue;\n};\n\nvar extractFormlyValidation = function extractFormlyValidation(obj) {\n var defaultValue = {};\n if (obj && obj.formlyValidation) {\n return angular.copy(obj.formlyValidation);\n }\n return defaultValue;\n};\n\nvar addDatepickerOptionsProperty = function addDatepickerOptionsProperty(fieldToPush, configurationModel, lineIndex) {\n var control = _extends({}, configurationModel.lines[lineIndex].columns[0].control);\n fieldToPush.templateOptions.datepickerOptions = extractTemplateOptionDatepickerOptions(control);\n};\n\n// const addOneColumnHeader = (formlyModel, configurationModel, lineIndex) => {\n// const control = { ...configurationModel.lines[lineIndex].columns[0].control };\n// const defaultTemplate = '
';\n// const headerTemplateCol0 = {\n// template : `\n// \n//
\n//
\n// ${extractTemplateOptionDescription(control)}\n// \n// \n// \n//
\n// `\n// };\n// if (control.type && control.type === 'header') {\n// return formlyModel.push({\n// template: headerTemplateCol0.template\n// });\n// }\n// return formlyModel.push({\n// template : defaultTemplate\n// });\n// };\n\nvar addOneColumnControl = function addOneColumnControl(formlyModel, configurationModel, lineIndex) {\n var control = _extends({}, configurationModel.lines[lineIndex].columns[0].control);\n var fieldToPush = {\n className: 'col-xs-12',\n type: control && control.type && control.type !== 'none' ? control.type : 'blank',\n key: control && control.key ? control.key : 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control),\n label: extractTemplateOptionLabel(control),\n required: extractTemplateOptionRequired(control),\n placeholder: extractTemplateOptionPlaceholder(control),\n description: extractTemplateOptionDescription(control),\n options: extractTemplateOptionOptions(control)\n },\n defaultValue: extractDefaultValue(control),\n expressionProperties: extractFormlyExpressionProperties(control),\n validators: extractFormlyValidators(control),\n validation: extractFormlyValidation(control)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control.type === 'datepicker') {\n addDatepickerOptionsProperty(fieldToPush, configurationModel, lineIndex);\n }\n formlyModel.push(fieldToPush);\n};\n\nvar addTwoColumnControl = function addTwoColumnControl(formlyModel, configurationModel, lineIndex) {\n var control0 = _extends({}, configurationModel.lines[lineIndex].columns[0].control);\n //text header is stored in \"description\" in templateOtion model\n var headerTemplateCol0 = {\n className: 'col-xs-6',\n template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control0) + '\\n \\n \\n \\n
\\n '\n };\n var controlCol0 = {\n className: 'col-xs-6',\n type: control0 && control0.type && control0.type !== 'none' ? control0.type : 'blank',\n key: control0 && control0.key ? control0.key : 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control0),\n label: extractTemplateOptionLabel(control0),\n required: extractTemplateOptionRequired(control0),\n placeholder: extractTemplateOptionPlaceholder(control0),\n description: extractTemplateOptionDescription(control0),\n options: extractTemplateOptionOptions(control0)\n },\n defaultValue: extractDefaultValue(control0),\n expressionProperties: extractFormlyExpressionProperties(control0),\n validators: extractFormlyValidators(control0),\n validation: extractFormlyValidation(control0)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control0.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol0, configurationModel, lineIndex);\n }\n\n var control1 = _extends({}, configurationModel.lines[lineIndex].columns[1].control);\n var headerTemplateCol1 = {\n className: 'col-xs-6',\n template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control1) + '\\n \\n \\n \\n
\\n '\n };\n var controlCol1 = {\n className: 'col-xs-6',\n type: control1 && control1.type && control1.type !== 'none' ? control1.type : 'none',\n key: control1 && control1.key ? control1.key : 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control1),\n label: extractTemplateOptionLabel(control1),\n required: extractTemplateOptionRequired(control1),\n placeholder: extractTemplateOptionPlaceholder(control1),\n description: extractTemplateOptionDescription(control1),\n options: extractTemplateOptionOptions(control1)\n },\n defaultValue: extractDefaultValue(control1),\n expressionProperties: extractFormlyExpressionProperties(control1),\n validators: extractFormlyValidators(control1),\n validation: extractFormlyValidation(control1)\n };\n //////////////////////////////////////////////\n // datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control1.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol1, configurationModel, lineIndex);\n }\n\n var FieldGroup = [];\n\n if (control0.type === 'header') {\n FieldGroup.push(headerTemplateCol0);\n } else {\n FieldGroup.push(controlCol0);\n }\n\n if (control1.type === 'header') {\n FieldGroup.push(headerTemplateCol1);\n } else {\n FieldGroup.push(controlCol1);\n }\n\n formlyModel.push({\n className: 'row',\n fieldGroup: FieldGroup\n });\n};\n\nvar addThreeColumnControl = function addThreeColumnControl(formlyModel, configurationModel, lineIndex) {\n var control0 = _extends({}, configurationModel.lines[lineIndex].columns[0].control);\n //text header is stored in \"description\" in templateOtion model\n var headerTemplateCol0 = {\n className: 'col-xs-4',\n template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control0) + '\\n \\n \\n \\n
\\n '\n };\n var controlCol0 = {\n className: 'col-xs-4',\n type: control0 && control0.type && control0.type !== 'none' ? control0.type : 'blank',\n key: control0 && control0.key ? control0.key : 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control0),\n label: extractTemplateOptionLabel(control0),\n required: extractTemplateOptionRequired(control0),\n placeholder: extractTemplateOptionPlaceholder(control0),\n description: extractTemplateOptionDescription(control0),\n options: extractTemplateOptionOptions(control0)\n },\n defaultValue: extractDefaultValue(control0),\n expressionProperties: extractFormlyExpressionProperties(control0),\n validators: extractFormlyValidators(control0),\n validation: extractFormlyValidation(control0)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control0.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol0, configurationModel, lineIndex);\n }\n\n var control1 = _extends({}, configurationModel.lines[lineIndex].columns[1].control);\n var headerTemplateCol1 = {\n className: 'col-xs-4',\n template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control1) + '\\n \\n \\n \\n
\\n '\n };\n var controlCol1 = {\n className: 'col-xs-4',\n type: control1 && control1.type && control1.type !== 'none' ? control1.type : 'blank',\n key: control1 && control1.key ? control1.key : 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control1),\n label: extractTemplateOptionLabel(control1),\n required: extractTemplateOptionRequired(control1),\n placeholder: extractTemplateOptionPlaceholder(control1),\n description: extractTemplateOptionDescription(control1),\n options: extractTemplateOptionOptions(control1)\n },\n defaultValue: extractDefaultValue(control1),\n expressionProperties: extractFormlyExpressionProperties(control1),\n validators: extractFormlyValidators(control1),\n validation: extractFormlyValidation(control1)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control1.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol1, configurationModel, lineIndex);\n }\n\n var control2 = _extends({}, configurationModel.lines[lineIndex].columns[2].control);\n var headerTemplateCol2 = {\n className: 'col-xs-4',\n template: '\\n \\n
\\n
\\n ' + extractTemplateOptionDescription(control2) + '\\n \\n \\n \\n
\\n '\n };\n var controlCol2 = {\n className: 'col-xs-4',\n type: control2 && control2.type && control2.type !== 'none' ? control2.type : 'blank',\n key: control2 && control2.key ? control2.key : 'blank' + Date.now(),\n templateOptions: {\n type: extractTemplateOptionType(control2),\n label: extractTemplateOptionLabel(control2),\n required: extractTemplateOptionRequired(control2),\n placeholder: extractTemplateOptionPlaceholder(control2),\n description: extractTemplateOptionDescription(control2),\n options: extractTemplateOptionOptions(control2)\n },\n defaultValue: extractDefaultValue(control2),\n expressionProperties: extractFormlyExpressionProperties(control2),\n validators: extractFormlyValidators(control2),\n validation: extractFormlyValidation(control2)\n };\n //////////////////////////////////////////////\n //datepicker additionnal particular property\n //////////////////////////////////////////////\n if (control2.type === 'datepicker') {\n addDatepickerOptionsProperty(controlCol2, configurationModel, lineIndex);\n }\n\n var FieldGroup = [];\n\n if (control0.type === 'header') {\n FieldGroup.push(headerTemplateCol0);\n } else {\n FieldGroup.push(controlCol0);\n }\n\n if (control1.type === 'header') {\n FieldGroup.push(headerTemplateCol1);\n } else {\n FieldGroup.push(controlCol1);\n }\n\n if (control2.type === 'header') {\n FieldGroup.push(headerTemplateCol2);\n } else {\n FieldGroup.push(controlCol2);\n }\n\n formlyModel.push({\n className: 'row',\n fieldGroup: FieldGroup\n });\n};\n\nvar resetDataModel = function resetDataModel(obj) {\n var emptyDataModel = {};\n angular.copy(emptyDataModel, obj);\n return true;\n};\n\nvar resetFormlyModel = function resetFormlyModel(formlyModel) {\n var resetformly = [];\n angular.copy(resetformly, formlyModel);\n};\n\nexports.configurationModelInit = configurationModelInit;\nexports.configurationModelResult = configurationModelResult;\nexports.resetDataModel = resetDataModel;\nexports.resetFormlyModel = resetFormlyModel;\nexports.isTemplateOptionDefined = isTemplateOptionDefined;\nexports.extractTemplateOptionLabel = extractTemplateOptionLabel;\nexports.extractTemplateOptionDatepickerOptions = extractTemplateOptionDatepickerOptions;\nexports.extractDefaultValue = extractDefaultValue;\nexports.extractFormlyExpressionProperties = extractFormlyExpressionProperties;\nexports.extractFormlyValidators = extractFormlyValidators;\nexports.extractFormlyValidation = extractFormlyValidation;\nexports.extractTemplateOptionRequired = extractTemplateOptionRequired;\nexports.extractTemplateOptionOptions = extractTemplateOptionOptions;\nexports.extractTemplateOptionType = extractTemplateOptionType;\nexports.extractTemplateOptionPlaceholder = extractTemplateOptionPlaceholder;\nexports.extractTemplateOptionDescription = extractTemplateOptionDescription;\nexports.addDatepickerOptionsProperty = addDatepickerOptionsProperty;\nexports.addOneColumnControl = addOneColumnControl;\nexports.addTwoColumnControl = addTwoColumnControl;\nexports.addThreeColumnControl = addThreeColumnControl;//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvc2VydmljZXMvZm9ybWx5UHJveHkvZm9ybWx5UHJveHkuc2VydmljZS5oZWxwZXJzLmpzPzgxNjgiXSwibmFtZXMiOlsiY29uZmlndXJhdGlvbk1vZGVsSW5pdCIsImFjdGl2ZUxpbmUiLCJsaXN0Q29uZmlnU3RlcCIsInN0ZXBJbmRpY2F0b3JzIiwiY29uZmlnU3RlcENvdW50ZXIiLCJzdWJtaXRCdXR0b25UZXh0IiwiY2FuY2VsQnV0dG9uVGV4dCIsImxpbmVzIiwibGluZSIsImFjdGl2ZUNvbHVtbiIsImNvbHVtbnMiLCJudW1Db2x1bW4iLCJleGlzdCIsImNvbnRyb2wiLCJ0eXBlIiwia2V5IiwiY29uZmlndXJhdGlvbk1vZGVsUmVzdWx0IiwiY2FuY2VsQnV0dG9uVGV4IiwiaXNUZW1wbGF0ZU9wdGlvbkRlZmluZWQiLCJvYmoiLCJkZWZhdWx0VmFsdWUiLCJ0ZW1wbGF0ZU9wdGlvbnMiLCJleHRyYWN0VGVtcGxhdGVPcHRpb25MYWJlbCIsImxhYmVsIiwiZXh0cmFjdFRlbXBsYXRlT3B0aW9uRGF0ZXBpY2tlck9wdGlvbnMiLCJmb3JtYXQiLCJkYXRlcGlja2VyT3B0aW9ucyIsImV4dHJhY3RUZW1wbGF0ZU9wdGlvblJlcXVpcmVkIiwicmVxdWlyZWQiLCJleHRyYWN0VGVtcGxhdGVPcHRpb25PcHRpb25zIiwib3B0aW9ucyIsImV4dHJhY3RUZW1wbGF0ZU9wdGlvblR5cGUiLCJzdWJ0eXBlIiwiZXh0cmFjdFRlbXBsYXRlT3B0aW9uUGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsImV4dHJhY3RUZW1wbGF0ZU9wdGlvbkRlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJleHRyYWN0RGVmYXVsdFZhbHVlIiwiZXh0cmFjdEZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzIiwiZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMiLCJhbmd1bGFyIiwiY29weSIsImV4dHJhY3RGb3JtbHlWYWxpZGF0b3JzIiwiZm9ybWx5VmFsaWRhdG9ycyIsImV4dHJhY3RGb3JtbHlWYWxpZGF0aW9uIiwiZm9ybWx5VmFsaWRhdGlvbiIsImFkZERhdGVwaWNrZXJPcHRpb25zUHJvcGVydHkiLCJmaWVsZFRvUHVzaCIsImNvbmZpZ3VyYXRpb25Nb2RlbCIsImxpbmVJbmRleCIsImFkZE9uZUNvbHVtbkNvbnRyb2wiLCJmb3JtbHlNb2RlbCIsImNsYXNzTmFtZSIsIkRhdGUiLCJub3ciLCJleHByZXNzaW9uUHJvcGVydGllcyIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0aW9uIiwicHVzaCIsImFkZFR3b0NvbHVtbkNvbnRyb2wiLCJjb250cm9sMCIsImhlYWRlclRlbXBsYXRlQ29sMCIsInRlbXBsYXRlIiwiY29udHJvbENvbDAiLCJjb250cm9sMSIsImhlYWRlclRlbXBsYXRlQ29sMSIsImNvbnRyb2xDb2wxIiwiRmllbGRHcm91cCIsImZpZWxkR3JvdXAiLCJhZGRUaHJlZUNvbHVtbkNvbnRyb2wiLCJjb250cm9sMiIsImhlYWRlclRlbXBsYXRlQ29sMiIsImNvbnRyb2xDb2wyIiwicmVzZXREYXRhTW9kZWwiLCJlbXB0eURhdGFNb2RlbCIsInJlc2V0Rm9ybWx5TW9kZWwiLCJyZXNldGZvcm1seSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFNQSx5QkFBeUI7QUFDN0JDLGNBQVksQ0FEaUI7QUFFN0JDLGtCQUFnQixDQUNkLE1BRGMsRUFFZCxPQUZjLEVBR2QsUUFIYyxFQUlkLE9BSmMsQ0FGYTtBQVE3QkMsa0JBQWlCLENBQ2YsSUFEZSxFQUVmLEtBRmUsRUFHZixLQUhlLEVBSWYsS0FKZSxDQVJZO0FBYzdCQyxxQkFBbUIsQ0FkVTtBQWU3QkMsb0JBQWtCLFFBZlc7QUFnQjdCQyxvQkFBa0IsUUFoQlc7QUFpQjdCQyxTQUFPLENBQ0w7QUFDRUMsVUFBTSxDQURSO0FBRUVDLGtCQUFjLENBRmhCO0FBR0VDLGFBQWlCLENBQUM7QUFDaEJDLGlCQUFXLENBREs7QUFFaEJDLGFBQU0sSUFGVTtBQUdoQkMsZUFBUztB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dGlvbk1vZGVsSW5pdCA9IHtcbiAgYWN0aXZlTGluZTogMSxcbiAgbGlzdENvbmZpZ1N0ZXA6IFtcbiAgICAnaW5pdCcsXG4gICAgJ2ZpcnN0JyxcbiAgICAnc2Vjb25kJyxcbiAgICAndGhpcmQnXG4gIF0sXG4gIHN0ZXBJbmRpY2F0b3JzOiAgW1xuICAgIHRydWUsXG4gICAgZmFsc2UsXG4gICAgZmFsc2UsXG4gICAgZmFsc2VcbiAgXSxcbiAgY29uZmlnU3RlcENvdW50ZXI6IDAsXG4gIHN1Ym1pdEJ1dHRvblRleHQ6ICdzdWJtaXQnLFxuICBjYW5jZWxCdXR0b25UZXh0OiAnY2FuY2VsJyxcbiAgbGluZXM6IFtcbiAgICB7XG4gICAgICBsaW5lOiAxLFxuICAgICAgYWN0aXZlQ29sdW1uOiAxLFxuICAgICAgY29sdW1ucyAgICAgICAgOiBbe1xuICAgICAgICBudW1Db2x1bW46IDEsXG4gICAgICAgIGV4aXN0OnRydWUsXG4gICAgICAgIGNvbnRyb2w6IHtcbiAgICAgICAgICB0eXBlOidub25lJyxcbiAgICAgICAgICBrZXk6ICdub25lJyAvLyAsXG4gICAgICAgICAgLy8gdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgLy8gICBsYWJlbDogJ25vbmUnLFxuICAgICAgICAgIC8vICAgcGxhY2Vob2xkZXI6ICdub25lJyxcbiAgICAgICAgICAvLyAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAvLyAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpdmUgdGV4dCdcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICBdXG59O1xuXG5jb25zdCBjb25maWd1cmF0aW9uTW9kZWxSZXN1bHQgPSB7XG4gIGFjdGl2ZUxpbmU6IDEsXG4gIGxpc3RDb25maWdTdGVwOiBbXG4gICAgJ2luaXQnLFxuICAgICdmaXJzdCcsXG4gICAgJ3NlY29uZCcsXG4gICAgJ3RoaXJkJ1xuICBdLFxuICBzdGVwSW5kaWNhdG9yczogIFtcbiAgICB0cnVlLFxuICAgIGZhbHNlLFxuICAgIGZhbHNlLFxuICAgIGZhbHNlXG4gIF0sXG4gIGNvbmZpZ1N0ZXBDb3VudGVyOiAwLFxuICBzdWJtaXRCdXR0b25UZXh0OiAnc3VibWl0JyxcbiAgY2FuY2VsQnV0dG9uVGV4OiAnY2FuY2VsJyxcbiAgbGluZXM6IFtdXG59O1xuXG5jb25zdCBpc1RlbXBsYXRlT3B0aW9uRGVmaW5lZCA9IChvYmopID0+IHtcbiAgY29uc3QgZGVmYXVsdFZhbHVlID0gZmFsc2U7XG4gIGlmIChvYmogJiYgb2JqLnRlbXBsYXRlT3B0aW9ucykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59O1xuXG5jb25zdCBleHRyYWN0VGVtcGxhdGVPcHRpb25MYWJlbCA9IChvYmopID0+IHtcbiAgY29uc3QgZGVmYXVsdFZhbHVlID0gJyc7XG4gIGlmIChpc1RlbXBsYXRlT3B0aW9uRGVmaW5lZChvYmopICYmIG9iai50ZW1wbGF0ZU9wdGlvbnMubGFiZWwpIHtcbiAgICByZXR1cm4gb2JqLnRlbXBsYXRlT3B0aW9ucy5sYWJlbDtcbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufTtcblxuY29uc3QgZXh0cmFjdFRlbXBsYXRlT3B0aW9uRGF0ZXBpY2tlck9wdGlvbnM9IChvYmopID0+IHtcbiAgY29uc3QgZGVmYXVsdFZhbHVlID0geyBmb3JtYXQ6ICcnIH07XG4gIGlmIChpc1RlbXBsYXRlT3B0aW9uRGVmaW5lZChvYmopICYmIG9iai50ZW1wbGF0ZU9wdGlvbnMuZGF0ZXBpY2tlck9wdGlvbnMpIHtcbiAgICByZXR1cm4gey4uLm9iai50ZW1wbGF0ZU9wdGlvbnMuZGF0ZXBpY2tlck9wdGlvbnN9O1xuICB9XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59O1xuXG5jb25zdCBleHRyYWN0VGVtcGxhdGVPcHRpb25SZXF1aXJlZCA9IChvYmopID0+IHtcbiAgY29uc3QgZGVmYXVsdFZhbHVlID0gZmFsc2U7XG4gIGlmIChpc1RlbXBsYXRlT3B0aW9uRGVmaW5lZChvYmopICYmIG9iai50ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufTtcblxuY29uc3QgZXh0cmFjdFRlbXBsYXRlT3B0aW9uT3B0aW9ucyA9IChvYmopID0+IHtcbiAgY29uc3QgZGVmYXVsdFZhbHVlID0gJyc7XG4gIGlmIChpc1RlbXBsYXRlT3B0aW9uRGVmaW5lZChvYmopICYmIG9iai50ZW1wbGF0ZU9wdGlvbnMub3B0aW9ucykge1xuICAgIHJldHVybiBvYmoudGVtcGxhdGVPcHRpb25zLm9wdGlvbnM7XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGV4dHJhY3RUZW1wbGF0ZU9wdGlvblR5cGUgPSAob2JqKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRWYWx1ZSA9ICcnO1xuICBpZiAob2JqICYmIG9iai5zdWJ0eXBlKSB7XG4gICAgcmV0dXJuIG9iai5zdWJ0eXBlO1xuICB9XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59O1xuXG5jb25zdCBleHRyYWN0VGVtcGxhdGVPcHRpb25QbGFjZWhvbGRlciA9IChvYmopID0+IHtcbiAgY29uc3QgZGVmYXVsdFZhbHVlID0gJyc7XG4gIGlmIChpc1RlbXBsYXRlT3B0aW9uRGVmaW5lZChvYmopICYmIG9iai50ZW1wbGF0ZU9wdGlvbnMucGxhY2Vob2xkZXIpIHtcbiAgICByZXR1cm4gb2JqLnRlbXBsYXRlT3B0aW9ucy5wbGFjZWhvbGRlcjtcbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufTtcblxuY29uc3QgZXh0cmFjdFRlbXBsYXRlT3B0aW9uRGVzY3JpcHRpb24gPSAob2JqKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRWYWx1ZSA9ICcnO1xuICBpZiAoaXNUZW1wbGF0ZU9wdGlvbkRlZmluZWQob2JqKSAmJiBvYmoudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uKSB7XG4gICAgcmV0dXJuIG9iai50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb247XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGV4dHJhY3REZWZhdWx0VmFsdWUgPSAob2JqKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRWYWx1ZSA9ICcnO1xuICBpZiAob2JqICYmIG9iai5kZWZhdWx0VmFsdWUpIHtcbiAgICByZXR1cm4gb2JqLmRlZmF1bHRWYWx1ZTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufTtcblxuY29uc3QgZXh0cmFjdEZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzID0gKG9iaikgPT4ge1xuICBjb25zdCBkZWZhdWx0VmFsdWUgPSB7fTtcbiAgaWYgKG9iaiAmJiBvYmouZm9ybWx5RXhwcmVzc2lvblByb3BlcnRpZXMpIHtcbiAgICByZXR1cm4gYW5ndWxhci5jb3B5KG9iai5mb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyk7XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbn07XG5cbmNvbnN0IGV4dHJhY3RGb3JtbHlWYWxpZGF0b3JzID0gKG9iaikgPT4ge1xuICBjb25zdCBkZWZhdWx0VmFsdWUgPSB7fTtcbiAgaWYgKG9iaiAmJiBvYmouZm9ybWx5VmFsaWRhdG9ycykge1xuICAgIHJldHVybiBhbmd1bGFyLmNvcHkob2JqLmZvcm1seVZhbGlkYXRvcnMpO1xuICB9XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59O1xuXG5jb25zdCBleHRyYWN0Rm9ybWx5VmFsaWRhdGlvbiA9IChvYmopID0+IHtcbiAgY29uc3QgZGVmYXVsdFZhbHVlID0ge307XG4gIGlmIChvYmogJiYgb2JqLmZvcm1seVZhbGlkYXRpb24pIHtcbiAgICByZXR1cm4gYW5ndWxhci5jb3B5KG9iai5mb3JtbHlWYWxpZGF0aW9uKTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufTtcblxuY29uc3QgYWRkRGF0ZXBpY2tlck9wdGlvbnNQcm9wZXJ0eSA9IChmaWVsZFRvUHVzaCwgY29uZmlndXJhdGlvbk1vZGVsLCBsaW5lSW5kZXgpID0+IHtcbiAgY29uc3QgY29udHJvbCA9IHsuLi5jb25maWd1cmF0aW9uTW9kZWwubGluZXNbbGluZUluZGV4XS5jb2x1bW5zWzBdLmNvbnRyb2x9O1xuICBmaWVsZFRvUHVzaC50ZW1wbGF0ZU9wdGlvbnMuZGF0ZXBpY2tlck9wdGlvbnMgPSBleHRyYWN0VGVtcGxhdGVPcHRpb25EYXRlcGlja2VyT3B0aW9ucyhjb250cm9sKTtcbn07XG5cbi8vIGNvbnN0IGFkZE9uZUNvbHVtbkhlYWRlciA9IChmb3JtbHlNb2RlbCwgY29uZmlndXJhdGlvbk1vZGVsLCBsaW5lSW5kZXgpID0+IHtcbi8vICAgY29uc3QgY29udHJvbCA9IHsgLi4uY29uZmlndXJhdGlvbk1vZGVsLmxpbmVzW2xpbmVJbmRleF0uY29sdW1uc1swXS5jb250cm9sIH07XG4vLyAgIGNvbnN0IGRlZmF1bHRUZW1wbGF0ZSA9ICc8ZGl2PjwvZGl2Pic7XG4vLyAgIGNvbnN0IGhlYWRlclRlbXBsYXRlQ29sMCA9ICB7XG4vLyAgICAgdGVtcGxhdGUgOiBgXG4vLyAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuLy8gICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuLy8gICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuLy8gICAgICAgICAgICR7ZXh0cmFjdFRlbXBsYXRlT3B0aW9uRGVzY3JpcHRpb24oY29udHJvbCl9XG4vLyAgICAgICAgIDwvaDI+XG4vLyAgICAgICAgIDxoci8+XG4vLyAgICAgICA8L2Rpdj5cbi8vICAgICA8L2Rpdj5cbi8vICAgICBgXG4vLyAgIH07XG4vLyAgIGlmIChjb250cm9sLnR5cGUgJiYgY29udHJvbC50eXBlICA9PT0gJ2hlYWRlcicpIHtcbi8vICAgICByZXR1cm4gZm9ybWx5TW9kZWwucHVzaCh7XG4vLyAgICAgICB0ZW1wbGF0ZTogaGVhZGVyVGVtcGxhdGVDb2wwLnRlbXBsYXRlXG4vLyAgICAgfSk7XG4vLyAgIH1cbi8vICAgcmV0dXJuIGZvcm1seU1vZGVsLnB1c2goe1xuLy8gICAgIHRlbXBsYXRlIDogZGVmYXVsdFRlbXBsYXRlXG4vLyAgIH0pO1xuLy8gfTtcblxuY29uc3QgYWRkT25lQ29sdW1uQ29udHJvbCA9IChmb3JtbHlNb2RlbCwgY29uZmlndXJhdGlvbk1vZGVsLGxpbmVJbmRleCkgPT4ge1xuICBjb25zdCBjb250cm9sID0geyAuLi5jb25maWd1cmF0aW9uTW9kZWwubGluZXNbbGluZUluZGV4XS5jb2x1bW5zWzBdLmNvbnRyb2wgfTtcbiAgY29uc3QgZmllbGRUb1B1c2ggPSB7XG4gICAgY2xhc3NOYW1lOiAnY29sLXhzLTEyJyxcbiAgICB0eXBlOiBjb250cm9sICYmIGNvbnRyb2wudHlwZSAmJiBjb250cm9sLnR5cGUgIT09ICdub25lJyA/IGNvbnRyb2wudHlwZSA6ICdibGFuaycsXG4gICAga2V5OiBjb250cm9sICYmIGNvbnRyb2wua2V5ID8gY29udHJvbC5rZXkgOiAnYmxhbmsnICsgRGF0ZS5ub3coKSxcbiAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgIHR5cGU6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvblR5cGUoY29udHJvbCksXG4gICAgICBsYWJlbDogZXh0cmFjdFRlbXBsYXRlT3B0aW9uTGFiZWwoY29udHJvbCksXG4gICAgICByZXF1aXJlZDogZXh0cmFjdFRlbXBsYXRlT3B0aW9uUmVxdWlyZWQoY29udHJvbCksXG4gICAgICBwbGFjZWhvbGRlcjogZXh0cmFjdFRlbXBsYXRlT3B0aW9uUGxhY2Vob2xkZXIoY29udHJvbCksXG4gICAgICBkZXNjcmlwdGlvbjogZXh0cmFjdFRlbXBsYXRlT3B0aW9uRGVzY3JpcHRpb24oY29udHJvbCksXG4gICAgICBvcHRpb25zOiBleHRyYWN0VGVtcGxhdGVPcHRpb25PcHRpb25zKGNvbnRyb2wpXG4gICAgfSxcbiAgICBkZWZhdWx0VmFsdWU6IGV4dHJhY3REZWZhdWx0VmFsdWUoY29udHJvbCksXG4gICAgZXhwcmVzc2lvblByb3BlcnRpZXM6IGV4dHJhY3RGb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyhjb250cm9sKSxcbiAgICB2YWxpZGF0b3JzOiBleHRyYWN0Rm9ybWx5VmFsaWRhdG9ycyhjb250cm9sKSxcbiAgICB2YWxpZGF0aW9uOiBleHRyYWN0Rm9ybWx5VmFsaWRhdGlvbihjb250cm9sKVxuICB9O1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vZGF0ZXBpY2tlciBhZGRpdGlvbm5hbCBwYXJ0aWN1bGFyIHByb3BlcnR5XG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgaWYgKGNvbnRyb2wudHlwZSA9PT0gJ2RhdGVwaWNrZXInKSB7XG4gICAgYWRkRGF0ZXBpY2tlck9wdGlvbnNQcm9wZXJ0eShmaWVsZFRvUHVzaCwgY29uZmlndXJhdGlvbk1vZGVsLCBsaW5lSW5kZXgpO1xuICB9XG4gIGZvcm1seU1vZGVsLnB1c2goZmllbGRUb1B1c2gpO1xufTtcblxuY29uc3QgYWRkVHdvQ29sdW1uQ29udHJvbCA9IChmb3JtbHlNb2RlbCwgY29uZmlndXJhdGlvbk1vZGVsLGxpbmVJbmRleCkgPT4ge1xuICBjb25zdCBjb250cm9sMCA9IHsgLi4uY29uZmlndXJhdGlvbk1vZGVsLmxpbmVzW2xpbmVJbmRleF0uY29sdW1uc1swXS5jb250cm9sIH07XG4gIC8vdGV4dCBoZWFkZXIgaXMgc3RvcmVkIGluIFwiZGVzY3JpcHRpb25cIiBpbiB0ZW1wbGF0ZU90aW9uIG1vZGVsXG4gIGNvbnN0IGhlYWRlclRlbXBsYXRlQ29sMCA9ICB7XG4gICAgY2xhc3NOYW1lOiAnY29sLXhzLTYnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICR7ZXh0cmFjdFRlbXBsYXRlT3B0aW9uRGVzY3JpcHRpb24oY29udHJvbDApfVxuICAgICAgICA8L2gyPlxuICAgICAgICA8aHIvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGBcbiAgfTtcbiAgY29uc3QgY29udHJvbENvbDAgPSB7XG4gICAgY2xhc3NOYW1lOiAnY29sLXhzLTYnLFxuICAgIHR5cGU6IGNvbnRyb2wwICYmIGNvbnRyb2wwLnR5cGUgJiYgY29udHJvbDAudHlwZSAhPT0gJ25vbmUnID8gY29udHJvbDAudHlwZTogICdibGFuaycsXG4gICAga2V5OiBjb250cm9sMCAmJiBjb250cm9sMC5rZXkgPyBjb250cm9sMC5rZXk6ICdibGFuaycgKyBEYXRlLm5vdygpLFxuICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgdHlwZTogZXh0cmFjdFRlbXBsYXRlT3B0aW9uVHlwZShjb250cm9sMCksXG4gICAgICBsYWJlbDogZXh0cmFjdFRlbXBsYXRlT3B0aW9uTGFiZWwoY29udHJvbDApLFxuICAgICAgcmVxdWlyZWQ6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvblJlcXVpcmVkKGNvbnRyb2wwKSxcbiAgICAgIHBsYWNlaG9sZGVyOiBleHRyYWN0VGVtcGxhdGVPcHRpb25QbGFjZWhvbGRlcihjb250cm9sMCksXG4gICAgICBkZXNjcmlwdGlvbjogZXh0cmFjdFRlbXBsYXRlT3B0aW9uRGVzY3JpcHRpb24oY29udHJvbDApLFxuICAgICAgb3B0aW9uczogZXh0cmFjdFRlbXBsYXRlT3B0aW9uT3B0aW9ucyhjb250cm9sMClcbiAgICB9LFxuICAgIGRlZmF1bHRWYWx1ZTogZXh0cmFjdERlZmF1bHRWYWx1ZShjb250cm9sMCksXG4gICAgZXhwcmVzc2lvblByb3BlcnRpZXM6IGV4dHJhY3RGb3JtbHlFeHByZXNzaW9uUHJvcGVydGllcyhjb250cm9sMCksXG4gICAgdmFsaWRhdG9yczogZXh0cmFjdEZvcm1seVZhbGlkYXRvcnMoY29udHJvbDApLFxuICAgIHZhbGlkYXRpb246IGV4dHJhY3RGb3JtbHlWYWxpZGF0aW9uKGNvbnRyb2wwKVxuICB9O1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vZGF0ZXBpY2tlciBhZGRpdGlvbm5hbCBwYXJ0aWN1bGFyIHByb3BlcnR5XG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgaWYgKGNvbnRyb2wwLnR5cGUgPT09ICdkYXRlcGlja2VyJykge1xuICAgIGFkZERhdGVwaWNrZXJPcHRpb25zUHJvcGVydHkoY29udHJvbENvbDAsIGNvbmZpZ3VyYXRpb25Nb2RlbCwgbGluZUluZGV4KTtcbiAgfVxuXG4gIGNvbnN0IGNvbnRyb2wxID0geyAuLi5jb25maWd1cmF0aW9uTW9kZWwubGluZXNbbGluZUluZGV4XS5jb2x1bW5zWzFdLmNvbnRyb2wgfTtcbiAgY29uc3QgaGVhZGVyVGVtcGxhdGVDb2wxID0gIHtcbiAgICBjbGFzc05hbWU6ICdjb2wteHMtNicsXG4gICAgdGVtcGxhdGU6YFxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAke2V4dHJhY3RUZW1wbGF0ZU9wdGlvbkRlc2NyaXB0aW9uKGNvbnRyb2wxKX1cbiAgICAgICAgPC9oMj5cbiAgICAgICAgPGhyLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgXG4gIH07XG4gIGNvbnN0IGNvbnRyb2xDb2wxID0gIHtcbiAgICBjbGFzc05hbWU6ICdjb2wteHMtNicsXG4gICAgdHlwZTogY29udHJvbDEgJiYgY29udHJvbDEudHlwZSAmJiBjb250cm9sMS50eXBlICE9PSAnbm9uZScgPyBjb250cm9sMS50eXBlIDogJ25vbmUnLFxuICAgIGtleTogY29udHJvbDEgJiYgY29udHJvbDEua2V5ID8gY29udHJvbDEua2V5IDogJ2JsYW5rJyArIERhdGUubm93KCksXG4gICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICB0eXBlOiBleHRyYWN0VGVtcGxhdGVPcHRpb25UeXBlKGNvbnRyb2wxKSxcbiAgICAgIGxhYmVsOiBleHRyYWN0VGVtcGxhdGVPcHRpb25MYWJlbChjb250cm9sMSksXG4gICAgICByZXF1aXJlZDogZXh0cmFjdFRlbXBsYXRlT3B0aW9uUmVxdWlyZWQoY29udHJvbDEpLFxuICAgICAgcGxhY2Vob2xkZXI6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvblBsYWNlaG9sZGVyKGNvbnRyb2wxKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBleHRyYWN0VGVtcGxhdGVPcHRpb25EZXNjcmlwdGlvbihjb250cm9sMSksXG4gICAgICBvcHRpb25zOiBleHRyYWN0VGVtcGxhdGVPcHRpb25PcHRpb25zKGNvbnRyb2wxKVxuICAgIH0sXG4gICAgZGVmYXVsdFZhbHVlOiBleHRyYWN0RGVmYXVsdFZhbHVlKGNvbnRyb2wxKSxcbiAgICBleHByZXNzaW9uUHJvcGVydGllczogZXh0cmFjdEZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzKGNvbnRyb2wxKSxcbiAgICB2YWxpZGF0b3JzOiBleHRyYWN0Rm9ybWx5VmFsaWRhdG9ycyhjb250cm9sMSksXG4gICAgdmFsaWRhdGlvbjogZXh0cmFjdEZvcm1seVZhbGlkYXRpb24oY29udHJvbDEpXG4gIH07XG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gZGF0ZXBpY2tlciBhZGRpdGlvbm5hbCBwYXJ0aWN1bGFyIHByb3BlcnR5XG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgaWYgKGNvbnRyb2wxLnR5cGUgPT09ICdkYXRlcGlja2VyJykge1xuICAgIGFkZERhdGVwaWNrZXJPcHRpb25zUHJvcGVydHkoY29udHJvbENvbDEsIGNvbmZpZ3VyYXRpb25Nb2RlbCwgbGluZUluZGV4KTtcbiAgfVxuXG4gIGNvbnN0IEZpZWxkR3JvdXAgPSBbXTtcblxuICBpZiAoY29udHJvbDAudHlwZSA9PT0gJ2hlYWRlcicpIHtcbiAgIEZpZWxkR3JvdXAucHVzaChoZWFkZXJUZW1wbGF0ZUNvbDApO1xuICB9IGVsc2Uge1xuICAgRmllbGRHcm91cC5wdXNoKGNvbnRyb2xDb2wwKTtcbiAgfVxuXG4gIGlmIChjb250cm9sMS50eXBlID09PSAnaGVhZGVyJykge1xuICAgRmllbGRHcm91cC5wdXNoKGhlYWRlclRlbXBsYXRlQ29sMSk7XG4gIH0gZWxzZSB7XG4gICBGaWVsZEdyb3VwLnB1c2goY29udHJvbENvbDEpO1xuICB9XG5cbiAgZm9ybWx5TW9kZWwucHVzaCh7XG4gICAgY2xhc3NOYW1lOiAncm93JyxcbiAgICBmaWVsZEdyb3VwOiBGaWVsZEdyb3VwXG4gIH0pO1xufTtcblxuXG5jb25zdCBhZGRUaHJlZUNvbHVtbkNvbnRyb2wgPSAoZm9ybWx5TW9kZWwsIGNvbmZpZ3VyYXRpb25Nb2RlbCxsaW5lSW5kZXgpID0+IHtcbiAgY29uc3QgY29udHJvbDAgPSB7IC4uLmNvbmZpZ3VyYXRpb25Nb2RlbC5saW5lc1tsaW5lSW5kZXhdLmNvbHVtbnNbMF0uY29udHJvbCB9O1xuICAvL3RleHQgaGVhZGVyIGlzIHN0b3JlZCBpbiBcImRlc2NyaXB0aW9uXCIgaW4gdGVtcGxhdGVPdGlvbiBtb2RlbFxuICBjb25zdCBoZWFkZXJUZW1wbGF0ZUNvbDAgPSAge1xuICAgIGNsYXNzTmFtZTogJ2NvbC14cy00JyxcbiAgICB0ZW1wbGF0ZSA6IGBcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgJHtleHRyYWN0VGVtcGxhdGVPcHRpb25EZXNjcmlwdGlvbihjb250cm9sMCl9XG4gICAgICAgIDwvaDI+XG4gICAgICAgIDxoci8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBgXG4gIH07XG4gIGNvbnN0IGNvbnRyb2xDb2wwID0gIHtcbiAgICBjbGFzc05hbWU6ICdjb2wteHMtNCcsXG4gICAgdHlwZTogY29udHJvbDAgJiYgY29udHJvbDAudHlwZSAmJiBjb250cm9sMC50eXBlICE9PSAnbm9uZScgPyBjb250cm9sMC50eXBlOiAgJ2JsYW5rJyxcbiAgICBrZXk6IGNvbnRyb2wwICYmIGNvbnRyb2wwLmtleSA/IGNvbnRyb2wwLmtleTogJ2JsYW5rJyArIERhdGUubm93KCksXG4gICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICB0eXBlOiBleHRyYWN0VGVtcGxhdGVPcHRpb25UeXBlKGNvbnRyb2wwKSxcbiAgICAgIGxhYmVsOiBleHRyYWN0VGVtcGxhdGVPcHRpb25MYWJlbChjb250cm9sMCksXG4gICAgICByZXF1aXJlZDogZXh0cmFjdFRlbXBsYXRlT3B0aW9uUmVxdWlyZWQoY29udHJvbDApLFxuICAgICAgcGxhY2Vob2xkZXI6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvblBsYWNlaG9sZGVyKGNvbnRyb2wwKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBleHRyYWN0VGVtcGxhdGVPcHRpb25EZXNjcmlwdGlvbihjb250cm9sMCksXG4gICAgICBvcHRpb25zOiBleHRyYWN0VGVtcGxhdGVPcHRpb25PcHRpb25zKGNvbnRyb2wwKVxuICAgIH0sXG4gICAgZGVmYXVsdFZhbHVlOiBleHRyYWN0RGVmYXVsdFZhbHVlKGNvbnRyb2wwKSxcbiAgICBleHByZXNzaW9uUHJvcGVydGllczogZXh0cmFjdEZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzKGNvbnRyb2wwKSxcbiAgICB2YWxpZGF0b3JzOiBleHRyYWN0Rm9ybWx5VmFsaWRhdG9ycyhjb250cm9sMCksXG4gICAgdmFsaWRhdGlvbjogZXh0cmFjdEZvcm1seVZhbGlkYXRpb24oY29udHJvbDApXG4gIH07XG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy9kYXRlcGlja2VyIGFkZGl0aW9ubmFsIHBhcnRpY3VsYXIgcHJvcGVydHlcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBpZiAoY29udHJvbDAudHlwZSA9PT0gJ2RhdGVwaWNrZXInKSB7XG4gIGFkZERhdGVwaWNrZXJPcHRpb25zUHJvcGVydHkoY29udHJvbENvbDAsIGNvbmZpZ3VyYXRpb25Nb2RlbCxsaW5lSW5kZXgpO1xuICB9XG5cbiAgY29uc3QgY29udHJvbDEgPSB7IC4uLmNvbmZpZ3VyYXRpb25Nb2RlbC5saW5lc1tsaW5lSW5kZXhdLmNvbHVtbnNbMV0uY29udHJvbCB9O1xuICBjb25zdCBoZWFkZXJUZW1wbGF0ZUNvbDEgPSAge1xuICAgIGNsYXNzTmFtZTogJ2NvbC14cy00JyxcbiAgICB0ZW1wbGF0ZTpgXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICR7ZXh0cmFjdFRlbXBsYXRlT3B0aW9uRGVzY3JpcHRpb24oY29udHJvbDEpfVxuICAgICAgICA8L2gyPlxuICAgICAgICA8aHIvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgYFxuICB9O1xuICBjb25zdCBjb250cm9sQ29sMSA9IHtcbiAgICBjbGFzc05hbWU6ICdjb2wteHMtNCcsXG4gICAgdHlwZTogY29udHJvbDEgJiYgY29udHJvbDEudHlwZSAmJiBjb250cm9sMS50eXBlICE9PSAnbm9uZScgPyBjb250cm9sMS50eXBlOiAgJ2JsYW5rJyxcbiAgICBrZXk6IGNvbnRyb2wxICYmIGNvbnRyb2wxLmtleSA/IGNvbnRyb2wxLmtleTogJ2JsYW5rJyArIERhdGUubm93KCksXG4gICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICB0eXBlOiBleHRyYWN0VGVtcGxhdGVPcHRpb25UeXBlKGNvbnRyb2wxKSxcbiAgICAgIGxhYmVsOiBleHRyYWN0VGVtcGxhdGVPcHRpb25MYWJlbChjb250cm9sMSksXG4gICAgICByZXF1aXJlZDogZXh0cmFjdFRlbXBsYXRlT3B0aW9uUmVxdWlyZWQoY29udHJvbDEpLFxuICAgICAgcGxhY2Vob2xkZXI6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvblBsYWNlaG9sZGVyKGNvbnRyb2wxKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBleHRyYWN0VGVtcGxhdGVPcHRpb25EZXNjcmlwdGlvbihjb250cm9sMSksXG4gICAgICBvcHRpb25zOiBleHRyYWN0VGVtcGxhdGVPcHRpb25PcHRpb25zKGNvbnRyb2wxKVxuICAgIH0sXG4gICAgZGVmYXVsdFZhbHVlOiBleHRyYWN0RGVmYXVsdFZhbHVlKGNvbnRyb2wxKSxcbiAgICBleHByZXNzaW9uUHJvcGVydGllczogZXh0cmFjdEZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzKGNvbnRyb2wxKSxcbiAgICB2YWxpZGF0b3JzOiBleHRyYWN0Rm9ybWx5VmFsaWRhdG9ycyhjb250cm9sMSksXG4gICAgdmFsaWRhdGlvbjogZXh0cmFjdEZvcm1seVZhbGlkYXRpb24oY29udHJvbDEpXG4gIH07XG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy9kYXRlcGlja2VyIGFkZGl0aW9ubmFsIHBhcnRpY3VsYXIgcHJvcGVydHlcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBpZiAoY29udHJvbDEudHlwZSA9PT0gJ2RhdGVwaWNrZXInKSB7XG4gIGFkZERhdGVwaWNrZXJPcHRpb25zUHJvcGVydHkoY29udHJvbENvbDEsIGNvbmZpZ3VyYXRpb25Nb2RlbCxsaW5lSW5kZXgpO1xuICB9XG5cbiAgY29uc3QgY29udHJvbDIgPSB7IC4uLmNvbmZpZ3VyYXRpb25Nb2RlbC5saW5lc1tsaW5lSW5kZXhdLmNvbHVtbnNbMl0uY29udHJvbCB9O1xuICBjb25zdCBoZWFkZXJUZW1wbGF0ZUNvbDIgPSAge1xuICAgIGNsYXNzTmFtZTogJ2NvbC14cy00JyxcbiAgICB0ZW1wbGF0ZTpgXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICR7ZXh0cmFjdFRlbXBsYXRlT3B0aW9uRGVzY3JpcHRpb24oY29udHJvbDIpfVxuICAgICAgICA8L2gyPlxuICAgICAgICA8aHIvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgYFxuICB9O1xuICBjb25zdCBjb250cm9sQ29sMiA9IHtcbiAgICBjbGFzc05hbWU6ICdjb2wteHMtNCcsXG4gICAgdHlwZTogY29udHJvbDIgJiYgY29udHJvbDIudHlwZSAmJiBjb250cm9sMi50eXBlICE9PSAnbm9uZScgPyBjb250cm9sMi50eXBlOiAgJ2JsYW5rJyxcbiAgICBrZXk6IGNvbnRyb2wyICYmIGNvbnRyb2wyLmtleSA/IGNvbnRyb2wyLmtleTogJ2JsYW5rJyArIERhdGUubm93KCksXG4gICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICB0eXBlOiBleHRyYWN0VGVtcGxhdGVPcHRpb25UeXBlKGNvbnRyb2wyKSxcbiAgICAgIGxhYmVsOiBleHRyYWN0VGVtcGxhdGVPcHRpb25MYWJlbChjb250cm9sMiksXG4gICAgICByZXF1aXJlZDogZXh0cmFjdFRlbXBsYXRlT3B0aW9uUmVxdWlyZWQoY29udHJvbDIpLFxuICAgICAgcGxhY2Vob2xkZXI6IGV4dHJhY3RUZW1wbGF0ZU9wdGlvblBsYWNlaG9sZGVyKGNvbnRyb2wyKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBleHRyYWN0VGVtcGxhdGVPcHRpb25EZXNjcmlwdGlvbihjb250cm9sMiksXG4gICAgICBvcHRpb25zOiBleHRyYWN0VGVtcGxhdGVPcHRpb25PcHRpb25zKGNvbnRyb2wyKVxuICAgIH0sXG4gICAgZGVmYXVsdFZhbHVlOiBleHRyYWN0RGVmYXVsdFZhbHVlKGNvbnRyb2wyKSxcbiAgICBleHByZXNzaW9uUHJvcGVydGllczogZXh0cmFjdEZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzKGNvbnRyb2wyKSxcbiAgICB2YWxpZGF0b3JzOiBleHRyYWN0Rm9ybWx5VmFsaWRhdG9ycyhjb250cm9sMiksXG4gICAgdmFsaWRhdGlvbjogZXh0cmFjdEZvcm1seVZhbGlkYXRpb24oY29udHJvbDIpXG4gIH07XG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy9kYXRlcGlja2VyIGFkZGl0aW9ubmFsIHBhcnRpY3VsYXIgcHJvcGVydHlcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBpZiAoY29udHJvbDIudHlwZSA9PT0gJ2RhdGVwaWNrZXInKSB7XG4gIGFkZERhdGVwaWNrZXJPcHRpb25zUHJvcGVydHkoY29udHJvbENvbDIsIGNvbmZpZ3VyYXRpb25Nb2RlbCxsaW5lSW5kZXgpO1xuICB9XG5cbiAgY29uc3QgRmllbGRHcm91cCA9IFtdO1xuXG4gIGlmIChjb250cm9sMC50eXBlID09PSAnaGVhZGVyJykge1xuICAgIEZpZWxkR3JvdXAucHVzaChoZWFkZXJUZW1wbGF0ZUNvbDApO1xuICB9ZWxzZXtcbiAgICBGaWVsZEdyb3VwLnB1c2goY29udHJvbENvbDApO1xuICB9XG5cbiAgaWYgKGNvbnRyb2wxLnR5cGUgPT09ICdoZWFkZXInKSB7XG4gICAgRmllbGRHcm91cC5wdXNoKGhlYWRlclRlbXBsYXRlQ29sMSk7XG4gIH1lbHNle1xuICAgIEZpZWxkR3JvdXAucHVzaChjb250cm9sQ29sMSk7XG4gIH1cblxuICBpZiAoY29udHJvbDIudHlwZSA9PT0gJ2hlYWRlcicpIHtcbiAgICBGaWVsZEdyb3VwLnB1c2goaGVhZGVyVGVtcGxhdGVDb2wyKTtcbiAgfWVsc2V7XG4gICAgRmllbGRHcm91cC5wdXNoKGNvbnRyb2xDb2wyKTtcbiAgfVxuXG4gIGZvcm1seU1vZGVsLnB1c2goe1xuICAgIGNsYXNzTmFtZTogJ3JvdycsXG4gICAgZmllbGRHcm91cDogRmllbGRHcm91cFxuICB9KTtcbn07XG5cblxuY29uc3QgcmVzZXREYXRhTW9kZWwgPSAob2JqKSA9PiB7XG4gIGNvbnN0IGVtcHR5RGF0YU1vZGVsID0ge307XG4gIGFuZ3VsYXIuY29weShlbXB0eURhdGFNb2RlbCwgb2JqKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5cbmNvbnN0IHJlc2V0Rm9ybWx5TW9kZWwgPSAoZm9ybWx5TW9kZWwpID0+IHtcbiAgY29uc3QgcmVzZXRmb3JtbHkgPSBbXTtcbiAgYW5ndWxhci5jb3B5KHJlc2V0Zm9ybWx5LCBmb3JtbHlNb2RlbCk7XG59O1xuXG5cbmV4cG9ydCB7XG4gIGNvbmZpZ3VyYXRpb25Nb2RlbEluaXQsXG4gIGNvbmZpZ3VyYXRpb25Nb2RlbFJlc3VsdCxcbiAgcmVzZXREYXRhTW9kZWwsXG4gIHJlc2V0Rm9ybWx5TW9kZWwsXG5cbiAgaXNUZW1wbGF0ZU9wdGlvbkRlZmluZWQsXG4gIGV4dHJhY3RUZW1wbGF0ZU9wdGlvbkxhYmVsLFxuICBleHRyYWN0VGVtcGxhdGVPcHRpb25EYXRlcGlja2VyT3B0aW9ucyxcbiAgZXh0cmFjdERlZmF1bHRWYWx1ZSxcbiAgZXh0cmFjdEZvcm1seUV4cHJlc3Npb25Qcm9wZXJ0aWVzLFxuICBleHRyYWN0Rm9ybWx5VmFsaWRhdG9ycyxcbiAgZXh0cmFjdEZvcm1seVZhbGlkYXRpb24sXG4gIGV4dHJhY3RUZW1wbGF0ZU9wdGlvblJlcXVpcmVkLFxuICBleHRyYWN0VGVtcGxhdGVPcHRpb25PcHRpb25zLFxuICBleHRyYWN0VGVtcGxhdGVPcHRpb25UeXBlLFxuICBleHRyYWN0VGVtcGxhdGVPcHRpb25QbGFjZWhvbGRlcixcbiAgZXh0cmFjdFRlbXBsYXRlT3B0aW9uRGVzY3JpcHRpb24sXG5cbiAgYWRkRGF0ZXBpY2tlck9wdGlvbnNQcm9wZXJ0eSxcbiAgYWRkT25lQ29sdW1uQ29udHJvbCxcbiAgYWRkVHdvQ29sdW1uQ29udHJvbCxcbiAgYWRkVGhyZWVDb2x1bW5Db250cm9sXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L3NlcnZpY2VzL2Zvcm1seVByb3h5L2Zvcm1seVByb3h5LnNlcnZpY2UuaGVscGVycy5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 105 */
+/***/ function(module, exports) {
+
+ eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SELECT_OPTION_MANAGE_NAME = exports.SELECT_OPTION_MANAGE_NAME = 'selectOptionManage';\n\nvar selectOptionManage = function () {\n function selectOptionManage() {\n _classCallCheck(this, selectOptionManage);\n }\n\n _createClass(selectOptionManage, [{\n key: 'initModel',\n value: function initModel(selectObj) {\n this.resetModel(selectObj);\n }\n }, {\n key: 'resetModel',\n value: function resetModel(selectObj) {\n var zeroModel = { rows: [] };\n angular.copy(zeroModel, selectObj);\n }\n }, {\n key: 'isOptionUnique',\n value: function isOptionUnique(selectObj, textValue) {\n return !selectObj.rows.some(function (row) {\n return row.option === textValue;\n });\n }\n }, {\n key: 'isOptionValidFormat',\n value: function isOptionValidFormat(textValue) {\n if (textValue !== '') return true;\n return false;\n }\n }, {\n key: 'addNewOptionRadio',\n value: function addNewOptionRadio(selectObj, newOptionText) {\n var fullResponse = {\n resultFlag: false,\n details: ''\n };\n var checkResult = this.validOption(selectObj, newOptionText);\n if (checkResult.resultFlag === true) {\n var newOption = {\n option: newOptionText,\n order: selectObj.rows.length\n };\n selectObj.rows.push(newOption);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n } else {\n angular.copy(checkResult, fullResponse);\n return fullResponse;\n }\n }\n }, {\n key: 'addNewOptionBasicSelect',\n value: function addNewOptionBasicSelect(selectObj, newOptionText) {\n var fullResponse = {\n resultFlag: false,\n details: ''\n };\n var checkResult = this.validOption(selectObj, newOptionText);\n if (checkResult.resultFlag === true) {\n var newOption = {\n option: newOptionText,\n order: selectObj.rows.length\n };\n selectObj.rows.push(newOption);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n } else {\n angular.copy(checkResult, fullResponse);\n return fullResponse;\n }\n }\n }, {\n key: 'addNewOptionGroupedSelect',\n value: function addNewOptionGroupedSelect(selectObj, newOptionText, newOptionGroup) {\n var fullResponse = {\n resultFlag: false,\n details: ''\n };\n var checkResult = this.validOption(selectObj, newOptionText);\n if (checkResult.resultFlag === true) {\n var newOption = {\n option: newOptionText,\n group: newOptionGroup,\n order: selectObj.rows.length\n };\n selectObj.rows.push(newOption);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n } else {\n angular.copy(checkResult, fullResponse);\n return fullResponse;\n }\n }\n }, {\n key: 'removeOption',\n value: function removeOption(selectObj, AtIndex) {\n var fullResponse = {\n resultFlag: false,\n details: ''\n };\n if (AtIndex !== -1) {\n selectObj.rows.splice(AtIndex, 1);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n } else {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Option index not valid';\n return fullResponse;\n }\n }\n }, {\n key: 'upthisOption',\n value: function upthisOption(selectObj, indexOption) {\n var fullResponse = {\n resultFlag: false,\n details: ''\n };\n if (indexOption > -1) {\n if (indexOption > 0) {\n if (selectObj.rows[indexOption - 1]) {\n var currentOption = selectObj.rows[indexOption];\n selectObj.rows.splice(indexOption, 1);\n selectObj.rows.splice(indexOption - 1, 0, currentOption);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n } else {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Can\\'t retrieve option from option index';\n return fullResponse;\n }\n } else {\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n }\n } else {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Option index not valid';\n return fullResponse;\n }\n }\n }, {\n key: 'downthisOption',\n value: function downthisOption(selectObj, indexOption) {\n var fullResponse = {\n resultFlag: false,\n details: ''\n };\n if (indexOption > -1) {\n if (indexOption < selectObj.rows.length - 1) {\n if (selectObj.rows[indexOption + 1]) {\n var currentOption = selectObj.rows[indexOption];\n selectObj.rows.splice(indexOption, 1);\n selectObj.rows.splice(indexOption + 1, 0, currentOption);\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n } else {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Can\\'t retreive option from option index';\n return fullResponse;\n }\n } else {\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n }\n } else {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Option index not valid';\n return fullResponse;\n }\n }\n }, {\n key: 'validOption',\n value: function validOption(selectObj, newOptionText) {\n var fullResponse = {\n resultFlag: false,\n details: ''\n };\n if (typeof newOptionText === 'undefined') {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Entered option is empty';\n return fullResponse;\n }\n if (newOptionText !== '') {\n for (var i = selectObj.rows.length - 1; i >= 0; i--) {\n if (selectObj.rows[i].option === newOptionText) {\n fullResponse.resultFlag = false;\n fullResponse.details = 'Entered option is not unique';\n return fullResponse;\n }\n }\n fullResponse.resultFlag = true;\n fullResponse.details = '';\n return fullResponse;\n }\n fullResponse.resultFlag = false;\n fullResponse.details = 'Entered option is empty';\n return fullResponse;\n }\n }]);\n\n return selectOptionManage;\n}();\n\nselectOptionManage.$inject = [];\n\n\nvar SELECT_OPTION_MANAGE_MODULE_NAME = 'stepway.selectOpionManage.module';\nexports.default = angular.module(SELECT_OPTION_MANAGE_MODULE_NAME, []).service(SELECT_OPTION_MANAGE_NAME, selectOptionManage);//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvc2VydmljZXMvc2VsZWN0T3B0aW9uTWFuYWdlL3NlbGVjdE9wdGlvbk1hbmFnZS5zZXJ2aWNlLmpzPzBjYjMiXSwibmFtZXMiOlsiU0VMRUNUX09QVElPTl9NQU5BR0VfTkFNRSIsInNlbGVjdE9wdGlvbk1hbmFnZSIsInNlbGVjdE9iaiIsInJlc2V0TW9kZWwiLCJ6ZXJvTW9kZWwiLCJyb3dzIiwiYW5ndWxhciIsImNvcHkiLCJ0ZXh0VmFsdWUiLCJzb21lIiwicm93Iiwib3B0aW9uIiwibmV3T3B0aW9uVGV4dCIsImZ1bGxSZXNwb25zZSIsInJlc3VsdEZsYWciLCJkZXRhaWxzIiwiY2hlY2tSZXN1bHQiLCJ2YWxpZE9wdGlvbiIsIm5ld09wdGlvbiIsIm9yZGVyIiwibGVuZ3RoIiwicHVzaCIsIm5ld09wdGlvbkdyb3VwIiwiZ3JvdXAiLCJBdEluZGV4Iiwic3BsaWNlIiwiaW5kZXhPcHRpb24iLCJjdXJyZW50T3B0aW9uIiwiaSIsIiRpbmplY3QiLCJTRUxFQ1RfT1BUSU9OX01BTkFHRV9NT0RVTEVfTkFNRSIsIm1vZHVsZSIsInNlcnZpY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBTyxJQUFNQSxnRUFBNEIsb0JBQWxDOztJQUVEQyxrQjtBQUdKLGdDQUFjO0FBQUE7QUFFYjs7Ozs4QkFFU0MsUyxFQUFXO0FBQ25CLFdBQUtDLFVBQUwsQ0FBZ0JELFNBQWhCO0FBQ0Q7OzsrQkFFVUEsUyxFQUFXO0FBQ3BCLFVBQU1FLFlBQVksRUFBRUMsTUFBSyxFQUFQLEVBQWxCO0FBQ0FDLGNBQVFDLElBQVIsQ0FBYUgsU0FBYixFQUF3QkYsU0FBeEI7QUFDRDs7O21DQUVjQSxTLEVBQVdNLFMsRUFBVztBQUNuQyxhQUFPLENBQUNOLFVBQVVHLElBQVYsQ0FBZUksSUFBZixDQUFvQjtBQUFBLGVBQU9DLElBQUlDLE1BQUosS0FBZUgsU0FBdEI7QUFBQSxPQUFwQixDQUFSO0FBQ0Q7Ozt3Q0FFbUJBLFMs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QWtCLEVBQXRCLEVBQTBCO0FBQ3hCLGFBQUssSUFBSWdCLElBQUkxQixVQUFVRyxJQUFWLENBQWVlLE1BQWYsR0FBd0IsQ0FBckMsRUFBd0NRLEtBQUssQ0FBN0MsRUFBZ0RBLEdBQWhELEVBQXFEO0FBQ25ELGNBQUkxQixVQUFVRyxJQUFWLENBQWV1QixDQUFmLEVBQWtCakIsTUFBbEIsS0FBNkJDLGFBQWpDLEVBQWdEO0FBQzlDQyx5QkFBYUMsVUFBYixHQUEwQixLQUExQjtBQUNBRCx5QkFBYUUsT0FBYixHQUF1Qiw4QkFBdkI7QUFDQSxtQkFBT0YsWUFBUDtBQUNEO0FBQ0Y7QUFDREEscUJBQWFDLFVBQWIsR0FBMEIsSUFBMUI7QUFDQUQscUJBQWFFLE9BQWIsR0FBdUIsRUFBdkI7QUFDQSxlQUFPRixZQUFQO0FBQ0Q7QUFDREEsbUJBQWFDLFVBQWIsR0FBMEIsS0FBMUI7QUFDQUQsbUJBQWFFLE9BQWIsR0FBdUIseUJBQXZCO0FBQ0EsYUFBT0YsWUFBUDtBQUNEOzs7Ozs7QUFqTUdaLGtCLENBQ0c0QixPLEdBQVUsRTs7O0FBbU1uQixJQUFNQyxtQ0FBbUMsa0NBQXpDO2tCQUNleEIsUUFDSXlCLE1BREosQ0FDV0QsZ0NBRFgsRUFDNkMsRUFEN0MsRUFFSUUsT0FGSixDQUVZaEMseUJBRlosRUFFeUNDLGtCQUZ6QyxDIiwiZmlsZSI6IjEwNS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTRUxFQ1RfT1BUSU9OX01BTkFHRV9OQU1FID0gJ3NlbGVjdE9wdGlvbk1hbmFnZSc7XG5cbmNsYXNzIHNlbGVjdE9wdGlvbk1hbmFnZSB7XG4gIHN0YXRpYyAkaW5qZWN0ID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgfVxuXG4gIGluaXRNb2RlbChzZWxlY3RPYmopIHtcbiAgICB0aGlzLnJlc2V0TW9kZWwoc2VsZWN0T2JqKTtcbiAgfVxuXG4gIHJlc2V0TW9kZWwoc2VsZWN0T2JqKSB7XG4gICAgY29uc3QgemVyb01vZGVsID0geyByb3dzOltdIH07XG4gICAgYW5ndWxhci5jb3B5KHplcm9Nb2RlbCwgc2VsZWN0T2JqKTtcbiAgfVxuXG4gIGlzT3B0aW9uVW5pcXVlKHNlbGVjdE9iaiwgdGV4dFZhbHVlKSB7XG4gICAgcmV0dXJuICFzZWxlY3RPYmoucm93cy5zb21lKHJvdyA9PiByb3cub3B0aW9uID09PSB0ZXh0VmFsdWUpO1xuICB9XG5cbiAgaXNPcHRpb25WYWxpZEZvcm1hdCh0ZXh0VmFsdWUpIHtcbiAgICBpZiAodGV4dFZhbHVlICE9PSAnJykgIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGFkZE5ld09wdGlvblJhZGlvKHNlbGVjdE9iaiwgbmV3T3B0aW9uVGV4dCl7XG4gICAgY29uc3QgZnVsbFJlc3BvbnNlID0ge1xuICAgICAgcmVzdWx0RmxhZzogZmFsc2UsXG4gICAgICBkZXRhaWxzOiAnJ1xuICAgIH07XG4gICAgY29uc3QgY2hlY2tSZXN1bHQgPSB0aGlzLnZhbGlkT3B0aW9uKHNlbGVjdE9iaiwgbmV3T3B0aW9uVGV4dCk7XG4gICAgaWYgKGNoZWNrUmVzdWx0LnJlc3VsdEZsYWcgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IG5ld09wdGlvbiA9IHtcbiAgICAgICAgb3B0aW9uOiBuZXdPcHRpb25UZXh0LFxuICAgICAgICBvcmRlcjogc2VsZWN0T2JqLnJvd3MubGVuZ3RoXG4gICAgICB9O1xuICAgICAgc2VsZWN0T2JqLnJvd3MucHVzaChuZXdPcHRpb24pO1xuICAgICAgZnVsbFJlc3BvbnNlLnJlc3VsdEZsYWcgPSB0cnVlO1xuICAgICAgZnVsbFJlc3BvbnNlLmRldGFpbHMgPSAnJztcbiAgICAgIHJldHVybiBmdWxsUmVzcG9uc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFuZ3VsYXIuY29weShjaGVja1Jlc3VsdCwgZnVsbFJlc3BvbnNlKTtcbiAgICAgIHJldHVybiBmdWxsUmVzcG9uc2U7XG4gICAgfVxuICB9XG5cbiAgYWRkTmV3T3B0aW9uQmFzaWNTZWxlY3Qoc2VsZWN0T2JqLCBuZXdPcHRpb25UZXh0KXtcbiAgICBjb25zdCBmdWxsUmVzcG9uc2UgPSB7XG4gICAgICByZXN1bHRGbGFnOiBmYWxzZSxcbiAgICAgIGRldGFpbHM6ICcnXG4gICAgfTtcbiAgICBjb25zdCBjaGVja1Jlc3VsdCA9IHRoaXMudmFsaWRPcHRpb24oc2VsZWN0T2JqLCBuZXdPcHRpb25UZXh0KTtcbiAgICBpZiAoY2hlY2tSZXN1bHQucmVzdWx0RmxhZyA9PT0gdHJ1ZSkge1xuICAgICAgY29uc3QgbmV3T3B0aW9uID0ge1xuICAgICAgICBvcHRpb246IG5ld09wdGlvblRleHQsXG4gICAgICAgIG9yZGVyOiBzZWxlY3RPYmoucm93cy5sZW5ndGhcbiAgICAgIH07XG4gICAgICBzZWxlY3RPYmoucm93cy5wdXNoKG5ld09wdGlvbik7XG4gICAgICBmdWxsUmVzcG9uc2UucmVzdWx0RmxhZyA9IHRydWU7XG4gICAgICBmdWxsUmVzcG9uc2UuZGV0YWlscyA9ICcnO1xuICAgICAgcmV0dXJuIGZ1bGxSZXNwb25zZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYW5ndWxhci5jb3B5KGNoZWNrUmVzdWx0LCBmdWxsUmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIGZ1bGxSZXNwb25zZTtcbiAgICB9XG4gIH1cblxuICBhZGROZXdPcHRpb25Hcm91cGVkU2VsZWN0KHNlbGVjdE9iaiwgbmV3T3B0aW9uVGV4dCwgbmV3T3B0aW9uR3JvdXApe1xuICAgIGNvbnN0IGZ1bGxSZXNwb25zZSA9IHtcbiAgICAgIHJlc3VsdEZsYWc6IGZhbHNlLFxuICAgICAgZGV0YWlsczogJydcbiAgICB9O1xuICAgIGNvbnN0IGNoZWNrUmVzdWx0ID0gdGhpcy52YWxpZE9wdGlvbihzZWxlY3RPYmosIG5ld09wdGlvblRleHQpO1xuICAgIGlmIChjaGVja1Jlc3VsdC5yZXN1bHRGbGFnID09PSB0cnVlKSB7XG4gICAgICBjb25zdCBuZXdPcHRpb24gPSB7XG4gICAgICAgIG9wdGlvbjogbmV3T3B0aW9uVGV4dCxcbiAgICAgICAgZ3JvdXA6IG5ld09wdGlvbkdyb3VwLFxuICAgICAgICBvcmRlcjogc2VsZWN0T2JqLnJvd3MubGVuZ3RoXG4gICAgICB9O1xuICAgICAgc2VsZWN0T2JqLnJvd3MucHVzaChuZXdPcHRpb24pO1xuICAgICAgZnVsbFJlc3BvbnNlLnJlc3VsdEZsYWcgPSB0cnVlO1xuICAgICAgZnVsbFJlc3BvbnNlLmRldGFpbHMgPSAnJztcbiAgICAgIHJldHVybiBmdWxsUmVzcG9uc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFuZ3VsYXIuY29weShjaGVja1Jlc3VsdCwgZnVsbFJlc3BvbnNlKTtcbiAgICAgIHJldHVybiBmdWxsUmVzcG9uc2U7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlT3B0aW9uKHNlbGVjdE9iaiwgQXRJbmRleCkge1xuICAgIGNvbnN0IGZ1bGxSZXNwb25zZSA9IHtcbiAgICAgIHJlc3VsdEZsYWc6IGZhbHNlLFxuICAgICAgZGV0YWlsczogJydcbiAgICB9O1xuICAgIGlmIChBdEluZGV4ICE9PSAtMSkge1xuICAgICAgc2VsZWN0T2JqLnJvd3Muc3BsaWNlKEF0SW5kZXgsIDEpO1xuICAgICAgZnVsbFJlc3BvbnNlLnJlc3VsdEZsYWcgPSB0cnVlO1xuICAgICAgZnVsbFJlc3BvbnNlLmRldGFpbHM9ICcnO1xuICAgICAgcmV0dXJuIGZ1bGxSZXNwb25zZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZnVsbFJlc3BvbnNlLnJlc3VsdEZsYWcgPSBmYWxzZTtcbiAgICAgIGZ1bGxSZXNwb25zZS5kZXRhaWxzPSAnT3B0aW9uIGluZGV4IG5vdCB2YWxpZCc7XG4gICAgICByZXR1cm4gZnVsbFJlc3BvbnNlO1xuICAgIH1cbiAgfVxuXG4gIHVwdGhpc09wdGlvbihzZWxlY3RPYmosIGluZGV4T3B0aW9uKXtcbiAgICBjb25zdCBmdWxsUmVzcG9uc2UgPSB7XG4gICAgICByZXN1bHRGbGFnOiBmYWxzZSxcbiAgICAgIGRldGFpbHM6ICcnXG4gICAgfTtcbiAgICBpZiAoaW5kZXhPcHRpb24gPiAtMSkge1xuICAgICAgaWYgKGluZGV4T3B0aW9uID4gMCkge1xuICAgICAgICBpZiAoc2VsZWN0T2JqLnJvd3NbaW5kZXhPcHRpb24gLSAxXSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb24gPSBzZWxlY3RPYmoucm93c1tpbmRleE9wdGlvbl07XG4gICAgICAgICAgc2VsZWN0T2JqLnJvd3Muc3BsaWNlKGluZGV4T3B0aW9uICwgMSk7XG4gICAgICAgICAgc2VsZWN0T2JqLnJvd3Muc3BsaWNlKChpbmRleE9wdGlvbiAtIDEpLCAwLCBjdXJyZW50T3B0aW9uKTtcbiAgICAgICAgICBmdWxsUmVzcG9uc2UucmVzdWx0RmxhZyA9IHRydWU7XG4gICAgICAgICAgZnVsbFJlc3BvbnNlLmRldGFpbHMgPSAnJztcbiAgICAgICAgICByZXR1cm4gZnVsbFJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZ1bGxSZXNwb25zZS5yZXN1bHRGbGFnID0gZmFsc2U7XG4gICAgICAgICAgZnVsbFJlc3BvbnNlLmRldGFpbHMgPSAnQ2FuXFwndCByZXRyaWV2ZSBvcHRpb24gZnJvbSBvcHRpb24gaW5kZXgnO1xuICAgICAgICAgIHJldHVybiBmdWxsUmVzcG9uc2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZnVsbFJlc3BvbnNlLnJlc3VsdEZsYWcgPSB0cnVlO1xuICAgICAgICAgIGZ1bGxSZXNwb25zZS5kZXRhaWxzID0gJyc7XG4gICAgICAgICAgcmV0dXJuIGZ1bGxSZXNwb25zZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZnVsbFJlc3BvbnNlLnJlc3VsdEZsYWcgPSBmYWxzZTtcbiAgICAgIGZ1bGxSZXNwb25zZS5kZXRhaWxzICAgICA9ICdPcHRpb24gaW5kZXggbm90IHZhbGlkJztcbiAgICAgIHJldHVybiBmdWxsUmVzcG9uc2U7XG4gICAgfVxuICB9XG5cbiAgZG93bnRoaXNPcHRpb24oc2VsZWN0T2JqLCBpbmRleE9wdGlvbil7XG4gICAgY29uc3QgZnVsbFJlc3BvbnNlID0ge1xuICAgICAgcmVzdWx0RmxhZzogZmFsc2UsXG4gICAgICBkZXRhaWxzOiAnJ1xuICAgIH07XG4gICAgaWYgKGluZGV4T3B0aW9uID4gLTEpIHtcbiAgICAgIGlmIChpbmRleE9wdGlvbiA8IHNlbGVjdE9iai5yb3dzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgaWYgKHNlbGVjdE9iai5yb3dzW2luZGV4T3B0aW9uICsgMV0pIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9uID0gc2VsZWN0T2JqLnJvd3NbaW5kZXhPcHRpb25dO1xuICAgICAgICAgIHNlbGVjdE9iai5yb3dzLnNwbGljZShpbmRleE9wdGlvbiAsIDEpO1xuICAgICAgICAgIHNlbGVjdE9iai5yb3dzLnNwbGljZSgoaW5kZXhPcHRpb24gKyAxKSwgMCwgY3VycmVudE9wdGlvbik7XG4gICAgICAgICAgZnVsbFJlc3BvbnNlLnJlc3VsdEZsYWcgPSB0cnVlO1xuICAgICAgICAgIGZ1bGxSZXNwb25zZS5kZXRhaWxzID0gJyc7XG4gICAgICAgICAgcmV0dXJuIGZ1bGxSZXNwb25zZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmdWxsUmVzcG9uc2UucmVzdWx0RmxhZyA9IGZhbHNlO1xuICAgICAgICAgIGZ1bGxSZXNwb25zZS5kZXRhaWxzID0gJ0NhblxcJ3QgcmV0cmVpdmUgb3B0aW9uIGZyb20gb3B0aW9uIGluZGV4JztcbiAgICAgICAgICByZXR1cm4gZnVsbFJlc3BvbnNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZ1bGxSZXNwb25zZS5yZXN1bHRGbGFnID0gdHJ1ZTtcbiAgICAgICAgICBmdWxsUmVzcG9uc2UuZGV0YWlscyA9ICcnO1xuICAgICAgICByZXR1cm4gZnVsbFJlc3BvbnNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmdWxsUmVzcG9uc2UucmVzdWx0RmxhZyA9IGZhbHNlO1xuICAgICAgZnVsbFJlc3BvbnNlLmRldGFpbHMgPSAnT3B0aW9uIGluZGV4IG5vdCB2YWxpZCc7XG4gICAgICByZXR1cm4gZnVsbFJlc3BvbnNlO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkT3B0aW9uKHNlbGVjdE9iaiwgbmV3T3B0aW9uVGV4dCl7XG4gICAgY29uc3QgZnVsbFJlc3BvbnNlID0ge1xuICAgICAgcmVzdWx0RmxhZzogZmFsc2UsXG4gICAgICBkZXRhaWxzOiAnJ1xuICAgIH07XG4gICAgaWYgKHR5cGVvZiBuZXdPcHRpb25UZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgZnVsbFJlc3BvbnNlLnJlc3VsdEZsYWcgPSBmYWxzZTtcbiAgICAgIGZ1bGxSZXNwb25zZS5kZXRhaWxzID0gJ0VudGVyZWQgb3B0aW9uIGlzIGVtcHR5JztcbiAgICAgIHJldHVybiBmdWxsUmVzcG9uc2U7XG4gICAgfVxuICAgIGlmIChuZXdPcHRpb25UZXh0ICE9PSAnJykge1xuICAgICAgZm9yIChsZXQgaSA9IHNlbGVjdE9iai5yb3dzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmIChzZWxlY3RPYmoucm93c1tpXS5vcHRpb24gPT09IG5ld09wdGlvblRleHQpIHtcbiAgICAgICAgICBmdWxsUmVzcG9uc2UucmVzdWx0RmxhZyA9IGZhbHNlO1xuICAgICAgICAgIGZ1bGxSZXNwb25zZS5kZXRhaWxzID0gJ0VudGVyZWQgb3B0aW9uIGlzIG5vdCB1bmlxdWUnO1xuICAgICAgICAgIHJldHVybiBmdWxsUmVzcG9uc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bGxSZXNwb25zZS5yZXN1bHRGbGFnID0gdHJ1ZTtcbiAgICAgIGZ1bGxSZXNwb25zZS5kZXRhaWxzID0gJyc7XG4gICAgICByZXR1cm4gZnVsbFJlc3BvbnNlO1xuICAgIH1cbiAgICBmdWxsUmVzcG9uc2UucmVzdWx0RmxhZyA9IGZhbHNlO1xuICAgIGZ1bGxSZXNwb25zZS5kZXRhaWxzID0gJ0VudGVyZWQgb3B0aW9uIGlzIGVtcHR5JztcbiAgICByZXR1cm4gZnVsbFJlc3BvbnNlO1xuICB9XG59XG5cbmNvbnN0IFNFTEVDVF9PUFRJT05fTUFOQUdFX01PRFVMRV9OQU1FID0gJ3N0ZXB3YXkuc2VsZWN0T3Bpb25NYW5hZ2UubW9kdWxlJztcbmV4cG9ydCBkZWZhdWx0IGFuZ3VsYXJcbiAgICAgICAgICAgICAgICAgIC5tb2R1bGUoU0VMRUNUX09QVElPTl9NQU5BR0VfTU9EVUxFX05BTUUsIFtdKVxuICAgICAgICAgICAgICAgICAgLnNlcnZpY2UoU0VMRUNUX09QVElPTl9NQU5BR0VfTkFNRSwgICBzZWxlY3RPcHRpb25NYW5hZ2UpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2FwcC9zdGVwd2F5L3NlcnZpY2VzL3NlbGVjdE9wdGlvbk1hbmFnZS9zZWxlY3RPcHRpb25NYW5hZ2Uuc2VydmljZS5qcyJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ },
+/* 106 */
+/***/ function(module, exports) {
+
+ eval("// removed by extract-text-webpack-plugin//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYXBwL3N0ZXB3YXkvc3R5bGUvaW5kZXguc2Nzcz81MTRkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEwNi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHJlbW92ZWQgYnkgZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvYXBwL3N0ZXB3YXkvc3R5bGUvaW5kZXguc2Nzc1xuLy8gbW9kdWxlIGlkID0gMTA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=");
+
+/***/ }
+/******/ ]);
\ No newline at end of file
diff --git a/static/js/eda.stepway.min.js b/static/js/eda.stepway.min.js
index b953edb..3cc5e7b 100644
--- a/static/js/eda.stepway.min.js
+++ b/static/js/eda.stepway.min.js
@@ -1,5 +1,18 @@
-!function(a){function b(a,b,e){return 4===arguments.length?c.apply(this,arguments):void d(a,{declarative:!0,deps:b,declare:e})}function c(a,b,c,e){d(a,{declarative:!1,deps:b,executingRequire:c,execute:e})}function d(a,b){b.name=a,a in n||(n[a]=b),b.normalizedDeps=b.deps}function e(a,b){if(b[a.groupIndex]=b[a.groupIndex]||[],-1==o.call(b[a.groupIndex],a)){b[a.groupIndex].push(a);for(var c=0,d=a.normalizedDeps.length;d>c;c++){var f=a.normalizedDeps[c],g=n[f];if(g&&!g.evaluated){var h=a.groupIndex+(g.declarative!=a.declarative);if(void 0===g.groupIndex||g.groupIndex=0;f--){for(var g=c[f],i=0;if;f++){var h=c.importers[f];if(!h.locked)for(var i=0;if;f++){var j,k=b.normalizedDeps[f],l=n[k],o=s[k];o?j=o.exports:l&&!l.declarative?j=l.esModule:l?(h(l),o=l.module,j=o.exports):j=m(k),o&&o.importers?(o.importers.push(c),c.dependencies.push(o)):c.dependencies.push(null),c.setters[f]&&c.setters[f](j)}}}function i(a){var b,c=n[a];if(c)c.declarative?l(a,[]):c.evaluated||j(c),b=c.module.exports;else if(b=m(a),!b)throw new Error("Unable to load dependency "+a+".");return(!c||c.declarative)&&b&&b.__useDefault?b["default"]:b}function j(b){if(!b.module){var c={},d=b.module={exports:c,id:b.name};if(!b.executingRequire)for(var e=0,f=b.normalizedDeps.length;f>e;e++){var g=b.normalizedDeps[e],h=n[g];h&&j(h)}b.evaluated=!0;var l=b.execute.call(a,function(a){for(var c=0,d=b.deps.length;d>c;c++)if(b.deps[c]==a)return i(b.normalizedDeps[c]);throw new TypeError("Module "+a+" not declared as a dependency.")},c,d);l&&(d.exports=l),c=d.exports,c&&c.__esModule?b.esModule=c:b.esModule=k(c)}}function k(b){if(b===a)return b;var c={};if("object"==typeof b||"function"==typeof b)if(p){var d;for(var e in b)(d=Object.getOwnPropertyDescriptor(b,e))&&r(c,e,d)}else{var f=b&&b.hasOwnProperty;for(var e in b)(!f||b.hasOwnProperty(e))&&(c[e]=b[e])}return c["default"]=b,r(c,"__useDefault",{value:!0}),c}function l(b,c){var d=n[b];if(d&&!d.evaluated&&d.declarative){c.push(b);for(var e=0,f=d.normalizedDeps.length;f>e;e++){var g=d.normalizedDeps[e];-1==o.call(c,g)&&(n[g]?l(g,c):m(g))}d.evaluated||(d.evaluated=!0,d.module.execute.call(a))}}function m(a){if(u[a])return u[a];if("@node/"==a.substr(0,6))return t(a.substr(6));var b=n[a];if(!b)throw"Module "+a+" not present.";return f(a),l(a,[]),n[a]=void 0,b.declarative&&r(b.module.exports,"__esModule",{value:!0}),u[a]=b.declarative?b.module.exports:b.esModule}var n={},o=Array.prototype.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},p=!0;try{Object.getOwnPropertyDescriptor({a:0},"a")}catch(q){p=!1}var r;!function(){try{Object.defineProperty({},"a",{})&&(r=Object.defineProperty)}catch(a){r=function(a,b,c){try{a[b]=c.value||c.get.call(a)}catch(d){}}}}();var s={},t="undefined"!=typeof System&&System._nodeRequire||"undefined"!=typeof require&&require.resolve&&"undefined"!=typeof process&&require,u={"@empty":{}};return function(a,d,e){return function(f){f(function(f){for(var g={_nodeRequire:t,register:b,registerDynamic:c,get:m,set:function(a,b){u[a]=b},newModule:function(a){return a}},h=0;h1)for(var h=1;h\n ',c="
",d='\n \n
\n
\n {{options.templateOptions.placeholder}}\n \n \n
',e=' \n \n \n {{option.name}} \n \n ',f='\n \n \n \n \n {{option.name}} \n \n \n \n ',g=' ',h='\n ',a("richTextTemplate",b),a("blankTemplate",c),a("subTitleTemplate",d),a("basicSelectTemplate",e),a("groupedSelectTemplate",f),a("datepickerTemplate",g),a("validationTemplate",h)}}}),a.register("6",["5"],function(a){"use strict";function b(a){function b(a){return a=a.replace(/[\-_\s]+(.)?/g,function(a,b){return b?b.toUpperCase():""}),a.replace(/^([A-Z])/,function(a,b){return b?b.toLowerCase():""})}a.setType({name:"richEditor",template:c,wrapper:["bootstrapLabel","bootstrapHasError"]}),a.setType({name:"blank",template:d}),a.setType({name:"subTitle",template:e}),a.setType({name:"basicSelect",template:f,wrapper:["bootstrapLabel","bootstrapHasError"]}),a.setType({name:"groupedSelect",template:g,wrapper:["bootstrapLabel","bootstrapHasError"]});var j=["date-disabled","custom-class","show-weeks","starting-day","init-date","min-mode","max-mode","format-day","format-month","format-year","format-day-header","format-day-title","format-month-title","year-range","shortcut-propagation","datepicker-popup","show-button-bar","current-text","clear-text","close-text","close-on-date-selection","datepicker-append-to-body"],k=["datepicker-mode","min-date","max-date"],l={};angular.forEach(j,function(a){l[b(a)]={attribute:a}}),angular.forEach(k,function(a){l[b(a)]={bound:a}}),a.setType({name:"datepicker",template:h,wrapper:["bootstrapLabel","bootstrapHasError"],controller:["$scope",function(a){a.open=function(b){b.preventDefault(),b.stopPropagation(),a.opened=!0}}],defaultOptions:{ngModelAttrs:l,templateOptions:{addonLeft:{"class":"glyphicon glyphicon-calendar",onClick:function(a){return a.templateOptions.isOpen=!a.templateOptions.isOpen}},onFocus:function(a,b,c){return c.to.isOpen=!c.to.isOpen},datepickerOptions:{}}}}),a.setWrapper([{template:i}])}var c,d,e,f,g,h,i;return{setters:[function(a){c=a.richTextTemplate,d=a.blankTemplate,e=a.subTitleTemplate,f=a.basicSelectTemplate,g=a.groupedSelectTemplate,h=a.datepickerTemplate,i=a.validationTemplate}],execute:function(){b.$inject=["formlyConfigProvider"],a("default",b)}}}),a.registerDynamic("7",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports={SAY_HI:"Hello",EDIT_TAB:"Edit / Create",PREVIEW_TAB:"Preview",WIZARD_LINES:"lines",WIZARD_LAYOUT:"layout",WIZARD_CONTROLS:"controls",WIZARD_SAVE:"save",PAGER_PREVIOUS:"Previous",PAGER_NEXT:"Next",COMMAND_PANEL:"Command",VISUAL_PANEL:"Visual",ADD_NEW_LINE:"Add a new line",SELECTED_LINE:"Selected line",NUMBER_OF_COLUMN:"number of columns",APPLY_CTRL2COL:"Apply controls to columns",CLIC_TAP_2_OPEN:"Click / Tap on column to open control selection",SELECT_2_APPLY_COL:"Select desired control and valid to apply it to column",CUSTOM_SUBMIT_BTN:"Customize Submit button Text",CUSTOM_CANCEL_BTN:"Customize Cancel button Text",NAME_THIS_FORM:"Name this form",SAVE_THIS_FORM:"save this form",FINAL_STEP:"Final Step : form preview",DATA_MODEL:"DATA MODEL",FIELDS_MODEL:"FIELDS MODEL (ready to save to database one)",SELECT_A_CTRL:"Select a control",SELECT_CTRL_IN_LIST:"Select a control in the list below",COL_WILL_BE_BLANK:"Column will be blank",EDIT_PROPERTIES:"Edit properties",HEADER_TEXT:"Header text",ADD_EDIT_HEADER_HERE:"Add / edit header text here",SUBTITLE_TEXT:"Subtitle text",ADD_EDIT_SUBTIL_HERE:"Add / edit subtitle text here",LABEL_TEXT:"Label text",ADD_EDIT_LABEL_HERE:"Add / edit control label here",PLACEHOLDER:"placeholder",ADD_EDIT_PLACEHOLD:"Add / edit placeholder text here",REQUIRED:"Required",DESCRIPTION:"Description",ADDEDIT_DESCRIPTION:"Add / edit description here",DATE_FORMAT:"Date format",ADD_NEW_RADIO:"Add new radio",ADD_RADIO_PLACEHOLD:"add new radio",EDIT_REMOVE_RADIO:"Edit/Remove radio",NO_RADIO_ADD_NEW:"no radio : add new radio values",SEARCH_4_OPTION:"search for option",ADD:"add",ORDER:"order",OPTION:"option",GROUP:"group",ADD_NEW_OPTIONS:"Add new options",ADD_A_NEW_OPTION:"add new option",EDIT_REMOVE_OPTIONS:"Edit/Remove options",NO_OPTION_ADD_NEW:"no option : add new options",ADD_NEW_GROUPS:"Add new groups",ADD_A_NEW_GROUP:"Add new group",EDIT_GROUPS_OPTIONS:"Edit/Remove options/groups",NO_GROUP_ADD_NEW:"add new groups",OK:"OK",CANCEL:"Cancel"},d.define=e,c.exports}),a.registerDynamic("8",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports={SAY_HI:"Bonjour",EDIT_TAB:"Edition / Creation",PREVIEW_TAB:"Aperçu",WIZARD_LINES:"lignes",WIZARD_LAYOUT:"disposition",WIZARD_CONTROLS:"contrôles",WIZARD_SAVE:"sauvegarder",PAGER_PREVIOUS:"Précédent",PAGER_NEXT:"Suivant",COMMAND_PANEL:"Commandes",VISUAL_PANEL:"Visuel",ADD_NEW_LINE:"Ajouter une nouvelle ligne",SELECTED_LINE:"Ligne sélectionnée",NUMBER_OF_COLUMN:"nombre de colonnes",APPLY_CTRL2COL:"Appliquer les contrôles aux colonnes",CLIC_TAP_2_OPEN:"Cliquer sur une colonne pour ouvrir le menu d'édition",SELECT_2_APPLY_COL:"Sélectionner un contrôle puis valider pour l'appliquer à la colonne",CUSTOM_SUBMIT_BTN:"Personnaliser le texte du bouton envoie",CUSTOM_CANCEL_BTN:"Personnaliser le texte du bouton annuler",NAME_THIS_FORM:"Nommer le formulaire",SAVE_THIS_FORM:"sauvegarder le formulaire",FINAL_STEP:"Dernière étape : aperçu du formulaire",DATA_MODEL:"MODELE DE DONNEES",FIELDS_MODEL:"MODELE DES CHAMPS (modèle compatible base de données)",SELECT_A_CTRL:"Sélectionner un contrôle",SELECT_CTRL_IN_LIST:"Sélectionner un contrôle dans la liste ci-dessous",COL_WILL_BE_BLANK:"La colonne sera vide",EDIT_PROPERTIES:"Editer les propriétés",HEADER_TEXT:"Texte du titre principal",ADD_EDIT_HEADER_HERE:"Editer le textes du titre principal",SUBTITLE_TEXT:"Texte du sous-titre",ADD_EDIT_SUBTIL_HERE:"Editer le textes du sous-titre",LABEL_TEXT:"Texte de l'étiquette",ADD_EDIT_LABEL_HERE:"Editer le texte de l'étiquette",PLACEHOLDER:"placeholder",ADD_EDIT_PLACEHOLD:"Editer le placeholder",REQUIRED:"Requis",DESCRIPTION:"Description",ADDEDIT_DESCRIPTION:"Ajouter / editer la description",DATE_FORMAT:"Format de la date",ADD_NEW_RADIO:"Ajouter un nouveau choix à cocher",ADD_RADIO_PLACEHOLD:"Ajouter un nouveau choix à cocher",EDIT_REMOVE_RADIO:"Editer / supprimer un choix à cocher",NO_RADIO_ADD_NEW:"aucun choix à cocher : en ajouter un",SEARCH_4_OPTION:"rechercher une option",ADD:"ajouter",ORDER:"ordre",OPTION:"option",GROUP:"groupe",ADD_NEW_OPTIONS:"Ajouter de nouvelles options",ADD_A_NEW_OPTION:"ajoutre une option",EDIT_REMOVE_OPTIONS:"Editer / supprimer des options",NO_OPTION_ADD_NEW:"aucune option : en ajouter",ADD_NEW_GROUPS:"Ajouter de nouveaux groupes",ADD_A_NEW_GROUP:"Ajouter un nouveau groupe",EDIT_GROUPS_OPTIONS:"Editer / supprimer les groupes et options",NO_GROUP_ADD_NEW:"ajouter de nouveaux groupes",OK:"Valider",CANCEL:"Annuler"},d.define=e,c.exports}),a.registerDynamic("9",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports={SAY_HI:"Hola",EDIT_TAB:"Editar / Crear",PREVIEW_TAB:"Previsualizar",WIZARD_LINES:"lineas",WIZARD_LAYOUT:"diseño",WIZARD_CONTROLS:"controles",WIZARD_SAVE:"guardar",PAGER_PREVIOUS:"Anterior",PAGER_NEXT:"Siguiente",COMMAND_PANEL:"Comando",VISUAL_PANEL:"Visual",ADD_NEW_LINE:"Agregar nueva linea",SELECTED_LINE:"Linea seleccionada",NUMBER_OF_COLUMN:"numero de columnas",APPLY_CTRL2COL:"Aplicar controles a columnas",CLIC_TAP_2_OPEN:"Click / Toque en la columna para seleccionar controles",SELECT_2_APPLY_COL:"Selecciona el control deseado para aplicarlo a la columna",CUSTOM_SUBMIT_BTN:"Personalizar texto de boton Enviar",CUSTOM_CANCEL_BTN:"Personalizar texto de boton Cancelar",NAME_THIS_FORM:"Nombrar formulario",SAVE_THIS_FORM:"guardar formulario",FINAL_STEP:"Ultimo paso : previsualizar formulario",DATA_MODEL:"MODELO DE DATOS",FIELDS_MODEL:"MODELO DE CAMPOS (listo para guardar en base de datos uno)",SELECT_A_CTRL:"Selecciona un control",SELECT_CTRL_IN_LIST:"Selecciona un control de la lista",COL_WILL_BE_BLANK:"Columna sera vacia",EDIT_PROPERTIES:"Editar propiedades",HEADER_TEXT:"Texto de encabezado",ADD_EDIT_HEADER_HERE:"Agregar / editar texto de encabezado aqui",SUBTITLE_TEXT:"Texto de subtitulo",ADD_EDIT_SUBTIL_HERE:"Agregar / editar texto de subtitulo aqui",LABEL_TEXT:"Texto de etiqueta",ADD_EDIT_LABEL_HERE:"Agregar / editar texto de etiqueta aqui",PLACEHOLDER:"Marcador",ADD_EDIT_PLACEHOLD:"Agregar / editar texto de marcador aqui",REQUIRED:"Requerido",DESCRIPTION:"Descripcion",ADDEDIT_DESCRIPTION:"Agregar / editar descripcion aqui",DATE_FORMAT:"Formato de fecha",ADD_NEW_RADIO:"Agregar nuevo radio",ADD_RADIO_PLACEHOLD:"agregar nuevo radio",EDIT_REMOVE_RADIO:"Editar/Eliminar radio",NO_RADIO_ADD_NEW:"sin radio : agregar nuevos valores de radio",SEARCH_4_OPTION:"buscar opcion",ADD:"agregar",ORDER:"orden",OPTION:"opcion",GROUP:"grupo",ADD_NEW_OPTIONS:"agregar nuevas opciones",ADD_A_NEW_OPTION:"agregar nueva opcione",EDIT_REMOVE_OPTIONS:"Editar/Eliminar opciones",NO_OPTION_ADD_NEW:"sin opcion : agregar nuevas opciones",ADD_NEW_GROUPS:"Agregar nuevos grupos",ADD_A_NEW_GROUP:"Agregar nuevo grupo",EDIT_GROUPS_OPTIONS:"Editar/Eliminar opciones/grupos",NO_GROUP_ADD_NEW:"agregar nuevos grupos",OK:"OK",CANCEL:"Cancelar"},d.define=e,c.exports}),a.registerDynamic("a",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports={SAY_HI:"Hallo",EDIT_TAB:"Bearbeiten / Schaffen",PREVIEW_TAB:"Vorschau",WIZARD_LINES:"Linien",WIZARD_LAYOUT:"Layout",WIZARD_CONTROLS:"Steuerung",WIZARD_SAVE:"sparen",PAGER_PREVIOUS:"vorher.",PAGER_NEXT:"nächste",COMMAND_PANEL:"Anweisung",VISUAL_PANEL:"visuell",ADD_NEW_LINE:"Hinzufügen neuer Leitung",SELECTED_LINE:"ausgewählte Linie",NUMBER_OF_COLUMN:"Anzahl von Spalten",APPLY_CTRL2COL:"gelten diese Steuer Spalte",CLIC_TAP_2_OPEN:"klicken Sie auf Spalte zur Steuerungsauswahl öffnen",SELECT_2_APPLY_COL:"Wählen Sie die gewünschte Steuerung und gültig , um es in Spalte anwenden",CUSTOM_SUBMIT_BTN:"Passen Submit-Button Text",CUSTOM_CANCEL_BTN:"Passen Cancel-Button Text",NAME_THIS_FORM:"Nennen dieses Formular",SAVE_THIS_FORM:"Speichern dieses Formular",FINAL_STEP:"Endschritt : Formular Vorschau",DATA_MODEL:"DATEN MODELL",FIELDS_MODEL:"FELDER MODELL (Datenbank-kompatibel)",SELECT_A_CTRL:"Wählen Sie ein Steuer",SELECT_CTRL_IN_LIST:"Wählen Sie ein Steuer aus der Liste unten",COL_WILL_BE_BLANK:"die Spalte werde leer sein",EDIT_PROPERTIES:"Anzeigen",HEADER_TEXT:"Kopftext",ADD_EDIT_HEADER_HERE:"Kopftext ändern",SUBTITLE_TEXT:"Untertitel",ADD_EDIT_SUBTIL_HERE:"Untertitel ändern",LABEL_TEXT:"Etikett",ADD_EDIT_LABEL_HERE:"Etikett ändern",PLACEHOLDER:"placeholder",ADD_EDIT_PLACEHOLD:"placeholder ändern",REQUIRED:"erforderlich",DESCRIPTION:"Beschreibung",ADDEDIT_DESCRIPTION:"Beschreibung ändern",DATE_FORMAT:"Datumsformat",ADD_NEW_RADIO:"Radiobutton hinzufügen",ADD_RADIO_PLACEHOLD:"Radiobutton hinzufügen",EDIT_REMOVE_RADIO:"Radiobutton ändern",NO_RADIO_ADD_NEW:"kein Radiobutton : Radiobutton hinzufügen",SEARCH_4_OPTION:"option suchen",ADD:"hinzufügen",ORDER:"bestellen",OPTION:"Option",GROUP:"Gruppe",ADD_NEW_OPTIONS:"Optionen hinzufügen",ADD_A_NEW_OPTION:"Option hinzufügen",EDIT_REMOVE_OPTIONS:"Optionen ändern",NO_OPTION_ADD_NEW:"kein option : Option hinzufügen",ADD_NEW_GROUPS:"Gruppen hinzufügen",ADD_A_NEW_GROUP:"Gruppe hinzufügen",EDIT_GROUPS_OPTIONS:"Gruppen ändern",NO_GROUP_ADD_NEW:"keine Gruppe : Gruppe hinzufügen",OK:"bestätigen",CANCEL:"stornieren"},d.define=e,c.exports}),a.registerDynamic("b",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports={SAY_HI:"Merhaba",EDIT_TAB:"Düzenle / Oluştur",PREVIEW_TAB:"Önizleme",WIZARD_LINES:"satırlar",WIZARD_LAYOUT:"düzen",WIZARD_CONTROLS:"kontroller",WIZARD_SAVE:"kaydet",PAGER_PREVIOUS:"Geri",PAGER_NEXT:"İleri",COMMAND_PANEL:"Komut",VISUAL_PANEL:"Görsel",ADD_NEW_LINE:"Yeni satır ekle",SELECTED_LINE:"Seçili satır",NUMBER_OF_COLUMN:"sütun sayısı",APPLY_CTRL2COL:"Sütunlara form ögesi ekle",CLIC_TAP_2_OPEN:"Form ögesi eklemek için sütunlara tıkla",SELECT_2_APPLY_COL:"İstediğin ögeyi seçtikten sonra gerekli yerleri doldur ve kaydet",CUSTOM_SUBMIT_BTN:"Gönder butonu yazısını düzenle",CUSTOM_CANCEL_BTN:"İptal butonu yazısını düzenle",NAME_THIS_FORM:"Forma isim ver",SAVE_THIS_FORM:"formu kaydet",FINAL_STEP:"Son aşama : form önizlemesi",DATA_MODEL:"VERİ MODELİ",FIELDS_MODEL:"ALAN MODELİ (veritabanına kaydetmeye hazır)",SELECT_A_CTRL:"Form ögesi seç",SELECT_CTRL_IN_LIST:"Verilen listeden bir form ögesi seç",COL_WILL_BE_BLANK:"Sütun boş kalacak",EDIT_PROPERTIES:"Özellikleri düzenle",HEADER_TEXT:"Başlık yazısı",ADD_EDIT_HEADER_HERE:"Başlık yazısını ekle / düzenle",SUBTITLE_TEXT:"Altyazı",ADD_EDIT_SUBTIL_HERE:"Altyazı ekle / düzenle",LABEL_TEXT:"Form ögesinin adı",ADD_EDIT_LABEL_HERE:"Ad ekle / düzenle",PLACEHOLDER:"Form ögesinin içine geçici yazı ekle",ADD_EDIT_PLACEHOLD:"Geçici yazı ekle / düzenle",REQUIRED:"Gerekli",DESCRIPTION:"Açıklama",ADDEDIT_DESCRIPTION:"Açıklama ekle / düzenle",DATE_FORMAT:"Tarih formatı",ADD_NEW_RADIO:"Radio butonu ekle",ADD_RADIO_PLACEHOLD:"radio butonu ekle",EDIT_REMOVE_RADIO:"Radio butonunu ekle / düzenle",NO_RADIO_ADD_NEW:"radio butonu yok : yeni buton ekle",SEARCH_4_OPTION:"seçenek ara",ADD:"ekle",ORDER:"sıra",OPTION:"seçenek",GROUP:"grup",ADD_NEW_OPTIONS:"Yeni seçenek ekle",ADD_A_NEW_OPTION:"yeni seçenek ekle",EDIT_REMOVE_OPTIONS:"Seçenekleri düzenle/sil",NO_OPTION_ADD_NEW:"seçenek yok : yeni seçenek ekle",ADD_NEW_GROUPS:"Yeni grup ekle",ADD_A_NEW_GROUP:"Yeni grup ekle",EDIT_GROUPS_OPTIONS:"Seçenek/Grup Ekle/sil",NO_GROUP_ADD_NEW:"yeni grup ekle",OK:"TAMAM",CANCEL:"İptal"},d.define=e,c.exports}),a.registerDynamic("c",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports={SAY_HI:"こんにちわ",EDIT_TAB:"編集 / 作成",PREVIEW_TAB:"プレビュー",WIZARD_LINES:"ライン",WIZARD_LAYOUT:"レイアウト",WIZARD_CONTROLS:"コントロール",WIZARD_SAVE:"サーブ",PAGER_PREVIOUS:"前",PAGER_NEXT:"次",COMMAND_PANEL:"コマンド",VISUAL_PANEL:"ビジュアル",ADD_NEW_LINE:"新しいライン追加",SELECTED_LINE:"選択されたライン",NUMBER_OF_COLUMN:"カラムの数",APPLY_CTRL2COL:"カラムにコントロール適用",CLIC_TAP_2_OPEN:"コントロール選択を広げるには列をクリック",SELECT_2_APPLY_COL:"好きなコントロールを選び適用",CUSTOM_SUBMIT_BTN:"適用ボタンの文字変更する場合",CUSTOM_CANCEL_BTN:"キャンセルボタンの文字変更する場合",NAME_THIS_FORM:"形式に名前を付ける",SAVE_THIS_FORM:"形式をサーブ",FINAL_STEP:"ファイナルステップ : プレビュー形式",DATA_MODEL:"データーモデル",FIELDS_MODEL:"モデルフィールド",SELECT_A_CTRL:"コントロールを選び選択",SELECT_CTRL_IN_LIST:"以下のリストからコントロールを選び選択",COL_WILL_BE_BLANK:"空になる列",EDIT_PROPERTIES:"プロパティの変更",HEADER_TEXT:"ヘッダーテキスト",ADD_EDIT_HEADER_HERE:"ヘッダーテキスト文字変更",SUBTITLE_TEXT:"サブタイトル テキスト",ADD_EDIT_SUBTIL_HERE:"サブタイトルテキスト文字変更",LABEL_TEXT:"ラベルテキスト",ADD_EDIT_LABEL_HERE:"ラベルテキスト文字変更",PLACEHOLDER:"プレースホルダー",ADD_EDIT_PLACEHOLD:"プレースホルダー文字変更",REQUIRED:"必須",DESCRIPTION:"説明",ADDEDIT_DESCRIPTION:"説明の変更",DATE_FORMAT:"日付の形式",ADD_NEW_RADIO:"新ラジオボタンを追加",ADD_RADIO_PLACEHOLD:"新ラジオボタンを追加",EDIT_REMOVE_RADIO:"ラジオボタン変更",NO_RADIO_ADD_NEW:"ラジオ無し : 新ラジオボタン追加",SEARCH_4_OPTION:"オプション検索",ADD:"追加",ORDER:"順番",OPTION:"オプション",GROUP:"グループ",ADD_NEW_OPTIONS:"新しいオプション追加",ADD_A_NEW_OPTION:"新しいオプション追加",EDIT_REMOVE_OPTIONS:"オプションの変更",NO_OPTION_ADD_NEW:"オプション無し : 新しいオプション追加",ADD_NEW_GROUPS:"新しいグループ追加",ADD_A_NEW_GROUP:"新しいグループ追加",EDIT_GROUPS_OPTIONS:"グループを変更",NO_GROUP_ADD_NEW:"グループを追加",OK:"オッケー",CANCEL:"キャンセル"},d.define=e,c.exports}),a.register("d",["7","8","9","a","b","c"],function(a){"use strict";function b(a){a.translations("en",c),a.translations("fr",d),a.translations("es",e),a.translations("de",f),a.translations("tr",g),a.translations("jp",h)}var c,d,e,f,g,h,i;return{setters:[function(a){c=a["default"]},function(a){d=a["default"]},function(a){e=a["default"]},function(a){f=a["default"]},function(a){g=a["default"]},function(a){h=a["default"]}],execute:function(){i="easyFormTranslateConfig",b.$inject=["$translateProvider"],a("default",b),a("TRANSLATE_CONFIG",i)}}}),a.register("e",["d"],function(a){"use strict";var b,c,d;return{setters:[function(a){b=a["default"],c=a.TRANSLATE_CONFIG}],execute:function(){d="eda.easyFormGenerator.translate",a("default",angular.module(d,[]).config(b))}}}),a.register("f",[],function(a){"use strict";var b;return{setters:[],execute:function(){b=["textAngular","textAngularSetup","ngAnimate","toaster","formly","formlyBootstrap","ui.bootstrap","nya.bootstrap.select","pascalprecht.translate"],a("default",angular.module("edaStepWayEasyFormGen.core",b))}}}),a.registerDynamic("10",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n \n
\n
\n \n
\n \n
\n \n
\n \n \n \n
\n
\n
\n
\n
\n
0 \n
{{\'WIZARD_LINES\' | translate}}
\n
\n
\n
1 \n
{{\'WIZARD_LAYOUT\' | translate}}
\n
\n
\n
2 \n
{{\'WIZARD_CONTROLS\' | translate}}
\n
\n
\n
3 \n
{{\'WIZARD_SAVE\' | translate}}
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
{{\'COMMAND_PANEL\' | translate}} \n \n
\n
\n
\n {{\'ADD_NEW_LINE\' | translate}} : \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{\'VISUAL_PANEL\' | translate}} \n \n
\n \n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n \n {{line.columns[0].control.type !== \'none\' ? line.columns[0].control.type + \' \' + line.columns[0].control.subtype || \'\' : \'column 1\'}}\n \n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n {{line.columns[0].control.type !== \'none\' ? line.columns[0].control.type + \' \' + line.columns[0].control.subtype || \'\' : \'column 1\'}}\n \n
\n
\n \n {{line.columns[1].control.type !== \'none\' ? line.columns[1].control.type + \' \' + line.columns[1].control.subtype || \'\' : \'column 2\'}}\n \n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n {{line.columns[0].control.type !== \'none\' ? line.columns[0].control.type + \' \' + line.columns[0].control.subtype || \'\' : \'column 1\'}}\n \n
\n
\n \n {{line.columns[1].control.type !== \'none\' ? line.columns[1].control.type + \' \' + line.columns[1].control.subtype || \'\' : \'column 2\'}}\n \n
\n
\n \n {{line.columns[2].control.type !== \'none\' ? line.columns[2].control.type + \' \' + line.columns[2].control.subtype || \'\' : \'column 3\'}}\n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{\'COMMAND_PANEL\' | translate}} \n \n
\n
\n
\n
- {{\'SELECTED_LINE\' | translate}} - \n {{\'NUMBER_OF_COLUMN\' | translate}} : \n \n
\n
\n
\n \n
\n
\n {{vm.configuration.lines[vm.configuration.activeLine -1].columns.length}} \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{\'VISUAL_PANEL\' | translate}} \n \n \n
\n \n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n \n {{line.columns[0].control.type !== \'none\' ? line.columns[0].control.type + \' \' + line.columns[0].control.subtype || \'\' : \'column 1\'}}\n \n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n {{line.columns[0].control.type !== \'none\' ? line.columns[0].control.type + \' \' + line.columns[0].control.subtype || \'\' : \'column 1\'}}\n \n
\n
\n \n {{line.columns[1].control.type !== \'none\' ? line.columns[1].control.type + \' \' + line.columns[1].control.subtype || \'\' : \'column 2\'}}\n \n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n {{line.columns[0].control.type !== \'none\' ? line.columns[0].control.type + \' \' + line.columns[0].control.subtype || \'\' : \'column 1\'}}\n \n
\n
\n \n {{line.columns[1].control.type !== \'none\' ? line.columns[1].control.type + \' \' + line.columns[1].control.subtype || \'\' : \'column 2\'}}\n \n
\n
\n \n {{line.columns[2].control.type !== \'none\' ? line.columns[2].control.type + \' \' + line.columns[2].control.subtype || \'\' : \'column 3\'}}\n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
{{\'COMMAND_PANEL\' | translate}} \n \n
\n
\n
\n
- {{\'APPLY_CTRL2COL\' | translate}} - \n \n
\n
\n
\n
\n
\n {{\'CLIC_TAP_2_OPEN\' | translate}}.
\n {{\'SELECT_2_APPLY_COL\' | translate}}.
\n \n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
{{\'VISUAL_PANEL\' | translate}} \n \n \n
\n \n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n \n {{line.columns[0].control.type !== \'none\' ? line.columns[0].control.type + \' \' + line.columns[0].control.subtype || \'\' : \'column 1\'}}\n \n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n {{line.columns[0].control.type !== \'none\' ? line.columns[0].control.type + \' \' + line.columns[0].control.subtype || \'\' : \'column 1\'}}\n \n
\n
\n \n {{line.columns[1].control.type !== \'none\' ? line.columns[1].control.type + \' \' + line.columns[1].control.subtype || \'\' : \'column 2\'}}\n \n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n \n {{line.columns[0].control.type !== \'none\' ? line.columns[0].control.type + \' \' + line.columns[0].control.subtype || \'\' : \'column 1\'}}\n \n
\n
\n \n {{line.columns[1].control.type !== \'none\' ? line.columns[1].control.type + \' \' + line.columns[1].control.subtype || \'\' : \'column 2\'}}\n \n
\n
\n \n {{line.columns[2].control.type !== \'none\' ? line.columns[2].control.type + \' \' + line.columns[2].control.subtype || \'\' : \'column 3\'}}\n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
{{\'COMMAND_PANEL\' | translate}} \n \n
\n
\n
\n
\n
\n
\n
{{\'SAVE_THIS_FORM\' | translate}} \n
\n
\n
\n
\n
\n
\n
\n
\n
{{\'FINAL_STEP\' | translate}} \n \n
\n \n
\n
\n
\n
\n
\n
\n
\n \n\n \n \n \n
\n
{{\'DATA_MODEL\' | translate}}
\n
\n {{vm.dataModel | json}}\n \n
\n
\n \n
\n
{{\'FIELDS_MODEL\' | translate}}
\n
\n {{vm.wfFormFieldsOnlyNeededProperties | json}}\n \n
\n
\n \n \n
\n
\n \n
\n \n
\n
\n ',
-d.define=e,c.exports}),a.register("11",[],function(a){"use strict";var b,c,d,e,f,g,h,i;return{setters:[],execute:function(){b={showDebug:!1,configurationModelNumberofLines:1},c=function(){return angular.copy(b)},d={editTab:{active:!0},previewTab:{active:!1,tabVisible:!0,modelsVisible:!0}},e=function(a,b){var c=angular.copy(d);return angular.extend(c.previewTab,{tabVisible:a,modelsVisible:b}),c},f={numColumn:-1,exist:!0,control:{type:"none",key:"none",subtype:"none"}},g=function(){return angular.copy(f)},h={line:-1,activeColumn:1,columns:[{numColumn:1,exist:!0,control:{type:"none",key:"none"}}]},i=function(){return angular.copy(h)},a("initDebugModel",c),a("initTabModel",e),a("initColumnTemplate",g),a("initLineTemplate",i)}}}),a.registerDynamic("12",[],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports='\n\n
\n
\n
\n
\n \n \n {{\'SELECT_CTRL_IN_LIST\' | translate}} :\n \n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n {{\'SELECT_A_CTRL\' | translate}}\n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n {{\'COL_WILL_BE_BLANK\' | translate}}\n \n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n \n {{\'ADD_NEW_RADIO\' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{\'EDIT_REMOVE_RADIO\' | translate}} :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n \n {{\'ADD_NEW_OPTIONS\' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{\'EDIT_REMOVE_OPTIONS\' | translate}} :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n {{\'PREVIEW_TAB\' | translate}} :\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n {{\'EDIT_PROPERTIES\' | translate}} :\n \n \n
\n
\n
\n
\n \n {{\'ADD_NEW_OPTIONS\' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{\'ADD_NEW_GROUPS\' | translate}} :\n \n
\n
\n
\n
\n
\n \n {{\'EDIT_GROUPS_OPTIONS\' | translate}} :\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n',
-d.define=e,c.exports}),a.register("13",["11","12","14","15","16"],function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;return{setters:[function(a){b=a.initDebugModel,c=a.initTabModel,d=a.initColumnTemplate,e=a.initLineTemplate},function(a){f=a["default"]},function(a){g=a.EDIT_MODAL_CONTROLLER_NAME,h=a.EDIT_MODAL_CONTROLLERAS_NAME},function(a){i=a["default"]},function(a){j=a["default"]}],execute:function(){"use strict";k="edaStepWayEasyFormGenController",l="vm",m=function(){function a(b,c,d,e,f,g,h,i,k){j(this,a),this.easyFormGenVersion=b,this.$filter=c,this.toaster=d,this.$timeout=e,this.$modal=f,this.$log=g,this.$formlyProxy=h,this.$modalProxy=i,this.easyFormSteWayConfig=k,this.init()}return i(a,[{key:"init",value:function(){this.dataModel={},this.wfFormFields=[],this.wfFormFieldsOnlyNeededProperties=[],this.easyFormGeneratorVERSION=this.easyFormGenVersion,this.debug=b(),this.tab=c(this.easyFormSteWayConfig.isPreviewPanelVisible(),this.easyFormSteWayConfig.arePreviewModelsVisible()),this.configuration={},this.numberOfColumns=1,this.MaxNumberOfColumns=3,this.MinNumberOfColumns=1,this.columnTemplate=d(),this.lineTemplate=e(),this.nyaSelect={},this.animationsEnabled=this.easyFormSteWayConfig.getModalAnimationValue(),this.editControlModalSize="lg",this.formlyList={},this.previewLoadedForm={fieldsModel:[]},this.configurationLoaded={},this.returnSaveEvent=!1,this.$formlyProxy.initConfigurationEditFromScratch(this.configuration),this.$modalProxy.initNyaSelect(this.nyaSelect)}},{key:"onSubmit",value:function(){var a=this.$filter("json")(this.dataModel,4);this.toaster.pop({type:"info",timeout:2e3,title:"it should save data model if it were not in editor",body:"data : "+a,showCloseButton:!0})}},{key:"countConfigurationModelLines",value:function(){return this.debug.configurationModelNumberofLines=this.configuration.lines.length,this.configuration.lines.length}},{key:"setActiveLineNumber",value:function(a){a<=this.countConfigurationModelLines()&&(this.configuration.activeLine=a)}},{key:"upThisLine",value:function(a){if(a>-1&&this.configuration.lines[a-1]){var b=this.configuration.lines[a];this.configuration.lines.splice(a,1),this.configuration.lines.splice(a-1,0,b),this.configuration.activeLine=1}this.$formlyProxy.applyConfigurationToformlyModel(this.configuration,this.wfFormFields,this.dataModel),this.wfFormFieldsOnlyNeededProperties=angular.copy(this.wfFormFields)}},{key:"downThisLine",value:function(a){if(a>-1&&this.configuration.lines[a+1]){var b=this.configuration.lines[a];this.configuration.lines.splice(a,1),this.configuration.lines.splice(a+1,0,b),this.configuration.activeLine=1}this.$formlyProxy.applyConfigurationToformlyModel(this.configuration,this.wfFormFields,this.dataModel),this.wfFormFieldsOnlyNeededProperties=angular.copy(this.wfFormFields)}},{key:"addNewline",value:function(){this.configuration.lines.push(e()),this.$formlyProxy.applyConfigurationToformlyModel(this.configuration,this.wfFormFields,this.dataModel),this.wfFormFieldsOnlyNeededProperties=angular.copy(this.wfFormFields)}},{key:"removeThisLine",value:function(a){a>-1&&(this.configuration.lines.length>1?(this.configuration.activeLine===a+1&&(this.configuration.activeLine=1),this.configuration.lines.splice(a,1)):this.$timeout(function(){this.toaster.pop({type:"warning",title:"Last line",body:"Can't delete the last line",showCloseButton:!0})},100),this.$formlyProxy.applyConfigurationToformlyModel(this.configuration,this.wfFormFields,this.dataModel),this.wfFormFieldsOnlyNeededProperties=angular.copy(this.wfFormFields))}},{key:"increaseNumberOfColumns",value:function(){var a=this.configuration.activeLine-1;if(this.configuration.lines[a].columns.length1&&this.configuration.lines[this.configuration.activeLine-1].columns.splice(this.configuration.lines[this.configuration.activeLine-1].columns.length-1,1),this.$formlyProxy.applyConfigurationToformlyModel(this.configuration,this.wfFormFields,this.dataModel),this.wfFormFieldsOnlyNeededProperties=angular.copy(this.wfFormFields)}},{key:"resetStepCounter",value:function(){this.configuration.configStepCounter=0}},{key:"nextConfigStep",value:function(){var a=this.configuration.listConfigStep.length-1;this.configuration.configStepCounter!==a&&this.configuration.configStepCounter++,this.setTrueThisStepIndicator(this.configuration.configStepCounter)}},{key:"resetAllIndicators",value:function(){for(var a=this.configuration.stepIndicators.length-1;a>=0;a--)this.configuration.stepIndicators[a]=!1}},{key:"setTrueThisStepIndicator",value:function(a){this.resetAllIndicators(),this.configuration.stepIndicators[a]=!0}},{key:"previousConfigStep",value:function(){0!==this.configuration.configStepCounter&&this.configuration.configStepCounter--,this.setTrueThisStepIndicator(this.configuration.configStepCounter)}},{key:"stepReachable",value:function(a){return a0?a.edaEasyFormGeneratorModel.edaFieldsModel:f();return b}function e(){var b=angular.isArray(a.edaEasyFormGeneratorModel.dataModel)&&a.edaEasyFormGeneratorModel.dataModel.length>0?a.edaEasyFormGeneratorModel.dataModel:{};return b}function f(){var a=[{line:1,activeColumn:1,columns:[{numColumn:1,exist:!0,control:{type:"none",key:"none"}}]}];return a}a.$watch(function(){return a.edaEasyFormGeneratorModel},function(a,c){b()},!0),a.$watch(function(){return a.vm.returnSaveEvent},function(b,c){if(b===!0){var d={formName:a.vm.configuration.formName,btnSubmitText:a.vm.configuration.submitButtonText,btnCancelText:a.vm.configuration.cancelButtonText,edaFieldsModel:a.vm.configuration.lines,edaFieldsModelStringified:angular.toJson(a.vm.configuration.lines),formlyFieldsModel:a.vm.wfFormFieldsOnlyNeededProperties,dataModel:a.vm.dataModel};a.edaSaveFormEvent({edaEasyFormGeneratorModel:d}),a.returnSaveEvent=!1}})}var i={restrict:"E",scope:{edaEasyFormGeneratorModel:"=",edaSaveFormEvent:"&edaSaveFormEvent"},controller:e,controllerAs:f,replace:!1,template:c,link:h};return i}var c,d,e,f,g;return{setters:[function(a){c=a["default"]},function(a){d=a["default"],e=a.STEP_WAY_MAIN_CONTROLLER_NAME,f=a.STEP_WAY_MAIN_CONTROLLERAS_NAME}],execute:function(){g="edaStepWayEasyFormGen",b.$inject=["$templateCache","$timeout","$formlyProxy","$modalProxy"],a("default",b),a("STEP_WAY_DIRECTIVE_NAME",g)}}}),a.register("18",[],function(a){"use strict";function b(a){function b(){var a={modalAnimated:!1};return a}function c(){return!0}function d(){return!0}function e(){return v}function f(){var a=[{name:"empty",enabled:!0},{name:"Header",enabled:!0},{name:"Subtitle",enabled:!0},{name:"TextInput",enabled:!0},{name:"Password",enabled:!0},{name:"Email",enabled:!0},{name:"Date",enabled:!0},{name:"Texarea",enabled:!0},{name:"RichTextEditor",enabled:!0},{name:"Radio",enabled:!0},{name:"Checkbox",enabled:!0},{name:"BasicSelect",enabled:!0},{name:"GroupedSelect",enabled:!0}];return a}function g(a){angular.isDefined(a)&&(a===!0&&(w=!0),a===!1&&(w=!1))}function h(a){angular.isDefined(a)&&(a===!0&&(x=!0),a===!1&&(x=!1))}function i(){var a="en";return a}function j(){return v=u,a.preferredLanguage(v),v}function k(b){angular.isString(b)?(v=b,a.preferredLanguage(b)):j()}function l(){return a.useSanitizeValueStrategy("escape"),a.fallbackLanguage(u),a.preferredLanguage(u),u}function m(){return t}function n(a){angular.isString(a)&&angular.forEach(t,function(b){b.name===a&&(b.enabled=!1)})}function o(a){angular.isString(a)&&angular.forEach(t,function(b){b.name===a&&(b.enabled=!0)})}function p(a){var b=a===!0?a:a===!1?a:s.modalAnimated;s.modalAnimated=b}function q(){return s.modalAnimated}function r(a){function b(){return s.modalAnimated}function c(a){p(a)}function d(){return angular.copy(t)}function f(b){angular.isString(b)?(v=b,a.use(b)):j()}function g(){return w}function h(){return x}var i={setModalAnimation:c,getModalAnimationValue:b,getListEnabledControl:d,setLanguage:f,getCurrentLanguage:e,isPreviewPanelVisible:g,arePreviewModelsVisible:h};return i}var s=b(),t=f(),u=i(),v=l(),w=c(),x=d();this.$get=r,this.setModalAnimation=p,this.getModalAnimation=q,this.configuration=s,this.getEnabledControls=m,this.disableControl=n,this.enableControl=o,this.setLanguage=k,this.getCurrentLanguage=e,this.showPreviewPanel=g,this.showPreviewModels=h,r.$inject=["$translate"]}var c;return{setters:[],execute:function(){c="easyFormSteWayConfig",b.$inject=["$translateProvider"],a("default",b),a("EASY_FORM_STEP_WAY_CONFIG_NAME",c)}}}),a.register("19",["13","17","18"],function(a){"use strict";var b,c,d,e,f,g,h;return{setters:[function(a){b=a["default"],c=a.STEP_WAY_MAIN_CONTROLLER_NAME},function(a){d=a["default"],e=a.STEP_WAY_DIRECTIVE_NAME},function(a){f=a["default"],g=a.EASY_FORM_STEP_WAY_CONFIG_NAME}],execute:function(){h="easyFormStepwayMainModule",a("default",angular.module(h,[]).controller(c,b).directive(e,d).provider(g,f))}}}),a.register("14",["15","16"],function(a){var b,c,d,e,f,g;return{setters:[function(a){b=a["default"]},function(a){c=a["default"]}],execute:function(){"use strict";d="editControlModalController",e="editControlModCtrl",f=function(){function a(b,d,e,f,g){c(this,a),this.$modalInstance=b,this.nyaSelect=d,this.toaster=e,this.selectOptionManage=f,this.$modalProxy=g,this.init()}return b(a,[{key:"init",value:function(){var a={rows:[]};this.radioRowCollection=a,this.newOptionRadio={saisie:""},this.basicSelectRowCollection=a,this.newOptionBasicSelect={saisie:""},this.groupedSelectRowCollection=a,this.newOptionGroupedSelect={saisie:""},this.GroupedSelectGroups={list:[]},this.newGroupGroupedSelect={saisie:""},this.groupSelectGroupClick={showList:!1},this.demodt={},this.dateOptions=this.dateOptionsInit(),this.demodt.formats=["dd-MMMM-yyyy","yyyy/MM/dd","dd.MM.yyyy","shortDate"],this.nyaSelect.selectedControl=this.nyaSelect.temporyConfig.selectedControl,this.nyaSelectFiltered={},this.modelNyaSelect={},this.today(),this.initNyaSelectConformingSelectedControl()}},{key:"initNyaSelectConformingSelectedControl",value:function(){if("none"!==this.nyaSelect.selectedControl){for(var a=this.nyaSelect.controls.length-1;a>=0;a--)this.nyaSelect.controls[a].id===this.nyaSelect.selectedControl&&(this.modelNyaSelect=this.nyaSelect.controls[a]);"BasicSelect"===this.nyaSelect.selectedControl&&this.bindBasicSelectFromNYA(),"GroupedSelect"===this.nyaSelect.selectedControl&&this.bindGroupedSelectFromNYA(),"Radio"===this.nyaSelect.selectedControl&&this.bindRadioFromNYA()}this.initNyaSelectFiltered(),console.info("modal controller : nyaSelect"),console.dir(this.nyaSelect)}},{key:"initNyaSelectFiltered",value:function(){var a=[].concat(this.$modalProxy.getFilteredNyaSelectObject());angular.extend(this.nyaSelectFiltered,{controls:a,selectedControl:this.nyaSelect.selectedControl,temporyConfig:this.nyaSelect.temporyConfig})}},{key:"bindBasicSelectFromNYA",value:function(){if(this.nyaSelect.temporyConfig.formlyOptions.length>0)for(var a=0;a<=this.nyaSelect.temporyConfig.formlyOptions.length-1;a++){var b={option:this.nyaSelect.temporyConfig.formlyOptions[a].name,order:a,group:""};this.basicSelectRowCollection.rows.push(b)}}},{key:"bindRadioFromNYA",value:function(){if(this.nyaSelect.temporyConfig.formlyOptions.length>0)for(var a=0;a<=this.nyaSelect.temporyConfig.formlyOptions.length-1;a++){var b={option:this.nyaSelect.temporyConfig.formlyOptions[a].name,order:a,group:""};this.radioRowCollection.rows.push(b)}}},{key:"bindGroupedSelectFromNYA",value:function(){if(this.nyaSelect.temporyConfig.formlyOptions.length>0){for(var a=0;a<=this.nyaSelect.temporyConfig.formlyOptions.length-1;a++){var b={option:this.nyaSelect.temporyConfig.formlyOptions[a].name,order:a,group:this.nyaSelect.temporyConfig.formlyOptions[a].group};this.groupedSelectRowCollection.rows.push(b)}var c=_.uniq(_.pluck(this.groupedSelectRowCollection.rows,"group"));angular.copy(c,this.GroupedSelectGroups.list)}}},{key:"addNewOptionRadio",value:function(){var a=this.selectOptionManage.addNewOptionRadio(this.radioRowCollection,this.newOptionRadio.saisie);a.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:a.details,body:"'"+this.newOptionRadio.saisie+"' cannot be added.",showCloseButton:!0}),this.newOptionRadio={saisie:""}}},{key:"removeRadioRow",value:function(a){var b=this.selectOptionManage.removeOption(this.radioRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Delete was cancelled.",showCloseButton:!0})}},{key:"upThisRadioRow",value:function(a){var b=this.selectOptionManage.upthisOption(this.radioRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"downThisRadioRow",value:function(a){var b=this.selectOptionManage.downthisOption(this.radioRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"addNewOptionBasicSelect",value:function(){var a=this.selectOptionManage.addNewOptionBasicSelect(this.basicSelectRowCollection,this.newOptionBasicSelect.saisie);a.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:a.details,body:"'"+this.newOptionBasicSelect.saisie+"' cannot be added.",showCloseButton:!0}),this.newOptionBasicSelect={saisie:""}}},{key:"removeRow",value:function(a){var b=this.selectOptionManage.removeOption(this.basicSelectRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Delete was cancelled.",showCloseButton:!0})}},{key:"upThisRow",value:function(a){var b=this.selectOptionManage.upthisOption(this.basicSelectRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"downThisRow",value:function(a){var b=this.selectOptionManage.downthisOption(this.basicSelectRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"showGroupListToChoose",value:function(){this.groupSelectGroupClick.showList=!this.groupSelectGroupClick.showList}},{key:"addNewGroupToGroupedSelect",value:function(){if(""!==this.newGroupGroupedSelect.saisie){for(var a=this.GroupedSelectGroups.list.length-1;a>=0;a--)this.GroupedSelectGroups.list[a]===this.newGroupGroupedSelect.saisie&&this.toaster.pop({type:"warning",timeout:2e3,title:"Group already exists",body:"No group added.",showCloseButton:!0});this.GroupedSelectGroups.list.push(this.newGroupGroupedSelect.saisie)}else this.toaster.pop({type:"warning",timeout:2e3,title:"Not a valid group to add",body:"No group added.",showCloseButton:!0});this.newGroupGroupedSelect.saisie=""}},{key:"addNewOptionGroupedSelect",value:function(){var a=this.selectOptionManage.addNewOptionGroupedSelect(this.groupedSelectRowCollection,this.newOptionGroupedSelect.saisie,"");a.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:a.details,body:"'"+this.newOptionGroupedSelect.saisie+"' cannot be added.",showCloseButton:!0}),this.newOptionGroupedSelect={saisie:""}}},{key:"removeGroupedSelectRow",value:function(a){var b=this.selectOptionManage.removeOption(this.groupedSelectRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Delete was cancelled.",showCloseButton:!0})}},{key:"upThisGroupedSelectRow",value:function(a){var b=this.selectOptionManage.upthisOption(this.groupedSelectRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"downThisGroupedSelectRow",value:function(a){var b=this.selectOptionManage.downthisOption(this.groupedSelectRowCollection,a);b.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:b.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"today",value:function(){this.demodt.dt=new Date}},{key:"clear",value:function(){this.demodt.dt=null}},{key:"open",value:function(a){a.preventDefault(),a.stopPropagation(),this.demodt.opened=!0}},{key:"dateOptionsInit",value:function(){return{formatYear:"yy",startingDay:1,showWeeks:!0,initDate:null}}},{key:"selectThisControl",value:function(a){this.nyaSelect.selectedControl="none",this.resetTemporyConfig();for(var b=this.nyaSelect.controls.length-1;b>=0;b--)this.nyaSelect.controls[b].id===a&&(this.nyaSelect.selectedControl=this.nyaSelect.controls[b].id);"Date"===this.nyaSelect.selectedControl&&this.initDatePicker()}},{key:"ok",value:function(){"BasicSelect"===this.nyaSelect.selectedControl&&this.bindBasicSelectToNya(),"GroupedSelect"===this.nyaSelect.selectedControl&&this.bindGroupedSelectToNya(),"Radio"===this.nyaSelect.selectedControl&&this.bindRadioToNya(),this.$modalProxy.applyConfigToSelectedControl(this.nyaSelect),this.$modalInstance.close(this.nyaSelect)}},{key:"cancel",value:function(){this.$modalInstance.dismiss("cancel")}},{key:"bindBasicSelectToNya",value:function(){var a=[];if(this.nyaSelect.temporyConfig.formlyOptions=a,this.basicSelectRowCollection.rows.length>0)for(var b=0;b<=this.basicSelectRowCollection.rows.length-1;b++){var c={name:this.basicSelectRowCollection.rows[b].option,value:b,group:""};this.nyaSelect.temporyConfig.formlyOptions.push(c)}}},{key:"bindGroupedSelectToNya",value:function(){this.nyaSelect.temporyConfig.formlyOptions=[];for(var a=0;a<=this.groupedSelectRowCollection.rows.length-1;a++){var b={name:this.groupedSelectRowCollection.rows[a].option,value:a,group:this.groupedSelectRowCollection.rows[a].group};this.nyaSelect.temporyConfig.formlyOptions.push(b)}}},{key:"bindRadioToNya",value:function(){var a=[];if(this.nyaSelect.temporyConfig.formlyOptions=a,this.radioRowCollection.rows.length>0)for(var b=0;b<=this.radioRowCollection.rows.length-1;b++){var c={name:this.radioRowCollection.rows[b].option,value:b,group:""};this.nyaSelect.temporyConfig.formlyOptions.push(c)}}},{key:"initDatePicker",value:function(){this.nyaSelect.temporyConfig.datepickerPopup=this.demodt.formats[0]}},{key:"resetTemporyConfig",value:function(){this.nyaSelectFiltered.temporyConfig={formlyLabel:"",formlyRequired:!1,formlyPlaceholder:"",formlyDesciption:"",formlyOptions:[]}}}]),a}(),g=["$modalInstance","nyaSelect","toaster","selectOptionManage","$modalProxy"],f.$inject=g,a("default",f),a("EDIT_MODAL_CONTROLLER_NAME",d),a("EDIT_MODAL_CONTROLLERAS_NAME",e)}}}),a.register("1a",["14"],function(a){"use strict";var b,c,d;return{setters:[function(a){b=a["default"],c=a.EDIT_MODAL_CONTROLLER_NAME}],execute:function(){d="editControlModalModule",a("default",angular.module(d,[]).controller(c,b))}}}),a.register("1b",[],function(a){"use strict";var b,c,d,e;return{setters:[],execute:function(){b=function(a){var b={controls:[{id:"empty",name:"no control",subtitle:"no control",group:"Blank",formlyType:"blank",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{}},{id:"Header",name:"Header",subtitle:"no control",group:"Decoration",formlyType:"header",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{}},{id:"Subtitle",name:"Subtitle",subtitle:"no control",group:"Decoration",formlyType:"subTitle",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{}},{id:"TextInput",name:"Text input",subtitle:"Text input",group:"input",formlyType:"input",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(a,b,c){var d="this Text input field is required",e="undefined"!=typeof c.to.label&&""!==c.to.label?c.to.label+" is required":d;return e}}}},{id:"Password",name:"Password",subtitle:"Password",group:"input",formlyType:"input",formlySubtype:"password",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(a,b,c){var d="this Password field is required",e="undefined"!=typeof c.to.label&&""!==c.to.label?c.to.label+" is required":d;return e}}}},{id:"Email",name:"Email",subtitle:"Email",group:"input",formlyType:"input",formlySubtype:"email",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{emailShape:{expression:function(a,b){var c=b||a;return/^[a-z]+[a-z0-9._]+@[a-z]+\.[a-z.]{2,5}$/.test(c)},message:"$viewValue + ' is not a valid email'"}},formlyValidation:{messages:{required:function(a,b,c){var d="this Email field is required",e="undefined"!=typeof c.to.label&&""!==c.to.label?c.to.label+" is required":d;return c.to.required?e:void 0}}}},{id:"Date",name:"Date",subtitle:"Date",group:"input",formlyType:"datepicker",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[],datepickerPopup:"dd-MMMM-yyyy",formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(a,b,c){var d="this Date field is required",e="undefined"!=typeof c.to.label&&""!==c.to.label?c.to.label+" is required":d;return e}}}},{id:"Texarea",name:"Textarea",subtitle:"Textarea",group:"Textarea",formlyType:"textarea",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(a,b,c){var d="this Textarea field is required",e="undefined"!=typeof c.to.label&&""!==c.to.label?c.to.label+" is required":d;return e}}}},{id:"RichTextEditor",name:"RichTextEditor",subtitle:"RichTextEditor",group:"Textarea",formlyType:"richEditor",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(a,b,c){var d="this RichTextEditor field is required",e="undefined"!=typeof c.to.label&&""!==c.to.label?c.to.label+" is required":d;return e}}}},{id:"Radio",name:"Radio",subtitle:"Radio",options:[],group:"Radio",formlyType:"radio",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(a,b,c){var d="this Password field is required",e="undefined"!=typeof c.to.label&&""!==c.to.label?c.to.label+" is required":d;return e}}}},{id:"Checkbox",name:"Checkbox",subtitle:"Checkbox",group:"Checkbox",formlyType:"checkbox",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(a,b,c){var d="this Checkbox field is required",e="undefined"!=typeof c.to.label&&""!==c.to.label?c.to.label+" is required":d;return e}}}},{id:"BasicSelect",name:"Basic select",subtitle:"Basic select",options:[],group:"Select",formlyType:"basicSelect",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(a,b,c){var d="this Basic select field is required",e="undefined"!=typeof c.to.label&&""!==c.to.label?c.to.label+" is required":d;return e}}}},{id:"GroupedSelect",name:"Grouped Select",subtitle:"Grouped Select",options:[],group:"Select",formlyType:"groupedSelect",formlySubtype:"",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{messages:{required:function(a,b,c){var d="this Grouped Select field is required",e="undefined"!=typeof c.to.label&&""!==c.to.label?c.to.label+" is required":d;return e}}}}],selectedControl:"none",temporyConfig:{selectedControl:"none",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyPlaceholder:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{}}};return angular.copy(b,a),!0},c=function(){var a={};return angular.extend(a,{formlyLabel:"",formlyRequired:!1,formlyPlaceholder:"",formlyDesciption:"",formlyOptions:[]}),a},d=function(a){for(var b={selectedControl:"none",formlyType:"none",formlySubtype:"none",formlyLabel:"",formlyRequired:!1,formlyDesciption:"",formlyPlaceholder:"",formlyOptions:[],formlyExpressionProperties:{},formlyValidators:{},formlyValidation:{}},c=a.controls.length-1;c>=0;c--)a.selectedControl===a.controls[c].id&&(b.selectedControl=a.selectedControl,b.formlyType=a.controls[c].formlyType,b.formlySubtype=a.controls[c].formlySubtype,b.formlyLabel=a.controls[c].formlyLabel,b.formlyRequired=a.controls[c].formlyRequired,b.formlyDesciption=a.controls[c].formlyDesciption,b.formlyPlaceholder=a.controls[c].formlyPlaceholder,b.formlyOptions=a.controls[c].formlyOptions,b.formlyExpressionProperties=angular.copy(a.controls[c].formlyExpressionProperties),b.formlyValidators=angular.copy(a.controls[c].formlyValidators),b.formlyValidation=angular.copy(a.controls[c].formlyValidation),"datepicker"===a.controls[c].formlyType&&(b.datepickerPopup=a.controls[c].datepickerPopup));return b},e=function(a,b){for(var c=!0,d=b.lines.length-1;d>=0;d--)for(var e=b.lines[d].columns.length-1;e>=0;e--)b.lines[d].columns[e].control.key===a&&(c=!1);return c},a("resetNyaSelect",b),a("returnControlFromAddCtrlModalModel",d),a("validKeyUniqueness",e),a("getResetConfig",c)}}}),a.register("1c",["15","16","1b"],function(a){var b,c,d,e,f,g,h,i;return{setters:[function(a){b=a["default"]},function(a){c=a["default"]},function(a){d=a.resetNyaSelect,e=a.returnControlFromAddCtrlModalModel,f=a.validKeyUniqueness,g=a.getResetConfig}],execute:function(){"use strict";h="$modalProxy",i=function(){function a(b){c(this,a),this.easyFormSteWayConfig=b}return b(a,[{key:"initNyaSelect",value:function(a){return d(a)}},{key:"getControlsDefinition",value:function(){var a={};return d(a),a}},{key:"getNyASelectFromSelectedLineColumn",value:function(a,b,c,e){return d(a),"undefined"!=typeof b.lines[c].columns[e].control.templateOptions&&(a.temporyConfig.selectedControl="undefined"!=typeof b.lines[c].columns[e].control.selectedControl?b.lines[c].columns[e].control.selectedControl:"none",a.temporyConfig.formlyLabel="undefined"!=typeof b.lines[c].columns[e].control.templateOptions.label?b.lines[c].columns[e].control.templateOptions.label:"",a.temporyConfig.formlyRequired="undefined"!=typeof b.lines[c].columns[e].control.templateOptions.required?b.lines[c].columns[e].control.templateOptions.required:"",a.temporyConfig.formlyDesciption="undefined"!=typeof b.lines[c].columns[e].control.templateOptions.description?b.lines[c].columns[e].control.templateOptions.description:"",a.temporyConfig.formlyPlaceholder="undefined"!=typeof b.lines[c].columns[e].control.templateOptions.placeholder?b.lines[c].columns[e].control.templateOptions.placeholder:"",a.temporyConfig.formlyOptions="undefined"!=typeof b.lines[c].columns[e].control.templateOptions.options?b.lines[c].columns[e].control.templateOptions.options:"",a.temporyConfig.formlyExpressionProperties="undefined"!=typeof b.lines[c].columns[e].control.formlyExpressionProperties?angular.copy(b.lines[c].columns[e].control.formlyExpressionProperties):{},a.temporyConfig.formlyValidators="undefined"!=typeof b.lines[c].columns[e].control.formlyValidators?angular.copy(b.lines[c].columns[e].control.formlyValidators):{},a.temporyConfig.formlyValidation="undefined"!=typeof b.lines[c].columns[e].control.formlyValidation?angular.copy(b.lines[c].columns[e].control.formlyValidation):{},"Date"===a.temporyConfig.selectedControl&&(a.temporyConfig.datepickerPopup="undefined"!=typeof b.lines[c].columns[e].control.templateOptions.datepickerPopup?b.lines[c].columns[e].control.templateOptions.datepickerPopup:"")),a}},{key:"bindConfigurationModelFromModalReturn",value:function(a,b,c,d){var g=e(c);d.lines[a].columns[b].control.selectedControl=g.selectedControl,d.lines[a].columns[b].control.type=g.formlyType,d.lines[a].columns[b].control.subtype=g.formlySubtype,d.lines[a].columns[b].control.templateOptions={label:"",required:!1,description:"",placeholder:"",options:[]},d.lines[a].columns[b].control.templateOptions.label=g.formlyLabel,d.lines[a].columns[b].control.templateOptions.required=g.formlyRequired,d.lines[a].columns[b].control.templateOptions.description=g.formlyDesciption,d.lines[a].columns[b].control.templateOptions.placeholder=g.formlyPlaceholder,d.lines[a].columns[b].control.templateOptions.options=g.formlyOptions,
-d.lines[a].columns[b].control.formlyExpressionProperties=angular.copy(g.formlyExpressionProperties),d.lines[a].columns[b].control.formlyValidators=angular.copy(g.formlyValidators),d.lines[a].columns[b].control.formlyValidation=angular.copy(g.formlyValidation),"datepicker"===d.lines[a].columns[b].control.type&&(d.lines[a].columns[b].control.templateOptions.datepickerPopup=g.datepickerPopup);var h=d.lines[a].columns[b].control.type+"-"+Date.now();f(h,d)===!0?d.lines[a].columns[b].control.key=h:(h=d.lines[a].columns[b].control.type+"-"+Date.now(),f(h,d)===!0?d.lines[a].columns[b].control.key=h:h=d.lines[a].columns[b].control.type+"-"+Date.now()),d.lines[a].columns[b].control.edited=!0}},{key:"applyConfigToSelectedControl",value:function(a){for(var b=a.controls.length-1;b>=0;b--)a.controls[b].id===a.selectedControl&&(a.controls[b].formlyLabel=a.temporyConfig.formlyLabel,a.controls[b].formlyRequired=a.temporyConfig.formlyRequired,a.controls[b].formlyDesciption=a.temporyConfig.formlyDesciption,a.controls[b].formlyPlaceholder=a.temporyConfig.formlyPlaceholder,a.controls[b].formlyOptions=a.temporyConfig.formlyOptions,"Date"===a.controls[b].id&&(a.controls[b].datepickerPopup=a.temporyConfig.datepickerPopup))}},{key:"resetTemporyConfig",value:function(){return g()}},{key:"refreshControlFormlyExpressionProperties",value:function(a){var b=this;angular.isObject(a)&&angular.forEach(a.lines,function(a,c){angular.forEach(a.columns,function(a,c){var d=b.getControlsDefinition();angular.forEach(d.controls,function(b,c){a.control.type===b.formlyType&&a.control.subtype===b.formlySubtype&&(a.control.formlyExpressionProperties=b.formlyExpressionProperties)})})})}},{key:"refreshControlFormlyValidators",value:function(a){var b=this;angular.isObject(a)&&angular.forEach(a.lines,function(a,c){angular.forEach(a.columns,function(a,c){var d=b.getControlsDefinition();angular.forEach(d.controls,function(b,c){a.control.type===b.formlyType&&a.control.subtype===b.formlySubtype&&(a.control.formlyValidators=b.formlyValidators)})})})}},{key:"refreshControlFormlyValidation",value:function(a){var b=this;angular.isObject(a)&&angular.forEach(a.lines,function(a,c){angular.forEach(a.columns,function(a,c){var d=b.getControlsDefinition();angular.forEach(d.controls,function(b,c){a.control.type===b.formlyType&&a.control.subtype===b.formlySubtype&&(a.control.formlyValidation=b.formlyValidation)})})})}},{key:"filterDisabledControl",value:function(a){var b=this.easyFormSteWayConfig.getListEnabledControl(),c=[];return angular.forEach(b,function(b){angular.forEach(a.controls,function(a){a.id===b.name&&b.enabled===!0&&(c=c.concat(a))})}),c}},{key:"getFilteredNyaSelectObject",value:function(){var a={};return d(a),angular.copy(this.filterDisabledControl(angular.copy(a)))}}]),a}(),i.$inject=["easyFormSteWayConfig"],a("default",i),a("CONTROLLER_MODAL_PROXY_SERVICE",h)}}}),a.register("1d",["1c"],function(a){"use strict";var b,c,d;return{setters:[function(a){b=a["default"],c=a.CONTROLLER_MODAL_PROXY_SERVICE}],execute:function(){d="modalProxyModule",a("default",angular.module(d,[]).service(c,b))}}}),a.register("1e",[],function(a){"use strict";var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;return{setters:[],execute:function(){b={activeLine:1,listConfigStep:["init","first","second","third"],stepIndicators:[!0,!1,!1,!1],configStepCounter:0,submitButtonText:"submit",cancelButtonText:"cancel",lines:[{line:1,activeColumn:1,columns:[{numColumn:1,exist:!0,control:{type:"none",key:"none"}}]}]},c={activeLine:1,listConfigStep:["init","first","second","third"],stepIndicators:[!0,!1,!1,!1],configStepCounter:0,submitButtonText:"submit",cancelButtonText:"cancel",lines:[]},d=function(a){return"undefined"!=typeof a.templateOptions?!0:!1},e=function(a){return"undefined"!=typeof a.templateOptions&&"undefined"!=typeof a.templateOptions.label?a.templateOptions.label:""},f=function(a){return"undefined"!=typeof a.templateOptions&&"undefined"!=typeof a.templateOptions.datepickerPopup?a.templateOptions.datepickerPopup:""},g=function(a){return"undefined"!=typeof a.formlyExpressionProperties?angular.copy(a.formlyExpressionProperties):{}},h=function(a){return"undefined"!=typeof a.formlyValidators?angular.copy(a.formlyValidators):{}},i=function(a){return"undefined"!=typeof a.formlyValidation?angular.copy(a.formlyValidation):{}},j=function(a){return"undefined"!=typeof a.templateOptions&&"undefined"!=typeof a.templateOptions.required?a.templateOptions.required:""},k=function(a){return"undefined"!=typeof a.templateOptions&&"undefined"!=typeof a.templateOptions.options?a.templateOptions.options:""},l=function(a){return"undefined"!=typeof a.subtype?a.subtype:""},m=function(a){return"undefined"!=typeof a.templateOptions&&"undefined"!=typeof a.templateOptions.placeholder?a.templateOptions.placeholder:""},n=function(a){return"undefined"!=typeof a.templateOptions&&"undefined"!=typeof a.templateOptions.description?a.templateOptions.description:""},o=function(a,b,c){a.templateOptions.datepickerPopup=f(b.lines[c].columns[0].control)},p=function(a,b,c){var d='
'+n(b.lines[c].columns[0].control)+" ";a.push({template:"undefined"!=typeof b.lines[c].columns[0].control.type&&"header"===b.lines[c].columns[0].control.type?d:"
"})},q=function(a,b,c){var d={className:"col-xs-12",type:"undefined"!=typeof b.lines[c].columns[0].control.type?"none"===b.lines[c].columns[0].control.type?"blank":b.lines[c].columns[0].control.type:"blank",key:"undefined"!=typeof b.lines[c].columns[0].control.key?b.lines[c].columns[0].control.key:"blank"+Date.now(),templateOptions:{type:l(b.lines[c].columns[0].control),label:e(b.lines[c].columns[0].control),required:j(b.lines[c].columns[0].control),placeholder:m(b.lines[c].columns[0].control),description:n(b.lines[c].columns[0].control),options:k(b.lines[c].columns[0].control)},expressionProperties:g(b.lines[c].columns[0].control),validators:h(b.lines[c].columns[0].control),validation:i(b.lines[c].columns[0].control)};"datepicker"===b.lines[c].columns[0].control.type&&o(d,b,c),a.push(d)},r=function(a,b,c){var d={className:"col-xs-6",template:'
'+n(b.lines[c].columns[0].control)+" "},f={className:"col-xs-6",template:'
'+n(b.lines[c].columns[1].control)+" "},p={className:"col-xs-6",type:"undefined"!=typeof b.lines[c].columns[0].control.type?"none"===b.lines[c].columns[0].control.type?"blank":b.lines[c].columns[0].control.type:"blank",key:"undefined"!=typeof b.lines[c].columns[0].control.key?b.lines[c].columns[0].control.key:"blank"+Date.now(),templateOptions:{type:l(b.lines[c].columns[0].control),label:e(b.lines[c].columns[0].control),required:j(b.lines[c].columns[0].control),placeholder:m(b.lines[c].columns[0].control),description:n(b.lines[c].columns[0].control),options:k(b.lines[c].columns[0].control)},expressionProperties:g(b.lines[c].columns[0].control),validators:h(b.lines[c].columns[0].control),validation:i(b.lines[c].columns[0].control)};"datepicker"===b.lines[c].columns[0].control.type&&o(p,b,c);var q={className:"col-xs-6",type:"undefined"!=typeof b.lines[c].columns[1].control.type?"none"===b.lines[c].columns[1].control.type?"blank":b.lines[c].columns[1].control.type:"blank",key:"undefined"!=typeof b.lines[c].columns[1].control.key?b.lines[c].columns[1].control.key:"blank"+Date.now(),templateOptions:{type:l(b.lines[c].columns[1].control),label:e(b.lines[c].columns[1].control),required:j(b.lines[c].columns[1].control),placeholder:m(b.lines[c].columns[1].control),description:n(b.lines[c].columns[1].control),options:k(b.lines[c].columns[1].control)},expressionProperties:g(b.lines[c].columns[1].control),validators:h(b.lines[c].columns[1].control),validation:i(b.lines[c].columns[1].control)};"datepicker"===b.lines[c].columns[1].control.type&&o(q,b,c);var r=[];"header"===b.lines[c].columns[0].control.type?r.push(d):r.push(p),"header"===b.lines[c].columns[1].control.type?r.push(f):r.push(q),a.push({className:"row",fieldGroup:r})},s=function(a,b,c){var d={className:"col-xs-4",template:'
'+n(b.lines[c].columns[0].control)+" "},f={className:"col-xs-4",template:'
'+n(b.lines[c].columns[1].control)+" "},p={className:"col-xs-4",template:'
'+n(b.lines[c].columns[2].control)+" "},q={className:"col-xs-4",type:"undefined"!=typeof b.lines[c].columns[0].control.type?"none"===b.lines[c].columns[0].control.type?"blank":b.lines[c].columns[0].control.type:"blank",key:"undefined"!=typeof b.lines[c].columns[0].control.key?b.lines[c].columns[0].control.key:"blank"+Date.now(),templateOptions:{type:l(b.lines[c].columns[0].control),label:e(b.lines[c].columns[0].control),required:j(b.lines[c].columns[0].control),placeholder:m(b.lines[c].columns[0].control),description:n(b.lines[c].columns[0].control),options:k(b.lines[c].columns[0].control)},expressionProperties:g(b.lines[c].columns[0].control),validators:h(b.lines[c].columns[0].control),validation:i(b.lines[c].columns[0].control)};"datepicker"===b.lines[c].columns[0].control.type&&o(q,b,c);var r={className:"col-xs-4",type:"undefined"!=typeof b.lines[c].columns[1].control.type?"none"===b.lines[c].columns[1].control.type?"blank":b.lines[c].columns[1].control.type:"blank",key:"undefined"!=typeof b.lines[c].columns[1].control.key?b.lines[c].columns[1].control.key:"blank"+Date.now(),templateOptions:{type:l(b.lines[c].columns[1].control),label:e(b.lines[c].columns[1].control),required:j(b.lines[c].columns[1].control),placeholder:m(b.lines[c].columns[1].control),description:n(b.lines[c].columns[1].control),options:k(b.lines[c].columns[1].control)},expressionProperties:g(b.lines[c].columns[1].control),validators:h(b.lines[c].columns[1].control),validation:i(b.lines[c].columns[1].control)};"datepicker"===b.lines[c].columns[1].control.type&&o(r,b,c);var s={className:"col-xs-4",type:"undefined"!=typeof b.lines[c].columns[2].control.type?"none"===b.lines[c].columns[2].control.type?"blank":b.lines[c].columns[2].control.type:"blank",key:"undefined"!=typeof b.lines[c].columns[2].control.key?b.lines[c].columns[2].control.key:"blank"+Date.now(),templateOptions:{type:l(b.lines[c].columns[2].control),label:e(b.lines[c].columns[2].control),required:j(b.lines[c].columns[2].control),placeholder:m(b.lines[c].columns[2].control),description:n(b.lines[c].columns[2].control),options:k(b.lines[c].columns[2].control)},expressionProperties:g(b.lines[c].columns[2].control),validators:h(b.lines[c].columns[2].control),validation:i(b.lines[c].columns[2].control)};"datepicker"===b.lines[c].columns[2].control.type&&o(s,b,c);var t=[];"header"===b.lines[c].columns[0].control.type?t.push(d):t.push(q),"header"===b.lines[c].columns[1].control.type?t.push(f):t.push(r),"header"===b.lines[c].columns[2].control.type?t.push(p):t.push(s),a.push({className:"row",fieldGroup:t})},t=function(a){var b={};return angular.copy(b,a),!0},u=function(a){var b=[];angular.copy(b,a)},a("configurationModelInit",b),a("configurationModelResult",c),a("resetDataModel",t),a("resetFormlyModel",u),a("isTemplateOptionDefined",d),a("extractTemplateOptionLabel",e),a("extractTemplateOptionDatepickerPopup",f),a("extractFormlyExpressionProperties",g),a("extractFormlyValidators",h),a("extractFormlyValidation",i),a("extractTemplateOptionRequired",j),a("extractTemplateOptionOptions",k),a("extractTemplateOptionType",l),a("extractTemplateOptionPlaceholder",m),a("extractTemplateOptionDescription",n),a("addDatepickerPopupProperty",o),a("addOneColumnHeader",p),a("addOneColumnControl",q),a("addTwoColumnControl",r),a("addThreeColumnControl",s)}}}),a.register("1f",["15","16","1e"],function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y;return{setters:[function(a){b=a["default"]},function(a){c=a["default"]},function(a){d=a.configurationModelInit,e=a.configurationModelResult,f=a.resetDataModel,g=a.resetFormlyModel,h=a.isTemplateOptionDefined,i=a.extractTemplateOptionLabel,j=a.extractTemplateOptionDatepickerPopup,k=a.extractFormlyExpressionProperties,l=a.extractFormlyValidators,m=a.extractFormlyValidation,n=a.extractTemplateOptionRequired,o=a.extractTemplateOptionOptions,p=a.extractTemplateOptionType,q=a.extractTemplateOptionPlaceholder,r=a.extractTemplateOptionDescription,s=a.addDatepickerPopupProperty,t=a.addOneColumnHeader,u=a.addOneColumnControl,v=a.addTwoColumnControl,w=a.addThreeColumnControl}],execute:function(){"use strict";x="$formlyProxy",y=function(){function a(){c(this,a),this.init()}return b(a,[{key:"init",value:function(){}},{key:"initConfigurationEditFromScratch",value:function(a){angular.copy(d,a)}},{key:"bindConfigurationLines",value:function(a,b){if(angular.isArray(b)){var c=e;return c.lines=[].concat(b),angular.copy(c,a),this.getMessageObject("configuration model is bound","lines are bound to configuration model.")}return this.getErrorObject("lines is not an array","Checks lines type, it is not an array.")}},{key:"applyConfigurationToformlyModel",value:function(a,b,c){g(b),f(c);for(var d=a.lines.length,e=0;d>e;e++)1===a.lines[e].columns.length&&("header"===a.lines[e].columns[0].control.type?t(b,a,e):u(b,a,e)),2===a.lines[e].columns.length&&v(b,a,e),3===a.lines[e].columns.length&&w(b,a,e)}},{key:"getMessageObject",value:function(a,b){var c={noError:!0,title:a,Message:b};return c}}]),a}(),y.$inject=[],a("default",y),a("FORMLY_PROXY_SERVICE",x)}}}),a.register("20",["1f"],function(a){"use strict";var b,c,d;return{setters:[function(a){b=a["default"],c=a.FORMLY_PROXY_SERVICE}],execute:function(){d="formlyProxyModule",a("default",angular.module(d,[]).service(c,b))}}}),a.registerDynamic("21",[],!0,function(a,b,c){var d=this,e=d.define;d.define=void 0;var f=Object;return c.exports={create:f.create,getProto:f.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:f.getOwnPropertyDescriptor,setDesc:f.defineProperty,setDescs:f.defineProperties,getKeys:f.keys,getNames:f.getOwnPropertyNames,getSymbols:f.getOwnPropertySymbols,each:[].forEach},d.define=e,c.exports}),a.registerDynamic("22",["21"],!0,function(a,b,c){var d=this,e=d.define;d.define=void 0;var f=a("21");return c.exports=function(a,b,c){return f.setDesc(a,b,c)},d.define=e,c.exports}),a.registerDynamic("23",["22"],!0,function(a,b,c){var d=this,e=d.define;return d.define=void 0,c.exports={"default":a("22"),__esModule:!0},d.define=e,c.exports}),a.registerDynamic("15",["23"],!0,function(a,b,c){"use strict";var d=this,e=d.define;d.define=void 0;var f=a("23")["default"];return b["default"]=function(){function a(a,b){for(var c=0;c=0;c--)if(a.rows[c].option===b)return!1;return!0}},{key:"isOptionValidFormat",value:function(a){return""!==a?!0:!1}},{key:"addNewOptionRadio",value:function(a,b){var c={resultFlag:!1,details:""},d=this.validOption(a,b);if(d.resultFlag===!0){var e={option:b,order:a.rows.length};return a.rows.push(e),c.resultFlag=!0,c.details="",c}return angular.copy(d,c),c}},{key:"addNewOptionBasicSelect",value:function(a,b){var c={resultFlag:!1,details:""},d=this.validOption(a,b);if(d.resultFlag===!0){var e={option:b,order:a.rows.length};return a.rows.push(e),c.resultFlag=!0,c.details="",c}return angular.copy(d,c),c}},{key:"addNewOptionGroupedSelect",value:function(a,b,c){var d={resultFlag:!1,details:""},e=this.validOption(a,b);if(e.resultFlag===!0){var f={option:b,group:c,order:a.rows.length};return a.rows.push(f),d.resultFlag=!0,d.details="",d}return angular.copy(e,d),d}},{key:"removeOption",value:function(a,b){var c={resultFlag:!1,details:""};return-1!==b?(a.rows.splice(b,1),c.resultFlag=!0,c.details="",c):(c.resultFlag=!1,c.details="Option index not valid",c)}},{key:"upthisOption",value:function(a,b){var c={resultFlag:!1,details:""};if(b>-1){if(b>0){if(a.rows[b-1]){var d=a.rows[b];return a.rows.splice(b,1),a.rows.splice(b-1,0,d),c.resultFlag=!0,c.details="",c}return c.resultFlag=!1,c.details="Can't retreive option from option index",c}return c.resultFlag=!0,c.details="",c}return c.resultFlag=!1,c.details="Option index not valid",c}},{key:"downthisOption",value:function(a,b){var c={resultFlag:!1,details:""};if(b>-1){if(b=0;d--)if(a.rows[d].option===b)return c.resultFlag=!1,c.details="Entered option is not unique",c;return c.resultFlag=!0,c.details="",c}return c.resultFlag=!1,c.details="Entered option is empty",c}}]),a}(),e.$inject=[],a("default",e),a("SELECT_OPTION_MANAGE_NAME",d)}}}),a.register("25",["24"],function(a){"use strict";var b,c,d;return{setters:[function(a){b=a["default"],c=a.SELECT_OPTION_MANAGE_NAME}],execute:function(){d="commonModule",a("default",angular.module(d,[]).service(c,b))}}}),a.register("1",["2","4","6","19","20","25","e","f","1a","1d"],function(a){"use strict";var b,c,d,e,f,g,h,i,j,k,l,m,n,o;return{setters:[function(a){},function(a){b=a["default"],c=a.EASY_FORM_VERSION_NAME,d=a.EASY_FORM_VERSION_VALUE},function(a){e=a["default"]},function(a){f=a["default"]},function(a){g=a["default"]},function(a){h=a["default"]},function(a){i=a["default"]},function(a){j=a["default"]},function(a){k=a["default"]},function(a){l=a["default"]}],execute:function(){m="eda.easyformGen.stepway",n=[j.name,i.name,f.name,k.name,l.name,g.name,h.name],o=angular.module(m,n).value(c,d).config(e).config(b),a("default",o)}}})})(function(a){a()});
+!function(e){function n(o){if(t[o])return t[o].exports;var i=t[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}var t={};return n.m=e,n.c=t,n.p="/",n(0)}([function(e,n,t){"use strict";t(1),t(7),t(106)},function(e,n,t){"use strict";t(2),t(3),t(5),t(6)},function(e,n,t){
+//! api-check version 7.5.5 built with ♥ by Kent C. Dodds (http://kent.doddsfamily.us) (ó ì_í)=óò=(ì_í ò)
+!function(n,t){e.exports=t()}(this,function(){return function(e){function n(o){if(t[o])return t[o].exports;var i=t[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}var t={};return n.m=e,n.c=t,n.p="",n(0)}([function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var i=t(1),r=o(i);n.default=r.default,e.exports=n.default},function(e,n,t){"use strict";function o(){function n(o,r,l){if(n.config.disabled||e.exports.globalConfig.disabled)return{apiTypes:{},argTypes:{},passed:!0,message:"",failed:!1};t(arguments),Array.isArray(o)?r=Array.prototype.slice.call(r):(o=[o],r=[r]);var a=s(o,r);a.length||(a=i(o,r));var c=d(o,r);return c.args=r,a.length?(c.message=n.getErrorMessage(o,r,a,l),c.failed=!0,c.passed=!1):(c.message="",c.failed=!1,c.passed=!0),c}function t(e){var t=e[0],o=e[1],r=Array.isArray(o)||o&&"object"==typeof o&&"number"==typeof o.length;if(Array.isArray(t)&&!r)throw new Error(l(t,[o],["If an array is provided for the api, an array must be provided for the args as well."],{prefix:"apiCheck"}));var a=i(_.checkApiCheckApi,e);if(a.length){var s=n.getErrorMessage(_.checkApiCheckApi,e,a,{prefix:"apiCheck"});n.handleErrorMessage(s,!0)}}function o(e){return function(t,o,i){var r=n(t,o,i);return n.handleErrorMessage(r.message,e),r}}function r(e,n){if(n&&e)throw new Error(e);e&&console.warn(e)}function l(e,t){function o(){var e=s.onlyPrefix;return e||(e=((c.prefix||"")+" "+(s.prefix||"")).trim()),e}function i(){var e=s.onlySuffix;return e||(e=((s.suffix||"")+" "+(c.suffix||"")).trim()),e}function r(){var e=s.url;return e||(e=c.docsBaseUrl&&s.urlSuffix&&(""+c.docsBaseUrl+s.urlSuffix).trim()),e}var l=arguments.length<=2||void 0===arguments[2]?[]:arguments[2],s=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],c=n.config.output||{},d=o(),u=i(),p=r(),f="apiCheck failed! "+l.join(", "),m="\n\n"+a(e,t);return(d+" "+f+" "+u+" "+(p||"")+m).trim()}function a(e,n){function t(e){m(e,function(n,o){c.indexOf(n)===-1&&(c.push(n),"object"==typeof n?t(e):"function"==typeof n&&(e[o]=n.displayName||n.name||"anonymous function"))})}function o(e){return e&&e.length?(e&&1===e.length&&(e=e[0]),p(e,null,2)):"nothing"}function i(){var e="\n",t=!0;n&&1===n.length&&(t="object"==typeof n[0]&&null!==n[0]&&!!Object.keys(n[0]).length);var o="type"+(t?"s":""),i=e+e;return"You passed:"+e+u+i+("With the "+o+":"+e+a+i)+("The API calls for:"+e+l)}var r=d(e,n),l=r.apiTypes,a=r.argTypes,s=Array.prototype.slice.call(n||[]),c=[];t(s);var u=o(s);return a=o(a),l=o(l),i()}function d(t,o){t=g(t),o=g(o);var i=t.map(function(t,i){var r=e.exports.globalConfig.hasOwnProperty("verbose");return h(t,{terse:r?!e.exports.globalConfig.verbose:!n.config.verbose,obj:o[i],addHelpers:!0})}),r=o.map(function(e){return c(e,[])});return{argTypes:r,apiTypes:i}}var u=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],v=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];O&&arguments.length&&O.throw(_.getApiCheckInstanceCheckers,arguments,{prefix:"creating an apiCheck instance"});var y={throw:o(!0),warn:o(!1),getErrorMessage:l,handleErrorMessage:r,config:{output:u.output||{prefix:"",suffix:"",docsBaseUrl:""},verbose:u.verbose||!1,disabled:u.disabled||!1},utils:f};m(y,function(e,t){return n[t]=e});var b=n.disabled||e.exports.globalConfig.disabled;return m(T.getCheckers(b),function(e,t){return n[t]=e}),m(v,function(e,t){return n[t]=e}),n}function i(e,n){for(var t=[],o=!1,i=0,r=0,a=void 0,s=void 0,c=void 0,d=void 0,u=void 0,p=void 0,f=void 0;(s=e[i++])&&r=e.length,f=i>1&&e[i-1].isOptional,p&&d||p&&!d&&!s.isOptional&&!f?(o=!0,t.push(l(c,s,a))):p&&s.isOptional?r--:t.push(y(u)+" passed");return o?t:[]}function r(e,n,t){var o=T.shape({type:T.string,optional:T.bool}),i=T.func.withProperties({__apiCheckData:o}),l=T.shape({__apiCheckData:o}),a=T.oneOfType([i,l])(e,n,t);return v(a)?a:"function"==typeof e||e.hasOwnProperty(e.__apiCheckData.type)?void 0:E(n,t,r.type)}function l(e,n,t){var o=a(n,t);return o=o?" - "+o:"",e.message+o}function a(e,n){var t=e.help;return t?("function"==typeof t&&(t=t(n)),t):""}function s(e,n){var t=e.filter(function(e){return!e.isOptional});return n.length=0;o--)n[o][i[0]]===e&&(e=n[o],i.unshift(t[o]));return"~"+i.join(".")}function i(e,n,o,i){return JSON.stringify(e,t(n,i),o)}e.exports=i,i.getSerialize=t},function(e,n,t){"use strict";function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e){var n=r(e),t=void 0;if("array"===n)t=[];else{if("object"!==n)return e;t={}}return c(e,function(e,n){t[n]=e}),t}function r(e){return Array.isArray(e)?"array":e instanceof RegExp?"object":typeof e}function l(e,n){var t=void 0,o=n&&n.short;return t=o&&e.shortType?e.shortType:!o&&"object"==typeof e.type||"function"===e.type?a(e,n):a(e,n)||e.displayName||e.name}function a(e,n){var t=e.type;if("function"==typeof t){var i=t.__apiCheckData,r=t(n);t=o({__apiCheckData:i},i.type,r)}return t}function s(e){return e?Array.isArray(e)?e:[e]:[]}function c(e,n,t){return Array.isArray(e)?u(e,n,t):d(e,n,t)}function d(e,n,t){var o=void 0,i=Object.prototype.hasOwnProperty;for(var r in e)if(i.call(e,r)&&(o=n.call(t,e[r],r,e),o===!1))return o;return!0}function u(e,n,t){for(var o=void 0,i=e.length,r=0;rt)return f(i,r,o)},{type:o},e)}function x(n){var t="lessThan["+n+"]";return h(function(e,o,i){if("number"!=typeof e||e>n)return f(o,i,t)},{type:t},e)}function P(n){var t="greaterThan["+n+"]";return h(function(e,o,i){if("number"!=typeof e||e" in it: '+e+"\nAdditional information: "+JSON.stringify(n))}var s=this;r.extend(this,{getFormlyError:o,getFieldError:t,checkWrapper:l,checkWrapperTemplate:a,$get:function(){return s}})}var i=function(e){return e&&e.__esModule?e.default:e},r=i(t(15));e.exports=o,o.$inject=["formlyApiCheck","formlyErrorAndWarningsUrlPrefix"]},function(e,n,t){"use strict";function o(e,n){function t(e){if(r.isArray(e))r.forEach(e,t);else{if(!r.isObject(e))throw x("You must provide an object or array for setType. You provided: "+JSON.stringify(arguments));o(e),e.extends&&i(e),S[e.name]=e}}function o(e){n.throw(n.formlyTypeOptions,e,{prefix:"formlyConfig.setType",url:"settype-validation-failed"}),e.overwriteOk?e.overwriteOk=void 0:h(e.name,S,e,"types")}function i(e){var n=p(e.extends,!0,e);s(e,n),c(e,n),d(e,n),u(e,n),l.reverseDeepMerge(e,n),a(e,n)}function a(e,n){e.template&&n.templateUrl?delete e.templateUrl:e.templateUrl&&n.template&&delete e.template}function s(e,n){var t=n.controller;if(r.isDefined(t)){var o=e.controller;r.isDefined(o)?(e.controller=function(e,n){n(t,{$scope:e}),n(o,{$scope:e})},e.controller.$inject=["$scope","$controller"]):e.controller=t}}function c(e,n){var t=n.link;if(r.isDefined(t)){var o=e.link;r.isDefined(o)?e.link=function(){t.apply(void 0,arguments),o.apply(void 0,arguments)}:e.link=t}}function d(e,n){var t=n.validateOptions;if(r.isDefined(t)){var o=e.validateOptions,i=e.defaultOptions;r.isDefined(o)?e.validateOptions=function(e){o(e);var n=r.copy(e),a=i;a&&(r.isFunction(a)&&(a=a(n)),l.reverseDeepMerge(n,a)),t(n)}:e.validateOptions=t}}function u(e,n){var t=n.defaultOptions;if(r.isDefined(t)){var o=e.defaultOptions,i=r.isFunction(o),a=r.isFunction(t);a?e.defaultOptions=function(e){var n=t(e),r={};l.reverseDeepMerge(r,e,n);var a=o;return i&&(a=a(r)),l.reverseDeepMerge(n,a),n}:i&&(e.defaultOptions=function(e){var n={};return l.reverseDeepMerge(n,e,t),o(n)})}}function p(e,n,t){if(e){var o=S[e];if(o||n!==!0)return o;throw x('There is no type by the name of "'+e+'": '+JSON.stringify(t))}}function f(e,n){for(var t=!0;t;){t=!1;var o=e,i=n;if(r.isArray(o))return o.map(function(e){return f(e)});if(r.isObject(o))return o.types=m(o),o.name=v(o,i),y(o),w[o.name]=o,o;r.isString(o)&&(e={template:o,name:i},t=!0)}}function m(e){return r.isString(e.types)?[e.types]:r.isDefined(e.types)?e.types:[]}function v(e,n){return e.name||n||e.types.join(" ")||A}function y(n){e.checkWrapper(n),n.template&&e.checkWrapperTemplate(n.template,n),n.overwriteOk?delete n.overwriteOk:h(n.name,w,n,"templateWrappers"),g(n)}function g(e){var n=!r.isArray(e.types)||!e.types.every(r.isString);if(n)throw x("Attempted to create a template wrapper with types that is not a string or an array of strings")}function h(e,n,t,o){n.hasOwnProperty(e)&&O(["Attempting to overwrite "+e+" on "+o+" which is currently",""+JSON.stringify(n[e])+" with "+JSON.stringify(t),'To supress this warning, specify the property "overwriteOk: true"'].join(" "))}function b(e){return w[e||A]}function E(e){var n=[];for(var t in w)w.hasOwnProperty(t)&&w[t].types&&w[t].types.indexOf(e)!==-1&&n.push(w[t]);return n}function T(e){var n=w[e];return delete w[e],n}function _(e){var n=E(e);if(n)return r.isArray(n)?(n.forEach(function(e){return T(e.name)}),n):T(n.name)}function O(){D.disableWarnings||console.warn.apply(console,arguments)}var C=this,S={},w={},A="default",D=this,x=e.getFormlyError;r.extend(this,{setType:t,getType:p,setWrapper:f,getWrapper:b,getWrapperByType:E,removeWrapperByName:T,removeWrappersForType:_,disableWarnings:!1,extras:{disableNgModelAttrsManipulator:!1,ngModelAttrsManipulatorPreferUnbound:!1,removeChromeAutoComplete:!1,defaultHideDirective:"ng-if",getFieldId:null},templateManipulators:{preWrapper:[],postWrapper:[]},$get:function(){return C}})}var i=function(e){return e&&e.__esModule?e.default:e},r=i(t(15)),l=i(t(18));e.exports=o,o.$inject=["formlyUsabilityProvider","formlyApiCheck"]},function(e,n,t){"use strict";function o(){function e(e,n,i,r,l){o.messages[e]=t(n,i,r,l)}function n(e,n){o.messages[e]=function(){return n}}function t(e,n,t,o){return function(i,r,l){return l.options.templateOptions[e]?""+n+" "+l.options.templateOptions[e]+" "+t:o}}var o={addTemplateOptionValueMessage:e,addStringMessage:n,messages:{}};return o}e.exports=o},function(e,n,t){"use strict";function o(){return r}var i=function(e){return e&&e.__esModule?e.default:e},r=i(t(18));e.exports=o},function(e,n,t){"use strict";function o(e,n,t){return function(){if(!e.disableWarnings){var o=Array.prototype.slice.call(arguments),r=o.shift();o.unshift("Formly Warning:"),o.push(""+n+r),t.warn.apply(t,i(o))}}}var i=function(e){if(Array.isArray(e)){for(var n=0,t=Array(e.length);n\n \n ")}function a(){e.options.elementAttributes&&o.attr(e.options.elementAttributes)}function c(){e.options.className&&o.addClass(e.options.className),e.options.type&&o.addClass("formly-field-"+e.options.type)}function u(n){return o.html(f(n)),t(o.contents())(e),n}function p(n){function t(e){var n=/\{\{(.*?)}}/,t=n.exec(e);t?o(t[1]):l(e)}function o(n){e.$watch(n,function(e){e&&(c(),l(e))})}function l(n){c=e.$watch('form["'+n+'"]',function(n){n&&(e.fc=n,e.options.formControl=n,d(),a())})}function a(){d=e.$watch(function(){var n=i.extras.errorExistsAndShouldBeVisibleExpression,t=e.options,o=e.fc;if(o.$invalid){if("boolean"==typeof t.validation.show)return t.validation.show;if(n)return s.formlyEval(e,n,o.$modelValue,o.$viewValue);var l=r.isUndefined(o.$touched)&&o.$dirty;
+return e.fc.$touched||l}return!1},function(n){e.options.validation.errorExistsAndShouldBeVisible=n,e.showError=n})}var c=r.noop,d=r.noop;if(!e.options.noFormControl){var u=r.element(""+n+"
"),p=u[0].querySelector("[ng-model],[data-ng-model]");p&&p.getAttribute("name")&&t(p.getAttribute("name"))}}function y(){b&&b.link&&b.link.apply(_,E),e.options.link&&e.options.link.apply(_,E)}function h(t){return function(o){var i=n.when(o);return r.forEach(t,function(t){i=i.then(function(o){return n.when(t(o,e.options,e)).then(function(e){return r.isString(e)?e:f(e)})})}),i}}if(e.options.fieldGroup)return void l();a(),c();var b=m(e.options),E=arguments,_=this;v(e.options).then(h(i.templateManipulators.preWrapper)).then(g(e.options)).then(h(i.templateManipulators.postWrapper)).then(u).then(p).then(y).catch(function(n){d("there-was-a-problem-setting-the-template-for-this-field","There was a problem setting the template for this field ",e.options,n)})}function f(e){var n=r.element(" ");return n.append(e).html()}function m(e){return e.type&&i.getType(e.type)}function v(e){function n(n,t){return r.isDefined(e[n])?e[n]:t&&r.isDefined(t[n])?t[n]:void 0}var t=i.getType(e.type,!0,e),o=n("template",t),l=n("templateUrl",t);if(r.isUndefined(o)&&!l)throw c.getFieldError("type-type-has-no-template","Type '"+e.type+"' has not template. On element:",e);return y(l||o,r.isUndefined(o),e)}function y(t,i,l){var a=void 0;if(a=r.isFunction(t)?n.when(t(l)):n.when(t),!i)return a;var s=function(){var n={cache:o};return{v:a.then(function(t){return e.get(t,n)}).then(function(e){return e.data}).catch(function(e){d("problem-loading-template-for-templateurl","Problem loading template for "+t,e)})}}();return"object"==typeof s?s.v:void 0}function g(e){var t=b(e);return function(o){if(!t.length)return n.when(o);t.forEach(function(n){c.checkWrapper(n,e),n.validateOptions&&n.validateOptions(e),_(n,e)});var i=t.map(function(e){return y(e.template||e.templateUrl,!e.template)});return n.all(i).then(function(e){e.forEach(function(e,n){c.checkWrapperTemplate(e,t[n])}),e.reverse();var n=e.shift();return e.forEach(function(e){n=h(n,e)}),h(n,o)})}}function h(e,n){var t=r.element(" ");t.append(e);var o=t.find("formly-transclude");return o.length||(o=s.findByNodeName(t,"formly-transclude")),o.replaceWith(n),t.html()}function b(e){var n=e.wrapper;if(null===n)return[];n=n?O(n).map(i.getWrapper):O(i.getWrapperByType(e.type));var t=i.getType(e.type,!0,e);if(t&&t.wrapper){var o=O(t.wrapper).map(i.getWrapper);n=n.concat(o)}var r=i.getWrapper();return r&&n.push(r),n}function E(e){a.throw(a.formlyFieldOptions,e,{prefix:"formly-field directive",url:"formly-field-directive-validation-failed"});var n=e.type&&i.getType(e.type);n&&(n.validateOptions&&n.validateOptions(e),_(n,e))}function T(e){a.throw(a.fieldGroup,e,{prefix:"formly-field directive",url:"formly-field-directive-validation-failed"})}function _(e,n){var t=e.apiCheck,o=e.apiCheckInstance,i=e.apiCheckFunction,r=e.apiCheckOptions;if(t){var l=o||a,s=i||"warn",c=l.shape(t);l[s](c,n,r||{prefix:"formly-field "+name,url:a.config.output.docsBaseUrl+"formly-field-type-apicheck-failed"})}}var O=s.arrayify;return u.$inject=["$scope","$timeout","$parse","$controller"],{restrict:"AE",transclude:!0,scope:{options:"=",model:"=",formId:"@",index:"=?",fields:"=?",formState:"=?",form:"=?"},controller:u,link:p}}var i=function(e){return e&&e.__esModule?e.default:e},r=i(t(15));e.exports=o,o.$inject=["$http","$q","$compile","$templateCache","formlyConfig","formlyValidationMessages","formlyApiCheck","formlyUtil","formlyUsability","formlyWarn"]},function(e,n,t){"use strict";function o(e,n){return{restrict:"A",link:function(t,o,i){var r=null,l=o[0],a=n[0];i.$observe("formlyFocus",function(n){"true"===n?e(function(){r=a.activeElement,l.focus()},~~i.focusWait):"false"===n&&a.activeElement===l&&(l.blur(),i.hasOwnProperty("refocus")&&r&&r.focus())})}}}e.exports=o,o.$inject=["$timeout","$document"]},function(e,n,t){"use strict";function o(e,n,t,o){var i=1;return{restrict:"E",template:function(n,t){function r(){return t.rootEl||"ng-form"}function l(){return t.fieldRootEl||"div"}function s(){return t.hideDirective||o.extras.defaultHideDirective||"ng-if"}function c(){return t.trackBy?"track by "+t.trackBy:""}function d(){var n=v,o=t.bindName;if(o){if(a.version.minor<3)throw e.getFormlyError("bind-name attribute on formly-form not allowed in > angular 1.3");n="{{::'formly_' + "+o+"}}"}return n}function u(e){var n=["model","form","fields","options","name","role","class"],t=[];return a.forEach(e,function(e){var o=e.nodeName,i=e.nodeValue;"undefined"!==o&&n.indexOf(o)===-1&&t.push(""+p(o)+'="'+i+'"')}),t.join(" ")}function p(e){return e?e.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):""}var f=r(),m=l(),v="formly_"+i++,y="";return t.hasOwnProperty("isFieldGroup")&&n.parent().parent().hasClass("formly")&&(y=u(n.parent().parent()[0].attributes)),"\n <"+f+' class="formly"\n name="'+d()+'"\n role="form" '+y+">\n <"+m+' formly-field\n ng-repeat="field in fields '+c()+'"\n '+s()+'="!field.hide"\n class="formly-field"\n options="field"\n model="field.model || model"\n fields="fields"\n form="theFormlyForm"\n form-id="'+d()+'"\n form-state="options.formState"\n index="$index">\n '+m+">\n
\n "+f+">\n "},replace:!0,transclude:!0,scope:{fields:"=",model:"=",form:"=?",options:"=?"},controller:["$scope","formlyUtil",function(n,o){function i(){a.forEach(n.fields,function(e,t){var i=e.model||n.model;if(e.runExpressions&&e.runExpressions(i),e.hideExpression){var r=i[e.key],l={options:e,index:t,formState:n.options.formState,formId:n.formId};e.hide=o.formlyEval(n,e.hideExpression,r,r,l)}})}function s(){t.throw([t.formOptionsApi.optional],[n.options],{prefix:"formly-form options check"}),n.options=n.options||{},n.options.formState=n.options.formState||{},a.extend(n.options,{updateInitialValue:c,resetModel:d})}function c(){a.forEach(n.fields,function(e){g(e)?e.options.updateInitialValue():e.updateInitialValue()})}function d(){a.forEach(n.fields,function(e){g(e)?e.options.resetModel():e.resetModel()})}function u(e){e.model&&"formState"===e.model&&(e.model=n.options.formState)}function p(e,n){g(e)||(e.key=e.key||n||0)}function f(t,o){if(!g(t)&&a.isDefined(t.watcher)){var i=t.watcher;a.isArray(i)||(i=[i]),a.forEach(i,function(i){if(!a.isDefined(i.listener))throw e.getFieldError("all-field-watchers-must-have-a-listener","All field watchers must have a listener",t);var r=m(i,t,o),l=v(i,t,o),s=i.type||"$watch";i.stopWatching=n[s](r,l,i.watchDeep)})}}function m(e,n,t){var o=e.expression||"model['"+n.key+"']";if(a.isFunction(o)){var i=o;o=function(){var n=y.apply(void 0,[e,t].concat(l.call(arguments)));return i.apply(void 0,r(n))},o.displayName="Formly Watch Expression for field for "+n.key}return o}function v(e,n,t){var o=e.listener;if(a.isFunction(o)){var i=o;o=function(){var n=y.apply(void 0,[e,t].concat(l.call(arguments)));return i.apply(void 0,r(n))},o.displayName="Formly Watch Listener for field for "+n.key}return o}function y(e,t){for(var o=arguments.length,i=Array(o>2?o-2:0),r=2;r ";var o=1===t.getElementsByTagName("i").length;if(o){var i=["formly-field","formly-form","formly-custom-validation","formly-focus","formly-transpose"];angular.forEach(i,function(e){n.createElement(e)})}}()}e.exports=o,o.$inject=["$document"]},function(e,n,t){"use strict";var o=function(e){return e&&e.__esModule?e.default:e},i=o(t(17));i.version||(i=window.angular),e.exports=i},function(n,t,o){n.exports=e},function(e,t,o){e.exports=n},function(e,n,t){"use strict";function o(e,n,t,o,i){return u.isFunction(n)?n(o,t,e,i):e.$eval(n,u.extend({$viewValue:o,$modelValue:t},i))}function i(e,n,t){if(n.id)return n.id;var o=n.type;return!o&&n.template?o="template":!o&&n.templateUrl&&(o="templateUrl"),[e,o,n.key,t].join("_")}function r(e){u.forEach(arguments,function(n,t){t&&u.forEach(n,function(n,t){u.isDefined(e[t])?l(e[t],n)&&r(e[t],n):e[t]=u.copy(n)})})}function l(e,n){return u.isObject(e)&&u.isObject(n)&&Object.getPrototypeOf(e)===Object.getPrototypeOf(n)}function a(e,n){if(e.prop||(e=u.element(e)),e.prop("nodeName")===n.toUpperCase())return e;for(var t=e.children(),o=0;t&&o0&&n;e.fc.$setValidity("required",t)}function t(){e.model[i.key]=[],angular.forEach(e.multiCheckbox.checked,function(n,t){n&&e.model[i.key].push(o.options[t][o.valueProp||"value"])}),e.fc.$setTouched(),n(!0)}var o=e.to,i=e.options;e.multiCheckbox={checked:[],change:t};var r=e.model[i.key];if(angular.isArray(r)&&!function(){var n=o.valueProp||"value";angular.forEach(o.options,function(t,o){e.multiCheckbox.checked[o]=r.indexOf(t[n])!==-1})}(),i.expressionProperties&&i.expressionProperties.required&&e.$watch(e.options.expressionProperties.required,function(e){n(e)}),e.to.required){e.$watch("fc",function(e){e&&n(!0)})}}]})}e.config(n),n.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},e.exports=n.default},function(n,t,o){n.exports=e},function(e,t,o){e.exports=n},function(e,n,t){"use strict";var o=t(8);o.version||(o=window.angular),e.exports=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e,n){var o=n;e.setWrapper([{name:"bootstrapLabel",template:t(17),apiCheck:{templateOptions:o.shape({label:o.string,required:o.bool.optional})},apiCheckInstance:o},{name:"bootstrapHasError",template:t(18)}])}e.config(n),n.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},e.exports=n.default},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){t(10)(e),t(1)(e),t(12)(e),t(9)(e),t(13)(e),t(14)(e)},e.exports=n.default},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var i=t(15),r=o(i),l=t(16),a=o(l);n.default=function(e){(0,r.default)(e),(0,a.default)(e)},e.exports=n.default},function(e,n,o){e.exports=t},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e,n){var o=n;e.setType({name:"radio",template:t(19),wrapper:["bootstrapLabel","bootstrapHasError"],defaultOptions:{noFormControl:!1},apiCheck:{templateOptions:o.shape({options:o.arrayOf(o.object),labelProp:o.string.optional,valueProp:o.string.optional})},apiCheckInstance:o})}e.config(n),n.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},e.exports=n.default},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e,n){var o=n;e.setType({name:"checkbox",template:t(20),wrapper:["bootstrapHasError"],apiCheck:{templateOptions:o.shape({label:o.string})},apiCheckInstance:o})}e.config(n),n.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},e.exports=n.default},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o="formlyBootstrap",i=t(4),r=i.module(o,[t(2)]);r.constant("formlyBootstrapApiCheck",t(3)({output:{prefix:"angular-formly-bootstrap"}})),r.constant("formlyBootstrapVersion","4.3.2"),t(5)(r),t(6)(r),t(7)(r),n.default=o,e.exports=n.default},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e){e.setType({name:"input",template:' ',wrapper:["bootstrapLabel","bootstrapHasError"]})}e.config(n),n.$inject=["formlyConfigProvider"]},e.exports=n.default},function(e,n,t){"use strict";function o(e,n,t){return Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0})}Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e,n){var i=n;e.setType({name:"select",template:t,wrapper:["bootstrapLabel","bootstrapHasError"],defaultOptions:function(e){var n=e.templateOptions.ngOptions||"option[to.valueProp || 'value'] as option[to.labelProp || 'name'] group by option[to.groupProp || 'group'] for option in to.options";return{ngModelAttrs:o({},n,{value:"ng-options"})}},apiCheck:{templateOptions:i.shape({options:i.arrayOf(i.object),labelProp:i.string.optional,valueProp:i.string.optional,groupProp:i.string.optional})},apiCheckInstance:i})}e.config(n);var t=' ';n.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},e.exports=n.default},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e,n){var t=n;e.setType({name:"textarea",template:'',wrapper:["bootstrapLabel","bootstrapHasError"],defaultOptions:{ngModelAttrs:{rows:{attribute:"rows"},cols:{attribute:"cols"}}},apiCheck:{templateOptions:t.shape({rows:t.number.optional,cols:t.number.optional})},apiCheckInstance:t})}e.config(n),n.$inject=["formlyConfigProvider","formlyBootstrapApiCheck"]},e.exports=n.default},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e,n){var o=t(22),i=n.shape({class:n.string.optional,text:n.string.optional,onClick:n.func.optional}).strict.optional,r=n.shape({templateOptions:n.shape({addonLeft:i,addonRight:i})});e.templateManipulators.preWrapper.push(function(e,t){return t.templateOptions.addonLeft||t.templateOptions.addonRight?(n.warn([r],[t]),o.replace(" ",e)):e})}e.run(n),n.$inject=["formlyConfig","formlyBootstrapApiCheck"]},e.exports=n.default},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){function n(e){e.templateManipulators.preWrapper.push(function(e,n,t){if(angular.isDefined(n.templateOptions.description)){var o=document.createElement("div");o.appendChild(angular.element(e)[0]),o.appendChild(angular.element('{{to.description}}
')[0]);var i=angular.element(o.querySelectorAll("[ng-model]"));return i&&i.attr("aria-describedby",t.id+"_description"),o.innerHTML}return e})}e.run(n),n.$inject=["formlyConfig"]},e.exports=n.default},function(e,n,t){e.exports="\n \n {{to.label}}\n {{to.required ? '*' : ''}}\n \n \n
\n"},function(e,n,t){e.exports='\n \n
\n'},function(e,n,t){e.exports='\n
\n \n \n {{option[to.labelProp || \'name\']}}\n \n
\n
\n'},function(e,n,t){e.exports='\n\t\n\t\t \n\t\t{{to.label}}\n\t\t{{to.required ? \'*\' : \'\'}}\n\t \n
\n'},function(e,n,t){e.exports='\n
\n \n \n {{option[to.labelProp || \'name\']}}\n \n
\n
\n'},function(e,n,t){e.exports='\n
\n \n {{to.addonLeft.text}} \n
\n
\n
\n \n {{to.addonRight.text}} \n
\n
\n'}])})},function(e,n){function t(e){angular.module("mgo-angular-wizard").directive(e,function(){return{restrict:"A",replace:!1,require:"^wizard",link:function(n,t,o,i){t.on("click",function(t){t.preventDefault(),n.$apply(function(){n.$eval(o[e]),i[e.replace("wz","").toLowerCase()]()})})}}})}/**
+ * Easy to use Wizard library for Angular JS
+ * @version v0.10.0 - 2016-12-22 * @link https://github.com/mgonto/angular-wizard
+ * @author Martin Gontovnikas
+ * @license MIT License, http://www.opensource.org/licenses/MIT
+ */
+angular.module("templates-angularwizard",["step.html","wizard.html"]),angular.module("step.html",[]).run(["$templateCache",function(e){e.put("step.html",'')}]),angular.module("wizard.html",[]).run(["$templateCache",function(e){e.put("wizard.html",'\n')}]),angular.module("mgo-angular-wizard",["templates-angularwizard"]),angular.module("mgo-angular-wizard").directive("wzStep",function(){return{restrict:"EA",replace:!0,transclude:!0,scope:{wzTitle:"@",canenter:"=",canexit:"=",disabled:"@?wzDisabled",description:"@",wzData:"=",wzOrder:"@?"},require:"^wizard",templateUrl:function(e,n){return n.template||"step.html"},link:function(e,n,t,o){t.$observe("wzTitle",function(n){e.title=e.wzTitle}),e.title=e.wzTitle,o.addStep(e),e.$on("$destroy",function(){o.removeStep(e)})}}}),angular.module("mgo-angular-wizard").directive("wizard",function(){return{restrict:"EA",replace:!0,transclude:!0,scope:{currentStep:"=",onFinish:"&",hideIndicators:"=",editMode:"=",name:"@",indicatorsPosition:"@?"},templateUrl:function(e,n){return n.template||"wizard.html"},controller:["$scope","$element","$log","WizardHandler","$q","$timeout",function(e,n,t,o,i,r){function l(n){var t,o;return void 0===n.canenter||("boolean"==typeof n.canenter?n.canenter:(o=n.canenter(e.context),angular.isFunction(o.then)?(t=i.defer(),o.then(function(e){t.resolve(e)}),t.promise):o===!0))}function a(n,t){var o,r;return"undefined"==typeof n.canexit||e.getStepNumber(t)=0&&!e.steps[n.wzOrder]?n.wzOrder:e.steps.length;e.steps[t]=n,e.getEnabledSteps()[0]===n&&e.goTo(e.getEnabledSteps()[0])},this.removeStep=function(n){var t=e.steps.indexOf(n);t>0&&e.steps.splice(t,1)},this.context=e.context,e.getStepNumber=function(e){return d(e)+1},e.goTo=function(n){if(c)s(),e.selectedStep=n,angular.isUndefined(e.currentStep)||(e.currentStep=n.wzTitle),n.selected=!0,e.$emit("wizard:stepChanged",{step:n,index:d(n)}),c=!1;else{var t;e.currentStepNumber()>0?t=e.currentStepNumber()-1:0===e.currentStepNumber()&&(t=0),i.all([a(e.getEnabledSteps()[t],n),l(n)]).then(function(t){t[0]&&t[1]&&(s(),e.selectedStep=n,angular.isUndefined(e.currentStep)||(e.currentStep=n.wzTitle),n.selected=!0,e.$emit("wizard:stepChanged",{step:n,index:d(n)}))})}},e.currentStepNumber=function(){return d(e.selectedStep)+1},e.getEnabledSteps=function(){return e.steps.filter(function(e){return e&&"true"!==e.disabled})},this.currentStepTitle=function(){return e.selectedStep.wzTitle},this.currentStepDescription=function(){return e.selectedStep.description},this.currentStep=function(){return e.selectedStep},this.totalStepCount=function(){return e.getEnabledSteps().length},this.getEnabledSteps=function(){return e.getEnabledSteps()},this.currentStepNumber=function(){return e.currentStepNumber()},this.next=function(n){var t=e.getEnabledSteps(),o=d(e.selectedStep);if(angular.isFunction(n)){if(!n())return;o===t.length-1?this.finish():e.goTo(t[o+1])}n||(e.selectedStep.completed=!0),o===t.length-1?this.finish():e.goTo(t[o+1])},this.goTo=function(n){r(function(){var t,o=e.getEnabledSteps();t=angular.isNumber(n)?o[n]:u(n),e.goTo(t)})},this.finish=function(){e.onFinish&&e.onFinish()},this.previous=function(){var n=d(e.selectedStep);if(0===n)throw new Error("Can't go back. It's already in step 0");e.goTo(e.getEnabledSteps()[n-1])},this.cancel=function(){var n=d(e.selectedStep);if(0===n)throw new Error("Can't go back. It's already in step 0");e.goTo(e.getEnabledSteps()[0])},this.reset=function(){angular.forEach(e.getEnabledSteps(),function(e){e.completed=!1}),this.goTo(0)}}]}}),t("wzNext"),t("wzPrevious"),t("wzFinish"),t("wzCancel"),t("wzReset"),angular.module("mgo-angular-wizard").factory("WizardHandler",function(){var e={},n={};return e.defaultName="defaultWizard",e.addWizard=function(e,t){n[e]=t},e.removeWizard=function(e){delete n[e]},e.wizard=function(t){var o=t;return t||(o=e.defaultName),n[o]},e})},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var i=t(8),r=o(i),l=t(10),a=o(l),s=t(12),c=o(s),d=t(20),u=o(d),p=t(21),f=o(p),m=t(49),v=o(m),y=t(59),g=o(y),h=t(101),b=o(h),E=t(103),T=o(E),_=t(105),O=o(_),C="eda.easyformGen.stepway",S=[u.default.name,c.default.name,f.default.name,v.default.name,g.default.name,b.default.name,T.default.name,O.default.name],w=angular.module(C,S).value(i.EASY_FORM_VERSION_NAME,i.EASY_FORM_VERSION_VALUE).config(a.default).config(r.default);n.default=w},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function i(e){e.setModalAnimation(c)}Object.defineProperty(n,"__esModule",{value:!0}),n.EASY_FORM_VERSION_VALUE=n.EASY_FORM_VERSION_NAME=void 0;var r=t(9),l=o(r),a="easyFormGenVersion",s=l.default.stepway.version,c=!0;i.$inject=["easyFormSteWayConfigProvider"],n.default=i,n.EASY_FORM_VERSION_NAME=a,n.EASY_FORM_VERSION_VALUE=s},function(e,n){e.exports={stepway:{version:"2.1.4"},dragdropway:{version:"2.1.4"},formviewer:{version:"2.1.4"}}},function(e,n,t){"use strict";function o(e){function n(e){return e=e.replace(/[\-_\s]+(.)?/g,function(e,n){return n?n.toUpperCase():""}),e.replace(/^([A-Z])/,function(e,n){return n?n.toLowerCase():""})}e.setType({name:"richEditor",template:i.richTextTemplate.template,wrapper:["bootstrapLabel","bootstrapHasError"]}),e.setType({name:"blank",template:i.blankTemplate.template}),e.setType({name:"header",template:i.headerTemplate.template}),e.setType({name:"subTitle",template:i.subTitleTemplate.template}),e.setType({name:"basicSelect",template:i.basicSelectTemplate.template,wrapper:["bootstrapLabel","bootstrapHasError"]}),e.setType({name:"groupedSelect",template:i.groupedSelectTemplate.template,wrapper:["bootstrapLabel","bootstrapHasError"]});var t=["date-disabled","custom-class","show-weeks","starting-day","init-date","min-mode","max-mode","format-day","format-month","format-year","format-day-header","format-day-title","format-month-title","year-range","shortcut-propagation","datepicker-popup","show-button-bar","current-text","clear-text","close-text","close-on-date-selection","datepicker-append-to-body"],o=["datepicker-mode","min-date","max-date"],r={};angular.forEach(t,function(e){r[n(e)]={attribute:e}}),angular.forEach(o,function(e){r[n(e)]={bound:e}}),e.setType({name:"datepicker",template:i.datepickerTemplate.template,defaultOptions:{ngModelAttrs:r,templateOptions:{datepickerOptions:{format:"dd/MM/yyyy",initDate:new Date,showWeeks:!1}}},wrapper:["bootstrapLabel","bootstrapHasError"],controller:["$scope",function(e){e.datepicker={};var n=e.model[e.options.key];"string"==typeof n&&(e.model[e.options.key]=new Date(n)),e.datepicker.opened=!1,e.datepicker.open=function(n){n.preventDefault(),n.stopPropagation(),e.datepicker.opened=!e.datepicker.opened}}]}),e.setWrapper([{template:i.validationTemplate.template}])}Object.defineProperty(n,"__esModule",{value:!0});var i=t(11);o.$inject=["formlyConfigProvider"],n.default=o},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.richTextTemplate={template:'\n \n \n '},n.blankTemplate={template:"
"},n.headerTemplate={template:'\n \n
\n
\n {{ options.templateOptions.placeholder }}\n \n \n \n
\n '},n.subTitleTemplate={template:'\n \n
\n
\n {{ options.templateOptions.placeholder }}\n \n \n \n
\n '},n.basicSelectTemplate={template:'\n \n \n \n {{option.name}}\n \n \n \n '},n.groupedSelectTemplate={template:'\n \n \n \n \n \n {{option.name}}\n \n \n \n \n \n '},n.datepickerTemplate={template:'\n \n \n \n \n \n \n \n
\n '},n.validationTemplate={template:'\n \n '}},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function i(e){e.translations("en",l.default),e.translations("fr",s.default),e.translations("es",d.default),e.translations("de",p.default),e.translations("tr",m.default),e.translations("jp",y.default),e.translations("pt-br",h.default)}Object.defineProperty(n,"__esModule",{value:!0}),n.TRANSLATE_MODULE=n.TRANSLATE_CONFIG=void 0;var r=t(13),l=o(r),a=t(14),s=o(a),c=t(15),d=o(c),u=t(16),p=o(u),f=t(17),m=o(f),v=t(18),y=o(v),g=t(19),h=o(g);n.TRANSLATE_CONFIG="easyFormTranslateConfig";i.$inject=["$translateProvider"];var b=n.TRANSLATE_MODULE="eda.easyFormGenerator.translate";n.default=angular.module(b,[]).config(i)},function(e,n){e.exports={SAY_HI:"Hello",EDIT_TAB:"Edit/Create",PREVIEW_TAB:"Preview",WIZARD_LINES:"Lines",WIZARD_LAYOUT:"Layout",WIZARD_CONTROLS:"Controls",WIZARD_SAVE:"Save",PAGER_PREVIOUS:"Previous",PAGER_NEXT:"Next",COMMAND_PANEL:"Command",VISUAL_PANEL:"Visual",ADD_NEW_LINE:"Add a new line",ADD_NEW_STEP:"Add a new step",STEP_TITLE:"Step Title",SELECTED_LINE:"Selected line",NUMBER_OF_COLUMN:"Number of columns",APPLY_CTRL2COL:"Apply controls to columns",CLIC_TAP_2_OPEN:"Click/Tap on column to open control selection",SELECT_2_APPLY_COL:"Select desired control and valid to apply it to column",CUSTOM_SUBMIT_BTN:"Customize Submit button Text",CUSTOM_CANCEL_BTN:"Customize Cancel button Text",NAME_THIS_FORM:"Name this Form",SAVE_THIS_FORM:"Save this Form",FINAL_STEP:"Final Step: Form Preview",DATA_MODEL:"DATA MODEL",FIELDS_MODEL:"FIELDS MODEL (Ready to save to database one)",SELECT_A_CTRL:"Select a control",SELECT_CTRL_IN_LIST:"Select a control in the list below",COL_WILL_BE_BLANK:"Column will be blank",EDIT_PROPERTIES:"Edit properties",HEADER_TEXT:"Header text",ADD_EDIT_HEADER_HERE:"Add/Edit header text here",SUBTITLE_TEXT:"Subtitle text",ADD_EDIT_SUBTIL_HERE:"Add/Edit subtitle text here",LABEL_TEXT:"Label text",ADD_EDIT_LABEL_HERE:"Add/Edit control label here",PLACEHOLDER:"Placeholder",ADD_EDIT_PLACEHOLD:"Add/Edit placeholder text here",REQUIRED:"Required",DESCRIPTION:"Description",ADDEDIT_DESCRIPTION:"Add/Edit description here",DEFAULTVALUE:"Default Value",ADD_EDIT_DEFAULTVALUE_PLACEHOLD:"Add/Edit default value here",DATE_FORMAT:"Date format",ADD_NEW_RADIO:"Add new radio",ADD_RADIO_PLACEHOLD:"Add new radio",EDIT_REMOVE_RADIO:"Edit/Remove radio",NO_RADIO_ADD_NEW:"No radio: Add new radio values",SEARCH_4_OPTION:"Search for option",ADD:"Add",ORDER:"Order",OPTION:"Option",GROUP:"Group",ADD_NEW_OPTIONS:"Add new options",ADD_A_NEW_OPTION:"Add new option",EDIT_REMOVE_OPTIONS:"Edit/Remove options",NO_OPTION_ADD_NEW:"No option: Add new options",ADD_NEW_GROUPS:"Add new groups",ADD_A_NEW_GROUP:"Add new group",EDIT_GROUPS_OPTIONS:"Edit/Remove options/groups",NO_GROUP_ADD_NEW:"Add new groups",OK:"OK",CANCEL:"Cancel"}},function(e,n){e.exports={SAY_HI:"Bonjour",EDIT_TAB:"Edition / Creation",PREVIEW_TAB:"Aperçu",WIZARD_LINES:"lignes",WIZARD_LAYOUT:"disposition",WIZARD_CONTROLS:"contrôles",WIZARD_SAVE:"sauvegarder",PAGER_PREVIOUS:"Précédent",PAGER_NEXT:"Suivant",COMMAND_PANEL:"Commandes",VISUAL_PANEL:"Visuel",ADD_NEW_LINE:"Ajouter une nouvelle ligne",SELECTED_LINE:"Ligne sélectionnée",NUMBER_OF_COLUMN:"nombre de colonnes",APPLY_CTRL2COL:"Appliquer les contrôles aux colonnes",CLIC_TAP_2_OPEN:"Cliquer sur une colonne pour ouvrir le menu d'édition",SELECT_2_APPLY_COL:"Sélectionner un contrôle puis valider pour l'appliquer à la colonne",CUSTOM_SUBMIT_BTN:"Personnaliser le texte du bouton envoie",CUSTOM_CANCEL_BTN:"Personnaliser le texte du bouton annuler",NAME_THIS_FORM:"Nommer le formulaire",SAVE_THIS_FORM:"sauvegarder le formulaire",FINAL_STEP:"Dernière étape : aperçu du formulaire",DATA_MODEL:"MODELE DE DONNEES",FIELDS_MODEL:"MODELE DES CHAMPS (modèle compatible base de données)",SELECT_A_CTRL:"Sélectionner un contrôle",SELECT_CTRL_IN_LIST:"Sélectionner un contrôle dans la liste ci-dessous",COL_WILL_BE_BLANK:"La colonne sera vide",EDIT_PROPERTIES:"Editer les propriétés",HEADER_TEXT:"Texte du titre principal",ADD_EDIT_HEADER_HERE:"Editer le textes du titre principal",SUBTITLE_TEXT:"Texte du sous-titre",ADD_EDIT_SUBTIL_HERE:"Editer le textes du sous-titre",LABEL_TEXT:"Texte de l'étiquette",ADD_EDIT_LABEL_HERE:"Editer le texte de l'étiquette",PLACEHOLDER:"placeholder",ADD_EDIT_PLACEHOLD:"Editer le placeholder",REQUIRED:"Requis",DESCRIPTION:"Description",ADDEDIT_DESCRIPTION:"Ajouter / editer la description",DEFAULTVALUE:"Valeur par défaut",ADD_EDIT_DEFAULTVALUE_PLACEHOLD:"Ajouter / modifier la valeur par défaut ici",DATE_FORMAT:"Format de la date",ADD_NEW_RADIO:"Ajouter un nouveau choix à cocher",ADD_RADIO_PLACEHOLD:"Ajouter un nouveau choix à cocher",EDIT_REMOVE_RADIO:"Editer / supprimer un choix à cocher",NO_RADIO_ADD_NEW:"aucun choix à cocher : en ajouter un",SEARCH_4_OPTION:"rechercher une option",ADD:"ajouter",ORDER:"ordre",OPTION:"option",GROUP:"groupe",ADD_NEW_OPTIONS:"Ajouter de nouvelles options",ADD_A_NEW_OPTION:"ajoutre une option",EDIT_REMOVE_OPTIONS:"Editer / supprimer des options",NO_OPTION_ADD_NEW:"aucune option : en ajouter",ADD_NEW_GROUPS:"Ajouter de nouveaux groupes",ADD_A_NEW_GROUP:"Ajouter un nouveau groupe",EDIT_GROUPS_OPTIONS:"Editer / supprimer les groupes et options",NO_GROUP_ADD_NEW:"ajouter de nouveaux groupes",OK:"Valider",CANCEL:"Annuler"}},function(e,n){e.exports={SAY_HI:"Hola",EDIT_TAB:"Editar / Crear",PREVIEW_TAB:"Previsualizar",WIZARD_LINES:"lineas",WIZARD_LAYOUT:"diseño",WIZARD_CONTROLS:"controles",WIZARD_SAVE:"guardar",PAGER_PREVIOUS:"Anterior",PAGER_NEXT:"Siguiente",COMMAND_PANEL:"Comando",VISUAL_PANEL:"Visual",ADD_NEW_LINE:"Agregar nueva linea",SELECTED_LINE:"Linea seleccionada",NUMBER_OF_COLUMN:"numero de columnas",APPLY_CTRL2COL:"Aplicar controles a columnas",CLIC_TAP_2_OPEN:"Click / Toque en la columna para seleccionar controles",SELECT_2_APPLY_COL:"Selecciona el control deseado para aplicarlo a la columna",CUSTOM_SUBMIT_BTN:"Personalizar texto de boton Enviar",CUSTOM_CANCEL_BTN:"Personalizar texto de boton Cancelar",NAME_THIS_FORM:"Nombrar formulario",SAVE_THIS_FORM:"guardar formulario",FINAL_STEP:"Ultimo paso : previsualizar formulario",DATA_MODEL:"MODELO DE DATOS",FIELDS_MODEL:"MODELO DE CAMPOS (listo para guardar en base de datos uno)",SELECT_A_CTRL:"Selecciona un control",SELECT_CTRL_IN_LIST:"Selecciona un control de la lista",COL_WILL_BE_BLANK:"Columna sera vacia",EDIT_PROPERTIES:"Editar propiedades",HEADER_TEXT:"Texto de encabezado",ADD_EDIT_HEADER_HERE:"Agregar / editar texto de encabezado aqui",SUBTITLE_TEXT:"Texto de subtitulo",ADD_EDIT_SUBTIL_HERE:"Agregar / editar texto de subtitulo aqui",LABEL_TEXT:"Texto de etiqueta",ADD_EDIT_LABEL_HERE:"Agregar / editar texto de etiqueta aqui",PLACEHOLDER:"Marcador",ADD_EDIT_PLACEHOLD:"Agregar / editar texto de marcador aqui",REQUIRED:"Requerido",DESCRIPTION:"Descripcion",ADDEDIT_DESCRIPTION:"Agregar / editar descripcion aqui",DEFAULTVALUE:"Valor por defecto",ADD_EDIT_DEFAULTVALUE_PLACEHOLD:"Añadir / editar valor predeterminado aquí",DATE_FORMAT:"Formato de fecha",ADD_NEW_RADIO:"Agregar nuevo radio",ADD_RADIO_PLACEHOLD:"agregar nuevo radio",EDIT_REMOVE_RADIO:"Editar/Eliminar radio",NO_RADIO_ADD_NEW:"sin radio : agregar nuevos valores de radio",SEARCH_4_OPTION:"buscar opcion",ADD:"agregar",ORDER:"orden",OPTION:"opcion",GROUP:"grupo",ADD_NEW_OPTIONS:"agregar nuevas opciones",ADD_A_NEW_OPTION:"agregar nueva opcione",EDIT_REMOVE_OPTIONS:"Editar/Eliminar opciones",NO_OPTION_ADD_NEW:"sin opcion : agregar nuevas opciones",ADD_NEW_GROUPS:"Agregar nuevos grupos",ADD_A_NEW_GROUP:"Agregar nuevo grupo",EDIT_GROUPS_OPTIONS:"Editar/Eliminar opciones/grupos",NO_GROUP_ADD_NEW:"agregar nuevos grupos",OK:"OK",CANCEL:"Cancelar"}},function(e,n){e.exports={SAY_HI:"Hallo",EDIT_TAB:"Bearbeiten / Schaffen",PREVIEW_TAB:"Vorschau",WIZARD_LINES:"Linien",WIZARD_LAYOUT:"Layout",WIZARD_CONTROLS:"Steuerung",WIZARD_SAVE:"sparen",PAGER_PREVIOUS:"vorher.",PAGER_NEXT:"nächste",COMMAND_PANEL:"Anweisung",VISUAL_PANEL:"visuell",ADD_NEW_LINE:"Hinzufügen neuer Leitung",SELECTED_LINE:"ausgewählte Linie",NUMBER_OF_COLUMN:"Anzahl von Spalten",APPLY_CTRL2COL:"gelten diese Steuer Spalte",CLIC_TAP_2_OPEN:"klicken Sie auf Spalte zur Steuerungsauswahl öffnen",SELECT_2_APPLY_COL:"Wählen Sie die gewünschte Steuerung und gültig , um es in Spalte anwenden",CUSTOM_SUBMIT_BTN:"Passen Submit-Button Text",CUSTOM_CANCEL_BTN:"Passen Cancel-Button Text",NAME_THIS_FORM:"Nennen dieses Formular",SAVE_THIS_FORM:"Speichern dieses Formular",FINAL_STEP:"Endschritt : Formular Vorschau",DATA_MODEL:"DATEN MODELL",FIELDS_MODEL:"FELDER MODELL (Datenbank-kompatibel)",SELECT_A_CTRL:"Wählen Sie ein Steuer",SELECT_CTRL_IN_LIST:"Wählen Sie ein Steuer aus der Liste unten",COL_WILL_BE_BLANK:"die Spalte werde leer sein",EDIT_PROPERTIES:"Anzeigen",HEADER_TEXT:"Kopftext",ADD_EDIT_HEADER_HERE:"Kopftext ändern",SUBTITLE_TEXT:"Untertitel",ADD_EDIT_SUBTIL_HERE:"Untertitel ändern",LABEL_TEXT:"Etikett",ADD_EDIT_LABEL_HERE:"Etikett ändern",PLACEHOLDER:"placeholder",ADD_EDIT_PLACEHOLD:"placeholder ändern",REQUIRED:"erforderlich",DESCRIPTION:"Beschreibung",ADDEDIT_DESCRIPTION:"Beschreibung ändern",DEFAULTVALUE:"Standardwert",ADD_EDIT_DEFAULTVALUE_PLACEHOLD:"Hier können Sie den Standardwert hinzufügen / bearbeiten",DATE_FORMAT:"Datumsformat",ADD_NEW_RADIO:"Radiobutton hinzufügen",ADD_RADIO_PLACEHOLD:"Radiobutton hinzufügen",EDIT_REMOVE_RADIO:"Radiobutton ändern",NO_RADIO_ADD_NEW:"kein Radiobutton : Radiobutton hinzufügen",SEARCH_4_OPTION:"option suchen",ADD:"hinzufügen",ORDER:"bestellen",OPTION:"Option",GROUP:"Gruppe",ADD_NEW_OPTIONS:"Optionen hinzufügen",ADD_A_NEW_OPTION:"Option hinzufügen",EDIT_REMOVE_OPTIONS:"Optionen ändern",NO_OPTION_ADD_NEW:"kein option : Option hinzufügen",ADD_NEW_GROUPS:"Gruppen hinzufügen",ADD_A_NEW_GROUP:"Gruppe hinzufügen",EDIT_GROUPS_OPTIONS:"Gruppen ändern",NO_GROUP_ADD_NEW:"keine Gruppe : Gruppe hinzufügen",OK:"bestätigen",CANCEL:"stornieren"}},function(e,n){e.exports={SAY_HI:"Merhaba",EDIT_TAB:"Düzenle / Oluştur",PREVIEW_TAB:"Önizleme",WIZARD_LINES:"satırlar",WIZARD_LAYOUT:"düzen",WIZARD_CONTROLS:"kontroller",WIZARD_SAVE:"kaydet",PAGER_PREVIOUS:"Geri",PAGER_NEXT:"İleri",COMMAND_PANEL:"Komut",VISUAL_PANEL:"Görsel",ADD_NEW_LINE:"Yeni satır ekle",SELECTED_LINE:"Seçili satır",NUMBER_OF_COLUMN:"sütun sayısı",APPLY_CTRL2COL:"Sütunlara form ögesi ekle",CLIC_TAP_2_OPEN:"Form ögesi eklemek için sütunlara tıkla",SELECT_2_APPLY_COL:"İstediğin ögeyi seçtikten sonra gerekli yerleri doldur ve kaydet",CUSTOM_SUBMIT_BTN:"Gönder butonu yazısını düzenle",CUSTOM_CANCEL_BTN:"İptal butonu yazısını düzenle",NAME_THIS_FORM:"Forma isim ver",SAVE_THIS_FORM:"formu kaydet",FINAL_STEP:"Son aşama : form önizlemesi",DATA_MODEL:"VERİ MODELİ",FIELDS_MODEL:"ALAN MODELİ (veritabanına kaydetmeye hazır)",SELECT_A_CTRL:"Form ögesi seç",SELECT_CTRL_IN_LIST:"Verilen listeden bir form ögesi seç",COL_WILL_BE_BLANK:"Sütun boş kalacak",EDIT_PROPERTIES:"Özellikleri düzenle",HEADER_TEXT:"Başlık yazısı",ADD_EDIT_HEADER_HERE:"Başlık yazısını ekle / düzenle",SUBTITLE_TEXT:"Altyazı",ADD_EDIT_SUBTIL_HERE:"Altyazı ekle / düzenle",LABEL_TEXT:"Form ögesinin adı",ADD_EDIT_LABEL_HERE:"Ad ekle / düzenle",PLACEHOLDER:"Form ögesinin içine geçici yazı ekle",ADD_EDIT_PLACEHOLD:"Geçici yazı ekle / düzenle",REQUIRED:"Gerekli",DESCRIPTION:"Açıklama",ADDEDIT_DESCRIPTION:"Açıklama ekle / düzenle",DEFAULTVALUE:"Varsayılan değer",ADD_EDIT_DEFAULTVALUE_PLACEHOLD:"Varsayılan değeri buraya ekleyin / düzenle",DATE_FORMAT:"Tarih formatı",ADD_NEW_RADIO:"Radio butonu ekle",ADD_RADIO_PLACEHOLD:"radio butonu ekle",EDIT_REMOVE_RADIO:"Radio butonunu ekle / düzenle",NO_RADIO_ADD_NEW:"radio butonu yok : yeni buton ekle",SEARCH_4_OPTION:"seçenek ara",ADD:"ekle",ORDER:"sıra",OPTION:"seçenek",GROUP:"grup",ADD_NEW_OPTIONS:"Yeni seçenek ekle",ADD_A_NEW_OPTION:"yeni seçenek ekle",EDIT_REMOVE_OPTIONS:"Seçenekleri düzenle/sil",NO_OPTION_ADD_NEW:"seçenek yok : yeni seçenek ekle",ADD_NEW_GROUPS:"Yeni grup ekle",ADD_A_NEW_GROUP:"Yeni grup ekle",EDIT_GROUPS_OPTIONS:"Seçenek/Grup Ekle/sil",NO_GROUP_ADD_NEW:"yeni grup ekle",OK:"TAMAM",CANCEL:"İptal"}},function(e,n){e.exports={SAY_HI:"こんにちわ",EDIT_TAB:"編集 / 作成",PREVIEW_TAB:"プレビュー",WIZARD_LINES:"ライン",WIZARD_LAYOUT:"レイアウト",WIZARD_CONTROLS:"コントロール",WIZARD_SAVE:"サーブ",PAGER_PREVIOUS:"前",PAGER_NEXT:"次",COMMAND_PANEL:"コマンド",VISUAL_PANEL:"ビジュアル",ADD_NEW_LINE:"新しいライン追加",SELECTED_LINE:"選択されたライン",NUMBER_OF_COLUMN:"カラムの数",APPLY_CTRL2COL:"カラムにコントロール適用",CLIC_TAP_2_OPEN:"コントロール選択を広げるには列をクリック",SELECT_2_APPLY_COL:"好きなコントロールを選び適用",CUSTOM_SUBMIT_BTN:"適用ボタンの文字変更する場合",CUSTOM_CANCEL_BTN:"キャンセルボタンの文字変更する場合",NAME_THIS_FORM:"形式に名前を付ける",SAVE_THIS_FORM:"形式をサーブ",FINAL_STEP:"ファイナルステップ : プレビュー形式",DATA_MODEL:"データーモデル",FIELDS_MODEL:"モデルフィールド",SELECT_A_CTRL:"コントロールを選び選択",SELECT_CTRL_IN_LIST:"以下のリストからコントロールを選び選択",COL_WILL_BE_BLANK:"空になる列",EDIT_PROPERTIES:"プロパティの変更",HEADER_TEXT:"ヘッダーテキスト",ADD_EDIT_HEADER_HERE:"ヘッダーテキスト文字変更",SUBTITLE_TEXT:"サブタイトル テキスト",ADD_EDIT_SUBTIL_HERE:"サブタイトルテキスト文字変更",LABEL_TEXT:"ラベルテキスト",ADD_EDIT_LABEL_HERE:"ラベルテキスト文字変更",PLACEHOLDER:"プレースホルダー",ADD_EDIT_PLACEHOLD:"プレースホルダー文字変更",REQUIRED:"必須",DESCRIPTION:"説明",ADDEDIT_DESCRIPTION:"説明の変更",DEFAULTVALUE:"デフォルト値",ADD_EDIT_DEFAULTVALUE_PLACEHOLD:"ここにデフォルト値を追加/編集する",DATE_FORMAT:"日付の形式",ADD_NEW_RADIO:"新ラジオボタンを追加",ADD_RADIO_PLACEHOLD:"新ラジオボタンを追加",EDIT_REMOVE_RADIO:"ラジオボタン変更",NO_RADIO_ADD_NEW:"ラジオ無し : 新ラジオボタン追加",SEARCH_4_OPTION:"オプション検索",ADD:"追加",ORDER:"順番",OPTION:"オプション",GROUP:"グループ",ADD_NEW_OPTIONS:"新しいオプション追加",ADD_A_NEW_OPTION:"新しいオプション追加",EDIT_REMOVE_OPTIONS:"オプションの変更",NO_OPTION_ADD_NEW:"オプション無し : 新しいオプション追加",ADD_NEW_GROUPS:"新しいグループ追加",ADD_A_NEW_GROUP:"新しいグループ追加",EDIT_GROUPS_OPTIONS:"グループを変更",NO_GROUP_ADD_NEW:"グループを追加",OK:"オッケー",CANCEL:"キャンセル"}},function(e,n){e.exports={SAY_HI:"Olá",EDIT_TAB:"Editar / Criar",PREVIEW_TAB:"Pré-visualizar",WIZARD_LINES:"linhas",WIZARD_LAYOUT:"layout",WIZARD_CONTROLS:"controles",WIZARD_SAVE:"salvar",PAGER_PREVIOUS:"Anterior",PAGER_NEXT:"Próximo",COMMAND_PANEL:"Comando",VISUAL_PANEL:"Visual",ADD_NEW_LINE:"Adicionar uma nova linha",SELECTED_LINE:"Linha selecionada",NUMBER_OF_COLUMN:"número de colunas",APPLY_CTRL2COL:"Aplicar controles às colunas",CLIC_TAP_2_OPEN:"Click / Toque em uma coluna para abrir controle de seleção",SELECT_2_APPLY_COL:"Selecione o controle desejado para aplicar a esta coluna",CUSTOM_SUBMIT_BTN:"Customizar texto do botão Enviar",CUSTOM_CANCEL_BTN:"Customizar texto do botão Cancelar",NAME_THIS_FORM:"Nome deste formulário",SAVE_THIS_FORM:"Salvar este formulário",FINAL_STEP:"Passo final : Visualizar formulário",DATA_MODEL:"Modelo de dados",FIELDS_MODEL:"Modelo de campos (pronto para salvar na base de dados)",SELECT_A_CTRL:"Selecionar um controle",SELECT_CTRL_IN_LIST:"Selecionar um controle na lista a seguir",COL_WILL_BE_BLANK:"Coluna ficará em branco",EDIT_PROPERTIES:"Editar propriedades",HEADER_TEXT:"Texto do cabeçalho",ADD_EDIT_HEADER_HERE:"Adicionar / editar o texto do cabeçalho aqui",SUBTITLE_TEXT:"Texto da legenda",ADD_EDIT_SUBTIL_HERE:"Adicionar /Editar o texto da legenda aqui",LABEL_TEXT:"Texto do label",ADD_EDIT_LABEL_HERE:"Adicionar / Editar texto do controle label aqui",PLACEHOLDER:"placeholder",ADD_EDIT_PLACEHOLD:"Adicionar / editar texto do placeholder aqui",REQUIRED:"Obrigatório",DESCRIPTION:"Descrição",ADDEDIT_DESCRIPTION:"Adicionar / editar descrição aqui",DEFAULTVALUE:"Valor padrão",ADD_EDIT_DEFAULTVALUE_PLACEHOLD:"Adicionar / editar valor padrão aqui",DATE_FORMAT:"Formato da data",ADD_NEW_RADIO:"Adicionar novo radio",ADD_RADIO_PLACEHOLD:"Adicionar novo radio",EDIT_REMOVE_RADIO:"Editar/Remover radio",NO_RADIO_ADD_NEW:"nenhum radio : Adicionar novo valor ao radio ",SEARCH_4_OPTION:"procurar por opções",ADD:"adicionar",ORDER:"ordem",OPTION:"opção",GROUP:"grupo",Add_NEW_OPTIONS:"Adicionar nova opção",ADD_A_NEW_OPTION:"Adicionar nova opção",EDIT_REMOVE_OPTIONS:"Editar/Remover opções",NO_OPTION_ADD_NEW:"nenhuma opção : adicionar nova opções",ADD_NEW_GROUPS:"Adicionar novos grupos",ADD_A_NEW_GROUP:"adicionar novo grupo",EDIT_GROUPS_OPTIONS:"Editar/Remover opções/grupos",NO_GROUP_ADD_NEW:"adicionar novo grupo",OK:"OK",CANCEL:"Cancelar"}},function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var t=["textAngular","textAngularSetup","ngAnimate","toaster","formly","formlyBootstrap","ui.bootstrap","nya.bootstrap.select","pascalprecht.translate"];n.default=angular.module("edaStepWayEasyFormGen.core",t)},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var i=t(22),r=o(i),l=t(26),a=o(l),s=t(28),c=o(s),d=t(29),u=o(d),p=t(31),f=o(p),m=t(33),v=o(m),y=t(37),g=o(y),h=t(41),b=o(h),E=t(45),T=o(E),_="easyFormStepwayMainModule",O=[u.default.name,f.default.name,v.default.name,g.default.name,b.default.name,T.default.name];n.default=angular.module(_,O).controller(i.STEP_WAY_MAIN_CONTROLLER_NAME,r.default).directive(l.STEP_WAY_DIRECTIVE_NAME,a.default).provider(s.EASY_FORM_STEP_WAY_CONFIG_NAME,c.default)},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function i(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.STEP_WAY_MAIN_CONTROLLERAS_NAME=n.STEP_WAY_MAIN_CONTROLLER_NAME=void 0;var r=function(){function e(e,n){for(var t=0;t-1&&this.configuration.lines[e-1]){var n=this.configuration.lines[e];this.configuration.lines.splice(e,1),this.configuration.lines.splice(e-1,0,n),this.configuration.activeLine=1}this.$formlyProxy.applyConfigurationToformlyModel(this.configuration,this.wfFormFields,this.dataModel),this.wfFormFieldsOnlyNeededProperties=angular.copy(this.wfFormFields)}},{key:"downThisLine",value:function(e){if(e>-1&&this.configuration.lines[e+1]){var n=this.configuration.lines[e];this.configuration.lines.splice(e,1),this.configuration.lines.splice(e+1,0,n),this.configuration.activeLine=1}this.$formlyProxy.applyConfigurationToformlyModel(this.configuration,this.wfFormFields,this.dataModel),this.wfFormFieldsOnlyNeededProperties=angular.copy(this.wfFormFields)}},{key:"addNewline",value:function(){this.configuration.lines.push((0,l.initLineTemplate)()),this.$formlyProxy.applyConfigurationToformlyModel(this.configuration,this.wfFormFields,this.dataModel),
+this.wfFormFieldsOnlyNeededProperties=angular.copy(this.wfFormFields)}},{key:"removeThisLine",value:function(e){e>-1&&(this.configuration.lines.length>1?(this.configuration.activeLine===e+1&&(this.configuration.activeLine=1),this.configuration.lines.splice(e,1)):this.$timeout(function(){this.toaster.pop({type:"warning",title:"Last line",body:"Can't delete the last line",showCloseButton:!0})},100),this.$formlyProxy.applyConfigurationToformlyModel(this.configuration,this.wfFormFields,this.dataModel),this.wfFormFieldsOnlyNeededProperties=angular.copy(this.wfFormFields))}},{key:"increaseNumberOfColumns",value:function(){var e=this.configuration.activeLine-1;if(this.configuration.lines[e].columns.length1&&this.configuration.lines[this.configuration.activeLine-1].columns.splice(this.configuration.lines[this.configuration.activeLine-1].columns.length-1,1),this.$formlyProxy.applyConfigurationToformlyModel(this.configuration,this.wfFormFields,this.dataModel),this.wfFormFieldsOnlyNeededProperties=angular.copy(this.wfFormFields)}},{key:"resetStepCounter",value:function(){this.configuration.configStepCounter=0}},{key:"nextConfigStep",value:function(){var e=this.configuration.listConfigStep.length-1;this.configuration.configStepCounter!==e&&this.configuration.configStepCounter++,this.setTrueThisStepIndicator(this.configuration.configStepCounter)}},{key:"resetAllIndicators",value:function(){for(var e=this.configuration.stepIndicators.length-1;e>=0;e--)this.configuration.stepIndicators[e]=!1}},{key:"setTrueThisStepIndicator",value:function(e){this.resetAllIndicators(),this.configuration.stepIndicators[e]=!0}},{key:"previousConfigStep",value:function(){0!==this.configuration.configStepCounter&&this.configuration.configStepCounter--,this.setTrueThisStepIndicator(this.configuration.configStepCounter)}},{key:"goToStep",value:function(e){this.configuration.configStepCounter=e,this.setTrueThisStepIndicator(this.configuration.configStepCounter)}},{key:"stepReachable",value:function(e){return e \n\n
\n
\n
\n
\n \n \n {{\'SELECT_CTRL_IN_LIST\' | translate}} :\n \n \n
\n \n \n
\n
\n
\n
\n\n
\n
\n
\n
\n \n {{\'SELECT_A_CTRL\' | translate}}\n \n \n
\n
\n\n
\n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n
\n\n\n \n'},function(e,n){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(e,n){for(var t=0;t=0;e--)this.nyaSelect.controls[e].id===this.nyaSelect.selectedControl&&(this.modelNyaSelect=this.nyaSelect.controls[e]);"BasicSelect"===this.nyaSelect.selectedControl&&this.bindBasicSelectFromNYA(),"GroupedSelect"===this.nyaSelect.selectedControl&&this.bindGroupedSelectFromNYA(),"Radio"===this.nyaSelect.selectedControl&&this.bindRadioFromNYA()}this.initNyaSelectFiltered()}},{key:"initNyaSelectFiltered",value:function(){var e=[].concat(this.$modalProxy.getFilteredNyaSelectObject());angular.extend(this.nyaSelectFiltered,{controls:e,selectedControl:this.nyaSelect.selectedControl,temporyConfig:this.nyaSelect.temporyConfig})}},{key:"bindBasicSelectFromNYA",value:function(){if(this.nyaSelect.temporyConfig.formlyOptions.length>0)for(var e=0;e<=this.nyaSelect.temporyConfig.formlyOptions.length-1;e++){var n={option:this.nyaSelect.temporyConfig.formlyOptions[e].name,order:e,group:""};this.basicSelectRowCollection.rows.push(n)}}},{key:"bindRadioFromNYA",value:function(){if(this.nyaSelect.temporyConfig.formlyOptions.length>0)for(var e=0;e<=this.nyaSelect.temporyConfig.formlyOptions.length-1;e++){var n={option:this.nyaSelect.temporyConfig.formlyOptions[e].name,order:e,group:""};this.radioRowCollection.rows.push(n)}}},{key:"bindGroupedSelectFromNYA",value:function(){if(this.nyaSelect.temporyConfig.formlyOptions.length>0){for(var e=0;e<=this.nyaSelect.temporyConfig.formlyOptions.length-1;e++){var n={option:this.nyaSelect.temporyConfig.formlyOptions[e].name,order:e,group:this.nyaSelect.temporyConfig.formlyOptions[e].group};this.groupedSelectRowCollection.rows.push(n)}var t=_.uniq(_.pluck(this.groupedSelectRowCollection.rows,"group"));angular.copy(t,this.GroupedSelectGroups.list)}}},{key:"addNewOptionRadio",value:function(){var e=this.selectOptionManage.addNewOptionRadio(this.radioRowCollection,this.newOptionRadio.saisie);e.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:e.details,body:"'"+this.newOptionRadio.saisie+"' cannot be added.",showCloseButton:!0}),this.newOptionRadio={saisie:""}}},{key:"removeRadioRow",value:function(e){var n=this.selectOptionManage.removeOption(this.radioRowCollection,e);n.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:n.details,body:"Delete was cancelled.",showCloseButton:!0})}},{key:"upThisRadioRow",value:function(e){var n=this.selectOptionManage.upthisOption(this.radioRowCollection,e);n.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:n.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"downThisRadioRow",value:function(e){var n=this.selectOptionManage.downthisOption(this.radioRowCollection,e);n.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:n.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"addNewOptionBasicSelect",value:function(){var e=this.selectOptionManage.addNewOptionBasicSelect(this.basicSelectRowCollection,this.newOptionBasicSelect.saisie);e.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:e.details,body:"'"+this.newOptionBasicSelect.saisie+"' cannot be added.",showCloseButton:!0}),this.newOptionBasicSelect={saisie:""}}},{key:"removeRow",value:function(e){var n=this.selectOptionManage.removeOption(this.basicSelectRowCollection,e);n.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:n.details,body:"Delete was cancelled.",showCloseButton:!0})}},{key:"upThisRow",value:function(e){var n=this.selectOptionManage.upthisOption(this.basicSelectRowCollection,e);n.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:n.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"downThisRow",value:function(e){var n=this.selectOptionManage.downthisOption(this.basicSelectRowCollection,e);n.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:n.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"showGroupListToChoose",value:function(){this.groupSelectGroupClick.showList=!this.groupSelectGroupClick.showList}},{key:"addNewGroupToGroupedSelect",value:function(){if(""!==this.newGroupGroupedSelect.saisie){for(var e=this.GroupedSelectGroups.list.length-1;e>=0;e--)this.GroupedSelectGroups.list[e]===this.newGroupGroupedSelect.saisie&&this.toaster.pop({type:"warning",timeout:2e3,title:"Group already exists",body:"No group added.",showCloseButton:!0});this.GroupedSelectGroups.list.push(this.newGroupGroupedSelect.saisie)}else this.toaster.pop({type:"warning",timeout:2e3,title:"Not a valid group to add",body:"No group added.",showCloseButton:!0});this.newGroupGroupedSelect.saisie=""}},{key:"addNewOptionGroupedSelect",value:function(){var e=this.selectOptionManage.addNewOptionGroupedSelect(this.groupedSelectRowCollection,this.newOptionGroupedSelect.saisie,"");e.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:e.details,body:"'"+this.newOptionGroupedSelect.saisie+"' cannot be added.",showCloseButton:!0}),this.newOptionGroupedSelect={saisie:""}}},{key:"removeGroupedSelectRow",value:function(e){var n=this.selectOptionManage.removeOption(this.groupedSelectRowCollection,e);n.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:n.details,body:"Delete was cancelled.",showCloseButton:!0})}},{key:"upThisGroupedSelectRow",value:function(e){var n=this.selectOptionManage.upthisOption(this.groupedSelectRowCollection,e);n.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:n.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"downThisGroupedSelectRow",value:function(e){var n=this.selectOptionManage.downthisOption(this.groupedSelectRowCollection,e);n.resultFlag===!1&&this.toaster.pop({type:"warning",timeout:2e3,title:n.details,body:"Operation cancelled.",showCloseButton:!0})}},{key:"today",value:function(){this.demodt.dt=new Date}},{key:"clear",value:function(){this.demodt.dt=null}},{key:"open",value:function(e){e.preventDefault(),e.stopPropagation(),this.demodt.opened=!0}},{key:"dateOptionsInit",value:function(){return{formatYear:"yy",startingDay:1,showWeeks:!0,initDate:null}}},{key:"selectThisControl",value:function(e){this.nyaSelect.selectedControl="none",this.resetTemporyConfig();for(var n=this.nyaSelect.controls.length-1;n>=0;n--)this.nyaSelect.controls[n].id===e&&(this.nyaSelect.selectedControl=this.nyaSelect.controls[n].id);"Date"===this.nyaSelect.selectedControl&&this.initDatePicker()}},{key:"ok",value:function(){"BasicSelect"===this.nyaSelect.selectedControl&&this.bindBasicSelectToNya(),"GroupedSelect"===this.nyaSelect.selectedControl&&this.bindGroupedSelectToNya(),"Radio"===this.nyaSelect.selectedControl&&this.bindRadioToNya(),this.$modalProxy.applyConfigToSelectedControl(this.nyaSelect),this.$modalInstance.close(this.nyaSelect)}},{key:"cancel",value:function(){this.$modalInstance.dismiss("cancel")}},{key:"bindBasicSelectToNya",value:function(){var e=[];if(this.nyaSelect.temporyConfig.formlyOptions=e,this.basicSelectRowCollection.rows.length>0)for(var n=0;n<=this.basicSelectRowCollection.rows.length-1;n++){var t={name:this.basicSelectRowCollection.rows[n].option,value:n,group:""};this.nyaSelect.temporyConfig.formlyOptions.push(t)}}},{key:"bindGroupedSelectToNya",value:function(){this.nyaSelect.temporyConfig.formlyOptions=[];for(var e=0;e<=this.groupedSelectRowCollection.rows.length-1;e++){var n={name:this.groupedSelectRowCollection.rows[e].option,value:e,group:this.groupedSelectRowCollection.rows[e].group};this.nyaSelect.temporyConfig.formlyOptions.push(n)}}},{key:"bindRadioToNya",value:function(){var e=[];if(this.nyaSelect.temporyConfig.formlyOptions=e,this.radioRowCollection.rows.length>0)for(var n=0;n<=this.radioRowCollection.rows.length-1;n++){var t={name:this.radioRowCollection.rows[n].option,value:n,group:""};this.nyaSelect.temporyConfig.formlyOptions.push(t)}}},{key:"initDatePicker",value:function(){this.nyaSelect.temporyConfig.datepickerOptions={format:this.demodt.formats[0]}}},{key:"resetTemporyConfig",value:function(){this.nyaSelectFiltered.temporyConfig={formlyLabel:"",formlyRequired:!1,formlyPlaceholder:"",formlyDescription:"",formlyOptions:[]}}}]),e}(),a=["$uibModalInstance","nyaSelect","toaster","selectOptionManage","$modalProxy"];l.$inject=a,n.default=l,n.EDIT_MODAL_CONTROLLER_NAME=i,n.EDIT_MODAL_CONTROLLERAS_NAME=r},function(e,n,t){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function i(e,n,t,o){function i(e){function n(){if(angular.isDefined(e.edaEasyFormGeneratorModel)){var n=[].concat(i());e.configurationLoaded={},t.bindConfigurationLines(e.configurationLoaded,n),o.refreshControlFormlyExpressionProperties(e.configurationLoaded),o.refreshControlFormlyValidators(e.configurationLoaded),o.refreshControlFormlyValidation(e.configurationLoaded),e.vm.configuration=angular.copy(e.configurationLoaded),t.applyConfigurationToformlyModel(e.configurationLoaded,e.vm.wfFormFields,e.vm.model),e.vm.wfFormFieldsOnlyNeededProperties=angular.copy(e.vm.wfFormFields),e.vm.dataModel=r(),e.vm.configuration.formName=angular.isString(e.edaEasyFormGeneratorModel.formName)?e.edaEasyFormGeneratorModel.formName:"",e.vm.configuration.submitButtonText=angular.isString(e.edaEasyFormGeneratorModel.btnSubmitText)?e.edaEasyFormGeneratorModel.btnSubmitText:"Submit",e.vm.configuration.cancelButtonText=angular.isString(e.edaEasyFormGeneratorModel.btnCancelText)?e.edaEasyFormGeneratorModel.btnCancelText:"Cancel"}}function i(){var n=angular.isArray(e.edaEasyFormGeneratorModel.edaFieldsModel)&&e.edaEasyFormGeneratorModel.edaFieldsModel.length>0?e.edaEasyFormGeneratorModel.edaFieldsModel:l();return n}function r(){var n=angular.isArray(e.edaEasyFormGeneratorModel.dataModel)&&e.edaEasyFormGeneratorModel.dataModel.length>0?e.edaEasyFormGeneratorModel.dataModel:{};return n}function l(){var e=[{line:1,activeColumn:1,columns:[{numColumn:1,exist:!0,control:{type:"none",key:"none"}}]}];return e}e.$watch(function(){return e.edaEasyFormGeneratorModel},function(){return n()},!0),e.wizardStepGeneratorModel&&(n(),e.wizardStepGeneratorModel.configuration=e.vm.configuration,e.wizardStepGeneratorModel.edaFieldsModel=e.vm.configuration.lines,e.wizardStepGeneratorModel.formlyFieldsModel=e.vm.wfFormFields,e.wizardStepGeneratorModel.dataModel=e.vm.dataModel,e.vm.configuration.isWizard=!0,e.wizardStepGeneratorModel.loaded&&(angular.copy(e.wizardStepGeneratorModel.loaded.edaFieldsModel,e.wizardStepGeneratorModel.edaFieldsModel),angular.copy(e.wizardStepGeneratorModel.loaded.dataModel,e.wizardStepGeneratorModel.dataModel),e.wizardStepGeneratorModel.formlyFieldsModel.length=0,angular.copy(e.wizardStepGeneratorModel.loaded.formlyFieldsModel,e.wizardStepGeneratorModel.formlyFieldsModel))),e.$watch(function(){return e.vm.returnSaveEvent},function(n){if(n===!0){var t={formName:e.vm.configuration.formName,btnSubmitText:e.vm.configuration.submitButtonText,btnCancelText:e.vm.configuration.cancelButtonText,edaFieldsModel:e.vm.configuration.lines,edaFieldsModelStringified:angular.toJson(e.vm.configuration.lines),formlyFieldsModel:e.vm.wfFormFieldsOnlyNeededProperties,dataModel:e.vm.dataModel};e.edaSaveFormEvent({edaEasyFormGeneratorModel:t}),e.vm.returnSaveEvent=!1}})}var r={restrict:"E",scope:{edaEasyFormGeneratorModel:"=",wizardStepGeneratorModel:"=",edaSaveFormEvent:"&edaSaveFormEvent"},controller:a.STEP_WAY_MAIN_CONTROLLER_NAME,controllerAs:a.STEP_WAY_MAIN_CONTROLLERAS_NAME,replace:!1,template:l.default,link:i};return r}Object.defineProperty(n,"__esModule",{value:!0}),n.STEP_WAY_DIRECTIVE_NAME=void 0;var r=t(27),l=o(r),a=t(22),s="edaStepWayEasyFormGen";i.$inject=["$templateCache","$timeout","$formlyProxy","$modalProxy"],n.default=i,n.STEP_WAY_DIRECTIVE_NAME=s},function(e,n){e.exports='\n \n
\n
\n \n
\n \n
\n \n
\n \n \n \n \n
\n \n
\n \n
\n \n \n \n \n \n \n \n \n
\n
\n \n \n \n \n
\n
{{\'DATA_MODEL\' | translate}}
\n
\n {{vm.dataModel | json}}\n \n
\n
\n \n
\n
{{\'FIELDS_MODEL\' | translate}}
\n
\n {{vm.wfFormFieldsOnlyNeededProperties | json}}\n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n \n'},function(e,n){"use strict";function t(e){function n(){var e={modalAnimated:!1};return e}function t(){return!0}function o(){return!0}function i(){return T}function r(){var e=[{name:"empty",enabled:!0},{name:"Header",enabled:!0},{name:"Subtitle",enabled:!0},{name:"TextInput",enabled:!0},{name:"Password",enabled:!0},{name:"Email",enabled:!0},{name:"IpAdress",enabled:!0},{name:"Date",enabled:!0},{name:"Texarea",enabled:!0},{name:"RichTextEditor",enabled:!0},{name:"Radio",enabled:!0},{name:"Checkbox",enabled:!0},{name:"BasicSelect",enabled:!0},{name:"GroupedSelect",enabled:!0}];return e}function l(e){angular.isDefined(e)&&(e===!0&&(_=!0),e===!1&&(_=!1))}function a(e){angular.isDefined(e)&&(e===!0&&(O=!0),e===!1&&(O=!1))}function s(){var e="en";return e}function c(){return T=E,e.preferredLanguage(T),T}function d(n){angular.isString(n)?(T=n,e.preferredLanguage(n)):c()}function u(){return e.useSanitizeValueStrategy("escape"),e.fallbackLanguage(E),e.preferredLanguage(E),E}function p(){return b}function f(e){angular.isString(e)?angular.forEach(b,function(n){n.name===e&&(n.enabled=!1)}):angular.isArray(e)&&angular.forEach(e,function(e){angular.forEach(b,function(n){n.name===e&&(n.enabled=!1)})})}function m(e){angular.isString(e)?angular.forEach(b,function(n){n.name===e&&(n.enabled=!0)}):angular.isArray(e)&&angular.forEach(e,function(e){angular.forEach(b,function(n){n.name===e&&(n.enabled=!0)})})}function v(e){var n=e===!0?e:e===!1?e:h.modalAnimated;h.modalAnimated=n}function y(){return h.modalAnimated}function g(e){function n(){return h.modalAnimated}function t(e){v(e)}function o(){return angular.copy(b)}function r(n){angular.isString(n)?(T=n,e.use(n)):c()}function l(){return _}function a(){return O}var s={setModalAnimation:t,getModalAnimationValue:n,getListEnabledControl:o,setLanguage:r,getCurrentLanguage:i,isPreviewPanelVisible:l,arePreviewModelsVisible:a};return s}var h=n(),b=r(),E=s(),T=u(),_=t(),O=o();this.$get=g,this.setModalAnimation=v,this.getModalAnimation=y,this.configuration=h,this.getEnabledControls=p,this.disableControl=f,this.enableControl=m,this.setLanguage=d,this.getCurrentLanguage=i,this.showPreviewPanel=l,this.showPreviewModels=a,g.$inject=["$translate"]}Object.defineProperty(n,"__esModule",{value:!0});var o="easyFormSteWayConfig";t.$inject=["$translateProvider"],n.default=t,n.EASY_FORM_STEP_WAY_CONFIG_NAME=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=t(30),i="stepway.pager.module";n.default=angular.module(i,[]).component(o.PAGER_COMPONENT_NAME,o.pagerComponent)},function(e,n){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(e,n){for(var t=0;t \n ',bindings:{configuration:"<",goToStep:"&"},controller:function(){function e(){t(this,e)}return o(e,null,[{key:"$inject",get:function(){return[]}}]),e}()}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=t(34),i=t(35),r=t(36),l="stepway.stepZeroContent.module";n.default=angular.module(l,[]).component(o.LINE_STEP_ZERO_CONTENT_COMPONENT,o.stepZeroContentComponent).component(i.STEP_ZERO_COMMAND_PANEL_COMPONENT_NAME,i.StepZeroCommandPanelComponent).component(r.STEP_ZERO_VISUAL_PANEL_COMPONENT_NAME,r.StepZeroVisualPanelComponent)},function(e,n){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(e,n){for(var t=0;t\n \n \n \n
\n \n \n \n
\n \n ',bindings:{configuration:"=",addNewline:"&",downThisLine:"&",upThisLine:"&",removeThisLine:"&"},controller:function(){function e(){t(this,e)}return o(e,[{key:"setActiveLineNumberParent",value:function(e){this.setActiveLineNumber({index:e})}},{key:"removeThisLineParent",value:function(e){this.removeThisLine({index:e})}},{key:"upThisLineParent",value:function(e){this.upThisLine({index:e})}},{key:"downThisLineParent",value:function(e){this.downThisLine({index:e})}}],[{key:"$inject",get:function(){return[]}}]),e}()}},function(e,n){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(e,n){for(var t=0;t
\n \n
\n
\n \n \n {{\'COMMAND_PANEL\' | translate}}\n \n \n
\n
\n
\n \n {{\'ADD_NEW_LINE\' | translate}} :\n \n \n \n \n \n
\n
\n
\n
\n \n ',bindings:{addNewline:"&"},controller:function(){function e(){t(this,e)}return o(e,null,[{key:"$inject",get:function(){return[]}}]),e}()}},function(e,n){"use strict";function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(e,n){for(var t=0;t