"use strict";(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["reports-form941-Form941ReportViewController"],{1022:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Form941ReportViewController\": () => (/* binding */ Form941ReportViewController)\n/* harmony export */ });\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\nclass Form941ReportViewController extends ReportBaseViewController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\n\t\t\treturn_type_array: null,\n\t\t\texempt_payment_array: null,\n\t\t\tstate_array: null,\n\t\t\tprovince_array: null,\n\t\t\tschedule_deposit_array: null\n\t\t} );\n\n\t\tsuper( options );\n\t}\n\n\tinitReport( options ) {\n\t\tthis.script_name = 'Form941Report';\n\t\tthis.viewId = 'Form941Report';\n\t\tthis.context_menu_name = $.i18n._( 'Form 941' );\n\t\tthis.navigation_label = $.i18n._( 'Saved Report' );\n\t\tthis.view_file = 'Form941ReportView.html';\n\t\tthis.api = TTAPI.APIForm941Report;\n\t\tthis.api_paystub = TTAPI.APIPayStubEntryAccount;\n\t\tthis.include_form_setup = true;\n\t}\n\n\tinitOptions( callBack ) {\n\t\tvar $this = this;\n\t\tvar options = [\n\t\t\t{ option_name: 'page_orientation' },\n\t\t\t{ option_name: 'font_size' },\n\t\t\t{ option_name: 'chart_display_mode' },\n\t\t\t{ option_name: 'chart_type' },\n\t\t\t{ option_name: 'templates' },\n\t\t\t{ option_name: 'setup_fields' },\n\t\t\t{ option_name: 'schedule_deposit' },\n\t\t\t{ option_name: 'auto_refresh' }\n\t\t];\n\n\t\tthis.initDropDownOptions( options, function( result ) {\n\t\t\tTTAPI.APICompany.getOptions( 'province', 'US', {\n\t\t\t\tonResult: function( provinceResult ) {\n\t\t\t\t\t$this.province_array = Global.buildRecordArray( provinceResult.getResult() );\n\n\t\t\t\t\tcallBack( result ); // First to initialize drop down options, and then to initialize edit view UI.\n\t\t\t\t}\n\t\t\t} );\n\n\t\t} );\n\t}\n\n\tgetCustomContextMenuModel() {\n\t\tvar context_menu_model = {\n\t\t\tgroups: {\n\t\t\t\tform: {\n\t\t\t\t\tlabel: $.i18n._( 'Form' ),\n\t\t\t\t\tid: this.viewId + 'Form'\n\t\t\t\t}\n\t\t\t},\n\t\t\texclude: [],\n\t\t\tinclude: [\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'Form' ),\n\t\t\t\t\tid: 'view_print',\n\t\t\t\t\taction_group_header: true,\n\t\t\t\t\taction_group: 'view_form',\n\t\t\t\t\tgroup: 'form',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\ticon: 'view-35x35.png',\n\t\t\t\t\ttype: 2\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'View' ),\n\t\t\t\t\tid: 'view_form',\n\t\t\t\t\taction_group: 'view_form',\n\t\t\t\t\tgroup: 'form',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'Save Setup' ),\n\t\t\t\t\tid: 'save_setup',\n\t\t\t\t\taction_group: 'view_form',\n\t\t\t\t\tgroup: 'form',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\t\treturn context_menu_model;\n\t}\n\n\tbuildFormSetupUI() {\n\n\t\tvar $this = this;\n\n\t\tvar tab3 = this.edit_view_tab.find( '#tab_form_setup' );\n\n\t\tvar tab3_column1 = tab3.find( '.first-column' );\n\n\t\tthis.edit_view_tabs[3] = [];\n\n\t\tthis.edit_view_tabs[3].push( tab3_column1 );\n\n\t\tvar form_item_input;\n\t\tvar widgetContainer;\n\t\tvar label;\n\n\t\t//Schedule Depositor\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\tform_item_input = form_item_input.AComboBox( {\n\t\t\tfield: 'deposit_schedule',\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_option_column',\n\t\t\tkey: 'value'\n\t\t} );\n\n\t\tform_item_input.setSourceData( $this.schedule_deposit_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Schedule Depositor' ), form_item_input, tab3_column1, '' );\n\n\t\t//Total Deposits For This Quarter\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'quarter_deposit' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Total Deposits For This Quarter' ), form_item_input, tab3_column1 );\n\n\t\t//Wages, tips and other compensation (Line 2)\n\t\tvar v_box = $( '
' );\n\n\t\t//Selection Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'wages_include_pay_stub_entry_account'\n\t\t} );\n\n\t\tvar form_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Include' ) );\n\n\t\tv_box.append( form_item );\n\t\tv_box.append( '' );\n\n\t\t//Selection\n\t\tvar form_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\tform_item_input_1.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'wages_exclude_pay_stub_entry_account'\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Exclude' ) );\n\n\t\tv_box.append( form_item );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Wages, tips and other compensation (Line 2)' ), [form_item_input, form_item_input_1], tab3_column1, '', v_box, false, true );\n\n\t\t//Income Tax (Line 3)\n\t\tv_box = $( '' );\n\n\t\t//Selection Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'income_tax_include_pay_stub_entry_account'\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Include' ) );\n\n\t\tv_box.append( form_item );\n\t\tv_box.append( '' );\n\n\t\t//Selection\n\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\tform_item_input_1.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'income_tax_exclude_pay_stub_entry_account'\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Exclude' ) );\n\n\t\tv_box.append( form_item );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Income Tax (Line 3)' ), [form_item_input, form_item_input_1], tab3_column1, '', v_box, false, true );\n\n\t\t//Taxable Social Security Wages (Line 5a)\n\t\tv_box = $( '' );\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX ); //Selection Type\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'social_security_wages_include_pay_stub_entry_account'\n\t\t} );\n\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Include' ) );\n\t\tv_box.append( form_item );\n\t\tv_box.append( '' );\n\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX ); //Selection\n\t\tform_item_input_1.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'social_security_wages_exclude_pay_stub_entry_account'\n\t\t} );\n\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Exclude' ) );\n\t\tv_box.append( form_item );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Taxable Social Security Wages (Line 5a)' ), [form_item_input, form_item_input_1], tab3_column1, '', v_box, false, true );\n\n\n\t\t//Social Security Taxes Withheld\n\t\tv_box = $( '' );\n\n\t\t//Selection Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'social_security_tax_include_pay_stub_entry_account'\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Include' ) );\n\n\t\tv_box.append( form_item );\n\t\tv_box.append( '' );\n\n\t\t//Selection\n\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\tform_item_input_1.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'social_security_tax_exclude_pay_stub_entry_account'\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Exclude' ) );\n\n\t\tv_box.append( form_item );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Social Security Taxes Withheld' ), [form_item_input, form_item_input_1], tab3_column1, '', v_box, false, true );\n\n\t\t//Social Security Taxes - Employer\n\t\tv_box = $( '' );\n\n\t\t//Selection Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'social_security_tax_employer_include_pay_stub_entry_account'\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Include' ) );\n\n\t\tv_box.append( form_item );\n\t\tv_box.append( '' );\n\n\t\t//Selection\n\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\tform_item_input_1.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'social_security_tax_employer_exclude_pay_stub_entry_account'\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Exclude' ) );\n\n\t\tv_box.append( form_item );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Social Security Employer' ), [form_item_input, form_item_input_1], tab3_column1, '', v_box, false, true );\n\n\t\t//Taxable Social Security Tips (Line 5b)\n\t\tv_box = $( '' );\n\n\t\t//Selection Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'social_security_tips_include_pay_stub_entry_account'\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Include' ) );\n\n\t\tv_box.append( form_item );\n\t\tv_box.append( '' );\n\n\t\t//Selection\n\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\tform_item_input_1.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'social_security_tips_exclude_pay_stub_entry_account'\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Exclude' ) );\n\n\t\tv_box.append( form_item );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Taxable Social Security Tips (Line 5b)' ), [form_item_input, form_item_input_1], tab3_column1, '', v_box, false, true );\n\n\t\t//Taxable Medicare Wages (Line 5c)\n\t\tv_box = $( '' );\n\n\t\t//Selection Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'medicare_wages_include_pay_stub_entry_account'\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Include' ) );\n\n\t\tv_box.append( form_item );\n\t\tv_box.append( '' );\n\n\t\t//Selection\n\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\tform_item_input_1.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'medicare_wages_exclude_pay_stub_entry_account'\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Exclude' ) );\n\n\t\tv_box.append( form_item );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Taxable Medicare Wages (Line 5c)' ), [form_item_input, form_item_input_1], tab3_column1, '', v_box, false, true );\n\n\t\t//Medicare Taxes Withheld\n\t\tv_box = $( '' );\n\n\t\t//Selection Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'medicare_tax_include_pay_stub_entry_account'\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Include' ) );\n\n\t\tv_box.append( form_item );\n\t\tv_box.append( '' );\n\n\t\t//Selection\n\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\tform_item_input_1.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'medicare_tax_exclude_pay_stub_entry_account'\n\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Exclude' ) );\n\n\t\tv_box.append( form_item );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Medicare Taxes Withheld' ), [form_item_input, form_item_input_1], tab3_column1, '', v_box, false, true );\n\n\t\t//Medicare Taxes - Employer\n\t\tv_box = $( '' );\n\n\t\t//Selection Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'medicare_tax_employer_include_pay_stub_entry_account'\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Include' ) );\n\n\t\tv_box.append( form_item );\n\t\tv_box.append( '' );\n\n\t\t//Selection\n\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\tform_item_input_1.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_PayStubAccount',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'medicare_tax_employer_exclude_pay_stub_entry_account'\n\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Exclude' ) );\n\n\t\tv_box.append( form_item );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Medicare Employer' ), [form_item_input, form_item_input_1], tab3_column1, '', v_box, false, true );\n\n\n\t\t//Credit from Form 5884-C, line 11, for this quarter\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'form_5884c_credit' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Credit from Form 5884-C on Line 11' ), form_item_input, tab3_column1 );\n\n\t\t//Credit from Form 5884-D, line 12, for this quarter\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'form_5884d_credit' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Credit from Form 5884-D on Line 12' ), form_item_input, tab3_column1 );\n\n\n\t\t// //COVID-19 related settings.\n\t\t// form_item_input = Global.loadWidgetByName( FormItemType.SEPARATED_BOX );\n\t\t// form_item_input.SeparatedBox( { label: $.i18n._( 'COVID-19 Settings' ) } );\n\t\t// this.addEditFieldToColumn( null, form_item_input, tab3_column1, '', null, true, false, 'separated_2' );\n\t\t//\n\t\t// //Qualified Sick Leave Wages after March 31 2021. Should also be included in Line 5a\n\t\t// v_box = $( '' );\n\t\t// form_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX ); //Selection Type\n\t\t// form_item_input.AComboBox( {\n\t\t// \tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t// \tallow_multiple_selection: true,\n\t\t// \tlayout_name: 'global_PayStubAccount',\n\t\t// \tshow_search_inputs: true,\n\t\t// \tset_empty: true,\n\t\t// \tfield: 'qualified_sick_leave_wages_include_pay_stub_entry_account'\n\t\t// } );\n\t\t// form_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Include' ) );\n\t\t// v_box.append( form_item );\n\t\t// v_box.append( '' );\n\t\t// form_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX ); //Selection\n\t\t// form_item_input_1.AComboBox( {\n\t\t// \tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t// \tallow_multiple_selection: true,\n\t\t// \tlayout_name: 'global_PayStubAccount',\n\t\t// \tshow_search_inputs: true,\n\t\t// \tset_empty: true,\n\t\t// \tfield: 'qualified_sick_leave_wages_exclude_pay_stub_entry_account'\n\t\t// } );\n\t\t// form_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Exclude' ) );\n\t\t// v_box.append( form_item );\n\t\t// this.addEditFieldToColumn( $.i18n._( 'Qualified Sick Leave Wages\\nFor Leave Taken After March 31st\\n(Also include in Line 5a)' ), [form_item_input, form_item_input_1], tab3_column1, '', v_box, false, true );\n\t\t//\n\t\t// //Qualified Family Leave Wages after March 31 2021. Automatically included in Line 5a\n\t\t// v_box = $( '' );\n\t\t// form_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX ); //Selection Type\n\t\t// form_item_input.AComboBox( {\n\t\t// \tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t// \tallow_multiple_selection: true,\n\t\t// \tlayout_name: 'global_PayStubAccount',\n\t\t// \tshow_search_inputs: true,\n\t\t// \tset_empty: true,\n\t\t// \tfield: 'qualified_family_leave_wages_include_pay_stub_entry_account'\n\t\t// } );\n\t\t// form_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Include' ) );\n\t\t// v_box.append( form_item );\n\t\t// v_box.append( '' );\n\t\t// form_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX ); //Selection\n\t\t// form_item_input_1.AComboBox( {\n\t\t// \tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t// \tallow_multiple_selection: true,\n\t\t// \tlayout_name: 'global_PayStubAccount',\n\t\t// \tshow_search_inputs: true,\n\t\t// \tset_empty: true,\n\t\t// \tfield: 'qualified_family_leave_wages_exclude_pay_stub_entry_account'\n\t\t// } );\n\t\t// form_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Exclude' ) );\n\t\t// v_box.append( form_item );\n\t\t// this.addEditFieldToColumn( $.i18n._( 'Qualified Family Leave Wages\\nFor Leave Taken After March 31st\\n(Also include in Line 5a)' ), [form_item_input, form_item_input_1], tab3_column1, '', v_box, false, true );\n\t\t//\n\t\t//\n\t\t// //Qualified Employee Retention Credit Wages (Line 11c)\n\t\t// v_box = $( '' );\n\t\t// form_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX ); //Selection Type\n\t\t// form_item_input.AComboBox( {\n\t\t// \tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t// \tallow_multiple_selection: true,\n\t\t// \tlayout_name: 'global_PayStubAccount',\n\t\t// \tshow_search_inputs: true,\n\t\t// \tset_empty: true,\n\t\t// \tfield: 'qualified_retention_credit_wages_include_pay_stub_entry_account'\n\t\t// } );\n\t\t// form_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Include' ) );\n\t\t// v_box.append( form_item );\n\t\t// v_box.append( '' );\n\t\t// form_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX ); //Selection\n\t\t// form_item_input_1.AComboBox( {\n\t\t// \tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t// \tallow_multiple_selection: true,\n\t\t// \tlayout_name: 'global_PayStubAccount',\n\t\t// \tshow_search_inputs: true,\n\t\t// \tset_empty: true,\n\t\t// \tfield: 'qualified_retention_credit_wages_exclude_pay_stub_entry_account'\n\t\t// } );\n\t\t// form_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Exclude' ) );\n\t\t// v_box.append( form_item );\n\t\t// this.addEditFieldToColumn( $.i18n._( 'Qualified Employee Retention Credit Wages\\n(If not received PPP loan)' ), [form_item_input, form_item_input_1], tab3_column1, '', v_box, false, true );\n\t\t//\n\t\t// //Qualified Health Plan Expenses Allocable to Sick/Family Leave Wages (For Lines 19/20)\n\t\t// v_box = $( '' );\n\t\t// form_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX ); //Selection Type\n\t\t// form_item_input.AComboBox( {\n\t\t// \tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t// \tallow_multiple_selection: true,\n\t\t// \tlayout_name: 'global_PayStubAccount',\n\t\t// \tshow_search_inputs: true,\n\t\t// \tset_empty: true,\n\t\t// \tfield: 'qualified_health_plan_expenses_include_pay_stub_entry_account'\n\t\t// } );\n\t\t// form_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Include' ) );\n\t\t// v_box.append( form_item );\n\t\t// v_box.append( '' );\n\t\t// form_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX ); //Selection\n\t\t// form_item_input_1.AComboBox( {\n\t\t// \tapi_class: TTAPI.APIPayStubEntryAccount,\n\t\t// \tallow_multiple_selection: true,\n\t\t// \tlayout_name: 'global_PayStubAccount',\n\t\t// \tshow_search_inputs: true,\n\t\t// \tset_empty: true,\n\t\t// \tfield: 'qualified_health_plan_expenses_exclude_pay_stub_entry_account'\n\t\t// } );\n\t\t// form_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Exclude' ) );\n\t\t// v_box.append( form_item );\n\t\t// this.addEditFieldToColumn( $.i18n._( 'Qualified Health Plan Expenses' ), [form_item_input, form_item_input_1], tab3_column1, '', v_box, false, true );\n\t\t//\n\t\t// //Qualified sick leave wages paid after Mar 31 2021 for leave taken before Apr 1st 2021. Must not be included in Line 5a\n\t\t// form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\t// form_item_input.TTextInput( { field: 'qualified_sick_leave_wages_before_apr' } );\n\t\t// this.addEditFieldToColumn( $.i18n._( 'Qualified Sick Leave Wages Paid After 31-Mar\\n for Leave Before 01-Apr. (Line 5a.i)' ), form_item_input, tab3_column1 );\n\t\t//\n\t\t// //Qualified family leave wages paid after Mar 31 2021 for leave taken before Apr 1st 2021. Must not be included in Line 5a\n\t\t// form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\t// form_item_input.TTextInput( { field: 'qualified_family_leave_wages_before_apr' } );\n\t\t// this.addEditFieldToColumn( $.i18n._( 'Qualified Family Leave Wages Paid After 31-Mar\\nfor Leave Before 01-Apr. (Line 5a.ii)' ), form_item_input, tab3_column1 );\n\t\t//\n\t\t// //Line 19 - Qualified health plan expenses allocable to sick leave before Apr 1st 2021.\n\t\t// form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\t// form_item_input.TTextInput( { field: 'qualified_health_plan_expenses_sick_leave_wages_before_apr' } );\n\t\t// this.addEditFieldToColumn( $.i18n._( 'Qualified Health Plan Expenses Allocable to Sick Leave Wages\\nfor Leave Before 01-Apr. (Line 19)' ), form_item_input, tab3_column1 );\n\t\t//\n\t\t// //Line 20 - Qualified health plan expenses allocable to family leave before Apr 1st 2021.\n\t\t// form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\t// form_item_input.TTextInput( { field: 'qualified_health_plan_expenses_family_leave_wages_before_apr' } );\n\t\t// this.addEditFieldToColumn( $.i18n._( 'Health Plan Expenses allocable to Family Leave Wages\\nfor Leave Before 01-Apr. (Line 20)' ), form_item_input, tab3_column1 );\n\t\t//\n\t\t// //COBRA Premium Assistance\n\t\t// form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\t// form_item_input.TTextInput( { field: 'cobra_premium_assistance' } );\n\t\t// this.addEditFieldToColumn( $.i18n._( 'COBRA Premium Assistance (Worksheet 5, Line 2a)' ), form_item_input, tab3_column1 );\n\t\t//\n\t\t// //COBRA Premium Assistance Employees\n\t\t// form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\t// form_item_input.TTextInput( { field: 'cobra_premium_assistance_users' } );\n\t\t// this.addEditFieldToColumn( $.i18n._( 'Individuals Provided COBRA Premium Assistance (Line 11f)' ), form_item_input, tab3_column1 );\n\t\t//\n\t\t//\n\t\t// //Advances from filing Forms 7200 for the quarter.\n\t\t// form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\t// form_item_input.TTextInput( { field: 'form_7200_advances' } );\n\t\t// this.addEditFieldToColumn( $.i18n._( 'Total Advances Received from Form(s) 7200 for the Quarter (Line 13h)' ), form_item_input, tab3_column1 );\n\t}\n\n\tgetFormSetupData() {\n\t\tvar other = {};\n\n\t\tother.deposit_schedule = this.current_edit_record.deposit_schedule;\n\t\tother.quarter_deposit = this.current_edit_record.quarter_deposit;\n\n\t\tother.wages = {\n\t\t\tinclude_pay_stub_entry_account: this.current_edit_record.wages_include_pay_stub_entry_account,\n\t\t\texclude_pay_stub_entry_account: this.current_edit_record.wages_exclude_pay_stub_entry_account\n\t\t};\n\n\t\tother.income_tax = {\n\t\t\tinclude_pay_stub_entry_account: this.current_edit_record.income_tax_include_pay_stub_entry_account,\n\t\t\texclude_pay_stub_entry_account: this.current_edit_record.income_tax_exclude_pay_stub_entry_account\n\t\t};\n\n\t\tother.social_security_wages = {\n\t\t\tinclude_pay_stub_entry_account: this.current_edit_record.social_security_wages_include_pay_stub_entry_account,\n\t\t\texclude_pay_stub_entry_account: this.current_edit_record.social_security_wages_exclude_pay_stub_entry_account\n\t\t};\n\n\t\tother.social_security_tax = {\n\t\t\tinclude_pay_stub_entry_account: this.current_edit_record.social_security_tax_include_pay_stub_entry_account,\n\t\t\texclude_pay_stub_entry_account: this.current_edit_record.social_security_tax_exclude_pay_stub_entry_account\n\t\t};\n\n\t\tother.social_security_tax_employer = {\n\t\t\tinclude_pay_stub_entry_account: this.current_edit_record.social_security_tax_employer_include_pay_stub_entry_account,\n\t\t\texclude_pay_stub_entry_account: this.current_edit_record.social_security_tax_employer_exclude_pay_stub_entry_account\n\t\t};\n\n\t\tother.social_security_tips = {\n\t\t\tinclude_pay_stub_entry_account: this.current_edit_record.social_security_tips_include_pay_stub_entry_account,\n\t\t\texclude_pay_stub_entry_account: this.current_edit_record.social_security_tips_exclude_pay_stub_entry_account\n\t\t};\n\n\t\tother.medicare_wages = {\n\t\t\tinclude_pay_stub_entry_account: this.current_edit_record.medicare_wages_include_pay_stub_entry_account,\n\t\t\texclude_pay_stub_entry_account: this.current_edit_record.medicare_wages_exclude_pay_stub_entry_account\n\t\t};\n\n\t\tother.medicare_tax = {\n\t\t\tinclude_pay_stub_entry_account: this.current_edit_record.medicare_tax_include_pay_stub_entry_account,\n\t\t\texclude_pay_stub_entry_account: this.current_edit_record.medicare_tax_exclude_pay_stub_entry_account\n\t\t};\n\n\t\tother.medicare_tax_employer = {\n\t\t\tinclude_pay_stub_entry_account: this.current_edit_record.medicare_tax_employer_include_pay_stub_entry_account,\n\t\t\texclude_pay_stub_entry_account: this.current_edit_record.medicare_tax_employer_exclude_pay_stub_entry_account\n\t\t};\n\n\t\t// other.qualified_sick_leave_wages = {\n\t\t// \tinclude_pay_stub_entry_account: this.current_edit_record.qualified_sick_leave_wages_include_pay_stub_entry_account,\n\t\t// \texclude_pay_stub_entry_account: this.current_edit_record.qualified_sick_leave_wages_exclude_pay_stub_entry_account\n\t\t// };\n\t\t//\n\t\t// other.qualified_family_leave_wages = {\n\t\t// \tinclude_pay_stub_entry_account: this.current_edit_record.qualified_family_leave_wages_include_pay_stub_entry_account,\n\t\t// \texclude_pay_stub_entry_account: this.current_edit_record.qualified_family_leave_wages_exclude_pay_stub_entry_account\n\t\t// };\n\t\t//\n\t\t// other.qualified_retention_credit_wages = {\n\t\t// \tinclude_pay_stub_entry_account: this.current_edit_record.qualified_retention_credit_wages_include_pay_stub_entry_account,\n\t\t// \texclude_pay_stub_entry_account: this.current_edit_record.qualified_retention_credit_wages_exclude_pay_stub_entry_account\n\t\t// };\n\t\t//\n\t\t// other.qualified_health_plan_expenses = {\n\t\t// \tinclude_pay_stub_entry_account: this.current_edit_record.qualified_health_plan_expenses_include_pay_stub_entry_account,\n\t\t// \texclude_pay_stub_entry_account: this.current_edit_record.qualified_health_plan_expenses_exclude_pay_stub_entry_account\n\t\t// };\n\t\t//\n\t\t// other.qualified_sick_leave_wages_before_apr = this.current_edit_record.qualified_sick_leave_wages_before_apr;\n\t\t// other.qualified_family_leave_wages_before_apr = this.current_edit_record.qualified_family_leave_wages_before_apr;\n\t\t// other.qualified_health_plan_expenses_sick_leave_wages_before_apr = this.current_edit_record.qualified_health_plan_expenses_sick_leave_wages_before_apr;\n\t\t// other.qualified_health_plan_expenses_family_leave_wages_before_apr = this.current_edit_record.qualified_health_plan_expenses_family_leave_wages_before_apr;\n\t\t//\n\t\t// other.cobra_premium_assistance = this.current_edit_record.cobra_premium_assistance;\n\t\t// other.cobra_premium_assistance_users = this.current_edit_record.cobra_premium_assistance_users;\n\n\t\t//other.form_7200_advances = this.current_edit_record.form_7200_advances;\n\t\tother.form_5884c_credit = this.current_edit_record.form_5884c_credit;\n\t\tother.form_5884d_credit = this.current_edit_record.form_5884d_credit;\n\n\t\treturn other;\n\t}\n\n\t/* jshint ignore:start */\n\tsetFormSetupData( res_data ) {\n\n\t\tif ( !res_data ) {\n\t\t\tthis.show_empty_message = true;\n\t\t} else {\n\t\t\tlet batch_get_real_data = this.processFormSetupDataAndAddToBatch( res_data, [\n\t\t\t\t{ data: _.get(res_data, 'deposit_schedule'), field_key: 'deposit_schedule', api: null },\n\t\t\t\t{ data: _.get(res_data, 'quarter_deposit'), field_key: 'quarter_deposit', api: null },\n\t\t\t\t{ data: _.get(res_data, 'wages'), field_key: 'wages', api: this.api_paystub, api_method: 'getPayStubEntryAccount' },\n\t\t\t\t{ data: _.get(res_data, 'income_tax'), field_key: 'income_tax', api: this.api_paystub, api_method: 'getPayStubEntryAccount' },\n\t\t\t\t{ data: _.get(res_data, 'social_security_wages'), field_key: 'social_security_wages', api: this.api_paystub, api_method: 'getPayStubEntryAccount' },\n\t\t\t\t{ data: _.get(res_data, 'social_security_tax'), field_key: 'social_security_tax', api: this.api_paystub, api_method: 'getPayStubEntryAccount' },\n\t\t\t\t{ data: _.get(res_data, 'social_security_tax_employer'), field_key: 'social_security_tax_employer', api: this.api_paystub, api_method: 'getPayStubEntryAccount' },\n\t\t\t\t{ data: _.get(res_data, 'social_security_tips'), field_key: 'social_security_tips', api: this.api_paystub, api_method: 'getPayStubEntryAccount' },\n\t\t\t\t{ data: _.get(res_data, 'medicare_wages'), field_key: 'medicare_wages', api: this.api_paystub, api_method: 'getPayStubEntryAccount' },\n\t\t\t\t{ data: _.get(res_data, 'medicare_tax'), field_key: 'medicare_tax', api: this.api_paystub, api_method: 'getPayStubEntryAccount' },\n\t\t\t\t{ data: _.get(res_data, 'medicare_tax_employer'), field_key: 'medicare_tax_employer', api: this.api_paystub, api_method: 'getPayStubEntryAccount' },\n\n\t\t\t\t// { data: _.get(res_data, 'qualified_sick_leave_wages'), field_key: 'qualified_sick_leave_wages', api: this.api_paystub, api_method: 'getPayStubEntryAccount' },\n\t\t\t\t// { data: _.get(res_data, 'qualified_family_leave_wages'), field_key: 'qualified_family_leave_wages', api: this.api_paystub, api_method: 'getPayStubEntryAccount' },\n\t\t\t\t// { data: _.get(res_data, 'qualified_retention_credit_wages'), field_key: 'qualified_retention_credit_wages', api: this.api_paystub, api_method: 'getPayStubEntryAccount' },\n\t\t\t\t// { data: _.get(res_data, 'qualified_health_plan_expenses'), field_key: 'qualified_health_plan_expenses', api: this.api_paystub, api_method: 'getPayStubEntryAccount' },\n\t\t\t\t// { data: _.get(res_data, 'qualified_sick_leave_wages_before_apr'), field_key: 'qualified_sick_leave_wages_before_apr', api: null },\n\t\t\t\t// { data: _.get(res_data, 'qualified_family_leave_wages_before_apr'), field_key: 'qualified_family_leave_wages_before_apr', api: null },\n\t\t\t\t// { data: _.get(res_data, 'qualified_health_plan_expenses_sick_leave_wages_before_apr'), field_key: 'qualified_health_plan_expenses_sick_leave_wages_before_apr', api: null },\n\t\t\t\t// { data: _.get(res_data, 'qualified_health_plan_expenses_family_leave_wages_before_apr'), field_key: 'qualified_health_plan_expenses_family_leave_wages_before_apr', api: null },\n\t\t\t\t// { data: _.get(res_data, 'cobra_premium_assistance'), field_key: 'cobra_premium_assistance', api: null },\n\t\t\t\t// { data: _.get(res_data, 'cobra_premium_assistance_users'), field_key: 'cobra_premium_assistance_users', api: null },\n\t\t\t\t// { data: _.get(res_data, 'form_7200_advances'), field_key: 'form_7200_advances', api: null },\n\n\t\t\t\t{ data: _.get(res_data, 'form_5884c_credit'), field_key: 'form_5884c_credit', api: null },\n\t\t\t\t{ data: _.get(res_data, 'form_5884d_credit'), field_key: 'form_5884d_credit', api: null },\n\t\t\t] );\n\n\t\t\tthis.getBatchedRealFormDataFromAPI( batch_get_real_data );\n\t\t}\n\t}\n\n\t/* jshint ignore:end */\n\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LENBQUMsMElBQTBJOztBQUV2SixTQUFTLDJKQUEySjtBQUNwSyxTQUFTLCtKQUErSjtBQUN4SyxTQUFTLHVLQUF1SztBQUNoTCxTQUFTLG1LQUFtSztBQUM1SyxTQUFTLCtIQUErSDtBQUN4SSxTQUFTLG1JQUFtSTtBQUM1SSxTQUFTLHlLQUF5SztBQUNsTCxTQUFTLDZLQUE2SztBQUN0TCxTQUFTLHFHQUFxRztBQUM5RyxTQUFTLGlIQUFpSDtBQUMxSCxTQUFTLHlGQUF5Rjs7QUFFbEcsTUFBTSxNQUFNLENBQUMsZ0ZBQWdGO0FBQzdGLE1BQU0sTUFBTSxDQUFDLGdGQUFnRjtBQUM3Rjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbnRlcmZhY2UvaHRtbDUvdmlld3MvcmVwb3J0cy9mb3JtOTQxL0Zvcm05NDFSZXBvcnRWaWV3Q29udHJvbGxlci5qcz8yNTIzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBGb3JtOTQxUmVwb3J0Vmlld0NvbnRyb2xsZXIgZXh0ZW5kcyBSZXBvcnRCYXNlVmlld0NvbnRyb2xsZXIge1xuXHRjb25zdHJ1Y3Rvciggb3B0aW9ucyA9IHt9ICkge1xuXHRcdF8uZGVmYXVsdHMoIG9wdGlvbnMsIHtcblxuXHRcdFx0cmV0dXJuX3R5cGVfYXJyYXk6IG51bGwsXG5cdFx0XHRleGVtcHRfcGF5bWVudF9hcnJheTogbnVsbCxcblx0XHRcdHN0YXRlX2FycmF5OiBudWxsLFxuXHRcdFx0cHJvdmluY2VfYXJyYXk6IG51bGwsXG5cdFx0XHRzY2hlZHVsZV9kZXBvc2l0X2FycmF5OiBudWxsXG5cdFx0fSApO1xuXG5cdFx0c3VwZXIoIG9wdGlvbnMgKTtcblx0fVxuXG5cdGluaXRSZXBvcnQoIG9wdGlvbnMgKSB7XG5cdFx0dGhpcy5zY3JpcHRfbmFtZSA9ICdGb3JtOTQxUmVwb3J0Jztcblx0XHR0aGlzLnZpZXdJZCA9ICdGb3JtOTQxUmVwb3J0Jztcblx0XHR0aGlzLmNvbnRleHRfbWVudV9uYW1lID0gJC5pMThuLl8oICdGb3JtIDk0MScgKTtcblx0XHR0aGlzLm5hdmlnYXRpb25fbGFiZWwgPSAkLmkxOG4uXyggJ1NhdmVkIFJlcG9ydCcgKTtcblx0XHR0aGlzLnZpZXdfZmlsZSA9ICdGb3JtOTQxUmVwb3J0Vmlldy5odG1sJztcblx0XHR0aGlzLmFwaSA9IFRUQVBJLkFQSUZvcm05NDFSZXBvcnQ7XG5cdFx0dGhpcy5hcGlfcGF5c3R1YiA9IFRUQVBJLkFQSVBheVN0dWJFbnRyeUFjY291bnQ7XG5cdFx0dGhpcy5pbmNsdWRlX2Zvcm1fc2V0dXAgPSB0cnVlO1xuXHR9XG5cblx0aW5pdE9wdGlvbnMoIGNhbGxCYWNrICkge1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0dmFyIG9wdGlvbnMgPSBbXG5cdFx0XHR7IG9wdGlvbl9uYW1lOiAncGFnZV9vcmllbnRhdGlvbicgfSxcblx0XHRcdHsgb3B0aW9uX25hbWU6ICdmb250X3NpemUnIH0sXG5cdFx0XHR7IG9wdGlvbl9uYW1lOiAnY2hhcnRfZGlzcGxheV9tb2RlJyB9LFxuXHRcdFx0eyBvcHRpb25fbmFtZTogJ2NoYXJ0X3R5cGUnIH0sXG5cdFx0XHR7IG9wdGlvbl9uYW1lOiAndGVtcGxhdGVzJyB9LFxuXHRcdFx0eyBvcHRpb25fbmFtZTogJ3NldHVwX2ZpZWxkcycgfSxcblx0XHRcdHsgb3B0aW9uX25hbWU6ICdzY2hlZHVsZV9kZXBvc2l0JyB9LFxuXHRcdFx0eyBvcHRpb25fbmFtZTogJ2F1dG9fcmVmcmVzaCcgfVxuXHRcdF07XG5cblx0XHR0aGlzLmluaXREcm9wRG93bk9wdGlvbnMoIG9wdGlvbnMsIGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cdFx0XHRUVEFQSS5BUElDb21wYW55LmdldE9wdGlvbnMoICdwcm92aW5jZScsICdVUycsIHtcblx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCBwcm92aW5jZVJlc3VsdCApIHtcblx0XHRcdFx0XHQkdGhpcy5wcm92aW5jZV9hcnJheSA9IEdsb2JhbC5idWlsZFJlY29yZEFycmF5KCBwcm92aW5jZVJlc3VsdC5nZXRSZXN1bHQoKSApO1xuXG5cdFx0XHRcdFx0Y2FsbEJhY2soIHJlc3VsdCApOyAvLyBGaXJzdCB0byBpbml0aWFsaXplIGRyb3AgZG93biBvcHRpb25zLCBhbmQgdGhlbiB0byBpbml0aWFsaXplIGVkaXQgdmlldyBVSS5cblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXG5cdFx0fSApO1xuXHR9XG5cblx0Z2V0Q3VzdG9tQ29udGV4dE1lbnVNb2RlbCgpIHtcblx0XHR2YXIgY29udGV4dF9tZW51X21vZGVsID0ge1xuXHRcdFx0Z3JvdXBzOiB7XG5cdFx0XHRcdGZvcm06IHtcblx0XHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdGb3JtJyApLFxuXHRcdFx0XHRcdGlkOiB0aGlzLnZpZXdJZCArICdGb3JtJ1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZXhjbHVkZTogW10sXG5cdFx0XHRpbmNsdWRlOiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdGb3JtJyApLFxuXHRcdFx0XHRcdGlkOiAndmlld19wcmludCcsXG5cdFx0XHRcdFx0YWN0aW9uX2dyb3VwX2hlYWRlcjogdHJ1ZSxcblx0XHRcdFx0XHRhY3Rpb25fZ3JvdXA6ICd2aWV3X2Zvcm0nLFxuXHRcdFx0XHRcdGdyb3VwOiAnZm9ybScsXG5cdFx0XHRcdFx0bWVudV9hbGlnbjogJ3JpZ2h0Jyxcblx0XHRcdFx0XHRpY29uOiAndmlldy0zNXgzNS5wbmcnLFxuXHRcdFx0XHRcdHR5cGU6IDJcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1ZpZXcnICksXG5cdFx0XHRcdFx0aWQ6ICd2aWV3X2Zvcm0nLFxuXHRcdFx0XHRcdGFjdGlvbl9ncm91cDogJ3ZpZXdfZm9ybScsXG5cdFx0XHRcdFx0Z3JvdXA6ICdmb3JtJyxcblx0XHRcdFx0XHRtZW51X2FsaWduOiAncmlnaHQnLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdTYXZlIFNldHVwJyApLFxuXHRcdFx0XHRcdGlkOiAnc2F2ZV9zZXR1cCcsXG5cdFx0XHRcdFx0YWN0aW9uX2dyb3VwOiAndmlld19mb3JtJyxcblx0XHRcdFx0XHRncm91cDogJ2Zvcm0nLFxuXHRcdFx0XHRcdG1lbnVfYWxpZ246ICdyaWdodCcsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XVxuXHRcdH07XG5cblx0XHRyZXR1cm4gY29udGV4dF9tZW51X21vZGVsO1xuXHR9XG5cblx0YnVpbGRGb3JtU2V0dXBVSSgpIHtcblxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cblx0XHR2YXIgdGFiMyA9IHRoaXMuZWRpdF92aWV3X3RhYi5maW5kKCAnI3RhYl9mb3JtX3NldHVwJyApO1xuXG5cdFx0dmFyIHRhYjNfY29sdW1uMSA9IHRhYjMuZmluZCggJy5maXJzdC1jb2x1bW4nICk7XG5cblx0XHR0aGlzLmVkaXRfdmlld190YWJzWzNdID0gW107XG5cblx0XHR0aGlzLmVkaXRfdmlld190YWJzWzNdLnB1c2goIHRhYjNfY29sdW1uMSApO1xuXG5cdFx0dmFyIGZvcm1faXRlbV9pbnB1dDtcblx0XHR2YXIgd2lkZ2V0Q29udGFpbmVyO1xuXHRcdHZhciBsYWJlbDtcblxuXHRcdC8vU2NoZWR1bGUgRGVwb3NpdG9yXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gZm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdFx0ZmllbGQ6ICdkZXBvc2l0X3NjaGVkdWxlJyxcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogZmFsc2UsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9vcHRpb25fY29sdW1uJyxcblx0XHRcdGtleTogJ3ZhbHVlJ1xuXHRcdH0gKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5zY2hlZHVsZV9kZXBvc2l0X2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdTY2hlZHVsZSBEZXBvc2l0b3InICksIGZvcm1faXRlbV9pbnB1dCwgdGFiM19jb2x1bW4xLCAnJyApO1xuXG5cdFx0Ly9Ub3RhbCBEZXBvc2l0cyBGb3IgVGhpcyBRdWFydGVyXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0SW5wdXQoIHsgZmllbGQ6ICdxdWFydGVyX2RlcG9zaXQnIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1RvdGFsIERlcG9zaXRzIEZvciBUaGlzIFF1YXJ0ZXInICksIGZvcm1faXRlbV9pbnB1dCwgdGFiM19jb2x1bW4xICk7XG5cblx0XHQvL1dhZ2VzLCB0aXBzIGFuZCBvdGhlciBjb21wZW5zYXRpb24gKExpbmUgMilcblx0XHR2YXIgdl9ib3ggPSAkKCAnPGRpdiBjbGFzcz1cXCd2LWJveFxcJz48L2Rpdj4nICk7XG5cblx0XHQvL1NlbGVjdGlvbiBUeXBlXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJUGF5U3R1YkVudHJ5QWNjb3VudCxcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX1BheVN0dWJBY2NvdW50Jyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGZpZWxkOiAnd2FnZXNfaW5jbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50J1xuXHRcdH0gKTtcblxuXHRcdHZhciBmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0LCAkLmkxOG4uXyggJ0luY2x1ZGUnICkgKTtcblxuXHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cdFx0dl9ib3guYXBwZW5kKCAnPGRpdiBjbGFzcz1cXCdjbGVhci1ib3RoLWRpdlxcJz48L2Rpdj4nICk7XG5cblx0XHQvL1NlbGVjdGlvblxuXHRcdHZhciBmb3JtX2l0ZW1faW5wdXRfMSA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dF8xLkFDb21ib0JveCgge1xuXHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElQYXlTdHViRW50cnlBY2NvdW50LFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfUGF5U3R1YkFjY291bnQnLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0ZmllbGQ6ICd3YWdlc19leGNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQnXG5cdFx0fSApO1xuXG5cdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dF8xLCAkLmkxOG4uXyggJ0V4Y2x1ZGUnICkgKTtcblxuXHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1dhZ2VzLCB0aXBzIGFuZCBvdGhlciBjb21wZW5zYXRpb24gKExpbmUgMiknICksIFtmb3JtX2l0ZW1faW5wdXQsIGZvcm1faXRlbV9pbnB1dF8xXSwgdGFiM19jb2x1bW4xLCAnJywgdl9ib3gsIGZhbHNlLCB0cnVlICk7XG5cblx0XHQvL0luY29tZSBUYXggKExpbmUgMylcblx0XHR2X2JveCA9ICQoICc8ZGl2IGNsYXNzPVxcJ3YtYm94XFwnPjwvZGl2PicgKTtcblxuXHRcdC8vU2VsZWN0aW9uIFR5cGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElQYXlTdHViRW50cnlBY2NvdW50LFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfUGF5U3R1YkFjY291bnQnLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0ZmllbGQ6ICdpbmNvbWVfdGF4X2luY2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudCdcblx0XHR9ICk7XG5cblx0XHRmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0LCAkLmkxOG4uXyggJ0luY2x1ZGUnICkgKTtcblxuXHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cdFx0dl9ib3guYXBwZW5kKCAnPGRpdiBjbGFzcz1cXCdjbGVhci1ib3RoLWRpdlxcJz48L2Rpdj4nICk7XG5cblx0XHQvL1NlbGVjdGlvblxuXHRcdGZvcm1faXRlbV9pbnB1dF8xID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0XzEuQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVBheVN0dWJFbnRyeUFjY291bnQsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9QYXlTdHViQWNjb3VudCcsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRmaWVsZDogJ2luY29tZV90YXhfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50J1xuXHRcdH0gKTtcblxuXHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXRfMSwgJC5pMThuLl8oICdFeGNsdWRlJyApICk7XG5cblx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdJbmNvbWUgVGF4IChMaW5lIDMpJyApLCBbZm9ybV9pdGVtX2lucHV0LCBmb3JtX2l0ZW1faW5wdXRfMV0sIHRhYjNfY29sdW1uMSwgJycsIHZfYm94LCBmYWxzZSwgdHJ1ZSApO1xuXG5cdFx0Ly9UYXhhYmxlIFNvY2lhbCBTZWN1cml0eSBXYWdlcyAoTGluZSA1YSlcblx0XHR2X2JveCA9ICQoICc8ZGl2IGNsYXNzPVxcJ3YtYm94XFwnPjwvZGl2PicgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7IC8vU2VsZWN0aW9uIFR5cGVcblx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVBheVN0dWJFbnRyeUFjY291bnQsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9QYXlTdHViQWNjb3VudCcsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRmaWVsZDogJ3NvY2lhbF9zZWN1cml0eV93YWdlc19pbmNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQnXG5cdFx0fSApO1xuXHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXQsICQuaTE4bi5fKCAnSW5jbHVkZScgKSApO1xuXHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cdFx0dl9ib3guYXBwZW5kKCAnPGRpdiBjbGFzcz1cXCdjbGVhci1ib3RoLWRpdlxcJz48L2Rpdj4nICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0XzEgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7IC8vU2VsZWN0aW9uXG5cdFx0Zm9ybV9pdGVtX2lucHV0XzEuQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVBheVN0dWJFbnRyeUFjY291bnQsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9QYXlTdHViQWNjb3VudCcsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRmaWVsZDogJ3NvY2lhbF9zZWN1cml0eV93YWdlc19leGNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQnXG5cdFx0fSApO1xuXHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXRfMSwgJC5pMThuLl8oICdFeGNsdWRlJyApICk7XG5cdFx0dl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1RheGFibGUgU29jaWFsIFNlY3VyaXR5IFdhZ2VzIChMaW5lIDVhKScgKSwgW2Zvcm1faXRlbV9pbnB1dCwgZm9ybV9pdGVtX2lucHV0XzFdLCB0YWIzX2NvbHVtbjEsICcnLCB2X2JveCwgZmFsc2UsIHRydWUgKTtcblxuXG5cdFx0Ly9Tb2NpYWwgU2VjdXJpdHkgVGF4ZXMgV2l0aGhlbGRcblx0XHR2X2JveCA9ICQoICc8ZGl2IGNsYXNzPVxcJ3YtYm94XFwnPjwvZGl2PicgKTtcblxuXHRcdC8vU2VsZWN0aW9uIFR5cGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElQYXlTdHViRW50cnlBY2NvdW50LFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfUGF5U3R1YkFjY291bnQnLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0ZmllbGQ6ICdzb2NpYWxfc2VjdXJpdHlfdGF4X2luY2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudCdcblx0XHR9ICk7XG5cblx0XHRmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0LCAkLmkxOG4uXyggJ0luY2x1ZGUnICkgKTtcblxuXHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cdFx0dl9ib3guYXBwZW5kKCAnPGRpdiBjbGFzcz1cXCdjbGVhci1ib3RoLWRpdlxcJz48L2Rpdj4nICk7XG5cblx0XHQvL1NlbGVjdGlvblxuXHRcdGZvcm1faXRlbV9pbnB1dF8xID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0XzEuQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVBheVN0dWJFbnRyeUFjY291bnQsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9QYXlTdHViQWNjb3VudCcsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRmaWVsZDogJ3NvY2lhbF9zZWN1cml0eV90YXhfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50J1xuXHRcdH0gKTtcblxuXHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXRfMSwgJC5pMThuLl8oICdFeGNsdWRlJyApICk7XG5cblx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdTb2NpYWwgU2VjdXJpdHkgVGF4ZXMgV2l0aGhlbGQnICksIFtmb3JtX2l0ZW1faW5wdXQsIGZvcm1faXRlbV9pbnB1dF8xXSwgdGFiM19jb2x1bW4xLCAnJywgdl9ib3gsIGZhbHNlLCB0cnVlICk7XG5cblx0XHQvL1NvY2lhbCBTZWN1cml0eSBUYXhlcyAtIEVtcGxveWVyXG5cdFx0dl9ib3ggPSAkKCAnPGRpdiBjbGFzcz1cXCd2LWJveFxcJz48L2Rpdj4nICk7XG5cblx0XHQvL1NlbGVjdGlvbiBUeXBlXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJUGF5U3R1YkVudHJ5QWNjb3VudCxcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX1BheVN0dWJBY2NvdW50Jyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGZpZWxkOiAnc29jaWFsX3NlY3VyaXR5X3RheF9lbXBsb3llcl9pbmNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQnXG5cdFx0fSApO1xuXG5cdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dCwgJC5pMThuLl8oICdJbmNsdWRlJyApICk7XG5cblx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXHRcdHZfYm94LmFwcGVuZCggJzxkaXYgY2xhc3M9XFwnY2xlYXItYm90aC1kaXZcXCc+PC9kaXY+JyApO1xuXG5cdFx0Ly9TZWxlY3Rpb25cblx0XHRmb3JtX2l0ZW1faW5wdXRfMSA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dF8xLkFDb21ib0JveCgge1xuXHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElQYXlTdHViRW50cnlBY2NvdW50LFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfUGF5U3R1YkFjY291bnQnLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0ZmllbGQ6ICdzb2NpYWxfc2VjdXJpdHlfdGF4X2VtcGxveWVyX2V4Y2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudCdcblx0XHR9ICk7XG5cblx0XHRmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0XzEsICQuaTE4bi5fKCAnRXhjbHVkZScgKSApO1xuXG5cdFx0dl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblxuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnU29jaWFsIFNlY3VyaXR5IEVtcGxveWVyJyApLCBbZm9ybV9pdGVtX2lucHV0LCBmb3JtX2l0ZW1faW5wdXRfMV0sIHRhYjNfY29sdW1uMSwgJycsIHZfYm94LCBmYWxzZSwgdHJ1ZSApO1xuXG5cdFx0Ly9UYXhhYmxlIFNvY2lhbCBTZWN1cml0eSBUaXBzIChMaW5lIDViKVxuXHRcdHZfYm94ID0gJCggJzxkaXYgY2xhc3M9XFwndi1ib3hcXCc+PC9kaXY+JyApO1xuXG5cdFx0Ly9TZWxlY3Rpb24gVHlwZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVBheVN0dWJFbnRyeUFjY291bnQsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9QYXlTdHViQWNjb3VudCcsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRmaWVsZDogJ3NvY2lhbF9zZWN1cml0eV90aXBzX2luY2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudCdcblx0XHR9ICk7XG5cblx0XHRmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0LCAkLmkxOG4uXyggJ0luY2x1ZGUnICkgKTtcblxuXHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cdFx0dl9ib3guYXBwZW5kKCAnPGRpdiBjbGFzcz1cXCdjbGVhci1ib3RoLWRpdlxcJz48L2Rpdj4nICk7XG5cblx0XHQvL1NlbGVjdGlvblxuXHRcdGZvcm1faXRlbV9pbnB1dF8xID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0XzEuQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVBheVN0dWJFbnRyeUFjY291bnQsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9QYXlTdHViQWNjb3VudCcsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRmaWVsZDogJ3NvY2lhbF9zZWN1cml0eV90aXBzX2V4Y2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudCdcblx0XHR9ICk7XG5cblx0XHRmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0XzEsICQuaTE4bi5fKCAnRXhjbHVkZScgKSApO1xuXG5cdFx0dl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblxuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnVGF4YWJsZSBTb2NpYWwgU2VjdXJpdHkgVGlwcyAoTGluZSA1YiknICksIFtmb3JtX2l0ZW1faW5wdXQsIGZvcm1faXRlbV9pbnB1dF8xXSwgdGFiM19jb2x1bW4xLCAnJywgdl9ib3gsIGZhbHNlLCB0cnVlICk7XG5cblx0XHQvL1RheGFibGUgTWVkaWNhcmUgV2FnZXMgKExpbmUgNWMpXG5cdFx0dl9ib3ggPSAkKCAnPGRpdiBjbGFzcz1cXCd2LWJveFxcJz48L2Rpdj4nICk7XG5cblx0XHQvL1NlbGVjdGlvbiBUeXBlXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJUGF5U3R1YkVudHJ5QWNjb3VudCxcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX1BheVN0dWJBY2NvdW50Jyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGZpZWxkOiAnbWVkaWNhcmVfd2FnZXNfaW5jbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50J1xuXHRcdH0gKTtcblxuXHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXQsICQuaTE4bi5fKCAnSW5jbHVkZScgKSApO1xuXG5cdFx0dl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblx0XHR2X2JveC5hcHBlbmQoICc8ZGl2IGNsYXNzPVxcJ2NsZWFyLWJvdGgtZGl2XFwnPjwvZGl2PicgKTtcblxuXHRcdC8vU2VsZWN0aW9uXG5cdFx0Zm9ybV9pdGVtX2lucHV0XzEgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXRfMS5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJUGF5U3R1YkVudHJ5QWNjb3VudCxcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX1BheVN0dWJBY2NvdW50Jyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGZpZWxkOiAnbWVkaWNhcmVfd2FnZXNfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50J1xuXHRcdH0gKTtcblxuXHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXRfMSwgJC5pMThuLl8oICdFeGNsdWRlJyApICk7XG5cblx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdUYXhhYmxlIE1lZGljYXJlIFdhZ2VzIChMaW5lIDVjKScgKSwgW2Zvcm1faXRlbV9pbnB1dCwgZm9ybV9pdGVtX2lucHV0XzFdLCB0YWIzX2NvbHVtbjEsICcnLCB2X2JveCwgZmFsc2UsIHRydWUgKTtcblxuXHRcdC8vTWVkaWNhcmUgVGF4ZXMgV2l0aGhlbGRcblx0XHR2X2JveCA9ICQoICc8ZGl2IGNsYXNzPVxcJ3YtYm94XFwnPjwvZGl2PicgKTtcblxuXHRcdC8vU2VsZWN0aW9uIFR5cGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElQYXlTdHViRW50cnlBY2NvdW50LFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfUGF5U3R1YkFjY291bnQnLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0ZmllbGQ6ICdtZWRpY2FyZV90YXhfaW5jbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50J1xuXHRcdH0gKTtcblxuXHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXQsICQuaTE4bi5fKCAnSW5jbHVkZScgKSApO1xuXG5cdFx0dl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblx0XHR2X2JveC5hcHBlbmQoICc8ZGl2IGNsYXNzPVxcJ2NsZWFyLWJvdGgtZGl2XFwnPjwvZGl2PicgKTtcblxuXHRcdC8vU2VsZWN0aW9uXG5cdFx0Zm9ybV9pdGVtX2lucHV0XzEgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXRfMS5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJUGF5U3R1YkVudHJ5QWNjb3VudCxcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX1BheVN0dWJBY2NvdW50Jyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGZpZWxkOiAnbWVkaWNhcmVfdGF4X2V4Y2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudCdcblxuXHRcdH0gKTtcblxuXHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXRfMSwgJC5pMThuLl8oICdFeGNsdWRlJyApICk7XG5cblx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdNZWRpY2FyZSBUYXhlcyBXaXRoaGVsZCcgKSwgW2Zvcm1faXRlbV9pbnB1dCwgZm9ybV9pdGVtX2lucHV0XzFdLCB0YWIzX2NvbHVtbjEsICcnLCB2X2JveCwgZmFsc2UsIHRydWUgKTtcblxuXHRcdC8vTWVkaWNhcmUgVGF4ZXMgLSBFbXBsb3llclxuXHRcdHZfYm94ID0gJCggJzxkaXYgY2xhc3M9XFwndi1ib3hcXCc+PC9kaXY+JyApO1xuXG5cdFx0Ly9TZWxlY3Rpb24gVHlwZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVBheVN0dWJFbnRyeUFjY291bnQsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9QYXlTdHViQWNjb3VudCcsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRmaWVsZDogJ21lZGljYXJlX3RheF9lbXBsb3llcl9pbmNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQnXG5cdFx0fSApO1xuXG5cdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dCwgJC5pMThuLl8oICdJbmNsdWRlJyApICk7XG5cblx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXHRcdHZfYm94LmFwcGVuZCggJzxkaXYgY2xhc3M9XFwnY2xlYXItYm90aC1kaXZcXCc+PC9kaXY+JyApO1xuXG5cdFx0Ly9TZWxlY3Rpb25cblx0XHRmb3JtX2l0ZW1faW5wdXRfMSA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dF8xLkFDb21ib0JveCgge1xuXHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElQYXlTdHViRW50cnlBY2NvdW50LFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfUGF5U3R1YkFjY291bnQnLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0ZmllbGQ6ICdtZWRpY2FyZV90YXhfZW1wbG95ZXJfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50J1xuXG5cdFx0fSApO1xuXG5cdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dF8xLCAkLmkxOG4uXyggJ0V4Y2x1ZGUnICkgKTtcblxuXHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ01lZGljYXJlIEVtcGxveWVyJyApLCBbZm9ybV9pdGVtX2lucHV0LCBmb3JtX2l0ZW1faW5wdXRfMV0sIHRhYjNfY29sdW1uMSwgJycsIHZfYm94LCBmYWxzZSwgdHJ1ZSApO1xuXG5cblx0XHQvL0NyZWRpdCBmcm9tIEZvcm0gNTg4NC1DLCBsaW5lIDExLCBmb3IgdGhpcyBxdWFydGVyXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0SW5wdXQoIHsgZmllbGQ6ICdmb3JtXzU4ODRjX2NyZWRpdCcgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnQ3JlZGl0IGZyb20gRm9ybSA1ODg0LUMgb24gTGluZSAxMScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWIzX2NvbHVtbjEgKTtcblxuXHRcdC8vQ3JlZGl0IGZyb20gRm9ybSA1ODg0LUQsIGxpbmUgMTIsIGZvciB0aGlzIHF1YXJ0ZXJcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2Zvcm1fNTg4NGRfY3JlZGl0JyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdDcmVkaXQgZnJvbSBGb3JtIDU4ODQtRCBvbiBMaW5lIDEyJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYjNfY29sdW1uMSApO1xuXG5cblx0XHQvLyAvL0NPVklELTE5IHJlbGF0ZWQgc2V0dGluZ3MuXG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5TRVBBUkFURURfQk9YICk7XG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0LlNlcGFyYXRlZEJveCggeyBsYWJlbDogJC5pMThuLl8oICdDT1ZJRC0xOSBTZXR0aW5ncycgKSB9ICk7XG5cdFx0Ly8gdGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggbnVsbCwgZm9ybV9pdGVtX2lucHV0LCB0YWIzX2NvbHVtbjEsICcnLCBudWxsLCB0cnVlLCBmYWxzZSwgJ3NlcGFyYXRlZF8yJyApO1xuXHRcdC8vXG5cdFx0Ly8gLy9RdWFsaWZpZWQgU2ljayBMZWF2ZSBXYWdlcyBhZnRlciBNYXJjaCAzMSAyMDIxLiBTaG91bGQgYWxzbyBiZSBpbmNsdWRlZCBpbiBMaW5lIDVhXG5cdFx0Ly8gdl9ib3ggPSAkKCAnPGRpdiBjbGFzcz1cXCd2LWJveFxcJz48L2Rpdj4nICk7XG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApOyAvL1NlbGVjdGlvbiBUeXBlXG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdC8vIFx0YXBpX2NsYXNzOiBUVEFQSS5BUElQYXlTdHViRW50cnlBY2NvdW50LFxuXHRcdC8vIFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdC8vIFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfUGF5U3R1YkFjY291bnQnLFxuXHRcdC8vIFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdC8vIFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdC8vIFx0ZmllbGQ6ICdxdWFsaWZpZWRfc2lja19sZWF2ZV93YWdlc19pbmNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQnXG5cdFx0Ly8gfSApO1xuXHRcdC8vIGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXQsICQuaTE4bi5fKCAnSW5jbHVkZScgKSApO1xuXHRcdC8vIHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cdFx0Ly8gdl9ib3guYXBwZW5kKCAnPGRpdiBjbGFzcz1cXCdjbGVhci1ib3RoLWRpdlxcJz48L2Rpdj4nICk7XG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0XzEgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7IC8vU2VsZWN0aW9uXG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0XzEuQUNvbWJvQm94KCB7XG5cdFx0Ly8gXHRhcGlfY2xhc3M6IFRUQVBJLkFQSVBheVN0dWJFbnRyeUFjY291bnQsXG5cdFx0Ly8gXHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0Ly8gXHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9QYXlTdHViQWNjb3VudCcsXG5cdFx0Ly8gXHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0Ly8gXHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0Ly8gXHRmaWVsZDogJ3F1YWxpZmllZF9zaWNrX2xlYXZlX3dhZ2VzX2V4Y2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudCdcblx0XHQvLyB9ICk7XG5cdFx0Ly8gZm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dF8xLCAkLmkxOG4uXyggJ0V4Y2x1ZGUnICkgKTtcblx0XHQvLyB2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXHRcdC8vIHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnUXVhbGlmaWVkIFNpY2sgTGVhdmUgV2FnZXNcXG5Gb3IgTGVhdmUgVGFrZW4gQWZ0ZXIgTWFyY2ggMzFzdFxcbihBbHNvIGluY2x1ZGUgaW4gTGluZSA1YSknICksIFtmb3JtX2l0ZW1faW5wdXQsIGZvcm1faXRlbV9pbnB1dF8xXSwgdGFiM19jb2x1bW4xLCAnJywgdl9ib3gsIGZhbHNlLCB0cnVlICk7XG5cdFx0Ly9cblx0XHQvLyAvL1F1YWxpZmllZCBGYW1pbHkgTGVhdmUgV2FnZXMgYWZ0ZXIgTWFyY2ggMzEgMjAyMS4gQXV0b21hdGljYWxseSBpbmNsdWRlZCBpbiBMaW5lIDVhXG5cdFx0Ly8gdl9ib3ggPSAkKCAnPGRpdiBjbGFzcz1cXCd2LWJveFxcJz48L2Rpdj4nICk7XG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApOyAvL1NlbGVjdGlvbiBUeXBlXG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdC8vIFx0YXBpX2NsYXNzOiBUVEFQSS5BUElQYXlTdHViRW50cnlBY2NvdW50LFxuXHRcdC8vIFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdC8vIFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfUGF5U3R1YkFjY291bnQnLFxuXHRcdC8vIFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdC8vIFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdC8vIFx0ZmllbGQ6ICdxdWFsaWZpZWRfZmFtaWx5X2xlYXZlX3dhZ2VzX2luY2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudCdcblx0XHQvLyB9ICk7XG5cdFx0Ly8gZm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dCwgJC5pMThuLl8oICdJbmNsdWRlJyApICk7XG5cdFx0Ly8gdl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblx0XHQvLyB2X2JveC5hcHBlbmQoICc8ZGl2IGNsYXNzPVxcJ2NsZWFyLWJvdGgtZGl2XFwnPjwvZGl2PicgKTtcblx0XHQvLyBmb3JtX2l0ZW1faW5wdXRfMSA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTsgLy9TZWxlY3Rpb25cblx0XHQvLyBmb3JtX2l0ZW1faW5wdXRfMS5BQ29tYm9Cb3goIHtcblx0XHQvLyBcdGFwaV9jbGFzczogVFRBUEkuQVBJUGF5U3R1YkVudHJ5QWNjb3VudCxcblx0XHQvLyBcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHQvLyBcdGxheW91dF9uYW1lOiAnZ2xvYmFsX1BheVN0dWJBY2NvdW50Jyxcblx0XHQvLyBcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHQvLyBcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHQvLyBcdGZpZWxkOiAncXVhbGlmaWVkX2ZhbWlseV9sZWF2ZV93YWdlc19leGNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQnXG5cdFx0Ly8gfSApO1xuXHRcdC8vIGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXRfMSwgJC5pMThuLl8oICdFeGNsdWRlJyApICk7XG5cdFx0Ly8gdl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblx0XHQvLyB0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1F1YWxpZmllZCBGYW1pbHkgTGVhdmUgV2FnZXNcXG5Gb3IgTGVhdmUgVGFrZW4gQWZ0ZXIgTWFyY2ggMzFzdFxcbihBbHNvIGluY2x1ZGUgaW4gTGluZSA1YSknICksIFtmb3JtX2l0ZW1faW5wdXQsIGZvcm1faXRlbV9pbnB1dF8xXSwgdGFiM19jb2x1bW4xLCAnJywgdl9ib3gsIGZhbHNlLCB0cnVlICk7XG5cdFx0Ly9cblx0XHQvL1xuXHRcdC8vIC8vUXVhbGlmaWVkIEVtcGxveWVlIFJldGVudGlvbiBDcmVkaXQgV2FnZXMgKExpbmUgMTFjKVxuXHRcdC8vIHZfYm94ID0gJCggJzxkaXYgY2xhc3M9XFwndi1ib3hcXCc+PC9kaXY+JyApO1xuXHRcdC8vIGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTsgLy9TZWxlY3Rpb24gVHlwZVxuXHRcdC8vIGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHQvLyBcdGFwaV9jbGFzczogVFRBUEkuQVBJUGF5U3R1YkVudHJ5QWNjb3VudCxcblx0XHQvLyBcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHQvLyBcdGxheW91dF9uYW1lOiAnZ2xvYmFsX1BheVN0dWJBY2NvdW50Jyxcblx0XHQvLyBcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHQvLyBcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHQvLyBcdGZpZWxkOiAncXVhbGlmaWVkX3JldGVudGlvbl9jcmVkaXRfd2FnZXNfaW5jbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50J1xuXHRcdC8vIH0gKTtcblx0XHQvLyBmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0LCAkLmkxOG4uXyggJ0luY2x1ZGUnICkgKTtcblx0XHQvLyB2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXHRcdC8vIHZfYm94LmFwcGVuZCggJzxkaXYgY2xhc3M9XFwnY2xlYXItYm90aC1kaXZcXCc+PC9kaXY+JyApO1xuXHRcdC8vIGZvcm1faXRlbV9pbnB1dF8xID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApOyAvL1NlbGVjdGlvblxuXHRcdC8vIGZvcm1faXRlbV9pbnB1dF8xLkFDb21ib0JveCgge1xuXHRcdC8vIFx0YXBpX2NsYXNzOiBUVEFQSS5BUElQYXlTdHViRW50cnlBY2NvdW50LFxuXHRcdC8vIFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdC8vIFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfUGF5U3R1YkFjY291bnQnLFxuXHRcdC8vIFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdC8vIFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdC8vIFx0ZmllbGQ6ICdxdWFsaWZpZWRfcmV0ZW50aW9uX2NyZWRpdF93YWdlc19leGNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQnXG5cdFx0Ly8gfSApO1xuXHRcdC8vIGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXRfMSwgJC5pMThuLl8oICdFeGNsdWRlJyApICk7XG5cdFx0Ly8gdl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblx0XHQvLyB0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1F1YWxpZmllZCBFbXBsb3llZSBSZXRlbnRpb24gQ3JlZGl0IFdhZ2VzXFxuKElmIG5vdCByZWNlaXZlZCBQUFAgbG9hbiknICksIFtmb3JtX2l0ZW1faW5wdXQsIGZvcm1faXRlbV9pbnB1dF8xXSwgdGFiM19jb2x1bW4xLCAnJywgdl9ib3gsIGZhbHNlLCB0cnVlICk7XG5cdFx0Ly9cblx0XHQvLyAvL1F1YWxpZmllZCBIZWFsdGggUGxhbiBFeHBlbnNlcyBBbGxvY2FibGUgdG8gU2ljay9GYW1pbHkgTGVhdmUgV2FnZXMgKEZvciBMaW5lcyAxOS8yMClcblx0XHQvLyB2X2JveCA9ICQoICc8ZGl2IGNsYXNzPVxcJ3YtYm94XFwnPjwvZGl2PicgKTtcblx0XHQvLyBmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7IC8vU2VsZWN0aW9uIFR5cGVcblx0XHQvLyBmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0Ly8gXHRhcGlfY2xhc3M6IFRUQVBJLkFQSVBheVN0dWJFbnRyeUFjY291bnQsXG5cdFx0Ly8gXHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0Ly8gXHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9QYXlTdHViQWNjb3VudCcsXG5cdFx0Ly8gXHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0Ly8gXHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0Ly8gXHRmaWVsZDogJ3F1YWxpZmllZF9oZWFsdGhfcGxhbl9leHBlbnNlc19pbmNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQnXG5cdFx0Ly8gfSApO1xuXHRcdC8vIGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXQsICQuaTE4bi5fKCAnSW5jbHVkZScgKSApO1xuXHRcdC8vIHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cdFx0Ly8gdl9ib3guYXBwZW5kKCAnPGRpdiBjbGFzcz1cXCdjbGVhci1ib3RoLWRpdlxcJz48L2Rpdj4nICk7XG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0XzEgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7IC8vU2VsZWN0aW9uXG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0XzEuQUNvbWJvQm94KCB7XG5cdFx0Ly8gXHRhcGlfY2xhc3M6IFRUQVBJLkFQSVBheVN0dWJFbnRyeUFjY291bnQsXG5cdFx0Ly8gXHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0Ly8gXHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9QYXlTdHViQWNjb3VudCcsXG5cdFx0Ly8gXHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0Ly8gXHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0Ly8gXHRmaWVsZDogJ3F1YWxpZmllZF9oZWFsdGhfcGxhbl9leHBlbnNlc19leGNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQnXG5cdFx0Ly8gfSApO1xuXHRcdC8vIGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXRfMSwgJC5pMThuLl8oICdFeGNsdWRlJyApICk7XG5cdFx0Ly8gdl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblx0XHQvLyB0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1F1YWxpZmllZCBIZWFsdGggUGxhbiBFeHBlbnNlcycgKSwgW2Zvcm1faXRlbV9pbnB1dCwgZm9ybV9pdGVtX2lucHV0XzFdLCB0YWIzX2NvbHVtbjEsICcnLCB2X2JveCwgZmFsc2UsIHRydWUgKTtcblx0XHQvL1xuXHRcdC8vIC8vUXVhbGlmaWVkIHNpY2sgbGVhdmUgd2FnZXMgcGFpZCBhZnRlciBNYXIgMzEgMjAyMSBmb3IgbGVhdmUgdGFrZW4gYmVmb3JlIEFwciAxc3QgMjAyMS4gTXVzdCBub3QgYmUgaW5jbHVkZWQgaW4gTGluZSA1YVxuXHRcdC8vIGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdC8vIGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAncXVhbGlmaWVkX3NpY2tfbGVhdmVfd2FnZXNfYmVmb3JlX2FwcicgfSApO1xuXHRcdC8vIHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnUXVhbGlmaWVkIFNpY2sgTGVhdmUgV2FnZXMgUGFpZCBBZnRlciAzMS1NYXJcXG4gZm9yIExlYXZlIEJlZm9yZSAwMS1BcHIuIChMaW5lIDVhLmkpJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYjNfY29sdW1uMSApO1xuXHRcdC8vXG5cdFx0Ly8gLy9RdWFsaWZpZWQgZmFtaWx5IGxlYXZlIHdhZ2VzIHBhaWQgYWZ0ZXIgTWFyIDMxIDIwMjEgZm9yIGxlYXZlIHRha2VuIGJlZm9yZSBBcHIgMXN0IDIwMjEuIE11c3Qgbm90IGJlIGluY2x1ZGVkIGluIExpbmUgNWFcblx0XHQvLyBmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHQvLyBmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ3F1YWxpZmllZF9mYW1pbHlfbGVhdmVfd2FnZXNfYmVmb3JlX2FwcicgfSApO1xuXHRcdC8vIHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnUXVhbGlmaWVkIEZhbWlseSBMZWF2ZSBXYWdlcyBQYWlkIEFmdGVyIDMxLU1hclxcbmZvciBMZWF2ZSBCZWZvcmUgMDEtQXByLiAoTGluZSA1YS5paSknICksIGZvcm1faXRlbV9pbnB1dCwgdGFiM19jb2x1bW4xICk7XG5cdFx0Ly9cblx0XHQvLyAvL0xpbmUgMTkgLSBRdWFsaWZpZWQgaGVhbHRoIHBsYW4gZXhwZW5zZXMgYWxsb2NhYmxlIHRvIHNpY2sgbGVhdmUgYmVmb3JlIEFwciAxc3QgMjAyMS5cblx0XHQvLyBmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHQvLyBmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ3F1YWxpZmllZF9oZWFsdGhfcGxhbl9leHBlbnNlc19zaWNrX2xlYXZlX3dhZ2VzX2JlZm9yZV9hcHInIH0gKTtcblx0XHQvLyB0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1F1YWxpZmllZCBIZWFsdGggUGxhbiBFeHBlbnNlcyBBbGxvY2FibGUgdG8gU2ljayBMZWF2ZSBXYWdlc1xcbmZvciBMZWF2ZSBCZWZvcmUgMDEtQXByLiAoTGluZSAxOSknICksIGZvcm1faXRlbV9pbnB1dCwgdGFiM19jb2x1bW4xICk7XG5cdFx0Ly9cblx0XHQvLyAvL0xpbmUgMjAgLSBRdWFsaWZpZWQgaGVhbHRoIHBsYW4gZXhwZW5zZXMgYWxsb2NhYmxlIHRvIGZhbWlseSBsZWF2ZSBiZWZvcmUgQXByIDFzdCAyMDIxLlxuXHRcdC8vIGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdC8vIGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAncXVhbGlmaWVkX2hlYWx0aF9wbGFuX2V4cGVuc2VzX2ZhbWlseV9sZWF2ZV93YWdlc19iZWZvcmVfYXByJyB9ICk7XG5cdFx0Ly8gdGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdIZWFsdGggUGxhbiBFeHBlbnNlcyBhbGxvY2FibGUgdG8gRmFtaWx5IExlYXZlIFdhZ2VzXFxuZm9yIExlYXZlIEJlZm9yZSAwMS1BcHIuIChMaW5lIDIwKScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWIzX2NvbHVtbjEgKTtcblx0XHQvL1xuXHRcdC8vIC8vQ09CUkEgUHJlbWl1bSBBc3Npc3RhbmNlXG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0LlRUZXh0SW5wdXQoIHsgZmllbGQ6ICdjb2JyYV9wcmVtaXVtX2Fzc2lzdGFuY2UnIH0gKTtcblx0XHQvLyB0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0NPQlJBIFByZW1pdW0gQXNzaXN0YW5jZSAoV29ya3NoZWV0IDUsIExpbmUgMmEpJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYjNfY29sdW1uMSApO1xuXHRcdC8vXG5cdFx0Ly8gLy9DT0JSQSBQcmVtaXVtIEFzc2lzdGFuY2UgRW1wbG95ZWVzXG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cdFx0Ly8gZm9ybV9pdGVtX2lucHV0LlRUZXh0SW5wdXQoIHsgZmllbGQ6ICdjb2JyYV9wcmVtaXVtX2Fzc2lzdGFuY2VfdXNlcnMnIH0gKTtcblx0XHQvLyB0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0luZGl2aWR1YWxzIFByb3ZpZGVkIENPQlJBIFByZW1pdW0gQXNzaXN0YW5jZSAoTGluZSAxMWYpJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYjNfY29sdW1uMSApO1xuXHRcdC8vXG5cdFx0Ly9cblx0XHQvLyAvL0FkdmFuY2VzIGZyb20gZmlsaW5nIEZvcm1zIDcyMDAgZm9yIHRoZSBxdWFydGVyLlxuXHRcdC8vIGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXHRcdC8vIGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAnZm9ybV83MjAwX2FkdmFuY2VzJyB9ICk7XG5cdFx0Ly8gdGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdUb3RhbCBBZHZhbmNlcyBSZWNlaXZlZCBmcm9tIEZvcm0ocykgNzIwMCBmb3IgdGhlIFF1YXJ0ZXIgKExpbmUgMTNoKScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWIzX2NvbHVtbjEgKTtcblx0fVxuXG5cdGdldEZvcm1TZXR1cERhdGEoKSB7XG5cdFx0dmFyIG90aGVyID0ge307XG5cblx0XHRvdGhlci5kZXBvc2l0X3NjaGVkdWxlID0gdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmRlcG9zaXRfc2NoZWR1bGU7XG5cdFx0b3RoZXIucXVhcnRlcl9kZXBvc2l0ID0gdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnF1YXJ0ZXJfZGVwb3NpdDtcblxuXHRcdG90aGVyLndhZ2VzID0ge1xuXHRcdFx0aW5jbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50OiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQud2FnZXNfaW5jbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50LFxuXHRcdFx0ZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50OiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQud2FnZXNfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50XG5cdFx0fTtcblxuXHRcdG90aGVyLmluY29tZV90YXggPSB7XG5cdFx0XHRpbmNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQ6IHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5pbmNvbWVfdGF4X2luY2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudCxcblx0XHRcdGV4Y2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudDogdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmluY29tZV90YXhfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50XG5cdFx0fTtcblxuXHRcdG90aGVyLnNvY2lhbF9zZWN1cml0eV93YWdlcyA9IHtcblx0XHRcdGluY2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudDogdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnNvY2lhbF9zZWN1cml0eV93YWdlc19pbmNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQsXG5cdFx0XHRleGNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQ6IHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5zb2NpYWxfc2VjdXJpdHlfd2FnZXNfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50XG5cdFx0fTtcblxuXHRcdG90aGVyLnNvY2lhbF9zZWN1cml0eV90YXggPSB7XG5cdFx0XHRpbmNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQ6IHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5zb2NpYWxfc2VjdXJpdHlfdGF4X2luY2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudCxcblx0XHRcdGV4Y2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudDogdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnNvY2lhbF9zZWN1cml0eV90YXhfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50XG5cdFx0fTtcblxuXHRcdG90aGVyLnNvY2lhbF9zZWN1cml0eV90YXhfZW1wbG95ZXIgPSB7XG5cdFx0XHRpbmNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQ6IHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5zb2NpYWxfc2VjdXJpdHlfdGF4X2VtcGxveWVyX2luY2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudCxcblx0XHRcdGV4Y2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudDogdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnNvY2lhbF9zZWN1cml0eV90YXhfZW1wbG95ZXJfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50XG5cdFx0fTtcblxuXHRcdG90aGVyLnNvY2lhbF9zZWN1cml0eV90aXBzID0ge1xuXHRcdFx0aW5jbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50OiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuc29jaWFsX3NlY3VyaXR5X3RpcHNfaW5jbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50LFxuXHRcdFx0ZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50OiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuc29jaWFsX3NlY3VyaXR5X3RpcHNfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50XG5cdFx0fTtcblxuXHRcdG90aGVyLm1lZGljYXJlX3dhZ2VzID0ge1xuXHRcdFx0aW5jbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50OiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQubWVkaWNhcmVfd2FnZXNfaW5jbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50LFxuXHRcdFx0ZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50OiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQubWVkaWNhcmVfd2FnZXNfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50XG5cdFx0fTtcblxuXHRcdG90aGVyLm1lZGljYXJlX3RheCA9IHtcblx0XHRcdGluY2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudDogdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLm1lZGljYXJlX3RheF9pbmNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQsXG5cdFx0XHRleGNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQ6IHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5tZWRpY2FyZV90YXhfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50XG5cdFx0fTtcblxuXHRcdG90aGVyLm1lZGljYXJlX3RheF9lbXBsb3llciA9IHtcblx0XHRcdGluY2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudDogdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLm1lZGljYXJlX3RheF9lbXBsb3llcl9pbmNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQsXG5cdFx0XHRleGNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQ6IHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5tZWRpY2FyZV90YXhfZW1wbG95ZXJfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50XG5cdFx0fTtcblxuXHRcdC8vIG90aGVyLnF1YWxpZmllZF9zaWNrX2xlYXZlX3dhZ2VzID0ge1xuXHRcdC8vIFx0aW5jbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50OiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQucXVhbGlmaWVkX3NpY2tfbGVhdmVfd2FnZXNfaW5jbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50LFxuXHRcdC8vIFx0ZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50OiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQucXVhbGlmaWVkX3NpY2tfbGVhdmVfd2FnZXNfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50XG5cdFx0Ly8gfTtcblx0XHQvL1xuXHRcdC8vIG90aGVyLnF1YWxpZmllZF9mYW1pbHlfbGVhdmVfd2FnZXMgPSB7XG5cdFx0Ly8gXHRpbmNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQ6IHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5xdWFsaWZpZWRfZmFtaWx5X2xlYXZlX3dhZ2VzX2luY2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudCxcblx0XHQvLyBcdGV4Y2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudDogdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnF1YWxpZmllZF9mYW1pbHlfbGVhdmVfd2FnZXNfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50XG5cdFx0Ly8gfTtcblx0XHQvL1xuXHRcdC8vIG90aGVyLnF1YWxpZmllZF9yZXRlbnRpb25fY3JlZGl0X3dhZ2VzID0ge1xuXHRcdC8vIFx0aW5jbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50OiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQucXVhbGlmaWVkX3JldGVudGlvbl9jcmVkaXRfd2FnZXNfaW5jbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50LFxuXHRcdC8vIFx0ZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50OiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQucXVhbGlmaWVkX3JldGVudGlvbl9jcmVkaXRfd2FnZXNfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50XG5cdFx0Ly8gfTtcblx0XHQvL1xuXHRcdC8vIG90aGVyLnF1YWxpZmllZF9oZWFsdGhfcGxhbl9leHBlbnNlcyA9IHtcblx0XHQvLyBcdGluY2x1ZGVfcGF5X3N0dWJfZW50cnlfYWNjb3VudDogdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnF1YWxpZmllZF9oZWFsdGhfcGxhbl9leHBlbnNlc19pbmNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQsXG5cdFx0Ly8gXHRleGNsdWRlX3BheV9zdHViX2VudHJ5X2FjY291bnQ6IHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5xdWFsaWZpZWRfaGVhbHRoX3BsYW5fZXhwZW5zZXNfZXhjbHVkZV9wYXlfc3R1Yl9lbnRyeV9hY2NvdW50XG5cdFx0Ly8gfTtcblx0XHQvL1xuXHRcdC8vIG90aGVyLnF1YWxpZmllZF9zaWNrX2xlYXZlX3dhZ2VzX2JlZm9yZV9hcHIgPSB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQucXVhbGlmaWVkX3NpY2tfbGVhdmVfd2FnZXNfYmVmb3JlX2Fwcjtcblx0XHQvLyBvdGhlci5xdWFsaWZpZWRfZmFtaWx5X2xlYXZlX3dhZ2VzX2JlZm9yZV9hcHIgPSB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQucXVhbGlmaWVkX2ZhbWlseV9sZWF2ZV93YWdlc19iZWZvcmVfYXByO1xuXHRcdC8vIG90aGVyLnF1YWxpZmllZF9oZWFsdGhfcGxhbl9leHBlbnNlc19zaWNrX2xlYXZlX3dhZ2VzX2JlZm9yZV9hcHIgPSB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQucXVhbGlmaWVkX2hlYWx0aF9wbGFuX2V4cGVuc2VzX3NpY2tfbGVhdmVfd2FnZXNfYmVmb3JlX2Fwcjtcblx0XHQvLyBvdGhlci5xdWFsaWZpZWRfaGVhbHRoX3BsYW5fZXhwZW5zZXNfZmFtaWx5X2xlYXZlX3dhZ2VzX2JlZm9yZV9hcHIgPSB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQucXVhbGlmaWVkX2hlYWx0aF9wbGFuX2V4cGVuc2VzX2ZhbWlseV9sZWF2ZV93YWdlc19iZWZvcmVfYXByO1xuXHRcdC8vXG5cdFx0Ly8gb3RoZXIuY29icmFfcHJlbWl1bV9hc3Npc3RhbmNlID0gdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmNvYnJhX3ByZW1pdW1fYXNzaXN0YW5jZTtcblx0XHQvLyBvdGhlci5jb2JyYV9wcmVtaXVtX2Fzc2lzdGFuY2VfdXNlcnMgPSB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuY29icmFfcHJlbWl1bV9hc3Npc3RhbmNlX3VzZXJzO1xuXG5cdFx0Ly9vdGhlci5mb3JtXzcyMDBfYWR2YW5jZXMgPSB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuZm9ybV83MjAwX2FkdmFuY2VzO1xuXHRcdG90aGVyLmZvcm1fNTg4NGNfY3JlZGl0ID0gdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmZvcm1fNTg4NGNfY3JlZGl0O1xuXHRcdG90aGVyLmZvcm1fNTg4NGRfY3JlZGl0ID0gdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmZvcm1fNTg4NGRfY3JlZGl0O1xuXG5cdFx0cmV0dXJuIG90aGVyO1xuXHR9XG5cblx0LyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuXHRzZXRGb3JtU2V0dXBEYXRhKCByZXNfZGF0YSApIHtcblxuXHRcdGlmICggIXJlc19kYXRhICkge1xuXHRcdFx0dGhpcy5zaG93X2VtcHR5X21lc3NhZ2UgPSB0cnVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRsZXQgYmF0Y2hfZ2V0X3JlYWxfZGF0YSA9IHRoaXMucHJvY2Vzc0Zvcm1TZXR1cERhdGFBbmRBZGRUb0JhdGNoKCByZXNfZGF0YSwgW1xuXHRcdFx0XHR7IGRhdGE6IF8uZ2V0KHJlc19kYXRhLCAnZGVwb3NpdF9zY2hlZHVsZScpLCBmaWVsZF9rZXk6ICdkZXBvc2l0X3NjaGVkdWxlJywgYXBpOiBudWxsIH0sXG5cdFx0XHRcdHsgZGF0YTogXy5nZXQocmVzX2RhdGEsICdxdWFydGVyX2RlcG9zaXQnKSwgZmllbGRfa2V5OiAncXVhcnRlcl9kZXBvc2l0JywgYXBpOiBudWxsIH0sXG5cdFx0XHRcdHsgZGF0YTogXy5nZXQocmVzX2RhdGEsICd3YWdlcycpLCBmaWVsZF9rZXk6ICd3YWdlcycsIGFwaTogdGhpcy5hcGlfcGF5c3R1YiwgYXBpX21ldGhvZDogJ2dldFBheVN0dWJFbnRyeUFjY291bnQnIH0sXG5cdFx0XHRcdHsgZGF0YTogXy5nZXQocmVzX2RhdGEsICdpbmNvbWVfdGF4JyksIGZpZWxkX2tleTogJ2luY29tZV90YXgnLCBhcGk6IHRoaXMuYXBpX3BheXN0dWIsIGFwaV9tZXRob2Q6ICdnZXRQYXlTdHViRW50cnlBY2NvdW50JyB9LFxuXHRcdFx0XHR7IGRhdGE6IF8uZ2V0KHJlc19kYXRhLCAnc29jaWFsX3NlY3VyaXR5X3dhZ2VzJyksIGZpZWxkX2tleTogJ3NvY2lhbF9zZWN1cml0eV93YWdlcycsIGFwaTogdGhpcy5hcGlfcGF5c3R1YiwgYXBpX21ldGhvZDogJ2dldFBheVN0dWJFbnRyeUFjY291bnQnIH0sXG5cdFx0XHRcdHsgZGF0YTogXy5nZXQocmVzX2RhdGEsICdzb2NpYWxfc2VjdXJpdHlfdGF4JyksIGZpZWxkX2tleTogJ3NvY2lhbF9zZWN1cml0eV90YXgnLCBhcGk6IHRoaXMuYXBpX3BheXN0dWIsIGFwaV9tZXRob2Q6ICdnZXRQYXlTdHViRW50cnlBY2NvdW50JyB9LFxuXHRcdFx0XHR7IGRhdGE6IF8uZ2V0KHJlc19kYXRhLCAnc29jaWFsX3NlY3VyaXR5X3RheF9lbXBsb3llcicpLCBmaWVsZF9rZXk6ICdzb2NpYWxfc2VjdXJpdHlfdGF4X2VtcGxveWVyJywgYXBpOiB0aGlzLmFwaV9wYXlzdHViLCBhcGlfbWV0aG9kOiAnZ2V0UGF5U3R1YkVudHJ5QWNjb3VudCcgfSxcblx0XHRcdFx0eyBkYXRhOiBfLmdldChyZXNfZGF0YSwgJ3NvY2lhbF9zZWN1cml0eV90aXBzJyksIGZpZWxkX2tleTogJ3NvY2lhbF9zZWN1cml0eV90aXBzJywgYXBpOiB0aGlzLmFwaV9wYXlzdHViLCBhcGlfbWV0aG9kOiAnZ2V0UGF5U3R1YkVudHJ5QWNjb3VudCcgfSxcblx0XHRcdFx0eyBkYXRhOiBfLmdldChyZXNfZGF0YSwgJ21lZGljYXJlX3dhZ2VzJyksIGZpZWxkX2tleTogJ21lZGljYXJlX3dhZ2VzJywgYXBpOiB0aGlzLmFwaV9wYXlzdHViLCBhcGlfbWV0aG9kOiAnZ2V0UGF5U3R1YkVudHJ5QWNjb3VudCcgfSxcblx0XHRcdFx0eyBkYXRhOiBfLmdldChyZXNfZGF0YSwgJ21lZGljYXJlX3RheCcpLCBmaWVsZF9rZXk6ICdtZWRpY2FyZV90YXgnLCBhcGk6IHRoaXMuYXBpX3BheXN0dWIsIGFwaV9tZXRob2Q6ICdnZXRQYXlTdHViRW50cnlBY2NvdW50JyB9LFxuXHRcdFx0XHR7IGRhdGE6IF8uZ2V0KHJlc19kYXRhLCAnbWVkaWNhcmVfdGF4X2VtcGxveWVyJyksIGZpZWxkX2tleTogJ21lZGljYXJlX3RheF9lbXBsb3llcicsIGFwaTogdGhpcy5hcGlfcGF5c3R1YiwgYXBpX21ldGhvZDogJ2dldFBheVN0dWJFbnRyeUFjY291bnQnIH0sXG5cblx0XHRcdFx0Ly8geyBkYXRhOiBfLmdldChyZXNfZGF0YSwgJ3F1YWxpZmllZF9zaWNrX2xlYXZlX3dhZ2VzJyksIGZpZWxkX2tleTogJ3F1YWxpZmllZF9zaWNrX2xlYXZlX3dhZ2VzJywgYXBpOiB0aGlzLmFwaV9wYXlzdHViLCBhcGlfbWV0aG9kOiAnZ2V0UGF5U3R1YkVudHJ5QWNjb3VudCcgfSxcblx0XHRcdFx0Ly8geyBkYXRhOiBfLmdldChyZXNfZGF0YSwgJ3F1YWxpZmllZF9mYW1pbHlfbGVhdmVfd2FnZXMnKSwgZmllbGRfa2V5OiAncXVhbGlmaWVkX2ZhbWlseV9sZWF2ZV93YWdlcycsIGFwaTogdGhpcy5hcGlfcGF5c3R1YiwgYXBpX21ldGhvZDogJ2dldFBheVN0dWJFbnRyeUFjY291bnQnIH0sXG5cdFx0XHRcdC8vIHsgZGF0YTogXy5nZXQocmVzX2RhdGEsICdxdWFsaWZpZWRfcmV0ZW50aW9uX2NyZWRpdF93YWdlcycpLCBmaWVsZF9rZXk6ICdxdWFsaWZpZWRfcmV0ZW50aW9uX2NyZWRpdF93YWdlcycsIGFwaTogdGhpcy5hcGlfcGF5c3R1YiwgYXBpX21ldGhvZDogJ2dldFBheVN0dWJFbnRyeUFjY291bnQnIH0sXG5cdFx0XHRcdC8vIHsgZGF0YTogXy5nZXQocmVzX2RhdGEsICdxdWFsaWZpZWRfaGVhbHRoX3BsYW5fZXhwZW5zZXMnKSwgZmllbGRfa2V5OiAncXVhbGlmaWVkX2hlYWx0aF9wbGFuX2V4cGVuc2VzJywgYXBpOiB0aGlzLmFwaV9wYXlzdHViLCBhcGlfbWV0aG9kOiAnZ2V0UGF5U3R1YkVudHJ5QWNjb3VudCcgfSxcblx0XHRcdFx0Ly8geyBkYXRhOiBfLmdldChyZXNfZGF0YSwgJ3F1YWxpZmllZF9zaWNrX2xlYXZlX3dhZ2VzX2JlZm9yZV9hcHInKSwgZmllbGRfa2V5OiAncXVhbGlmaWVkX3NpY2tfbGVhdmVfd2FnZXNfYmVmb3JlX2FwcicsIGFwaTogbnVsbCB9LFxuXHRcdFx0XHQvLyB7IGRhdGE6IF8uZ2V0KHJlc19kYXRhLCAncXVhbGlmaWVkX2ZhbWlseV9sZWF2ZV93YWdlc19iZWZvcmVfYXByJyksIGZpZWxkX2tleTogJ3F1YWxpZmllZF9mYW1pbHlfbGVhdmVfd2FnZXNfYmVmb3JlX2FwcicsIGFwaTogbnVsbCB9LFxuXHRcdFx0XHQvLyB7IGRhdGE6IF8uZ2V0KHJlc19kYXRhLCAncXVhbGlmaWVkX2hlYWx0aF9wbGFuX2V4cGVuc2VzX3NpY2tfbGVhdmVfd2FnZXNfYmVmb3JlX2FwcicpLCBmaWVsZF9rZXk6ICdxdWFsaWZpZWRfaGVhbHRoX3BsYW5fZXhwZW5zZXNfc2lja19sZWF2ZV93YWdlc19iZWZvcmVfYXByJywgYXBpOiBudWxsIH0sXG5cdFx0XHRcdC8vIHsgZGF0YTogXy5nZXQocmVzX2RhdGEsICdxdWFsaWZpZWRfaGVhbHRoX3BsYW5fZXhwZW5zZXNfZmFtaWx5X2xlYXZlX3dhZ2VzX2JlZm9yZV9hcHInKSwgZmllbGRfa2V5OiAncXVhbGlmaWVkX2hlYWx0aF9wbGFuX2V4cGVuc2VzX2ZhbWlseV9sZWF2ZV93YWdlc19iZWZvcmVfYXByJywgYXBpOiBudWxsIH0sXG5cdFx0XHRcdC8vIHsgZGF0YTogXy5nZXQocmVzX2RhdGEsICdjb2JyYV9wcmVtaXVtX2Fzc2lzdGFuY2UnKSwgZmllbGRfa2V5OiAnY29icmFfcHJlbWl1bV9hc3Npc3RhbmNlJywgYXBpOiBudWxsIH0sXG5cdFx0XHRcdC8vIHsgZGF0YTogXy5nZXQocmVzX2RhdGEsICdjb2JyYV9wcmVtaXVtX2Fzc2lzdGFuY2VfdXNlcnMnKSwgZmllbGRfa2V5OiAnY29icmFfcHJlbWl1bV9hc3Npc3RhbmNlX3VzZXJzJywgYXBpOiBudWxsIH0sXG5cdFx0XHRcdC8vIHsgZGF0YTogXy5nZXQocmVzX2RhdGEsICdmb3JtXzcyMDBfYWR2YW5jZXMnKSwgZmllbGRfa2V5OiAnZm9ybV83MjAwX2FkdmFuY2VzJywgYXBpOiBudWxsIH0sXG5cblx0XHRcdFx0eyBkYXRhOiBfLmdldChyZXNfZGF0YSwgJ2Zvcm1fNTg4NGNfY3JlZGl0JyksIGZpZWxkX2tleTogJ2Zvcm1fNTg4NGNfY3JlZGl0JywgYXBpOiBudWxsIH0sXG5cdFx0XHRcdHsgZGF0YTogXy5nZXQocmVzX2RhdGEsICdmb3JtXzU4ODRkX2NyZWRpdCcpLCBmaWVsZF9rZXk6ICdmb3JtXzU4ODRkX2NyZWRpdCcsIGFwaTogbnVsbCB9LFxuXHRcdFx0XSApO1xuXG5cdFx0XHR0aGlzLmdldEJhdGNoZWRSZWFsRm9ybURhdGFGcm9tQVBJKCBiYXRjaF9nZXRfcmVhbF9kYXRhICk7XG5cdFx0fVxuXHR9XG5cblx0LyoganNoaW50IGlnbm9yZTplbmQgKi9cblxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1022\n")}}]);