TimeTrex/interface/html5/dist/hr-recruitment-JobApplicantEmploymentViewController.bundle.js

1 line
38 KiB
JavaScript

"use strict";(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["hr-recruitment-JobApplicantEmploymentViewController"],{2257:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JobApplicantEmploymentViewController\": () => (/* binding */ JobApplicantEmploymentViewController)\n/* harmony export */ });\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\nclass JobApplicantEmploymentViewController extends BaseViewController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\t\t\tel: '#job_applicant_employment_view_container',\n\n\t\t\tcountry_array: null,\n\t\t\tprovince_array: null,\n\t\t\te_province_array: null,\n\t\t\ti_province_array: null,\n\t\t\temployment_status_array: null,\n\t\t\twage_type_array: null,\n\n\t\t\tcompany_api: null,\n\n\t\t\tsub_view_grid_autosize: true,\n\t\t\tsub_view_mode: true\n\t\t} );\n\n\t\tsuper( options );\n\t}\n\n\tinitOptions() {\n\t\tvar options = [\n\t\t\t{ option_name: 'employment_status', api: this.api },\n\t\t\t{ option_name: 'wage_type', api: this.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\t}\n\n\tshowNoResultCover( show_new_btn ) {\n\t\tsuper.showNoResultCover( ( this.sub_view_mode ) ? true : false );\n\t}\n\n\tonAddClick() {\n\t\tif ( this.sub_view_mode ) {\n\t\t\tthis.buildContextMenu( true );\n\t\t}\n\n\t\tsuper.onAddClick();\n\t}\n\n\tinit( options ) {\n\t\t//this._super('initialize', options );\n\t\tthis.edit_view_tpl = 'JobApplicantEmploymentEditView.html';\n\t\tthis.permission_id = 'job_applicant';\n\t\tthis.viewId = 'JobApplicantEmployment';\n\t\tthis.script_name = 'JobApplicantEmploymentView';\n\t\tthis.table_name_key = 'job_applicant_employment';\n\t\tthis.context_menu_name = $.i18n._( 'Employment' );\n\t\tthis.navigation_label = $.i18n._( 'Job Applicant Employment' );\n\t\tthis.api = TTAPI.APIJobApplicantEmployment;\n\t\tthis.company_api = TTAPI.APICompany;\n\t\tthis.render();\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\tbuildEditViewUI() {\n\t\tsuper.buildEditViewUI();\n\n\t\tvar $this = this;\n\n\t\tvar tab_model = {\n\t\t\t'tab_job_applicant_employment': { 'label': $.i18n._( 'Job Applicant Employment' ), 'is_multi_column': 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.APIJobApplicantEmployment,\n\t\t\tid: this.script_name + '_navigation',\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_job_applicant_employment',\n\t\t\tnavigation_mode: true,\n\t\t\tshow_search_inputs: true\n\t\t} );\n\n\t\tthis.setNavigation();\n\n\t\tvar tab_job_applicant_employment = this.edit_view_tab.find( '#tab_job_applicant_employment' );\n\t\tvar tab_job_applicant_employment_column1 = tab_job_applicant_employment.find( '.first-column' );\n\t\tvar tab_job_applicant_employment_column2 = tab_job_applicant_employment.find( '.second-column' );\n\n\t\tthis.edit_view_tabs[0] = [];\n\n\t\tthis.edit_view_tabs[0].push( tab_job_applicant_employment_column1 );\n\t\tthis.edit_view_tabs[0].push( tab_job_applicant_employment_column2 );\n\n\t\tvar form_item_input;\n\t\tvar widgetContainer;\n\t\tvar label;\n\n\t\t// tab_job_applicant_employment column1\n\n\t\t// Company Name\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'company_name', width: '100%' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Company Name' ), form_item_input, tab_job_applicant_employment_column1, '' );\n\n\t\tform_item_input.parent().width( '45%' );\n\n\t\t// Job Title\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'title', width: 200 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Title' ), form_item_input, tab_job_applicant_employment_column1 );\n\n\t\t// Description\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_AREA );\n\n\t\tform_item_input.TTextArea( { field: 'description' } );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Description' ), form_item_input, tab_job_applicant_employment_column1, '', null, null, true );\n\n\t\t// Address (Line 1)\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'address1', width: '100%' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Address (Line 1)' ), form_item_input, tab_job_applicant_employment_column1 );\n\n\t\tform_item_input.parent().width( '45%' );\n\n\t\t// Address (Line 2)\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'address2', width: '100%' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Address (Line 2)' ), form_item_input, tab_job_applicant_employment_column1 );\n\n\t\tform_item_input.parent().width( '45%' );\n\n\t\t// City\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'city', width: 200 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'City' ), form_item_input, tab_job_applicant_employment_column1 );\n\n\t\t// Country\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'country', set_empty: true } );\n\t\tform_item_input.setSourceData( $this.country_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Country' ), form_item_input, tab_job_applicant_employment_column1 );\n\n\t\t// Province/State\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'province' } );\n\t\tform_item_input.setSourceData( [] );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Province/State' ), form_item_input, tab_job_applicant_employment_column1 );\n\n\t\t// Postal / ZIP Code\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'postal_code', width: 90 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Postal/ZIP Code' ), form_item_input, tab_job_applicant_employment_column1 );\n\n\t\t// Employment Status\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'employment_status_id' } );\n\t\tform_item_input.setSourceData( $this.employment_status_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Employment Status' ), form_item_input, tab_job_applicant_employment_column1 );\n\n\t\t// Wage Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'wage_type_id' } );\n\t\tform_item_input.setSourceData( $this.wage_type_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Wage Type' ), form_item_input, tab_job_applicant_employment_column1 );\n\n\t\t// Wage\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'wage', width: 50 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Wage' ), form_item_input, tab_job_applicant_employment_column1 );\n\n\t\t// Start Date\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );\n\n\t\tform_item_input.TDatePicker( { field: 'start_date' } );\n\n\t\twidgetContainer = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tlabel = $( '<span class=\\'widget-right-label\\'> ' + $.i18n._( 'ie' ) + ' : ' + LocalCacheData.getLoginUserPreference().date_format_display + '</span>' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Start Date' ), form_item_input, tab_job_applicant_employment_column1, '', widgetContainer );\n\n\t\t// End Date\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );\n\n\t\tform_item_input.TDatePicker( { field: 'end_date' } );\n\n\t\twidgetContainer = $( '<div class=\\'widget-h-box\\'></div>' );\n\t\tlabel = $( '<span class=\\'widget-right-label\\'> ' + $.i18n._( 'ie' ) + ' : ' + LocalCacheData.getLoginUserPreference().date_format_display + '</span>' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'End Date' ), form_item_input, tab_job_applicant_employment_column1, '', widgetContainer );\n\n\t\t// Current Employer\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_input.TCheckbox( { field: 'is_current_employer' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Current Employer' ), form_item_input, tab_job_applicant_employment_column2, '' );\n\n\t\t// Contact First Name\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'contact_first_name', width: 200 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Contact First Name' ), form_item_input, tab_job_applicant_employment_column2 );\n\n\t\t// Contact Last Name\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'contact_last_name', width: 200 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Contact Last Name' ), form_item_input, tab_job_applicant_employment_column2 );\n\n\t\t// Contact Title\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'contact_title', width: 200 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Contact Title' ), form_item_input, tab_job_applicant_employment_column2 );\n\n\t\t// Contact Work Phone\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'contact_work_phone', width: 200 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Contact Work Phone' ), form_item_input, tab_job_applicant_employment_column2 );\n\n\t\t// Contact Mobile Phone\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'contact_mobile_phone', width: 200 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Contact Mobile Phone' ), form_item_input, tab_job_applicant_employment_column2 );\n\n\t\t// Contact Work Email\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'contact_work_email', width: 200 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Contact Work Email' ), form_item_input, tab_job_applicant_employment_column2 );\n\n\t\t// May we contact this person/employer\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_input.TCheckbox( { field: 'is_contact_available' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'May we contact this person/employer' ), form_item_input, tab_job_applicant_employment_column2 );\n\n\t\t// Reason for leaving\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_AREA );\n\n\t\tform_item_input.TTextArea( { field: 'leave_reason' } );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Reason for leaving' ), form_item_input, tab_job_applicant_employment_column2, '', null, null, true );\n\n\t\t//Tags\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TAG_INPUT );\n\n\t\tform_item_input.TTagInput( { field: 'tag', object_type_id: 380 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Tags' ), form_item_input, tab_job_applicant_employment_column2, '', null, null, true );\n\t}\n\n\tonFormItemChange( target, doNotValidate ) {\n\t\tthis.setIsChanged( target );\n\t\tthis.setMassEditingFieldsWhenFormChange( target );\n\t\tvar key = target.getField();\n\n\t\tthis.current_edit_record[key] = target.getValue();\n\n\t\tswitch ( key ) {\n\n\t\t\tcase 'country':\n\t\t\t\tvar widget = this.edit_view_ui_dic['province'];\n\t\t\t\twidget.setValue( null );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( key === 'country' ) {\n\t\t\tthis.onCountryChange();\n\t\t\treturn;\n\t\t}\n\t\tif ( !doNotValidate ) {\n\t\t\tthis.validate();\n\t\t}\n\t}\n\n\tsetCurrentEditRecordData() {\n\n\t\t//Set current edit record data to all widgets\n\t\t//Set current edit record data to all widgets\n\t\tfor ( var key in this.current_edit_record ) {\n\t\t\tvar widget = this.edit_view_ui_dic[key];\n\t\t\tif ( Global.isSet( widget ) ) {\n\t\t\t\tswitch ( key ) {\n\t\t\t\t\tcase 'country': //popular case\n\t\t\t\t\t\tthis.setCountryValue( widget, key );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\twidget.setValue( this.current_edit_record[key] );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tthis.collectUIDataToCurrentEditRecord();\n\t\tthis.setEditViewDataDone();\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\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, refresh ) {\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\tif ( refresh && $this.e_province_array.length > 0 ) {\n\t\t\t\t\t\t$this.current_edit_record.province = $this.e_province_array[0].value;\n\t\t\t\t\t\tprovince_widget.setValue( $this.current_edit_record.province );\n\t\t\t\t\t}\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\tonGridSelectRow() {\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\t\tthis.setDefaultMenu();\n\t}\n\n\tsearchDone() {\n\n\t\tsuper.searchDone();\n\n\t\tTTPromise.resolve( 'JobApplicant_History_Tab', 'JobApplicantEmploymentViewController' );\n\n\t}\n\n}\n\nJobApplicantEmploymentViewController.loadSubView = function( container, beforeViewLoadedFun, afterViewLoadedFun ) {\n\tGlobal.loadViewSource( 'JobApplicantEmployment', 'SubJobApplicantEmploymentView.html', function( result ) {\n\t\tvar args = {};\n\t\tvar template = _.template( result );\n\n\t\tif ( Global.isSet( beforeViewLoadedFun ) ) {\n\t\t\tbeforeViewLoadedFun();\n\t\t}\n\t\tif ( Global.isSet( container ) ) {\n\t\t\tcontainer.html( template( args ) );\n\t\t\tif ( Global.isSet( afterViewLoadedFun ) ) {\n\t\t\t\tafterViewLoadedFun( sub_job_applicant_employment_view_controller );\n\t\t\t}\n\t\t}\n\t} );\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUE2QixDQUFDOztBQUU5QjtBQUNBOztBQUVBLCtCQUErQix3QkFBd0I7O0FBRXZELDZCQUE2QixDQUFDOztBQUU5QjtBQUNBOztBQUVBLCtCQUErQixvQ0FBb0M7QUFDbkUsNkJBQTZCLENBQUM7QUFDOUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsQ0FBQzs7QUFFbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vaW50ZXJmYWNlL2h0bWw1L3ZpZXdzL2hyL3JlY3J1aXRtZW50L0pvYkFwcGxpY2FudEVtcGxveW1lbnRWaWV3Q29udHJvbGxlci5qcz9jYjUwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBKb2JBcHBsaWNhbnRFbXBsb3ltZW50Vmlld0NvbnRyb2xsZXIgZXh0ZW5kcyBCYXNlVmlld0NvbnRyb2xsZXIge1xuXHRjb25zdHJ1Y3Rvciggb3B0aW9ucyA9IHt9ICkge1xuXHRcdF8uZGVmYXVsdHMoIG9wdGlvbnMsIHtcblx0XHRcdGVsOiAnI2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudF92aWV3X2NvbnRhaW5lcicsXG5cblx0XHRcdGNvdW50cnlfYXJyYXk6IG51bGwsXG5cdFx0XHRwcm92aW5jZV9hcnJheTogbnVsbCxcblx0XHRcdGVfcHJvdmluY2VfYXJyYXk6IG51bGwsXG5cdFx0XHRpX3Byb3ZpbmNlX2FycmF5OiBudWxsLFxuXHRcdFx0ZW1wbG95bWVudF9zdGF0dXNfYXJyYXk6IG51bGwsXG5cdFx0XHR3YWdlX3R5cGVfYXJyYXk6IG51bGwsXG5cblx0XHRcdGNvbXBhbnlfYXBpOiBudWxsLFxuXG5cdFx0XHRzdWJfdmlld19ncmlkX2F1dG9zaXplOiB0cnVlLFxuXHRcdFx0c3ViX3ZpZXdfbW9kZTogdHJ1ZVxuXHRcdH0gKTtcblxuXHRcdHN1cGVyKCBvcHRpb25zICk7XG5cdH1cblxuXHRpbml0T3B0aW9ucygpIHtcblx0XHR2YXIgb3B0aW9ucyA9IFtcblx0XHRcdHsgb3B0aW9uX25hbWU6ICdlbXBsb3ltZW50X3N0YXR1cycsIGFwaTogdGhpcy5hcGkgfSxcblx0XHRcdHsgb3B0aW9uX25hbWU6ICd3YWdlX3R5cGUnLCBhcGk6IHRoaXMuYXBpIH0sXG5cdFx0XHR7IG9wdGlvbl9uYW1lOiAnY291bnRyeScsIGZpZWxkX25hbWU6ICdjb3VudHJ5JywgYXBpOiB0aGlzLmNvbXBhbnlfYXBpIH0sXG5cdFx0XTtcblxuXHRcdHRoaXMuaW5pdERyb3BEb3duT3B0aW9ucyggb3B0aW9ucyApO1xuXHR9XG5cblx0c2hvd05vUmVzdWx0Q292ZXIoIHNob3dfbmV3X2J0biApIHtcblx0XHRzdXBlci5zaG93Tm9SZXN1bHRDb3ZlciggKCB0aGlzLnN1Yl92aWV3X21vZGUgKSA/IHRydWUgOiBmYWxzZSApO1xuXHR9XG5cblx0b25BZGRDbGljaygpIHtcblx0XHRpZiAoIHRoaXMuc3ViX3ZpZXdfbW9kZSApIHtcblx0XHRcdHRoaXMuYnVpbGRDb250ZXh0TWVudSggdHJ1ZSApO1xuXHRcdH1cblxuXHRcdHN1cGVyLm9uQWRkQ2xpY2soKTtcblx0fVxuXG5cdGluaXQoIG9wdGlvbnMgKSB7XG5cdFx0Ly90aGlzLl9zdXBlcignaW5pdGlhbGl6ZScsIG9wdGlvbnMgKTtcblx0XHR0aGlzLmVkaXRfdmlld190cGwgPSAnSm9iQXBwbGljYW50RW1wbG95bWVudEVkaXRWaWV3Lmh0bWwnO1xuXHRcdHRoaXMucGVybWlzc2lvbl9pZCA9ICdqb2JfYXBwbGljYW50Jztcblx0XHR0aGlzLnZpZXdJZCA9ICdKb2JBcHBsaWNhbnRFbXBsb3ltZW50Jztcblx0XHR0aGlzLnNjcmlwdF9uYW1lID0gJ0pvYkFwcGxpY2FudEVtcGxveW1lbnRWaWV3Jztcblx0XHR0aGlzLnRhYmxlX25hbWVfa2V5ID0gJ2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudCc7XG5cdFx0dGhpcy5jb250ZXh0X21lbnVfbmFtZSA9ICQuaTE4bi5fKCAnRW1wbG95bWVudCcgKTtcblx0XHR0aGlzLm5hdmlnYXRpb25fbGFiZWwgPSAkLmkxOG4uXyggJ0pvYiBBcHBsaWNhbnQgRW1wbG95bWVudCcgKTtcblx0XHR0aGlzLmFwaSA9IFRUQVBJLkFQSUpvYkFwcGxpY2FudEVtcGxveW1lbnQ7XG5cdFx0dGhpcy5jb21wYW55X2FwaSA9IFRUQVBJLkFQSUNvbXBhbnk7XG5cdFx0dGhpcy5yZW5kZXIoKTtcblxuXHRcdC8vY2FsbCBpbml0IGRhdGEgaW4gcGFyZW50IHZpZXdcblx0XHRpZiAoICF0aGlzLnN1Yl92aWV3X21vZGUgKSB7XG5cdFx0XHR0aGlzLmluaXREYXRhKCk7XG5cdFx0fVxuXHR9XG5cblx0YnVpbGRFZGl0Vmlld1VJKCkge1xuXHRcdHN1cGVyLmJ1aWxkRWRpdFZpZXdVSSgpO1xuXG5cdFx0dmFyICR0aGlzID0gdGhpcztcblxuXHRcdHZhciB0YWJfbW9kZWwgPSB7XG5cdFx0XHQndGFiX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudCc6IHsgJ2xhYmVsJzogJC5pMThuLl8oICdKb2IgQXBwbGljYW50IEVtcGxveW1lbnQnICksICdpc19tdWx0aV9jb2x1bW4nOiB0cnVlIH0sXG5cdFx0XHQndGFiX2F1ZGl0JzogdHJ1ZSxcblx0XHR9O1xuXHRcdHRoaXMuc2V0VGFiTW9kZWwoIHRhYl9tb2RlbCApO1xuXG5cdFx0dGhpcy5uYXZpZ2F0aW9uLkFDb21ib0JveCgge1xuXHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElKb2JBcHBsaWNhbnRFbXBsb3ltZW50LFxuXHRcdFx0aWQ6IHRoaXMuc2NyaXB0X25hbWUgKyAnX25hdmlnYXRpb24nLFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiBmYWxzZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudCcsXG5cdFx0XHRuYXZpZ2F0aW9uX21vZGU6IHRydWUsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWVcblx0XHR9ICk7XG5cblx0XHR0aGlzLnNldE5hdmlnYXRpb24oKTtcblxuXHRcdHZhciB0YWJfam9iX2FwcGxpY2FudF9lbXBsb3ltZW50ID0gdGhpcy5lZGl0X3ZpZXdfdGFiLmZpbmQoICcjdGFiX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudCcgKTtcblx0XHR2YXIgdGFiX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudF9jb2x1bW4xID0gdGFiX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudC5maW5kKCAnLmZpcnN0LWNvbHVtbicgKTtcblx0XHR2YXIgdGFiX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudF9jb2x1bW4yID0gdGFiX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudC5maW5kKCAnLnNlY29uZC1jb2x1bW4nICk7XG5cblx0XHR0aGlzLmVkaXRfdmlld190YWJzWzBdID0gW107XG5cblx0XHR0aGlzLmVkaXRfdmlld190YWJzWzBdLnB1c2goIHRhYl9qb2JfYXBwbGljYW50X2VtcGxveW1lbnRfY29sdW1uMSApO1xuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMF0ucHVzaCggdGFiX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudF9jb2x1bW4yICk7XG5cblx0XHR2YXIgZm9ybV9pdGVtX2lucHV0O1xuXHRcdHZhciB3aWRnZXRDb250YWluZXI7XG5cdFx0dmFyIGxhYmVsO1xuXG5cdFx0Ly8gdGFiX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudCBjb2x1bW4xXG5cblx0XHQvLyBDb21wYW55IE5hbWVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2NvbXBhbnlfbmFtZScsIHdpZHRoOiAnMTAwJScgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnQ29tcGFueSBOYW1lJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9qb2JfYXBwbGljYW50X2VtcGxveW1lbnRfY29sdW1uMSwgJycgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5wYXJlbnQoKS53aWR0aCggJzQ1JScgKTtcblxuXHRcdC8vIEpvYiBUaXRsZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAndGl0bGUnLCB3aWR0aDogMjAwIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1RpdGxlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9qb2JfYXBwbGljYW50X2VtcGxveW1lbnRfY29sdW1uMSApO1xuXG5cdFx0Ly8gRGVzY3JpcHRpb25cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfQVJFQSApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0QXJlYSggeyBmaWVsZDogJ2Rlc2NyaXB0aW9uJyB9ICk7XG5cblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0Rlc2NyaXB0aW9uJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9qb2JfYXBwbGljYW50X2VtcGxveW1lbnRfY29sdW1uMSwgJycsIG51bGwsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIEFkZHJlc3MgKExpbmUgMSlcblxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAnYWRkcmVzczEnLCB3aWR0aDogJzEwMCUnIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0FkZHJlc3MgKExpbmUgMSknICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudF9jb2x1bW4xICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQucGFyZW50KCkud2lkdGgoICc0NSUnICk7XG5cblx0XHQvLyBBZGRyZXNzIChMaW5lIDIpXG5cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2FkZHJlc3MyJywgd2lkdGg6ICcxMDAlJyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdBZGRyZXNzIChMaW5lIDIpJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9qb2JfYXBwbGljYW50X2VtcGxveW1lbnRfY29sdW1uMSApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LnBhcmVudCgpLndpZHRoKCAnNDUlJyApO1xuXG5cdFx0Ly8gQ2l0eVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAnY2l0eScsIHdpZHRoOiAyMDAgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnQ2l0eScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfam9iX2FwcGxpY2FudF9lbXBsb3ltZW50X2NvbHVtbjEgKTtcblxuXHRcdC8vIENvdW50cnlcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICdjb3VudHJ5Jywgc2V0X2VtcHR5OiB0cnVlIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMuY291bnRyeV9hcnJheSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnQ291bnRyeScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfam9iX2FwcGxpY2FudF9lbXBsb3ltZW50X2NvbHVtbjEgKTtcblxuXHRcdC8vIFByb3ZpbmNlL1N0YXRlXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAncHJvdmluY2UnIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggW10gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1Byb3ZpbmNlL1N0YXRlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9qb2JfYXBwbGljYW50X2VtcGxveW1lbnRfY29sdW1uMSApO1xuXG5cdFx0Ly8gUG9zdGFsIC8gWklQIENvZGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ3Bvc3RhbF9jb2RlJywgd2lkdGg6IDkwIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1Bvc3RhbC9aSVAgQ29kZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfam9iX2FwcGxpY2FudF9lbXBsb3ltZW50X2NvbHVtbjEgKTtcblxuXHRcdC8vIEVtcGxveW1lbnQgU3RhdHVzXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAnZW1wbG95bWVudF9zdGF0dXNfaWQnIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMuZW1wbG95bWVudF9zdGF0dXNfYXJyYXkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0VtcGxveW1lbnQgU3RhdHVzJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9qb2JfYXBwbGljYW50X2VtcGxveW1lbnRfY29sdW1uMSApO1xuXG5cdFx0Ly8gV2FnZSBUeXBlXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAnd2FnZV90eXBlX2lkJyB9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLndhZ2VfdHlwZV9hcnJheSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnV2FnZSBUeXBlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9qb2JfYXBwbGljYW50X2VtcGxveW1lbnRfY29sdW1uMSApO1xuXG5cdFx0Ly8gV2FnZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAnd2FnZScsIHdpZHRoOiA1MCB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdXYWdlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9qb2JfYXBwbGljYW50X2VtcGxveW1lbnRfY29sdW1uMSApO1xuXG5cdFx0Ly8gU3RhcnQgRGF0ZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuREFURV9QSUNLRVIgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5URGF0ZVBpY2tlciggeyBmaWVsZDogJ3N0YXJ0X2RhdGUnIH0gKTtcblxuXHRcdHdpZGdldENvbnRhaW5lciA9ICQoICc8ZGl2IGNsYXNzPVxcJ3dpZGdldC1oLWJveFxcJz48L2Rpdj4nICk7XG5cdFx0bGFiZWwgPSAkKCAnPHNwYW4gY2xhc3M9XFwnd2lkZ2V0LXJpZ2h0LWxhYmVsXFwnPiAnICsgJC5pMThuLl8oICdpZScgKSArICcgOiAnICsgTG9jYWxDYWNoZURhdGEuZ2V0TG9naW5Vc2VyUHJlZmVyZW5jZSgpLmRhdGVfZm9ybWF0X2Rpc3BsYXkgKyAnPC9zcGFuPicgKTtcblxuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGZvcm1faXRlbV9pbnB1dCApO1xuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGxhYmVsICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdTdGFydCBEYXRlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9qb2JfYXBwbGljYW50X2VtcGxveW1lbnRfY29sdW1uMSwgJycsIHdpZGdldENvbnRhaW5lciApO1xuXG5cdFx0Ly8gRW5kIERhdGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkRBVEVfUElDS0VSICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVERhdGVQaWNrZXIoIHsgZmllbGQ6ICdlbmRfZGF0ZScgfSApO1xuXG5cdFx0d2lkZ2V0Q29udGFpbmVyID0gJCggJzxkaXYgY2xhc3M9XFwnd2lkZ2V0LWgtYm94XFwnPjwvZGl2PicgKTtcblx0XHRsYWJlbCA9ICQoICc8c3BhbiBjbGFzcz1cXCd3aWRnZXQtcmlnaHQtbGFiZWxcXCc+ICcgKyAkLmkxOG4uXyggJ2llJyApICsgJyA6ICcgKyBMb2NhbENhY2hlRGF0YS5nZXRMb2dpblVzZXJQcmVmZXJlbmNlKCkuZGF0ZV9mb3JtYXRfZGlzcGxheSArICc8L3NwYW4+JyApO1xuXG5cdFx0d2lkZ2V0Q29udGFpbmVyLmFwcGVuZCggZm9ybV9pdGVtX2lucHV0ICk7XG5cdFx0d2lkZ2V0Q29udGFpbmVyLmFwcGVuZCggbGFiZWwgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0VuZCBEYXRlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9qb2JfYXBwbGljYW50X2VtcGxveW1lbnRfY29sdW1uMSwgJycsIHdpZGdldENvbnRhaW5lciApO1xuXG5cdFx0Ly8gQ3VycmVudCBFbXBsb3llclxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ0hFQ0tCT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVENoZWNrYm94KCB7IGZpZWxkOiAnaXNfY3VycmVudF9lbXBsb3llcicgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnQ3VycmVudCBFbXBsb3llcicgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfam9iX2FwcGxpY2FudF9lbXBsb3ltZW50X2NvbHVtbjIsICcnICk7XG5cblx0XHQvLyBDb250YWN0IEZpcnN0IE5hbWVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2NvbnRhY3RfZmlyc3RfbmFtZScsIHdpZHRoOiAyMDAgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnQ29udGFjdCBGaXJzdCBOYW1lJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9qb2JfYXBwbGljYW50X2VtcGxveW1lbnRfY29sdW1uMiApO1xuXG5cdFx0Ly8gQ29udGFjdCBMYXN0IE5hbWVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2NvbnRhY3RfbGFzdF9uYW1lJywgd2lkdGg6IDIwMCB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdDb250YWN0IExhc3QgTmFtZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfam9iX2FwcGxpY2FudF9lbXBsb3ltZW50X2NvbHVtbjIgKTtcblxuXHRcdC8vIENvbnRhY3QgVGl0bGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2NvbnRhY3RfdGl0bGUnLCB3aWR0aDogMjAwIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0NvbnRhY3QgVGl0bGUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudF9jb2x1bW4yICk7XG5cblx0XHQvLyBDb250YWN0IFdvcmsgUGhvbmVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2NvbnRhY3Rfd29ya19waG9uZScsIHdpZHRoOiAyMDAgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnQ29udGFjdCBXb3JrIFBob25lJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9qb2JfYXBwbGljYW50X2VtcGxveW1lbnRfY29sdW1uMiApO1xuXG5cdFx0Ly8gQ29udGFjdCBNb2JpbGUgUGhvbmVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2NvbnRhY3RfbW9iaWxlX3Bob25lJywgd2lkdGg6IDIwMCB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdDb250YWN0IE1vYmlsZSBQaG9uZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfam9iX2FwcGxpY2FudF9lbXBsb3ltZW50X2NvbHVtbjIgKTtcblxuXHRcdC8vIENvbnRhY3QgV29yayBFbWFpbFxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAnY29udGFjdF93b3JrX2VtYWlsJywgd2lkdGg6IDIwMCB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdDb250YWN0IFdvcmsgRW1haWwnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudF9jb2x1bW4yICk7XG5cblx0XHQvLyBNYXkgd2UgY29udGFjdCB0aGlzIHBlcnNvbi9lbXBsb3llclxuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DSEVDS0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ2hlY2tib3goIHsgZmllbGQ6ICdpc19jb250YWN0X2F2YWlsYWJsZScgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnTWF5IHdlIGNvbnRhY3QgdGhpcyBwZXJzb24vZW1wbG95ZXInICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudF9jb2x1bW4yICk7XG5cblx0XHQvLyBSZWFzb24gZm9yIGxlYXZpbmdcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfQVJFQSApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0QXJlYSggeyBmaWVsZDogJ2xlYXZlX3JlYXNvbicgfSApO1xuXG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdSZWFzb24gZm9yIGxlYXZpbmcnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudF9jb2x1bW4yLCAnJywgbnVsbCwgbnVsbCwgdHJ1ZSApO1xuXG5cdFx0Ly9UYWdzXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5UQUdfSU5QVVQgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGFnSW5wdXQoIHsgZmllbGQ6ICd0YWcnLCBvYmplY3RfdHlwZV9pZDogMzgwIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1RhZ3MnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2pvYl9hcHBsaWNhbnRfZW1wbG95bWVudF9jb2x1bW4yLCAnJywgbnVsbCwgbnVsbCwgdHJ1ZSApO1xuXHR9XG5cblx0b25Gb3JtSXRlbUNoYW5nZSggdGFyZ2V0LCBkb05vdFZhbGlkYXRlICkge1xuXHRcdHRoaXMuc2V0SXNDaGFuZ2VkKCB0YXJnZXQgKTtcblx0XHR0aGlzLnNldE1hc3NFZGl0aW5nRmllbGRzV2hlbkZvcm1DaGFuZ2UoIHRhcmdldCApO1xuXHRcdHZhciBrZXkgPSB0YXJnZXQuZ2V0RmllbGQoKTtcblxuXHRcdHRoaXMuY3VycmVudF9lZGl0X3JlY29yZFtrZXldID0gdGFyZ2V0LmdldFZhbHVlKCk7XG5cblx0XHRzd2l0Y2ggKCBrZXkgKSB7XG5cblx0XHRcdGNhc2UgJ2NvdW50cnknOlxuXHRcdFx0XHR2YXIgd2lkZ2V0ID0gdGhpcy5lZGl0X3ZpZXdfdWlfZGljWydwcm92aW5jZSddO1xuXHRcdFx0XHR3aWRnZXQuc2V0VmFsdWUoIG51bGwgKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHR9XG5cblx0XHRpZiAoIGtleSA9PT0gJ2NvdW50cnknICkge1xuXHRcdFx0dGhpcy5vbkNvdW50cnlDaGFuZ2UoKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCAhZG9Ob3RWYWxpZGF0ZSApIHtcblx0XHRcdHRoaXMudmFsaWRhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRzZXRDdXJyZW50RWRpdFJlY29yZERhdGEoKSB7XG5cblx0XHQvL1NldCBjdXJyZW50IGVkaXQgcmVjb3JkIGRhdGEgdG8gYWxsIHdpZGdldHNcblx0XHQvL1NldCBjdXJyZW50IGVkaXQgcmVjb3JkIGRhdGEgdG8gYWxsIHdpZGdldHNcblx0XHRmb3IgKCB2YXIga2V5IGluIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZCApIHtcblx0XHRcdHZhciB3aWRnZXQgPSB0aGlzLmVkaXRfdmlld191aV9kaWNba2V5XTtcblx0XHRcdGlmICggR2xvYmFsLmlzU2V0KCB3aWRnZXQgKSApIHtcblx0XHRcdFx0c3dpdGNoICgga2V5ICkge1xuXHRcdFx0XHRcdGNhc2UgJ2NvdW50cnknOiAvL3BvcHVsYXIgY2FzZVxuXHRcdFx0XHRcdFx0dGhpcy5zZXRDb3VudHJ5VmFsdWUoIHdpZGdldCwga2V5ICk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0d2lkZ2V0LnNldFZhbHVlKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmRba2V5XSApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0fVxuXHRcdH1cblx0XHR0aGlzLmNvbGxlY3RVSURhdGFUb0N1cnJlbnRFZGl0UmVjb3JkKCk7XG5cdFx0dGhpcy5zZXRFZGl0Vmlld0RhdGFEb25lKCk7XG5cdH1cblxuXHRzZXRQcm92aW5jZSggdmFsLCBtICkge1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cblx0XHRpZiAoICF2YWwgfHwgdmFsID09PSAnLTEnIHx8IHZhbCA9PT0gJzAnICkge1xuXHRcdFx0JHRoaXMucHJvdmluY2VfYXJyYXkgPSBbXTtcblx0XHRcdHRoaXMuYWR2X3NlYXJjaF9maWVsZF91aV9kaWNbJ3Byb3ZpbmNlJ10uc2V0U291cmNlRGF0YSggW10gKTtcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHR0aGlzLmNvbXBhbnlfYXBpLmdldE9wdGlvbnMoICdwcm92aW5jZScsIHZhbCwge1xuXHRcdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlcyApIHtcblx0XHRcdFx0XHRyZXMgPSByZXMuZ2V0UmVzdWx0KCk7XG5cdFx0XHRcdFx0aWYgKCAhcmVzICkge1xuXHRcdFx0XHRcdFx0cmVzID0gW107XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0JHRoaXMucHJvdmluY2VfYXJyYXkgPSBHbG9iYWwuYnVpbGRSZWNvcmRBcnJheSggcmVzICk7XG5cdFx0XHRcdFx0JHRoaXMuYWR2X3NlYXJjaF9maWVsZF91aV9kaWNbJ3Byb3ZpbmNlJ10uc2V0U291cmNlRGF0YSggJHRoaXMucHJvdmluY2VfYXJyYXkgKTtcblxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXHR9XG5cblx0ZVNldFByb3ZpbmNlKCB2YWwsIHJlZnJlc2ggKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHR2YXIgcHJvdmluY2Vfd2lkZ2V0ID0gJHRoaXMuZWRpdF92aWV3X3VpX2RpY1sncHJvdmluY2UnXTtcblxuXHRcdGlmICggIXZhbCB8fCB2YWwgPT09ICctMScgfHwgdmFsID09PSAnMCcgKSB7XG5cdFx0XHQkdGhpcy5lX3Byb3ZpbmNlX2FycmF5ID0gW107XG5cdFx0XHRwcm92aW5jZV93aWRnZXQuc2V0U291cmNlRGF0YSggW10gKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5jb21wYW55X2FwaS5nZXRPcHRpb25zKCAncHJvdmluY2UnLCB2YWwsIHtcblx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXMgKSB7XG5cdFx0XHRcdFx0cmVzID0gcmVzLmdldFJlc3VsdCgpO1xuXHRcdFx0XHRcdGlmICggIXJlcyApIHtcblx0XHRcdFx0XHRcdHJlcyA9IFtdO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCR0aGlzLmVfcHJvdmluY2VfYXJyYXkgPSBHbG9iYWwuYnVpbGRSZWNvcmRBcnJheSggcmVzICk7XG5cdFx0XHRcdFx0aWYgKCByZWZyZXNoICYmICR0aGlzLmVfcHJvdmluY2VfYXJyYXkubGVuZ3RoID4gMCApIHtcblx0XHRcdFx0XHRcdCR0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQucHJvdmluY2UgPSAkdGhpcy5lX3Byb3ZpbmNlX2FycmF5WzBdLnZhbHVlO1xuXHRcdFx0XHRcdFx0cHJvdmluY2Vfd2lkZ2V0LnNldFZhbHVlKCAkdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnByb3ZpbmNlICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHByb3ZpbmNlX3dpZGdldC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5lX3Byb3ZpbmNlX2FycmF5ICk7XG5cblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH1cblx0fVxuXG5cdG9uR3JpZFNlbGVjdFJvdygpIHtcblx0XHRpZiAoIHRoaXMuc3ViX3ZpZXdfbW9kZSApIHtcblx0XHRcdHRoaXMuYnVpbGRDb250ZXh0TWVudSggdHJ1ZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmJ1aWxkQ29udGV4dE1lbnUoKTtcblx0XHR9XG5cdFx0dGhpcy5zZXREZWZhdWx0TWVudSgpO1xuXHR9XG5cblx0c2VhcmNoRG9uZSgpIHtcblxuXHRcdHN1cGVyLnNlYXJjaERvbmUoKTtcblxuXHRcdFRUUHJvbWlzZS5yZXNvbHZlKCAnSm9iQXBwbGljYW50X0hpc3RvcnlfVGFiJywgJ0pvYkFwcGxpY2FudEVtcGxveW1lbnRWaWV3Q29udHJvbGxlcicgKTtcblxuXHR9XG5cbn1cblxuSm9iQXBwbGljYW50RW1wbG95bWVudFZpZXdDb250cm9sbGVyLmxvYWRTdWJWaWV3ID0gZnVuY3Rpb24oIGNvbnRhaW5lciwgYmVmb3JlVmlld0xvYWRlZEZ1biwgYWZ0ZXJWaWV3TG9hZGVkRnVuICkge1xuXHRHbG9iYWwubG9hZFZpZXdTb3VyY2UoICdKb2JBcHBsaWNhbnRFbXBsb3ltZW50JywgJ1N1YkpvYkFwcGxpY2FudEVtcGxveW1lbnRWaWV3Lmh0bWwnLCBmdW5jdGlvbiggcmVzdWx0ICkge1xuXHRcdHZhciBhcmdzID0ge307XG5cdFx0dmFyIHRlbXBsYXRlID0gXy50ZW1wbGF0ZSggcmVzdWx0ICk7XG5cblx0XHRpZiAoIEdsb2JhbC5pc1NldCggYmVmb3JlVmlld0xvYWRlZEZ1biApICkge1xuXHRcdFx0YmVmb3JlVmlld0xvYWRlZEZ1bigpO1xuXHRcdH1cblx0XHRpZiAoIEdsb2JhbC5pc1NldCggY29udGFpbmVyICkgKSB7XG5cdFx0XHRjb250YWluZXIuaHRtbCggdGVtcGxhdGUoIGFyZ3MgKSApO1xuXHRcdFx0aWYgKCBHbG9iYWwuaXNTZXQoIGFmdGVyVmlld0xvYWRlZEZ1biApICkge1xuXHRcdFx0XHRhZnRlclZpZXdMb2FkZWRGdW4oIHN1Yl9qb2JfYXBwbGljYW50X2VtcGxveW1lbnRfdmlld19jb250cm9sbGVyICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9ICk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2257\n")}}]);