diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..7ecfe82
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,1759 @@
+[*]
+charset = utf-8
+end_of_line = lf
+indent_size = 2
+indent_style = space
+insert_final_newline = false
+max_line_length = 150
+tab_width = 2
+trim_trailing_whitespace = true
+ij_continuation_indent_size = 4
+ij_formatter_off_tag = @formatter:off
+ij_formatter_on_tag = @formatter:on
+ij_formatter_tags_enabled = true
+ij_smart_tabs = false
+ij_wrap_on_typing = false
+
+[*.conf]
+ij_continuation_indent_size = 2
+ij_hocon_keep_blank_lines_before_right_brace = 2
+ij_hocon_keep_indents_on_empty_lines = false
+ij_hocon_keep_line_breaks = true
+ij_hocon_space_after_colon = true
+ij_hocon_space_after_comma = true
+ij_hocon_space_before_colon = true
+ij_hocon_space_before_comma = false
+ij_hocon_spaces_within_braces = false
+ij_hocon_spaces_within_brackets = false
+ij_hocon_spaces_within_method_call_parentheses = false
+
+[*.css]
+ij_css_align_closing_brace_with_properties = false
+ij_css_blank_lines_around_nested_selector = 1
+ij_css_blank_lines_between_blocks = 1
+ij_css_brace_placement = 0
+ij_css_enforce_quotes_on_format = false
+ij_css_hex_color_long_format = false
+ij_css_hex_color_lower_case = false
+ij_css_hex_color_short_format = false
+ij_css_hex_color_upper_case = false
+ij_css_keep_blank_lines_in_code = 2
+ij_css_keep_indents_on_empty_lines = false
+ij_css_keep_single_line_blocks = false
+ij_css_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow
+ij_css_space_after_colon = true
+ij_css_space_before_opening_brace = true
+ij_css_use_double_quotes = true
+ij_css_value_alignment = 0
+
+[*.feature]
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_gherkin_keep_indents_on_empty_lines = false
+
+[*.gsp]
+indent_size = 4
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_gsp_keep_indents_on_empty_lines = false
+
+[*.haml]
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_haml_keep_indents_on_empty_lines = false
+
+[*.java]
+ij_java_align_consecutive_assignments = false
+ij_java_align_consecutive_variable_declarations = false
+ij_java_align_group_field_declarations = false
+ij_java_align_multiline_annotation_parameters = false
+ij_java_align_multiline_array_initializer_expression = false
+ij_java_align_multiline_assignment = false
+ij_java_align_multiline_binary_operation = false
+ij_java_align_multiline_chained_methods = false
+ij_java_align_multiline_extends_list = false
+ij_java_align_multiline_for = false
+ij_java_align_multiline_method_parentheses = false
+ij_java_align_multiline_parameters = false
+ij_java_align_multiline_parameters_in_calls = false
+ij_java_align_multiline_parenthesized_expression = false
+ij_java_align_multiline_resources = false
+ij_java_align_multiline_ternary_operation = false
+ij_java_align_multiline_text_blocks = false
+ij_java_align_multiline_throws_list = false
+ij_java_align_subsequent_simple_methods = false
+ij_java_align_throws_keyword = false
+ij_java_annotation_parameter_wrap = off
+ij_java_array_initializer_new_line_after_left_brace = false
+ij_java_array_initializer_right_brace_on_new_line = false
+ij_java_array_initializer_wrap = normal
+ij_java_assert_statement_colon_on_next_line = false
+ij_java_assert_statement_wrap = off
+ij_java_assignment_wrap = off
+ij_java_binary_operation_sign_on_next_line = true
+ij_java_binary_operation_wrap = normal
+ij_java_blank_lines_after_anonymous_class_header = 0
+ij_java_blank_lines_after_class_header = 1
+ij_java_blank_lines_after_imports = 1
+ij_java_blank_lines_after_package = 1
+ij_java_blank_lines_around_class = 1
+ij_java_blank_lines_around_field = 0
+ij_java_blank_lines_around_field_in_interface = 0
+ij_java_blank_lines_around_initializer = 1
+ij_java_blank_lines_around_method = 1
+ij_java_blank_lines_around_method_in_interface = 1
+ij_java_blank_lines_before_class_end = 0
+ij_java_blank_lines_before_imports = 1
+ij_java_blank_lines_before_method_body = 0
+ij_java_blank_lines_before_package = 0
+ij_java_block_brace_style = end_of_line
+ij_java_block_comment_at_first_column = true
+ij_java_call_parameters_new_line_after_left_paren = false
+ij_java_call_parameters_right_paren_on_new_line = false
+ij_java_call_parameters_wrap = normal
+ij_java_case_statement_on_separate_line = true
+ij_java_catch_on_new_line = false
+ij_java_class_annotation_wrap = split_into_lines
+ij_java_class_brace_style = end_of_line
+ij_java_class_count_to_use_import_on_demand = 999
+ij_java_class_names_in_javadoc = 1
+ij_java_do_not_indent_top_level_class_members = false
+ij_java_do_not_wrap_after_single_annotation = false
+ij_java_do_while_brace_force = always
+ij_java_doc_add_blank_line_after_description = true
+ij_java_doc_add_blank_line_after_param_comments = false
+ij_java_doc_add_blank_line_after_return = false
+ij_java_doc_add_p_tag_on_empty_lines = true
+ij_java_doc_align_exception_comments = true
+ij_java_doc_align_param_comments = true
+ij_java_doc_do_not_wrap_if_one_line = false
+ij_java_doc_enable_formatting = true
+ij_java_doc_enable_leading_asterisks = true
+ij_java_doc_indent_on_continuation = false
+ij_java_doc_keep_empty_lines = true
+ij_java_doc_keep_empty_parameter_tag = true
+ij_java_doc_keep_empty_return_tag = true
+ij_java_doc_keep_empty_throws_tag = true
+ij_java_doc_keep_invalid_tags = true
+ij_java_doc_param_description_on_new_line = false
+ij_java_doc_preserve_line_breaks = false
+ij_java_doc_use_throws_not_exception_tag = true
+ij_java_else_on_new_line = false
+ij_java_entity_dd_suffix = EJB
+ij_java_entity_eb_suffix = Bean
+ij_java_entity_hi_suffix = Home
+ij_java_entity_lhi_prefix = Local
+ij_java_entity_lhi_suffix = Home
+ij_java_entity_li_prefix = Local
+ij_java_entity_pk_class = java.lang.String
+ij_java_entity_vo_suffix = VO
+ij_java_enum_constants_wrap = off
+ij_java_extends_keyword_wrap = off
+ij_java_extends_list_wrap = normal
+ij_java_field_annotation_wrap = split_into_lines
+ij_java_finally_on_new_line = false
+ij_java_for_brace_force = always
+ij_java_for_statement_new_line_after_left_paren = false
+ij_java_for_statement_right_paren_on_new_line = false
+ij_java_for_statement_wrap = normal
+ij_java_generate_final_locals = false
+ij_java_generate_final_parameters = false
+ij_java_if_brace_force = always
+ij_java_imports_layout = $*,|,*
+ij_java_indent_case_from_switch = true
+ij_java_insert_inner_class_imports = true
+ij_java_insert_override_annotation = true
+ij_java_keep_blank_lines_before_right_brace = 2
+ij_java_keep_blank_lines_between_package_declaration_and_header = 2
+ij_java_keep_blank_lines_in_code = 1
+ij_java_keep_blank_lines_in_declarations = 2
+ij_java_keep_control_statement_in_one_line = false
+ij_java_keep_first_column_comment = true
+ij_java_keep_indents_on_empty_lines = false
+ij_java_keep_line_breaks = true
+ij_java_keep_multiple_expressions_in_one_line = false
+ij_java_keep_simple_blocks_in_one_line = false
+ij_java_keep_simple_classes_in_one_line = false
+ij_java_keep_simple_lambdas_in_one_line = false
+ij_java_keep_simple_methods_in_one_line = false
+ij_java_label_indent_absolute = false
+ij_java_label_indent_size = 0
+ij_java_lambda_brace_style = end_of_line
+ij_java_layout_static_imports_separately = true
+ij_java_line_comment_add_space = false
+ij_java_line_comment_at_first_column = true
+ij_java_message_dd_suffix = EJB
+ij_java_message_eb_suffix = Bean
+ij_java_method_annotation_wrap = split_into_lines
+ij_java_method_brace_style = end_of_line
+ij_java_method_call_chain_wrap = normal
+ij_java_method_parameters_new_line_after_left_paren = false
+ij_java_method_parameters_right_paren_on_new_line = false
+ij_java_method_parameters_wrap = normal
+ij_java_modifier_list_wrap = false
+ij_java_names_count_to_use_import_on_demand = 999
+ij_java_parameter_annotation_wrap = off
+ij_java_parentheses_expression_new_line_after_left_paren = false
+ij_java_parentheses_expression_right_paren_on_new_line = false
+ij_java_place_assignment_sign_on_next_line = false
+ij_java_prefer_longer_names = true
+ij_java_prefer_parameters_wrap = false
+ij_java_repeat_synchronized = true
+ij_java_replace_instanceof_and_cast = false
+ij_java_replace_null_check = true
+ij_java_replace_sum_lambda_with_method_ref = true
+ij_java_resource_list_new_line_after_left_paren = false
+ij_java_resource_list_right_paren_on_new_line = false
+ij_java_resource_list_wrap = off
+ij_java_session_dd_suffix = EJB
+ij_java_session_eb_suffix = Bean
+ij_java_session_hi_suffix = Home
+ij_java_session_lhi_prefix = Local
+ij_java_session_lhi_suffix = Home
+ij_java_session_li_prefix = Local
+ij_java_session_si_suffix = Service
+ij_java_space_after_closing_angle_bracket_in_type_argument = false
+ij_java_space_after_colon = true
+ij_java_space_after_comma = true
+ij_java_space_after_comma_in_type_arguments = true
+ij_java_space_after_for_semicolon = true
+ij_java_space_after_quest = true
+ij_java_space_after_type_cast = true
+ij_java_space_before_annotation_array_initializer_left_brace = false
+ij_java_space_before_annotation_parameter_list = false
+ij_java_space_before_array_initializer_left_brace = false
+ij_java_space_before_catch_keyword = true
+ij_java_space_before_catch_left_brace = true
+ij_java_space_before_catch_parentheses = true
+ij_java_space_before_class_left_brace = true
+ij_java_space_before_colon = true
+ij_java_space_before_colon_in_foreach = true
+ij_java_space_before_comma = false
+ij_java_space_before_do_left_brace = true
+ij_java_space_before_else_keyword = true
+ij_java_space_before_else_left_brace = true
+ij_java_space_before_finally_keyword = true
+ij_java_space_before_finally_left_brace = true
+ij_java_space_before_for_left_brace = true
+ij_java_space_before_for_parentheses = true
+ij_java_space_before_for_semicolon = false
+ij_java_space_before_if_left_brace = true
+ij_java_space_before_if_parentheses = true
+ij_java_space_before_method_call_parentheses = false
+ij_java_space_before_method_left_brace = true
+ij_java_space_before_method_parentheses = false
+ij_java_space_before_opening_angle_bracket_in_type_parameter = false
+ij_java_space_before_quest = true
+ij_java_space_before_switch_left_brace = true
+ij_java_space_before_switch_parentheses = true
+ij_java_space_before_synchronized_left_brace = true
+ij_java_space_before_synchronized_parentheses = true
+ij_java_space_before_try_left_brace = true
+ij_java_space_before_try_parentheses = true
+ij_java_space_before_type_parameter_list = false
+ij_java_space_before_while_keyword = true
+ij_java_space_before_while_left_brace = true
+ij_java_space_before_while_parentheses = true
+ij_java_space_inside_one_line_enum_braces = false
+ij_java_space_within_empty_array_initializer_braces = false
+ij_java_space_within_empty_method_call_parentheses = false
+ij_java_space_within_empty_method_parentheses = false
+ij_java_spaces_around_additive_operators = true
+ij_java_spaces_around_assignment_operators = true
+ij_java_spaces_around_bitwise_operators = true
+ij_java_spaces_around_equality_operators = true
+ij_java_spaces_around_lambda_arrow = true
+ij_java_spaces_around_logical_operators = true
+ij_java_spaces_around_method_ref_dbl_colon = false
+ij_java_spaces_around_multiplicative_operators = true
+ij_java_spaces_around_relational_operators = true
+ij_java_spaces_around_shift_operators = true
+ij_java_spaces_around_type_bounds_in_type_parameters = true
+ij_java_spaces_around_unary_operator = false
+ij_java_spaces_within_angle_brackets = false
+ij_java_spaces_within_annotation_parentheses = false
+ij_java_spaces_within_array_initializer_braces = false
+ij_java_spaces_within_braces = false
+ij_java_spaces_within_brackets = false
+ij_java_spaces_within_cast_parentheses = false
+ij_java_spaces_within_catch_parentheses = false
+ij_java_spaces_within_for_parentheses = false
+ij_java_spaces_within_if_parentheses = false
+ij_java_spaces_within_method_call_parentheses = false
+ij_java_spaces_within_method_parentheses = false
+ij_java_spaces_within_parentheses = false
+ij_java_spaces_within_switch_parentheses = false
+ij_java_spaces_within_synchronized_parentheses = false
+ij_java_spaces_within_try_parentheses = false
+ij_java_spaces_within_while_parentheses = false
+ij_java_special_else_if_treatment = true
+ij_java_subclass_name_suffix = Impl
+ij_java_ternary_operation_signs_on_next_line = true
+ij_java_ternary_operation_wrap = normal
+ij_java_test_name_suffix = Test
+ij_java_throws_keyword_wrap = normal
+ij_java_throws_list_wrap = off
+ij_java_use_external_annotations = false
+ij_java_use_fq_class_names = false
+ij_java_use_relative_indents = false
+ij_java_use_single_class_imports = true
+ij_java_variable_annotation_wrap = off
+ij_java_visibility = public
+ij_java_while_brace_force = always
+ij_java_while_on_new_line = false
+ij_java_wrap_comments = true
+ij_java_wrap_first_method_in_call_chain = false
+ij_java_wrap_long_lines = false
+
+[*.less]
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_less_align_closing_brace_with_properties = false
+ij_less_blank_lines_around_nested_selector = 1
+ij_less_blank_lines_between_blocks = 1
+ij_less_brace_placement = 0
+ij_less_enforce_quotes_on_format = false
+ij_less_hex_color_long_format = false
+ij_less_hex_color_lower_case = false
+ij_less_hex_color_short_format = false
+ij_less_hex_color_upper_case = false
+ij_less_keep_blank_lines_in_code = 2
+ij_less_keep_indents_on_empty_lines = false
+ij_less_keep_single_line_blocks = false
+ij_less_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow
+ij_less_space_after_colon = true
+ij_less_space_before_opening_brace = true
+ij_less_use_double_quotes = true
+ij_less_value_alignment = 0
+
+[*.pm]
+indent_size = 4
+tab_width = 4
+ij_perl5_align_attributes = false
+ij_perl5_align_comments_on_consequent_lines = true
+ij_perl5_align_consecutive_assignments = 0
+ij_perl5_align_fat_comma = true
+ij_perl5_align_multiline_array_initializer_expression = false
+ij_perl5_align_multiline_binary_operation = false
+ij_perl5_align_multiline_chained_methods = false
+ij_perl5_align_multiline_parameters = true
+ij_perl5_align_multiline_parameters_in_calls = false
+ij_perl5_align_multiline_ternary_operation = false
+ij_perl5_align_qw_elements = false
+ij_perl5_align_variable_declarations = false
+ij_perl5_array_initializer_wrap = off
+ij_perl5_assignment_wrap = off
+ij_perl5_attributes_wrap = 0
+ij_perl5_binary_operation_sign_on_next_line = false
+ij_perl5_binary_operation_wrap = off
+ij_perl5_brace_style_compound = 0
+ij_perl5_brace_style_namespace = 0
+ij_perl5_brace_style_sub = 0
+ij_perl5_call_parameters_wrap = off
+ij_perl5_else_on_new_line = true
+ij_perl5_keep_indents_on_empty_lines = false
+ij_perl5_main_format = 0
+ij_perl5_method_call_chain_wrap = off
+ij_perl5_method_parameters_wrap = off
+ij_perl5_optional_dereference = 0
+ij_perl5_optional_dereference_hashref_element = 0
+ij_perl5_optional_dereference_simple = 0
+ij_perl5_optional_parentheses = 0
+ij_perl5_optional_quotes = 0
+ij_perl5_optional_quotes_hash_index = 0
+ij_perl5_optional_quotes_heredoc_opener = 0
+ij_perl5_place_assignment_sign_on_next_line = false
+ij_perl5_qw_list_wrap = 0
+ij_perl5_space_after_colon = true
+ij_perl5_space_after_comma = true
+ij_perl5_space_after_for_semicolon = true
+ij_perl5_space_after_quest = true
+ij_perl5_space_after_variable_declaration_keyword = true
+ij_perl5_space_before_attribute = true
+ij_perl5_space_before_colon = true
+ij_perl5_space_before_comma = false
+ij_perl5_space_before_do_left_brace = true
+ij_perl5_space_before_else_keyword = true
+ij_perl5_space_before_for_semicolon = false
+ij_perl5_space_before_if_left_brace = true
+ij_perl5_space_before_if_parentheses = true
+ij_perl5_space_before_method_parentheses = false
+ij_perl5_space_before_quest = true
+ij_perl5_space_within_empty_method_parentheses = false
+ij_perl5_spaces_around_additive_operators = true
+ij_perl5_spaces_around_assignment_operators = true
+ij_perl5_spaces_around_bitwise_operators = true
+ij_perl5_spaces_around_concat_operator = true
+ij_perl5_spaces_around_equality_operators = true
+ij_perl5_spaces_around_logical_operators = true
+ij_perl5_spaces_around_multiplicative_operators = true
+ij_perl5_spaces_around_range_operators = true
+ij_perl5_spaces_around_relational_operators = true
+ij_perl5_spaces_around_shift_operators = true
+ij_perl5_spaces_around_unary_operator = false
+ij_perl5_spaces_within_anon_array = true
+ij_perl5_spaces_within_anon_hash = true
+ij_perl5_spaces_within_braces = false
+ij_perl5_spaces_within_if_parentheses = false
+ij_perl5_spaces_within_method_call_parentheses = false
+ij_perl5_spaces_within_method_parentheses = false
+ij_perl5_spaces_within_parentheses = false
+ij_perl5_spaces_within_qw_quotes = false
+ij_perl5_ternary_operation_signs_on_next_line = false
+ij_perl5_ternary_operation_wrap = off
+ij_perl5_variable_declaration_wrap = 0
+ij_perl5_wrap_comments = false
+
+[*.sass]
+ij_sass_align_closing_brace_with_properties = false
+ij_sass_blank_lines_around_nested_selector = 1
+ij_sass_blank_lines_between_blocks = 1
+ij_sass_brace_placement = 0
+ij_sass_enforce_quotes_on_format = false
+ij_sass_hex_color_long_format = false
+ij_sass_hex_color_lower_case = false
+ij_sass_hex_color_short_format = false
+ij_sass_hex_color_upper_case = false
+ij_sass_keep_blank_lines_in_code = 2
+ij_sass_keep_indents_on_empty_lines = false
+ij_sass_keep_single_line_blocks = false
+ij_sass_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow
+ij_sass_space_after_colon = true
+ij_sass_space_before_opening_brace = true
+ij_sass_use_double_quotes = true
+ij_sass_value_alignment = 0
+
+[*.scss]
+ij_scss_align_closing_brace_with_properties = false
+ij_scss_blank_lines_around_nested_selector = 1
+ij_scss_blank_lines_between_blocks = 1
+ij_scss_brace_placement = 0
+ij_scss_enforce_quotes_on_format = false
+ij_scss_hex_color_long_format = false
+ij_scss_hex_color_lower_case = false
+ij_scss_hex_color_short_format = false
+ij_scss_hex_color_upper_case = false
+ij_scss_keep_blank_lines_in_code = 2
+ij_scss_keep_indents_on_empty_lines = false
+ij_scss_keep_single_line_blocks = false
+ij_scss_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow
+ij_scss_space_after_colon = true
+ij_scss_space_before_opening_brace = true
+ij_scss_use_double_quotes = true
+ij_scss_value_alignment = 0
+
+[*.styl]
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_stylus_align_closing_brace_with_properties = false
+ij_stylus_blank_lines_around_nested_selector = 1
+ij_stylus_blank_lines_between_blocks = 1
+ij_stylus_brace_placement = 0
+ij_stylus_enforce_quotes_on_format = false
+ij_stylus_hex_color_long_format = false
+ij_stylus_hex_color_lower_case = false
+ij_stylus_hex_color_short_format = false
+ij_stylus_hex_color_upper_case = false
+ij_stylus_keep_blank_lines_in_code = 2
+ij_stylus_keep_indents_on_empty_lines = false
+ij_stylus_keep_single_line_blocks = false
+ij_stylus_properties_order = font,font-family,font-size,font-weight,font-style,font-variant,font-size-adjust,font-stretch,line-height,position,z-index,top,right,bottom,left,display,visibility,float,clear,overflow,overflow-x,overflow-y,clip,zoom,align-content,align-items,align-self,flex,flex-flow,flex-basis,flex-direction,flex-grow,flex-shrink,flex-wrap,justify-content,order,box-sizing,width,min-width,max-width,height,min-height,max-height,margin,margin-top,margin-right,margin-bottom,margin-left,padding,padding-top,padding-right,padding-bottom,padding-left,table-layout,empty-cells,caption-side,border-spacing,border-collapse,list-style,list-style-position,list-style-type,list-style-image,content,quotes,counter-reset,counter-increment,resize,cursor,user-select,nav-index,nav-up,nav-right,nav-down,nav-left,transition,transition-delay,transition-timing-function,transition-duration,transition-property,transform,transform-origin,animation,animation-name,animation-duration,animation-play-state,animation-timing-function,animation-delay,animation-iteration-count,animation-direction,text-align,text-align-last,vertical-align,white-space,text-decoration,text-emphasis,text-emphasis-color,text-emphasis-style,text-emphasis-position,text-indent,text-justify,letter-spacing,word-spacing,text-outline,text-transform,text-wrap,text-overflow,text-overflow-ellipsis,text-overflow-mode,word-wrap,word-break,tab-size,hyphens,pointer-events,opacity,color,border,border-width,border-style,border-color,border-top,border-top-width,border-top-style,border-top-color,border-right,border-right-width,border-right-style,border-right-color,border-bottom,border-bottom-width,border-bottom-style,border-bottom-color,border-left,border-left-width,border-left-style,border-left-color,border-radius,border-top-left-radius,border-top-right-radius,border-bottom-right-radius,border-bottom-left-radius,border-image,border-image-source,border-image-slice,border-image-width,border-image-outset,border-image-repeat,outline,outline-width,outline-style,outline-color,outline-offset,background,background-color,background-image,background-repeat,background-attachment,background-position,background-position-x,background-position-y,background-clip,background-origin,background-size,box-decoration-break,box-shadow,text-shadow
+ij_stylus_space_after_colon = true
+ij_stylus_space_before_opening_brace = true
+ij_stylus_use_double_quotes = true
+ij_stylus_value_alignment = 0
+
+[.editorconfig]
+ij_editorconfig_align_group_field_declarations = false
+ij_editorconfig_space_after_colon = false
+ij_editorconfig_space_after_comma = true
+ij_editorconfig_space_before_colon = false
+ij_editorconfig_space_before_comma = false
+ij_editorconfig_spaces_around_assignment_operators = true
+
+[{*.as,*.js2,*.es}]
+indent_size = 4
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_actionscript_align_imports = false
+ij_actionscript_align_multiline_array_initializer_expression = false
+ij_actionscript_align_multiline_binary_operation = false
+ij_actionscript_align_multiline_chained_methods = false
+ij_actionscript_align_multiline_extends_list = false
+ij_actionscript_align_multiline_for = false
+ij_actionscript_align_multiline_parameters = false
+ij_actionscript_align_multiline_parameters_in_calls = false
+ij_actionscript_align_multiline_ternary_operation = false
+ij_actionscript_align_object_properties = 0
+ij_actionscript_align_union_types = false
+ij_actionscript_align_var_statements = 0
+ij_actionscript_array_initializer_new_line_after_left_brace = false
+ij_actionscript_array_initializer_right_brace_on_new_line = false
+ij_actionscript_array_initializer_wrap = normal
+ij_actionscript_assignment_wrap = off
+ij_actionscript_binary_operation_sign_on_next_line = true
+ij_actionscript_binary_operation_wrap = normal
+ij_actionscript_blacklist_imports = rxjs/Rx,node_modules/**/*,@angular/material,@angular/material/typings/**
+ij_actionscript_blank_lines_after_imports = 1
+ij_actionscript_blank_lines_after_package = 0
+ij_actionscript_blank_lines_around_function = 1
+ij_actionscript_blank_lines_around_method = 1
+ij_actionscript_blank_lines_before_imports = 1
+ij_actionscript_blank_lines_before_package = 0
+ij_actionscript_block_brace_style = end_of_line
+ij_actionscript_call_parameters_new_line_after_left_paren = false
+ij_actionscript_call_parameters_right_paren_on_new_line = false
+ij_actionscript_call_parameters_wrap = normal
+ij_actionscript_catch_on_new_line = false
+ij_actionscript_chained_call_dot_on_new_line = true
+ij_actionscript_class_brace_style = end_of_line
+ij_actionscript_comma_on_new_line = false
+ij_actionscript_do_while_brace_force = always
+ij_actionscript_else_on_new_line = false
+ij_actionscript_enforce_trailing_comma = keep
+ij_actionscript_extends_keyword_wrap = off
+ij_actionscript_extends_list_wrap = normal
+ij_actionscript_field_prefix = _
+ij_actionscript_file_name_style = relaxed
+ij_actionscript_finally_on_new_line = false
+ij_actionscript_for_brace_force = always
+ij_actionscript_for_statement_new_line_after_left_paren = false
+ij_actionscript_for_statement_right_paren_on_new_line = false
+ij_actionscript_for_statement_wrap = normal
+ij_actionscript_force_quote_style = false
+ij_actionscript_force_semicolon_style = false
+ij_actionscript_function_expression_brace_style = end_of_line
+ij_actionscript_if_brace_force = always
+ij_actionscript_import_merge_members = global
+ij_actionscript_import_prefer_absolute_path = global
+ij_actionscript_import_sort_members = true
+ij_actionscript_import_sort_module_name = false
+ij_actionscript_import_use_node_resolution = true
+ij_actionscript_imports_wrap = on_every_item
+ij_actionscript_indent_case_from_switch = true
+ij_actionscript_indent_chained_calls = true
+ij_actionscript_indent_package_children = 0
+ij_actionscript_jsx_attribute_value = braces
+ij_actionscript_keep_blank_lines_in_code = 1
+ij_actionscript_keep_first_column_comment = true
+ij_actionscript_keep_indents_on_empty_lines = false
+ij_actionscript_keep_line_breaks = true
+ij_actionscript_keep_simple_blocks_in_one_line = false
+ij_actionscript_keep_simple_methods_in_one_line = false
+ij_actionscript_line_comment_at_first_column = true
+ij_actionscript_method_brace_style = end_of_line
+ij_actionscript_method_call_chain_wrap = off
+ij_actionscript_method_parameters_new_line_after_left_paren = false
+ij_actionscript_method_parameters_right_paren_on_new_line = false
+ij_actionscript_method_parameters_wrap = normal
+ij_actionscript_object_literal_wrap = on_every_item
+ij_actionscript_parentheses_expression_new_line_after_left_paren = false
+ij_actionscript_parentheses_expression_right_paren_on_new_line = false
+ij_actionscript_place_assignment_sign_on_next_line = false
+ij_actionscript_prefer_as_type_cast = false
+ij_actionscript_prefer_parameters_wrap = false
+ij_actionscript_reformat_c_style_comments = false
+ij_actionscript_space_after_colon = true
+ij_actionscript_space_after_comma = true
+ij_actionscript_space_after_dots_in_rest_parameter = false
+ij_actionscript_space_after_generator_mult = true
+ij_actionscript_space_after_property_colon = true
+ij_actionscript_space_after_quest = true
+ij_actionscript_space_after_type_colon = false
+ij_actionscript_space_after_unary_not = false
+ij_actionscript_space_before_async_arrow_lparen = true
+ij_actionscript_space_before_catch_keyword = true
+ij_actionscript_space_before_catch_left_brace = true
+ij_actionscript_space_before_catch_parentheses = true
+ij_actionscript_space_before_class_lbrace = true
+ij_actionscript_space_before_colon = true
+ij_actionscript_space_before_comma = false
+ij_actionscript_space_before_do_left_brace = true
+ij_actionscript_space_before_else_keyword = true
+ij_actionscript_space_before_else_left_brace = true
+ij_actionscript_space_before_finally_keyword = true
+ij_actionscript_space_before_finally_left_brace = true
+ij_actionscript_space_before_for_left_brace = true
+ij_actionscript_space_before_for_parentheses = true
+ij_actionscript_space_before_for_semicolon = false
+ij_actionscript_space_before_function_left_parenth = true
+ij_actionscript_space_before_generator_mult = false
+ij_actionscript_space_before_if_left_brace = true
+ij_actionscript_space_before_if_parentheses = true
+ij_actionscript_space_before_method_call_parentheses = false
+ij_actionscript_space_before_method_left_brace = true
+ij_actionscript_space_before_method_parentheses = false
+ij_actionscript_space_before_property_colon = false
+ij_actionscript_space_before_quest = true
+ij_actionscript_space_before_switch_left_brace = true
+ij_actionscript_space_before_switch_parentheses = true
+ij_actionscript_space_before_try_left_brace = true
+ij_actionscript_space_before_type_colon = false
+ij_actionscript_space_before_unary_not = false
+ij_actionscript_space_before_while_keyword = true
+ij_actionscript_space_before_while_left_brace = true
+ij_actionscript_space_before_while_parentheses = true
+ij_actionscript_spaces_around_additive_operators = true
+ij_actionscript_spaces_around_arrow_function_operator = true
+ij_actionscript_spaces_around_assignment_operators = true
+ij_actionscript_spaces_around_bitwise_operators = true
+ij_actionscript_spaces_around_equality_operators = true
+ij_actionscript_spaces_around_logical_operators = true
+ij_actionscript_spaces_around_multiplicative_operators = true
+ij_actionscript_spaces_around_relational_operators = true
+ij_actionscript_spaces_around_shift_operators = true
+ij_actionscript_spaces_around_unary_operator = false
+ij_actionscript_spaces_within_array_initializer_brackets = false
+ij_actionscript_spaces_within_brackets = false
+ij_actionscript_spaces_within_catch_parentheses = false
+ij_actionscript_spaces_within_for_parentheses = false
+ij_actionscript_spaces_within_if_parentheses = false
+ij_actionscript_spaces_within_imports = false
+ij_actionscript_spaces_within_interpolation_expressions = false
+ij_actionscript_spaces_within_method_call_parentheses = false
+ij_actionscript_spaces_within_method_parentheses = false
+ij_actionscript_spaces_within_object_literal_braces = false
+ij_actionscript_spaces_within_object_type_braces = true
+ij_actionscript_spaces_within_parentheses = false
+ij_actionscript_spaces_within_switch_parentheses = false
+ij_actionscript_spaces_within_type_assertion = false
+ij_actionscript_spaces_within_union_types = true
+ij_actionscript_spaces_within_while_parentheses = false
+ij_actionscript_special_else_if_treatment = true
+ij_actionscript_ternary_operation_signs_on_next_line = true
+ij_actionscript_ternary_operation_wrap = normal
+ij_actionscript_union_types_wrap = on_every_item
+ij_actionscript_use_chained_calls_group_indents = false
+ij_actionscript_use_double_quotes = true
+ij_actionscript_use_explicit_js_extension = global
+ij_actionscript_use_path_mapping = always
+ij_actionscript_use_public_modifier = false
+ij_actionscript_use_semicolon_after_statement = true
+ij_actionscript_var_declaration_wrap = normal
+ij_actionscript_while_brace_force = always
+ij_actionscript_while_on_new_line = false
+ij_actionscript_wrap_comments = false
+
+[{*.ats,*.ts}]
+ij_typescript_align_imports = false
+ij_typescript_align_multiline_array_initializer_expression = false
+ij_typescript_align_multiline_binary_operation = false
+ij_typescript_align_multiline_chained_methods = false
+ij_typescript_align_multiline_extends_list = false
+ij_typescript_align_multiline_for = true
+ij_typescript_align_multiline_parameters = true
+ij_typescript_align_multiline_parameters_in_calls = false
+ij_typescript_align_multiline_ternary_operation = false
+ij_typescript_align_object_properties = 0
+ij_typescript_align_union_types = false
+ij_typescript_align_var_statements = 0
+ij_typescript_array_initializer_new_line_after_left_brace = false
+ij_typescript_array_initializer_right_brace_on_new_line = false
+ij_typescript_array_initializer_wrap = off
+ij_typescript_assignment_wrap = off
+ij_typescript_binary_operation_sign_on_next_line = false
+ij_typescript_binary_operation_wrap = off
+ij_typescript_blacklist_imports = rxjs/Rx,node_modules/**/*,@angular/material,@angular/material/typings/**
+ij_typescript_blank_lines_after_imports = 1
+ij_typescript_blank_lines_around_class = 1
+ij_typescript_blank_lines_around_field = 0
+ij_typescript_blank_lines_around_field_in_interface = 0
+ij_typescript_blank_lines_around_function = 1
+ij_typescript_blank_lines_around_method = 1
+ij_typescript_blank_lines_around_method_in_interface = 1
+ij_typescript_block_brace_style = end_of_line
+ij_typescript_call_parameters_new_line_after_left_paren = false
+ij_typescript_call_parameters_right_paren_on_new_line = false
+ij_typescript_call_parameters_wrap = off
+ij_typescript_catch_on_new_line = false
+ij_typescript_chained_call_dot_on_new_line = true
+ij_typescript_class_brace_style = end_of_line
+ij_typescript_comma_on_new_line = false
+ij_typescript_do_while_brace_force = never
+ij_typescript_else_on_new_line = false
+ij_typescript_enforce_trailing_comma = keep
+ij_typescript_extends_keyword_wrap = off
+ij_typescript_extends_list_wrap = off
+ij_typescript_field_prefix = _
+ij_typescript_file_name_style = relaxed
+ij_typescript_finally_on_new_line = false
+ij_typescript_for_brace_force = never
+ij_typescript_for_statement_new_line_after_left_paren = false
+ij_typescript_for_statement_right_paren_on_new_line = false
+ij_typescript_for_statement_wrap = off
+ij_typescript_force_quote_style = false
+ij_typescript_force_semicolon_style = false
+ij_typescript_function_expression_brace_style = end_of_line
+ij_typescript_if_brace_force = never
+ij_typescript_import_merge_members = global
+ij_typescript_import_prefer_absolute_path = global
+ij_typescript_import_sort_members = true
+ij_typescript_import_sort_module_name = false
+ij_typescript_import_use_node_resolution = true
+ij_typescript_imports_wrap = on_every_item
+ij_typescript_indent_case_from_switch = true
+ij_typescript_indent_chained_calls = false
+ij_typescript_indent_package_children = 0
+ij_typescript_jsdoc_include_types = false
+ij_typescript_jsx_attribute_value = braces
+ij_typescript_keep_blank_lines_in_code = 2
+ij_typescript_keep_first_column_comment = true
+ij_typescript_keep_indents_on_empty_lines = false
+ij_typescript_keep_line_breaks = true
+ij_typescript_keep_simple_blocks_in_one_line = false
+ij_typescript_keep_simple_methods_in_one_line = false
+ij_typescript_line_comment_add_space = true
+ij_typescript_line_comment_at_first_column = false
+ij_typescript_method_brace_style = end_of_line
+ij_typescript_method_call_chain_wrap = off
+ij_typescript_method_parameters_new_line_after_left_paren = false
+ij_typescript_method_parameters_right_paren_on_new_line = false
+ij_typescript_method_parameters_wrap = off
+ij_typescript_object_literal_wrap = on_every_item
+ij_typescript_parentheses_expression_new_line_after_left_paren = false
+ij_typescript_parentheses_expression_right_paren_on_new_line = false
+ij_typescript_place_assignment_sign_on_next_line = false
+ij_typescript_prefer_as_type_cast = false
+ij_typescript_prefer_parameters_wrap = false
+ij_typescript_reformat_c_style_comments = false
+ij_typescript_space_after_colon = true
+ij_typescript_space_after_comma = true
+ij_typescript_space_after_dots_in_rest_parameter = false
+ij_typescript_space_after_generator_mult = true
+ij_typescript_space_after_property_colon = true
+ij_typescript_space_after_quest = true
+ij_typescript_space_after_type_colon = true
+ij_typescript_space_after_unary_not = false
+ij_typescript_space_before_async_arrow_lparen = true
+ij_typescript_space_before_catch_keyword = true
+ij_typescript_space_before_catch_left_brace = true
+ij_typescript_space_before_catch_parentheses = true
+ij_typescript_space_before_class_lbrace = true
+ij_typescript_space_before_class_left_brace = true
+ij_typescript_space_before_colon = true
+ij_typescript_space_before_comma = false
+ij_typescript_space_before_do_left_brace = true
+ij_typescript_space_before_else_keyword = true
+ij_typescript_space_before_else_left_brace = true
+ij_typescript_space_before_finally_keyword = true
+ij_typescript_space_before_finally_left_brace = true
+ij_typescript_space_before_for_left_brace = true
+ij_typescript_space_before_for_parentheses = true
+ij_typescript_space_before_for_semicolon = false
+ij_typescript_space_before_function_left_parenth = true
+ij_typescript_space_before_generator_mult = false
+ij_typescript_space_before_if_left_brace = true
+ij_typescript_space_before_if_parentheses = true
+ij_typescript_space_before_method_call_parentheses = false
+ij_typescript_space_before_method_left_brace = true
+ij_typescript_space_before_method_parentheses = false
+ij_typescript_space_before_property_colon = false
+ij_typescript_space_before_quest = true
+ij_typescript_space_before_switch_left_brace = true
+ij_typescript_space_before_switch_parentheses = true
+ij_typescript_space_before_try_left_brace = true
+ij_typescript_space_before_type_colon = false
+ij_typescript_space_before_unary_not = false
+ij_typescript_space_before_while_keyword = true
+ij_typescript_space_before_while_left_brace = true
+ij_typescript_space_before_while_parentheses = true
+ij_typescript_spaces_around_additive_operators = true
+ij_typescript_spaces_around_arrow_function_operator = true
+ij_typescript_spaces_around_assignment_operators = true
+ij_typescript_spaces_around_bitwise_operators = true
+ij_typescript_spaces_around_equality_operators = true
+ij_typescript_spaces_around_logical_operators = true
+ij_typescript_spaces_around_multiplicative_operators = true
+ij_typescript_spaces_around_relational_operators = true
+ij_typescript_spaces_around_shift_operators = true
+ij_typescript_spaces_around_unary_operator = false
+ij_typescript_spaces_within_array_initializer_brackets = false
+ij_typescript_spaces_within_brackets = false
+ij_typescript_spaces_within_catch_parentheses = false
+ij_typescript_spaces_within_for_parentheses = false
+ij_typescript_spaces_within_if_parentheses = false
+ij_typescript_spaces_within_imports = false
+ij_typescript_spaces_within_interpolation_expressions = false
+ij_typescript_spaces_within_method_call_parentheses = false
+ij_typescript_spaces_within_method_parentheses = false
+ij_typescript_spaces_within_object_literal_braces = false
+ij_typescript_spaces_within_object_type_braces = true
+ij_typescript_spaces_within_parentheses = false
+ij_typescript_spaces_within_switch_parentheses = false
+ij_typescript_spaces_within_type_assertion = false
+ij_typescript_spaces_within_union_types = true
+ij_typescript_spaces_within_while_parentheses = false
+ij_typescript_special_else_if_treatment = true
+ij_typescript_ternary_operation_signs_on_next_line = false
+ij_typescript_ternary_operation_wrap = off
+ij_typescript_union_types_wrap = on_every_item
+ij_typescript_use_chained_calls_group_indents = false
+ij_typescript_use_double_quotes = true
+ij_typescript_use_explicit_js_extension = global
+ij_typescript_use_path_mapping = always
+ij_typescript_use_public_modifier = false
+ij_typescript_use_semicolon_after_statement = true
+ij_typescript_var_declaration_wrap = normal
+ij_typescript_while_brace_force = never
+ij_typescript_while_on_new_line = false
+ij_typescript_wrap_comments = false
+
+[{*.cfml,*.cfm,*.cfc}]
+indent_size = 4
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_cfml_align_multiline_binary_operation = false
+ij_cfml_align_multiline_for = true
+ij_cfml_align_multiline_parameters = true
+ij_cfml_align_multiline_parameters_in_calls = false
+ij_cfml_align_multiline_ternary_operation = false
+ij_cfml_assignment_wrap = off
+ij_cfml_binary_operation_sign_on_next_line = false
+ij_cfml_binary_operation_wrap = off
+ij_cfml_block_brace_style = end_of_line
+ij_cfml_call_parameters_new_line_after_left_paren = false
+ij_cfml_call_parameters_right_paren_on_new_line = false
+ij_cfml_call_parameters_wrap = off
+ij_cfml_catch_on_new_line = false
+ij_cfml_else_on_new_line = false
+ij_cfml_for_statement_new_line_after_left_paren = false
+ij_cfml_for_statement_right_paren_on_new_line = false
+ij_cfml_for_statement_wrap = off
+ij_cfml_keep_blank_lines_in_code = 2
+ij_cfml_keep_first_column_comment = true
+ij_cfml_keep_indents_on_empty_lines = false
+ij_cfml_keep_line_breaks = true
+ij_cfml_method_brace_style = next_line
+ij_cfml_method_parameters_new_line_after_left_paren = false
+ij_cfml_method_parameters_right_paren_on_new_line = false
+ij_cfml_method_parameters_wrap = off
+ij_cfml_parentheses_expression_new_line_after_left_paren = false
+ij_cfml_parentheses_expression_right_paren_on_new_line = false
+ij_cfml_place_assignment_sign_on_next_line = false
+ij_cfml_space_after_colon = true
+ij_cfml_space_after_comma = true
+ij_cfml_space_after_for_semicolon = true
+ij_cfml_space_after_quest = true
+ij_cfml_space_before_catch_keyword = true
+ij_cfml_space_before_catch_left_brace = true
+ij_cfml_space_before_catch_parentheses = true
+ij_cfml_space_before_colon = true
+ij_cfml_space_before_comma = false
+ij_cfml_space_before_else_keyword = true
+ij_cfml_space_before_else_left_brace = true
+ij_cfml_space_before_for_left_brace = true
+ij_cfml_space_before_for_parentheses = true
+ij_cfml_space_before_for_semicolon = false
+ij_cfml_space_before_if_left_brace = true
+ij_cfml_space_before_if_parentheses = true
+ij_cfml_space_before_method_call_parentheses = false
+ij_cfml_space_before_method_left_brace = true
+ij_cfml_space_before_method_parentheses = false
+ij_cfml_space_before_quest = true
+ij_cfml_space_before_switch_left_brace = true
+ij_cfml_space_before_switch_parentheses = true
+ij_cfml_space_before_try_left_brace = true
+ij_cfml_space_before_while_keyword = true
+ij_cfml_space_before_while_left_brace = true
+ij_cfml_space_before_while_parentheses = true
+ij_cfml_spaces_around_additive_operators = true
+ij_cfml_spaces_around_assignment_operators = true
+ij_cfml_spaces_around_equality_operators = true
+ij_cfml_spaces_around_logical_operators = true
+ij_cfml_spaces_around_multiplicative_operators = true
+ij_cfml_spaces_around_relational_operators = true
+ij_cfml_spaces_around_unary_operator = false
+ij_cfml_spaces_within_catch_parentheses = false
+ij_cfml_spaces_within_for_parentheses = false
+ij_cfml_spaces_within_if_parentheses = false
+ij_cfml_spaces_within_method_call_parentheses = false
+ij_cfml_spaces_within_method_parentheses = false
+ij_cfml_spaces_within_switch_parentheses = false
+ij_cfml_spaces_within_while_parentheses = false
+ij_cfml_special_else_if_treatment = false
+ij_cfml_ternary_operation_signs_on_next_line = false
+ij_cfml_ternary_operation_wrap = off
+ij_cfml_while_on_new_line = false
+
+[{*.cjs,*.js}]
+max_line_length = 80
+ij_javascript_align_imports = false
+ij_javascript_align_multiline_array_initializer_expression = false
+ij_javascript_align_multiline_binary_operation = false
+ij_javascript_align_multiline_chained_methods = false
+ij_javascript_align_multiline_extends_list = false
+ij_javascript_align_multiline_for = false
+ij_javascript_align_multiline_parameters = false
+ij_javascript_align_multiline_parameters_in_calls = false
+ij_javascript_align_multiline_ternary_operation = false
+ij_javascript_align_object_properties = 0
+ij_javascript_align_union_types = false
+ij_javascript_align_var_statements = 0
+ij_javascript_array_initializer_new_line_after_left_brace = false
+ij_javascript_array_initializer_right_brace_on_new_line = false
+ij_javascript_array_initializer_wrap = normal
+ij_javascript_assignment_wrap = off
+ij_javascript_binary_operation_sign_on_next_line = true
+ij_javascript_binary_operation_wrap = normal
+ij_javascript_blacklist_imports = rxjs/Rx,node_modules/**/*,@angular/material,@angular/material/typings/**
+ij_javascript_blank_lines_after_imports = 1
+ij_javascript_blank_lines_around_class = 1
+ij_javascript_blank_lines_around_field = 0
+ij_javascript_blank_lines_around_function = 1
+ij_javascript_blank_lines_around_method = 1
+ij_javascript_block_brace_style = end_of_line
+ij_javascript_call_parameters_new_line_after_left_paren = false
+ij_javascript_call_parameters_right_paren_on_new_line = false
+ij_javascript_call_parameters_wrap = normal
+ij_javascript_catch_on_new_line = false
+ij_javascript_chained_call_dot_on_new_line = true
+ij_javascript_class_brace_style = end_of_line
+ij_javascript_comma_on_new_line = false
+ij_javascript_do_while_brace_force = always
+ij_javascript_else_on_new_line = false
+ij_javascript_enforce_trailing_comma = keep
+ij_javascript_extends_keyword_wrap = off
+ij_javascript_extends_list_wrap = off
+ij_javascript_field_prefix = _
+ij_javascript_file_name_style = relaxed
+ij_javascript_finally_on_new_line = false
+ij_javascript_for_brace_force = always
+ij_javascript_for_statement_new_line_after_left_paren = false
+ij_javascript_for_statement_right_paren_on_new_line = false
+ij_javascript_for_statement_wrap = normal
+ij_javascript_force_quote_style = false
+ij_javascript_force_semicolon_style = false
+ij_javascript_function_expression_brace_style = end_of_line
+ij_javascript_if_brace_force = always
+ij_javascript_import_merge_members = global
+ij_javascript_import_prefer_absolute_path = global
+ij_javascript_import_sort_members = true
+ij_javascript_import_sort_module_name = false
+ij_javascript_import_use_node_resolution = true
+ij_javascript_imports_wrap = on_every_item
+ij_javascript_indent_case_from_switch = true
+ij_javascript_indent_chained_calls = false
+ij_javascript_indent_package_children = 0
+ij_javascript_jsx_attribute_value = braces
+ij_javascript_keep_blank_lines_in_code = 1
+ij_javascript_keep_first_column_comment = true
+ij_javascript_keep_indents_on_empty_lines = false
+ij_javascript_keep_line_breaks = true
+ij_javascript_keep_simple_blocks_in_one_line = false
+ij_javascript_keep_simple_methods_in_one_line = false
+ij_javascript_line_comment_add_space = true
+ij_javascript_line_comment_at_first_column = false
+ij_javascript_method_brace_style = end_of_line
+ij_javascript_method_call_chain_wrap = off
+ij_javascript_method_parameters_new_line_after_left_paren = false
+ij_javascript_method_parameters_right_paren_on_new_line = false
+ij_javascript_method_parameters_wrap = normal
+ij_javascript_object_literal_wrap = on_every_item
+ij_javascript_parentheses_expression_new_line_after_left_paren = false
+ij_javascript_parentheses_expression_right_paren_on_new_line = false
+ij_javascript_place_assignment_sign_on_next_line = false
+ij_javascript_prefer_as_type_cast = false
+ij_javascript_prefer_parameters_wrap = false
+ij_javascript_reformat_c_style_comments = false
+ij_javascript_space_after_colon = true
+ij_javascript_space_after_comma = true
+ij_javascript_space_after_dots_in_rest_parameter = false
+ij_javascript_space_after_generator_mult = true
+ij_javascript_space_after_property_colon = true
+ij_javascript_space_after_quest = true
+ij_javascript_space_after_type_colon = true
+ij_javascript_space_after_unary_not = false
+ij_javascript_space_before_async_arrow_lparen = true
+ij_javascript_space_before_catch_keyword = true
+ij_javascript_space_before_catch_left_brace = true
+ij_javascript_space_before_catch_parentheses = true
+ij_javascript_space_before_class_lbrace = true
+ij_javascript_space_before_class_left_brace = true
+ij_javascript_space_before_colon = true
+ij_javascript_space_before_comma = false
+ij_javascript_space_before_do_left_brace = true
+ij_javascript_space_before_else_keyword = true
+ij_javascript_space_before_else_left_brace = true
+ij_javascript_space_before_finally_keyword = true
+ij_javascript_space_before_finally_left_brace = true
+ij_javascript_space_before_for_left_brace = true
+ij_javascript_space_before_for_parentheses = true
+ij_javascript_space_before_for_semicolon = false
+ij_javascript_space_before_function_left_parenth = true
+ij_javascript_space_before_generator_mult = false
+ij_javascript_space_before_if_left_brace = true
+ij_javascript_space_before_if_parentheses = true
+ij_javascript_space_before_method_call_parentheses = false
+ij_javascript_space_before_method_left_brace = true
+ij_javascript_space_before_method_parentheses = false
+ij_javascript_space_before_property_colon = false
+ij_javascript_space_before_quest = true
+ij_javascript_space_before_switch_left_brace = true
+ij_javascript_space_before_switch_parentheses = true
+ij_javascript_space_before_try_left_brace = true
+ij_javascript_space_before_type_colon = false
+ij_javascript_space_before_unary_not = false
+ij_javascript_space_before_while_keyword = true
+ij_javascript_space_before_while_left_brace = true
+ij_javascript_space_before_while_parentheses = true
+ij_javascript_spaces_around_additive_operators = true
+ij_javascript_spaces_around_arrow_function_operator = true
+ij_javascript_spaces_around_assignment_operators = true
+ij_javascript_spaces_around_bitwise_operators = true
+ij_javascript_spaces_around_equality_operators = true
+ij_javascript_spaces_around_logical_operators = true
+ij_javascript_spaces_around_multiplicative_operators = true
+ij_javascript_spaces_around_relational_operators = true
+ij_javascript_spaces_around_shift_operators = true
+ij_javascript_spaces_around_unary_operator = false
+ij_javascript_spaces_within_array_initializer_brackets = false
+ij_javascript_spaces_within_brackets = false
+ij_javascript_spaces_within_catch_parentheses = false
+ij_javascript_spaces_within_for_parentheses = false
+ij_javascript_spaces_within_if_parentheses = false
+ij_javascript_spaces_within_imports = false
+ij_javascript_spaces_within_interpolation_expressions = false
+ij_javascript_spaces_within_method_call_parentheses = false
+ij_javascript_spaces_within_method_parentheses = false
+ij_javascript_spaces_within_object_literal_braces = false
+ij_javascript_spaces_within_object_type_braces = true
+ij_javascript_spaces_within_parentheses = false
+ij_javascript_spaces_within_switch_parentheses = false
+ij_javascript_spaces_within_type_assertion = false
+ij_javascript_spaces_within_union_types = true
+ij_javascript_spaces_within_while_parentheses = false
+ij_javascript_special_else_if_treatment = true
+ij_javascript_ternary_operation_signs_on_next_line = true
+ij_javascript_ternary_operation_wrap = normal
+ij_javascript_union_types_wrap = on_every_item
+ij_javascript_use_chained_calls_group_indents = false
+ij_javascript_use_double_quotes = true
+ij_javascript_use_explicit_js_extension = global
+ij_javascript_use_path_mapping = always
+ij_javascript_use_public_modifier = false
+ij_javascript_use_semicolon_after_statement = true
+ij_javascript_var_declaration_wrap = normal
+ij_javascript_while_brace_force = always
+ij_javascript_while_on_new_line = false
+ij_javascript_wrap_comments = false
+
+[{*.cjsx,*.coffee}]
+ij_continuation_indent_size = 2
+ij_coffeescript_align_function_body = false
+ij_coffeescript_align_imports = false
+ij_coffeescript_align_multiline_array_initializer_expression = true
+ij_coffeescript_align_multiline_parameters = true
+ij_coffeescript_align_multiline_parameters_in_calls = false
+ij_coffeescript_align_object_properties = 0
+ij_coffeescript_align_union_types = false
+ij_coffeescript_align_var_statements = 0
+ij_coffeescript_array_initializer_new_line_after_left_brace = false
+ij_coffeescript_array_initializer_right_brace_on_new_line = false
+ij_coffeescript_array_initializer_wrap = normal
+ij_coffeescript_blacklist_imports = rxjs/Rx,node_modules/**/*,@angular/material,@angular/material/typings/**
+ij_coffeescript_blank_lines_around_function = 1
+ij_coffeescript_call_parameters_new_line_after_left_paren = false
+ij_coffeescript_call_parameters_right_paren_on_new_line = false
+ij_coffeescript_call_parameters_wrap = normal
+ij_coffeescript_chained_call_dot_on_new_line = true
+ij_coffeescript_comma_on_new_line = false
+ij_coffeescript_enforce_trailing_comma = keep
+ij_coffeescript_field_prefix = _
+ij_coffeescript_file_name_style = relaxed
+ij_coffeescript_force_quote_style = false
+ij_coffeescript_force_semicolon_style = false
+ij_coffeescript_function_expression_brace_style = end_of_line
+ij_coffeescript_import_merge_members = global
+ij_coffeescript_import_prefer_absolute_path = global
+ij_coffeescript_import_sort_members = true
+ij_coffeescript_import_sort_module_name = false
+ij_coffeescript_import_use_node_resolution = true
+ij_coffeescript_imports_wrap = on_every_item
+ij_coffeescript_indent_chained_calls = true
+ij_coffeescript_indent_package_children = 0
+ij_coffeescript_jsx_attribute_value = braces
+ij_coffeescript_keep_blank_lines_in_code = 2
+ij_coffeescript_keep_first_column_comment = true
+ij_coffeescript_keep_indents_on_empty_lines = false
+ij_coffeescript_keep_line_breaks = true
+ij_coffeescript_keep_simple_methods_in_one_line = false
+ij_coffeescript_method_parameters_new_line_after_left_paren = false
+ij_coffeescript_method_parameters_right_paren_on_new_line = false
+ij_coffeescript_method_parameters_wrap = off
+ij_coffeescript_object_literal_wrap = on_every_item
+ij_coffeescript_prefer_as_type_cast = false
+ij_coffeescript_reformat_c_style_comments = false
+ij_coffeescript_space_after_comma = true
+ij_coffeescript_space_after_dots_in_rest_parameter = false
+ij_coffeescript_space_after_generator_mult = true
+ij_coffeescript_space_after_property_colon = true
+ij_coffeescript_space_after_type_colon = true
+ij_coffeescript_space_after_unary_not = false
+ij_coffeescript_space_before_async_arrow_lparen = true
+ij_coffeescript_space_before_class_lbrace = true
+ij_coffeescript_space_before_comma = false
+ij_coffeescript_space_before_function_left_parenth = true
+ij_coffeescript_space_before_generator_mult = false
+ij_coffeescript_space_before_property_colon = false
+ij_coffeescript_space_before_type_colon = false
+ij_coffeescript_space_before_unary_not = false
+ij_coffeescript_spaces_around_additive_operators = true
+ij_coffeescript_spaces_around_arrow_function_operator = true
+ij_coffeescript_spaces_around_assignment_operators = true
+ij_coffeescript_spaces_around_bitwise_operators = true
+ij_coffeescript_spaces_around_equality_operators = true
+ij_coffeescript_spaces_around_logical_operators = true
+ij_coffeescript_spaces_around_multiplicative_operators = true
+ij_coffeescript_spaces_around_relational_operators = true
+ij_coffeescript_spaces_around_shift_operators = true
+ij_coffeescript_spaces_around_unary_operator = false
+ij_coffeescript_spaces_within_array_initializer_braces = false
+ij_coffeescript_spaces_within_array_initializer_brackets = false
+ij_coffeescript_spaces_within_imports = false
+ij_coffeescript_spaces_within_index_brackets = false
+ij_coffeescript_spaces_within_interpolation_expressions = false
+ij_coffeescript_spaces_within_method_call_parentheses = false
+ij_coffeescript_spaces_within_method_parentheses = false
+ij_coffeescript_spaces_within_object_braces = false
+ij_coffeescript_spaces_within_object_literal_braces = false
+ij_coffeescript_spaces_within_object_type_braces = true
+ij_coffeescript_spaces_within_range_brackets = false
+ij_coffeescript_spaces_within_type_assertion = false
+ij_coffeescript_spaces_within_union_types = true
+ij_coffeescript_union_types_wrap = on_every_item
+ij_coffeescript_use_chained_calls_group_indents = false
+ij_coffeescript_use_double_quotes = true
+ij_coffeescript_use_explicit_js_extension = global
+ij_coffeescript_use_path_mapping = always
+ij_coffeescript_use_public_modifier = false
+ij_coffeescript_use_semicolon_after_statement = false
+ij_coffeescript_var_declaration_wrap = normal
+
+[{*.gradle,*.groovy,*.gant,*.gdsl,*.gy,*.gson}]
+indent_size = 4
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_groovy_align_group_field_declarations = false
+ij_groovy_align_multiline_array_initializer_expression = false
+ij_groovy_align_multiline_assignment = false
+ij_groovy_align_multiline_binary_operation = false
+ij_groovy_align_multiline_chained_methods = false
+ij_groovy_align_multiline_extends_list = false
+ij_groovy_align_multiline_for = true
+ij_groovy_align_multiline_method_parentheses = false
+ij_groovy_align_multiline_parameters = true
+ij_groovy_align_multiline_parameters_in_calls = false
+ij_groovy_align_multiline_resources = true
+ij_groovy_align_multiline_ternary_operation = false
+ij_groovy_align_multiline_throws_list = false
+ij_groovy_align_throws_keyword = false
+ij_groovy_array_initializer_new_line_after_left_brace = false
+ij_groovy_array_initializer_right_brace_on_new_line = false
+ij_groovy_array_initializer_wrap = off
+ij_groovy_assert_statement_wrap = off
+ij_groovy_assignment_wrap = off
+ij_groovy_binary_operation_wrap = off
+ij_groovy_blank_lines_after_class_header = 0
+ij_groovy_blank_lines_after_imports = 1
+ij_groovy_blank_lines_after_package = 1
+ij_groovy_blank_lines_around_class = 1
+ij_groovy_blank_lines_around_field = 0
+ij_groovy_blank_lines_around_field_in_interface = 0
+ij_groovy_blank_lines_around_method = 1
+ij_groovy_blank_lines_around_method_in_interface = 1
+ij_groovy_blank_lines_before_imports = 1
+ij_groovy_blank_lines_before_method_body = 0
+ij_groovy_blank_lines_before_package = 0
+ij_groovy_block_brace_style = end_of_line
+ij_groovy_block_comment_at_first_column = true
+ij_groovy_call_parameters_new_line_after_left_paren = false
+ij_groovy_call_parameters_right_paren_on_new_line = false
+ij_groovy_call_parameters_wrap = off
+ij_groovy_catch_on_new_line = false
+ij_groovy_class_annotation_wrap = split_into_lines
+ij_groovy_class_brace_style = end_of_line
+ij_groovy_do_while_brace_force = never
+ij_groovy_else_on_new_line = false
+ij_groovy_enum_constants_wrap = off
+ij_groovy_extends_keyword_wrap = off
+ij_groovy_extends_list_wrap = off
+ij_groovy_field_annotation_wrap = split_into_lines
+ij_groovy_finally_on_new_line = false
+ij_groovy_for_brace_force = never
+ij_groovy_for_statement_new_line_after_left_paren = false
+ij_groovy_for_statement_right_paren_on_new_line = false
+ij_groovy_for_statement_wrap = off
+ij_groovy_if_brace_force = never
+ij_groovy_indent_case_from_switch = true
+ij_groovy_keep_blank_lines_before_right_brace = 2
+ij_groovy_keep_blank_lines_in_code = 2
+ij_groovy_keep_blank_lines_in_declarations = 2
+ij_groovy_keep_control_statement_in_one_line = true
+ij_groovy_keep_first_column_comment = true
+ij_groovy_keep_indents_on_empty_lines = false
+ij_groovy_keep_line_breaks = true
+ij_groovy_keep_multiple_expressions_in_one_line = false
+ij_groovy_keep_simple_blocks_in_one_line = false
+ij_groovy_keep_simple_classes_in_one_line = true
+ij_groovy_keep_simple_lambdas_in_one_line = true
+ij_groovy_keep_simple_methods_in_one_line = true
+ij_groovy_label_indent_absolute = false
+ij_groovy_label_indent_size = 0
+ij_groovy_lambda_brace_style = end_of_line
+ij_groovy_line_comment_add_space = false
+ij_groovy_line_comment_at_first_column = true
+ij_groovy_method_annotation_wrap = split_into_lines
+ij_groovy_method_brace_style = end_of_line
+ij_groovy_method_call_chain_wrap = off
+ij_groovy_method_parameters_new_line_after_left_paren = false
+ij_groovy_method_parameters_right_paren_on_new_line = false
+ij_groovy_method_parameters_wrap = off
+ij_groovy_modifier_list_wrap = false
+ij_groovy_parameter_annotation_wrap = off
+ij_groovy_parentheses_expression_new_line_after_left_paren = false
+ij_groovy_parentheses_expression_right_paren_on_new_line = false
+ij_groovy_prefer_parameters_wrap = false
+ij_groovy_resource_list_new_line_after_left_paren = false
+ij_groovy_resource_list_right_paren_on_new_line = false
+ij_groovy_resource_list_wrap = off
+ij_groovy_space_after_colon = true
+ij_groovy_space_after_comma = true
+ij_groovy_space_after_comma_in_type_arguments = true
+ij_groovy_space_after_for_semicolon = true
+ij_groovy_space_after_quest = true
+ij_groovy_space_after_type_cast = true
+ij_groovy_space_before_annotation_parameter_list = false
+ij_groovy_space_before_array_initializer_left_brace = false
+ij_groovy_space_before_catch_keyword = true
+ij_groovy_space_before_catch_left_brace = true
+ij_groovy_space_before_catch_parentheses = true
+ij_groovy_space_before_class_left_brace = true
+ij_groovy_space_before_colon = true
+ij_groovy_space_before_comma = false
+ij_groovy_space_before_do_left_brace = true
+ij_groovy_space_before_else_keyword = true
+ij_groovy_space_before_else_left_brace = true
+ij_groovy_space_before_finally_keyword = true
+ij_groovy_space_before_finally_left_brace = true
+ij_groovy_space_before_for_left_brace = true
+ij_groovy_space_before_for_parentheses = true
+ij_groovy_space_before_for_semicolon = false
+ij_groovy_space_before_if_left_brace = true
+ij_groovy_space_before_if_parentheses = true
+ij_groovy_space_before_method_call_parentheses = false
+ij_groovy_space_before_method_left_brace = true
+ij_groovy_space_before_method_parentheses = false
+ij_groovy_space_before_quest = true
+ij_groovy_space_before_switch_left_brace = true
+ij_groovy_space_before_switch_parentheses = true
+ij_groovy_space_before_synchronized_left_brace = true
+ij_groovy_space_before_synchronized_parentheses = true
+ij_groovy_space_before_try_left_brace = true
+ij_groovy_space_before_try_parentheses = true
+ij_groovy_space_before_while_keyword = true
+ij_groovy_space_before_while_left_brace = true
+ij_groovy_space_before_while_parentheses = true
+ij_groovy_space_within_empty_array_initializer_braces = false
+ij_groovy_space_within_empty_method_call_parentheses = false
+ij_groovy_spaces_around_additive_operators = true
+ij_groovy_spaces_around_assignment_operators = true
+ij_groovy_spaces_around_bitwise_operators = true
+ij_groovy_spaces_around_equality_operators = true
+ij_groovy_spaces_around_lambda_arrow = true
+ij_groovy_spaces_around_logical_operators = true
+ij_groovy_spaces_around_multiplicative_operators = true
+ij_groovy_spaces_around_relational_operators = true
+ij_groovy_spaces_around_shift_operators = true
+ij_groovy_spaces_within_annotation_parentheses = false
+ij_groovy_spaces_within_array_initializer_braces = false
+ij_groovy_spaces_within_braces = true
+ij_groovy_spaces_within_brackets = false
+ij_groovy_spaces_within_cast_parentheses = false
+ij_groovy_spaces_within_catch_parentheses = false
+ij_groovy_spaces_within_for_parentheses = false
+ij_groovy_spaces_within_if_parentheses = false
+ij_groovy_spaces_within_method_call_parentheses = false
+ij_groovy_spaces_within_method_parentheses = false
+ij_groovy_spaces_within_parentheses = false
+ij_groovy_spaces_within_switch_parentheses = false
+ij_groovy_spaces_within_synchronized_parentheses = false
+ij_groovy_spaces_within_try_parentheses = false
+ij_groovy_spaces_within_while_parentheses = false
+ij_groovy_special_else_if_treatment = true
+ij_groovy_ternary_operation_wrap = off
+ij_groovy_throws_keyword_wrap = off
+ij_groovy_throws_list_wrap = off
+ij_groovy_use_relative_indents = false
+ij_groovy_variable_annotation_wrap = off
+ij_groovy_while_brace_force = never
+ij_groovy_while_on_new_line = false
+ij_groovy_wrap_long_lines = false
+
+[{*.kts,*.kt}]
+indent_size = 4
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_kotlin_align_in_columns_case_branch = false
+ij_kotlin_align_multiline_binary_operation = false
+ij_kotlin_align_multiline_extends_list = false
+ij_kotlin_align_multiline_method_parentheses = false
+ij_kotlin_align_multiline_parameters = true
+ij_kotlin_align_multiline_parameters_in_calls = false
+ij_kotlin_assignment_wrap = off
+ij_kotlin_blank_lines_after_class_header = 0
+ij_kotlin_blank_lines_around_block_when_branches = 0
+ij_kotlin_block_comment_at_first_column = true
+ij_kotlin_call_parameters_new_line_after_left_paren = false
+ij_kotlin_call_parameters_right_paren_on_new_line = false
+ij_kotlin_call_parameters_wrap = off
+ij_kotlin_catch_on_new_line = false
+ij_kotlin_class_annotation_wrap = split_into_lines
+ij_kotlin_continuation_indent_for_chained_calls = true
+ij_kotlin_continuation_indent_for_expression_bodies = true
+ij_kotlin_continuation_indent_in_argument_lists = true
+ij_kotlin_continuation_indent_in_elvis = true
+ij_kotlin_continuation_indent_in_if_conditions = true
+ij_kotlin_continuation_indent_in_parameter_lists = true
+ij_kotlin_continuation_indent_in_supertype_lists = true
+ij_kotlin_else_on_new_line = false
+ij_kotlin_enum_constants_wrap = off
+ij_kotlin_extends_list_wrap = off
+ij_kotlin_field_annotation_wrap = split_into_lines
+ij_kotlin_finally_on_new_line = false
+ij_kotlin_if_rparen_on_new_line = false
+ij_kotlin_import_nested_classes = false
+ij_kotlin_insert_whitespaces_in_simple_one_line_method = true
+ij_kotlin_keep_blank_lines_before_right_brace = 2
+ij_kotlin_keep_blank_lines_in_code = 2
+ij_kotlin_keep_blank_lines_in_declarations = 2
+ij_kotlin_keep_first_column_comment = true
+ij_kotlin_keep_indents_on_empty_lines = false
+ij_kotlin_keep_line_breaks = true
+ij_kotlin_lbrace_on_next_line = false
+ij_kotlin_line_comment_add_space = false
+ij_kotlin_line_comment_at_first_column = true
+ij_kotlin_method_annotation_wrap = split_into_lines
+ij_kotlin_method_call_chain_wrap = off
+ij_kotlin_method_parameters_new_line_after_left_paren = false
+ij_kotlin_method_parameters_right_paren_on_new_line = false
+ij_kotlin_method_parameters_wrap = off
+ij_kotlin_name_count_to_use_star_import = 5
+ij_kotlin_name_count_to_use_star_import_for_members = 3
+ij_kotlin_parameter_annotation_wrap = off
+ij_kotlin_space_after_comma = true
+ij_kotlin_space_after_extend_colon = true
+ij_kotlin_space_after_type_colon = true
+ij_kotlin_space_before_catch_parentheses = true
+ij_kotlin_space_before_comma = false
+ij_kotlin_space_before_extend_colon = true
+ij_kotlin_space_before_for_parentheses = true
+ij_kotlin_space_before_if_parentheses = true
+ij_kotlin_space_before_lambda_arrow = true
+ij_kotlin_space_before_type_colon = false
+ij_kotlin_space_before_when_parentheses = true
+ij_kotlin_space_before_while_parentheses = true
+ij_kotlin_spaces_around_additive_operators = true
+ij_kotlin_spaces_around_assignment_operators = true
+ij_kotlin_spaces_around_equality_operators = true
+ij_kotlin_spaces_around_function_type_arrow = true
+ij_kotlin_spaces_around_logical_operators = true
+ij_kotlin_spaces_around_multiplicative_operators = true
+ij_kotlin_spaces_around_range = false
+ij_kotlin_spaces_around_relational_operators = true
+ij_kotlin_spaces_around_unary_operator = false
+ij_kotlin_spaces_around_when_arrow = true
+ij_kotlin_variable_annotation_wrap = off
+ij_kotlin_while_on_new_line = false
+ij_kotlin_wrap_elvis_expressions = 1
+ij_kotlin_wrap_expression_body_functions = 0
+ij_kotlin_wrap_first_method_in_call_chain = false
+
+[{*.jspx,*.tagx}]
+indent_size = 4
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_jspx_keep_indents_on_empty_lines = false
+
+[{*.module,*.hphp,*.phtml,*.php5,*.php4,*.php,*.ctp,*.inc}]
+indent_size = 4
+tab_width = 4
+ij_php_align_assignments = false
+ij_php_align_class_constants = false
+ij_php_align_group_field_declarations = false
+ij_php_align_inline_comments = false
+ij_php_align_key_value_pairs = false
+ij_php_align_multiline_array_initializer_expression = false
+ij_php_align_multiline_binary_operation = false
+ij_php_align_multiline_chained_methods = false
+ij_php_align_multiline_extends_list = false
+ij_php_align_multiline_for = true
+ij_php_align_multiline_parameters = true
+ij_php_align_multiline_parameters_in_calls = false
+ij_php_align_multiline_ternary_operation = false
+ij_php_align_phpdoc_comments = false
+ij_php_align_phpdoc_param_names = false
+ij_php_anonymous_brace_style = end_of_line
+ij_php_api_weight = 28
+ij_php_array_initializer_new_line_after_left_brace = false
+ij_php_array_initializer_right_brace_on_new_line = false
+ij_php_array_initializer_wrap = off
+ij_php_assignment_wrap = off
+ij_php_author_weight = 28
+ij_php_binary_operation_sign_on_next_line = false
+ij_php_binary_operation_wrap = off
+ij_php_blank_lines_after_class_header = 0
+ij_php_blank_lines_after_function = 1
+ij_php_blank_lines_after_imports = 1
+ij_php_blank_lines_after_opening_tag = 0
+ij_php_blank_lines_after_package = 0
+ij_php_blank_lines_around_class = 1
+ij_php_blank_lines_around_constants = 0
+ij_php_blank_lines_around_field = 0
+ij_php_blank_lines_around_method = 1
+ij_php_blank_lines_before_class_end = 0
+ij_php_blank_lines_before_imports = 1
+ij_php_blank_lines_before_method_body = 0
+ij_php_blank_lines_before_package = 1
+ij_php_blank_lines_before_return_statement = 0
+ij_php_blank_lines_between_imports = 0
+ij_php_block_brace_style = end_of_line
+ij_php_call_parameters_new_line_after_left_paren = false
+ij_php_call_parameters_right_paren_on_new_line = false
+ij_php_call_parameters_wrap = off
+ij_php_catch_on_new_line = false
+ij_php_category_weight = 28
+ij_php_class_brace_style = next_line
+ij_php_comma_after_last_array_element = false
+ij_php_concat_spaces = true
+ij_php_copyright_weight = 28
+ij_php_deprecated_weight = 28
+ij_php_do_while_brace_force = never
+ij_php_else_if_style = as_is
+ij_php_else_on_new_line = false
+ij_php_example_weight = 28
+ij_php_extends_keyword_wrap = off
+ij_php_extends_list_wrap = off
+ij_php_fields_default_visibility = private
+ij_php_filesource_weight = 28
+ij_php_finally_on_new_line = false
+ij_php_for_brace_force = never
+ij_php_for_statement_new_line_after_left_paren = false
+ij_php_for_statement_right_paren_on_new_line = false
+ij_php_for_statement_wrap = off
+ij_php_force_short_declaration_array_style = false
+ij_php_global_weight = 28
+ij_php_group_use_wrap = on_every_item
+ij_php_if_brace_force = never
+ij_php_if_lparen_on_next_line = false
+ij_php_if_rparen_on_next_line = false
+ij_php_ignore_weight = 28
+ij_php_import_sorting = alphabetic
+ij_php_indent_break_from_case = true
+ij_php_indent_case_from_switch = true
+ij_php_indent_code_in_php_tags = false
+ij_php_internal_weight = 28
+ij_php_keep_blank_lines_after_lbrace = 2
+ij_php_keep_blank_lines_before_right_brace = 2
+ij_php_keep_blank_lines_in_code = 2
+ij_php_keep_blank_lines_in_declarations = 2
+ij_php_keep_control_statement_in_one_line = true
+ij_php_keep_first_column_comment = true
+ij_php_keep_indents_on_empty_lines = false
+ij_php_keep_line_breaks = true
+ij_php_keep_rparen_and_lbrace_on_one_line = false
+ij_php_keep_simple_methods_in_one_line = false
+ij_php_lambda_brace_style = end_of_line
+ij_php_license_weight = 28
+ij_php_line_comment_add_space = false
+ij_php_line_comment_at_first_column = true
+ij_php_link_weight = 28
+ij_php_lower_case_boolean_const = false
+ij_php_lower_case_null_const = false
+ij_php_method_brace_style = next_line
+ij_php_method_call_chain_wrap = off
+ij_php_method_parameters_new_line_after_left_paren = false
+ij_php_method_parameters_right_paren_on_new_line = false
+ij_php_method_parameters_wrap = off
+ij_php_method_weight = 28
+ij_php_modifier_list_wrap = false
+ij_php_multiline_chained_calls_semicolon_on_new_line = false
+ij_php_namespace_brace_style = 1
+ij_php_null_type_position = in_the_end
+ij_php_package_weight = 28
+ij_php_param_weight = 0
+ij_php_parentheses_expression_new_line_after_left_paren = false
+ij_php_parentheses_expression_right_paren_on_new_line = false
+ij_php_phpdoc_blank_line_before_tags = false
+ij_php_phpdoc_blank_lines_around_parameters = false
+ij_php_phpdoc_keep_blank_lines = true
+ij_php_phpdoc_param_spaces_between_name_and_description = 1
+ij_php_phpdoc_param_spaces_between_tag_and_type = 1
+ij_php_phpdoc_param_spaces_between_type_and_name = 1
+ij_php_phpdoc_use_fqcn = false
+ij_php_phpdoc_wrap_long_lines = false
+ij_php_place_assignment_sign_on_next_line = false
+ij_php_place_parens_for_constructor = 0
+ij_php_property_read_weight = 28
+ij_php_property_weight = 28
+ij_php_property_write_weight = 28
+ij_php_return_type_on_new_line = false
+ij_php_return_weight = 1
+ij_php_see_weight = 28
+ij_php_since_weight = 28
+ij_php_sort_phpdoc_elements = true
+ij_php_space_after_colon = true
+ij_php_space_after_colon_in_return_type = true
+ij_php_space_after_comma = true
+ij_php_space_after_for_semicolon = true
+ij_php_space_after_quest = true
+ij_php_space_after_type_cast = false
+ij_php_space_after_unary_not = false
+ij_php_space_before_array_initializer_left_brace = false
+ij_php_space_before_catch_keyword = true
+ij_php_space_before_catch_left_brace = true
+ij_php_space_before_catch_parentheses = true
+ij_php_space_before_class_left_brace = true
+ij_php_space_before_closure_left_parenthesis = true
+ij_php_space_before_colon = true
+ij_php_space_before_colon_in_return_type = false
+ij_php_space_before_comma = false
+ij_php_space_before_do_left_brace = true
+ij_php_space_before_else_keyword = true
+ij_php_space_before_else_left_brace = true
+ij_php_space_before_finally_keyword = true
+ij_php_space_before_finally_left_brace = true
+ij_php_space_before_for_left_brace = true
+ij_php_space_before_for_parentheses = true
+ij_php_space_before_for_semicolon = false
+ij_php_space_before_if_left_brace = true
+ij_php_space_before_if_parentheses = true
+ij_php_space_before_method_call_parentheses = false
+ij_php_space_before_method_left_brace = true
+ij_php_space_before_method_parentheses = false
+ij_php_space_before_quest = true
+ij_php_space_before_switch_left_brace = true
+ij_php_space_before_switch_parentheses = true
+ij_php_space_before_try_left_brace = true
+ij_php_space_before_unary_not = false
+ij_php_space_before_while_keyword = true
+ij_php_space_before_while_left_brace = true
+ij_php_space_before_while_parentheses = true
+ij_php_space_between_ternary_quest_and_colon = false
+ij_php_spaces_around_additive_operators = true
+ij_php_spaces_around_arrow = false
+ij_php_spaces_around_assignment_in_declare = false
+ij_php_spaces_around_assignment_operators = true
+ij_php_spaces_around_bitwise_operators = true
+ij_php_spaces_around_equality_operators = true
+ij_php_spaces_around_logical_operators = true
+ij_php_spaces_around_multiplicative_operators = true
+ij_php_spaces_around_null_coalesce_operator = true
+ij_php_spaces_around_relational_operators = true
+ij_php_spaces_around_shift_operators = true
+ij_php_spaces_around_unary_operator = false
+ij_php_spaces_around_var_within_brackets = false
+ij_php_spaces_within_array_initializer_braces = false
+ij_php_spaces_within_brackets = false
+ij_php_spaces_within_catch_parentheses = false
+ij_php_spaces_within_for_parentheses = false
+ij_php_spaces_within_if_parentheses = false
+ij_php_spaces_within_method_call_parentheses = false
+ij_php_spaces_within_method_parentheses = false
+ij_php_spaces_within_parentheses = false
+ij_php_spaces_within_short_echo_tags = true
+ij_php_spaces_within_switch_parentheses = false
+ij_php_spaces_within_while_parentheses = false
+ij_php_special_else_if_treatment = false
+ij_php_subpackage_weight = 28
+ij_php_ternary_operation_signs_on_next_line = false
+ij_php_ternary_operation_wrap = off
+ij_php_throws_weight = 2
+ij_php_todo_weight = 28
+ij_php_unknown_tag_weight = 28
+ij_php_upper_case_boolean_const = false
+ij_php_upper_case_null_const = false
+ij_php_uses_weight = 28
+ij_php_var_weight = 28
+ij_php_variable_naming_style = mixed
+ij_php_version_weight = 28
+ij_php_while_brace_force = never
+ij_php_while_on_new_line = false
+
+[{*.nomad,*.hcl}]
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_hcl_align_property_on_equals = 2
+ij_hcl_align_property_on_value = 1
+ij_hcl_array_wrapping = 2
+ij_hcl_do_not_align_property = 0
+ij_hcl_keep_blank_lines_in_code = 2
+ij_hcl_keep_indents_on_empty_lines = false
+ij_hcl_keep_line_breaks = true
+ij_hcl_object_wrapping = 2
+ij_hcl_property_alignment = 0
+ij_hcl_property_line_commenter_character = 0
+ij_hcl_space_after_comma = true
+ij_hcl_space_before_comma = false
+ij_hcl_spaces_around_assignment_operators = true
+ij_hcl_spaces_within_braces = false
+ij_hcl_spaces_within_brackets = false
+ij_hcl_wrap_long_lines = false
+
+[{*.pyw,*.py}]
+max_line_length = 80
+ij_python_align_collections_and_comprehensions = true
+ij_python_align_multiline_imports = true
+ij_python_align_multiline_parameters = false
+ij_python_align_multiline_parameters_in_calls = true
+ij_python_blank_line_at_file_end = true
+ij_python_blank_lines_after_imports = 1
+ij_python_blank_lines_after_local_imports = 0
+ij_python_blank_lines_around_class = 1
+ij_python_blank_lines_around_method = 1
+ij_python_blank_lines_around_top_level_classes_functions = 2
+ij_python_blank_lines_before_first_method = 0
+ij_python_dict_alignment = 0
+ij_python_dict_new_line_after_left_brace = false
+ij_python_dict_new_line_before_right_brace = false
+ij_python_dict_wrapping = 1
+ij_python_from_import_new_line_after_left_parenthesis = false
+ij_python_from_import_new_line_before_right_parenthesis = false
+ij_python_from_import_parentheses_force_if_multiline = false
+ij_python_from_import_trailing_comma_if_multiline = false
+ij_python_from_import_wrapping = 1
+ij_python_hang_closing_brackets = false
+ij_python_keep_blank_lines_in_code = 1
+ij_python_keep_blank_lines_in_declarations = 1
+ij_python_keep_indents_on_empty_lines = false
+ij_python_keep_line_breaks = true
+ij_python_new_line_after_colon = false
+ij_python_new_line_after_colon_multi_clause = true
+ij_python_optimize_imports_always_split_from_imports = false
+ij_python_optimize_imports_case_insensitive_order = false
+ij_python_optimize_imports_join_from_imports_with_same_source = false
+ij_python_optimize_imports_sort_by_type_first = true
+ij_python_optimize_imports_sort_imports = true
+ij_python_optimize_imports_sort_names_in_from_imports = false
+ij_python_space_after_comma = true
+ij_python_space_after_number_sign = true
+ij_python_space_after_py_colon = true
+ij_python_space_before_backslash = true
+ij_python_space_before_comma = false
+ij_python_space_before_for_semicolon = false
+ij_python_space_before_lbracket = false
+ij_python_space_before_method_call_parentheses = false
+ij_python_space_before_method_parentheses = false
+ij_python_space_before_number_sign = true
+ij_python_space_before_py_colon = false
+ij_python_space_within_empty_method_call_parentheses = false
+ij_python_space_within_empty_method_parentheses = false
+ij_python_spaces_around_additive_operators = true
+ij_python_spaces_around_assignment_operators = true
+ij_python_spaces_around_bitwise_operators = true
+ij_python_spaces_around_eq_in_keyword_argument = false
+ij_python_spaces_around_eq_in_named_parameter = false
+ij_python_spaces_around_equality_operators = true
+ij_python_spaces_around_multiplicative_operators = true
+ij_python_spaces_around_power_operator = true
+ij_python_spaces_around_relational_operators = true
+ij_python_spaces_around_shift_operators = true
+ij_python_spaces_within_braces = false
+ij_python_spaces_within_brackets = false
+ij_python_spaces_within_method_call_parentheses = false
+ij_python_spaces_within_method_parentheses = false
+ij_python_use_continuation_indent_for_arguments = true
+ij_python_use_continuation_indent_for_collection_and_comprehensions = false
+ij_python_wrap_long_lines = false
+
+[{*.sht,*.htm,*.html,*.shtm,*.shtml,*.ng}]
+ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3
+ij_html_align_attributes = true
+ij_html_align_text = false
+ij_html_attribute_wrap = normal
+ij_html_block_comment_at_first_column = true
+ij_html_do_not_align_children_of_min_lines = 0
+ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p
+ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot
+ij_html_enforce_quotes = false
+ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var
+ij_html_keep_blank_lines = 2
+ij_html_keep_indents_on_empty_lines = false
+ij_html_keep_line_breaks = true
+ij_html_keep_line_breaks_in_text = true
+ij_html_keep_whitespaces = false
+ij_html_keep_whitespaces_inside = span,pre,textarea
+ij_html_line_comment_at_first_column = true
+ij_html_new_line_after_last_attribute = never
+ij_html_new_line_before_first_attribute = never
+ij_html_quote_style = double
+ij_html_remove_new_line_before_tags = br
+ij_html_space_after_tag_name = false
+ij_html_space_around_equality_in_attribute = false
+ij_html_space_inside_empty_tag = false
+ij_html_text_wrap = normal
+
+[{*.tf,*.tfvars}]
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_hcl-terraform_align_property_on_equals = 2
+ij_hcl-terraform_align_property_on_value = 1
+ij_hcl-terraform_array_wrapping = 2
+ij_hcl-terraform_do_not_align_property = 0
+ij_hcl-terraform_keep_blank_lines_in_code = 2
+ij_hcl-terraform_keep_indents_on_empty_lines = false
+ij_hcl-terraform_keep_line_breaks = true
+ij_hcl-terraform_object_wrapping = 2
+ij_hcl-terraform_property_alignment = 0
+ij_hcl-terraform_property_line_commenter_character = 0
+ij_hcl-terraform_space_after_comma = true
+ij_hcl-terraform_space_before_comma = false
+ij_hcl-terraform_spaces_around_assignment_operators = true
+ij_hcl-terraform_spaces_within_braces = false
+ij_hcl-terraform_spaces_within_brackets = false
+ij_hcl-terraform_wrap_long_lines = false
+
+[{*.vsl,*.vm,*.ft}]
+indent_size = 4
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_vtl_keep_indents_on_empty_lines = false
+
+[{*.xjsp,*.tag,*.jsp,*.jsf,*.jspf,*.tagf}]
+indent_size = 4
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_jsp_jsp_prefer_comma_separated_import_list = false
+ij_jsp_keep_indents_on_empty_lines = false
+
+[{*.yml,*.yaml}]
+ij_yaml_keep_indents_on_empty_lines = false
+ij_yaml_keep_line_breaks = true
+
+[{*.zsh,*.bash,*.sh}]
+ij_shell_binary_ops_start_line = false
+ij_shell_keep_column_alignment_padding = false
+ij_shell_minify_program = false
+ij_shell_redirect_followed_by_space = false
+ij_shell_switch_cases_indented = false
+
+[{composer.lock,.eslintrc,bowerrc,.babelrc,jest.config,.stylelintrc,*.jsb3,*.jsb2,*.json}]
+ij_json_keep_blank_lines_in_code = 0
+ij_json_keep_indents_on_empty_lines = false
+ij_json_keep_line_breaks = true
+ij_json_space_after_colon = true
+ij_json_space_after_comma = true
+ij_json_space_before_colon = true
+ij_json_space_before_comma = false
+ij_json_spaces_within_braces = false
+ij_json_spaces_within_brackets = false
+ij_json_wrap_long_lines = false
+
+[{phpunit.xml.dist,*.jhm,*.xjb,*.rng,*.qrc,*.wsdl,*.wsdd,*.fxml,*.plan,*.bpmn,*.pom,*.xslt,*.jrxml,*.ant,*.xul,*.xsl,*.xsd,*.tld,*.jnlp,*.wadl,*.xml}]
+ij_continuation_indent_size = 2
+ij_xml_block_comment_at_first_column = true
+ij_xml_keep_indents_on_empty_lines = false
+ij_xml_line_comment_at_first_column = true
+ij_xml_use_custom_settings = true
+
+[{spring.schemas,spring.handlers,*.properties}]
+ij_properties_align_group_field_declarations = false
diff --git a/.github/tw-rules.yaml b/.github/tw-rules.yaml
new file mode 100644
index 0000000..295545d
--- /dev/null
+++ b/.github/tw-rules.yaml
@@ -0,0 +1 @@
+runChecks: true
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..36724f2
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,121 @@
+name: "Build and Test"
+
+on:
+ pull_request:
+ branches:
+ - main
+ push:
+ branches:
+ - main
+
+jobs:
+ matrix_build:
+ name: "Matrix Build"
+ runs-on:
+ - ubuntu-latest
+ strategy:
+ fail-fast: false
+ max-parallel: 100
+ matrix:
+ spring_boot_version:
+ - 3.2.2
+ - 3.1.2
+ - 3.0.9
+ - 2.7.14
+ container:
+ image: azul/zulu-openjdk:17
+ env:
+ SPRING_BOOT_VERSION: ${{ matrix.spring_boot_version }}
+ GRADLE_OPTS: "-Djava.security.egd=file:/dev/./urandom -Dorg.gradle.parallel=true"
+ IN_CI: true
+ steps:
+ - name: "Install packages"
+ run: apt-get update && apt-get install -y git unzip docker docker-compose
+ - name: Checkout repository
+ uses: actions/checkout@v3
+ - name: Setup Gradle
+ uses: gradle/gradle-build-action@v2
+ with:
+ gradle-home-cache-cleanup: true
+ # Comment out when you are upgrading gradle in a branch and doing tons of commits you would need to test.
+ # cache-read-only: false
+ - name: "Assemble jar"
+ uses: gradle/gradle-build-action@v2
+ with:
+ arguments: assemble --console=plain --info --stacktrace --parallel
+ - name: "Compile tests"
+ uses: gradle/gradle-build-action@v2
+ with:
+ arguments: compileTest --console=plain --info --stacktrace --parallel
+ - name: "Run checks"
+ uses: gradle/gradle-build-action@v2
+ with:
+ arguments: check -x test --console=plain --stacktrace
+ - name: "Run tests"
+ uses: gradle/gradle-build-action@v2
+ with:
+ arguments: -Dspring.profiles.include=continuous-integration test --console=plain --info --stacktrace
+ - name: "Test if publishing works"
+ uses: gradle/gradle-build-action@v2
+ with:
+ arguments: publishToMavenLocal --console=plain --info --stacktrace
+ - name: "Publish Test Report"
+ uses: mikepenz/action-junit-report@v3
+ if: always()
+ with:
+ check_name: Test Report-(${{ matrix.spring_boot_version }})
+ report_paths: '**/build/test-results/**/*.xml'
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ require_tests: true
+ - name: Publish checkstyle report
+ if: always()
+ uses: jwgmeligmeyling/checkstyle-github-action@master
+ with:
+ name: Checkstyle Report-(${{ matrix.spring_boot_version }})
+ path: '**/build/reports/**/*.xml'
+ - name: Publish spotbugs report
+ if: failure()
+ uses: jwgmeligmeyling/spotbugs-github-action@master
+ with:
+ name: Spotbugs Report-(${{ matrix.spring_boot_version }})
+ path: '**/build/reports/**/*.xml'
+ - name: "Collect test reports"
+ run: |
+ tar -zcvf all-test-reports-${{ matrix.spring_boot_version }}.tar.gz **/build/reports
+ if: always()
+ - name: "Store test results"
+ uses: actions/upload-artifact@v3
+ if: always()
+ with:
+ name: all-test-reports-${{ matrix.spring_boot_version }}
+ path: all-test-reports-${{ matrix.spring_boot_version }}.tar.gz
+ retention-days: 7
+ build:
+ name: "Build and Test"
+ runs-on:
+ - ubuntu-latest
+ needs: matrix_build
+ container:
+ image: azul/zulu-openjdk:17
+ steps:
+ # Needed hacks to properly fail the build when one matrix build fails.
+ - name: Do something so that GHA is happy
+ run: echo "Be happy!"
+ - name: Verify matrix jobs succeeded
+ if: ${{ needs.matrix_build.result != 'success' }}
+ run: exit 1
+ - name: "Install packages"
+ run: apt-get update && apt-get install -y git unzip
+ - name: Checkout repository
+ uses: actions/checkout@v3
+ - name: Setup Gradle
+ uses: gradle/gradle-build-action@v2
+ with:
+ gradle-home-cache-cleanup: true
+ # Comment out when you are upgrading gradle in a branch and doing tons of commits you would need to test.
+ # cache-read-only: false
+ - name: "Tag release"
+ if: github.ref == 'refs/heads/master'
+ uses: gradle/gradle-build-action@v2
+ with:
+ arguments: tagRelease --console=plain --info --stacktrace
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
new file mode 100644
index 0000000..ae79d58
--- /dev/null
+++ b/.github/workflows/stale.yml
@@ -0,0 +1,23 @@
+name: Mark stale issues and pull requests
+
+on:
+ schedule:
+ - cron: "30 1 * * *"
+
+jobs:
+ stale:
+ runs-on:
+ - ubuntu-latest
+ steps:
+ - uses: actions/stale@v5.1.1
+ with:
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ stale-issue-message: 'Stale issue message'
+ stale-pr-message: 'Stale pull request message'
+ stale-issue-label: 'no-issue-activity'
+ stale-pr-label: 'no-pr-activity'
+ days-before-stale: 60
+ days-before-close: 10
+ days-before-issue-stale: -1
+ days-before-issue-close: -1
+ operations-per-run: 100
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e0137a6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+.gradle
+build/
+out/
+
+# Idea IDE files
+*.iml
+*.ipr
+*.iws
+.idea
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..e6cd27d
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,12 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [0.0.1] - 2024-03-21
+
+### Added
+
+* A bean to ask the current environment from.
diff --git a/CODEOWNERS b/CODEOWNERS
new file mode 100644
index 0000000..235b5b3
--- /dev/null
+++ b/CODEOWNERS
@@ -0,0 +1 @@
+* @transferwise/application-engineering
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..4517870
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,13 @@
+Copyright 2021 TransferWise Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b15d970
--- /dev/null
+++ b/README.md
@@ -0,0 +1,35 @@
+# Wise Environment.
+
+![Apache 2](https://img.shields.io/hexpm/l/plug.svg)
+![Java 11](https://img.shields.io/badge/Java-11-blue.svg)
+![Maven Central](https://badgen.net/maven/v/maven-central/com.transferwise.common/wise-environment)
+[![Owners](https://img.shields.io/badge/team-AppEng-blueviolet.svg?logo=wise)](https://transferwise.atlassian.net/wiki/spaces/EKB/pages/2520812116/Application+Engineering+Team) [![Slack](https://img.shields.io/badge/slack-sre--guild-blue.svg?logo=slack)](https://app.slack.com/client/T026FB76G/CLR1U8SNS)
+> Use the `@application-engineering-on-call` handle on Slack for help.
+---
+
+Provides information to other libraries in which environment they are running in.
+
+Allows to set default properties via environment variables and system properties.
+
+Those have to prefixed respectively with
+* `WISE_DEFAULTS_`
+* `wise.defaults.`
+
+E.g.
+* `WISE_DEFAULTS_WISE_ENVIRONMENT_TEST_VALUE1`
+* `wise.defaults.wise.environment.test.value4`
+
+## License
+Copyright 2024 TransferWise Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
\ No newline at end of file
diff --git a/build.common.gradle b/build.common.gradle
new file mode 100644
index 0000000..616764c
--- /dev/null
+++ b/build.common.gradle
@@ -0,0 +1,130 @@
+import org.gradle.api.tasks.testing.logging.TestExceptionFormat
+import org.gradle.api.tasks.testing.logging.TestLogEvent
+
+buildscript {
+ repositories {
+ mavenCentral()
+ mavenLocal()
+ }
+}
+
+apply plugin: "java-library"
+apply plugin: "checkstyle"
+apply plugin: "idea"
+apply plugin: "com.github.spotbugs"
+apply plugin: "groovy"
+
+apply from: "$rootProject.rootDir/build.libraries.gradle"
+
+group = "com.transferwise.common"
+
+repositories {
+ mavenCentral()
+ mavenLocal()
+}
+
+configurations {
+ local {
+ canBeResolved(false)
+ canBeConsumed(false)
+ }
+ compileClasspath {
+ extendsFrom(local)
+ }
+ runtimeClasspath {
+ extendsFrom(local)
+ }
+ testCompileClasspath {
+ extendsFrom(local)
+ }
+ testRuntimeClasspath {
+ extendsFrom(local)
+ }
+ annotationProcessor {
+ extendsFrom(local)
+ }
+ testAnnotationProcessor {
+ extendsFrom(local)
+ }
+}
+
+dependencies {
+ local(platform(libraries.springBootDependencies))
+
+ local(libraries.lombok)
+
+ compileOnly libraries.spotbugsAnnotations
+}
+
+java {
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
+
+ withSourcesJar()
+ withJavadocJar()
+}
+
+jar {
+ manifest {
+ attributes(
+ "Implementation-Title": "Transferwise Base Utils",
+ "Implementation-Version": archiveVersion
+ )
+ }
+}
+
+compileJava {
+ options.encoding = 'utf-8'
+ options.compilerArgs << '-parameters'
+ options.compilerArgs << '-Xlint'
+ options.compilerArgs << '-Xlint:-processing'
+
+ options.fork = true
+ options.forkOptions.jvmArgs << '-Xmx256m'
+}
+
+compileTestJava {
+ options.fork = true
+ options.forkOptions.jvmArgs << '-Xmx256m'
+}
+
+test {
+ useJUnitPlatform()
+
+ environment("WISE_DEFAULTS_WISE_ENVIRONMENT_TEST_VALUE1", "foo")
+ environment("WISE_DEFAULTS_WISE_ENVIRONMENT_TEST_VALUE2", "foo")
+ environment("WISE_ENVIRONMENT_TEST_VALUE3", "foo")
+
+ systemProperty("wise.defaults.wise.environment.test.value4", "foo")
+
+ testLogging {
+ events TestLogEvent.STARTED, TestLogEvent.FAILED, TestLogEvent.SKIPPED, TestLogEvent.PASSED,
+ TestLogEvent.STANDARD_ERROR
+ showExceptions = true
+ showStackTraces = true
+ exceptionFormat = TestExceptionFormat.FULL
+ }
+}
+
+tasks.findAll { it.name.startsWith("spotbugs") }*.configure {
+ excludeFilter = file("$rootProject.rootDir/spotbugs-exclude.xml")
+
+ reports {
+ xml.required = true
+ html.required = true
+ }
+}
+
+tasks.withType(Checkstyle).configureEach {
+ config = resources.text.fromFile(file("$rootProject.rootDir/google_checks.xml"))
+
+ // Deprecated, checkstyle does not like the namings.
+ exclude "com/transferwise/common/baseutils/tracing/**"
+
+ maxWarnings = 0
+
+ reports {
+ xml.required = true
+ html.required = true
+ }
+}
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..e14fd0c
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,53 @@
+import com.github.spotbugs.snom.Confidence
+import com.github.spotbugs.snom.Effort
+import org.eclipse.jgit.api.errors.RefAlreadyExistsException
+
+plugins {
+ id "com.github.spotbugs" version "+"
+ id "idea"
+ id 'org.ajoberstar.grgit' version '+'
+ id 'io.github.gradle-nexus.publish-plugin' version "1.1.0"
+}
+
+idea.project {
+ vcs = 'Git'
+ languageLevel = JavaVersion.VERSION_17
+ targetBytecodeVersion = JavaVersion.VERSION_17
+}
+
+ext.projectName = "Wise Environment"
+ext.projectDescription = "Wise Environment"
+ext.projectArtifactName = "wise-environment-starter"
+
+apply from: 'build.common.gradle'
+
+tasks.register('tagRelease') {
+ doLast {
+ try {
+ grgit.tag.add {
+ name = "v$version"
+ message = "Release of ${version}"
+ }
+ grgit.push(refsOrSpecs: ["v$version"])
+ }
+ catch (RefAlreadyExistsException ignored) {
+ logger.warn("Tag v$version already exists.")
+ }
+ }
+}
+
+group = "com.transferwise.common"
+
+nexusPublishing {
+ repositories {
+ sonatype {
+ username = System.getenv("SONATYPE_USER")
+ password = System.getenv("SONATYPE_PASSWORD")
+ }
+ }
+}
+
+spotbugs {
+ effort = Effort.valueOf('MAX')
+ reportLevel = Confidence.valueOf('DEFAULT')
+}
\ No newline at end of file
diff --git a/build.libraries.gradle b/build.libraries.gradle
new file mode 100644
index 0000000..5df390b
--- /dev/null
+++ b/build.libraries.gradle
@@ -0,0 +1,14 @@
+ext {
+ springBootVersion = "${System.getenv("SPRING_BOOT_VERSION") ?: "2.7.18"}"
+
+ libraries = [
+ // version defined
+ spotbugsAnnotations : "com.github.spotbugs:spotbugs-annotations:${spotbugs.toolVersion.get()}",
+ springBootDependencies: "org.springframework.boot:spring-boot-dependencies:${springBootVersion}",
+
+ // versions managed by spring-boot-dependencies platform
+ lombok : 'org.projectlombok:lombok',
+ springBootStarter : "org.springframework.boot:spring-boot-starter",
+ springBootStarterTest : "org.springframework.boot:spring-boot-starter-test"
+ ]
+}
diff --git a/build.library.gradle b/build.library.gradle
new file mode 100644
index 0000000..ec6474b
--- /dev/null
+++ b/build.library.gradle
@@ -0,0 +1,79 @@
+apply plugin: "maven-publish"
+apply plugin: "signing"
+
+ext.projectGitHubRepoName = "wise-environment"
+ext.projectScmUrl = "https://github.com/transferwise/${projectGitHubRepoName}"
+ext.projectScmConnection = "scm:git:git://github.com/transferwise/${projectGitHubRepoName}.git"
+
+publishing {
+ publications {
+ mavenJava(MavenPublication) {
+ from components.java
+ afterEvaluate {
+ artifactId = projectArtifactName
+ }
+
+ /*
+ This ensures that libraries will have explicit dependency versions in their Maven POM and Gradle module files, so that there would be less
+ ambiguity and less chances of dependency conflicts.
+ */
+ versionMapping {
+ usage('java-api') {
+ fromResolutionOf('runtimeClasspath')
+ }
+ usage('java-runtime') {
+ fromResolutionOf('runtimeClasspath')
+ }
+ }
+
+ pom {
+ name = projectName
+ description = projectDescription
+ url = projectScmUrl
+ packaging = "jar"
+ licenses {
+ license {
+ name = 'The Apache License, Version 2.0, Copyright 2019 TransferWise Ltd'
+ url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+ }
+ }
+ developers {
+ developer {
+ id = 'onukristo'
+ name = 'Kristo Kuusküll'
+ email = "kristo.kuuskull@transferwise.com"
+ organization = "Transferwise Ltd"
+ organizationUrl = "https://github.com/transferwise"
+ }
+ }
+ scm {
+ connection = projectScmConnection
+ developerConnection = projectScmConnection
+ url = projectScmUrl
+ }
+ withXml {
+ if (!asNode().dependencyManagement.isEmpty()){
+ throw new IllegalStateException("There should not be any `dependencyManagement` block in POM.")
+ }
+ }
+ }
+ }
+ }
+
+ if (System.getenv("OSS_SIGNING_KEY")) {
+ signing {
+ useInMemoryPgpKeys(System.getenv("OSS_SIGNING_KEY"), System.getenv("OSS_SIGNING_PASSWORD"))
+ sign publishing.publications.mavenJava
+ }
+ }
+
+ repositories {
+ maven {
+ url System.getenv("MAVEN_URL")
+ credentials {
+ username = System.getenv("MAVEN_USER")
+ password = System.getenv("MAVEN_PASSWORD")
+ }
+ }
+ }
+}
diff --git a/google_checks.xml b/google_checks.xml
new file mode 100644
index 0000000..a7fdda7
--- /dev/null
+++ b/google_checks.xml
@@ -0,0 +1,268 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..9759e31
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1 @@
+version=0.0.1
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..7f93135
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..a80b22c
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,7 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
+networkTimeout=10000
+validateDistributionUrl=true
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
new file mode 100755
index 0000000..0adc8e1
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,249 @@
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
+##############################################################################
+
+# Attempt to set APP_HOME
+
+# Resolve links: $0 may be a link
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
+done
+
+# This is normally unused
+# shellcheck disable=SC2034
+APP_BASE_NAME=${0##*/}
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD=maximum
+
+warn () {
+ echo "$*"
+} >&2
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+} >&2
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD=$JAVA_HOME/jre/sh/java
+ else
+ JAVACMD=$JAVA_HOME/bin/java
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD=java
+ if ! command -v java >/dev/null 2>&1
+ then
+ die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+fi
+
+# Increase the maximum file descriptors if we can.
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC3045
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC3045
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
+fi
+
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
+
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
+ fi
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
+ done
+fi
+
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command;
+# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
+# shell script including quotes and variable substitutions, so put them in
+# double quotes to make sure that they get re-expanded; and
+# * put everything else in single quotes, so that it's not re-expanded.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..6689b85
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,92 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if %ERRORLEVEL% equ 0 goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..a2ae7cb
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,3 @@
+rootProject.name = 'wise-environment'
+
+include 'wise-environment-starter'
diff --git a/spotbugs-exclude.xml b/spotbugs-exclude.xml
new file mode 100644
index 0000000..072d9ed
--- /dev/null
+++ b/spotbugs-exclude.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wise-environment-starter/build.gradle b/wise-environment-starter/build.gradle
new file mode 100644
index 0000000..8c64afe
--- /dev/null
+++ b/wise-environment-starter/build.gradle
@@ -0,0 +1,10 @@
+ext.projectArtifactName = "wise-environment"
+
+apply from: "$rootProject.rootDir/build.common.gradle"
+apply from: "$rootProject.rootDir/build.library.gradle"
+
+dependencies {
+ compileOnly libraries.springBootStarter
+
+ testImplementation libraries.springBootStarterTest
+}
diff --git a/wise-environment-starter/src/main/java/com/wise/common/environment/DefaultWiseEnvironment.java b/wise-environment-starter/src/main/java/com/wise/common/environment/DefaultWiseEnvironment.java
new file mode 100644
index 0000000..297695e
--- /dev/null
+++ b/wise-environment-starter/src/main/java/com/wise/common/environment/DefaultWiseEnvironment.java
@@ -0,0 +1,64 @@
+package com.wise.common.environment;
+
+import com.wise.common.environment.WiseEnvironmentProperties.SubType;
+import com.wise.common.environment.WiseEnvironmentProperties.Type;
+
+public class DefaultWiseEnvironment implements WiseEnvironment {
+
+ private final Type type;
+ private final SubType subType;
+
+ public DefaultWiseEnvironment(WiseEnvironmentProperties wiseEnvironmentProperties) {
+ var type = wiseEnvironmentProperties.getType();
+ if (type == null) {
+ if (isExecutedByIntegrationTest()) {
+ type = Type.INTEGRATION_TEST;
+ }
+ }
+ if (type == null) {
+ throw new IllegalStateException("Wise environment type is not specified. You can do that through 'wise.environment.type' property.");
+ }
+
+ this.type = type;
+ this.subType = wiseEnvironmentProperties.getSubType();
+ }
+
+ @Override
+ public boolean isProduction() {
+ return Type.PRODUCTION == type;
+ }
+
+ @Override
+ public boolean isStaging() {
+ return Type.STAGING == type;
+ }
+
+ @Override
+ public boolean isIntegrationTest() {
+ return Type.INTEGRATION_TEST == type;
+ }
+
+ @Override
+ public boolean isDevelopment() {
+ return Type.DEVELOPMENT == type;
+ }
+
+ @Override
+ public boolean isSandbox() {
+ return SubType.SANDBOX == subType;
+ }
+
+ @Override
+ public boolean isCustomEnvironment() {
+ return SubType.CUSTOM_ENVS == subType;
+ }
+
+ protected boolean isExecutedByIntegrationTest() {
+ for (var stackTraceElement : Thread.currentThread().getStackTrace()) {
+ if ("org.springframework.boot.test.context.SpringBootContextLoader".equals(stackTraceElement.getClassName())) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/wise-environment-starter/src/main/java/com/wise/common/environment/WiseDefaultsPropertiesPropertySource.java b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseDefaultsPropertiesPropertySource.java
new file mode 100644
index 0000000..a9bf574
--- /dev/null
+++ b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseDefaultsPropertiesPropertySource.java
@@ -0,0 +1,25 @@
+package com.wise.common.environment;
+
+import java.util.Map;
+import java.util.Properties;
+import org.springframework.core.env.MapPropertySource;
+import org.springframework.lang.Nullable;
+
+public class WiseDefaultsPropertiesPropertySource extends MapPropertySource {
+
+ @SuppressWarnings({"rawtypes", "unchecked"})
+ public WiseDefaultsPropertiesPropertySource(String name, Properties source) {
+ super(name, (Map) source);
+ }
+
+ protected WiseDefaultsPropertiesPropertySource(String name, Map source) {
+ super(name, source);
+ }
+
+ @Override
+ @Nullable
+ public Object getProperty(String name) {
+ return this.source.get("wise.defaults." + name);
+ }
+
+}
diff --git a/wise-environment-starter/src/main/java/com/wise/common/environment/WiseDefaultsSystemEnvironmentPropertySource.java b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseDefaultsSystemEnvironmentPropertySource.java
new file mode 100644
index 0000000..1674f5d
--- /dev/null
+++ b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseDefaultsSystemEnvironmentPropertySource.java
@@ -0,0 +1,81 @@
+package com.wise.common.environment;
+
+import java.util.Map;
+import org.springframework.core.env.MapPropertySource;
+import org.springframework.lang.Nullable;
+import org.springframework.util.Assert;
+
+public class WiseDefaultsSystemEnvironmentPropertySource extends MapPropertySource {
+
+ public WiseDefaultsSystemEnvironmentPropertySource(String name, Map source) {
+ super(name, source);
+ }
+
+ @Override
+ public boolean containsProperty(String name) {
+ return (getProperty(name) != null);
+ }
+
+ @Override
+ @Nullable
+ public Object getProperty(String name) {
+ String actualName = resolvePropertyName(name);
+ if (logger.isDebugEnabled() && !name.equals(actualName)) {
+ logger.debug("PropertySource '" + getName() + "' does not contain property '" + name +
+ "', but found equivalent '" + actualName + "'");
+ }
+ return super.getProperty(actualName);
+ }
+
+ /**
+ * Check to see if this property source contains a property with the given name, or any underscore / uppercase variation thereof. Return the
+ * resolved name if one is found or otherwise the original name. Never returns {@code null}.
+ */
+ protected final String resolvePropertyName(String name) {
+ var nameWithDefaultPrefix = "WISE_DEFAULTS_" + name;
+
+ Assert.notNull(name, "Property name must not be null");
+ String resolvedName = checkPropertyName(nameWithDefaultPrefix);
+ if (resolvedName != null) {
+ return resolvedName;
+ }
+ String uppercasedName = nameWithDefaultPrefix.toUpperCase();
+ if (!name.equals(uppercasedName)) {
+ resolvedName = checkPropertyName(uppercasedName);
+ if (resolvedName != null) {
+ return resolvedName;
+ }
+ }
+ return name;
+ }
+
+ @Nullable
+ private String checkPropertyName(String name) {
+ // Check name as-is
+ if (containsKey(name)) {
+ return name;
+ }
+ // Check name with just dots replaced
+ String noDotName = name.replace('.', '_');
+ if (!name.equals(noDotName) && containsKey(noDotName)) {
+ return noDotName;
+ }
+ // Check name with just hyphens replaced
+ String noHyphenName = name.replace('-', '_');
+ if (!name.equals(noHyphenName) && containsKey(noHyphenName)) {
+ return noHyphenName;
+ }
+ // Check name with dots and hyphens replaced
+ String noDotNoHyphenName = noDotName.replace('-', '_');
+ if (!noDotName.equals(noDotNoHyphenName) && containsKey(noDotNoHyphenName)) {
+ return noDotNoHyphenName;
+ }
+ // Give up
+ return null;
+ }
+
+ private boolean containsKey(String name) {
+ return this.source.containsKey(name);
+ }
+
+}
diff --git a/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironment.java b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironment.java
new file mode 100644
index 0000000..b5f03fe
--- /dev/null
+++ b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironment.java
@@ -0,0 +1,15 @@
+package com.wise.common.environment;
+
+public interface WiseEnvironment {
+ boolean isProduction();
+
+ boolean isStaging();
+
+ boolean isIntegrationTest();
+
+ boolean isDevelopment();
+
+ boolean isSandbox();
+
+ boolean isCustomEnvironment();
+}
diff --git a/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentAutoConfiguration.java b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentAutoConfiguration.java
new file mode 100644
index 0000000..bee7a62
--- /dev/null
+++ b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentAutoConfiguration.java
@@ -0,0 +1,23 @@
+package com.wise.common.environment;
+
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+
+@AutoConfiguration
+public class WiseEnvironmentAutoConfiguration {
+
+ @Bean
+ @ConditionalOnMissingBean(WiseEnvironmentProperties.class)
+ @ConfigurationProperties(prefix = "wise.environment.core", ignoreUnknownFields = false)
+ public WiseEnvironmentProperties wiseEnvironmentProperties() {
+ return new WiseEnvironmentProperties();
+ }
+
+ @Bean
+ @ConditionalOnMissingBean(WiseEnvironment.class)
+ public DefaultWiseEnvironment wiseEnvironment(WiseEnvironmentProperties wiseEnvironmentProperties) {
+ return new DefaultWiseEnvironment(wiseEnvironmentProperties);
+ }
+}
diff --git a/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentEnvironmentPostProcessor.java b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentEnvironmentPostProcessor.java
new file mode 100644
index 0000000..8146f0f
--- /dev/null
+++ b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentEnvironmentPostProcessor.java
@@ -0,0 +1,21 @@
+package com.wise.common.environment;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.env.EnvironmentPostProcessor;
+import org.springframework.core.env.ConfigurableEnvironment;
+
+@Slf4j
+public class WiseEnvironmentEnvironmentPostProcessor implements EnvironmentPostProcessor {
+
+ private static final String SYSTEM_ENV_PROPERTY_SOURCE_KEY = WiseEnvironmentEnvironmentPostProcessor.class.getName() + ".systemEnv";
+ private static final String SYSTEM_PROPS_PROPERTY_SOURCE_KEY = WiseEnvironmentEnvironmentPostProcessor.class.getName() + ".systemProps";
+
+ @Override
+ public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
+ environment.getPropertySources().addLast(
+ new WiseDefaultsPropertiesPropertySource(SYSTEM_PROPS_PROPERTY_SOURCE_KEY, environment.getSystemProperties()));
+ environment.getPropertySources().addLast(
+ new WiseDefaultsSystemEnvironmentPropertySource(SYSTEM_ENV_PROPERTY_SOURCE_KEY, environment.getSystemEnvironment()));
+ }
+}
diff --git a/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentProperties.java b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentProperties.java
new file mode 100644
index 0000000..d5c789b
--- /dev/null
+++ b/wise-environment-starter/src/main/java/com/wise/common/environment/WiseEnvironmentProperties.java
@@ -0,0 +1,25 @@
+package com.wise.common.environment;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+public class WiseEnvironmentProperties {
+
+ private Type type;
+
+ private SubType subType;
+
+ public enum Type {
+ PRODUCTION,
+ STAGING,
+ INTEGRATION_TEST,
+ DEVELOPMENT
+ }
+
+ public enum SubType {
+ SANDBOX,
+ CUSTOM_ENVS
+ }
+}
diff --git a/wise-environment-starter/src/main/resources/META-INF/spring.factories b/wise-environment-starter/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..2596f7c
--- /dev/null
+++ b/wise-environment-starter/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,2 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.wise.common.environment.WiseEnvironmentAutoConfiguration
+org.springframework.boot.env.EnvironmentPostProcessor=com.wise.common.environment.WiseEnvironmentEnvironmentPostProcessor
\ No newline at end of file
diff --git a/wise-environment-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/wise-environment-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..42fdf88
--- /dev/null
+++ b/wise-environment-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.wise.common.environment.WiseEnvironmentAutoConfiguration
\ No newline at end of file
diff --git a/wise-environment-starter/src/test/java/com/wise/common/environment/ApplicationIntTest.java b/wise-environment-starter/src/test/java/com/wise/common/environment/ApplicationIntTest.java
new file mode 100644
index 0000000..b2d84fb
--- /dev/null
+++ b/wise-environment-starter/src/test/java/com/wise/common/environment/ApplicationIntTest.java
@@ -0,0 +1,35 @@
+package com.wise.common.environment;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest(classes = TestApplication.class)
+public class ApplicationIntTest {
+
+ @Autowired
+ private WiseEnvironment wiseEnvironment;
+
+ @Autowired
+ private TestProperties testProperties;
+
+ @Test
+ void applicationIsConfigured() {
+ assertTrue(wiseEnvironment.isIntegrationTest());
+ }
+
+ @Test
+ void defaultEnvVariablesAreApplied() {
+ // Default set via ENV can be overridden via application.yml
+ assertEquals("blah", testProperties.getValue1());
+ // Default set via ENV is applied
+ assertEquals("foo", testProperties.getValue2());
+ // Environment variables still overwrite everything
+ assertEquals("foo", testProperties.getValue3());
+ // Defaults can be used through system properties as well
+ assertEquals("foo", testProperties.getValue4());
+ }
+}
diff --git a/wise-environment-starter/src/test/java/com/wise/common/environment/TestApplication.java b/wise-environment-starter/src/test/java/com/wise/common/environment/TestApplication.java
new file mode 100644
index 0000000..e05c1ba
--- /dev/null
+++ b/wise-environment-starter/src/test/java/com/wise/common/environment/TestApplication.java
@@ -0,0 +1,15 @@
+package com.wise.common.environment;
+
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+
+@SpringBootApplication
+public class TestApplication {
+
+ @Bean
+ @ConfigurationProperties("wise.environment.test")
+ public TestProperties testProperties() {
+ return new TestProperties();
+ }
+}
diff --git a/wise-environment-starter/src/test/java/com/wise/common/environment/TestProperties.java b/wise-environment-starter/src/test/java/com/wise/common/environment/TestProperties.java
new file mode 100644
index 0000000..50a9f49
--- /dev/null
+++ b/wise-environment-starter/src/test/java/com/wise/common/environment/TestProperties.java
@@ -0,0 +1,17 @@
+package com.wise.common.environment;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+public class TestProperties {
+
+ private String value1;
+
+ private String value2;
+
+ private String value3;
+
+ private String value4;
+}
diff --git a/wise-environment-starter/src/test/resources/application.yml b/wise-environment-starter/src/test/resources/application.yml
new file mode 100644
index 0000000..0771846
--- /dev/null
+++ b/wise-environment-starter/src/test/resources/application.yml
@@ -0,0 +1,7 @@
+wise:
+ environment:
+ core:
+ type: integration_test
+ test:
+ value1: blah
+ value3: blah
\ No newline at end of file