TimeTrex/interface/html5/dist/datepicker-TRangePicker.bundle.js

1 line
47 KiB
JavaScript

(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["datepicker-TRangePicker"],{9300:(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("/* provided dependency */ var jQuery = __webpack_require__(9755);\n( function( $ ) {\n\n\t$.fn.TRangePicker = function( options ) {\n\t\tvar opts = $.extend( {}, $.fn.TRangePicker.defaults, options );\n\t\t//Global.addCss( 'global/widgets/datepicker/TDatePicker.css' );\n\n\t\tvar $this = this;\n\t\tvar field;\n\t\tvar validation_field;\n\t\tvar date_picker_input;\n\t\tvar icon;\n\t\tvar error_string = '';\n\t\tvar error_tip_box;\n\t\tvar mass_edit_mode = false;\n\t\tvar check_box = null;\n\t\tvar enabled = true;\n\t\tvar is_open = false;\n\t\tvar focus_out_timer;\n\t\tvar is_mouse_over = false;\n\t\tvar ranger_picker;\n\n\t\tvar range_start_picker;\n\t\tvar range_end_picker;\n\n\t\tvar result;\n\n\t\tvar editor;\n\n\t\tvar can_not_close = false;\n\n\t\tvar tab_bars;\n\n\t\tvar date_picker;\n\n\t\tvar default_width_by_format = {\n\t\t\t'DD-MMM-YY': 100,\n\t\t\t'ddd, MMMM DD YYYY': 170,\n\t\t\t'dddd, MMMM DD YYYY': 190,\n\t\t\t'DD-MMM-YYYY': 110,\n\t\t\t'DDMMMYYYY': 100,\n\t\t\t'DD/MM/YYYY': 100,\n\t\t\t'DD/MM/YY': 100,\n\t\t\t'DD-MM-YY': 100,\n\t\t\t'DD-MM-YYYY': 100,\n\t\t\t'MM/DD/YY': 100,\n\t\t\t'MM/DD/YYYY': 100,\n\t\t\t'MM-DD-YY': 100,\n\t\t\t'MM-DD-YYYY': 100,\n\t\t\t'YYYY-MM-DD': 100,\n\t\t\t'MMM-DD-YY': 100,\n\t\t\t'MMM-DD-YYYY': 110,\n\t\t\t'ddd, MMM DD YYYY': 140,\n\t\t\t'ddd, DD-MMM-YYYY': 140,\n\t\t\t'ddd, DDMMMYYYY': 130\n\t\t};\n\n\t\tthis.getEnabled = function() {\n\t\t\treturn enabled;\n\t\t};\n\n\t\tthis.setEnabled = function( val ) {\n\t\t\tenabled = val;\n\t\t\tif ( val === false || val === '' ) {\n\t\t\t\t$this.attr( 'disabled', 'true' );\n\t\t\t\tdate_picker_input.addClass( 't-date-picker-readonly' );\n\t\t\t\ticon.css( 'display', 'none' );\n//\t\t\t\tdate_picker_input.attr( 'readonly', 'readonly' )\n\t\t\t} else {\n\t\t\t\t$this.removeAttr( 'disabled' );\n\t\t\t\tdate_picker_input.removeClass( 't-date-picker-readonly' );\n\t\t\t\ticon.css( 'display', 'inline' );\n//\t\t\t\tdate_picker_input.removeAttr( 'readonly' );\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setCheckBox = function( val ) {\n\t\t\tif ( check_box ) {\n\t\t\t\tcheck_box.children().eq( 0 )[0].checked = val;\n\t\t\t}\n\t\t};\n\n\t\tthis.isChecked = function() {\n\t\t\tif ( check_box ) {\n\t\t\t\tif ( check_box.children().eq( 0 )[0].checked === true ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t};\n\n\t\tthis.setMassEditMode = function( val ) {\n\t\t\tmass_edit_mode = val;\n\n\t\t\tif ( mass_edit_mode ) {\n\t\t\t\tcheck_box = $( ' <div class=\"mass-edit-checkbox-wrapper\"><input type=\"checkbox\" class=\"mass-edit-checkbox\"></input>' +\n\t\t\t\t\t'<label for=\"checkbox-input-1\" class=\"input-helper input-helper--checkbox\"></label></div>' );\n\t\t\t\tcheck_box.insertBefore( $( this ) );\n\n\t\t\t\tcheck_box.change( function() {\n\t\t\t\t\t$this.trigger( 'formItemChange', [$this] );\n\t\t\t\t} );\n\n\t\t\t} else {\n\t\t\t\tif ( check_box ) {\n\t\t\t\t\tcheck_box.remove();\n\t\t\t\t\tcheck_box = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setErrorStyle = function( errStr, show, isWarning ) {\n\t\t\tif ( isWarning ) {\n\t\t\t\tdate_picker_input.addClass( 'warning-tip' );\n\t\t\t} else {\n\t\t\t\tdate_picker_input.addClass( 'error-tip' );\n\t\t\t}\n\t\t\terror_string = errStr;\n\n\t\t\tif ( show ) {\n\t\t\t\tthis.showErrorTip();\n\t\t\t}\n\t\t};\n\n\t\tthis.showErrorTip = function( sec ) {\n\n\t\t\tif ( !Global.isSet( sec ) ) {\n\t\t\t\tsec = 2;\n\t\t\t}\n\n\t\t\tif ( !error_tip_box ) {\n\t\t\t\terror_tip_box = Global.loadWidgetByName( WidgetNamesDic.ERROR_TOOLTIP );\n\t\t\t\terror_tip_box = error_tip_box.ErrorTipBox();\n\t\t\t}\n\t\t\tif ( date_picker_input.hasClass( 'warning-tip' ) ) {\n\t\t\t\terror_tip_box.show( this, error_string, sec, true );\n\t\t\t} else {\n\t\t\t\terror_tip_box.show( this, error_string, sec );\n\t\t\t}\n\t\t};\n\n\t\tthis.hideErrorTip = function() {\n\n\t\t\tif ( Global.isSet( error_tip_box ) ) {\n\t\t\t\terror_tip_box.remove();\n\t\t\t}\n\n\t\t};\n\n\t\tthis.clearErrorStyle = function() {\n\t\t\tdate_picker_input.removeClass( 'error-tip' );\n\t\t\tdate_picker_input.removeClass( 'warning-tip' );\n\t\t\tthis.hideErrorTip();\n\t\t\terror_string = '';\n\t\t};\n\n\t\tthis.getField = function() {\n\t\t\treturn field;\n\t\t};\n\n\t\tthis.getValidationField = function() {\n\t\t\treturn validation_field;\n\t\t};\n\n\t\tthis.getDefaultFormatValue = function() {\n\t\t\tvar val = date_picker_input.val();\n\n\t\t\tval = Global.strToDate( val ).format( 'YYYY-MM-DD' );\n\n\t\t\treturn val;\n\t\t};\n\n\t\tthis.getValue = function() {\n\t\t\treturn result;\n\t\t};\n\n\t\tthis.setValue = function( val ) {\n\t\t\tif ( !val ) {\n\t\t\t\tval = '';\n\t\t\t}\n\t\t\tif ( $.type( val ) !== 'array' ) {\n\t\t\t\tresult = [val];\n\t\t\t\tdate_picker_input.val( val );\n\t\t\t\tdate_picker_input.removeAttr( 'readonly' );\n\t\t\t} else {\n\t\t\t\tresult = val;\n\t\t\t\tif ( val.length == 1 ) {\n\t\t\t\t\tdate_picker_input.val( val[0] );\n\t\t\t\t\tdate_picker_input.removeAttr( 'readonly' );\n\t\t\t\t} else {\n\t\t\t\t\tdate_picker_input.val( val.length + ' ' + $.i18n._( 'dates selected' ) );\n\t\t\t\t\tdate_picker_input.attr( 'readonly', 'readonly' );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.autoResize();\n\t\t};\n\n\t\tthis.autoResize = function() {\n\t\t\tvar content_width, example_width;\n\t\t\texample_width = Global.calculateTextWidth( LocalCacheData.getLoginUserPreference().date_format_display );\n\t\t\tcontent_width = Global.calculateTextWidth( date_picker_input.val(), {\n\t\t\t\tmin_width: example_width,\n\t\t\t\tmax_width: ( ( example_width * 2 ) + 100 ),\n\t\t\t\tpadding: 28\n\t\t\t} );\n\t\t\tdate_picker.width( content_width + 'px' );\n\t\t};\n\n\t\tthis.close = function() {\n\n\t\t\tif ( can_not_close ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar tab_index = tab_bars.tabs( 'option', 'active' );\n\n\t\t\tranger_picker.remove();\n\t\t\tis_open = false;\n\t\t\tLocalCacheData.openRangerPicker = null;\n\t\t\tis_mouse_over = false; //When close from esc, this maybe true\n\n\t\t\tif ( tab_index == 0 ) {\n\t\t\t\tresult = range_start_picker.val() + ' - ' + range_end_picker.val();\n\t\t\t\tdate_picker_input.val( result );\n\t\t\t\tdate_picker_input.attr( 'readonly', 'readonly' );\n\t\t\t} else {\n\t\t\t\tresult = editor.getValue();\n\n\t\t\t\tif ( result.length > 1 ) {\n\t\t\t\t\tdate_picker_input.val( result.length + ' ' + $.i18n._( 'dates selected' ) );\n\t\t\t\t\tdate_picker_input.attr( 'readonly', 'readonly' );\n\t\t\t\t} else {\n\t\t\t\t\tdate_picker_input.val( result[0] );\n\t\t\t\t\tdate_picker_input.removeAttr( 'readonly' );\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.autoResize();\n\n\t\t\tsetTimeout( function() {\n\t\t\t\t$this.trigger( 'formItemChange', [$this] );\n\t\t\t}, 100 );\n//\n\n\t\t};\n\n\t\tthis.getIsMouseOver = function() {\n\t\t\treturn is_mouse_over;\n\t\t};\n\n\t\tvar insideEditorSetValue = function( val ) {\n\n\t\t\tvar len = val ? val.length : 0;\n\t\t\tthis.removeAllRows();\n\n\t\t\tif ( len > 0 ) {\n\t\t\t\tfor ( var i = 0; i < val.length; i++ ) {\n\t\t\t\t\tif ( Global.isSet( val[i] ) ) {\n\t\t\t\t\t\tvar row = val[i];\n\t\t\t\t\t\tthis.addRow( row );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.addRow( '' );\n\t\t\t}\n\n\t\t};\n\n\t\t// Commented out due to its use of this._super (no longer valid in ES6 syntax) and it appears not to be used.\n\t\t// var setEditViewDataDone = function() {\n\t\t// \tthis._super( 'setEditViewDataDone' );\n\t\t// \tthis.initInsideEditorData();\n\t\t//\n\t\t// };\n\n\t\tvar initInsideEditorData = function() {\n\t\t\tvar $this = this;\n\n\t\t\tvar args = {};\n\t\t\targs.filter_data = {};\n\t\t\targs.filter_data.hierarchy_control_id = this.current_edit_record.id ? this.current_edit_record.id : ( this.copied_record_id ? this.copied_record_id : '' );\n\n\t\t\tif ( ( !this.current_edit_record || !this.current_edit_record.id ) && !this.copied_record_id ) {\n\t\t\t\tthis.editor.addRow();\n\t\t\t} else {\n\t\t\t\tthis.hierarchy_level_api.getHierarchyLevel( args, true, {\n\t\t\t\t\tonResult: function( res ) {\n\t\t\t\t\t\tif ( !$this.edit_view ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar data = res.getResult();\n\n\t\t\t\t\t\t$this.editor.setValue( data );\n\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\n\t\t};\n\n\t\tvar insideEditorRemoveRow = function( row ) {\n\t\t\tvar index = row[0].rowIndex - 1;\n\t\t\trow.remove();\n\t\t\tthis.rows_widgets_array.splice( index, 1 );\n\t\t\tthis.removeLastRowLine();\n\t\t};\n\n\t\tvar insideEditorAddRow = function( data ) {\n\t\t\tif ( !data ) {\n\t\t\t\tdata = '';\n\t\t\t}\n\n\t\t\tif ( this.rows_widgets_array.length > 0 && !data ) {\n\t\t\t\tvar current_data = this.rows_widgets_array[this.rows_widgets_array.length - 1].start_date_stamp.getValue();\n\n\t\t\t\tif ( !current_data ) {\n\t\t\t\t\tcurrent_data = new Date();\n\t\t\t\t} else {\n\t\t\t\t\tcurrent_data = Global.strToDate( current_data );\n\t\t\t\t}\n\n\t\t\t\tcurrent_data = new Date( new Date( current_data.getTime() ).setDate( current_data.getDate() + 1 ) );\n\t\t\t\tdata = current_data.format();\n\n\t\t\t} else if ( this.rows_widgets_array.length === 0 && !data ) {\n\t\t\t\tdata = new Date().format();\n\t\t\t}\n\n\t\t\tvar row = this.getRowRender(); //Get Row render\n\t\t\tvar render = this.getRender(); //get render, should be a table\n\t\t\tvar widgets = {}; //Save each row's widgets\n\n\t\t\t//Build row widgets\n\n\t\t\t//Date\n\t\t\tvar form_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );\n\t\t\tform_item_input.TDatePicker( {\n\t\t\t\tfield: 'start_date_stamp',\n\t\t\t\tbeforeShow: function() {\n\t\t\t\t\tcan_not_close = true;\n\t\t\t\t},\n\t\t\t\tonClose: function() {\n\t\t\t\t\tcan_not_close = false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t$( '.ranger-picker-dates-width-tr' ).width( form_item_input.width() + 80 );\n\n\t\t\tform_item_input.setValue( data );\n\t\t\twidgets[form_item_input.getField()] = form_item_input;\n\t\t\trow.children().eq( 0 ).append( form_item_input );\n\n\t\t\t$( render ).append( row );\n\n\t\t\tthis.rows_widgets_array.push( widgets );\n\n\t\t\tthis.addIconsEvent( row ); //Bind event to add and minus icon\n\t\t\tthis.removeLastRowLine();\n\t\t};\n\n\t\tvar insideEditorGetValue = function( current_edit_item_id ) {\n\t\t\tvar len = this.rows_widgets_array.length;\n\n\t\t\tvar result = [];\n\n\t\t\tfor ( var i = 0; i < len; i++ ) {\n\t\t\t\tvar row = this.rows_widgets_array[i];\n\t\t\t\tif ( row.start_date_stamp.getValue() ) {\n\t\t\t\t\tresult.push( row.start_date_stamp.getValue() );\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\n\t\tvar show = function() {\n\t\t\tranger_picker = $( Global.loadWidget( 'global/widgets/datepicker/TRangePicker.html' ) );\n\t\t\tvar tab_0_label = ranger_picker.find( 'a[ref=tab_range]' );\n\t\t\tvar tab_1_label = ranger_picker.find( 'a[ref=tab_date]' );\n\t\t\ttab_0_label.text( $.i18n._( 'Range' ) );\n\t\t\ttab_1_label.text( $.i18n._( 'Dates' ) );\n\t\t\trange_start_picker = ranger_picker.find( '#tab_range_content_div' ).find( '.start-picker' );\n\t\t\trange_end_picker = ranger_picker.find( '#tab_range_content_div' ).find( '.end-picker' );\n\t\t\tvar start_picker_label = ranger_picker.find( '#tab_range_content_div' ).find( '.start-picker-label' );\n\t\t\tvar end_picker_label = ranger_picker.find( '#tab_range_content_div' ).find( '.end-picker-label' );\n\t\t\tstart_picker_label.text( $.i18n._( 'Start' ) );\n\t\t\tend_picker_label.text( $.i18n._( 'End' ) );\n\t\t\tvar format = LocalCacheData.getLoginUserPreference().date_format_1;\n\n\t\t\t$.datepicker._gotoToday = function( id ) {\n\t\t\t\tvar target = $( id );\n\t\t\t\tvar inst = this._getInst( target[0] );\n\t\t\t\tif ( this._get( inst, 'gotoCurrent' ) && inst.currentDay ) {\n\t\t\t\t\tinst.selectedDay = inst.currentDay;\n\t\t\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n\t\t\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n\t\t\t\t} else {\n\t\t\t\t\tvar date = new Date();\n\t\t\t\t\tinst.selectedDay = date.getDate();\n\t\t\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\t\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\t\t\t\t// the below two lines are new\n\t\t\t\t\tthis._setDateDatepicker( target, date );\n\t\t\t\t\tthis._selectDate( id, this._getDateDatepicker( target ) );\n\t\t\t\t\t$( target ).datepicker( 'setDate', date );\n\t\t\t\t}\n\t\t\t\tthis._notifyChange( inst );\n\t\t\t\tthis._adjustDate( target );\n\t\t\t};\n\n\t\t\trange_start_picker.datepicker( {\n\t\t\t\tshowOtherMonths: true,\n\t\t\t\tselectOtherMonths: true,\n\t\t\t\tshowTime: false,\n\t\t\t\tdateFormat: format,\n\t\t\t\tshowHour: false,\n\t\t\t\tshowMinute: false,\n\t\t\t\tchangeMonth: true,\n\t\t\t\tchangeYear: true,\n\t\t\t\tshowButtonPanel: true,\n\t\t\t\tduration: '',\n\t\t\t\tshowAnim: '',\n\t\t\t\tyearRange: '-100:+10',\n\t\t\t\tshowOn: '',\n\t\t\t\tdayNamesMin: [\n\t\t\t\t\t$.i18n._( 'Sun' ), $.i18n._( 'Mon' ), $.i18n._( 'Tue' ),\n\t\t\t\t\t$.i18n._( 'Wed' ), $.i18n._( 'Thu' ), $.i18n._( 'Fri' ), $.i18n._( 'Sat' )\n\t\t\t\t],\n\t\t\t\tcurrentText: $.i18n._( 'Today' ),\n\t\t\t\tmonthNamesShort: [\n\t\t\t\t\t$.i18n._( 'Jan' ), $.i18n._( 'Feb' ),\n\t\t\t\t\t$.i18n._( 'Mar' ), $.i18n._( 'Apr' ), $.i18n._( 'May' ),\n\t\t\t\t\t$.i18n._( 'Jun' ), $.i18n._( 'Jul' ), $.i18n._( 'Aug' ),\n\t\t\t\t\t$.i18n._( 'Sep' ), $.i18n._( 'Oct' ), $.i18n._( 'Nov' ),\n\t\t\t\t\t$.i18n._( 'Dec' )\n\t\t\t\t],\n\t\t\t} );\n\n\t\t\trange_end_picker.datepicker( {\n\t\t\t\tshowOtherMonths: true,\n\t\t\t\tselectOtherMonths: true,\n\t\t\t\tshowTime: false,\n\t\t\t\tdateFormat: format,\n\t\t\t\tshowHour: false,\n\t\t\t\tshowMinute: false,\n\t\t\t\tchangeMonth: true,\n\t\t\t\tchangeYear: true,\n\t\t\t\tshowButtonPanel: true,\n\t\t\t\tduration: '',\n\t\t\t\tshowAnim: '',\n\t\t\t\tyearRange: '-100:+10',\n\t\t\t\tshowOn: '',\n\t\t\t\tdayNamesMin: [\n\t\t\t\t\t$.i18n._( 'Sun' ), $.i18n._( 'Mon' ), $.i18n._( 'Tue' ),\n\t\t\t\t\t$.i18n._( 'Wed' ), $.i18n._( 'Thu' ), $.i18n._( 'Fri' ), $.i18n._( 'Sat' )\n\t\t\t\t],\n\t\t\t\tcurrentText: $.i18n._( 'Today' ),\n\t\t\t\tmonthNamesShort: [\n\t\t\t\t\t$.i18n._( 'Jan' ), $.i18n._( 'Feb' ),\n\t\t\t\t\t$.i18n._( 'Mar' ), $.i18n._( 'Apr' ), $.i18n._( 'May' ),\n\t\t\t\t\t$.i18n._( 'Jun' ), $.i18n._( 'Jul' ), $.i18n._( 'Aug' ),\n\t\t\t\t\t$.i18n._( 'Sep' ), $.i18n._( 'Oct' ), $.i18n._( 'Nov' ),\n\t\t\t\t\t$.i18n._( 'Dec' )\n\t\t\t\t]\n\n\t\t\t} );\n\n\t\t\tvar close_icon = ranger_picker.find( '.close-icon' );\n\n\t\t\tclose_icon.click( function() {\n\t\t\t\t$this.close();\n\t\t\t} );\n\n\t\t\t//Add render in tab 1\n\n\t\t\tvar tab_date = ranger_picker.find( '#tab_date' );\n\n\t\t\tvar inside_editor_div = tab_date.find( '.inside-editor-div' );\n\t\t\tvar args = {\n\t\t\t\tstart_date_stamp: $.i18n._( 'Date' )\n\t\t\t};\n\n\t\t\teditor = Global.loadWidgetByName( FormItemType.INSIDE_EDITOR );\n\n\t\t\teditor = editor.InsideEditor( {\n\t\t\t\ttitle: '',\n\t\t\t\taddRow: insideEditorAddRow,\n\t\t\t\tgetValue: insideEditorGetValue,\n\t\t\t\tsetValue: insideEditorSetValue,\n\t\t\t\tremoveRow: insideEditorRemoveRow,\n\t\t\t\tparent_controller: this,\n\t\t\t\trender: 'global/widgets/datepicker/TRangeInsideEditorRender.html',\n\t\t\t\trender_args: args,\n\t\t\t\tapi: null,\n\t\t\t\trow_render: 'global/widgets/datepicker/TRangeInsideEditorRow.html'\n\t\t\t} );\n\n\t\t\tinside_editor_div.append( editor );\n\n\t\t\teditor.setValue();\n\n\t\t\t$( 'body' ).append( ranger_picker );\n\n\t\t\ttab_bars = $( ranger_picker.find( '.edit-view-tab-bar' ) );\n\n\t\t\ttab_bars = tab_bars.tabs( {\n\t\t\t\tactivate: function( e, ui ) {\n\n\t\t\t\t\tif ( !tab_bars || !tab_bars.is( ':visible' ) ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tranger_picker.mouseenter( function() {\n\t\t\t\tis_mouse_over = true;\n\t\t\t} );\n\n\t\t\tranger_picker.mouseleave( function() {\n\t\t\t\tis_mouse_over = false;\n\t\t\t} );\n\n\t\t\t//Set Position\n\n\t\t\tvar range_width = ranger_picker.width();\n\n\t\t\tif ( range_width + $( $this ).offset().left + 50 > Global.bodyWidth() ) {\n\t\t\t\tranger_picker.css( 'left', Global.bodyWidth() - range_width - 50 );\n\t\t\t} else {\n\n\t\t\t\tranger_picker.css( 'left', $( $this ).offset().left );\n\t\t\t}\n\n\t\t\tif ( $( $this ).offset().top + 25 + 300 < Global.bodyHeight() ) {\n\t\t\t\tranger_picker.css( 'top', $( $this ).offset().top + 25 );\n\t\t\t} else {\n\t\t\t\tranger_picker.css( 'top', Global.bodyHeight() - 300 );\n\t\t\t}\n\n\t\t\tLocalCacheData.openRangerPicker = $this;\n\n\t\t\tif ( result && ( typeof result == 'string' ) ) {\n\t\t\t\tvar result_array = result.split( ' - ' );\n\t\t\t\trange_start_picker.datepicker( 'setDate', result_array[0] );\n\t\t\t\trange_end_picker.datepicker( 'setDate', result_array[1] );\n\t\t\t} else if ( result && $.type( result ) === 'array' ) {\n\t\t\t\ttab_bars.tabs( 'option', 'active', 1 );\n\n\t\t\t\teditor.setValue( result );\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setPlaceHolder = function( val ) {\n\t\t\tdate_picker_input.attr( 'placeholder', val );\n\t\t};\n\n\t\tthis.each( function() {\n\n\t\t\tvar o = $.meta ? $.extend( {}, opts, $( this ).data() ) : opts;\n\n\t\t\tdate_picker = $( this );\n\n\t\t\tfield = o.field;\n\t\t\tif ( o.validation_field ) {\n\t\t\t\tvalidation_field = o.validation_field;\n\t\t\t}\n\t\t\ticon = $( this ).find( '.t-date-picker-icon' );\n\t\t\tdate_picker_input = $( this ).find( '.t-date-picker' );\n\t\t\ticon.attr( 'src', Global.getRealImagePath( 'images/cal.png' ) );\n\n\t\t\t$this.setPlaceHolder( LocalCacheData.loginUserPreference.date_format_display );\n\n\t\t\tdate_picker_input.change( function() {\n\t\t\t\tif ( check_box ) {\n\t\t\t\t\t$this.setCheckBox( true );\n\t\t\t\t}\n\t\t\t\tresult = [date_picker_input.val()];\n\t\t\t\t$this.trigger( 'formItemChange', [$this] );\n\t\t\t\t$this.autoResize();\n\t\t\t\treturn true;\n\t\t\t} );\n\n\t\t\ticon.bind( 'mouseup', function() { //Need to use 'mouseup' event as main.js binds 'mousedown' for closing when clicked off.\n\t\t\t\tif ( !enabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( !is_open ) {\n\t\t\t\t\tshow();\n\t\t\t\t\tis_open = true;\n\t\t\t\t} else {\n\t\t\t\t\t$this.close();\n\t\t\t\t\tis_open = false;\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tdate_picker_input.mouseover( function() {\n\n\t\t\t\tif ( enabled ) {\n\t\t\t\t\tif ( error_string && error_string.length > 0 ) {\n\t\t\t\t\t\t$this.showErrorTip( 20 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tdate_picker_input.mouseout( function() {\n\t\t\t\tif ( !$( $this ).is( ':focus' ) ) {\n\t\t\t\t\t$this.hideErrorTip();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t$this.autoResize();\n\n\t\t} );\n\n\t\treturn this;\n\n\t};\n\n\t$.fn.TRangePicker.defaults = {};\n\n} )( jQuery );\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTMwMC5qcyIsIm1hcHBpbmdzIjoiO0FBQUE7O0FBRUE7QUFDQSx5QkFBeUI7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07O0FBRU4sS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQixnQkFBZ0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLE1BQU07QUFDTjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxrQ0FBa0M7QUFDbEMsa0NBQWtDO0FBQ2xDLHFCQUFxQjs7QUFFckI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBLDhCQUE4QjtBQUM5QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsb0JBQW9CLFNBQVM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxnQ0FBZ0M7O0FBRWhDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUEsSUFBSTs7QUFFSjs7QUFFQTs7QUFFQTs7QUFFQSxFQUFFLEdBQUcsTUFBTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2ludGVyZmFjZS9odG1sNS9nbG9iYWwvd2lkZ2V0cy9kYXRlcGlja2VyL1RSYW5nZVBpY2tlci5qcz81NTU5Il0sInNvdXJjZXNDb250ZW50IjpbIiggZnVuY3Rpb24oICQgKSB7XG5cblx0JC5mbi5UUmFuZ2VQaWNrZXIgPSBmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0XHR2YXIgb3B0cyA9ICQuZXh0ZW5kKCB7fSwgJC5mbi5UUmFuZ2VQaWNrZXIuZGVmYXVsdHMsIG9wdGlvbnMgKTtcblx0XHQvL0dsb2JhbC5hZGRDc3MoICdnbG9iYWwvd2lkZ2V0cy9kYXRlcGlja2VyL1REYXRlUGlja2VyLmNzcycgKTtcblxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0dmFyIGZpZWxkO1xuXHRcdHZhciB2YWxpZGF0aW9uX2ZpZWxkO1xuXHRcdHZhciBkYXRlX3BpY2tlcl9pbnB1dDtcblx0XHR2YXIgaWNvbjtcblx0XHR2YXIgZXJyb3Jfc3RyaW5nID0gJyc7XG5cdFx0dmFyIGVycm9yX3RpcF9ib3g7XG5cdFx0dmFyIG1hc3NfZWRpdF9tb2RlID0gZmFsc2U7XG5cdFx0dmFyIGNoZWNrX2JveCA9IG51bGw7XG5cdFx0dmFyIGVuYWJsZWQgPSB0cnVlO1xuXHRcdHZhciBpc19vcGVuID0gZmFsc2U7XG5cdFx0dmFyIGZvY3VzX291dF90aW1lcjtcblx0XHR2YXIgaXNfbW91c2Vfb3ZlciA9IGZhbHNlO1xuXHRcdHZhciByYW5nZXJfcGlja2VyO1xuXG5cdFx0dmFyIHJhbmdlX3N0YXJ0X3BpY2tlcjtcblx0XHR2YXIgcmFuZ2VfZW5kX3BpY2tlcjtcblxuXHRcdHZhciByZXN1bHQ7XG5cblx0XHR2YXIgZWRpdG9yO1xuXG5cdFx0dmFyIGNhbl9ub3RfY2xvc2UgPSBmYWxzZTtcblxuXHRcdHZhciB0YWJfYmFycztcblxuXHRcdHZhciBkYXRlX3BpY2tlcjtcblxuXHRcdHZhciBkZWZhdWx0X3dpZHRoX2J5X2Zvcm1hdCA9IHtcblx0XHRcdCdERC1NTU0tWVknOiAxMDAsXG5cdFx0XHQnZGRkLCBNTU1NIEREIFlZWVknOiAxNzAsXG5cdFx0XHQnZGRkZCwgTU1NTSBERCBZWVlZJzogMTkwLFxuXHRcdFx0J0RELU1NTS1ZWVlZJzogMTEwLFxuXHRcdFx0J0RETU1NWVlZWSc6IDEwMCxcblx0XHRcdCdERC9NTS9ZWVlZJzogMTAwLFxuXHRcdFx0J0REL01NL1lZJzogMTAwLFxuXHRcdFx0J0RELU1NLVlZJzogMTAwLFxuXHRcdFx0J0RELU1NLVlZWVknOiAxMDAsXG5cdFx0XHQnTU0vREQvWVknOiAxMDAsXG5cdFx0XHQnTU0vREQvWVlZWSc6IDEwMCxcblx0XHRcdCdNTS1ERC1ZWSc6IDEwMCxcblx0XHRcdCdNTS1ERC1ZWVlZJzogMTAwLFxuXHRcdFx0J1lZWVktTU0tREQnOiAxMDAsXG5cdFx0XHQnTU1NLURELVlZJzogMTAwLFxuXHRcdFx0J01NTS1ERC1ZWVlZJzogMTEwLFxuXHRcdFx0J2RkZCwgTU1NIEREIFlZWVknOiAxNDAsXG5cdFx0XHQnZGRkLCBERC1NTU0tWVlZWSc6IDE0MCxcblx0XHRcdCdkZGQsIERETU1NWVlZWSc6IDEzMFxuXHRcdH07XG5cblx0XHR0aGlzLmdldEVuYWJsZWQgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBlbmFibGVkO1xuXHRcdH07XG5cblx0XHR0aGlzLnNldEVuYWJsZWQgPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0ZW5hYmxlZCA9IHZhbDtcblx0XHRcdGlmICggdmFsID09PSBmYWxzZSB8fCB2YWwgPT09ICcnICkge1xuXHRcdFx0XHQkdGhpcy5hdHRyKCAnZGlzYWJsZWQnLCAndHJ1ZScgKTtcblx0XHRcdFx0ZGF0ZV9waWNrZXJfaW5wdXQuYWRkQ2xhc3MoICd0LWRhdGUtcGlja2VyLXJlYWRvbmx5JyApO1xuXHRcdFx0XHRpY29uLmNzcyggJ2Rpc3BsYXknLCAnbm9uZScgKTtcbi8vXHRcdFx0XHRkYXRlX3BpY2tlcl9pbnB1dC5hdHRyKCAncmVhZG9ubHknLCAncmVhZG9ubHknIClcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdCR0aGlzLnJlbW92ZUF0dHIoICdkaXNhYmxlZCcgKTtcblx0XHRcdFx0ZGF0ZV9waWNrZXJfaW5wdXQucmVtb3ZlQ2xhc3MoICd0LWRhdGUtcGlja2VyLXJlYWRvbmx5JyApO1xuXHRcdFx0XHRpY29uLmNzcyggJ2Rpc3BsYXknLCAnaW5saW5lJyApO1xuLy9cdFx0XHRcdGRhdGVfcGlja2VyX2lucHV0LnJlbW92ZUF0dHIoICdyZWFkb25seScgKTtcblx0XHRcdH1cblxuXHRcdH07XG5cblx0XHR0aGlzLnNldENoZWNrQm94ID0gZnVuY3Rpb24oIHZhbCApIHtcblx0XHRcdGlmICggY2hlY2tfYm94ICkge1xuXHRcdFx0XHRjaGVja19ib3guY2hpbGRyZW4oKS5lcSggMCApWzBdLmNoZWNrZWQgPSB2YWw7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdHRoaXMuaXNDaGVja2VkID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoIGNoZWNrX2JveCApIHtcblx0XHRcdFx0aWYgKCBjaGVja19ib3guY2hpbGRyZW4oKS5lcSggMCApWzBdLmNoZWNrZWQgPT09IHRydWUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG5cblx0XHR0aGlzLnNldE1hc3NFZGl0TW9kZSA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0XHRtYXNzX2VkaXRfbW9kZSA9IHZhbDtcblxuXHRcdFx0aWYgKCBtYXNzX2VkaXRfbW9kZSApIHtcblx0XHRcdFx0Y2hlY2tfYm94ID0gJCggJyA8ZGl2IGNsYXNzPVwibWFzcy1lZGl0LWNoZWNrYm94LXdyYXBwZXJcIj48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJtYXNzLWVkaXQtY2hlY2tib3hcIj48L2lucHV0PicgK1xuXHRcdFx0XHRcdCc8bGFiZWwgZm9yPVwiY2hlY2tib3gtaW5wdXQtMVwiIGNsYXNzPVwiaW5wdXQtaGVscGVyIGlucHV0LWhlbHBlci0tY2hlY2tib3hcIj48L2xhYmVsPjwvZGl2PicgKTtcblx0XHRcdFx0Y2hlY2tfYm94Lmluc2VydEJlZm9yZSggJCggdGhpcyApICk7XG5cblx0XHRcdFx0Y2hlY2tfYm94LmNoYW5nZSggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0JHRoaXMudHJpZ2dlciggJ2Zvcm1JdGVtQ2hhbmdlJywgWyR0aGlzXSApO1xuXHRcdFx0XHR9ICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmICggY2hlY2tfYm94ICkge1xuXHRcdFx0XHRcdGNoZWNrX2JveC5yZW1vdmUoKTtcblx0XHRcdFx0XHRjaGVja19ib3ggPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9O1xuXG5cdFx0dGhpcy5zZXRFcnJvclN0eWxlID0gZnVuY3Rpb24oIGVyclN0ciwgc2hvdywgaXNXYXJuaW5nICkge1xuXHRcdFx0aWYgKCBpc1dhcm5pbmcgKSB7XG5cdFx0XHRcdGRhdGVfcGlja2VyX2lucHV0LmFkZENsYXNzKCAnd2FybmluZy10aXAnICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkYXRlX3BpY2tlcl9pbnB1dC5hZGRDbGFzcyggJ2Vycm9yLXRpcCcgKTtcblx0XHRcdH1cblx0XHRcdGVycm9yX3N0cmluZyA9IGVyclN0cjtcblxuXHRcdFx0aWYgKCBzaG93ICkge1xuXHRcdFx0XHR0aGlzLnNob3dFcnJvclRpcCgpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHR0aGlzLnNob3dFcnJvclRpcCA9IGZ1bmN0aW9uKCBzZWMgKSB7XG5cblx0XHRcdGlmICggIUdsb2JhbC5pc1NldCggc2VjICkgKSB7XG5cdFx0XHRcdHNlYyA9IDI7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggIWVycm9yX3RpcF9ib3ggKSB7XG5cdFx0XHRcdGVycm9yX3RpcF9ib3ggPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggV2lkZ2V0TmFtZXNEaWMuRVJST1JfVE9PTFRJUCApO1xuXHRcdFx0XHRlcnJvcl90aXBfYm94ID0gZXJyb3JfdGlwX2JveC5FcnJvclRpcEJveCgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBkYXRlX3BpY2tlcl9pbnB1dC5oYXNDbGFzcyggJ3dhcm5pbmctdGlwJyApICkge1xuXHRcdFx0XHRlcnJvcl90aXBfYm94LnNob3coIHRoaXMsIGVycm9yX3N0cmluZywgc2VjLCB0cnVlICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlcnJvcl90aXBfYm94LnNob3coIHRoaXMsIGVycm9yX3N0cmluZywgc2VjICk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdHRoaXMuaGlkZUVycm9yVGlwID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdGlmICggR2xvYmFsLmlzU2V0KCBlcnJvcl90aXBfYm94ICkgKSB7XG5cdFx0XHRcdGVycm9yX3RpcF9ib3gucmVtb3ZlKCk7XG5cdFx0XHR9XG5cblx0XHR9O1xuXG5cdFx0dGhpcy5jbGVhckVycm9yU3R5bGUgPSBmdW5jdGlvbigpIHtcblx0XHRcdGRhdGVfcGlja2VyX2lucHV0LnJlbW92ZUNsYXNzKCAnZXJyb3ItdGlwJyApO1xuXHRcdFx0ZGF0ZV9waWNrZXJfaW5wdXQucmVtb3ZlQ2xhc3MoICd3YXJuaW5nLXRpcCcgKTtcblx0XHRcdHRoaXMuaGlkZUVycm9yVGlwKCk7XG5cdFx0XHRlcnJvcl9zdHJpbmcgPSAnJztcblx0XHR9O1xuXG5cdFx0dGhpcy5nZXRGaWVsZCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIGZpZWxkO1xuXHRcdH07XG5cblx0XHR0aGlzLmdldFZhbGlkYXRpb25GaWVsZCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHZhbGlkYXRpb25fZmllbGQ7XG5cdFx0fTtcblxuXHRcdHRoaXMuZ2V0RGVmYXVsdEZvcm1hdFZhbHVlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgdmFsID0gZGF0ZV9waWNrZXJfaW5wdXQudmFsKCk7XG5cblx0XHRcdHZhbCA9IEdsb2JhbC5zdHJUb0RhdGUoIHZhbCApLmZvcm1hdCggJ1lZWVktTU0tREQnICk7XG5cblx0XHRcdHJldHVybiB2YWw7XG5cdFx0fTtcblxuXHRcdHRoaXMuZ2V0VmFsdWUgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fTtcblxuXHRcdHRoaXMuc2V0VmFsdWUgPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0aWYgKCAhdmFsICkge1xuXHRcdFx0XHR2YWwgPSAnJztcblx0XHRcdH1cblx0XHRcdGlmICggJC50eXBlKCB2YWwgKSAhPT0gJ2FycmF5JyApIHtcblx0XHRcdFx0cmVzdWx0ID0gW3ZhbF07XG5cdFx0XHRcdGRhdGVfcGlja2VyX2lucHV0LnZhbCggdmFsICk7XG5cdFx0XHRcdGRhdGVfcGlja2VyX2lucHV0LnJlbW92ZUF0dHIoICdyZWFkb25seScgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdCA9IHZhbDtcblx0XHRcdFx0aWYgKCB2YWwubGVuZ3RoID09IDEgKSB7XG5cdFx0XHRcdFx0ZGF0ZV9waWNrZXJfaW5wdXQudmFsKCB2YWxbMF0gKTtcblx0XHRcdFx0XHRkYXRlX3BpY2tlcl9pbnB1dC5yZW1vdmVBdHRyKCAncmVhZG9ubHknICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZGF0ZV9waWNrZXJfaW5wdXQudmFsKCB2YWwubGVuZ3RoICsgJyAnICsgJC5pMThuLl8oICdkYXRlcyBzZWxlY3RlZCcgKSApO1xuXHRcdFx0XHRcdGRhdGVfcGlja2VyX2lucHV0LmF0dHIoICdyZWFkb25seScsICdyZWFkb25seScgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5hdXRvUmVzaXplKCk7XG5cdFx0fTtcblxuXHRcdHRoaXMuYXV0b1Jlc2l6ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGNvbnRlbnRfd2lkdGgsIGV4YW1wbGVfd2lkdGg7XG5cdFx0XHRleGFtcGxlX3dpZHRoID0gR2xvYmFsLmNhbGN1bGF0ZVRleHRXaWR0aCggTG9jYWxDYWNoZURhdGEuZ2V0TG9naW5Vc2VyUHJlZmVyZW5jZSgpLmRhdGVfZm9ybWF0X2Rpc3BsYXkgKTtcblx0XHRcdGNvbnRlbnRfd2lkdGggPSBHbG9iYWwuY2FsY3VsYXRlVGV4dFdpZHRoKCBkYXRlX3BpY2tlcl9pbnB1dC52YWwoKSwge1xuXHRcdFx0XHRtaW5fd2lkdGg6IGV4YW1wbGVfd2lkdGgsXG5cdFx0XHRcdG1heF93aWR0aDogKCAoIGV4YW1wbGVfd2lkdGggKiAyICkgKyAxMDAgKSxcblx0XHRcdFx0cGFkZGluZzogMjhcblx0XHRcdH0gKTtcblx0XHRcdGRhdGVfcGlja2VyLndpZHRoKCBjb250ZW50X3dpZHRoICsgJ3B4JyApO1xuXHRcdH07XG5cblx0XHR0aGlzLmNsb3NlID0gZnVuY3Rpb24oKSB7XG5cblx0XHRcdGlmICggY2FuX25vdF9jbG9zZSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHR2YXIgdGFiX2luZGV4ID0gdGFiX2JhcnMudGFicyggJ29wdGlvbicsICdhY3RpdmUnICk7XG5cblx0XHRcdHJhbmdlcl9waWNrZXIucmVtb3ZlKCk7XG5cdFx0XHRpc19vcGVuID0gZmFsc2U7XG5cdFx0XHRMb2NhbENhY2hlRGF0YS5vcGVuUmFuZ2VyUGlja2VyID0gbnVsbDtcblx0XHRcdGlzX21vdXNlX292ZXIgPSBmYWxzZTsgLy9XaGVuIGNsb3NlIGZyb20gZXNjLCB0aGlzIG1heWJlIHRydWVcblxuXHRcdFx0aWYgKCB0YWJfaW5kZXggPT0gMCApIHtcblx0XHRcdFx0cmVzdWx0ID0gcmFuZ2Vfc3RhcnRfcGlja2VyLnZhbCgpICsgJyAtICcgKyByYW5nZV9lbmRfcGlja2VyLnZhbCgpO1xuXHRcdFx0XHRkYXRlX3BpY2tlcl9pbnB1dC52YWwoIHJlc3VsdCApO1xuXHRcdFx0XHRkYXRlX3BpY2tlcl9pbnB1dC5hdHRyKCAncmVhZG9ubHknLCAncmVhZG9ubHknICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXN1bHQgPSBlZGl0b3IuZ2V0VmFsdWUoKTtcblxuXHRcdFx0XHRpZiAoIHJlc3VsdC5sZW5ndGggPiAxICkge1xuXHRcdFx0XHRcdGRhdGVfcGlja2VyX2lucHV0LnZhbCggcmVzdWx0Lmxlbmd0aCArICcgJyArICQuaTE4bi5fKCAnZGF0ZXMgc2VsZWN0ZWQnICkgKTtcblx0XHRcdFx0XHRkYXRlX3BpY2tlcl9pbnB1dC5hdHRyKCAncmVhZG9ubHknLCAncmVhZG9ubHknICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZGF0ZV9waWNrZXJfaW5wdXQudmFsKCByZXN1bHRbMF0gKTtcblx0XHRcdFx0XHRkYXRlX3BpY2tlcl9pbnB1dC5yZW1vdmVBdHRyKCAncmVhZG9ubHknICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmF1dG9SZXNpemUoKTtcblxuXHRcdFx0c2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdCR0aGlzLnRyaWdnZXIoICdmb3JtSXRlbUNoYW5nZScsIFskdGhpc10gKTtcblx0XHRcdH0sIDEwMCApO1xuLy9cblxuXHRcdH07XG5cblx0XHR0aGlzLmdldElzTW91c2VPdmVyID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gaXNfbW91c2Vfb3Zlcjtcblx0XHR9O1xuXG5cdFx0dmFyIGluc2lkZUVkaXRvclNldFZhbHVlID0gZnVuY3Rpb24oIHZhbCApIHtcblxuXHRcdFx0dmFyIGxlbiA9IHZhbCA/IHZhbC5sZW5ndGggOiAwO1xuXHRcdFx0dGhpcy5yZW1vdmVBbGxSb3dzKCk7XG5cblx0XHRcdGlmICggbGVuID4gMCApIHtcblx0XHRcdFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRcdGlmICggR2xvYmFsLmlzU2V0KCB2YWxbaV0gKSApIHtcblx0XHRcdFx0XHRcdHZhciByb3cgPSB2YWxbaV07XG5cdFx0XHRcdFx0XHR0aGlzLmFkZFJvdyggcm93ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmFkZFJvdyggJycgKTtcblx0XHRcdH1cblxuXHRcdH07XG5cblx0XHQvLyBDb21tZW50ZWQgb3V0IGR1ZSB0byBpdHMgdXNlIG9mIHRoaXMuX3N1cGVyIChubyBsb25nZXIgdmFsaWQgaW4gRVM2IHN5bnRheCkgYW5kIGl0IGFwcGVhcnMgbm90IHRvIGJlIHVzZWQuXG5cdFx0Ly8gdmFyIHNldEVkaXRWaWV3RGF0YURvbmUgPSBmdW5jdGlvbigpIHtcblx0XHQvLyBcdHRoaXMuX3N1cGVyKCAnc2V0RWRpdFZpZXdEYXRhRG9uZScgKTtcblx0XHQvLyBcdHRoaXMuaW5pdEluc2lkZUVkaXRvckRhdGEoKTtcblx0XHQvL1xuXHRcdC8vIH07XG5cblx0XHR2YXIgaW5pdEluc2lkZUVkaXRvckRhdGEgPSBmdW5jdGlvbigpIHtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cblx0XHRcdHZhciBhcmdzID0ge307XG5cdFx0XHRhcmdzLmZpbHRlcl9kYXRhID0ge307XG5cdFx0XHRhcmdzLmZpbHRlcl9kYXRhLmhpZXJhcmNoeV9jb250cm9sX2lkID0gdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmlkID8gdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmlkIDogKCB0aGlzLmNvcGllZF9yZWNvcmRfaWQgPyB0aGlzLmNvcGllZF9yZWNvcmRfaWQgOiAnJyApO1xuXG5cdFx0XHRpZiAoICggIXRoaXMuY3VycmVudF9lZGl0X3JlY29yZCB8fCAhdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmlkICkgJiYgIXRoaXMuY29waWVkX3JlY29yZF9pZCApIHtcblx0XHRcdFx0dGhpcy5lZGl0b3IuYWRkUm93KCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmhpZXJhcmNoeV9sZXZlbF9hcGkuZ2V0SGllcmFyY2h5TGV2ZWwoIGFyZ3MsIHRydWUsIHtcblx0XHRcdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlcyApIHtcblx0XHRcdFx0XHRcdGlmICggISR0aGlzLmVkaXRfdmlldyApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSByZXMuZ2V0UmVzdWx0KCk7XG5cblx0XHRcdFx0XHRcdCR0aGlzLmVkaXRvci5zZXRWYWx1ZSggZGF0YSApO1xuXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cblx0XHR9O1xuXG5cdFx0dmFyIGluc2lkZUVkaXRvclJlbW92ZVJvdyA9IGZ1bmN0aW9uKCByb3cgKSB7XG5cdFx0XHR2YXIgaW5kZXggPSByb3dbMF0ucm93SW5kZXggLSAxO1xuXHRcdFx0cm93LnJlbW92ZSgpO1xuXHRcdFx0dGhpcy5yb3dzX3dpZGdldHNfYXJyYXkuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0dGhpcy5yZW1vdmVMYXN0Um93TGluZSgpO1xuXHRcdH07XG5cblx0XHR2YXIgaW5zaWRlRWRpdG9yQWRkUm93ID0gZnVuY3Rpb24oIGRhdGEgKSB7XG5cdFx0XHRpZiAoICFkYXRhICkge1xuXHRcdFx0XHRkYXRhID0gJyc7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggdGhpcy5yb3dzX3dpZGdldHNfYXJyYXkubGVuZ3RoID4gMCAmJiAhZGF0YSApIHtcblx0XHRcdFx0dmFyIGN1cnJlbnRfZGF0YSA9IHRoaXMucm93c193aWRnZXRzX2FycmF5W3RoaXMucm93c193aWRnZXRzX2FycmF5Lmxlbmd0aCAtIDFdLnN0YXJ0X2RhdGVfc3RhbXAuZ2V0VmFsdWUoKTtcblxuXHRcdFx0XHRpZiAoICFjdXJyZW50X2RhdGEgKSB7XG5cdFx0XHRcdFx0Y3VycmVudF9kYXRhID0gbmV3IERhdGUoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjdXJyZW50X2RhdGEgPSBHbG9iYWwuc3RyVG9EYXRlKCBjdXJyZW50X2RhdGEgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGN1cnJlbnRfZGF0YSA9IG5ldyBEYXRlKCBuZXcgRGF0ZSggY3VycmVudF9kYXRhLmdldFRpbWUoKSApLnNldERhdGUoIGN1cnJlbnRfZGF0YS5nZXREYXRlKCkgKyAxICkgKTtcblx0XHRcdFx0ZGF0YSA9IGN1cnJlbnRfZGF0YS5mb3JtYXQoKTtcblxuXHRcdFx0fSBlbHNlIGlmICggdGhpcy5yb3dzX3dpZGdldHNfYXJyYXkubGVuZ3RoID09PSAwICYmICFkYXRhICkge1xuXHRcdFx0XHRkYXRhID0gbmV3IERhdGUoKS5mb3JtYXQoKTtcblx0XHRcdH1cblxuXHRcdFx0dmFyIHJvdyA9IHRoaXMuZ2V0Um93UmVuZGVyKCk7IC8vR2V0IFJvdyByZW5kZXJcblx0XHRcdHZhciByZW5kZXIgPSB0aGlzLmdldFJlbmRlcigpOyAvL2dldCByZW5kZXIsIHNob3VsZCBiZSBhIHRhYmxlXG5cdFx0XHR2YXIgd2lkZ2V0cyA9IHt9OyAvL1NhdmUgZWFjaCByb3cncyB3aWRnZXRzXG5cblx0XHRcdC8vQnVpbGQgcm93IHdpZGdldHNcblxuXHRcdFx0Ly9EYXRlXG5cdFx0XHR2YXIgZm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5EQVRFX1BJQ0tFUiApO1xuXHRcdFx0Zm9ybV9pdGVtX2lucHV0LlREYXRlUGlja2VyKCB7XG5cdFx0XHRcdGZpZWxkOiAnc3RhcnRfZGF0ZV9zdGFtcCcsXG5cdFx0XHRcdGJlZm9yZVNob3c6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGNhbl9ub3RfY2xvc2UgPSB0cnVlO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRvbkNsb3NlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRjYW5fbm90X2Nsb3NlID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblxuXHRcdFx0JCggJy5yYW5nZXItcGlja2VyLWRhdGVzLXdpZHRoLXRyJyApLndpZHRoKCBmb3JtX2l0ZW1faW5wdXQud2lkdGgoKSArIDgwICk7XG5cblx0XHRcdGZvcm1faXRlbV9pbnB1dC5zZXRWYWx1ZSggZGF0YSApO1xuXHRcdFx0d2lkZ2V0c1tmb3JtX2l0ZW1faW5wdXQuZ2V0RmllbGQoKV0gPSBmb3JtX2l0ZW1faW5wdXQ7XG5cdFx0XHRyb3cuY2hpbGRyZW4oKS5lcSggMCApLmFwcGVuZCggZm9ybV9pdGVtX2lucHV0ICk7XG5cblx0XHRcdCQoIHJlbmRlciApLmFwcGVuZCggcm93ICk7XG5cblx0XHRcdHRoaXMucm93c193aWRnZXRzX2FycmF5LnB1c2goIHdpZGdldHMgKTtcblxuXHRcdFx0dGhpcy5hZGRJY29uc0V2ZW50KCByb3cgKTsgLy9CaW5kIGV2ZW50IHRvIGFkZCBhbmQgbWludXMgaWNvblxuXHRcdFx0dGhpcy5yZW1vdmVMYXN0Um93TGluZSgpO1xuXHRcdH07XG5cblx0XHR2YXIgaW5zaWRlRWRpdG9yR2V0VmFsdWUgPSBmdW5jdGlvbiggY3VycmVudF9lZGl0X2l0ZW1faWQgKSB7XG5cdFx0XHR2YXIgbGVuID0gdGhpcy5yb3dzX3dpZGdldHNfYXJyYXkubGVuZ3RoO1xuXG5cdFx0XHR2YXIgcmVzdWx0ID0gW107XG5cblx0XHRcdGZvciAoIHZhciBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHR2YXIgcm93ID0gdGhpcy5yb3dzX3dpZGdldHNfYXJyYXlbaV07XG5cdFx0XHRcdGlmICggcm93LnN0YXJ0X2RhdGVfc3RhbXAuZ2V0VmFsdWUoKSApIHtcblx0XHRcdFx0XHRyZXN1bHQucHVzaCggcm93LnN0YXJ0X2RhdGVfc3RhbXAuZ2V0VmFsdWUoKSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9O1xuXG5cdFx0dmFyIHNob3cgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJhbmdlcl9waWNrZXIgPSAkKCBHbG9iYWwubG9hZFdpZGdldCggJ2dsb2JhbC93aWRnZXRzL2RhdGVwaWNrZXIvVFJhbmdlUGlja2VyLmh0bWwnICkgKTtcblx0XHRcdHZhciB0YWJfMF9sYWJlbCA9IHJhbmdlcl9waWNrZXIuZmluZCggJ2FbcmVmPXRhYl9yYW5nZV0nICk7XG5cdFx0XHR2YXIgdGFiXzFfbGFiZWwgPSByYW5nZXJfcGlja2VyLmZpbmQoICdhW3JlZj10YWJfZGF0ZV0nICk7XG5cdFx0XHR0YWJfMF9sYWJlbC50ZXh0KCAkLmkxOG4uXyggJ1JhbmdlJyApICk7XG5cdFx0XHR0YWJfMV9sYWJlbC50ZXh0KCAkLmkxOG4uXyggJ0RhdGVzJyApICk7XG5cdFx0XHRyYW5nZV9zdGFydF9waWNrZXIgPSByYW5nZXJfcGlja2VyLmZpbmQoICcjdGFiX3JhbmdlX2NvbnRlbnRfZGl2JyApLmZpbmQoICcuc3RhcnQtcGlja2VyJyApO1xuXHRcdFx0cmFuZ2VfZW5kX3BpY2tlciA9IHJhbmdlcl9waWNrZXIuZmluZCggJyN0YWJfcmFuZ2VfY29udGVudF9kaXYnICkuZmluZCggJy5lbmQtcGlja2VyJyApO1xuXHRcdFx0dmFyIHN0YXJ0X3BpY2tlcl9sYWJlbCA9IHJhbmdlcl9waWNrZXIuZmluZCggJyN0YWJfcmFuZ2VfY29udGVudF9kaXYnICkuZmluZCggJy5zdGFydC1waWNrZXItbGFiZWwnICk7XG5cdFx0XHR2YXIgZW5kX3BpY2tlcl9sYWJlbCA9IHJhbmdlcl9waWNrZXIuZmluZCggJyN0YWJfcmFuZ2VfY29udGVudF9kaXYnICkuZmluZCggJy5lbmQtcGlja2VyLWxhYmVsJyApO1xuXHRcdFx0c3RhcnRfcGlja2VyX2xhYmVsLnRleHQoICQuaTE4bi5fKCAnU3RhcnQnICkgKTtcblx0XHRcdGVuZF9waWNrZXJfbGFiZWwudGV4dCggJC5pMThuLl8oICdFbmQnICkgKTtcblx0XHRcdHZhciBmb3JtYXQgPSBMb2NhbENhY2hlRGF0YS5nZXRMb2dpblVzZXJQcmVmZXJlbmNlKCkuZGF0ZV9mb3JtYXRfMTtcblxuXHRcdFx0JC5kYXRlcGlja2VyLl9nb3RvVG9kYXkgPSBmdW5jdGlvbiggaWQgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSAkKCBpZCApO1xuXHRcdFx0XHR2YXIgaW5zdCA9IHRoaXMuX2dldEluc3QoIHRhcmdldFswXSApO1xuXHRcdFx0XHRpZiAoIHRoaXMuX2dldCggaW5zdCwgJ2dvdG9DdXJyZW50JyApICYmIGluc3QuY3VycmVudERheSApIHtcblx0XHRcdFx0XHRpbnN0LnNlbGVjdGVkRGF5ID0gaW5zdC5jdXJyZW50RGF5O1xuXHRcdFx0XHRcdGluc3QuZHJhd01vbnRoID0gaW5zdC5zZWxlY3RlZE1vbnRoID0gaW5zdC5jdXJyZW50TW9udGg7XG5cdFx0XHRcdFx0aW5zdC5kcmF3WWVhciA9IGluc3Quc2VsZWN0ZWRZZWFyID0gaW5zdC5jdXJyZW50WWVhcjtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHRcdFx0aW5zdC5zZWxlY3RlZERheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuXHRcdFx0XHRcdGluc3QuZHJhd01vbnRoID0gaW5zdC5zZWxlY3RlZE1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuXHRcdFx0XHRcdGluc3QuZHJhd1llYXIgPSBpbnN0LnNlbGVjdGVkWWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcblx0XHRcdFx0XHQvLyB0aGUgYmVsb3cgdHdvIGxpbmVzIGFyZSBuZXdcblx0XHRcdFx0XHR0aGlzLl9zZXREYXRlRGF0ZXBpY2tlciggdGFyZ2V0LCBkYXRlICk7XG5cdFx0XHRcdFx0dGhpcy5fc2VsZWN0RGF0ZSggaWQsIHRoaXMuX2dldERhdGVEYXRlcGlja2VyKCB0YXJnZXQgKSApO1xuXHRcdFx0XHRcdCQoIHRhcmdldCApLmRhdGVwaWNrZXIoICdzZXREYXRlJywgZGF0ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX25vdGlmeUNoYW5nZSggaW5zdCApO1xuXHRcdFx0XHR0aGlzLl9hZGp1c3REYXRlKCB0YXJnZXQgKTtcblx0XHRcdH07XG5cblx0XHRcdHJhbmdlX3N0YXJ0X3BpY2tlci5kYXRlcGlja2VyKCB7XG5cdFx0XHRcdHNob3dPdGhlck1vbnRoczogdHJ1ZSxcblx0XHRcdFx0c2VsZWN0T3RoZXJNb250aHM6IHRydWUsXG5cdFx0XHRcdHNob3dUaW1lOiBmYWxzZSxcblx0XHRcdFx0ZGF0ZUZvcm1hdDogZm9ybWF0LFxuXHRcdFx0XHRzaG93SG91cjogZmFsc2UsXG5cdFx0XHRcdHNob3dNaW51dGU6IGZhbHNlLFxuXHRcdFx0XHRjaGFuZ2VNb250aDogdHJ1ZSxcblx0XHRcdFx0Y2hhbmdlWWVhcjogdHJ1ZSxcblx0XHRcdFx0c2hvd0J1dHRvblBhbmVsOiB0cnVlLFxuXHRcdFx0XHRkdXJhdGlvbjogJycsXG5cdFx0XHRcdHNob3dBbmltOiAnJyxcblx0XHRcdFx0eWVhclJhbmdlOiAnLTEwMDorMTAnLFxuXHRcdFx0XHRzaG93T246ICcnLFxuXHRcdFx0XHRkYXlOYW1lc01pbjogW1xuXHRcdFx0XHRcdCQuaTE4bi5fKCAnU3VuJyApLCAkLmkxOG4uXyggJ01vbicgKSwgJC5pMThuLl8oICdUdWUnICksXG5cdFx0XHRcdFx0JC5pMThuLl8oICdXZWQnICksICQuaTE4bi5fKCAnVGh1JyApLCAkLmkxOG4uXyggJ0ZyaScgKSwgJC5pMThuLl8oICdTYXQnIClcblx0XHRcdFx0XSxcblx0XHRcdFx0Y3VycmVudFRleHQ6ICQuaTE4bi5fKCAnVG9kYXknICksXG5cdFx0XHRcdG1vbnRoTmFtZXNTaG9ydDogW1xuXHRcdFx0XHRcdCQuaTE4bi5fKCAnSmFuJyApLCAkLmkxOG4uXyggJ0ZlYicgKSxcblx0XHRcdFx0XHQkLmkxOG4uXyggJ01hcicgKSwgJC5pMThuLl8oICdBcHInICksICQuaTE4bi5fKCAnTWF5JyApLFxuXHRcdFx0XHRcdCQuaTE4bi5fKCAnSnVuJyApLCAkLmkxOG4uXyggJ0p1bCcgKSwgJC5pMThuLl8oICdBdWcnICksXG5cdFx0XHRcdFx0JC5pMThuLl8oICdTZXAnICksICQuaTE4bi5fKCAnT2N0JyApLCAkLmkxOG4uXyggJ05vdicgKSxcblx0XHRcdFx0XHQkLmkxOG4uXyggJ0RlYycgKVxuXHRcdFx0XHRdLFxuXHRcdFx0fSApO1xuXG5cdFx0XHRyYW5nZV9lbmRfcGlja2VyLmRhdGVwaWNrZXIoIHtcblx0XHRcdFx0c2hvd090aGVyTW9udGhzOiB0cnVlLFxuXHRcdFx0XHRzZWxlY3RPdGhlck1vbnRoczogdHJ1ZSxcblx0XHRcdFx0c2hvd1RpbWU6IGZhbHNlLFxuXHRcdFx0XHRkYXRlRm9ybWF0OiBmb3JtYXQsXG5cdFx0XHRcdHNob3dIb3VyOiBmYWxzZSxcblx0XHRcdFx0c2hvd01pbnV0ZTogZmFsc2UsXG5cdFx0XHRcdGNoYW5nZU1vbnRoOiB0cnVlLFxuXHRcdFx0XHRjaGFuZ2VZZWFyOiB0cnVlLFxuXHRcdFx0XHRzaG93QnV0dG9uUGFuZWw6IHRydWUsXG5cdFx0XHRcdGR1cmF0aW9uOiAnJyxcblx0XHRcdFx0c2hvd0FuaW06ICcnLFxuXHRcdFx0XHR5ZWFyUmFuZ2U6ICctMTAwOisxMCcsXG5cdFx0XHRcdHNob3dPbjogJycsXG5cdFx0XHRcdGRheU5hbWVzTWluOiBbXG5cdFx0XHRcdFx0JC5pMThuLl8oICdTdW4nICksICQuaTE4bi5fKCAnTW9uJyApLCAkLmkxOG4uXyggJ1R1ZScgKSxcblx0XHRcdFx0XHQkLmkxOG4uXyggJ1dlZCcgKSwgJC5pMThuLl8oICdUaHUnICksICQuaTE4bi5fKCAnRnJpJyApLCAkLmkxOG4uXyggJ1NhdCcgKVxuXHRcdFx0XHRdLFxuXHRcdFx0XHRjdXJyZW50VGV4dDogJC5pMThuLl8oICdUb2RheScgKSxcblx0XHRcdFx0bW9udGhOYW1lc1Nob3J0OiBbXG5cdFx0XHRcdFx0JC5pMThuLl8oICdKYW4nICksICQuaTE4bi5fKCAnRmViJyApLFxuXHRcdFx0XHRcdCQuaTE4bi5fKCAnTWFyJyApLCAkLmkxOG4uXyggJ0FwcicgKSwgJC5pMThuLl8oICdNYXknICksXG5cdFx0XHRcdFx0JC5pMThuLl8oICdKdW4nICksICQuaTE4bi5fKCAnSnVsJyApLCAkLmkxOG4uXyggJ0F1ZycgKSxcblx0XHRcdFx0XHQkLmkxOG4uXyggJ1NlcCcgKSwgJC5pMThuLl8oICdPY3QnICksICQuaTE4bi5fKCAnTm92JyApLFxuXHRcdFx0XHRcdCQuaTE4bi5fKCAnRGVjJyApXG5cdFx0XHRcdF1cblxuXHRcdFx0fSApO1xuXG5cdFx0XHR2YXIgY2xvc2VfaWNvbiA9IHJhbmdlcl9waWNrZXIuZmluZCggJy5jbG9zZS1pY29uJyApO1xuXG5cdFx0XHRjbG9zZV9pY29uLmNsaWNrKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0JHRoaXMuY2xvc2UoKTtcblx0XHRcdH0gKTtcblxuXHRcdFx0Ly9BZGQgcmVuZGVyIGluIHRhYiAxXG5cblx0XHRcdHZhciB0YWJfZGF0ZSA9IHJhbmdlcl9waWNrZXIuZmluZCggJyN0YWJfZGF0ZScgKTtcblxuXHRcdFx0dmFyIGluc2lkZV9lZGl0b3JfZGl2ID0gdGFiX2RhdGUuZmluZCggJy5pbnNpZGUtZWRpdG9yLWRpdicgKTtcblx0XHRcdHZhciBhcmdzID0ge1xuXHRcdFx0XHRzdGFydF9kYXRlX3N0YW1wOiAkLmkxOG4uXyggJ0RhdGUnIClcblx0XHRcdH07XG5cblx0XHRcdGVkaXRvciA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuSU5TSURFX0VESVRPUiApO1xuXG5cdFx0XHRlZGl0b3IgPSBlZGl0b3IuSW5zaWRlRWRpdG9yKCB7XG5cdFx0XHRcdHRpdGxlOiAnJyxcblx0XHRcdFx0YWRkUm93OiBpbnNpZGVFZGl0b3JBZGRSb3csXG5cdFx0XHRcdGdldFZhbHVlOiBpbnNpZGVFZGl0b3JHZXRWYWx1ZSxcblx0XHRcdFx0c2V0VmFsdWU6IGluc2lkZUVkaXRvclNldFZhbHVlLFxuXHRcdFx0XHRyZW1vdmVSb3c6IGluc2lkZUVkaXRvclJlbW92ZVJvdyxcblx0XHRcdFx0cGFyZW50X2NvbnRyb2xsZXI6IHRoaXMsXG5cdFx0XHRcdHJlbmRlcjogJ2dsb2JhbC93aWRnZXRzL2RhdGVwaWNrZXIvVFJhbmdlSW5zaWRlRWRpdG9yUmVuZGVyLmh0bWwnLFxuXHRcdFx0XHRyZW5kZXJfYXJnczogYXJncyxcblx0XHRcdFx0YXBpOiBudWxsLFxuXHRcdFx0XHRyb3dfcmVuZGVyOiAnZ2xvYmFsL3dpZGdldHMvZGF0ZXBpY2tlci9UUmFuZ2VJbnNpZGVFZGl0b3JSb3cuaHRtbCdcblx0XHRcdH0gKTtcblxuXHRcdFx0aW5zaWRlX2VkaXRvcl9kaXYuYXBwZW5kKCBlZGl0b3IgKTtcblxuXHRcdFx0ZWRpdG9yLnNldFZhbHVlKCk7XG5cblx0XHRcdCQoICdib2R5JyApLmFwcGVuZCggcmFuZ2VyX3BpY2tlciApO1xuXG5cdFx0XHR0YWJfYmFycyA9ICQoIHJhbmdlcl9waWNrZXIuZmluZCggJy5lZGl0LXZpZXctdGFiLWJhcicgKSApO1xuXG5cdFx0XHR0YWJfYmFycyA9IHRhYl9iYXJzLnRhYnMoIHtcblx0XHRcdFx0YWN0aXZhdGU6IGZ1bmN0aW9uKCBlLCB1aSApIHtcblxuXHRcdFx0XHRcdGlmICggIXRhYl9iYXJzIHx8ICF0YWJfYmFycy5pcyggJzp2aXNpYmxlJyApICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cblx0XHRcdHJhbmdlcl9waWNrZXIubW91c2VlbnRlciggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlzX21vdXNlX292ZXIgPSB0cnVlO1xuXHRcdFx0fSApO1xuXG5cdFx0XHRyYW5nZXJfcGlja2VyLm1vdXNlbGVhdmUoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpc19tb3VzZV9vdmVyID0gZmFsc2U7XG5cdFx0XHR9ICk7XG5cblx0XHRcdC8vU2V0IFBvc2l0aW9uXG5cblx0XHRcdHZhciByYW5nZV93aWR0aCA9IHJhbmdlcl9waWNrZXIud2lkdGgoKTtcblxuXHRcdFx0aWYgKCByYW5nZV93aWR0aCArICQoICR0aGlzICkub2Zmc2V0KCkubGVmdCArIDUwID4gR2xvYmFsLmJvZHlXaWR0aCgpICkge1xuXHRcdFx0XHRyYW5nZXJfcGlja2VyLmNzcyggJ2xlZnQnLCBHbG9iYWwuYm9keVdpZHRoKCkgLSByYW5nZV93aWR0aCAtIDUwICk7XG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdHJhbmdlcl9waWNrZXIuY3NzKCAnbGVmdCcsICQoICR0aGlzICkub2Zmc2V0KCkubGVmdCApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoICQoICR0aGlzICkub2Zmc2V0KCkudG9wICsgMjUgKyAzMDAgPCBHbG9iYWwuYm9keUhlaWdodCgpICkge1xuXHRcdFx0XHRyYW5nZXJfcGlja2VyLmNzcyggJ3RvcCcsICQoICR0aGlzICkub2Zmc2V0KCkudG9wICsgMjUgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJhbmdlcl9waWNrZXIuY3NzKCAndG9wJywgR2xvYmFsLmJvZHlIZWlnaHQoKSAtIDMwMCApO1xuXHRcdFx0fVxuXG5cdFx0XHRMb2NhbENhY2hlRGF0YS5vcGVuUmFuZ2VyUGlja2VyID0gJHRoaXM7XG5cblx0XHRcdGlmICggcmVzdWx0ICYmICggdHlwZW9mIHJlc3VsdCA9PSAnc3RyaW5nJyApICkge1xuXHRcdFx0XHR2YXIgcmVzdWx0X2FycmF5ID0gcmVzdWx0LnNwbGl0KCAnIC0gJyApO1xuXHRcdFx0XHRyYW5nZV9zdGFydF9waWNrZXIuZGF0ZXBpY2tlciggJ3NldERhdGUnLCByZXN1bHRfYXJyYXlbMF0gKTtcblx0XHRcdFx0cmFuZ2VfZW5kX3BpY2tlci5kYXRlcGlja2VyKCAnc2V0RGF0ZScsIHJlc3VsdF9hcnJheVsxXSApO1xuXHRcdFx0fSBlbHNlIGlmICggcmVzdWx0ICYmICQudHlwZSggcmVzdWx0ICkgPT09ICdhcnJheScgKSB7XG5cdFx0XHRcdHRhYl9iYXJzLnRhYnMoICdvcHRpb24nLCAnYWN0aXZlJywgMSApO1xuXG5cdFx0XHRcdGVkaXRvci5zZXRWYWx1ZSggcmVzdWx0ICk7XG5cdFx0XHR9XG5cblx0XHR9O1xuXG5cdFx0dGhpcy5zZXRQbGFjZUhvbGRlciA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0XHRkYXRlX3BpY2tlcl9pbnB1dC5hdHRyKCAncGxhY2Vob2xkZXInLCB2YWwgKTtcblx0XHR9O1xuXG5cdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0dmFyIG8gPSAkLm1ldGEgPyAkLmV4dGVuZCgge30sIG9wdHMsICQoIHRoaXMgKS5kYXRhKCkgKSA6IG9wdHM7XG5cblx0XHRcdGRhdGVfcGlja2VyID0gJCggdGhpcyApO1xuXG5cdFx0XHRmaWVsZCA9IG8uZmllbGQ7XG5cdFx0XHRpZiAoIG8udmFsaWRhdGlvbl9maWVsZCApIHtcblx0XHRcdFx0dmFsaWRhdGlvbl9maWVsZCA9IG8udmFsaWRhdGlvbl9maWVsZDtcblx0XHRcdH1cblx0XHRcdGljb24gPSAkKCB0aGlzICkuZmluZCggJy50LWRhdGUtcGlja2VyLWljb24nICk7XG5cdFx0XHRkYXRlX3BpY2tlcl9pbnB1dCA9ICQoIHRoaXMgKS5maW5kKCAnLnQtZGF0ZS1waWNrZXInICk7XG5cdFx0XHRpY29uLmF0dHIoICdzcmMnLCBHbG9iYWwuZ2V0UmVhbEltYWdlUGF0aCggJ2ltYWdlcy9jYWwucG5nJyApICk7XG5cblx0XHRcdCR0aGlzLnNldFBsYWNlSG9sZGVyKCBMb2NhbENhY2hlRGF0YS5sb2dpblVzZXJQcmVmZXJlbmNlLmRhdGVfZm9ybWF0X2Rpc3BsYXkgKTtcblxuXHRcdFx0ZGF0ZV9waWNrZXJfaW5wdXQuY2hhbmdlKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCBjaGVja19ib3ggKSB7XG5cdFx0XHRcdFx0JHRoaXMuc2V0Q2hlY2tCb3goIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXN1bHQgPSBbZGF0ZV9waWNrZXJfaW5wdXQudmFsKCldO1xuXHRcdFx0XHQkdGhpcy50cmlnZ2VyKCAnZm9ybUl0ZW1DaGFuZ2UnLCBbJHRoaXNdICk7XG5cdFx0XHRcdCR0aGlzLmF1dG9SZXNpemUoKTtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9ICk7XG5cblx0XHRcdGljb24uYmluZCggJ21vdXNldXAnLCBmdW5jdGlvbigpIHsgLy9OZWVkIHRvIHVzZSAnbW91c2V1cCcgZXZlbnQgYXMgbWFpbi5qcyBiaW5kcyAnbW91c2Vkb3duJyBmb3IgY2xvc2luZyB3aGVuIGNsaWNrZWQgb2ZmLlxuXHRcdFx0XHRpZiAoICFlbmFibGVkICkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICggIWlzX29wZW4gKSB7XG5cdFx0XHRcdFx0c2hvdygpO1xuXHRcdFx0XHRcdGlzX29wZW4gPSB0cnVlO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdCR0aGlzLmNsb3NlKCk7XG5cdFx0XHRcdFx0aXNfb3BlbiA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cblx0XHRcdH0gKTtcblxuXHRcdFx0ZGF0ZV9waWNrZXJfaW5wdXQubW91c2VvdmVyKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRpZiAoIGVuYWJsZWQgKSB7XG5cdFx0XHRcdFx0aWYgKCBlcnJvcl9zdHJpbmcgJiYgZXJyb3Jfc3RyaW5nLmxlbmd0aCA+IDAgKSB7XG5cdFx0XHRcdFx0XHQkdGhpcy5zaG93RXJyb3JUaXAoIDIwICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdH0gKTtcblxuXHRcdFx0ZGF0ZV9waWNrZXJfaW5wdXQubW91c2VvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICEkKCAkdGhpcyApLmlzKCAnOmZvY3VzJyApICkge1xuXHRcdFx0XHRcdCR0aGlzLmhpZGVFcnJvclRpcCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cblx0XHRcdCR0aGlzLmF1dG9SZXNpemUoKTtcblxuXHRcdH0gKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH07XG5cblx0JC5mbi5UUmFuZ2VQaWNrZXIuZGVmYXVsdHMgPSB7fTtcblxufSApKCBqUXVlcnkgKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///9300\n")}}]);