"use strict";(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["wizard-find_available-FindAvailableViewController"],{2921:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"FindAvailableViewController\": () => (/* binding */ FindAvailableViewController)\n/* harmony export */ });\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\nclass FindAvailableViewController extends BaseViewController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\t\t\tel: '#find_available_view_container',\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\tcompany_api: null\n\t\t} );\n\n\t\tsuper( options );\n\t}\n\n\tinit( options ) {\n\t\t//this._super('initialize', options );\n\t\tthis.permission_id = 'user';\n\t\tthis.viewId = 'FindAvailable';\n\t\tthis.script_name = 'PopUpEmployeeView';\n\n\t\tthis.api = TTAPI.APIScheduleAdvanced;\n\t\tthis.company_api = TTAPI.APICompany;\n\n\t\t$( this.el ).css( 'opacity', 0 );\n\t\tthis.render();\n\n\t\tthis.initData();\n\t}\n\n\t//No right click menu for this\n\tinitRightClickMenu( target_type ) {\n\t\treturn;\n\t}\n\n\tshowNoResultCover( show_new_btn ) {\n\t\tsuper.showNoResultCover( false );\n\t}\n\n\tsetGridSize() {\n\t\tvar $this = this;\n\n\t\tthis.grid.setGridWidth( $( this.el ).width() );\n\t\tthis.grid.setGridColumnsWidth();\n\t\tthis.grid.setGridHeight( this.getAvailableHeightForGrid( this.el ) );\n\n\t\t$( window ).off( 'resize.find_available_grid' ).on( 'resize.find_available_grid', function() {\n\t\t\tif ( $( $this.el ) ) {\n\t\t\t\t$this.grid.setGridWidth( $( $this.el ).width() );\n\t\t\t\t$this.grid.setGridColumnsWidth();\n\t\t\t\t$this.grid.setGridHeight( $this.getAvailableHeightForGrid( $this.el ) );\n\t\t\t}\n\t\t} );\n\t}\n\n\tsearch( set_default_menu, page_action, page_number ) {\n\n\t\tthis.setGridSize();\n\t\tif ( !Global.isSet( set_default_menu ) ) {\n\t\t\tset_default_menu = true;\n\t\t}\n\n\t\tvar $this = this;\n\t\tvar filter = {};\n\t\tfilter.filter_data = {};\n\t\tfilter.filter_sort = {};\n\t\tfilter.filter_columns = this.getFilterColumnsFromDisplayColumns();\n\t\tfilter.filter_items_per_page = 0; // Default to 0 to load user preference defined\n\n\t\tif ( this.pager_data ) {\n\n\t\t\tif ( LocalCacheData.paging_type === 0 ) {\n\t\t\t\tif ( page_action === 'next' ) {\n\t\t\t\t\tfilter.filter_page = this.pager_data.next_page;\n\t\t\t\t} else {\n\t\t\t\t\tfilter.filter_page = 1;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tswitch ( page_action ) {\n\t\t\t\t\tcase 'next':\n\t\t\t\t\t\tfilter.filter_page = this.pager_data.next_page;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'last':\n\t\t\t\t\t\tfilter.filter_page = this.pager_data.previous_page;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'start':\n\t\t\t\t\t\tfilter.filter_page = 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'end':\n\t\t\t\t\t\tfilter.filter_page = this.pager_data.last_page_number;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'go_to':\n\t\t\t\t\t\tfilter.filter_page = page_number;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tfilter.filter_page = this.pager_data.current_page;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\t\t\tfilter.filter_page = 1;\n\t\t}\n\n\t\tif ( this.sub_view_mode && this.parent_key ) {\n\t\t\tthis.select_layout.data.filter_data[this.parent_key] = this.parent_value;\n\t\t}\n\t\t//If sub view controller set custom filters, get it\n\t\tif ( Global.isSet( this.getSubViewFilter ) ) {\n\n\t\t\tthis.select_layout.data.filter_data = this.getSubViewFilter( this.select_layout.data.filter_data );\n\n\t\t}\n\n\t\t//select_layout will not be null, it's set in setSelectLayout function\n\n\t\tfilter.filter_data = Global.convertLayoutFilterToAPIFilter( this.select_layout );\n\t\tfilter.filter_sort = this.select_layout.data.filter_sort;\n\n\t\tif ( TTUUID.isUUID( this.refresh_id ) ) {\n\t\t\tfilter.filter_data = {};\n\t\t\tfilter.filter_data.id = [this.refresh_id];\n\t\t}\n\n\t\tthis.api.getScheduleAvailableUsers( filter, {\n\t\t\tonResult: function( result ) {\n\n\t\t\t\tvar result_data = result.getResult();\n\t\t\t\tif ( !Global.isArray( result_data ) ) {\n\t\t\t\t\t$this.showNoResultCover();\n\t\t\t\t} else {\n\t\t\t\t\t$this.removeNoResultCover();\n\t\t\t\t\tif ( Global.isSet( $this.__createRowId ) ) {\n\t\t\t\t\t\tresult_data = $this.__createRowId( result_data );\n\t\t\t\t\t}\n\n\t\t\t\t\tresult_data = Global.formatGridData( result_data, $this.api.key_name );\n\t\t\t\t}\n\n\t\t\t\tif ( TTUUID.isUUID( $this.refresh_id ) ) {\n\t\t\t\t\t$this.refresh_id = null;\n\t\t\t\t\tvar grid_source_data = $this.grid.getData();\n\t\t\t\t\tvar len = grid_source_data.length;\n\n\t\t\t\t\tif ( $.type( grid_source_data ) !== 'array' ) {\n\t\t\t\t\t\tgrid_source_data = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tvar found = false;\n\t\t\t\t\tvar new_record = result_data[0];\n\t\t\t\t\tfor ( var i = 0; i < len; i++ ) {\n\t\t\t\t\t\tvar record = grid_source_data[i];\n\n\t\t\t\t\t\t//Fixed === issue. The id set by jQGrid is string type.\n\t\t\t\t\t\t// if ( !isNaN( parseInt( record.id ) ) ) {\n\t\t\t\t\t\t// \trecord.id = parseInt( record.id );\n\t\t\t\t\t\t// }\n\n\t\t\t\t\t\tif ( record.id == new_record.id ) {\n\t\t\t\t\t\t\t$this.grid.setRowData( new_record.id, new_record );\n\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !found ) {\n\t\t\t\t\t\tgrid_source_data.push( new_record );\n\t\t\t\t\t\t$this.grid.setData( grid_source_data );\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t//Set Page data to widget, next show display info when setDefault Menu\n\t\t\t\t\t$this.pager_data = result.getPagerData();\n\n\t\t\t\t\t//CLick to show more mode no need this step\n\t\t\t\t\tif ( LocalCacheData.paging_type !== 0 ) {\n\t\t\t\t\t\t$this.paging_widget.setPagerData( $this.pager_data );\n\t\t\t\t\t\t$this.paging_widget_2.setPagerData( $this.pager_data );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( LocalCacheData.paging_type === 0 && page_action === 'next' ) {\n\t\t\t\t\t\tvar current_data = $this.grid.getGridParam( 'data' );\n\t\t\t\t\t\tresult_data = current_data.concat( result_data );\n\t\t\t\t\t}\n\n\t\t\t\t\t$this.grid.setData( result_data );\n\t\t\t\t}\n\n\t\t\t\t$this.setGridCellBackGround(); //Set cell background for some views\n\n\t\t\t\tProgressBar.closeOverlay(); //Add this in initData\n\t\t\t\tif ( set_default_menu ) {\n\t\t\t\t\t$this.setDefaultMenu( true );\n\t\t\t\t}\n\n\t\t\t\tif ( LocalCacheData.paging_type === 0 ) {\n\t\t\t\t\tif ( !$this.pager_data || $this.pager_data.is_last_page ) {\n\t\t\t\t\t\t$this.paging_widget.css( 'display', 'none' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$this.paging_widget.css( 'display', 'block' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$this.autoOpenEditViewIfNecessary();\n\n\t\t\t\t$this.searchDone();\n\n\t\t\t}\n\t\t} );\n\t}\n\n\tsearchDone() {\n\t\t//the rotate icon from search panel\n\t\tvar $this = this;\n\t\t$( '.button-rotate' ).removeClass( 'button-rotate' );\n\n\t\tthis.setTotalDisplaySpan();\n\n\t\tthis.setGridSize( this.ui_id, this.sub_view_mode, this.sub_view_grid_autosize, this.pager_data );\n\t\tTTPromise.resolve( 'init', 'init' );\n\n\t\t$( this.el ).css( 'opacity', 1 );\n\t}\n\n\t//\n\n\tsetCurrentViewPosition() {\n\t\tvar current_view_div = this.search_panel.find( '.layout-selector-div' );\n\t\tvar saved_layout_li = this.search_panel.find( 'a[ref=\\'saved_layout\\']' ).parent();\n\t\tvar offset_left = saved_layout_li.offset().left - ( Global.bodyWidth() / 2 - 500 );\n\n\t\tcurrent_view_div.css( 'left', offset_left + saved_layout_li.width() + 20 );\n\t}\n\n\tinitOptions( callBack ) {\n\n\t\tvar $this = this;\n\t\tvar api = TTAPI.APIUser;\n\t\tvar user_group_array = TTAPI.APIUserGroup;\n\t\tvar options = [\n\t\t\t{ option_name: 'status', field_name: null, api: api },\n\t\t\t{ option_name: 'sex', field_name: null, api: api },\n\t\t\t{ option_name: 'country', field_name: 'country', api: this.company_api }\n\t\t];\n\n\t\tthis.initDropDownOptions( options, function( result ) {\n\n\t\t\tuser_group_array.getUserGroup( '', false, false, {\n\t\t\t\tonResult: function( res ) {\n\n\t\t\t\t\tres = res.getResult();\n\t\t\t\t\tres = Global.buildTreeRecord( res );\n\n\t\t\t\t\tif ( !$this.edit_only_mode ) {\n\t\t\t\t\t\tif ( !$this.sub_view_mode && $this.basic_search_field_ui_dic['group_id'] ) {\n\t\t\t\t\t\t\t$this.basic_search_field_ui_dic['group_id'].setSourceData( res );\n\t\t\t\t\t\t\t$this.adv_search_field_ui_dic['group_id'].setSourceData( res );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t$this.user_group_array = res;\n\n\t\t\t\t\tif ( callBack ) {\n\t\t\t\t\t\tcallBack( result ); // First to initialize drop down options, and then to initialize edit view UI.\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t} );\n\t}\n\n\tonSetSearchFilterFinished() {\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\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\tbuildSearchFields() {\n\n\t\tsuper.buildSearchFields();\n\n\t\tthis.search_fields = [\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: 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\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'First Name' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'first_name',\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: true,\n\t\t\t\tform_item_type: FormItemType.TEXT_INPUT\n\t\t\t} ),\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Last Name' ),\n\t\t\t\tfield: 'last_name',\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: true,\n\t\t\t\tin_column: 1,\n\t\t\t\tform_item_type: FormItemType.TEXT_INPUT\n\t\t\t} ),\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Home Phone' ),\n\t\t\t\tfield: 'home_phone',\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: true,\n\t\t\t\tin_column: 1,\n\t\t\t\tform_item_type: FormItemType.TEXT_INPUT\n\t\t\t} ),\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Tags' ),\n\t\t\t\tfield: 'tag',\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: true,\n\t\t\t\tin_column: 1,\n\t\t\t\tform_item_type: FormItemType.TAG_INPUT\n\t\t\t} ),\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Employee Number' ),\n\t\t\t\tfield: 'employee_number',\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: true,\n\t\t\t\tin_column: 2,\n\t\t\t\tform_item_type: FormItemType.TEXT_INPUT\n\t\t\t} ),\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Sex' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'sex_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\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Group' ),\n\t\t\t\tin_column: 2,\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: true,\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 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: true,\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: true,\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 Job' ),\n\t\t\t\tfield: 'default_job_id',\n\t\t\t\tin_column: 2,\n\t\t\t\tlayout_name: 'global_job',\n\t\t\t\tapi_class: ( Global.getProductEdition() >= 20 ) ? TTAPI.APIJob : null,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: Global.getProductEdition() >= 20,\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 Task' ),\n\t\t\t\tfield: 'default_job_item_id',\n\t\t\t\tin_column: 2,\n\t\t\t\tlayout_name: 'global_job_item',\n\t\t\t\tapi_class: ( Global.getProductEdition() >= 20 ) ? TTAPI.APIJobItem : null,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: Global.getProductEdition() >= 20,\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 Punch Tag' ),\n\t\t\t\tfield: 'default_punch_tag_id',\n\t\t\t\tin_column: 2,\n\t\t\t\tlayout_name: 'global_punch_tag',\n\t\t\t\tapi_class: ( Global.getProductEdition() >= 20 ) ? TTAPI.APIPunchTag : null,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: Global.getProductEdition() >= 20,\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: 1,\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: 1,\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\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'City' ),\n\t\t\t\tfield: 'city',\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: true,\n\t\t\t\tin_column: 1,\n\t\t\t\tform_item_type: FormItemType.TEXT_INPUT\n\t\t\t} ),\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._( 'Min. Time Between Shifts' ),\n\t\t\t\tfield: 'minimum_time_between_shift',\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: true,\n\t\t\t\tin_column: 2,\n\t\t\t\tform_item_type: FormItemType.TEXT_INPUT\n\t\t\t} ),\n\t\t];\n\n\t}\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vaW50ZXJmYWNlL2h0bWw1L3ZpZXdzL3dpemFyZC9maW5kX2F2YWlsYWJsZS9GaW5kQXZhaWxhYmxlVmlld0NvbnRyb2xsZXIuanM/NTNhNCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRmluZEF2YWlsYWJsZVZpZXdDb250cm9sbGVyIGV4dGVuZHMgQmFzZVZpZXdDb250cm9sbGVyIHtcblx0Y29uc3RydWN0b3IoIG9wdGlvbnMgPSB7fSApIHtcblx0XHRfLmRlZmF1bHRzKCBvcHRpb25zLCB7XG5cdFx0XHRlbDogJyNmaW5kX2F2YWlsYWJsZV92aWV3X2NvbnRhaW5lcicsXG5cdFx0XHRzdGF0dXNfYXJyYXk6IG51bGwsXG5cdFx0XHRzZXhfYXJyYXk6IG51bGwsXG5cdFx0XHR1c2VyX2dyb3VwX2FycmF5OiBudWxsLFxuXHRcdFx0Y291bnRyeV9hcnJheTogbnVsbCxcblx0XHRcdHByb3ZpbmNlX2FycmF5OiBudWxsLFxuXG5cdFx0XHRjb21wYW55X2FwaTogbnVsbFxuXHRcdH0gKTtcblxuXHRcdHN1cGVyKCBvcHRpb25zICk7XG5cdH1cblxuXHRpbml0KCBvcHRpb25zICkge1xuXHRcdC8vdGhpcy5fc3VwZXIoJ2luaXRpYWxpemUnLCBvcHRpb25zICk7XG5cdFx0dGhpcy5wZXJtaXNzaW9uX2lkID0gJ3VzZXInO1xuXHRcdHRoaXMudmlld0lkID0gJ0ZpbmRBdmFpbGFibGUnO1xuXHRcdHRoaXMuc2NyaXB0X25hbWUgPSAnUG9wVXBFbXBsb3llZVZpZXcnO1xuXG5cdFx0dGhpcy5hcGkgPSBUVEFQSS5BUElTY2hlZHVsZUFkdmFuY2VkO1xuXHRcdHRoaXMuY29tcGFueV9hcGkgPSBUVEFQSS5BUElDb21wYW55O1xuXG5cdFx0JCggdGhpcy5lbCApLmNzcyggJ29wYWNpdHknLCAwICk7XG5cdFx0dGhpcy5yZW5kZXIoKTtcblxuXHRcdHRoaXMuaW5pdERhdGEoKTtcblx0fVxuXG5cdC8vTm8gcmlnaHQgY2xpY2sgbWVudSBmb3IgdGhpc1xuXHRpbml0UmlnaHRDbGlja01lbnUoIHRhcmdldF90eXBlICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHNob3dOb1Jlc3VsdENvdmVyKCBzaG93X25ld19idG4gKSB7XG5cdFx0c3VwZXIuc2hvd05vUmVzdWx0Q292ZXIoIGZhbHNlICk7XG5cdH1cblxuXHRzZXRHcmlkU2l6ZSgpIHtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXG5cdFx0dGhpcy5ncmlkLnNldEdyaWRXaWR0aCggJCggdGhpcy5lbCApLndpZHRoKCkgKTtcblx0XHR0aGlzLmdyaWQuc2V0R3JpZENvbHVtbnNXaWR0aCgpO1xuXHRcdHRoaXMuZ3JpZC5zZXRHcmlkSGVpZ2h0KCB0aGlzLmdldEF2YWlsYWJsZUhlaWdodEZvckdyaWQoIHRoaXMuZWwgKSApO1xuXG5cdFx0JCggd2luZG93ICkub2ZmKCAncmVzaXplLmZpbmRfYXZhaWxhYmxlX2dyaWQnICkub24oICdyZXNpemUuZmluZF9hdmFpbGFibGVfZ3JpZCcsIGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCAkKCAkdGhpcy5lbCApICkge1xuXHRcdFx0XHQkdGhpcy5ncmlkLnNldEdyaWRXaWR0aCggJCggJHRoaXMuZWwgKS53aWR0aCgpICk7XG5cdFx0XHRcdCR0aGlzLmdyaWQuc2V0R3JpZENvbHVtbnNXaWR0aCgpO1xuXHRcdFx0XHQkdGhpcy5ncmlkLnNldEdyaWRIZWlnaHQoICR0aGlzLmdldEF2YWlsYWJsZUhlaWdodEZvckdyaWQoICR0aGlzLmVsICkgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cblxuXHRzZWFyY2goIHNldF9kZWZhdWx0X21lbnUsIHBhZ2VfYWN0aW9uLCBwYWdlX251bWJlciApIHtcblxuXHRcdHRoaXMuc2V0R3JpZFNpemUoKTtcblx0XHRpZiAoICFHbG9iYWwuaXNTZXQoIHNldF9kZWZhdWx0X21lbnUgKSApIHtcblx0XHRcdHNldF9kZWZhdWx0X21lbnUgPSB0cnVlO1xuXHRcdH1cblxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0dmFyIGZpbHRlciA9IHt9O1xuXHRcdGZpbHRlci5maWx0ZXJfZGF0YSA9IHt9O1xuXHRcdGZpbHRlci5maWx0ZXJfc29ydCA9IHt9O1xuXHRcdGZpbHRlci5maWx0ZXJfY29sdW1ucyA9IHRoaXMuZ2V0RmlsdGVyQ29sdW1uc0Zyb21EaXNwbGF5Q29sdW1ucygpO1xuXHRcdGZpbHRlci5maWx0ZXJfaXRlbXNfcGVyX3BhZ2UgPSAwOyAvLyBEZWZhdWx0IHRvIDAgdG8gbG9hZCB1c2VyIHByZWZlcmVuY2UgZGVmaW5lZFxuXG5cdFx0aWYgKCB0aGlzLnBhZ2VyX2RhdGEgKSB7XG5cblx0XHRcdGlmICggTG9jYWxDYWNoZURhdGEucGFnaW5nX3R5cGUgPT09IDAgKSB7XG5cdFx0XHRcdGlmICggcGFnZV9hY3Rpb24gPT09ICduZXh0JyApIHtcblx0XHRcdFx0XHRmaWx0ZXIuZmlsdGVyX3BhZ2UgPSB0aGlzLnBhZ2VyX2RhdGEubmV4dF9wYWdlO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZpbHRlci5maWx0ZXJfcGFnZSA9IDE7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0c3dpdGNoICggcGFnZV9hY3Rpb24gKSB7XG5cdFx0XHRcdFx0Y2FzZSAnbmV4dCc6XG5cdFx0XHRcdFx0XHRmaWx0ZXIuZmlsdGVyX3BhZ2UgPSB0aGlzLnBhZ2VyX2RhdGEubmV4dF9wYWdlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbGFzdCc6XG5cdFx0XHRcdFx0XHRmaWx0ZXIuZmlsdGVyX3BhZ2UgPSB0aGlzLnBhZ2VyX2RhdGEucHJldmlvdXNfcGFnZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3N0YXJ0Jzpcblx0XHRcdFx0XHRcdGZpbHRlci5maWx0ZXJfcGFnZSA9IDE7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0ZmlsdGVyLmZpbHRlcl9wYWdlID0gdGhpcy5wYWdlcl9kYXRhLmxhc3RfcGFnZV9udW1iZXI7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdnb190byc6XG5cdFx0XHRcdFx0XHRmaWx0ZXIuZmlsdGVyX3BhZ2UgPSBwYWdlX251bWJlcjtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRmaWx0ZXIuZmlsdGVyX3BhZ2UgPSB0aGlzLnBhZ2VyX2RhdGEuY3VycmVudF9wYWdlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0fVxuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGZpbHRlci5maWx0ZXJfcGFnZSA9IDE7XG5cdFx0fVxuXG5cdFx0aWYgKCB0aGlzLnN1Yl92aWV3X21vZGUgJiYgdGhpcy5wYXJlbnRfa2V5ICkge1xuXHRcdFx0dGhpcy5zZWxlY3RfbGF5b3V0LmRhdGEuZmlsdGVyX2RhdGFbdGhpcy5wYXJlbnRfa2V5XSA9IHRoaXMucGFyZW50X3ZhbHVlO1xuXHRcdH1cblx0XHQvL0lmIHN1YiB2aWV3IGNvbnRyb2xsZXIgc2V0IGN1c3RvbSBmaWx0ZXJzLCBnZXQgaXRcblx0XHRpZiAoIEdsb2JhbC5pc1NldCggdGhpcy5nZXRTdWJWaWV3RmlsdGVyICkgKSB7XG5cblx0XHRcdHRoaXMuc2VsZWN0X2xheW91dC5kYXRhLmZpbHRlcl9kYXRhID0gdGhpcy5nZXRTdWJWaWV3RmlsdGVyKCB0aGlzLnNlbGVjdF9sYXlvdXQuZGF0YS5maWx0ZXJfZGF0YSApO1xuXG5cdFx0fVxuXG5cdFx0Ly9zZWxlY3RfbGF5b3V0IHdpbGwgbm90IGJlIG51bGwsIGl0J3Mgc2V0IGluIHNldFNlbGVjdExheW91dCBmdW5jdGlvblxuXG5cdFx0ZmlsdGVyLmZpbHRlcl9kYXRhID0gR2xvYmFsLmNvbnZlcnRMYXlvdXRGaWx0ZXJUb0FQSUZpbHRlciggdGhpcy5zZWxlY3RfbGF5b3V0ICk7XG5cdFx0ZmlsdGVyLmZpbHRlcl9zb3J0ID0gdGhpcy5zZWxlY3RfbGF5b3V0LmRhdGEuZmlsdGVyX3NvcnQ7XG5cblx0XHRpZiAoIFRUVVVJRC5pc1VVSUQoIHRoaXMucmVmcmVzaF9pZCApICkge1xuXHRcdFx0ZmlsdGVyLmZpbHRlcl9kYXRhID0ge307XG5cdFx0XHRmaWx0ZXIuZmlsdGVyX2RhdGEuaWQgPSBbdGhpcy5yZWZyZXNoX2lkXTtcblx0XHR9XG5cblx0XHR0aGlzLmFwaS5nZXRTY2hlZHVsZUF2YWlsYWJsZVVzZXJzKCBmaWx0ZXIsIHtcblx0XHRcdG9uUmVzdWx0OiBmdW5jdGlvbiggcmVzdWx0ICkge1xuXG5cdFx0XHRcdHZhciByZXN1bHRfZGF0YSA9IHJlc3VsdC5nZXRSZXN1bHQoKTtcblx0XHRcdFx0aWYgKCAhR2xvYmFsLmlzQXJyYXkoIHJlc3VsdF9kYXRhICkgKSB7XG5cdFx0XHRcdFx0JHRoaXMuc2hvd05vUmVzdWx0Q292ZXIoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQkdGhpcy5yZW1vdmVOb1Jlc3VsdENvdmVyKCk7XG5cdFx0XHRcdFx0aWYgKCBHbG9iYWwuaXNTZXQoICR0aGlzLl9fY3JlYXRlUm93SWQgKSApIHtcblx0XHRcdFx0XHRcdHJlc3VsdF9kYXRhID0gJHRoaXMuX19jcmVhdGVSb3dJZCggcmVzdWx0X2RhdGEgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXN1bHRfZGF0YSA9IEdsb2JhbC5mb3JtYXRHcmlkRGF0YSggcmVzdWx0X2RhdGEsICR0aGlzLmFwaS5rZXlfbmFtZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBUVFVVSUQuaXNVVUlEKCAkdGhpcy5yZWZyZXNoX2lkICkgKSB7XG5cdFx0XHRcdFx0JHRoaXMucmVmcmVzaF9pZCA9IG51bGw7XG5cdFx0XHRcdFx0dmFyIGdyaWRfc291cmNlX2RhdGEgPSAkdGhpcy5ncmlkLmdldERhdGEoKTtcblx0XHRcdFx0XHR2YXIgbGVuID0gZ3JpZF9zb3VyY2VfZGF0YS5sZW5ndGg7XG5cblx0XHRcdFx0XHRpZiAoICQudHlwZSggZ3JpZF9zb3VyY2VfZGF0YSApICE9PSAnYXJyYXknICkge1xuXHRcdFx0XHRcdFx0Z3JpZF9zb3VyY2VfZGF0YSA9IFtdO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHZhciBmb3VuZCA9IGZhbHNlO1xuXHRcdFx0XHRcdHZhciBuZXdfcmVjb3JkID0gcmVzdWx0X2RhdGFbMF07XG5cdFx0XHRcdFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHRcdFx0XHR2YXIgcmVjb3JkID0gZ3JpZF9zb3VyY2VfZGF0YVtpXTtcblxuXHRcdFx0XHRcdFx0Ly9GaXhlZCA9PT0gaXNzdWUuIFRoZSBpZCBzZXQgYnkgalFHcmlkIGlzIHN0cmluZyB0eXBlLlxuXHRcdFx0XHRcdFx0Ly8gaWYgKCAhaXNOYU4oIHBhcnNlSW50KCByZWNvcmQuaWQgKSApICkge1xuXHRcdFx0XHRcdFx0Ly8gXHRyZWNvcmQuaWQgPSBwYXJzZUludCggcmVjb3JkLmlkICk7XG5cdFx0XHRcdFx0XHQvLyB9XG5cblx0XHRcdFx0XHRcdGlmICggcmVjb3JkLmlkID09IG5ld19yZWNvcmQuaWQgKSB7XG5cdFx0XHRcdFx0XHRcdCR0aGlzLmdyaWQuc2V0Um93RGF0YSggbmV3X3JlY29yZC5pZCwgbmV3X3JlY29yZCApO1xuXHRcdFx0XHRcdFx0XHRmb3VuZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICggIWZvdW5kICkge1xuXHRcdFx0XHRcdFx0Z3JpZF9zb3VyY2VfZGF0YS5wdXNoKCBuZXdfcmVjb3JkICk7XG5cdFx0XHRcdFx0XHQkdGhpcy5ncmlkLnNldERhdGEoIGdyaWRfc291cmNlX2RhdGEgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdC8vU2V0IFBhZ2UgZGF0YSB0byB3aWRnZXQsIG5leHQgc2hvdyBkaXNwbGF5IGluZm8gd2hlbiBzZXREZWZhdWx0IE1lbnVcblx0XHRcdFx0XHQkdGhpcy5wYWdlcl9kYXRhID0gcmVzdWx0LmdldFBhZ2VyRGF0YSgpO1xuXG5cdFx0XHRcdFx0Ly9DTGljayB0byBzaG93IG1vcmUgbW9kZSBubyBuZWVkIHRoaXMgc3RlcFxuXHRcdFx0XHRcdGlmICggTG9jYWxDYWNoZURhdGEucGFnaW5nX3R5cGUgIT09IDAgKSB7XG5cdFx0XHRcdFx0XHQkdGhpcy5wYWdpbmdfd2lkZ2V0LnNldFBhZ2VyRGF0YSggJHRoaXMucGFnZXJfZGF0YSApO1xuXHRcdFx0XHRcdFx0JHRoaXMucGFnaW5nX3dpZGdldF8yLnNldFBhZ2VyRGF0YSggJHRoaXMucGFnZXJfZGF0YSApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICggTG9jYWxDYWNoZURhdGEucGFnaW5nX3R5cGUgPT09IDAgJiYgcGFnZV9hY3Rpb24gPT09ICduZXh0JyApIHtcblx0XHRcdFx0XHRcdHZhciBjdXJyZW50X2RhdGEgPSAkdGhpcy5ncmlkLmdldEdyaWRQYXJhbSggJ2RhdGEnICk7XG5cdFx0XHRcdFx0XHRyZXN1bHRfZGF0YSA9IGN1cnJlbnRfZGF0YS5jb25jYXQoIHJlc3VsdF9kYXRhICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0JHRoaXMuZ3JpZC5zZXREYXRhKCByZXN1bHRfZGF0YSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0JHRoaXMuc2V0R3JpZENlbGxCYWNrR3JvdW5kKCk7IC8vU2V0IGNlbGwgYmFja2dyb3VuZCBmb3Igc29tZSB2aWV3c1xuXG5cdFx0XHRcdFByb2dyZXNzQmFyLmNsb3NlT3ZlcmxheSgpOyAvL0FkZCB0aGlzIGluIGluaXREYXRhXG5cdFx0XHRcdGlmICggc2V0X2RlZmF1bHRfbWVudSApIHtcblx0XHRcdFx0XHQkdGhpcy5zZXREZWZhdWx0TWVudSggdHJ1ZSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBMb2NhbENhY2hlRGF0YS5wYWdpbmdfdHlwZSA9PT0gMCApIHtcblx0XHRcdFx0XHRpZiAoICEkdGhpcy5wYWdlcl9kYXRhIHx8ICR0aGlzLnBhZ2VyX2RhdGEuaXNfbGFzdF9wYWdlICkge1xuXHRcdFx0XHRcdFx0JHRoaXMucGFnaW5nX3dpZGdldC5jc3MoICdkaXNwbGF5JywgJ25vbmUnICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdCR0aGlzLnBhZ2luZ193aWRnZXQuY3NzKCAnZGlzcGxheScsICdibG9jaycgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0JHRoaXMuYXV0b09wZW5FZGl0Vmlld0lmTmVjZXNzYXJ5KCk7XG5cblx0XHRcdFx0JHRoaXMuc2VhcmNoRG9uZSgpO1xuXG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG5cblx0c2VhcmNoRG9uZSgpIHtcblx0XHQvL3RoZSByb3RhdGUgaWNvbiBmcm9tIHNlYXJjaCBwYW5lbFxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0JCggJy5idXR0b24tcm90YXRlJyApLnJlbW92ZUNsYXNzKCAnYnV0dG9uLXJvdGF0ZScgKTtcblxuXHRcdHRoaXMuc2V0VG90YWxEaXNwbGF5U3BhbigpO1xuXG5cdFx0dGhpcy5zZXRHcmlkU2l6ZSggdGhpcy51aV9pZCwgdGhpcy5zdWJfdmlld19tb2RlLCB0aGlzLnN1Yl92aWV3X2dyaWRfYXV0b3NpemUsIHRoaXMucGFnZXJfZGF0YSApO1xuXHRcdFRUUHJvbWlzZS5yZXNvbHZlKCAnaW5pdCcsICdpbml0JyApO1xuXG5cdFx0JCggdGhpcy5lbCApLmNzcyggJ29wYWNpdHknLCAxICk7XG5cdH1cblxuXHQvL1xuXG5cdHNldEN1cnJlbnRWaWV3UG9zaXRpb24oKSB7XG5cdFx0dmFyIGN1cnJlbnRfdmlld19kaXYgPSB0aGlzLnNlYXJjaF9wYW5lbC5maW5kKCAnLmxheW91dC1zZWxlY3Rvci1kaXYnICk7XG5cdFx0dmFyIHNhdmVkX2xheW91dF9saSA9IHRoaXMuc2VhcmNoX3BhbmVsLmZpbmQoICdhW3JlZj1cXCdzYXZlZF9sYXlvdXRcXCddJyApLnBhcmVudCgpO1xuXHRcdHZhciBvZmZzZXRfbGVmdCA9IHNhdmVkX2xheW91dF9saS5vZmZzZXQoKS5sZWZ0IC0gKCBHbG9iYWwuYm9keVdpZHRoKCkgLyAyIC0gNTAwICk7XG5cblx0XHRjdXJyZW50X3ZpZXdfZGl2LmNzcyggJ2xlZnQnLCBvZmZzZXRfbGVmdCArIHNhdmVkX2xheW91dF9saS53aWR0aCgpICsgMjAgKTtcblx0fVxuXG5cdGluaXRPcHRpb25zKCBjYWxsQmFjayApIHtcblxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0dmFyIGFwaSA9IFRUQVBJLkFQSVVzZXI7XG5cdFx0dmFyIHVzZXJfZ3JvdXBfYXJyYXkgPSBUVEFQSS5BUElVc2VyR3JvdXA7XG5cdFx0dmFyIG9wdGlvbnMgPSBbXG5cdFx0XHR7IG9wdGlvbl9uYW1lOiAnc3RhdHVzJywgZmllbGRfbmFtZTogbnVsbCwgYXBpOiBhcGkgfSxcblx0XHRcdHsgb3B0aW9uX25hbWU6ICdzZXgnLCBmaWVsZF9uYW1lOiBudWxsLCBhcGk6IGFwaSB9LFxuXHRcdFx0eyBvcHRpb25fbmFtZTogJ2NvdW50cnknLCBmaWVsZF9uYW1lOiAnY291bnRyeScsIGFwaTogdGhpcy5jb21wYW55X2FwaSB9XG5cdFx0XTtcblxuXHRcdHRoaXMuaW5pdERyb3BEb3duT3B0aW9ucyggb3B0aW9ucywgZnVuY3Rpb24oIHJlc3VsdCApIHtcblxuXHRcdFx0dXNlcl9ncm91cF9hcnJheS5nZXRVc2VyR3JvdXAoICcnLCBmYWxzZSwgZmFsc2UsIHtcblx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXMgKSB7XG5cblx0XHRcdFx0XHRyZXMgPSByZXMuZ2V0UmVzdWx0KCk7XG5cdFx0XHRcdFx0cmVzID0gR2xvYmFsLmJ1aWxkVHJlZVJlY29yZCggcmVzICk7XG5cblx0XHRcdFx0XHRpZiAoICEkdGhpcy5lZGl0X29ubHlfbW9kZSApIHtcblx0XHRcdFx0XHRcdGlmICggISR0aGlzLnN1Yl92aWV3X21vZGUgJiYgJHRoaXMuYmFzaWNfc2VhcmNoX2ZpZWxkX3VpX2RpY1snZ3JvdXBfaWQnXSApIHtcblx0XHRcdFx0XHRcdFx0JHRoaXMuYmFzaWNfc2VhcmNoX2ZpZWxkX3VpX2RpY1snZ3JvdXBfaWQnXS5zZXRTb3VyY2VEYXRhKCByZXMgKTtcblx0XHRcdFx0XHRcdFx0JHRoaXMuYWR2X3NlYXJjaF9maWVsZF91aV9kaWNbJ2dyb3VwX2lkJ10uc2V0U291cmNlRGF0YSggcmVzICk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQkdGhpcy51c2VyX2dyb3VwX2FycmF5ID0gcmVzO1xuXG5cdFx0XHRcdFx0aWYgKCBjYWxsQmFjayApIHtcblx0XHRcdFx0XHRcdGNhbGxCYWNrKCByZXN1bHQgKTsgLy8gRmlyc3QgdG8gaW5pdGlhbGl6ZSBkcm9wIGRvd24gb3B0aW9ucywgYW5kIHRoZW4gdG8gaW5pdGlhbGl6ZSBlZGl0IHZpZXcgVUkuXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cblx0XHR9ICk7XG5cdH1cblxuXHRvblNldFNlYXJjaEZpbHRlckZpbmlzaGVkKCkge1xuXHRcdGlmICggdGhpcy5zZWFyY2hfcGFuZWwuZ2V0U2VsZWN0VGFiSW5kZXgoKSA9PT0gMSApIHtcblx0XHRcdHZhciBjb21ibyA9IHRoaXMuYWR2X3NlYXJjaF9maWVsZF91aV9kaWNbJ2NvdW50cnknXTtcblx0XHRcdHZhciBzZWxlY3RfdmFsdWUgPSBjb21iby5nZXRWYWx1ZSgpO1xuXHRcdFx0dGhpcy5zZXRQcm92aW5jZSggc2VsZWN0X3ZhbHVlICk7XG5cdFx0fVxuXHR9XG5cblx0b25CdWlsZEJhc2ljVUlGaW5pc2hlZCgpIHtcblx0XHR2YXIgYmFzaWNTZWFyY2hUYWJQYW5lbCA9IHRoaXMuc2VhcmNoX3BhbmVsLmZpbmQoICdkaXYgI2Jhc2ljX3NlYXJjaCcgKTtcblx0fVxuXG5cdG9uQnVpbGRBZHZVSUZpbmlzaGVkKCkge1xuXG5cdFx0dGhpcy5hZHZfc2VhcmNoX2ZpZWxkX3VpX2RpY1snY291bnRyeSddLmNoYW5nZSggJC5wcm94eSggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgY29tYm8gPSB0aGlzLmFkdl9zZWFyY2hfZmllbGRfdWlfZGljWydjb3VudHJ5J107XG5cdFx0XHR2YXIgc2VsZWN0VmFsID0gY29tYm8uZ2V0VmFsdWUoKTtcblxuXHRcdFx0dGhpcy5zZXRQcm92aW5jZSggc2VsZWN0VmFsICk7XG5cblx0XHRcdHRoaXMuYWR2X3NlYXJjaF9maWVsZF91aV9kaWNbJ3Byb3ZpbmNlJ10uc2V0VmFsdWUoIG51bGwgKTtcblxuXHRcdH0sIHRoaXMgKSApO1xuXHR9XG5cblx0c2V0UHJvdmluY2UoIHZhbCwgbSApIHtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXG5cdFx0aWYgKCAhdmFsIHx8IHZhbCA9PT0gJy0xJyB8fCB2YWwgPT09ICcwJyApIHtcblx0XHRcdCR0aGlzLnByb3ZpbmNlX2FycmF5ID0gW107XG5cdFx0XHR0aGlzLmFkdl9zZWFyY2hfZmllbGRfdWlfZGljWydwcm92aW5jZSddLnNldFNvdXJjZURhdGEoIFtdICk7XG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0dGhpcy5jb21wYW55X2FwaS5nZXRPcHRpb25zKCAncHJvdmluY2UnLCB2YWwsIHtcblx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXMgKSB7XG5cdFx0XHRcdFx0cmVzID0gcmVzLmdldFJlc3VsdCgpO1xuXHRcdFx0XHRcdGlmICggIXJlcyApIHtcblx0XHRcdFx0XHRcdHJlcyA9IFtdO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCR0aGlzLnByb3ZpbmNlX2FycmF5ID0gR2xvYmFsLmJ1aWxkUmVjb3JkQXJyYXkoIHJlcyApO1xuXHRcdFx0XHRcdCR0aGlzLmFkdl9zZWFyY2hfZmllbGRfdWlfZGljWydwcm92aW5jZSddLnNldFNvdXJjZURhdGEoICR0aGlzLnByb3ZpbmNlX2FycmF5ICk7XG5cblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH1cblx0fVxuXG5cdGJ1aWxkU2VhcmNoRmllbGRzKCkge1xuXG5cdFx0c3VwZXIuYnVpbGRTZWFyY2hGaWVsZHMoKTtcblxuXHRcdHRoaXMuc2VhcmNoX2ZpZWxkcyA9IFtcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1N0YXR1cycgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ3N0YXR1c19pZCcsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX29wdGlvbl9jb2x1bW4nLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YXG5cdFx0XHR9ICksXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnRmlyc3QgTmFtZScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ2ZpcnN0X25hbWUnLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVFxuXHRcdFx0fSApLFxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0xhc3QgTmFtZScgKSxcblx0XHRcdFx0ZmllbGQ6ICdsYXN0X25hbWUnLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGluX2NvbHVtbjogMSxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUXG5cdFx0XHR9ICksXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnSG9tZSBQaG9uZScgKSxcblx0XHRcdFx0ZmllbGQ6ICdob21lX3Bob25lJyxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVRcblx0XHRcdH0gKSxcblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdUYWdzJyApLFxuXHRcdFx0XHRmaWVsZDogJ3RhZycsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLlRBR19JTlBVVFxuXHRcdFx0fSApLFxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0VtcGxveWVlIE51bWJlcicgKSxcblx0XHRcdFx0ZmllbGQ6ICdlbXBsb3llZV9udW1iZXInLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IGZhbHNlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRpbl9jb2x1bW46IDIsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVFxuXHRcdFx0fSApLFxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1NleCcgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAyLFxuXHRcdFx0XHRmaWVsZDogJ3NleF9pZCcsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IGZhbHNlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9vcHRpb25fY29sdW1uJyxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0dyb3VwJyApLFxuXHRcdFx0XHRpbl9jb2x1bW46IDIsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRmaWVsZDogJ2dyb3VwX2lkJyxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdHJlZV9jb2x1bW4nLFxuXHRcdFx0XHR0cmVlX21vZGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0RlZmF1bHQgQnJhbmNoJyApLFxuXHRcdFx0XHRpbl9jb2x1bW46IDIsXG5cdFx0XHRcdGZpZWxkOiAnZGVmYXVsdF9icmFuY2hfaWQnLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9icmFuY2gnLFxuXHRcdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSUJyYW5jaCxcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0RlZmF1bHQgRGVwYXJ0bWVudCcgKSxcblx0XHRcdFx0ZmllbGQ6ICdkZWZhdWx0X2RlcGFydG1lbnRfaWQnLFxuXHRcdFx0XHRpbl9jb2x1bW46IDIsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX2RlcGFydG1lbnQnLFxuXHRcdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSURlcGFydG1lbnQsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdEZWZhdWx0IEpvYicgKSxcblx0XHRcdFx0ZmllbGQ6ICdkZWZhdWx0X2pvYl9pZCcsXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfam9iJyxcblx0XHRcdFx0YXBpX2NsYXNzOiAoIEdsb2JhbC5nZXRQcm9kdWN0RWRpdGlvbigpID49IDIwICkgPyBUVEFQSS5BUElKb2IgOiBudWxsLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogR2xvYmFsLmdldFByb2R1Y3RFZGl0aW9uKCkgPj0gMjAsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdEZWZhdWx0IFRhc2snICksXG5cdFx0XHRcdGZpZWxkOiAnZGVmYXVsdF9qb2JfaXRlbV9pZCcsXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfam9iX2l0ZW0nLFxuXHRcdFx0XHRhcGlfY2xhc3M6ICggR2xvYmFsLmdldFByb2R1Y3RFZGl0aW9uKCkgPj0gMjAgKSA/IFRUQVBJLkFQSUpvYkl0ZW0gOiBudWxsLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogR2xvYmFsLmdldFByb2R1Y3RFZGl0aW9uKCkgPj0gMjAsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdEZWZhdWx0IFB1bmNoIFRhZycgKSxcblx0XHRcdFx0ZmllbGQ6ICdkZWZhdWx0X3B1bmNoX3RhZ19pZCcsXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfcHVuY2hfdGFnJyxcblx0XHRcdFx0YXBpX2NsYXNzOiAoIEdsb2JhbC5nZXRQcm9kdWN0RWRpdGlvbigpID49IDIwICkgPyBUVEFQSS5BUElQdW5jaFRhZyA6IG51bGwsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IGZhbHNlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiBHbG9iYWwuZ2V0UHJvZHVjdEVkaXRpb24oKSA+PSAyMCxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0NvdW50cnknICksXG5cdFx0XHRcdGluX2NvbHVtbjogMSxcblx0XHRcdFx0ZmllbGQ6ICdjb3VudHJ5Jyxcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogZmFsc2UsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX29wdGlvbl9jb2x1bW4nLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWFxuXHRcdFx0fSApLFxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1Byb3ZpbmNlL1N0YXRlJyApLFxuXHRcdFx0XHRpbl9jb2x1bW46IDEsXG5cdFx0XHRcdGZpZWxkOiAncHJvdmluY2UnLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfb3B0aW9uX2NvbHVtbicsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdDaXR5JyApLFxuXHRcdFx0XHRmaWVsZDogJ2NpdHknLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IGZhbHNlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRpbl9jb2x1bW46IDEsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVFxuXHRcdFx0fSApLFxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1RpdGxlJyApLFxuXHRcdFx0XHRmaWVsZDogJ3RpdGxlX2lkJyxcblx0XHRcdFx0aW5fY29sdW1uOiAyLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9qb2JfdGl0bGUnLFxuXHRcdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVVzZXJUaXRsZSxcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogZmFsc2UsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdNaW4uIFRpbWUgQmV0d2VlbiBTaGlmdHMnICksXG5cdFx0XHRcdGZpZWxkOiAnbWluaW11bV90aW1lX2JldHdlZW5fc2hpZnQnLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUXG5cdFx0XHR9ICksXG5cdFx0XTtcblxuXHR9XG5cbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2921\n")}}]);