1 line
56 KiB
JavaScript
1 line
56 KiB
JavaScript
"use strict";(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["company-wage-WageViewController"],{2085:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"WageViewController\": () => (/* binding */ WageViewController)\n/* harmony export */ });\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\nclass WageViewController extends BaseViewController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\t\t\tel: '#wage_view_container', //Must set el here and can only set string, so events can work\n\n\n\n\t\t\tuser_api: null,\n\t\t\tuser_group_api: null,\n\t\t\tcompany_api: null,\n\t\t\tcurrency_api: null,\n\n\t\t\ttype_array: null,\n\t\t\tstatus_array: null,\n\t\t\tsex_array: null,\n\t\t\tuser_group_array: null,\n\t\t\tcountry_array: null,\n\t\t\tprovince_array: null,\n\n\t\t\te_province_array: null,\n\n\t\t\tcurrency: '',\n\t\t\tcode: '',\n\n\t\t\tis_mass_adding: false,\n\t\t\tevents: {}\n\t\t} );\n\n\t\tsuper( options );\n\t}\n\n\tinit( options ) {\n\n\t\t//this._super('initialize', options );\n\t\tthis.edit_view_tpl = 'WageEditView.html';\n\t\tthis.permission_id = 'wage';\n\t\tthis.script_name = 'WageView';\n\t\tthis.viewId = 'Wage';\n\t\tthis.table_name_key = 'user_wage';\n\t\tthis.context_menu_name = $.i18n._( 'Wage' );\n\t\tthis.navigation_label = $.i18n._( 'Wage' );\n\t\tthis.document_object_type_id = 110;\n\t\tthis.api = TTAPI.APIUserWage;\n\t\tthis.user_group_api = TTAPI.APIUserGroup;\n\t\tthis.company_api = TTAPI.APICompany;\n\t\tthis.user_api = TTAPI.APIUser;\n\t\tthis.currency_api = TTAPI.APICurrency;\n\t\tthis.render();\n\n\t\tif ( this.sub_view_mode ) {\n\t\t\tthis.buildContextMenu( true );\n\t\t} else {\n\t\t\tthis.buildContextMenu();\n\t\t}\n\n\t\t//call init data in parent view\n\t\tif ( !this.sub_view_mode ) {\n\t\t\tthis.initData();\n\t\t}\n\t}\n\n\tinitOptions() {\n\t\tvar $this = this;\n\n\t\tvar options = [\n\t\t\t{ option_name: 'type', api: this.api },\n\t\t\t{ option_name: 'status', api: this.user_api },\n\t\t\t{ option_name: 'country', field_name: 'country', api: this.company_api },\n\t\t];\n\n\t\tthis.initDropDownOptions( options );\n\n\t\tthis.user_group_api.getUserGroup( '', false, false, {\n\t\t\tonResult: function( res ) {\n\t\t\t\tres = res.getResult();\n\n\t\t\t\tres = Global.buildTreeRecord( res );\n\t\t\t\t$this.user_group_array = res;\n\n\t\t\t\tif ( !$this.sub_view_mode ) {\n\t\t\t\t\t$this.adv_search_field_ui_dic['group_id'].setSourceData( res );\n\t\t\t\t}\n\n\t\t\t}\n\t\t} );\n\t}\n\n\tgetCustomContextMenuModel() {\n\t\tvar context_menu_model = {\n\t\t\texclude: ['copy'],\n\t\t\tinclude: [{\n\t\t\t\tlabel: $.i18n._( 'Import' ),\n\t\t\t\tid: 'import_icon',\n\t\t\t\tmenu_align: 'right',\n\t\t\t\taction_group: 'import_export',\n\t\t\t\tgroup: 'other',\n\t\t\t\tvue_icon: 'tticon tticon-file_download_black_24dp',\n\t\t\t\tpermission_result: PermissionManager.checkTopLevelPermission( 'ImportCSVWage' ),\n\t\t\t\tpermission: null,\n\t\t\t\tsort_order: 9010\n\t\t\t}]\n\t\t};\n\n\t\treturn context_menu_model;\n\t}\n\n\tonFormItemChange( target, doNotValidate ) {\n\t\tthis.setIsChanged( target );\n\t\tthis.setMassEditingFieldsWhenFormChange( target );\n\t\tvar key = target.getField();\n\t\tvar c_value = target.getValue();\n\t\tthis.current_edit_record[key] = c_value;\n\n\t\tswitch ( key ) {\n\t\t\tcase 'type_id':\n\t\t\t\tthis.onTypeChange( true );\n\t\t\t\tbreak;\n\t\t\tcase 'user_id':\n\t\t\t\tif ( $.isArray( this.current_edit_record.user_id ) && this.current_edit_record.user_id.length > 1 ) {\n\t\t\t\t\tthis.is_mass_adding = true;\n\t\t\t\t} else {\n\t\t\t\t\tthis.is_mass_adding = false;\n\t\t\t\t}\n\t\t\t\tthis.setCurrency();\n\t\t\t\tbreak;\n\t\t\tcase 'wage':\n\t\t\tcase 'weekly_time':\n\t\t\t\tthis.getHourlyRate();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( !doNotValidate ) {\n\t\t\tthis.validate();\n\t\t}\n\t}\n\n\t//Make sure this.current_edit_record is updated before validate\n\tvalidate() {\n\t\tvar $this = this;\n\t\tvar record = {};\n\t\tLocalCacheData.current_doing_context_action = 'validate';\n\t\tif ( this.is_mass_editing ) {\n\t\t\tfor ( var key in this.edit_view_ui_dic ) {\n\t\t\t\tvar widget = this.edit_view_ui_dic[key];\n\n\t\t\t\tif ( Global.isSet( widget.isChecked ) ) {\n\t\t\t\t\tif ( widget.isChecked() && widget.getEnabled() ) {\n\t\t\t\t\t\trecord[key] = widget.getValue();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif ( Global.isArray( this.current_edit_record.user_id ) && this.current_edit_record.user_id.length > 0 ) {\n\t\t\t\trecord = [];\n\t\t\t\t$.each( this.current_edit_record.user_id, function( index, value ) {\n\n\t\t\t\t\tvar commonRecord = Global.clone( $this.current_edit_record );\n\t\t\t\t\tcommonRecord.user_id = value;\n\t\t\t\t\trecord.push( commonRecord );\n\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\trecord = this.current_edit_record;\n\t\t\t}\n\t\t}\n\t\tthis.api['validate' + this.api.key_name]( record, {\n\t\t\tonResult: function( result ) {\n\t\t\t\t$this.validateResult( result );\n\t\t\t}\n\t\t} );\n\t}\n\n\tsetDefaultMenuImportIcon( context_btn, grid_selected_length, pId ) {\n\t}\n\n\tonCustomContextClick( id ) {\n\t\tswitch ( id ) {\n\t\t\tcase 'import_icon':\n\t\t\t\tthis.onImportClick();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tonImportClick() {\n\t\tvar $this = this;\n\n\t\tIndexViewController.openWizard( 'ImportCSVWizard', 'UserWage', function() {\n\t\t\t$this.search();\n\t\t} );\n\t}\n\n\tdoSaveAPICall( record, ignoreWarning, callback ) {\n\t\t// #2644: We have to handle the record as though its a mass_add, as the awesomebox will always return an array of user_id's. See 733f709e287626070b84e39ca67f78e69a3fcee6.\n\t\t// Normal handling results in 'Invalid Employee' errors for single records. Cannot force is_mass_adding flag, as this affects the save&continue button disabling.\n\t\trecord = this.buildMassAddRecord( record );\n\t\tsuper.doSaveAPICall( record, ignoreWarning, callback );\n\t}\n\n\tsetEditMenuSaveAndContinueIcon( context_btn, pId ) {\n\t\tthis.saveAndContinueValidate( context_btn );\n\n\t\tif ( this.is_mass_adding || !this.current_edit_record ) {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t}\n\t}\n\n\tsetEditMenuSaveAndAddIcon( context_btn, pId ) {\n\t\tthis.saveAndNewValidate( context_btn );\n\n\t\tif ( !this.current_edit_record || !this.current_edit_record.id ) {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t}\n\t}\n\n\tsetEditMenuSaveAndCopyIcon( context_btn, pId ) {\n\t\tthis.saveAndContinueValidate( context_btn );\n\n\t\tif ( !this.current_edit_record || !this.current_edit_record.id ) {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t}\n\t}\n\n\tsetEditViewData() {\n\t\tvar $this = this;\n\t\tsuper.setEditViewData(); //Set Navigation\n\n\t\tthis.setCurrency();\n\n\t\tif ( !this.sub_view_mode ) {\n\t\t\tvar widget = $this.edit_view_ui_dic['user_id'];\n\t\t\tif ( widget ) {\n\t\t\t\tif ( ( !this.current_edit_record || !this.current_edit_record.id ) && !this.is_mass_editing ) {\n\t\t\t\t\twidget.setAllowMultipleSelection( true );\n\t\t\t\t} else {\n\t\t\t\t\twidget.setAllowMultipleSelection( false );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t$this.onTypeChange( false );\n\t}\n\n\tsetCurrency() {\n\n\t\tvar $this = this;\n\t\tif ( Global.isSet( this.current_edit_record.user_id ) ) {\n\t\t\tvar filter = {};\n\t\t\tfilter.filter_data = { user_id: this.current_edit_record.user_id };\n\n\t\t\tthis.currency_api.getCurrency( filter, false, false, {\n\t\t\t\tonResult: function( res ) {\n\t\t\t\t\tres = res.getResult();\n\t\t\t\t\tif ( Global.isArray( res ) ) {\n\t\t\t\t\t\t$this.currency.text( res[0].symbol );\n\t\t\t\t\t\t$this.code.text( res[0].iso_code );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$this.currency.text( '' );\n\t\t\t\t\t\t$this.code.text( '' );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tgetHourlyRate() {\n\n\t\tvar $this = this;\n\t\tif ( this.current_edit_record.wage &&\n\t\t\tthis.current_edit_record.weekly_time &&\n\t\t\tthis.current_edit_record.type_id &&\n\t\t\tthis.current_edit_record.type_id != 10 ) {\n\n\t\t\t//wwkly_time need value before pasrse to seconds.\n\t\t\tthis.api.getHourlyRate( this.current_edit_record.wage, $this.edit_view_ui_dic['weekly_time'].getInputValue(), this.current_edit_record.type_id, {\n\t\t\t\tonResult: function( result ) {\n\t\t\t\t\tvar res = result.getResult();\n\n\t\t\t\t\tif ( result.isValid() ) {\n\t\t\t\t\t\t$this.current_edit_record.hourly_rate = res;\n\t\t\t\t\t\t$this.edit_view_ui_dic['hourly_rate'].val( res );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tonTypeChange( getRate ) {\n\n\t\tif ( parseInt( this.current_edit_record.type_id ) != 10 ) {\n\t\t\tthis.attachElement( 'weekly_time' );\n\t\t\tthis.attachElement( 'hourly_rate' );\n\n\t\t\tif ( getRate ) {\n\t\t\t\tthis.getHourlyRate();\n\t\t\t}\n\n\t\t} else {\n\t\t\tthis.detachElement( 'weekly_time' );\n\t\t\tthis.detachElement( 'hourly_rate' );\n\t\t}\n\t}\n\n\tbuildEditViewUI() {\n\n\t\tsuper.buildEditViewUI();\n\n\t\tvar $this = this;\n\n\t\tvar tab_model = {\n\t\t\t'tab_wage': { 'label': $.i18n._( 'Wage' ) },\n\t\t\t'tab_attachment': true,\n\t\t\t'tab_audit': true,\n\t\t};\n\t\tthis.setTabModel( tab_model );\n\n\t\tthis.navigation.AComboBox( {\n\t\t\tapi_class: TTAPI.APIUserWage,\n\t\t\tid: this.script_name + '_navigation',\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_wage',\n\t\t\tshow_search_inputs: true,\n\t\t\tnavigation_mode: true\n\t\t} );\n\n\t\tthis.setNavigation();\n\n\t\t//Tab 0 start\n\n\t\tvar tab_wage = this.edit_view_tab.find( '#tab_wage' );\n\n\t\tvar tab_wage_column1 = tab_wage.find( '.first-column' );\n\n\t\tvar form_item_input;\n\t\tvar widgetContainer;\n\t\tvar label;\n\n\t\tif ( !this.sub_view_mode ) {\n\t\t\t//Employee\n\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\t\tform_item_input.AComboBox( {\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tallow_multiple_selection: false,\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tshow_search_inputs: true,\n\t\t\t\tset_empty: true,\n\t\t\t\tfield: 'user_id'\n\n\t\t\t} );\n\n\t\t\tvar default_args = {};\n\t\t\tdefault_args.permission_section = 'wage';\n\t\t\tform_item_input.setDefaultArgs( default_args );\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Employee' ), form_item_input, tab_wage_column1, '' );\n\t\t}\n\n\t\t//Wage Group\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIWageGroup,\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_wage_group',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_default: true,\n\t\t\tfield: 'wage_group_id'\n\t\t} );\n\n\t\tif ( this.sub_view_mode ) {\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Wage Group' ), form_item_input, tab_wage_column1, '' );\n\t\t} else {\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Wage Group' ), form_item_input, tab_wage_column1 );\n\t\t}\n\n\t\t//Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\n\t\tform_item_input.TComboBox( { field: 'type_id' } );\n\t\tform_item_input.setSourceData( $this.type_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Type' ), form_item_input, tab_wage_column1 );\n\n\t\t//Wage\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'wage', width: 90 } );\n\n\t\twidgetContainer = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tthis.currency = $( '<span class=\\'widget-left-label\\'></span>' );\n\t\tthis.code = $( '<span class=\\'widget-right-label\\'></span>' );\n\n\t\twidgetContainer.append( this.currency );\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( this.code );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Wage' ), form_item_input, tab_wage_column1, '', widgetContainer );\n\n\t\t//Average Time / Week\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'weekly_time', need_parser_sec: true } );\n\n\t\twidgetContainer = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tlabel = $( '<span class=\\'widget-right-label\\'>( ' + $.i18n._( 'ie' ) + ': ' + $.i18n._( '40 hours / week' ) + ' )</span>' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Average Time / Week' ), form_item_input, tab_wage_column1, '', widgetContainer, true );\n\n\t\t//Annual Hourly Rate\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'hourly_rate' } );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Annual Hourly Rate' ), form_item_input, tab_wage_column1, '', null, true );\n\n\t\t//Labor Burden Percent\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'labor_burden_percent', width: 50 } );\n\n\t\twidgetContainer = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tlabel = $( '<span class=\\'widget-right-label\\'>% ( ' + $.i18n._( 'ie' ) + ': ' + $.i18n._( '25% burden' ) + ' )</span>' ); //Had issues with '%' and '%%', using the HTML Entity character code for % instead.\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Labor Burden Percent' ), form_item_input, tab_wage_column1, '', widgetContainer );\n\n\t\t//Effective Date\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );\n\n\t\tform_item_input.TDatePicker( { field: 'effective_date', width: 120 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Effective Date' ), form_item_input, tab_wage_column1 );\n\n\t\t//Note\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_AREA );\n\t\tform_item_input.TTextArea( { field: 'note', width: 389, height: 117 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Note' ), form_item_input, tab_wage_column1, '', null, null, true );\n\t}\n\n\t//Override for: Do not show first 2 columns in sub wage view\n\tsetSelectLayout() {\n\t\tif ( this.sub_view_mode ) {\n\t\t\tsuper.setSelectLayout( ['first_name', 'last_name'] );\n\t\t} else {\n\t\t\tsuper.setSelectLayout();\n\t\t}\n\t}\n\n\tsetProvince( val, m ) {\n\t\tvar $this = this;\n\n\t\tif ( !val || val === '-1' || val === '0' ) {\n\t\t\t$this.province_array = [];\n\t\t\tthis.adv_search_field_ui_dic['province'].setSourceData( [] );\n\t\t} else {\n\t\t\tthis.company_api.getOptions( 'province', val, {\n\t\t\t\tonResult: function( res ) {\n\t\t\t\t\tres = res.getResult();\n\t\t\t\t\tif ( !res ) {\n\t\t\t\t\t\tres = [];\n\t\t\t\t\t}\n\n\t\t\t\t\t$this.province_array = Global.buildRecordArray( res );\n\t\t\t\t\t$this.adv_search_field_ui_dic['province'].setSourceData( $this.province_array );\n\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\teSetProvince( val ) {\n\t\tvar $this = this;\n\t\tvar province_widget = $this.edit_view_ui_dic['province'];\n\n\t\tif ( !val || val === '-1' || val === '0' ) {\n\t\t\t$this.e_province_array = [];\n\t\t\tprovince_widget.setSourceData( [] );\n\t\t} else {\n\t\t\tthis.company_api.getOptions( 'province', val, {\n\t\t\t\tonResult: function( res ) {\n\t\t\t\t\tres = res.getResult();\n\t\t\t\t\tif ( !res ) {\n\t\t\t\t\t\tres = [];\n\t\t\t\t\t}\n\n\t\t\t\t\t$this.e_province_array = Global.buildRecordArray( res );\n\t\t\t\t\tprovince_widget.setSourceData( $this.e_province_array );\n\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tonSetSearchFilterFinished() {\n\n\t\tif ( this.search_panel.getSelectTabIndex() === 1 ) {\n\t\t\tvar combo = this.adv_search_field_ui_dic['country'];\n\t\t\tvar select_value = combo.getValue();\n\t\t\tthis.setProvince( select_value );\n\t\t}\n\t}\n\n\tonBuildBasicUIFinished() {\n\t\tvar basicSearchTabPanel = this.search_panel.find( 'div #basic_search' );\n\t}\n\n\tonBuildAdvUIFinished() {\n\n\t\tthis.adv_search_field_ui_dic['country'].change( $.proxy( function() {\n\t\t\tvar combo = this.adv_search_field_ui_dic['country'];\n\t\t\tvar selectVal = combo.getValue();\n\n\t\t\tthis.setProvince( selectVal );\n\n\t\t\tthis.adv_search_field_ui_dic['province'].setValue( null );\n\n\t\t}, this ) );\n\t}\n\n\tbuildSearchFields() {\n\n\t\tsuper.buildSearchFields();\n\n\t\tvar default_args = { permission_section: 'wage' };\n\t\tthis.search_fields = [\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Employee' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'user_id',\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tdefault_args: default_args,\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: true,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Type' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'type_id',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: true,\n\t\t\t\tlayout_name: 'global_option_column',\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Wage Group' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'wage_group_id',\n\t\t\t\tlayout_name: 'global_wage_group',\n\t\t\t\tapi_class: TTAPI.APIWageGroup,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: true,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX,\n\t\t\t\taddition_source_function: ( target, source_data ) => { //Issue #3183 - Allow filtering by default wage groups\n\t\t\t\t\tsource_data.unshift( { id: TTUUID.zero_id, name: $.i18n._( '-- Default --' ) } );\n\t\t\t\t\treturn source_data;\n\t\t\t\t},\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Status' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'status_id',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: true,\n\t\t\t\tlayout_name: 'global_option_column',\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Group' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tmultiple: true,\n\t\t\t\tfield: 'group_id',\n\t\t\t\tlayout_name: 'global_tree_column',\n\t\t\t\ttree_mode: true,\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: true,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Created By' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'created_by',\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: true,\n\t\t\t\tscript_name: 'EmployeeView',\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Updated By' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'updated_by',\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: true,\n\t\t\t\tscript_name: 'EmployeeView',\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Default Branch' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'default_branch_id',\n\t\t\t\tlayout_name: 'global_branch',\n\t\t\t\tapi_class: TTAPI.APIBranch,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: true,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Default Department' ),\n\t\t\t\tfield: 'default_department_id',\n\t\t\t\tin_column: 2,\n\t\t\t\tlayout_name: 'global_department',\n\t\t\t\tapi_class: TTAPI.APIDepartment,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: true,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Title' ),\n\t\t\t\tfield: 'title_id',\n\t\t\t\tin_column: 2,\n\t\t\t\tlayout_name: 'global_job_title',\n\t\t\t\tapi_class: TTAPI.APIUserTitle,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: true,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Country' ),\n\t\t\t\tin_column: 3,\n\t\t\t\tfield: 'country',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: true,\n\t\t\t\tlayout_name: 'global_option_column',\n\t\t\t\tform_item_type: FormItemType.COMBO_BOX\n\t\t\t} ),\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Province/State' ),\n\t\t\t\tin_column: 3,\n\t\t\t\tfield: 'province',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: true,\n\t\t\t\tlayout_name: 'global_option_column',\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} )\n\n\t\t];\n\t}\n\n\tcleanWhenUnloadView( callBack ) {\n\n\t\t$( '#wage_view_container' ).remove();\n\t\tsuper.cleanWhenUnloadView( callBack );\n\t}\n\n\tsearchDone() {\n\t\tTTPromise.resolve( 'WageView', 'init' );\n\t\tsuper.searchDone();\n\t}\n\n}\n\nWageViewController.loadView = function( container ) {\n\tGlobal.loadViewSource( 'Wage', 'WageView.html', function( result ) {\n\t\tvar args = {};\n\t\tvar template = _.template( result );\n\t\tif ( Global.isSet( container ) ) {\n\t\t\tcontainer.html( template( args ) );\n\t\t} else {\n\t\t\tGlobal.contentContainer().html( template( args ) );\n\t\t}\n\t} );\n};\n\nWageViewController.loadSubView = function( container, beforeViewLoadedFun, afterViewLoadedFun ) {\n\tGlobal.loadViewSource( 'Wage', 'SubWageView.html', function( result ) {\n\t\tvar args = {};\n\t\tvar template = _.template( result );\n\t\tif ( Global.isSet( beforeViewLoadedFun ) ) {\n\t\t\tbeforeViewLoadedFun();\n\t\t}\n\n\t\tif ( Global.isSet( container ) ) {\n\t\t\tcontainer.html( template( args ) );\n\n\t\t\tif ( Global.isSet( afterViewLoadedFun ) ) {\n\t\t\t\tafterViewLoadedFun( sub_wage_view_controller );\n\t\t\t}\n\t\t}\n\t} );\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA4NS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTztBQUNQLDJCQUEyQjtBQUMzQixFQUFFLENBQUM7QUFDSDs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLENBQUM7QUFDNUIsMEJBQTBCLENBQUM7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEtBQUssb0NBQW9DO0FBQ3pDLEtBQUssMkNBQTJDO0FBQ2hELEtBQUssc0VBQXNFO0FBQzNFOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsQ0FBQztBQUNWO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSSxDQUFDOztBQUVMO0FBQ0E7QUFDQTs7QUFFQSxNQUFNO0FBQ04sS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkJBQTJCOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0EsaUJBQWlCLFNBQVMsQ0FBQyxtQkFBbUI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsQ0FBQztBQUMvQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBLDhCQUE4QixDQUFDO0FBQy9CLElBQUk7QUFDSiw4QkFBOEIsQ0FBQztBQUMvQjs7QUFFQTtBQUNBOztBQUVBLCtCQUErQixtQkFBbUI7QUFDbEQ7QUFDQSw2QkFBNkIsQ0FBQzs7QUFFOUI7O0FBRUE7O0FBRUEsZ0NBQWdDLDJCQUEyQjs7QUFFM0Qsb0JBQW9CLENBQUM7QUFDckIsa0JBQWtCLENBQUM7QUFDbkIsY0FBYyxDQUFDOztBQUVmO0FBQ0E7QUFDQTs7QUFFQSw2QkFBNkIsQ0FBQzs7QUFFOUI7O0FBRUE7QUFDQSxnQ0FBZ0MsOENBQThDOztBQUU5RSxvQkFBb0IsQ0FBQztBQUNyQixVQUFVLENBQUMsNENBQTRDLENBQUMseUJBQXlCLENBQUM7O0FBRWxGO0FBQ0E7O0FBRUEsNkJBQTZCLENBQUM7O0FBRTlCOztBQUVBO0FBQ0EsZ0NBQWdDLHVCQUF1Qjs7QUFFdkQsNkJBQTZCLENBQUM7O0FBRTlCOztBQUVBO0FBQ0EsZ0NBQWdDLDJDQUEyQzs7QUFFM0Usb0JBQW9CLENBQUM7QUFDckIsVUFBVSxDQUFDLDhDQUE4QyxDQUFDLHlCQUF5QixDQUFDLGtCQUFrQiwyQkFBMkI7QUFDakk7QUFDQTs7QUFFQSw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQTs7QUFFQSxpQ0FBaUMsc0NBQXNDO0FBQ3ZFLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBO0FBQ0EsK0JBQStCLHlDQUF5QztBQUN4RSw2QkFBNkIsQ0FBQztBQUM5Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxrREFBa0QsQ0FBQztBQUNuRDtBQUNBOztBQUVBOztBQUVBOztBQUVBLEdBQUc7QUFDSDs7QUFFQTs7QUFFQTs7QUFFQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJEO0FBQzNELDRCQUE0QiwwQkFBMEIsQ0FBQyw2QkFBNkI7QUFDcEY7QUFDQSxLQUFLO0FBQ0wsS0FBSzs7QUFFTDtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTs7QUFFQSxFQUFFLENBQUM7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixDQUFDO0FBQ2xCO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsQ0FBQztBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2ludGVyZmFjZS9odG1sNS92aWV3cy9jb21wYW55L3dhZ2UvV2FnZVZpZXdDb250cm9sbGVyLmpzPzRmNWIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFdhZ2VWaWV3Q29udHJvbGxlciBleHRlbmRzIEJhc2VWaWV3Q29udHJvbGxlciB7XG5cdGNvbnN0cnVjdG9yKCBvcHRpb25zID0ge30gKSB7XG5cdFx0Xy5kZWZhdWx0cyggb3B0aW9ucywge1xuXHRcdFx0ZWw6ICcjd2FnZV92aWV3X2NvbnRhaW5lcicsIC8vTXVzdCBzZXQgZWwgaGVyZSBhbmQgY2FuIG9ubHkgc2V0IHN0cmluZywgc28gZXZlbnRzIGNhbiB3b3JrXG5cblxuXG5cdFx0XHR1c2VyX2FwaTogbnVsbCxcblx0XHRcdHVzZXJfZ3JvdXBfYXBpOiBudWxsLFxuXHRcdFx0Y29tcGFueV9hcGk6IG51bGwsXG5cdFx0XHRjdXJyZW5jeV9hcGk6IG51bGwsXG5cblx0XHRcdHR5cGVfYXJyYXk6IG51bGwsXG5cdFx0XHRzdGF0dXNfYXJyYXk6IG51bGwsXG5cdFx0XHRzZXhfYXJyYXk6IG51bGwsXG5cdFx0XHR1c2VyX2dyb3VwX2FycmF5OiBudWxsLFxuXHRcdFx0Y291bnRyeV9hcnJheTogbnVsbCxcblx0XHRcdHByb3ZpbmNlX2FycmF5OiBudWxsLFxuXG5cdFx0XHRlX3Byb3ZpbmNlX2FycmF5OiBudWxsLFxuXG5cdFx0XHRjdXJyZW5jeTogJycsXG5cdFx0XHRjb2RlOiAnJyxcblxuXHRcdFx0aXNfbWFzc19hZGRpbmc6IGZhbHNlLFxuXHRcdFx0ZXZlbnRzOiB7fVxuXHRcdH0gKTtcblxuXHRcdHN1cGVyKCBvcHRpb25zICk7XG5cdH1cblxuXHRpbml0KCBvcHRpb25zICkge1xuXG5cdFx0Ly90aGlzLl9zdXBlcignaW5pdGlhbGl6ZScsIG9wdGlvbnMgKTtcblx0XHR0aGlzLmVkaXRfdmlld190cGwgPSAnV2FnZUVkaXRWaWV3Lmh0bWwnO1xuXHRcdHRoaXMucGVybWlzc2lvbl9pZCA9ICd3YWdlJztcblx0XHR0aGlzLnNjcmlwdF9uYW1lID0gJ1dhZ2VWaWV3Jztcblx0XHR0aGlzLnZpZXdJZCA9ICdXYWdlJztcblx0XHR0aGlzLnRhYmxlX25hbWVfa2V5ID0gJ3VzZXJfd2FnZSc7XG5cdFx0dGhpcy5jb250ZXh0X21lbnVfbmFtZSA9ICQuaTE4bi5fKCAnV2FnZScgKTtcblx0XHR0aGlzLm5hdmlnYXRpb25fbGFiZWwgPSAkLmkxOG4uXyggJ1dhZ2UnICk7XG5cdFx0dGhpcy5kb2N1bWVudF9vYmplY3RfdHlwZV9pZCA9IDExMDtcblx0XHR0aGlzLmFwaSA9IFRUQVBJLkFQSVVzZXJXYWdlO1xuXHRcdHRoaXMudXNlcl9ncm91cF9hcGkgPSBUVEFQSS5BUElVc2VyR3JvdXA7XG5cdFx0dGhpcy5jb21wYW55X2FwaSA9IFRUQVBJLkFQSUNvbXBhbnk7XG5cdFx0dGhpcy51c2VyX2FwaSA9IFRUQVBJLkFQSVVzZXI7XG5cdFx0dGhpcy5jdXJyZW5jeV9hcGkgPSBUVEFQSS5BUElDdXJyZW5jeTtcblx0XHR0aGlzLnJlbmRlcigpO1xuXG5cdFx0aWYgKCB0aGlzLnN1Yl92aWV3X21vZGUgKSB7XG5cdFx0XHR0aGlzLmJ1aWxkQ29udGV4dE1lbnUoIHRydWUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5idWlsZENvbnRleHRNZW51KCk7XG5cdFx0fVxuXG5cdFx0Ly9jYWxsIGluaXQgZGF0YSBpbiBwYXJlbnQgdmlld1xuXHRcdGlmICggIXRoaXMuc3ViX3ZpZXdfbW9kZSApIHtcblx0XHRcdHRoaXMuaW5pdERhdGEoKTtcblx0XHR9XG5cdH1cblxuXHRpbml0T3B0aW9ucygpIHtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXG5cdFx0dmFyIG9wdGlvbnMgPSBbXG5cdFx0XHR7IG9wdGlvbl9uYW1lOiAndHlwZScsIGFwaTogdGhpcy5hcGkgfSxcblx0XHRcdHsgb3B0aW9uX25hbWU6ICdzdGF0dXMnLCBhcGk6IHRoaXMudXNlcl9hcGkgfSxcblx0XHRcdHsgb3B0aW9uX25hbWU6ICdjb3VudHJ5JywgZmllbGRfbmFtZTogJ2NvdW50cnknLCBhcGk6IHRoaXMuY29tcGFueV9hcGkgfSxcblx0XHRdO1xuXG5cdFx0dGhpcy5pbml0RHJvcERvd25PcHRpb25zKCBvcHRpb25zICk7XG5cblx0XHR0aGlzLnVzZXJfZ3JvdXBfYXBpLmdldFVzZXJHcm91cCggJycsIGZhbHNlLCBmYWxzZSwge1xuXHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXMgKSB7XG5cdFx0XHRcdHJlcyA9IHJlcy5nZXRSZXN1bHQoKTtcblxuXHRcdFx0XHRyZXMgPSBHbG9iYWwuYnVpbGRUcmVlUmVjb3JkKCByZXMgKTtcblx0XHRcdFx0JHRoaXMudXNlcl9ncm91cF9hcnJheSA9IHJlcztcblxuXHRcdFx0XHRpZiAoICEkdGhpcy5zdWJfdmlld19tb2RlICkge1xuXHRcdFx0XHRcdCR0aGlzLmFkdl9zZWFyY2hfZmllbGRfdWlfZGljWydncm91cF9pZCddLnNldFNvdXJjZURhdGEoIHJlcyApO1xuXHRcdFx0XHR9XG5cblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cblxuXHRnZXRDdXN0b21Db250ZXh0TWVudU1vZGVsKCkge1xuXHRcdHZhciBjb250ZXh0X21lbnVfbW9kZWwgPSB7XG5cdFx0XHRleGNsdWRlOiBbJ2NvcHknXSxcblx0XHRcdGluY2x1ZGU6IFt7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0ltcG9ydCcgKSxcblx0XHRcdFx0aWQ6ICdpbXBvcnRfaWNvbicsXG5cdFx0XHRcdG1lbnVfYWxpZ246ICdyaWdodCcsXG5cdFx0XHRcdGFjdGlvbl9ncm91cDogJ2ltcG9ydF9leHBvcnQnLFxuXHRcdFx0XHRncm91cDogJ290aGVyJyxcblx0XHRcdFx0dnVlX2ljb246ICd0dGljb24gdHRpY29uLWZpbGVfZG93bmxvYWRfYmxhY2tfMjRkcCcsXG5cdFx0XHRcdHBlcm1pc3Npb25fcmVzdWx0OiBQZXJtaXNzaW9uTWFuYWdlci5jaGVja1RvcExldmVsUGVybWlzc2lvbiggJ0ltcG9ydENTVldhZ2UnICksXG5cdFx0XHRcdHBlcm1pc3Npb246IG51bGwsXG5cdFx0XHRcdHNvcnRfb3JkZXI6IDkwMTBcblx0XHRcdH1dXG5cdFx0fTtcblxuXHRcdHJldHVybiBjb250ZXh0X21lbnVfbW9kZWw7XG5cdH1cblxuXHRvbkZvcm1JdGVtQ2hhbmdlKCB0YXJnZXQsIGRvTm90VmFsaWRhdGUgKSB7XG5cdFx0dGhpcy5zZXRJc0NoYW5nZWQoIHRhcmdldCApO1xuXHRcdHRoaXMuc2V0TWFzc0VkaXRpbmdGaWVsZHNXaGVuRm9ybUNoYW5nZSggdGFyZ2V0ICk7XG5cdFx0dmFyIGtleSA9IHRhcmdldC5nZXRGaWVsZCgpO1xuXHRcdHZhciBjX3ZhbHVlID0gdGFyZ2V0LmdldFZhbHVlKCk7XG5cdFx0dGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkW2tleV0gPSBjX3ZhbHVlO1xuXG5cdFx0c3dpdGNoICgga2V5ICkge1xuXHRcdFx0Y2FzZSAndHlwZV9pZCc6XG5cdFx0XHRcdHRoaXMub25UeXBlQ2hhbmdlKCB0cnVlICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAndXNlcl9pZCc6XG5cdFx0XHRcdGlmICggJC5pc0FycmF5KCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQudXNlcl9pZCApICYmIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC51c2VyX2lkLmxlbmd0aCA+IDEgKSB7XG5cdFx0XHRcdFx0dGhpcy5pc19tYXNzX2FkZGluZyA9IHRydWU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5pc19tYXNzX2FkZGluZyA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuc2V0Q3VycmVuY3koKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICd3YWdlJzpcblx0XHRcdGNhc2UgJ3dlZWtseV90aW1lJzpcblx0XHRcdFx0dGhpcy5nZXRIb3VybHlSYXRlKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGlmICggIWRvTm90VmFsaWRhdGUgKSB7XG5cdFx0XHR0aGlzLnZhbGlkYXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0Ly9NYWtlIHN1cmUgdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkIGlzIHVwZGF0ZWQgYmVmb3JlIHZhbGlkYXRlXG5cdHZhbGlkYXRlKCkge1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0dmFyIHJlY29yZCA9IHt9O1xuXHRcdExvY2FsQ2FjaGVEYXRhLmN1cnJlbnRfZG9pbmdfY29udGV4dF9hY3Rpb24gPSAndmFsaWRhdGUnO1xuXHRcdGlmICggdGhpcy5pc19tYXNzX2VkaXRpbmcgKSB7XG5cdFx0XHRmb3IgKCB2YXIga2V5IGluIHRoaXMuZWRpdF92aWV3X3VpX2RpYyApIHtcblx0XHRcdFx0dmFyIHdpZGdldCA9IHRoaXMuZWRpdF92aWV3X3VpX2RpY1trZXldO1xuXG5cdFx0XHRcdGlmICggR2xvYmFsLmlzU2V0KCB3aWRnZXQuaXNDaGVja2VkICkgKSB7XG5cdFx0XHRcdFx0aWYgKCB3aWRnZXQuaXNDaGVja2VkKCkgJiYgd2lkZ2V0LmdldEVuYWJsZWQoKSApIHtcblx0XHRcdFx0XHRcdHJlY29yZFtrZXldID0gd2lkZ2V0LmdldFZhbHVlKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICggR2xvYmFsLmlzQXJyYXkoIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC51c2VyX2lkICkgJiYgdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnVzZXJfaWQubGVuZ3RoID4gMCApIHtcblx0XHRcdFx0cmVjb3JkID0gW107XG5cdFx0XHRcdCQuZWFjaCggdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnVzZXJfaWQsIGZ1bmN0aW9uKCBpbmRleCwgdmFsdWUgKSB7XG5cblx0XHRcdFx0XHR2YXIgY29tbW9uUmVjb3JkID0gR2xvYmFsLmNsb25lKCAkdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkICk7XG5cdFx0XHRcdFx0Y29tbW9uUmVjb3JkLnVzZXJfaWQgPSB2YWx1ZTtcblx0XHRcdFx0XHRyZWNvcmQucHVzaCggY29tbW9uUmVjb3JkICk7XG5cblx0XHRcdFx0fSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmVjb3JkID0gdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR0aGlzLmFwaVsndmFsaWRhdGUnICsgdGhpcy5hcGkua2V5X25hbWVdKCByZWNvcmQsIHtcblx0XHRcdG9uUmVzdWx0OiBmdW5jdGlvbiggcmVzdWx0ICkge1xuXHRcdFx0XHQkdGhpcy52YWxpZGF0ZVJlc3VsdCggcmVzdWx0ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG5cblx0c2V0RGVmYXVsdE1lbnVJbXBvcnRJY29uKCBjb250ZXh0X2J0biwgZ3JpZF9zZWxlY3RlZF9sZW5ndGgsIHBJZCApIHtcblx0fVxuXG5cdG9uQ3VzdG9tQ29udGV4dENsaWNrKCBpZCApIHtcblx0XHRzd2l0Y2ggKCBpZCApIHtcblx0XHRcdGNhc2UgJ2ltcG9ydF9pY29uJzpcblx0XHRcdFx0dGhpcy5vbkltcG9ydENsaWNrKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdG9uSW1wb3J0Q2xpY2soKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblxuXHRcdEluZGV4Vmlld0NvbnRyb2xsZXIub3BlbldpemFyZCggJ0ltcG9ydENTVldpemFyZCcsICdVc2VyV2FnZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0JHRoaXMuc2VhcmNoKCk7XG5cdFx0fSApO1xuXHR9XG5cblx0ZG9TYXZlQVBJQ2FsbCggcmVjb3JkLCBpZ25vcmVXYXJuaW5nLCBjYWxsYmFjayApIHtcblx0XHQvLyAjMjY0NDogV2UgaGF2ZSB0byBoYW5kbGUgdGhlIHJlY29yZCBhcyB0aG91Z2ggaXRzIGEgbWFzc19hZGQsIGFzIHRoZSBhd2Vzb21lYm94IHdpbGwgYWx3YXlzIHJldHVybiBhbiBhcnJheSBvZiB1c2VyX2lkJ3MuIFNlZSA3MzNmNzA5ZTI4NzYyNjA3MGI4NGUzOWNhNjdmNzhlNjlhM2ZjZWU2LlxuXHRcdC8vIE5vcm1hbCBoYW5kbGluZyByZXN1bHRzIGluICdJbnZhbGlkIEVtcGxveWVlJyBlcnJvcnMgZm9yIHNpbmdsZSByZWNvcmRzLiBDYW5ub3QgZm9yY2UgaXNfbWFzc19hZGRpbmcgZmxhZywgYXMgdGhpcyBhZmZlY3RzIHRoZSBzYXZlJmNvbnRpbnVlIGJ1dHRvbiBkaXNhYmxpbmcuXG5cdFx0cmVjb3JkID0gdGhpcy5idWlsZE1hc3NBZGRSZWNvcmQoIHJlY29yZCApO1xuXHRcdHN1cGVyLmRvU2F2ZUFQSUNhbGwoIHJlY29yZCwgaWdub3JlV2FybmluZywgY2FsbGJhY2sgKTtcblx0fVxuXG5cdHNldEVkaXRNZW51U2F2ZUFuZENvbnRpbnVlSWNvbiggY29udGV4dF9idG4sIHBJZCApIHtcblx0XHR0aGlzLnNhdmVBbmRDb250aW51ZVZhbGlkYXRlKCBjb250ZXh0X2J0biApO1xuXG5cdFx0aWYgKCB0aGlzLmlzX21hc3NfYWRkaW5nIHx8ICF0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQgKSB7XG5cdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCBmYWxzZSApO1xuXHRcdH1cblx0fVxuXG5cdHNldEVkaXRNZW51U2F2ZUFuZEFkZEljb24oIGNvbnRleHRfYnRuLCBwSWQgKSB7XG5cdFx0dGhpcy5zYXZlQW5kTmV3VmFsaWRhdGUoIGNvbnRleHRfYnRuICk7XG5cblx0XHRpZiAoICF0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQgfHwgIXRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5pZCApIHtcblx0XHRcdENvbnRleHRNZW51TWFuYWdlci5kaXNhYmxlTWVudUl0ZW0oIHRoaXMuZGV0ZXJtaW5lQ29udGV4dE1lbnVNb3VudEF0dHJpYnV0ZXMoKS5pZCwgY29udGV4dF9idG4uaWQsIGZhbHNlICk7XG5cdFx0fVxuXHR9XG5cblx0c2V0RWRpdE1lbnVTYXZlQW5kQ29weUljb24oIGNvbnRleHRfYnRuLCBwSWQgKSB7XG5cdFx0dGhpcy5zYXZlQW5kQ29udGludWVWYWxpZGF0ZSggY29udGV4dF9idG4gKTtcblxuXHRcdGlmICggIXRoaXMuY3VycmVudF9lZGl0X3JlY29yZCB8fCAhdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmlkICkge1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgZmFsc2UgKTtcblx0XHR9XG5cdH1cblxuXHRzZXRFZGl0Vmlld0RhdGEoKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRzdXBlci5zZXRFZGl0Vmlld0RhdGEoKTsgLy9TZXQgTmF2aWdhdGlvblxuXG5cdFx0dGhpcy5zZXRDdXJyZW5jeSgpO1xuXG5cdFx0aWYgKCAhdGhpcy5zdWJfdmlld19tb2RlICkge1xuXHRcdFx0dmFyIHdpZGdldCA9ICR0aGlzLmVkaXRfdmlld191aV9kaWNbJ3VzZXJfaWQnXTtcblx0XHRcdGlmICggd2lkZ2V0ICkge1xuXHRcdFx0XHRpZiAoICggIXRoaXMuY3VycmVudF9lZGl0X3JlY29yZCB8fCAhdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmlkICkgJiYgIXRoaXMuaXNfbWFzc19lZGl0aW5nICkge1xuXHRcdFx0XHRcdHdpZGdldC5zZXRBbGxvd011bHRpcGxlU2VsZWN0aW9uKCB0cnVlICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0d2lkZ2V0LnNldEFsbG93TXVsdGlwbGVTZWxlY3Rpb24oIGZhbHNlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQkdGhpcy5vblR5cGVDaGFuZ2UoIGZhbHNlICk7XG5cdH1cblxuXHRzZXRDdXJyZW5jeSgpIHtcblxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0aWYgKCBHbG9iYWwuaXNTZXQoIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC51c2VyX2lkICkgKSB7XG5cdFx0XHR2YXIgZmlsdGVyID0ge307XG5cdFx0XHRmaWx0ZXIuZmlsdGVyX2RhdGEgPSB7IHVzZXJfaWQ6IHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC51c2VyX2lkIH07XG5cblx0XHRcdHRoaXMuY3VycmVuY3lfYXBpLmdldEN1cnJlbmN5KCBmaWx0ZXIsIGZhbHNlLCBmYWxzZSwge1xuXHRcdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlcyApIHtcblx0XHRcdFx0XHRyZXMgPSByZXMuZ2V0UmVzdWx0KCk7XG5cdFx0XHRcdFx0aWYgKCBHbG9iYWwuaXNBcnJheSggcmVzICkgKSB7XG5cdFx0XHRcdFx0XHQkdGhpcy5jdXJyZW5jeS50ZXh0KCByZXNbMF0uc3ltYm9sICk7XG5cdFx0XHRcdFx0XHQkdGhpcy5jb2RlLnRleHQoIHJlc1swXS5pc29fY29kZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQkdGhpcy5jdXJyZW5jeS50ZXh0KCAnJyApO1xuXHRcdFx0XHRcdFx0JHRoaXMuY29kZS50ZXh0KCAnJyApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0SG91cmx5UmF0ZSgpIHtcblxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0aWYgKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQud2FnZSAmJlxuXHRcdFx0dGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLndlZWtseV90aW1lICYmXG5cdFx0XHR0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQudHlwZV9pZCAmJlxuXHRcdFx0dGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnR5cGVfaWQgIT0gMTAgKSB7XG5cblx0XHRcdC8vd3drbHlfdGltZSBuZWVkIHZhbHVlIGJlZm9yZSBwYXNyc2UgdG8gc2Vjb25kcy5cblx0XHRcdHRoaXMuYXBpLmdldEhvdXJseVJhdGUoIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC53YWdlLCAkdGhpcy5lZGl0X3ZpZXdfdWlfZGljWyd3ZWVrbHlfdGltZSddLmdldElucHV0VmFsdWUoKSwgdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnR5cGVfaWQsIHtcblx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cdFx0XHRcdFx0dmFyIHJlcyA9IHJlc3VsdC5nZXRSZXN1bHQoKTtcblxuXHRcdFx0XHRcdGlmICggcmVzdWx0LmlzVmFsaWQoKSApIHtcblx0XHRcdFx0XHRcdCR0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuaG91cmx5X3JhdGUgPSByZXM7XG5cdFx0XHRcdFx0XHQkdGhpcy5lZGl0X3ZpZXdfdWlfZGljWydob3VybHlfcmF0ZSddLnZhbCggcmVzICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cdH1cblxuXHRvblR5cGVDaGFuZ2UoIGdldFJhdGUgKSB7XG5cblx0XHRpZiAoIHBhcnNlSW50KCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQudHlwZV9pZCApICE9IDEwICkge1xuXHRcdFx0dGhpcy5hdHRhY2hFbGVtZW50KCAnd2Vla2x5X3RpbWUnICk7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdob3VybHlfcmF0ZScgKTtcblxuXHRcdFx0aWYgKCBnZXRSYXRlICkge1xuXHRcdFx0XHR0aGlzLmdldEhvdXJseVJhdGUoKTtcblx0XHRcdH1cblxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmRldGFjaEVsZW1lbnQoICd3ZWVrbHlfdGltZScgKTtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ2hvdXJseV9yYXRlJyApO1xuXHRcdH1cblx0fVxuXG5cdGJ1aWxkRWRpdFZpZXdVSSgpIHtcblxuXHRcdHN1cGVyLmJ1aWxkRWRpdFZpZXdVSSgpO1xuXG5cdFx0dmFyICR0aGlzID0gdGhpcztcblxuXHRcdHZhciB0YWJfbW9kZWwgPSB7XG5cdFx0XHQndGFiX3dhZ2UnOiB7ICdsYWJlbCc6ICQuaTE4bi5fKCAnV2FnZScgKSB9LFxuXHRcdFx0J3RhYl9hdHRhY2htZW50JzogdHJ1ZSxcblx0XHRcdCd0YWJfYXVkaXQnOiB0cnVlLFxuXHRcdH07XG5cdFx0dGhpcy5zZXRUYWJNb2RlbCggdGFiX21vZGVsICk7XG5cblx0XHR0aGlzLm5hdmlnYXRpb24uQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVVzZXJXYWdlLFxuXHRcdFx0aWQ6IHRoaXMuc2NyaXB0X25hbWUgKyAnX25hdmlnYXRpb24nLFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiBmYWxzZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX3dhZ2UnLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0bmF2aWdhdGlvbl9tb2RlOiB0cnVlXG5cdFx0fSApO1xuXG5cdFx0dGhpcy5zZXROYXZpZ2F0aW9uKCk7XG5cblx0XHQvL1RhYiAwIHN0YXJ0XG5cblx0XHR2YXIgdGFiX3dhZ2UgPSB0aGlzLmVkaXRfdmlld190YWIuZmluZCggJyN0YWJfd2FnZScgKTtcblxuXHRcdHZhciB0YWJfd2FnZV9jb2x1bW4xID0gdGFiX3dhZ2UuZmluZCggJy5maXJzdC1jb2x1bW4nICk7XG5cblx0XHR2YXIgZm9ybV9pdGVtX2lucHV0O1xuXHRcdHZhciB3aWRnZXRDb250YWluZXI7XG5cdFx0dmFyIGxhYmVsO1xuXG5cdFx0aWYgKCAhdGhpcy5zdWJfdmlld19tb2RlICkge1xuXHRcdFx0Ly9FbXBsb3llZVxuXG5cdFx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cdFx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJVXNlcixcblx0XHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiBmYWxzZSxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdXNlcicsXG5cdFx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0XHRmaWVsZDogJ3VzZXJfaWQnXG5cblx0XHRcdH0gKTtcblxuXHRcdFx0dmFyIGRlZmF1bHRfYXJncyA9IHt9O1xuXHRcdFx0ZGVmYXVsdF9hcmdzLnBlcm1pc3Npb25fc2VjdGlvbiA9ICd3YWdlJztcblx0XHRcdGZvcm1faXRlbV9pbnB1dC5zZXREZWZhdWx0QXJncyggZGVmYXVsdF9hcmdzICk7XG5cdFx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0VtcGxveWVlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl93YWdlX2NvbHVtbjEsICcnICk7XG5cdFx0fVxuXG5cdFx0Ly9XYWdlIEdyb3VwXG5cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElXYWdlR3JvdXAsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IGZhbHNlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfd2FnZV9ncm91cCcsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRzZXRfZGVmYXVsdDogdHJ1ZSxcblx0XHRcdGZpZWxkOiAnd2FnZV9ncm91cF9pZCdcblx0XHR9ICk7XG5cblx0XHRpZiAoIHRoaXMuc3ViX3ZpZXdfbW9kZSApIHtcblx0XHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnV2FnZSBHcm91cCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfd2FnZV9jb2x1bW4xLCAnJyApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1dhZ2UgR3JvdXAnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3dhZ2VfY29sdW1uMSApO1xuXHRcdH1cblxuXHRcdC8vVHlwZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAndHlwZV9pZCcgfSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy50eXBlX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdUeXBlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl93YWdlX2NvbHVtbjEgKTtcblxuXHRcdC8vV2FnZVxuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ3dhZ2UnLCB3aWR0aDogOTAgfSApO1xuXG5cdFx0d2lkZ2V0Q29udGFpbmVyID0gJCggJzxkaXYgY2xhc3M9XFwnd2lkZ2V0LWgtYm94XFwnPjwvZGl2PicgKTtcblx0XHR0aGlzLmN1cnJlbmN5ID0gJCggJzxzcGFuIGNsYXNzPVxcJ3dpZGdldC1sZWZ0LWxhYmVsXFwnPjwvc3Bhbj4nICk7XG5cdFx0dGhpcy5jb2RlID0gJCggJzxzcGFuIGNsYXNzPVxcJ3dpZGdldC1yaWdodC1sYWJlbFxcJz48L3NwYW4+JyApO1xuXG5cdFx0d2lkZ2V0Q29udGFpbmVyLmFwcGVuZCggdGhpcy5jdXJyZW5jeSApO1xuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGZvcm1faXRlbV9pbnB1dCApO1xuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIHRoaXMuY29kZSApO1xuXG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdXYWdlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl93YWdlX2NvbHVtbjEsICcnLCB3aWRnZXRDb250YWluZXIgKTtcblxuXHRcdC8vQXZlcmFnZSBUaW1lIC8gV2Vla1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0SW5wdXQoIHsgZmllbGQ6ICd3ZWVrbHlfdGltZScsIG5lZWRfcGFyc2VyX3NlYzogdHJ1ZSB9ICk7XG5cblx0XHR3aWRnZXRDb250YWluZXIgPSAkKCAnPGRpdiBjbGFzcz1cXCd3aWRnZXQtaC1ib3hcXCc+PC9kaXY+JyApO1xuXHRcdGxhYmVsID0gJCggJzxzcGFuIGNsYXNzPVxcJ3dpZGdldC1yaWdodC1sYWJlbFxcJz4oICcgKyAkLmkxOG4uXyggJ2llJyApICsgJzogJyArICQuaTE4bi5fKCAnNDAgaG91cnMgLyB3ZWVrJyApICsgJyApPC9zcGFuPicgKTtcblxuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGZvcm1faXRlbV9pbnB1dCApO1xuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGxhYmVsICk7XG5cblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0F2ZXJhZ2UgVGltZSAvIFdlZWsnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3dhZ2VfY29sdW1uMSwgJycsIHdpZGdldENvbnRhaW5lciwgdHJ1ZSApO1xuXG5cdFx0Ly9Bbm51YWwgSG91cmx5IFJhdGVcblxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAnaG91cmx5X3JhdGUnIH0gKTtcblxuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnQW5udWFsIEhvdXJseSBSYXRlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl93YWdlX2NvbHVtbjEsICcnLCBudWxsLCB0cnVlICk7XG5cblx0XHQvL0xhYm9yIEJ1cmRlbiBQZXJjZW50XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2xhYm9yX2J1cmRlbl9wZXJjZW50Jywgd2lkdGg6IDUwIH0gKTtcblxuXHRcdHdpZGdldENvbnRhaW5lciA9ICQoICc8ZGl2IGNsYXNzPVxcJ3dpZGdldC1oLWJveFxcJz48L2Rpdj4nICk7XG5cdFx0bGFiZWwgPSAkKCAnPHNwYW4gY2xhc3M9XFwnd2lkZ2V0LXJpZ2h0LWxhYmVsXFwnPiUgKCAnICsgJC5pMThuLl8oICdpZScgKSArICc6ICcgKyAkLmkxOG4uXyggJzI1JiMzNzsgYnVyZGVuJyApICsgJyApPC9zcGFuPicgKTsgLy9IYWQgaXNzdWVzIHdpdGggJyUnIGFuZCAnJSUnLCB1c2luZyB0aGUgSFRNTCBFbnRpdHkgY2hhcmFjdGVyIGNvZGUgZm9yICUgaW5zdGVhZC5cblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBmb3JtX2l0ZW1faW5wdXQgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBsYWJlbCApO1xuXG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdMYWJvciBCdXJkZW4gUGVyY2VudCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfd2FnZV9jb2x1bW4xLCAnJywgd2lkZ2V0Q29udGFpbmVyICk7XG5cblx0XHQvL0VmZmVjdGl2ZSBEYXRlXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5EQVRFX1BJQ0tFUiApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LlREYXRlUGlja2VyKCB7IGZpZWxkOiAnZWZmZWN0aXZlX2RhdGUnLCB3aWR0aDogMTIwIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0VmZmVjdGl2ZSBEYXRlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl93YWdlX2NvbHVtbjEgKTtcblxuXHRcdC8vTm90ZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9BUkVBICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0QXJlYSggeyBmaWVsZDogJ25vdGUnLCB3aWR0aDogMzg5LCBoZWlnaHQ6IDExNyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdOb3RlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl93YWdlX2NvbHVtbjEsICcnLCBudWxsLCBudWxsLCB0cnVlICk7XG5cdH1cblxuXHQvL092ZXJyaWRlIGZvcjogRG8gbm90IHNob3cgZmlyc3QgMiBjb2x1bW5zIGluIHN1YiB3YWdlIHZpZXdcblx0c2V0U2VsZWN0TGF5b3V0KCkge1xuXHRcdGlmICggdGhpcy5zdWJfdmlld19tb2RlICkge1xuXHRcdFx0c3VwZXIuc2V0U2VsZWN0TGF5b3V0KCBbJ2ZpcnN0X25hbWUnLCAnbGFzdF9uYW1lJ10gKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuc2V0U2VsZWN0TGF5b3V0KCk7XG5cdFx0fVxuXHR9XG5cblx0c2V0UHJvdmluY2UoIHZhbCwgbSApIHtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXG5cdFx0aWYgKCAhdmFsIHx8IHZhbCA9PT0gJy0xJyB8fCB2YWwgPT09ICcwJyApIHtcblx0XHRcdCR0aGlzLnByb3ZpbmNlX2FycmF5ID0gW107XG5cdFx0XHR0aGlzLmFkdl9zZWFyY2hfZmllbGRfdWlfZGljWydwcm92aW5jZSddLnNldFNvdXJjZURhdGEoIFtdICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuY29tcGFueV9hcGkuZ2V0T3B0aW9ucyggJ3Byb3ZpbmNlJywgdmFsLCB7XG5cdFx0XHRcdG9uUmVzdWx0OiBmdW5jdGlvbiggcmVzICkge1xuXHRcdFx0XHRcdHJlcyA9IHJlcy5nZXRSZXN1bHQoKTtcblx0XHRcdFx0XHRpZiAoICFyZXMgKSB7XG5cdFx0XHRcdFx0XHRyZXMgPSBbXTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQkdGhpcy5wcm92aW5jZV9hcnJheSA9IEdsb2JhbC5idWlsZFJlY29yZEFycmF5KCByZXMgKTtcblx0XHRcdFx0XHQkdGhpcy5hZHZfc2VhcmNoX2ZpZWxkX3VpX2RpY1sncHJvdmluY2UnXS5zZXRTb3VyY2VEYXRhKCAkdGhpcy5wcm92aW5jZV9hcnJheSApO1xuXG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cdH1cblxuXHRlU2V0UHJvdmluY2UoIHZhbCApIHtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdHZhciBwcm92aW5jZV93aWRnZXQgPSAkdGhpcy5lZGl0X3ZpZXdfdWlfZGljWydwcm92aW5jZSddO1xuXG5cdFx0aWYgKCAhdmFsIHx8IHZhbCA9PT0gJy0xJyB8fCB2YWwgPT09ICcwJyApIHtcblx0XHRcdCR0aGlzLmVfcHJvdmluY2VfYXJyYXkgPSBbXTtcblx0XHRcdHByb3ZpbmNlX3dpZGdldC5zZXRTb3VyY2VEYXRhKCBbXSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmNvbXBhbnlfYXBpLmdldE9wdGlvbnMoICdwcm92aW5jZScsIHZhbCwge1xuXHRcdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlcyApIHtcblx0XHRcdFx0XHRyZXMgPSByZXMuZ2V0UmVzdWx0KCk7XG5cdFx0XHRcdFx0aWYgKCAhcmVzICkge1xuXHRcdFx0XHRcdFx0cmVzID0gW107XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0JHRoaXMuZV9wcm92aW5jZV9hcnJheSA9IEdsb2JhbC5idWlsZFJlY29yZEFycmF5KCByZXMgKTtcblx0XHRcdFx0XHRwcm92aW5jZV93aWRnZXQuc2V0U291cmNlRGF0YSggJHRoaXMuZV9wcm92aW5jZV9hcnJheSApO1xuXG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cdH1cblxuXHRvblNldFNlYXJjaEZpbHRlckZpbmlzaGVkKCkge1xuXG5cdFx0aWYgKCB0aGlzLnNlYXJjaF9wYW5lbC5nZXRTZWxlY3RUYWJJbmRleCgpID09PSAxICkge1xuXHRcdFx0dmFyIGNvbWJvID0gdGhpcy5hZHZfc2VhcmNoX2ZpZWxkX3VpX2RpY1snY291bnRyeSddO1xuXHRcdFx0dmFyIHNlbGVjdF92YWx1ZSA9IGNvbWJvLmdldFZhbHVlKCk7XG5cdFx0XHR0aGlzLnNldFByb3ZpbmNlKCBzZWxlY3RfdmFsdWUgKTtcblx0XHR9XG5cdH1cblxuXHRvbkJ1aWxkQmFzaWNVSUZpbmlzaGVkKCkge1xuXHRcdHZhciBiYXNpY1NlYXJjaFRhYlBhbmVsID0gdGhpcy5zZWFyY2hfcGFuZWwuZmluZCggJ2RpdiAjYmFzaWNfc2VhcmNoJyApO1xuXHR9XG5cblx0b25CdWlsZEFkdlVJRmluaXNoZWQoKSB7XG5cblx0XHR0aGlzLmFkdl9zZWFyY2hfZmllbGRfdWlfZGljWydjb3VudHJ5J10uY2hhbmdlKCAkLnByb3h5KCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBjb21ibyA9IHRoaXMuYWR2X3NlYXJjaF9maWVsZF91aV9kaWNbJ2NvdW50cnknXTtcblx0XHRcdHZhciBzZWxlY3RWYWwgPSBjb21iby5nZXRWYWx1ZSgpO1xuXG5cdFx0XHR0aGlzLnNldFByb3ZpbmNlKCBzZWxlY3RWYWwgKTtcblxuXHRcdFx0dGhpcy5hZHZfc2VhcmNoX2ZpZWxkX3VpX2RpY1sncHJvdmluY2UnXS5zZXRWYWx1ZSggbnVsbCApO1xuXG5cdFx0fSwgdGhpcyApICk7XG5cdH1cblxuXHRidWlsZFNlYXJjaEZpZWxkcygpIHtcblxuXHRcdHN1cGVyLmJ1aWxkU2VhcmNoRmllbGRzKCk7XG5cblx0XHR2YXIgZGVmYXVsdF9hcmdzID0geyBwZXJtaXNzaW9uX3NlY3Rpb246ICd3YWdlJyB9O1xuXHRcdHRoaXMuc2VhcmNoX2ZpZWxkcyA9IFtcblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdFbXBsb3llZScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ3VzZXJfaWQnLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF91c2VyJyxcblx0XHRcdFx0ZGVmYXVsdF9hcmdzOiBkZWZhdWx0X2FyZ3MsXG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJVXNlcixcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnVHlwZScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ3R5cGVfaWQnLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9vcHRpb25fY29sdW1uJyxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnV2FnZSBHcm91cCcgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ3dhZ2VfZ3JvdXBfaWQnLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF93YWdlX2dyb3VwJyxcblx0XHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElXYWdlR3JvdXAsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1gsXG5cdFx0XHRcdGFkZGl0aW9uX3NvdXJjZV9mdW5jdGlvbjogKCB0YXJnZXQsIHNvdXJjZV9kYXRhICkgPT4geyAvL0lzc3VlICMzMTgzIC0gQWxsb3cgZmlsdGVyaW5nIGJ5IGRlZmF1bHQgd2FnZSBncm91cHNcblx0XHRcdFx0XHRzb3VyY2VfZGF0YS51bnNoaWZ0KCB7IGlkOiBUVFVVSUQuemVyb19pZCwgbmFtZTogJC5pMThuLl8oICctLSBEZWZhdWx0IC0tJyApIH0gKTtcblx0XHRcdFx0XHRyZXR1cm4gc291cmNlX2RhdGE7XG5cdFx0XHRcdH0sXG5cdFx0XHR9ICksXG5cblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdTdGF0dXMnICksXG5cdFx0XHRcdGluX2NvbHVtbjogMSxcblx0XHRcdFx0ZmllbGQ6ICdzdGF0dXNfaWQnLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfb3B0aW9uX2NvbHVtbicsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0dyb3VwJyApLFxuXHRcdFx0XHRpbl9jb2x1bW46IDEsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRmaWVsZDogJ2dyb3VwX2lkJyxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdHJlZV9jb2x1bW4nLFxuXHRcdFx0XHR0cmVlX21vZGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogZmFsc2UsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0NyZWF0ZWQgQnknICksXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0ZmllbGQ6ICdjcmVhdGVkX2J5Jyxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdXNlcicsXG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJVXNlcixcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0c2NyaXB0X25hbWU6ICdFbXBsb3llZVZpZXcnLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YXG5cdFx0XHR9ICksXG5cblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdVcGRhdGVkIEJ5JyApLFxuXHRcdFx0XHRpbl9jb2x1bW46IDIsXG5cdFx0XHRcdGZpZWxkOiAndXBkYXRlZF9ieScsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX3VzZXInLFxuXHRcdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVVzZXIsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IHRydWUsXG5cdFx0XHRcdHNjcmlwdF9uYW1lOiAnRW1wbG95ZWVWaWV3Jyxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnRGVmYXVsdCBCcmFuY2gnICksXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0ZmllbGQ6ICdkZWZhdWx0X2JyYW5jaF9pZCcsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX2JyYW5jaCcsXG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJQnJhbmNoLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0RlZmF1bHQgRGVwYXJ0bWVudCcgKSxcblx0XHRcdFx0ZmllbGQ6ICdkZWZhdWx0X2RlcGFydG1lbnRfaWQnLFxuXHRcdFx0XHRpbl9jb2x1bW46IDIsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX2RlcGFydG1lbnQnLFxuXHRcdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSURlcGFydG1lbnQsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IGZhbHNlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YXG5cdFx0XHR9ICksXG5cblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdUaXRsZScgKSxcblx0XHRcdFx0ZmllbGQ6ICd0aXRsZV9pZCcsXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfam9iX3RpdGxlJyxcblx0XHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElVc2VyVGl0bGUsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IGZhbHNlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YXG5cdFx0XHR9ICksXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnQ291bnRyeScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAzLFxuXHRcdFx0XHRmaWVsZDogJ2NvdW50cnknLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfb3B0aW9uX2NvbHVtbicsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YXG5cdFx0XHR9ICksXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnUHJvdmluY2UvU3RhdGUnICksXG5cdFx0XHRcdGluX2NvbHVtbjogMyxcblx0XHRcdFx0ZmllbGQ6ICdwcm92aW5jZScsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IGZhbHNlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9vcHRpb25fY29sdW1uJyxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApXG5cblx0XHRdO1xuXHR9XG5cblx0Y2xlYW5XaGVuVW5sb2FkVmlldyggY2FsbEJhY2sgKSB7XG5cblx0XHQkKCAnI3dhZ2Vfdmlld19jb250YWluZXInICkucmVtb3ZlKCk7XG5cdFx0c3VwZXIuY2xlYW5XaGVuVW5sb2FkVmlldyggY2FsbEJhY2sgKTtcblx0fVxuXG5cdHNlYXJjaERvbmUoKSB7XG5cdFx0VFRQcm9taXNlLnJlc29sdmUoICdXYWdlVmlldycsICdpbml0JyApO1xuXHRcdHN1cGVyLnNlYXJjaERvbmUoKTtcblx0fVxuXG59XG5cbldhZ2VWaWV3Q29udHJvbGxlci5sb2FkVmlldyA9IGZ1bmN0aW9uKCBjb250YWluZXIgKSB7XG5cdEdsb2JhbC5sb2FkVmlld1NvdXJjZSggJ1dhZ2UnLCAnV2FnZVZpZXcuaHRtbCcsIGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cdFx0dmFyIGFyZ3MgPSB7fTtcblx0XHR2YXIgdGVtcGxhdGUgPSBfLnRlbXBsYXRlKCByZXN1bHQgKTtcblx0XHRpZiAoIEdsb2JhbC5pc1NldCggY29udGFpbmVyICkgKSB7XG5cdFx0XHRjb250YWluZXIuaHRtbCggdGVtcGxhdGUoIGFyZ3MgKSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRHbG9iYWwuY29udGVudENvbnRhaW5lcigpLmh0bWwoIHRlbXBsYXRlKCBhcmdzICkgKTtcblx0XHR9XG5cdH0gKTtcbn07XG5cbldhZ2VWaWV3Q29udHJvbGxlci5sb2FkU3ViVmlldyA9IGZ1bmN0aW9uKCBjb250YWluZXIsIGJlZm9yZVZpZXdMb2FkZWRGdW4sIGFmdGVyVmlld0xvYWRlZEZ1biApIHtcblx0R2xvYmFsLmxvYWRWaWV3U291cmNlKCAnV2FnZScsICdTdWJXYWdlVmlldy5odG1sJywgZnVuY3Rpb24oIHJlc3VsdCApIHtcblx0XHR2YXIgYXJncyA9IHt9O1xuXHRcdHZhciB0ZW1wbGF0ZSA9IF8udGVtcGxhdGUoIHJlc3VsdCApO1xuXHRcdGlmICggR2xvYmFsLmlzU2V0KCBiZWZvcmVWaWV3TG9hZGVkRnVuICkgKSB7XG5cdFx0XHRiZWZvcmVWaWV3TG9hZGVkRnVuKCk7XG5cdFx0fVxuXG5cdFx0aWYgKCBHbG9iYWwuaXNTZXQoIGNvbnRhaW5lciApICkge1xuXHRcdFx0Y29udGFpbmVyLmh0bWwoIHRlbXBsYXRlKCBhcmdzICkgKTtcblxuXHRcdFx0aWYgKCBHbG9iYWwuaXNTZXQoIGFmdGVyVmlld0xvYWRlZEZ1biApICkge1xuXHRcdFx0XHRhZnRlclZpZXdMb2FkZWRGdW4oIHN1Yl93YWdlX3ZpZXdfY29udHJvbGxlciApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSApO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2085\n")}}]); |