`, and ``.
+@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
+@font-family-base: @font-family-sans-serif;
+
+@font-size-base: 14px;
+@font-size-large: ceil((@font-size-base * 1.25)); // ~18px
+@font-size-small: ceil((@font-size-base * 0.85)); // ~12px
+
+@font-size-h1: floor((@font-size-base * 2.6)); // ~36px
+@font-size-h2: floor((@font-size-base * 2.15)); // ~30px
+@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px
+@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px
+@font-size-h5: @font-size-base;
+@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+@line-height-base: 1.428571429; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px
+
+//** By default, this inherits from the ``.
+@headings-font-family: inherit;
+@headings-font-weight: 500;
+@headings-line-height: 1.1;
+@headings-color: inherit;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+@icon-font-path: "../fonts/";
+//** File name for all font files.
+@icon-font-name: "glyphicons-halflings-regular";
+//** Element ID within SVG icon file.
+@icon-font-svg-id: "glyphicons_halflingsregular";
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+@padding-base-vertical: 6px;
+@padding-base-horizontal: 12px;
+
+@padding-large-vertical: 10px;
+@padding-large-horizontal: 16px;
+
+@padding-small-vertical: 5px;
+@padding-small-horizontal: 10px;
+
+@padding-xs-vertical: 1px;
+@padding-xs-horizontal: 5px;
+
+@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome
+@line-height-small: 1.5;
+
+@border-radius-base: 4px;
+@border-radius-large: 6px;
+@border-radius-small: 3px;
+
+//** Global color for active items (e.g., navs or dropdowns).
+@component-active-color: #fff;
+//** Global background color for active items (e.g., navs or dropdowns).
+@component-active-bg: @brand-primary;
+
+//** Width of the `border` for generating carets that indicator dropdowns.
+@caret-width-base: 4px;
+//** Carets increase slightly in size for larger components.
+@caret-width-large: 5px;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for ``s and ` `s.
+@table-cell-padding: 8px;
+//** Padding for cells in `.table-condensed`.
+@table-condensed-cell-padding: 5px;
+
+//** Default background color used for all tables.
+@table-bg: transparent;
+//** Background color used for `.table-striped`.
+@table-bg-accent: #f9f9f9;
+//** Background color used for `.table-hover`.
+@table-bg-hover: #f5f5f5;
+@table-bg-active: @table-bg-hover;
+
+//** Border color for table and cell borders.
+@table-border-color: #ddd;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+@btn-font-weight: normal;
+
+@btn-default-color: #333;
+@btn-default-bg: #fff;
+@btn-default-border: #ccc;
+
+@btn-primary-color: #fff;
+@btn-primary-bg: @brand-primary;
+@btn-primary-border: darken(@btn-primary-bg, 5%);
+
+@btn-success-color: #fff;
+@btn-success-bg: @brand-success;
+@btn-success-border: darken(@btn-success-bg, 5%);
+
+@btn-info-color: #fff;
+@btn-info-bg: @brand-info;
+@btn-info-border: darken(@btn-info-bg, 5%);
+
+@btn-warning-color: #fff;
+@btn-warning-bg: @brand-warning;
+@btn-warning-border: darken(@btn-warning-bg, 5%);
+
+@btn-danger-color: #fff;
+@btn-danger-bg: @brand-danger;
+@btn-danger-border: darken(@btn-danger-bg, 5%);
+
+@btn-link-disabled-color: @gray-light;
+
+// Allows for customizing button radius independently from global border radius
+@btn-border-radius-base: @border-radius-base;
+@btn-border-radius-large: @border-radius-large;
+@btn-border-radius-small: @border-radius-small;
+
+
+//== Forms
+//
+//##
+
+//** ` ` background color
+@input-bg: #fff;
+//** ` ` background color
+@input-bg-disabled: @gray-lighter;
+
+//** Text color for ` `s
+@input-color: @gray;
+//** ` ` border color
+@input-border: #ccc;
+
+// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on ``s in some browsers, due to the limited stylability of ``s in CSS.
+@input-border-radius: @border-radius-base;
+//** Large `.form-control` border radius
+@input-border-radius-large: @border-radius-large;
+//** Small `.form-control` border radius
+@input-border-radius-small: @border-radius-small;
+
+//** Border color for inputs on focus
+@input-border-focus: #66afe9;
+
+//** Placeholder text color
+@input-color-placeholder: #999;
+
+//** Default `.form-control` height
+@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);
+//** Large `.form-control` height
+@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
+//** Small `.form-control` height
+@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
+
+//** `.form-group` margin
+@form-group-margin-bottom: 15px;
+
+@legend-color: @gray-dark;
+@legend-border-color: #e5e5e5;
+
+//** Background color for textual input addons
+@input-group-addon-bg: @gray-lighter;
+//** Border color for textual input addons
+@input-group-addon-border-color: @input-border;
+
+//** Disabled cursor for form controls and buttons.
+@cursor-disabled: not-allowed;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu.
+@dropdown-bg: #fff;
+//** Dropdown menu `border-color`.
+@dropdown-border: rgba(0,0,0,.15);
+//** Dropdown menu `border-color` **for IE8**.
+@dropdown-fallback-border: #ccc;
+//** Divider color for between dropdown items.
+@dropdown-divider-bg: #e5e5e5;
+
+//** Dropdown link text color.
+@dropdown-link-color: @gray-dark;
+//** Hover color for dropdown links.
+@dropdown-link-hover-color: darken(@gray-dark, 5%);
+//** Hover background for dropdown links.
+@dropdown-link-hover-bg: #f5f5f5;
+
+//** Active dropdown menu item text color.
+@dropdown-link-active-color: @component-active-color;
+//** Active dropdown menu item background color.
+@dropdown-link-active-bg: @component-active-bg;
+
+//** Disabled dropdown menu item background color.
+@dropdown-link-disabled-color: @gray-light;
+
+//** Text color for headers within dropdown menus.
+@dropdown-header-color: @gray-light;
+
+//** Deprecated `@dropdown-caret-color` as of v3.1.0
+@dropdown-caret-color: #000;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+@zindex-navbar: 1000;
+@zindex-dropdown: 1000;
+@zindex-popover: 1060;
+@zindex-tooltip: 1070;
+@zindex-navbar-fixed: 1030;
+@zindex-modal-background: 1040;
+@zindex-modal: 1050;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `@screen-xs` as of v3.0.1
+@screen-xs: 480px;
+//** Deprecated `@screen-xs-min` as of v3.2.0
+@screen-xs-min: @screen-xs;
+//** Deprecated `@screen-phone` as of v3.0.1
+@screen-phone: @screen-xs-min;
+
+// Small screen / tablet
+//** Deprecated `@screen-sm` as of v3.0.1
+@screen-sm: 768px;
+@screen-sm-min: @screen-sm;
+//** Deprecated `@screen-tablet` as of v3.0.1
+@screen-tablet: @screen-sm-min;
+
+// Medium screen / desktop
+//** Deprecated `@screen-md` as of v3.0.1
+@screen-md: 992px;
+@screen-md-min: @screen-md;
+//** Deprecated `@screen-desktop` as of v3.0.1
+@screen-desktop: @screen-md-min;
+
+// Large screen / wide desktop
+//** Deprecated `@screen-lg` as of v3.0.1
+@screen-lg: 1200px;
+@screen-lg-min: @screen-lg;
+//** Deprecated `@screen-lg-desktop` as of v3.0.1
+@screen-lg-desktop: @screen-lg-min;
+
+// So media queries don't overlap when required, provide a maximum
+@screen-xs-max: (@screen-sm-min - 1);
+@screen-sm-max: (@screen-md-min - 1);
+@screen-md-max: (@screen-lg-min - 1);
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+@grid-columns: 12;
+//** Padding between columns. Gets divided in half for the left and right.
+@grid-gutter-width: 30px;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+@grid-float-breakpoint: @screen-sm-min;
+//** Point at which the navbar begins collapsing.
+@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes.
+
+// Small screen / tablet
+@container-tablet: (720px + @grid-gutter-width);
+//** For `@screen-sm-min` and up.
+@container-sm: @container-tablet;
+
+// Medium screen / desktop
+@container-desktop: (940px + @grid-gutter-width);
+//** For `@screen-md-min` and up.
+@container-md: @container-desktop;
+
+// Large screen / wide desktop
+@container-large-desktop: (1140px + @grid-gutter-width);
+//** For `@screen-lg-min` and up.
+@container-lg: @container-large-desktop;
+
+
+//== Navbar
+//
+//##
+
+// Basics of a navbar
+@navbar-height: 50px;
+@navbar-margin-bottom: @line-height-computed;
+@navbar-border-radius: @border-radius-base;
+@navbar-padding-horizontal: floor((@grid-gutter-width / 2));
+@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
+@navbar-collapse-max-height: 340px;
+
+@navbar-default-color: #777;
+@navbar-default-bg: #f8f8f8;
+@navbar-default-border: darken(@navbar-default-bg, 6.5%);
+
+// Navbar links
+@navbar-default-link-color: #777;
+@navbar-default-link-hover-color: #333;
+@navbar-default-link-hover-bg: transparent;
+@navbar-default-link-active-color: #555;
+@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%);
+@navbar-default-link-disabled-color: #ccc;
+@navbar-default-link-disabled-bg: transparent;
+
+// Navbar brand label
+@navbar-default-brand-color: @navbar-default-link-color;
+@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%);
+@navbar-default-brand-hover-bg: transparent;
+
+// Navbar toggle
+@navbar-default-toggle-hover-bg: #ddd;
+@navbar-default-toggle-icon-bar-bg: #888;
+@navbar-default-toggle-border-color: #ddd;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+@navbar-inverse-color: lighten(@gray-light, 15%);
+@navbar-inverse-bg: #222;
+@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);
+
+// Inverted navbar links
+@navbar-inverse-link-color: lighten(@gray-light, 15%);
+@navbar-inverse-link-hover-color: #fff;
+@navbar-inverse-link-hover-bg: transparent;
+@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;
+@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);
+@navbar-inverse-link-disabled-color: #444;
+@navbar-inverse-link-disabled-bg: transparent;
+
+// Inverted navbar brand label
+@navbar-inverse-brand-color: @navbar-inverse-link-color;
+@navbar-inverse-brand-hover-color: #fff;
+@navbar-inverse-brand-hover-bg: transparent;
+
+// Inverted navbar toggle
+@navbar-inverse-toggle-hover-bg: #333;
+@navbar-inverse-toggle-icon-bar-bg: #fff;
+@navbar-inverse-toggle-border-color: #333;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+@nav-link-padding: 10px 15px;
+@nav-link-hover-bg: @gray-lighter;
+
+@nav-disabled-link-color: @gray-light;
+@nav-disabled-link-hover-color: @gray-light;
+
+//== Tabs
+@nav-tabs-border-color: #ddd;
+
+@nav-tabs-link-hover-border-color: @gray-lighter;
+
+@nav-tabs-active-link-hover-bg: @body-bg;
+@nav-tabs-active-link-hover-color: @gray;
+@nav-tabs-active-link-hover-border-color: #ddd;
+
+@nav-tabs-justified-link-border-color: #ddd;
+@nav-tabs-justified-active-link-border-color: @body-bg;
+
+//== Pills
+@nav-pills-border-radius: @border-radius-base;
+@nav-pills-active-link-hover-bg: @component-active-bg;
+@nav-pills-active-link-hover-color: @component-active-color;
+
+
+//== Pagination
+//
+//##
+
+@pagination-color: @link-color;
+@pagination-bg: #fff;
+@pagination-border: #ddd;
+
+@pagination-hover-color: @link-hover-color;
+@pagination-hover-bg: @gray-lighter;
+@pagination-hover-border: #ddd;
+
+@pagination-active-color: #fff;
+@pagination-active-bg: @brand-primary;
+@pagination-active-border: @brand-primary;
+
+@pagination-disabled-color: @gray-light;
+@pagination-disabled-bg: #fff;
+@pagination-disabled-border: #ddd;
+
+
+//== Pager
+//
+//##
+
+@pager-bg: @pagination-bg;
+@pager-border: @pagination-border;
+@pager-border-radius: 15px;
+
+@pager-hover-bg: @pagination-hover-bg;
+
+@pager-active-bg: @pagination-active-bg;
+@pager-active-color: @pagination-active-color;
+
+@pager-disabled-color: @pagination-disabled-color;
+
+
+//== Jumbotron
+//
+//##
+
+@jumbotron-padding: 30px;
+@jumbotron-color: inherit;
+@jumbotron-bg: @gray-lighter;
+@jumbotron-heading-color: inherit;
+@jumbotron-font-size: ceil((@font-size-base * 1.5));
+@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+@state-success-text: #3c763d;
+@state-success-bg: #dff0d8;
+@state-success-border: darken(spin(@state-success-bg, -10), 5%);
+
+@state-info-text: #31708f;
+@state-info-bg: #d9edf7;
+@state-info-border: darken(spin(@state-info-bg, -10), 7%);
+
+@state-warning-text: #8a6d3b;
+@state-warning-bg: #fcf8e3;
+@state-warning-border: darken(spin(@state-warning-bg, -10), 5%);
+
+@state-danger-text: #a94442;
+@state-danger-bg: #f2dede;
+@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+@tooltip-max-width: 200px;
+//** Tooltip text color
+@tooltip-color: #fff;
+//** Tooltip background color
+@tooltip-bg: #000;
+@tooltip-opacity: .9;
+
+//** Tooltip arrow width
+@tooltip-arrow-width: 5px;
+//** Tooltip arrow color
+@tooltip-arrow-color: @tooltip-bg;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+@popover-bg: #fff;
+//** Popover maximum width
+@popover-max-width: 276px;
+//** Popover border color
+@popover-border-color: rgba(0,0,0,.2);
+//** Popover fallback border color
+@popover-fallback-border-color: #ccc;
+
+//** Popover title background color
+@popover-title-bg: darken(@popover-bg, 3%);
+
+//** Popover arrow width
+@popover-arrow-width: 10px;
+//** Popover arrow color
+@popover-arrow-color: @popover-bg;
+
+//** Popover outer arrow width
+@popover-arrow-outer-width: (@popover-arrow-width + 1);
+//** Popover outer arrow color
+@popover-arrow-outer-color: fadein(@popover-border-color, 5%);
+//** Popover outer arrow fallback color
+@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+@label-default-bg: @gray-light;
+//** Primary label background color
+@label-primary-bg: @brand-primary;
+//** Success label background color
+@label-success-bg: @brand-success;
+//** Info label background color
+@label-info-bg: @brand-info;
+//** Warning label background color
+@label-warning-bg: @brand-warning;
+//** Danger label background color
+@label-danger-bg: @brand-danger;
+
+//** Default label text color
+@label-color: #fff;
+//** Default text color of a linked label
+@label-link-hover-color: #fff;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+@modal-inner-padding: 15px;
+
+//** Padding applied to the modal title
+@modal-title-padding: 15px;
+//** Modal title line-height
+@modal-title-line-height: @line-height-base;
+
+//** Background color of modal content area
+@modal-content-bg: #fff;
+//** Modal content border color
+@modal-content-border-color: rgba(0,0,0,.2);
+//** Modal content border color **for IE8**
+@modal-content-fallback-border-color: #999;
+
+//** Modal backdrop background color
+@modal-backdrop-bg: #000;
+//** Modal backdrop opacity
+@modal-backdrop-opacity: .5;
+//** Modal header border color
+@modal-header-border-color: #e5e5e5;
+//** Modal footer border color
+@modal-footer-border-color: @modal-header-border-color;
+
+@modal-lg: 900px;
+@modal-md: 600px;
+@modal-sm: 300px;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+@alert-padding: 15px;
+@alert-border-radius: @border-radius-base;
+@alert-link-font-weight: bold;
+
+@alert-success-bg: @state-success-bg;
+@alert-success-text: @state-success-text;
+@alert-success-border: @state-success-border;
+
+@alert-info-bg: @state-info-bg;
+@alert-info-text: @state-info-text;
+@alert-info-border: @state-info-border;
+
+@alert-warning-bg: @state-warning-bg;
+@alert-warning-text: @state-warning-text;
+@alert-warning-border: @state-warning-border;
+
+@alert-danger-bg: @state-danger-bg;
+@alert-danger-text: @state-danger-text;
+@alert-danger-border: @state-danger-border;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+@progress-bg: #f5f5f5;
+//** Progress bar text color
+@progress-bar-color: #fff;
+//** Variable for setting rounded corners on progress bar.
+@progress-border-radius: @border-radius-base;
+
+//** Default progress bar color
+@progress-bar-bg: @brand-primary;
+//** Success progress bar color
+@progress-bar-success-bg: @brand-success;
+//** Warning progress bar color
+@progress-bar-warning-bg: @brand-warning;
+//** Danger progress bar color
+@progress-bar-danger-bg: @brand-danger;
+//** Info progress bar color
+@progress-bar-info-bg: @brand-info;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+@list-group-bg: #fff;
+//** `.list-group-item` border color
+@list-group-border: #ddd;
+//** List group border radius
+@list-group-border-radius: @border-radius-base;
+
+//** Background color of single list items on hover
+@list-group-hover-bg: #f5f5f5;
+//** Text color of active list items
+@list-group-active-color: @component-active-color;
+//** Background color of active list items
+@list-group-active-bg: @component-active-bg;
+//** Border color of active list elements
+@list-group-active-border: @list-group-active-bg;
+//** Text color for content within active list items
+@list-group-active-text-color: lighten(@list-group-active-bg, 40%);
+
+//** Text color of disabled list items
+@list-group-disabled-color: @gray-light;
+//** Background color of disabled list items
+@list-group-disabled-bg: @gray-lighter;
+//** Text color for content within disabled list items
+@list-group-disabled-text-color: @list-group-disabled-color;
+
+@list-group-link-color: #555;
+@list-group-link-hover-color: @list-group-link-color;
+@list-group-link-heading-color: #333;
+
+
+//== Panels
+//
+//##
+
+@panel-bg: #fff;
+@panel-body-padding: 15px;
+@panel-heading-padding: 10px 15px;
+@panel-footer-padding: @panel-heading-padding;
+@panel-border-radius: @border-radius-base;
+
+//** Border color for elements within panels
+@panel-inner-border: #ddd;
+@panel-footer-bg: #f5f5f5;
+
+@panel-default-text: @gray-dark;
+@panel-default-border: #ddd;
+@panel-default-heading-bg: #f5f5f5;
+
+@panel-primary-text: #fff;
+@panel-primary-border: @brand-primary;
+@panel-primary-heading-bg: @brand-primary;
+
+@panel-success-text: @state-success-text;
+@panel-success-border: @state-success-border;
+@panel-success-heading-bg: @state-success-bg;
+
+@panel-info-text: @state-info-text;
+@panel-info-border: @state-info-border;
+@panel-info-heading-bg: @state-info-bg;
+
+@panel-warning-text: @state-warning-text;
+@panel-warning-border: @state-warning-border;
+@panel-warning-heading-bg: @state-warning-bg;
+
+@panel-danger-text: @state-danger-text;
+@panel-danger-border: @state-danger-border;
+@panel-danger-heading-bg: @state-danger-bg;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+@thumbnail-padding: 4px;
+//** Thumbnail background color
+@thumbnail-bg: @body-bg;
+//** Thumbnail border color
+@thumbnail-border: #ddd;
+//** Thumbnail border radius
+@thumbnail-border-radius: @border-radius-base;
+
+//** Custom text color for thumbnail captions
+@thumbnail-caption-color: @text-color;
+//** Padding around the thumbnail caption
+@thumbnail-caption-padding: 9px;
+
+
+//== Wells
+//
+//##
+
+@well-bg: #f5f5f5;
+@well-border: darken(@well-bg, 7%);
+
+
+//== Badges
+//
+//##
+
+@badge-color: #fff;
+//** Linked badge text color on hover
+@badge-link-hover-color: #fff;
+@badge-bg: @gray-light;
+
+//** Badge text color in active nav link
+@badge-active-color: @link-color;
+//** Badge background color in active nav link
+@badge-active-bg: #fff;
+
+@badge-font-weight: bold;
+@badge-line-height: 1;
+@badge-border-radius: 10px;
+
+
+//== Breadcrumbs
+//
+//##
+
+@breadcrumb-padding-vertical: 8px;
+@breadcrumb-padding-horizontal: 15px;
+//** Breadcrumb background color
+@breadcrumb-bg: #f5f5f5;
+//** Breadcrumb text color
+@breadcrumb-color: #ccc;
+//** Text color of current page in the breadcrumb
+@breadcrumb-active-color: @gray-light;
+//** Textual separator for between breadcrumb elements
+@breadcrumb-separator: "/";
+
+
+//== Carousel
+//
+//##
+
+@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);
+
+@carousel-control-color: #fff;
+@carousel-control-width: 15%;
+@carousel-control-opacity: .5;
+@carousel-control-font-size: 20px;
+
+@carousel-indicator-active-bg: #fff;
+@carousel-indicator-border-color: #fff;
+
+@carousel-caption-color: #fff;
+
+
+//== Close
+//
+//##
+
+@close-font-weight: bold;
+@close-color: #000;
+@close-text-shadow: 0 1px 0 #fff;
+
+
+//== Code
+//
+//##
+
+@code-color: #c7254e;
+@code-bg: #f9f2f4;
+
+@kbd-color: #fff;
+@kbd-bg: #333;
+
+@pre-bg: #f5f5f5;
+@pre-color: @gray-dark;
+@pre-border-color: #ccc;
+@pre-scrollable-max-height: 340px;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+@component-offset-horizontal: 180px;
+//** Text muted color
+@text-muted: @gray-light;
+//** Abbreviations and acronyms border color
+@abbr-border-color: @gray-light;
+//** Headings small color
+@headings-small-color: @gray-light;
+//** Blockquote small color
+@blockquote-small-color: @gray-light;
+//** Blockquote font size
+@blockquote-font-size: (@font-size-base * 1.25);
+//** Blockquote border color
+@blockquote-border-color: @gray-lighter;
+//** Page header border color
+@page-header-border-color: @gray-lighter;
+//** Width of horizontal description list titles
+@dl-horizontal-offset: @component-offset-horizontal;
+//** Point at which .dl-horizontal becomes horizontal
+@dl-horizontal-breakpoint: @grid-float-breakpoint;
+//** Horizontal line color.
+@hr-border: @gray-lighter;
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/less/wells.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/less/wells.less
new file mode 100644
index 0000000..15d072b
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/less/wells.less
@@ -0,0 +1,29 @@
+//
+// Wells
+// --------------------------------------------------
+
+
+// Base class
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: @well-bg;
+ border: 1px solid @well-border;
+ border-radius: @border-radius-base;
+ .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
+ blockquote {
+ border-color: #ddd;
+ border-color: rgba(0,0,0,.15);
+ }
+}
+
+// Sizes
+.well-lg {
+ padding: 24px;
+ border-radius: @border-radius-large;
+}
+.well-sm {
+ padding: 9px;
+ border-radius: @border-radius-small;
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/nuget/MyGet.ps1 b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/nuget/MyGet.ps1
new file mode 100644
index 0000000..ad17dea
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/nuget/MyGet.ps1
@@ -0,0 +1,8 @@
+$nuget = $env:NuGet
+
+#parse the version number out of package.json
+$bsversion = ((Get-Content $env:SourcesPath\package.json) -join "`n" | ConvertFrom-Json).version
+
+#create packages
+& $nuget pack "nuget\bootstrap.nuspec" -Verbosity detailed -NonInteractive -NoPackageAnalysis -BasePath $env:SourcesPath -Version $bsversion
+& $nuget pack "nuget\bootstrap.less.nuspec" -Verbosity detailed -NonInteractive -NoPackageAnalysis -BasePath $env:SourcesPath -Version $bsversion
\ No newline at end of file
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/nuget/bootstrap.less.nuspec b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/nuget/bootstrap.less.nuspec
new file mode 100644
index 0000000..ec302c0
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/nuget/bootstrap.less.nuspec
@@ -0,0 +1,28 @@
+
+
+
+ bootstrap.less
+ 3.3
+ Bootstrap Less
+ Twitter, Inc.
+ bootstrap
+ The most popular front-end framework for developing responsive, mobile first projects on the web.
+ http://blog.getbootstrap.com
+ Bootstrap framework in Less. Includes fonts and JavaScript
+ en-us
+ http://getbootstrap.com
+ http://getbootstrap.com/apple-touch-icon.png
+ https://github.com/twbs/bootstrap/blob/master/LICENSE
+ Copyright 2015
+ false
+
+
+
+ css js less mobile-first responsive front-end framework web
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/nuget/bootstrap.nuspec b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/nuget/bootstrap.nuspec
new file mode 100644
index 0000000..50557cc
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/nuget/bootstrap.nuspec
@@ -0,0 +1,28 @@
+
+
+
+ bootstrap
+ 3.3
+ Bootstrap CSS
+ Twitter, Inc.
+ bootstrap
+ The most popular front-end framework for developing responsive, mobile first projects on the web.
+ http://blog.getbootstrap.com
+ Bootstrap framework in CSS. Includes fonts and JavaScript
+ en-us
+ http://getbootstrap.com
+ http://getbootstrap.com/apple-touch-icon.png
+ https://github.com/twbs/bootstrap/blob/master/LICENSE
+ Copyright 2015
+ false
+
+
+
+ css js less mobile-first responsive front-end framework web
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/package.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/package.js
new file mode 100644
index 0000000..0d8990b
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/package.js
@@ -0,0 +1,32 @@
+// package metadata file for Meteor.js
+
+/* jshint strict:false */
+/* global Package:true */
+
+Package.describe({
+ name: 'twbs:bootstrap', // http://atmospherejs.com/twbs/bootstrap
+ summary: 'The most popular front-end framework for developing responsive, mobile first projects on the web.',
+ version: '3.3.6',
+ git: 'https://github.com/twbs/bootstrap.git'
+});
+
+Package.onUse(function (api) {
+ api.versionsFrom('METEOR@1.0');
+ api.use('jquery', 'client');
+ var assets = [
+ 'dist/fonts/glyphicons-halflings-regular.eot',
+ 'dist/fonts/glyphicons-halflings-regular.svg',
+ 'dist/fonts/glyphicons-halflings-regular.ttf',
+ 'dist/fonts/glyphicons-halflings-regular.woff',
+ 'dist/fonts/glyphicons-halflings-regular.woff2'
+ ];
+ if (api.addAssets) {
+ api.addAssets(assets, 'client');
+ } else {
+ api.addFiles(assets, 'client', { isAsset: true });
+ }
+ api.addFiles([
+ 'dist/css/bootstrap.css',
+ 'dist/js/bootstrap.js'
+ ], 'client');
+});
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/package.json b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/package.json
new file mode 100644
index 0000000..998088b
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/bootstrap/package.json
@@ -0,0 +1,87 @@
+{
+ "name": "bootstrap",
+ "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
+ "version": "3.3.6",
+ "keywords": [
+ "css",
+ "less",
+ "mobile-first",
+ "responsive",
+ "front-end",
+ "framework",
+ "web"
+ ],
+ "homepage": "http://getbootstrap.com",
+ "author": "Twitter, Inc.",
+ "scripts": {
+ "test": "grunt test"
+ },
+ "style": "dist/css/bootstrap.css",
+ "less": "less/bootstrap.less",
+ "main": "./dist/js/npm",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/twbs/bootstrap.git"
+ },
+ "bugs": {
+ "url": "https://github.com/twbs/bootstrap/issues"
+ },
+ "license": "MIT",
+ "devDependencies": {
+ "btoa": "~1.1.2",
+ "glob": "~6.0.1",
+ "grunt": "~0.4.5",
+ "grunt-autoprefixer": "~3.0.3",
+ "grunt-contrib-clean": "~0.6.0",
+ "grunt-contrib-compress": "~0.14.0",
+ "grunt-contrib-concat": "~0.5.1",
+ "grunt-contrib-connect": "~0.11.2",
+ "grunt-contrib-copy": "~0.8.0",
+ "grunt-contrib-csslint": "~0.5.0",
+ "grunt-contrib-cssmin": "~0.14.0",
+ "grunt-contrib-htmlmin": "~0.6.0",
+ "grunt-contrib-jade": "~0.15.0",
+ "grunt-contrib-jshint": "~0.11.2",
+ "grunt-contrib-less": "~1.1.0",
+ "grunt-contrib-qunit": "~0.7.0",
+ "grunt-contrib-uglify": "~0.9.2",
+ "grunt-contrib-watch": "~0.6.1",
+ "grunt-csscomb": "~3.1.0",
+ "grunt-exec": "~0.4.6",
+ "grunt-html": "~5.0.1",
+ "grunt-jekyll": "~0.4.2",
+ "grunt-jscs": "~2.3.0",
+ "grunt-saucelabs": "~8.6.1",
+ "grunt-sed": "twbs/grunt-sed#v0.2.0",
+ "load-grunt-tasks": "~3.3.0",
+ "markdown-it": "^5.0.0",
+ "npm-shrinkwrap": "^200.4.0",
+ "time-grunt": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=0.10.1"
+ },
+ "files": [
+ "dist",
+ "fonts",
+ "grunt",
+ "js/*.js",
+ "less/**/*.less",
+ "Gruntfile.js",
+ "LICENSE"
+ ],
+ "jspm": {
+ "main": "js/bootstrap",
+ "shim": {
+ "js/bootstrap": {
+ "deps": "jquery",
+ "exports": "$"
+ }
+ },
+ "files": [
+ "css",
+ "fonts",
+ "js"
+ ]
+ }
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/.bower.json b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/.bower.json
new file mode 100644
index 0000000..22dcd63
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/.bower.json
@@ -0,0 +1,49 @@
+{
+ "name": "famfamfam-flags",
+ "version": "1.0.0",
+ "homepage": "https://github.com/legacy-icons/famfamfam-flags",
+ "description": "FamFamFam Flags icon pack",
+ "keywords": [
+ "icon",
+ "flag",
+ "img",
+ "famfamfam",
+ "png",
+ "gif"
+ ],
+ "license": "MIT",
+ "authors": [
+ "t1st3 (http://www.tiste.org/)"
+ ],
+ "main": [
+ "./dist"
+ ],
+ "ignore": [
+ "bower_components",
+ ".bowerrc",
+ "node_modules",
+ "package.json",
+ "composer.json",
+ "composer.lock",
+ ".git",
+ ".gitignore",
+ ".gitattributes",
+ "gulpfile.js",
+ ".editorconfig",
+ ".travis.yml",
+ ".npmignore",
+ "src",
+ "nuget"
+ ],
+ "dependencies": {},
+ "_release": "1.0.0",
+ "_resolution": {
+ "type": "version",
+ "tag": "1.0.0",
+ "commit": "5a4ff47f81b3518d710249498522df384ad0fa5a"
+ },
+ "_source": "https://github.com/legacy-icons/famfamfam-flags.git",
+ "_target": "^1.0.0",
+ "_originalSource": "famfamfam-flags",
+ "_direct": true
+}
\ No newline at end of file
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/CHANGELOG.md b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/CHANGELOG.md
new file mode 100644
index 0000000..38422f5
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/CHANGELOG.md
@@ -0,0 +1,146 @@
+## Change Log
+
+### 0.5.1 (2016/02/15 09:42 +00:00)
+- [37efc40](https://github.com/legacy-icons/famfamfam-flags/commit/37efc40be0563d2bb1be65e6ee6ef3a5a10e499d) chore: v0.5.1 (@t1st3)
+- [#20](https://github.com/legacy-icons/famfamfam-flags/pull/20) chore(package): update gulp-cssnano to version 2.1.1 (@t1st3)
+- [ba06931](https://github.com/legacy-icons/famfamfam-flags/commit/ba06931a869f1823368c0bd8795cc5c943776d89) chore(package): update gulp-cssnano to version 2.1.1 (@greenkeeperio-bot)
+- [#19](https://github.com/legacy-icons/famfamfam-flags/pull/19) chore(package): update gulp to version 3.9.1 (@t1st3)
+- [ebee8b3](https://github.com/legacy-icons/famfamfam-flags/commit/ebee8b3fca3d899cde7bb47fb47efd51afa6b3ab) chore(package): update gulp to version 3.9.1 (@greenkeeperio-bot)
+- [e63239d](https://github.com/legacy-icons/famfamfam-flags/commit/e63239d271ff8cafceba660c36a68dec1835efc6) docs: update REDAME structure (@t1st3)
+- [91a8b55](https://github.com/legacy-icons/famfamfam-flags/commit/91a8b55a64f188add081d67ca7f059f705c87dee) docs: update REDAME structure (@t1st3)
+- [e83179a](https://github.com/legacy-icons/famfamfam-flags/commit/e83179ac6962aa6675b30c83783ba15319bc0042) docs: update REDAME structure (@t1st3)
+- [e4725cf](https://github.com/legacy-icons/famfamfam-flags/commit/e4725cf64785faef310a2e10e08b0b8cae2e5a17) docs: explain dev-deps install for NPM 3 (@t1st3)
+- [adbaa7e](https://github.com/legacy-icons/famfamfam-flags/commit/adbaa7e42bb41a61b91c926b474172119b7a9849) chore: renamed T1st3 to t1st3 (@t1st3)
+- [b2f2dd1](https://github.com/legacy-icons/famfamfam-flags/commit/b2f2dd1006d744ef8755c30eb2529e2c36bcdfd5) chore: renamed T1st3 to t1st3 (@t1st3)
+- [7e0defd](https://github.com/legacy-icons/famfamfam-flags/commit/7e0defd471467e74478af84ceef62cbbb98fbccf) chore: travis.yml indentation (@t1st3)
+
+### 0.5.0 (2016/01/19 13:39 +00:00)
+- [6e46357](https://github.com/legacy-icons/famfamfam-flags/commit/6e46357c5047251c629712619536a0db86e0704a) chore: update changelog (@t1st3)
+- [1b856d2](https://github.com/legacy-icons/famfamfam-flags/commit/1b856d20da3c2b891130560ffc3427eecdd1384f) chore: v0.5.0 (@t1st3)
+- [323a768](https://github.com/legacy-icons/famfamfam-flags/commit/323a7686b4346ee5258b2bbad71bc7ce3f4fae0c) chore: update deps versions with caret ranges (@t1st3)
+- [c2b8b05](https://github.com/legacy-icons/famfamfam-flags/commit/c2b8b05c3bfba72d5ca8dab1e697262c0de85c17) chore: replace gulp-minify-css with gulp-cssnano (@t1st3)
+- [ececd5e](https://github.com/legacy-icons/famfamfam-flags/commit/ececd5e3a1dbaa2db3b95b4270c51b83b988157e) docs: add license docs for JE icon (@t1st3)
+- [de5d968](https://github.com/legacy-icons/famfamfam-flags/commit/de5d968c19e02b5708c0efb46cba017c9c721965) chore: add @ before Github usernames (@t1st3)
+- [b2ce7cf](https://github.com/legacy-icons/famfamfam-flags/commit/b2ce7cfbbaf20ca5450e3b9cb3f37ffb5762dca0) docs: add documentation for aliases in README (@t1st3)
+- [d6c7231](https://github.com/legacy-icons/famfamfam-flags/commit/d6c723189277ca4c0c6642e0f5af503ca8f47a6c) chore: update changelog (@t1st3)
+- [4b872e4](https://github.com/legacy-icons/famfamfam-flags/commit/4b872e43071bbace63a545be3300d6fbc775349f) chore: rebuild with new aliases (@t1st3)
+- [e067fe5](https://github.com/legacy-icons/famfamfam-flags/commit/e067fe5c3aa49aff5533478193642fd3aad3a772) fix: add aliases for RE, YT and GP to FR (@t1st3)
+- [72fb1c6](https://github.com/legacy-icons/famfamfam-flags/commit/72fb1c602a276ce39e10fa75a79f6bb07d5e21e4) fix: remove BL alias (@t1st3)
+- [b7975c8](https://github.com/legacy-icons/famfamfam-flags/commit/b7975c800a52138269d5eeabc08a6680124b0841) chore: update changelog (@t1st3)
+- [a2afcdd](https://github.com/legacy-icons/famfamfam-flags/commit/a2afcdd595120e130999fbcdc194ca3f06ebe61d) chore: remove figlets, cowsays and notifications (@t1st3)
+- [#16](https://github.com/legacy-icons/famfamfam-flags/pull/16) Add mechanism for aliases, use for `BQ`, `BL` & `MF` codes (@Rangoo94)
+- [be74af7](https://github.com/legacy-icons/famfamfam-flags/commit/be74af77b06f289093c9f553d0bd80b956ad1520) Add mechanism for aliases, use for `BQ`, `BL` & `MF` codes (@Rangoo94)
+- [#12](https://github.com/legacy-icons/famfamfam-flags/pull/12) Rename Jersey flag from `jersey` to `je` (@Rangoo94)
+- [50e0d97](https://github.com/legacy-icons/famfamfam-flags/commit/50e0d9743cd0aee569abf033756e918f84b51136) docs: add lucas34 in License for Myanmar flag (@t1st3)
+- [#11](https://github.com/legacy-icons/famfamfam-flags/pull/11) Add information about ImageMagick as dependency (@Rangoo94)
+- [d5e68f5](https://github.com/legacy-icons/famfamfam-flags/commit/d5e68f5dd2d44f4cf7d8d303731282b9098bd046) Rename Jersey flag from `jersey` to `je` (@Rangoo94)
+- [feb1182](https://github.com/legacy-icons/famfamfam-flags/commit/feb1182c625a4e5751c2fca1002f15c52e739f3b) Add information about ImageMagick as dependency (@Rangoo94)
+- [195cacf](https://github.com/legacy-icons/famfamfam-flags/commit/195cacf0b406841c465d7ed14d92229c054b2834) chore: add newline at end of config and .md files (@t1st3)
+- [439a811](https://github.com/legacy-icons/famfamfam-flags/commit/439a8119669048fa04692d0d2f28bab28ebdafdf) docs: move licenses from README to LICENSE.md (@t1st3)
+- [#7](https://github.com/legacy-icons/famfamfam-flags/pull/7) chore(package): update gulp-minify-css to version 1.2.3 (@T1st3)
+- [144935d](https://github.com/legacy-icons/famfamfam-flags/commit/144935d3845baa3dec0e2c84f75e02af48368ea3) docs: add CHANGELOG.md (@t1st3)
+- [529b03b](https://github.com/legacy-icons/famfamfam-flags/commit/529b03bec32a7916ae819c812dd7b40cd2ba83e7) chore(package): update gulp-minify-css to version 1.2.3 (@greenkeeperio-bot)
+
+### 0.4.1 (2015/12/22 13:03 +00:00)
+- [acd82de](https://github.com/legacy-icons/famfamfam-flags/commit/acd82de268068bbf932d62459125e201d1f8c873) chore: v0.4.1 (@t1st3)
+- [854cb96](https://github.com/legacy-icons/famfamfam-flags/commit/854cb96fab33a50fa59c146c29e34289a59670b9) feat: add MyGet deployment files and support for NuGet (@t1st3)
+- [#6](https://github.com/legacy-icons/famfamfam-flags/pull/6) Update all dependencies 🌴 (@T1st3)
+- [565d94d](https://github.com/legacy-icons/famfamfam-flags/commit/565d94d245ffeff9bc62a8be0e3eb2deca5f775f) chore(package): update dependencies (@greenkeeperio-bot)
+- [ad56ea1](https://github.com/legacy-icons/famfamfam-flags/commit/ad56ea1aecbd6499b1be71d20690021869c674b0) chore: fix build task (@t1st3)
+
+### 0.4.0 (2015/10/20 11:04 +00:00)
+- [f686b9c](https://github.com/legacy-icons/famfamfam-flags/commit/f686b9c7a3f6d8be6b29385257a073a4613f4bf1) chore: v0.4.0 (@t1st3)
+- [37783a2](https://github.com/legacy-icons/famfamfam-flags/commit/37783a264c74974cf76d3d140387c286976bffbe) feat: add jersey.png (@t1st3)
+- [10037bc](https://github.com/legacy-icons/famfamfam-flags/commit/10037bc550d3ba9ed3ce69cc39a39d88df3163f0) chore: update NPM deps (del) (@t1st3)
+- [0f69eb4](https://github.com/legacy-icons/famfamfam-flags/commit/0f69eb41127e0840b06d2f4b8f70bfb636834d64) chore: update.travis.yml to use Travis container-based infra (@t1st3)
+- [fd8d78f](https://github.com/legacy-icons/famfamfam-flags/commit/fd8d78fae3fca628c913a95a1bceb5dead85e3aa) docs: fix wrong links from previous commit (@t1st3)
+- [5f818f5](https://github.com/legacy-icons/famfamfam-flags/commit/5f818f5938756ce6f35769475a8a9b34af09c459) docs: update README (@t1st3)
+
+### 0.3.5 (2015/08/17 13:30 +00:00)
+- [223e6d8](https://github.com/legacy-icons/famfamfam-flags/commit/223e6d81cd29bf9cc2ea63a65b8e6a6ac5e11762) chore: v0.3.5 (@t1st3)
+- [d282c71](https://github.com/legacy-icons/famfamfam-flags/commit/d282c71f81535c67e2034fa58b30fd107a1c60ae) fix: update mm flag (Myanmar) (@t1st3)
+- [#3](https://github.com/legacy-icons/famfamfam-flags/pull/3) Fix Myanmar flag (@lucas34)
+- [2fc45e2](https://github.com/legacy-icons/famfamfam-flags/commit/2fc45e2a7791571a9537a25e0174490ce1f4f592) Fix Myanmar flag (@lucas34)
+
+### 0.3.4 (2015/07/28 00:53 +00:00)
+- [668fbbf](https://github.com/legacy-icons/famfamfam-flags/commit/668fbbf90ffa7d3775652b3e1042211045695525) chore: v0.3.4 (@t1st3)
+- [a293305](https://github.com/legacy-icons/famfamfam-flags/commit/a293305f30e19a86f884ac428f0a5c9f85010089) chore: update npm deps (@t1st3)
+- [d5d5e80](https://github.com/legacy-icons/famfamfam-flags/commit/d5d5e8074184362e73e21aad6530510f6ac6b7e0) chore: update npm dev-deps (@t1st3)
+- [99c6db7](https://github.com/legacy-icons/famfamfam-flags/commit/99c6db718ee8a4c0866bd1258f8058066816b68b) docs: update README (@t1st3)
+- [9a376ba](https://github.com/legacy-icons/famfamfam-flags/commit/9a376ba010a53dd2782c495beb2d459cd222d9c7) docs: update README (@t1st3)
+- [f4460f3](https://github.com/legacy-icons/famfamfam-flags/commit/f4460f3aac00003602ffbf50362a62fda268c0f4) docs: update README (@t1st3)
+- [b817d0e](https://github.com/legacy-icons/famfamfam-flags/commit/b817d0e5a4f38e1c00f3c69bdd473b9e2b88b25c) docs: update README (@t1st3)
+- [0828d06](https://github.com/legacy-icons/famfamfam-flags/commit/0828d067906a88f5864de8384e0bc5ea8b3e5ba3) docs: fix Silk-Companion URL in README (@t1st3)
+- [d898f82](https://github.com/legacy-icons/famfamfam-flags/commit/d898f8207143842c8342e7c94c9329beb6fb7b84) docs: fix Silk-Companion URL in README (@t1st3)
+- [fc7c9c7](https://github.com/legacy-icons/famfamfam-flags/commit/fc7c9c7fc197cdd880de6929b247fd0db6c563ae) chore: update bower ignores (@t1st3)
+
+### 0.3.3 (2015/03/22 15:04 +00:00)
+- [d0a195c](https://github.com/legacy-icons/famfamfam-flags/commit/d0a195c11ef11ea9db336db1c0a8771273965f93) chore: v0.3.3 (@t1st3)
+- [6a674a6](https://github.com/legacy-icons/famfamfam-flags/commit/6a674a61d801ed0f9858cc0ae6fb19e7d933f47b) docs: include spritesheet to README (@t1st3)
+- [a7cd08c](https://github.com/legacy-icons/famfamfam-flags/commit/a7cd08c2bc8c839eb8631a599b9c5eb2e1a92e41) feat: add gg flag, from Silk Companion (@t1st3)
+- [be4ca90](https://github.com/legacy-icons/famfamfam-flags/commit/be4ca908a096597bfedf6ec6dbc842f50c3140d9) docs: add build badge in README (@t1st3)
+- [5e488d3](https://github.com/legacy-icons/famfamfam-flags/commit/5e488d3a4a17292926b40e478655c326fa64553b) docs: add dependency badge in README (@t1st3)
+
+### 0.3.2 (2015/03/19 16:23 +00:00)
+- [a07266a](https://github.com/legacy-icons/famfamfam-flags/commit/a07266afe668343b1aec5f01708d88e897a64555) chore: v0.3.2 (@t1st3)
+- [bed4c6e](https://github.com/legacy-icons/famfamfam-flags/commit/bed4c6e8d42fead2e21b3c385d5203638ad2e331) docs: update mention to spritesheets in README (@t1st3)
+- [1f01166](https://github.com/legacy-icons/famfamfam-flags/commit/1f011662428a0fa9ed09863fdab3f582f71a2a59) docs: update mention to spritesheets in README (@t1st3)
+- [95f448e](https://github.com/legacy-icons/famfamfam-flags/commit/95f448e7f3f8296fc002556168dccce8d4dcd248) docs: update mention to spritesheets in README (@t1st3)
+- [3343f3a](https://github.com/legacy-icons/famfamfam-flags/commit/3343f3af7a6f6da3970e63200a46afd2c9111637) docs: add mention to spritesheet in README (@t1st3)
+
+### 0.3.1 (2015/03/18 17:51 +00:00)
+- [a5ac872](https://github.com/legacy-icons/famfamfam-flags/commit/a5ac872b959189dbe1feb2ce928fd021f46692c9) chore: v0.3.1 (@t1st3)
+- [c815ede](https://github.com/legacy-icons/famfamfam-flags/commit/c815ede2c181923f847bb042e8417717ab111c5e) fix: update travis.yml to fix CI error (@t1st3)
+
+### 0.3.0 (2015/03/18 16:39 +00:00)
+- [48dd346](https://github.com/legacy-icons/famfamfam-flags/commit/48dd3461211d49a1634c1367e4c15fb46731daeb) chore: v0.3.0 (@t1st3)
+- [e5187ac](https://github.com/legacy-icons/famfamfam-flags/commit/e5187ac8a3a2d62b5638f8c34e9e9e37ce83f02d) feat: build with imagemin, add spritesheet (@t1st3)
+- [3f185e1](https://github.com/legacy-icons/famfamfam-flags/commit/3f185e14f4c8241eb1d53f4167f7d39f300742b8) chore: add imagemin and spritesheet as dev deps (@t1st3)
+- [e53d76d](https://github.com/legacy-icons/famfamfam-flags/commit/e53d76db2bc72cf5216704e5dfe7fd7c588e093a) chore: add icons to README (@t1st3)
+- [0505d10](https://github.com/legacy-icons/famfamfam-flags/commit/0505d10380a9897c07a5c5cbd97646f450c2c233) chore: add icons to README (@t1st3)
+- [81df1a4](https://github.com/legacy-icons/famfamfam-flags/commit/81df1a40865a22993c742a4498218821d41328e4) chore: add icons to README (@t1st3)
+- [762f1f0](https://github.com/legacy-icons/famfamfam-flags/commit/762f1f0049566403c4453bb167b1bf4c6ac94232) chore: add icons to README (@t1st3)
+- [d089ed6](https://github.com/legacy-icons/famfamfam-flags/commit/d089ed6e5ce2f6eddacdb5b90d9d6add910a33b7) chore: add icons to README (@t1st3)
+- [17f4d12](https://github.com/legacy-icons/famfamfam-flags/commit/17f4d121901f3f2e47e263429be26aff8906c152) feat: add NPM deps and a 1st gulp task: gulp info (@t1st3)
+- [1af7abc](https://github.com/legacy-icons/famfamfam-flags/commit/1af7abc00030e7c92e49fb2c9f1ea136f815ebb0) chore: update .npmignore to exclude composer files (@t1st3)
+
+### 0.2.4 (2015/03/10 21:40 +00:00)
+- [ca959d7](https://github.com/legacy-icons/famfamfam-flags/commit/ca959d7fd51da851c6bf266e94bee164ae2ce400) chore: v0.2.4 (@t1st3)
+- [e69d3f7](https://github.com/legacy-icons/famfamfam-flags/commit/e69d3f7470d5143e67fe7287b8acd6007b157917) chore: update package.json files (@t1st3)
+
+### 0.2.3 (2015/03/10 21:18 +00:00)
+- [1d80637](https://github.com/legacy-icons/famfamfam-flags/commit/1d80637f6191ecbedb5142cfac6727504f8c9832) chore: v0.2.3 (@t1st3)
+- [c11ed44](https://github.com/legacy-icons/famfamfam-flags/commit/c11ed4446bed139620a51f9efdcf03bb58908734) chore: update package.json files (@t1st3)
+- [02a769e](https://github.com/legacy-icons/famfamfam-flags/commit/02a769eacb7d1c4f4fa7361a8d6f5ffff816eb72) chore: update package.json files (@t1st3)
+- [8baa44f](https://github.com/legacy-icons/famfamfam-flags/commit/8baa44f326f96a150a0228d43b25e10575f9c6aa) chore: update package.json files (@t1st3)
+- [435a3fe](https://github.com/legacy-icons/famfamfam-flags/commit/435a3fe2077bee4887a2eaae3338b349c2d16caa) chore: update bower.json ignores (@t1st3)
+
+### 0.2.2 (2015/03/10 06:45 +00:00)
+- [5e38b80](https://github.com/legacy-icons/famfamfam-flags/commit/5e38b80390e44c194cb103a92c0e275e8d96f959) chore: v0.2.2 (@t1st3)
+- [1b16fd9](https://github.com/legacy-icons/famfamfam-flags/commit/1b16fd9f79802c6940202a26ac97473698a7f9e6) feat: add auto-deploy on Travis (@t1st3)
+
+### 0.2.1 (2015/03/10 01:58 +00:00)
+- [cf1cfa7](https://github.com/legacy-icons/famfamfam-flags/commit/cf1cfa71cd533b62dc90e0168fba09d893b3a884) chore: v0.2.1 (@t1st3)
+- [8973495](https://github.com/legacy-icons/famfamfam-flags/commit/8973495d7dd03dd7481ab305d31f09f8d627f9be) fix: remove version from composer.json (@t1st3)
+- [0aa8f21](https://github.com/legacy-icons/famfamfam-flags/commit/0aa8f217d83f390e76893bad30abc38573d4bad6) fix: edit package name in README (@t1st3)
+
+### 0.2.0 (2015/03/10 01:50 +00:00)
+- [3b4dd34](https://github.com/legacy-icons/famfamfam-flags/commit/3b4dd34598bc620f266d7f409479b342100bae83) chore: change owner from kwipi to t1st3; bump to v0.2.0 (@t1st3)
+- [#1](https://github.com/legacy-icons/famfamfam-flags/pull/1) Added composer "component" syntax (@tagme)
+- [6ab6a93](https://github.com/legacy-icons/famfamfam-flags/commit/6ab6a9309417824da9b2139a5d6668d1f5a5e0f8) Version information is not needed for composer/packagist to work. Using tags instead (@vworldat)
+- [19ba451](https://github.com/legacy-icons/famfamfam-flags/commit/19ba451d11f945336ae609e5ac33e42bedad9bfd) Added composer "component" syntax (@vworldat)
+
+### 0.1.1 (2014/02/27 21:42 +00:00)
+- [bea3a8c](https://github.com/legacy-icons/famfamfam-flags/commit/bea3a8cefad5062b59d59f0603f37366ecbd032d) Bump to 0.1.1 (@t1st3)
+- [e556b09](https://github.com/legacy-icons/famfamfam-flags/commit/e556b0959d7b2a5db37bded2299dfa0459e174b1) bump to 0.1.1 (@jonrandoem)
+- [c11959d](https://github.com/legacy-icons/famfamfam-flags/commit/c11959def0f7399898bdcb8b959b51db2e99cdca) Update readme (@jonrandoem)
+- [c00e061](https://github.com/legacy-icons/famfamfam-flags/commit/c00e061f30c9d4d4ee17924a7b529b413dbfe3bb) Add composer.json (@jonrandoem)
+- [acc4f83](https://github.com/legacy-icons/famfamfam-flags/commit/acc4f83383b59204cc4f66bd9212179a86f6c845) Update README (@t1st3)
+- [182b3b8](https://github.com/legacy-icons/famfamfam-flags/commit/182b3b827d043459a2ea712ea55c29cf33a6d0ba) Update README (@t1st3)
+- [832d8b6](https://github.com/legacy-icons/famfamfam-flags/commit/832d8b66c7f529653750512795536c322d470d4c) Add bower.json (@t1st3)
+- [6bd6976](https://github.com/legacy-icons/famfamfam-flags/commit/6bd697627e6fa8cd1b27bc1029e4eabb51c6806f) Add bowerrc (@t1st3)
+- [1898009](https://github.com/legacy-icons/famfamfam-flags/commit/1898009583b4370abae82ac558b44878a53b4920) Add .gitignore (@t1st3)
+- [17501cd](https://github.com/legacy-icons/famfamfam-flags/commit/17501cdd185cb4c3851993339c08f579c3823bd8) Add package.json (@t1st3)
+- [ddbc530](https://github.com/legacy-icons/famfamfam-flags/commit/ddbc530fe377318a844fd63762d69dbd009a31b6) Add README (@t1st3)
+- [3a57e23](https://github.com/legacy-icons/famfamfam-flags/commit/3a57e234df13b4ddecb579bacf83d9501da877ad) Add icons (@t1st3)
+- [d80056d](https://github.com/legacy-icons/famfamfam-flags/commit/d80056da422b5117065fe3a4c8443062875c6548) Initial commit (@t1st3)
\ No newline at end of file
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/LICENSE.md b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/LICENSE.md
new file mode 100644
index 0000000..27c6f12
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/LICENSE.md
@@ -0,0 +1,83 @@
+
+License of original icon set
+----------
+
+Flag icons - [http://www.famfamfam.com](http://www.famfamfam.com)
+
+These icons are public domain, and as such are free for any use (attribution appreciated but not required).
+
+Note that these flags are named using the ISO3166-1 alpha-2 country codes where appropriate.
+A list of codes can be found at [http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
+
+If you find these icons useful, please donate via paypal to mjames@gmail.com
+(or click the donate button available at [http://www.famfamfam.com/lab/icons/silk](http://www.famfamfam.com/lab/icons/silk))
+
+Contact: mjames@gmail.com
+
+
+
+License for the `gg` add-on icon
+----------
+
+Silk companion icon set #1 - "More Silk!"
+Last updated: 19 November 2007
+
+_________________________________________
+Damien Guard (@damieng)
+http://damieng.com/creative/icons/silk-companion-1-icons
+_________________________________________
+
+This work is licensed under a
+Creative Commons Attribution 2.5 License.
+[ http://creativecommons.org/licenses/by/2.5/ ]
+
+The FamFamFam Silk icon set is a very large,
+consistent set of well-drawn icons that has
+proven to be popular with both applications
+and web sites.
+
+On a number of occasions I have found myself
+wanting more icons in the same style. This
+companion set represents what I needed but also
+what I felt like adding.
+
+Some are new icons in the same style, some are
+alternative sizes/colours of the existing icons
+and some are new compositions of the elements.
+
+Any questions about this companion set please
+contact damieng@gmail.com.
+
+
+License for the `mm` (Myanmar) add-on icon
+----------
+
+Suggested by [@lucas34](https://github.com/lucas34).
+
+[https://commons.wikimedia.org/wiki/File:Flag_of_Myanmar-new.jpg](Original flag license):
+
+The copyright holder of this work allows anyone to use it for any purpose including unrestricted redistribution, commercial use, and modification.
+
+
+License for the `je` (Jersey) add-on icon
+----------
+
+Suggested by [@ryankane](https://github.com/ryankane).
+
+[http://en.wikipedia.org/wiki/File:Flag_of_Jersey.svg](Original flag license):
+
+The copyright holder grants anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.
+
+
+The icon modified by Drew Noakes [@drewnoakes](https://github.com/drewnoakes) before submitting:
+
+See [discussion](https://code.google.com/p/famfamfam/issues/detail?id=1).
+
+
+About the rest (all this repository but the icons)
+----------
+
+All the content of this repository (excepted the icon pack)
+is licensed under the [MIT license](http://opensource.org/licenses/MIT).
+
+Though, it is just composed a few trivial json files and a Readme.
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/README.md b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/README.md
new file mode 100644
index 0000000..2dae6d7
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/README.md
@@ -0,0 +1,128 @@
+
+# famfamfam-flags
+
+[![NPM version](https://img.shields.io/npm/v/famfamfam-flags.svg)](https://www.npmjs.org/package/famfamfam-flags)
+[![Bower version](https://img.shields.io/bower/v/famfamfam-flags.svg)](http://bower.io/search/?q=famfamfam-flags)
+[![Packagist version](https://img.shields.io/packagist/v/legacy-icons/famfamfam-flags.svg)](https://packagist.org/packages/legacy-icons/famfamfam-flags)
+[![Nuget version](https://img.shields.io/nuget/v/famfamfam-flags.svg)](https://www.nuget.org/packages/famfamfam-flags/)
+
+[![Dependency Status](https://img.shields.io/david/dev/legacy-icons/famfamfam-flags.svg)](https://david-dm.org/legacy-icons/famfamfam-flags)
+[![Build Status](https://img.shields.io/travis/legacy-icons/famfamfam-flags.svg)](https://travis-ci.org/legacy-icons/famfamfam-flags)
+
+
+
+## About
+
+The `Flags` icon pack, as available on [famfamfam website](http://www.famfamfam.com/lab/icons/flags/).
+
+All credits for these icons go to their original author: Mark James (mjames@gmail.com)
+
+The aim of this project is to make this icon pack available through various package managers, such as:
+
+- [NPM](https://npmjs.org)
+- [Bower](http://bower.io)
+- [Packagist](https://packagist.org)
+- [NuGet](https://www.nuget.org)
+
+
+All icons are supplied in both PNG and GIF formats.
+
+
+## Extensions and updates
+
+A flag has been added to the original package: `gg.png` (or `gg.gif`).
+This flag was created by [Damien Guard (@damieng)](https://github.com/damieng) (damieng@gmail.com), in the "add-on" package for FamFamFam icons named [Silk Companion](http://damieng.com/creative/icons/silk-companion-1-icons).
+
+
+The flag for Myanmar has been updated: `mm.png` (or `mm.gif`).
+This flag was updated by [@Lucas](https://github.com/lucas34), and was created from [Wikipedia](https://commons.wikimedia.org/wiki/File:Flag_of_Myanmar-new.jpg).
+
+
+The project now supports aliases in CSS spritesheets (see below). The feature was brought by [@Rangoo94](https://github.com/Rangoo94). For example, `RE` ([Reunion](https://en.wikipedia.org/wiki/.re)) is an alias for `FR` ([France](https://en.wikipedia.org/wiki/.fr)), since Reunion shares the same flag as France. To see the aliases, please check the [aliases.json file](https://github.com/legacy-icons/famfamfam-flags/blob/master/aliases.json).
+
+
+## CSS spritesheets
+
+You can insert the icons directly into your HTML with a common IMG tag:
+
+```html
+
+```
+
+
+In addition to the icons by themselves, this project also ships a CSS spritesheet for the icon-pack. This spritesheet allows to load the entire icon-pack in just 1 image, and thus reduce HTTP calls.
+
+This is what it actually looks:
+
+![Spritesheet](https://raw.githubusercontent.com/legacy-icons/famfamfam-flags/master/dist/sprite/famfamfam-flags.png)
+
+
+All the positioning of the icons inside this alone image is made through CSS, which allows you to just add block-type tags with the proper class and get the same result:
+
+```html
+
+```
+
+Just remember to add the CSS stylesheet to the HEAD of your HTML page!
+
+## Install
+
+### NPM
+
+> npm install famfamfam-flags
+
+
+### Bower
+
+> bower install famfamfam-flags
+
+
+### Composer / Packagist
+
+> composer require legacy-icons/famfamfam-flags
+
+
+### NuGet
+
+> Install-Package famfamfam-flags
+
+
+
+## Build the whole project or your custom project
+
+We use [Gulp](http://gulpjs.com/) to build the project, so if you want to re-build or customize this project, you'll need Gulp.
+
+After gulp is installed, and your CLI is pointed to your work directory, first install the dependencies:
+
+**with NPM 2.x.x**
+
+> npm install
+
+**with NPM 3.x.x** (resolve dependencies for `node-spritesheet` before this module's ones)
+
+> npm install grunt grunt-contrib-coffee grunt-contrib-clean
+
+> npm install
+
+then be sure that you have *[ImageMagick](http://www.imagemagick.org/script/binary-releases.php)* installed for building spritesheet.
+
+then, you can run the `gulp build` task to build the project:
+
+> gulp build
+
+
+### What the build task does?
+
+First, it takes PNG and GIF files from the `src` folder, and tidies them to the `dist` folder.
+
+Then it creates a spritesheet from the PNG images located in the `src` folder, and thus creates the `sprite` folder in `dist`.
+
+If, for example you just want `fr` and `gg` icons in a spritesheet, you just have to fork this project, point your CLI to the working directory,
+empty the `src` directory, except `fr` and `gg` icons in PNG format, and then run the `gulp build` task.
+
+You'll get the proper spritesheet and copies of the icons directly in the `dist` folder.
+
+
+## License
+
+See [License](https://github.com/legacy-icons/famfamfam-flags/blob/master/LICENSE.md)
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/aliases.json b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/aliases.json
new file mode 100644
index 0000000..04d5236
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/aliases.json
@@ -0,0 +1,11 @@
+{
+ "fr": [
+ "gp",
+ "mf",
+ "re",
+ "yt"
+ ],
+ "nl": [
+ "bq"
+ ]
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/bower.json b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/bower.json
new file mode 100644
index 0000000..5d4b6e8
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/bower.json
@@ -0,0 +1,39 @@
+{
+ "name": "famfamfam-flags",
+ "version": "1.0.0",
+ "homepage": "https://github.com/legacy-icons/famfamfam-flags",
+ "description": "FamFamFam Flags icon pack",
+ "keywords": [
+ "icon",
+ "flag",
+ "img",
+ "famfamfam",
+ "png",
+ "gif"
+ ],
+ "license": "MIT",
+ "authors": [
+ "t1st3 (http://www.tiste.org/)"
+ ],
+ "main": [
+ "./dist"
+ ],
+ "ignore": [
+ "bower_components",
+ ".bowerrc",
+ "node_modules",
+ "package.json",
+ "composer.json",
+ "composer.lock",
+ ".git",
+ ".gitignore",
+ ".gitattributes",
+ "gulpfile.js",
+ ".editorconfig",
+ ".travis.yml",
+ ".npmignore",
+ "src",
+ "nuget"
+ ],
+ "dependencies": {}
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ad.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ad.gif
new file mode 100644
index 0000000..8c9c8a2
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ad.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ae.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ae.gif
new file mode 100644
index 0000000..2dbd597
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ae.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/af.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/af.gif
new file mode 100644
index 0000000..a5ecb6b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/af.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ag.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ag.gif
new file mode 100644
index 0000000..57d0e91
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ag.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ai.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ai.gif
new file mode 100644
index 0000000..4e25778
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ai.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/al.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/al.gif
new file mode 100644
index 0000000..5e481da
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/al.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/am.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/am.gif
new file mode 100644
index 0000000..9fdf57a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/am.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/an.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/an.gif
new file mode 100644
index 0000000..e47b6be
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/an.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ao.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ao.gif
new file mode 100644
index 0000000..a0310fe
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ao.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ar.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ar.gif
new file mode 100644
index 0000000..c059073
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ar.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/as.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/as.gif
new file mode 100644
index 0000000..2ecd855
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/as.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/at.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/at.gif
new file mode 100644
index 0000000..c853c4e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/at.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/au.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/au.gif
new file mode 100644
index 0000000..fe12b65
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/au.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/aw.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/aw.gif
new file mode 100644
index 0000000..2b323c1
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/aw.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ax.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ax.gif
new file mode 100644
index 0000000..dee87fa
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ax.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/az.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/az.gif
new file mode 100644
index 0000000..7e51f06
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/az.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ba.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ba.gif
new file mode 100644
index 0000000..709872c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ba.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bb.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bb.gif
new file mode 100644
index 0000000..49f4b6c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bb.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bd.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bd.gif
new file mode 100644
index 0000000..abbf8ac
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bd.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/be.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/be.gif
new file mode 100644
index 0000000..b0ac551
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/be.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bf.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bf.gif
new file mode 100644
index 0000000..732652e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bf.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bg.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bg.gif
new file mode 100644
index 0000000..643aff5
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bg.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bh.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bh.gif
new file mode 100644
index 0000000..12c72d7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bh.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bi.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bi.gif
new file mode 100644
index 0000000..be6f965
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bi.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bj.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bj.gif
new file mode 100644
index 0000000..045d9aa
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bj.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bm.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bm.gif
new file mode 100644
index 0000000..129c847
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bm.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bn.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bn.gif
new file mode 100644
index 0000000..463e090
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bn.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bo.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bo.gif
new file mode 100644
index 0000000..416df63
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bo.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/br.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/br.gif
new file mode 100644
index 0000000..e3e953b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/br.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bs.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bs.gif
new file mode 100644
index 0000000..fcbb908
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bs.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bt.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bt.gif
new file mode 100644
index 0000000..c64e236
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bt.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bv.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bv.gif
new file mode 100644
index 0000000..2e5bb13
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bv.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bw.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bw.gif
new file mode 100644
index 0000000..361a059
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bw.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/by.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/by.gif
new file mode 100644
index 0000000..9934229
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/by.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bz.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bz.gif
new file mode 100644
index 0000000..ce2e503
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/bz.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ca.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ca.gif
new file mode 100644
index 0000000..0cb2cc1
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ca.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/catalonia.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/catalonia.gif
new file mode 100644
index 0000000..e31b342
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/catalonia.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cc.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cc.gif
new file mode 100644
index 0000000..597a02c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cc.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cd.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cd.gif
new file mode 100644
index 0000000..aee403c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cd.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cf.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cf.gif
new file mode 100644
index 0000000..1cc8fc5
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cf.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cg.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cg.gif
new file mode 100644
index 0000000..06f4437
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cg.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ch.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ch.gif
new file mode 100644
index 0000000..3693ccd
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ch.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ci.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ci.gif
new file mode 100644
index 0000000..3a6b22b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ci.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ck.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ck.gif
new file mode 100644
index 0000000..f66d218
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ck.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cl.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cl.gif
new file mode 100644
index 0000000..c7bbbd7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cl.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cm.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cm.gif
new file mode 100644
index 0000000..d9d6431
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cm.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cn.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cn.gif
new file mode 100644
index 0000000..ad7d60c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cn.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/co.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/co.gif
new file mode 100644
index 0000000..a8e06c3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/co.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cr.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cr.gif
new file mode 100644
index 0000000..bd0b958
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cr.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cs.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cs.gif
new file mode 100644
index 0000000..a29d579
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cs.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cu.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cu.gif
new file mode 100644
index 0000000..5084bb8
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cu.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cv.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cv.gif
new file mode 100644
index 0000000..d7d136a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cv.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cx.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cx.gif
new file mode 100644
index 0000000..29a64af
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cx.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cy.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cy.gif
new file mode 100644
index 0000000..f5f68d9
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cy.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cz.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cz.gif
new file mode 100644
index 0000000..8e4eae1
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/cz.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/de.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/de.gif
new file mode 100644
index 0000000..f2b9bd9
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/de.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/dj.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/dj.gif
new file mode 100644
index 0000000..4cb73a6
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/dj.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/dk.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/dk.gif
new file mode 100644
index 0000000..1744bde
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/dk.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/dm.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/dm.gif
new file mode 100644
index 0000000..9f132af
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/dm.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/do.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/do.gif
new file mode 100644
index 0000000..7a590ce
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/do.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/dz.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/dz.gif
new file mode 100644
index 0000000..bb16366
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/dz.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ec.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ec.gif
new file mode 100644
index 0000000..dbe9fa4
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ec.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ee.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ee.gif
new file mode 100644
index 0000000..483a1cd
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ee.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/eg.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/eg.gif
new file mode 100644
index 0000000..dbd31f9
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/eg.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/eh.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/eh.gif
new file mode 100644
index 0000000..06ca66e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/eh.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/england.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/england.gif
new file mode 100644
index 0000000..1aaa85e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/england.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/er.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/er.gif
new file mode 100644
index 0000000..348299f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/er.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/es.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/es.gif
new file mode 100644
index 0000000..d55be2d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/es.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/et.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/et.gif
new file mode 100644
index 0000000..abfbc64
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/et.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/europeanunion.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/europeanunion.gif
new file mode 100644
index 0000000..e3b0afd
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/europeanunion.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fam.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fam.gif
new file mode 100644
index 0000000..3f6180e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fam.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fi.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fi.gif
new file mode 100644
index 0000000..fd97ba0
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fi.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fj.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fj.gif
new file mode 100644
index 0000000..de4ce2d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fj.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fk.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fk.gif
new file mode 100644
index 0000000..d528833
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fk.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fm.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fm.gif
new file mode 100644
index 0000000..f15a9d7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fm.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fo.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fo.gif
new file mode 100644
index 0000000..02296af
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fo.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fr.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fr.gif
new file mode 100644
index 0000000..dbd3c5b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/fr.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ga.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ga.gif
new file mode 100644
index 0000000..81dd3e8
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ga.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gb.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gb.gif
new file mode 100644
index 0000000..0c3c4ca
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gb.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gd.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gd.gif
new file mode 100644
index 0000000..9722277
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gd.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ge.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ge.gif
new file mode 100644
index 0000000..0bd3eb2
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ge.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gf.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gf.gif
new file mode 100644
index 0000000..dbd3c5b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gf.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gg.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gg.gif
new file mode 100644
index 0000000..5596bba
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gg.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gh.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gh.gif
new file mode 100644
index 0000000..dc47f43
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gh.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gi.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gi.gif
new file mode 100644
index 0000000..c15c1c7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gi.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gl.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gl.gif
new file mode 100644
index 0000000..40d45d6
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gl.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gm.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gm.gif
new file mode 100644
index 0000000..d7a4098
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gm.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gn.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gn.gif
new file mode 100644
index 0000000..1ebceec
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gn.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gp.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gp.gif
new file mode 100644
index 0000000..098ec4e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gp.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gq.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gq.gif
new file mode 100644
index 0000000..1cae26c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gq.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gr.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gr.gif
new file mode 100644
index 0000000..fb28097
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gr.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gs.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gs.gif
new file mode 100644
index 0000000..d1ea4a5
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gs.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gt.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gt.gif
new file mode 100644
index 0000000..2ec5040
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gt.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gu.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gu.gif
new file mode 100644
index 0000000..29d7530
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gu.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gw.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gw.gif
new file mode 100644
index 0000000..c8d6e07
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gw.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gy.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gy.gif
new file mode 100644
index 0000000..d4b3047
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/gy.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hk.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hk.gif
new file mode 100644
index 0000000..60a75d1
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hk.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hm.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hm.gif
new file mode 100644
index 0000000..fe12b65
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hm.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hn.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hn.gif
new file mode 100644
index 0000000..ce3e996
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hn.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hr.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hr.gif
new file mode 100644
index 0000000..0a602e1
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hr.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ht.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ht.gif
new file mode 100644
index 0000000..d228b71
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ht.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hu.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hu.gif
new file mode 100644
index 0000000..6e44429
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/hu.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/id.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/id.gif
new file mode 100644
index 0000000..1550364
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/id.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ie.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ie.gif
new file mode 100644
index 0000000..069f53e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ie.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/il.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/il.gif
new file mode 100644
index 0000000..1e716c4
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/il.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/in.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/in.gif
new file mode 100644
index 0000000..80eba52
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/in.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/io.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/io.gif
new file mode 100644
index 0000000..17bc5df
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/io.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/iq.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/iq.gif
new file mode 100644
index 0000000..d20d188
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/iq.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ir.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ir.gif
new file mode 100644
index 0000000..5b387ec
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ir.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/is.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/is.gif
new file mode 100644
index 0000000..6b79834
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/is.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/it.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/it.gif
new file mode 100644
index 0000000..dec3910
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/it.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/je.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/je.gif
new file mode 100644
index 0000000..5b6f2c9
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/je.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/jm.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/jm.gif
new file mode 100644
index 0000000..731d8ce
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/jm.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/jo.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/jo.gif
new file mode 100644
index 0000000..f2e5cff
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/jo.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/jp.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/jp.gif
new file mode 100644
index 0000000..4fc7ac5
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/jp.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ke.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ke.gif
new file mode 100644
index 0000000..e8cc318
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ke.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kg.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kg.gif
new file mode 100644
index 0000000..801ae6f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kg.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kh.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kh.gif
new file mode 100644
index 0000000..8959efa
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kh.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ki.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ki.gif
new file mode 100644
index 0000000..4467120
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ki.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/km.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/km.gif
new file mode 100644
index 0000000..754a85a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/km.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kn.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kn.gif
new file mode 100644
index 0000000..b6105f8
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kn.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kp.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kp.gif
new file mode 100644
index 0000000..7d2213a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kp.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kr.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kr.gif
new file mode 100644
index 0000000..3a26ab7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kr.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kw.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kw.gif
new file mode 100644
index 0000000..4731079
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kw.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ky.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ky.gif
new file mode 100644
index 0000000..60a1b8e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ky.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kz.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kz.gif
new file mode 100644
index 0000000..75db2d2
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/kz.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/la.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/la.gif
new file mode 100644
index 0000000..4e71310
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/la.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lb.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lb.gif
new file mode 100644
index 0000000..b2c1bec
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lb.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lc.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lc.gif
new file mode 100644
index 0000000..6cd2e9d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lc.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/li.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/li.gif
new file mode 100644
index 0000000..865a25a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/li.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lk.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lk.gif
new file mode 100644
index 0000000..083fe76
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lk.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lr.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lr.gif
new file mode 100644
index 0000000..45be539
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lr.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ls.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ls.gif
new file mode 100644
index 0000000..0c21ea0
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ls.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lt.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lt.gif
new file mode 100644
index 0000000..f5125f1
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lt.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lu.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lu.gif
new file mode 100644
index 0000000..dd19226
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lu.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lv.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lv.gif
new file mode 100644
index 0000000..3dc682d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/lv.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ly.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ly.gif
new file mode 100644
index 0000000..481977c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ly.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ma.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ma.gif
new file mode 100644
index 0000000..54e074b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ma.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mc.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mc.gif
new file mode 100644
index 0000000..b8f859b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mc.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/md.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/md.gif
new file mode 100644
index 0000000..e2901ed
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/md.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/me.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/me.gif
new file mode 100644
index 0000000..f1d49ab
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/me.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mg.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mg.gif
new file mode 100644
index 0000000..332adfe
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mg.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mh.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mh.gif
new file mode 100644
index 0000000..30fc638
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mh.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mk.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mk.gif
new file mode 100644
index 0000000..ab783d7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mk.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ml.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ml.gif
new file mode 100644
index 0000000..3e9db35
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ml.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mm.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mm.gif
new file mode 100644
index 0000000..ececbd8
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mm.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mn.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mn.gif
new file mode 100644
index 0000000..0412444
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mn.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mo.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mo.gif
new file mode 100644
index 0000000..39e446a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mo.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mp.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mp.gif
new file mode 100644
index 0000000..5296c42
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mp.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mq.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mq.gif
new file mode 100644
index 0000000..e8408ec
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mq.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mr.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mr.gif
new file mode 100644
index 0000000..08c3a2a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mr.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ms.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ms.gif
new file mode 100644
index 0000000..7585720
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ms.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mt.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mt.gif
new file mode 100644
index 0000000..7d4f32a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mt.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mu.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mu.gif
new file mode 100644
index 0000000..9246ed9
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mu.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mv.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mv.gif
new file mode 100644
index 0000000..d710609
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mv.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mw.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mw.gif
new file mode 100644
index 0000000..9c4a461
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mw.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mx.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mx.gif
new file mode 100644
index 0000000..7a54578
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mx.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/my.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/my.gif
new file mode 100644
index 0000000..5a4b433
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/my.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mz.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mz.gif
new file mode 100644
index 0000000..ea6f19f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/mz.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/na.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/na.gif
new file mode 100644
index 0000000..629781d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/na.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nc.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nc.gif
new file mode 100644
index 0000000..3eb1ff2
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nc.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ne.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ne.gif
new file mode 100644
index 0000000..4c07e0f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ne.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nf.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nf.gif
new file mode 100644
index 0000000..71d62d7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nf.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ng.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ng.gif
new file mode 100644
index 0000000..211f873
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ng.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ni.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ni.gif
new file mode 100644
index 0000000..af0bbeb
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ni.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nl.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nl.gif
new file mode 100644
index 0000000..efaeda4
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nl.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/no.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/no.gif
new file mode 100644
index 0000000..2e5bb13
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/no.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/np.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/np.gif
new file mode 100644
index 0000000..1096893
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/np.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nr.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nr.gif
new file mode 100644
index 0000000..f5e1c94
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nr.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nu.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nu.gif
new file mode 100644
index 0000000..0ec09e6
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nu.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nz.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nz.gif
new file mode 100644
index 0000000..a645946
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/nz.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/om.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/om.gif
new file mode 100644
index 0000000..3d0ae27
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/om.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pa.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pa.gif
new file mode 100644
index 0000000..080ddc3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pa.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pe.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pe.gif
new file mode 100644
index 0000000..72d06b0
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pe.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pf.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pf.gif
new file mode 100644
index 0000000..516137c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pf.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pg.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pg.gif
new file mode 100644
index 0000000..543b75e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pg.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ph.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ph.gif
new file mode 100644
index 0000000..0c03715
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ph.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pk.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pk.gif
new file mode 100644
index 0000000..20b011a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pk.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pl.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pl.gif
new file mode 100644
index 0000000..acf622a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pl.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pm.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pm.gif
new file mode 100644
index 0000000..8856f22
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pm.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pn.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pn.gif
new file mode 100644
index 0000000..a1f2999
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pn.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pr.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pr.gif
new file mode 100644
index 0000000..0b16a6d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pr.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ps.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ps.gif
new file mode 100644
index 0000000..89bec86
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ps.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pt.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pt.gif
new file mode 100644
index 0000000..ceb4d92
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pt.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pw.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pw.gif
new file mode 100644
index 0000000..3dde9c8
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/pw.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/py.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/py.gif
new file mode 100644
index 0000000..a1f60a0
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/py.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/qa.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/qa.gif
new file mode 100644
index 0000000..3abcfcc
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/qa.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/re.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/re.gif
new file mode 100644
index 0000000..dbd3c5b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/re.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ro.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ro.gif
new file mode 100644
index 0000000..b0e9380
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ro.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/rs.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/rs.gif
new file mode 100644
index 0000000..64d15ee
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/rs.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ru.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ru.gif
new file mode 100644
index 0000000..a068e56
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ru.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/rw.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/rw.gif
new file mode 100644
index 0000000..5ebccbd
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/rw.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sa.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sa.gif
new file mode 100644
index 0000000..c55a7f3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sa.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sb.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sb.gif
new file mode 100644
index 0000000..0f7950c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sb.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sc.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sc.gif
new file mode 100644
index 0000000..d1c6e39
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sc.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/scotland.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/scotland.gif
new file mode 100644
index 0000000..f13520b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/scotland.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sd.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sd.gif
new file mode 100644
index 0000000..2da5db5
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sd.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/se.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/se.gif
new file mode 100644
index 0000000..6c18d6c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/se.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sg.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sg.gif
new file mode 100644
index 0000000..d1f727d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sg.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sh.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sh.gif
new file mode 100644
index 0000000..b85b65b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sh.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/si.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/si.gif
new file mode 100644
index 0000000..1237873
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/si.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sj.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sj.gif
new file mode 100644
index 0000000..2e5bb13
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sj.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sk.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sk.gif
new file mode 100644
index 0000000..16f0731
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sk.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sl.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sl.gif
new file mode 100644
index 0000000..644235e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sl.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sm.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sm.gif
new file mode 100644
index 0000000..40d7674
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sm.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sn.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sn.gif
new file mode 100644
index 0000000..4f4a059
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sn.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/so.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/so.gif
new file mode 100644
index 0000000..ce6fde6
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/so.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sr.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sr.gif
new file mode 100644
index 0000000..634b48a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sr.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/st.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/st.gif
new file mode 100644
index 0000000..f44804b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/st.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sv.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sv.gif
new file mode 100644
index 0000000..40d0dbc
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sv.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sy.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sy.gif
new file mode 100644
index 0000000..5d8bbb5
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sy.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sz.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sz.gif
new file mode 100644
index 0000000..8e297be
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/sz.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tc.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tc.gif
new file mode 100644
index 0000000..964e317
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tc.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/td.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/td.gif
new file mode 100644
index 0000000..8ff1724
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/td.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tf.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tf.gif
new file mode 100644
index 0000000..6f80cd4
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tf.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tg.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tg.gif
new file mode 100644
index 0000000..3c6c33b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tg.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/th.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/th.gif
new file mode 100644
index 0000000..3704ae4
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/th.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tj.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tj.gif
new file mode 100644
index 0000000..f5ed35e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tj.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tk.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tk.gif
new file mode 100644
index 0000000..d004a89
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tk.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tl.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tl.gif
new file mode 100644
index 0000000..6787ea7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tl.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tm.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tm.gif
new file mode 100644
index 0000000..02ae95f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tm.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tn.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tn.gif
new file mode 100644
index 0000000..0c24f92
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tn.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/to.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/to.gif
new file mode 100644
index 0000000..5990a62
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/to.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tr.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tr.gif
new file mode 100644
index 0000000..037ad28
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tr.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tt.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tt.gif
new file mode 100644
index 0000000..e9c1570
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tt.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tv.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tv.gif
new file mode 100644
index 0000000..4e9b3f5
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tv.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tw.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tw.gif
new file mode 100644
index 0000000..9cad7f2
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tw.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tz.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tz.gif
new file mode 100644
index 0000000..4154a8e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/tz.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ua.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ua.gif
new file mode 100644
index 0000000..9448bf1
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ua.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ug.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ug.gif
new file mode 100644
index 0000000..ec9ef43
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ug.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/um.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/um.gif
new file mode 100644
index 0000000..20d04af
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/um.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/us.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/us.gif
new file mode 100644
index 0000000..447c2b2
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/us.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/uy.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/uy.gif
new file mode 100644
index 0000000..84b2e5c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/uy.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/uz.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/uz.gif
new file mode 100644
index 0000000..0089526
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/uz.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/va.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/va.gif
new file mode 100644
index 0000000..f3f2fe3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/va.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vc.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vc.gif
new file mode 100644
index 0000000..429f8c9
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vc.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ve.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ve.gif
new file mode 100644
index 0000000..af6e8f0
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ve.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vg.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vg.gif
new file mode 100644
index 0000000..3426f8c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vg.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vi.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vi.gif
new file mode 100644
index 0000000..6d9dd6e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vi.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vn.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vn.gif
new file mode 100644
index 0000000..02e1387
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vn.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vu.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vu.gif
new file mode 100644
index 0000000..37353c7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/vu.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/wales.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/wales.gif
new file mode 100644
index 0000000..40792c9
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/wales.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/wf.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/wf.gif
new file mode 100644
index 0000000..67a1420
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/wf.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ws.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ws.gif
new file mode 100644
index 0000000..9e1ca62
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ws.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ye.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ye.gif
new file mode 100644
index 0000000..05ec933
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/ye.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/yt.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/yt.gif
new file mode 100644
index 0000000..28221e5
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/yt.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/za.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/za.gif
new file mode 100644
index 0000000..f120d5d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/za.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/zm.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/zm.gif
new file mode 100644
index 0000000..f88e645
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/zm.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/zw.gif b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/zw.gif
new file mode 100644
index 0000000..2e47bcc
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/gif/zw.gif differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ad.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ad.png
new file mode 100644
index 0000000..84e4978
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ad.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ae.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ae.png
new file mode 100644
index 0000000..ef3a1ec
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ae.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/af.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/af.png
new file mode 100644
index 0000000..30b7732
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/af.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ag.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ag.png
new file mode 100644
index 0000000..f03b07f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ag.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ai.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ai.png
new file mode 100644
index 0000000..2b00f2c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ai.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/al.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/al.png
new file mode 100644
index 0000000..fea63ef
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/al.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/am.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/am.png
new file mode 100644
index 0000000..b4df362
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/am.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/an.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/an.png
new file mode 100644
index 0000000..633e4b8
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/an.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ao.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ao.png
new file mode 100644
index 0000000..bcbd1d6
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ao.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ar.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ar.png
new file mode 100644
index 0000000..9bcd298
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ar.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/as.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/as.png
new file mode 100644
index 0000000..221462a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/as.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/at.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/at.png
new file mode 100644
index 0000000..2f87300
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/at.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/au.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/au.png
new file mode 100644
index 0000000..9763ee3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/au.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/aw.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/aw.png
new file mode 100644
index 0000000..0da58d3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/aw.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ax.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ax.png
new file mode 100644
index 0000000..45bd963
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ax.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/az.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/az.png
new file mode 100644
index 0000000..eec86cd
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/az.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ba.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ba.png
new file mode 100644
index 0000000..0f76bd3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ba.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bb.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bb.png
new file mode 100644
index 0000000..9196cb3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bb.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bd.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bd.png
new file mode 100644
index 0000000..423e223
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bd.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/be.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/be.png
new file mode 100644
index 0000000..7ed6a14
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/be.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bf.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bf.png
new file mode 100644
index 0000000..984b150
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bf.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bg.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bg.png
new file mode 100644
index 0000000..80242c2
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bg.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bh.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bh.png
new file mode 100644
index 0000000..ea8ce68
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bh.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bi.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bi.png
new file mode 100644
index 0000000..efbbec6
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bi.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bj.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bj.png
new file mode 100644
index 0000000..02920a1
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bj.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bm.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bm.png
new file mode 100644
index 0000000..0ba86b1
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bm.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bn.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bn.png
new file mode 100644
index 0000000..0eeb4fd
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bn.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bo.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bo.png
new file mode 100644
index 0000000..5d8fbd8
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bo.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/br.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/br.png
new file mode 100644
index 0000000..4949701
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/br.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bs.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bs.png
new file mode 100644
index 0000000..7262df7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bs.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bt.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bt.png
new file mode 100644
index 0000000..4aee474
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bt.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bv.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bv.png
new file mode 100644
index 0000000..0860d26
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bv.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bw.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bw.png
new file mode 100644
index 0000000..186fc90
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bw.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/by.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/by.png
new file mode 100644
index 0000000..563f063
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/by.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bz.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bz.png
new file mode 100644
index 0000000..3a68dec
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/bz.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ca.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ca.png
new file mode 100644
index 0000000..33a3b60
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ca.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/catalonia.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/catalonia.png
new file mode 100644
index 0000000..fbdbede
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/catalonia.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cc.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cc.png
new file mode 100644
index 0000000..29524c2
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cc.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cd.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cd.png
new file mode 100644
index 0000000..5e48942
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cd.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cf.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cf.png
new file mode 100644
index 0000000..0078254
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cf.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cg.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cg.png
new file mode 100644
index 0000000..e3fe4d7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cg.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ch.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ch.png
new file mode 100644
index 0000000..15194ba
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ch.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ci.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ci.png
new file mode 100644
index 0000000..55acf14
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ci.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ck.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ck.png
new file mode 100644
index 0000000..b14a3ab
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ck.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cl.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cl.png
new file mode 100644
index 0000000..0b85ae0
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cl.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cm.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cm.png
new file mode 100644
index 0000000..69680ff
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cm.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cn.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cn.png
new file mode 100644
index 0000000..fac1cb3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cn.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/co.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/co.png
new file mode 100644
index 0000000..b5d3d48
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/co.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cr.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cr.png
new file mode 100644
index 0000000..e3f483f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cr.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cs.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cs.png
new file mode 100644
index 0000000..b20a4a1
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cs.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cu.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cu.png
new file mode 100644
index 0000000..711486c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cu.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cv.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cv.png
new file mode 100644
index 0000000..2427d3b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cv.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cx.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cx.png
new file mode 100644
index 0000000..fc75f79
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cx.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cy.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cy.png
new file mode 100644
index 0000000..5b1ad6c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cy.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cz.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cz.png
new file mode 100644
index 0000000..6df46b3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/cz.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/de.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/de.png
new file mode 100644
index 0000000..91072d6
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/de.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/dj.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/dj.png
new file mode 100644
index 0000000..24dda05
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/dj.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/dk.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/dk.png
new file mode 100644
index 0000000..622cebd
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/dk.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/dm.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/dm.png
new file mode 100644
index 0000000..89ecece
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/dm.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/do.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/do.png
new file mode 100644
index 0000000..13ae260
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/do.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/dz.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/dz.png
new file mode 100644
index 0000000..ed06905
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/dz.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ec.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ec.png
new file mode 100644
index 0000000..3b5383b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ec.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ee.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ee.png
new file mode 100644
index 0000000..0c82efb
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ee.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/eg.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/eg.png
new file mode 100644
index 0000000..493d5c4
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/eg.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/eh.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/eh.png
new file mode 100644
index 0000000..7efd005
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/eh.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/england.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/england.png
new file mode 100644
index 0000000..3a7311d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/england.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/er.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/er.png
new file mode 100644
index 0000000..652c196
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/er.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/es.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/es.png
new file mode 100644
index 0000000..6b3e52d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/es.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/et.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/et.png
new file mode 100644
index 0000000..205ea66
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/et.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/europeanunion.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/europeanunion.png
new file mode 100644
index 0000000..feee49d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/europeanunion.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fam.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fam.png
new file mode 100644
index 0000000..7d61658
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fam.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fi.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fi.png
new file mode 100644
index 0000000..c5d9882
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fi.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fj.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fj.png
new file mode 100644
index 0000000..56c0b0f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fj.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fk.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fk.png
new file mode 100644
index 0000000..434c966
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fk.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fm.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fm.png
new file mode 100644
index 0000000..4615039
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fm.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fo.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fo.png
new file mode 100644
index 0000000..cbceb80
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fo.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fr.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fr.png
new file mode 100644
index 0000000..ede6738
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/fr.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ga.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ga.png
new file mode 100644
index 0000000..aacaa1f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ga.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gb.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gb.png
new file mode 100644
index 0000000..4576e0d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gb.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gd.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gd.png
new file mode 100644
index 0000000..2f84737
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gd.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ge.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ge.png
new file mode 100644
index 0000000..8caf6e8
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ge.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gf.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gf.png
new file mode 100644
index 0000000..ede6738
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gf.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gg.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gg.png
new file mode 100644
index 0000000..7091607
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gg.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gh.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gh.png
new file mode 100644
index 0000000..5a04cd4
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gh.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gi.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gi.png
new file mode 100644
index 0000000..e76797f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gi.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gl.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gl.png
new file mode 100644
index 0000000..43102a8
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gl.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gm.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gm.png
new file mode 100644
index 0000000..31ccb49
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gm.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gn.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gn.png
new file mode 100644
index 0000000..3c341ee
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gn.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gp.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gp.png
new file mode 100644
index 0000000..24a48e8
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gp.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gq.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gq.png
new file mode 100644
index 0000000..89e595e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gq.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gr.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gr.png
new file mode 100644
index 0000000..82b50b5
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gr.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gs.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gs.png
new file mode 100644
index 0000000..af737ae
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gs.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gt.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gt.png
new file mode 100644
index 0000000..fec6653
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gt.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gu.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gu.png
new file mode 100644
index 0000000..668170f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gu.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gw.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gw.png
new file mode 100644
index 0000000..f7514c7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gw.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gy.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gy.png
new file mode 100644
index 0000000..e0979cb
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/gy.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hk.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hk.png
new file mode 100644
index 0000000..40bd549
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hk.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hm.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hm.png
new file mode 100644
index 0000000..9763ee3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hm.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hn.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hn.png
new file mode 100644
index 0000000..c20ad45
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hn.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hr.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hr.png
new file mode 100644
index 0000000..b77266e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hr.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ht.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ht.png
new file mode 100644
index 0000000..d8e284c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ht.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hu.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hu.png
new file mode 100644
index 0000000..33648a4
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/hu.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/id.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/id.png
new file mode 100644
index 0000000..c6bc0fa
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/id.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ie.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ie.png
new file mode 100644
index 0000000..31b1d55
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ie.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/il.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/il.png
new file mode 100644
index 0000000..2ca772d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/il.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/in.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/in.png
new file mode 100644
index 0000000..01d691b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/in.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/io.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/io.png
new file mode 100644
index 0000000..244706e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/io.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/iq.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/iq.png
new file mode 100644
index 0000000..3975518
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/iq.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ir.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ir.png
new file mode 100644
index 0000000..9675506
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ir.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/is.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/is.png
new file mode 100644
index 0000000..e1eb176
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/is.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/it.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/it.png
new file mode 100644
index 0000000..89692f7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/it.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/je.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/je.png
new file mode 100644
index 0000000..657b23d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/je.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/jm.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/jm.png
new file mode 100644
index 0000000..dd6cbc1
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/jm.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/jo.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/jo.png
new file mode 100644
index 0000000..3482c83
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/jo.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/jp.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/jp.png
new file mode 100644
index 0000000..325fbad
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/jp.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ke.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ke.png
new file mode 100644
index 0000000..3261f6f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ke.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kg.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kg.png
new file mode 100644
index 0000000..b934e23
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kg.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kh.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kh.png
new file mode 100644
index 0000000..8ac53a4
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kh.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ki.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ki.png
new file mode 100644
index 0000000..c1c9a2d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ki.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/km.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/km.png
new file mode 100644
index 0000000..bd98d78
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/km.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kn.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kn.png
new file mode 100644
index 0000000..33cdaa5
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kn.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kp.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kp.png
new file mode 100644
index 0000000..784030e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kp.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kr.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kr.png
new file mode 100644
index 0000000..7e370b8
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kr.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kw.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kw.png
new file mode 100644
index 0000000..2742d89
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kw.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ky.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ky.png
new file mode 100644
index 0000000..907fd20
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ky.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kz.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kz.png
new file mode 100644
index 0000000..4cd7263
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/kz.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/la.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/la.png
new file mode 100644
index 0000000..834de2d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/la.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lb.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lb.png
new file mode 100644
index 0000000..5ecb9e8
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lb.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lc.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lc.png
new file mode 100644
index 0000000..0585ed7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lc.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/li.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/li.png
new file mode 100644
index 0000000..2d62fa0
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/li.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lk.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lk.png
new file mode 100644
index 0000000..019a29b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lk.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lr.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lr.png
new file mode 100644
index 0000000..89a5bc7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lr.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ls.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ls.png
new file mode 100644
index 0000000..164cf3b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ls.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lt.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lt.png
new file mode 100644
index 0000000..1fe23a1
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lt.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lu.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lu.png
new file mode 100644
index 0000000..471be86
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lu.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lv.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lv.png
new file mode 100644
index 0000000..a15fb26
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/lv.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ly.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ly.png
new file mode 100644
index 0000000..445d8d6
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ly.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ma.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ma.png
new file mode 100644
index 0000000..dbdac88
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ma.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mc.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mc.png
new file mode 100644
index 0000000..1aa830f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mc.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/md.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/md.png
new file mode 100644
index 0000000..ac46676
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/md.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/me.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/me.png
new file mode 100644
index 0000000..c4ab65c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/me.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mg.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mg.png
new file mode 100644
index 0000000..9dc51da
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mg.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mh.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mh.png
new file mode 100644
index 0000000..2ad455c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mh.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mk.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mk.png
new file mode 100644
index 0000000..71eec74
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mk.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ml.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ml.png
new file mode 100644
index 0000000..b5ef40b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ml.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mm.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mm.png
new file mode 100644
index 0000000..b471c1e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mm.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mn.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mn.png
new file mode 100644
index 0000000..03cc554
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mn.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mo.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mo.png
new file mode 100644
index 0000000..0f8e289
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mo.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mp.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mp.png
new file mode 100644
index 0000000..f66195e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mp.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mq.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mq.png
new file mode 100644
index 0000000..3743546
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mq.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mr.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mr.png
new file mode 100644
index 0000000..78be28a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mr.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ms.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ms.png
new file mode 100644
index 0000000..ecda6cd
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ms.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mt.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mt.png
new file mode 100644
index 0000000..00af948
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mt.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mu.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mu.png
new file mode 100644
index 0000000..9fcd725
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mu.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mv.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mv.png
new file mode 100644
index 0000000..188325c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mv.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mw.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mw.png
new file mode 100644
index 0000000..1ee6485
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mw.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mx.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mx.png
new file mode 100644
index 0000000..d135044
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mx.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/my.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/my.png
new file mode 100644
index 0000000..af86d26
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/my.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mz.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mz.png
new file mode 100644
index 0000000..e0b82a5
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/mz.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/na.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/na.png
new file mode 100644
index 0000000..3d96f41
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/na.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nc.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nc.png
new file mode 100644
index 0000000..fc6437b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nc.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ne.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ne.png
new file mode 100644
index 0000000..e5c4ea7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ne.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nf.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nf.png
new file mode 100644
index 0000000..d672f28
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nf.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ng.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ng.png
new file mode 100644
index 0000000..6dcc973
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ng.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ni.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ni.png
new file mode 100644
index 0000000..7b3cdd3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ni.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nl.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nl.png
new file mode 100644
index 0000000..ad5243e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nl.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/no.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/no.png
new file mode 100644
index 0000000..0860d26
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/no.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/np.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/np.png
new file mode 100644
index 0000000..d331de3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/np.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nr.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nr.png
new file mode 100644
index 0000000..6a1ad4b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nr.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nu.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nu.png
new file mode 100644
index 0000000..3329808
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nu.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nz.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nz.png
new file mode 100644
index 0000000..0a966f3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/nz.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/om.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/om.png
new file mode 100644
index 0000000..35d5d16
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/om.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pa.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pa.png
new file mode 100644
index 0000000..3397cf1
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pa.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pe.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pe.png
new file mode 100644
index 0000000..62a0497
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pe.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pf.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pf.png
new file mode 100644
index 0000000..4891c4e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pf.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pg.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pg.png
new file mode 100644
index 0000000..d447975
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pg.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ph.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ph.png
new file mode 100644
index 0000000..b818a7f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ph.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pk.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pk.png
new file mode 100644
index 0000000..efc93e8
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pk.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pl.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pl.png
new file mode 100644
index 0000000..d413d01
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pl.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pm.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pm.png
new file mode 100644
index 0000000..b7b6434
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pm.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pn.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pn.png
new file mode 100644
index 0000000..42587a3
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pn.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pr.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pr.png
new file mode 100644
index 0000000..9df1885
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pr.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ps.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ps.png
new file mode 100644
index 0000000..f5f5477
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ps.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pt.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pt.png
new file mode 100644
index 0000000..50ba8aa
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pt.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pw.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pw.png
new file mode 100644
index 0000000..2832690
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/pw.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/py.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/py.png
new file mode 100644
index 0000000..6f20590
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/py.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/qa.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/qa.png
new file mode 100644
index 0000000..ed4c621
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/qa.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/re.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/re.png
new file mode 100644
index 0000000..ede6738
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/re.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ro.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ro.png
new file mode 100644
index 0000000..ee4b9da
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ro.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/rs.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/rs.png
new file mode 100644
index 0000000..f1d1796
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/rs.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ru.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ru.png
new file mode 100644
index 0000000..8ab1e67
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ru.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/rw.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/rw.png
new file mode 100644
index 0000000..7cd51a9
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/rw.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sa.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sa.png
new file mode 100644
index 0000000..bff6542
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sa.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sb.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sb.png
new file mode 100644
index 0000000..af651bd
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sb.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sc.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sc.png
new file mode 100644
index 0000000..2ce78e7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sc.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/scotland.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/scotland.png
new file mode 100644
index 0000000..d87e7d6
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/scotland.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sd.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sd.png
new file mode 100644
index 0000000..6d0a3c4
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sd.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/se.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/se.png
new file mode 100644
index 0000000..2a74e78
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/se.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sg.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sg.png
new file mode 100644
index 0000000..72f00da
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sg.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sh.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sh.png
new file mode 100644
index 0000000..c7d1a73
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sh.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/si.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/si.png
new file mode 100644
index 0000000..ef41c0f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/si.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sj.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sj.png
new file mode 100644
index 0000000..0860d26
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sj.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sk.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sk.png
new file mode 100644
index 0000000..22bab1c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sk.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sl.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sl.png
new file mode 100644
index 0000000..c59445b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sl.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sm.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sm.png
new file mode 100644
index 0000000..ae1886c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sm.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sn.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sn.png
new file mode 100644
index 0000000..1d58d60
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sn.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/so.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/so.png
new file mode 100644
index 0000000..1cc36db
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/so.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sr.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sr.png
new file mode 100644
index 0000000..e2d2c86
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sr.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/st.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/st.png
new file mode 100644
index 0000000..319e791
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/st.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sv.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sv.png
new file mode 100644
index 0000000..eea4e5b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sv.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sy.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sy.png
new file mode 100644
index 0000000..f5ce30d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sy.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sz.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sz.png
new file mode 100644
index 0000000..cb8b587
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/sz.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tc.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tc.png
new file mode 100644
index 0000000..4be883a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tc.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/td.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/td.png
new file mode 100644
index 0000000..e91f146
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/td.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tf.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tf.png
new file mode 100644
index 0000000..a9aba45
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tf.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tg.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tg.png
new file mode 100644
index 0000000..72a51e9
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tg.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/th.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/th.png
new file mode 100644
index 0000000..8a7f438
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/th.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tj.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tj.png
new file mode 100644
index 0000000..617bf64
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tj.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tk.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tk.png
new file mode 100644
index 0000000..c7e6c71
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tk.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tl.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tl.png
new file mode 100644
index 0000000..09aad3e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tl.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tm.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tm.png
new file mode 100644
index 0000000..b6076f7
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tm.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tn.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tn.png
new file mode 100644
index 0000000..cb62b2a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tn.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/to.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/to.png
new file mode 100644
index 0000000..f89b8ba
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/to.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tr.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tr.png
new file mode 100644
index 0000000..d68b395
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tr.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tt.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tt.png
new file mode 100644
index 0000000..145f0cc
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tt.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tv.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tv.png
new file mode 100644
index 0000000..79ae768
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tv.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tw.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tw.png
new file mode 100644
index 0000000..432b92c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tw.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tz.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tz.png
new file mode 100644
index 0000000..eaf2d37
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/tz.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ua.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ua.png
new file mode 100644
index 0000000..bf96f0e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ua.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ug.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ug.png
new file mode 100644
index 0000000..d1d5749
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ug.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/um.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/um.png
new file mode 100644
index 0000000..4386670
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/um.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/us.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/us.png
new file mode 100644
index 0000000..d0005f9
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/us.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/uy.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/uy.png
new file mode 100644
index 0000000..6730b96
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/uy.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/uz.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/uz.png
new file mode 100644
index 0000000..8b6faf4
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/uz.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/va.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/va.png
new file mode 100644
index 0000000..ab31d79
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/va.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vc.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vc.png
new file mode 100644
index 0000000..1ed1641
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vc.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ve.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ve.png
new file mode 100644
index 0000000..251d601
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ve.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vg.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vg.png
new file mode 100644
index 0000000..b2efb4d
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vg.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vi.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vi.png
new file mode 100644
index 0000000..812028c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vi.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vn.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vn.png
new file mode 100644
index 0000000..076e6c1
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vn.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vu.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vu.png
new file mode 100644
index 0000000..114807c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/vu.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/wales.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/wales.png
new file mode 100644
index 0000000..1b32fae
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/wales.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/wf.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/wf.png
new file mode 100644
index 0000000..1ad65a0
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/wf.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ws.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ws.png
new file mode 100644
index 0000000..d74670f
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ws.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ye.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ye.png
new file mode 100644
index 0000000..f1c52eb
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/ye.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/yt.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/yt.png
new file mode 100644
index 0000000..99d998b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/yt.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/za.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/za.png
new file mode 100644
index 0000000..40cd37a
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/za.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/zm.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/zm.png
new file mode 100644
index 0000000..254e1d9
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/zm.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/zw.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/zw.png
new file mode 100644
index 0000000..ab459e4
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/png/zw.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/sprite/famfamfam-flags.css b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/sprite/famfamfam-flags.css
new file mode 100644
index 0000000..4ebcb31
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/sprite/famfamfam-flags.css
@@ -0,0 +1,1499 @@
+.famfamfam-flags {
+ background: url( 'famfamfam-flags.png' ) no-repeat;
+ background-size: 224px 199px;
+}
+
+.famfamfam-flags.me {
+ width: 16px;
+ height: 12px;
+ background-position: 0px 0px;
+}
+
+.famfamfam-flags.ky {
+ width: 16px;
+ height: 11px;
+ background-position: -16px 0px;
+}
+
+.famfamfam-flags.af {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -12px;
+}
+
+.famfamfam-flags.ag {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -12px;
+}
+
+.famfamfam-flags.ai {
+ width: 16px;
+ height: 11px;
+ background-position: -32px 0px;
+}
+
+.famfamfam-flags.al {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -11px;
+}
+
+.famfamfam-flags.am {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -23px;
+}
+
+.famfamfam-flags.an {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -23px;
+}
+
+.famfamfam-flags.ao {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -23px;
+}
+
+.famfamfam-flags.ar {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -34px;
+}
+
+.famfamfam-flags.as {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -34px;
+}
+
+.famfamfam-flags.at {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -34px;
+}
+
+.famfamfam-flags.au {
+ width: 16px;
+ height: 11px;
+ background-position: -48px 0px;
+}
+
+.famfamfam-flags.aw {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -11px;
+}
+
+.famfamfam-flags.ax {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -22px;
+}
+
+.famfamfam-flags.az {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -33px;
+}
+
+.famfamfam-flags.ba {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -45px;
+}
+
+.famfamfam-flags.bb {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -45px;
+}
+
+.famfamfam-flags.bd {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -45px;
+}
+
+.famfamfam-flags.be {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -45px;
+}
+
+.famfamfam-flags.bf {
+ width: 16px;
+ height: 11px;
+ background-position: -64px 0px;
+}
+
+.famfamfam-flags.bg {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -11px;
+}
+
+.famfamfam-flags.bh {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -22px;
+}
+
+.famfamfam-flags.bi {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -33px;
+}
+
+.famfamfam-flags.bj {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -44px;
+}
+
+.famfamfam-flags.bm {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -56px;
+}
+
+.famfamfam-flags.bn {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -56px;
+}
+
+.famfamfam-flags.bo {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -56px;
+}
+
+.famfamfam-flags.br {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -56px;
+}
+
+.famfamfam-flags.bs {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -56px;
+}
+
+.famfamfam-flags.bt {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -67px;
+}
+
+.famfamfam-flags.bv {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -67px;
+}
+
+.famfamfam-flags.bw {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -67px;
+}
+
+.famfamfam-flags.by {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -67px;
+}
+
+.famfamfam-flags.bz {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -67px;
+}
+
+.famfamfam-flags.ca {
+ width: 16px;
+ height: 11px;
+ background-position: -80px 0px;
+}
+
+.famfamfam-flags.catalonia {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -11px;
+}
+
+.famfamfam-flags.cc {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -22px;
+}
+
+.famfamfam-flags.cd {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -33px;
+}
+
+.famfamfam-flags.cf {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -44px;
+}
+
+.famfamfam-flags.cg {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -55px;
+}
+
+.famfamfam-flags.zm {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -66px;
+}
+
+.famfamfam-flags.ci {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -78px;
+}
+
+.famfamfam-flags.ck {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -78px;
+}
+
+.famfamfam-flags.cl {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -78px;
+}
+
+.famfamfam-flags.cm {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -78px;
+}
+
+.famfamfam-flags.cn {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -78px;
+}
+
+.famfamfam-flags.co {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -78px;
+}
+
+.famfamfam-flags.cr {
+ width: 16px;
+ height: 11px;
+ background-position: -96px 0px;
+}
+
+.famfamfam-flags.cs {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -11px;
+}
+
+.famfamfam-flags.cu {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -22px;
+}
+
+.famfamfam-flags.cv {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -33px;
+}
+
+.famfamfam-flags.cx {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -44px;
+}
+
+.famfamfam-flags.cy {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -55px;
+}
+
+.famfamfam-flags.cz {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -66px;
+}
+
+.famfamfam-flags.de {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -77px;
+}
+
+.famfamfam-flags.dj {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -89px;
+}
+
+.famfamfam-flags.dk {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -89px;
+}
+
+.famfamfam-flags.dm {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -89px;
+}
+
+.famfamfam-flags.do {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -89px;
+}
+
+.famfamfam-flags.dz {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -89px;
+}
+
+.famfamfam-flags.ec {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -89px;
+}
+
+.famfamfam-flags.ee {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -89px;
+}
+
+.famfamfam-flags.eg {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -100px;
+}
+
+.famfamfam-flags.eh {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -100px;
+}
+
+.famfamfam-flags.england {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -100px;
+}
+
+.famfamfam-flags.er {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -100px;
+}
+
+.famfamfam-flags.es {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -100px;
+}
+
+.famfamfam-flags.et {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -100px;
+}
+
+.famfamfam-flags.europeanunion {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -100px;
+}
+
+.famfamfam-flags.fam {
+ width: 16px;
+ height: 11px;
+ background-position: -112px 0px;
+}
+
+.famfamfam-flags.fi {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -11px;
+}
+
+.famfamfam-flags.fj {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -22px;
+}
+
+.famfamfam-flags.fk {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -33px;
+}
+
+.famfamfam-flags.fm {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -44px;
+}
+
+.famfamfam-flags.fo {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -55px;
+}
+
+.famfamfam-flags.gp, .famfamfam-flags.mf, .famfamfam-flags.re, .famfamfam-flags.yt, .famfamfam-flags.fr {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -66px;
+}
+
+.famfamfam-flags.ga {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -77px;
+}
+
+.famfamfam-flags.gb {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -88px;
+}
+
+.famfamfam-flags.gd {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -99px;
+}
+
+.famfamfam-flags.ge {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -111px;
+}
+
+.famfamfam-flags.gf {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -111px;
+}
+
+.famfamfam-flags.gg {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -111px;
+}
+
+.famfamfam-flags.gh {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -111px;
+}
+
+.famfamfam-flags.gi {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -111px;
+}
+
+.famfamfam-flags.gl {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -111px;
+}
+
+.famfamfam-flags.gm {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -111px;
+}
+
+.famfamfam-flags.gn {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -111px;
+}
+
+.famfamfam-flags.gp {
+ width: 16px;
+ height: 11px;
+ background-position: -128px 0px;
+}
+
+.famfamfam-flags.gq {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -11px;
+}
+
+.famfamfam-flags.gr {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -22px;
+}
+
+.famfamfam-flags.gs {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -33px;
+}
+
+.famfamfam-flags.gt {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -44px;
+}
+
+.famfamfam-flags.gu {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -55px;
+}
+
+.famfamfam-flags.gw {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -66px;
+}
+
+.famfamfam-flags.gy {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -77px;
+}
+
+.famfamfam-flags.hk {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -88px;
+}
+
+.famfamfam-flags.hm {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -99px;
+}
+
+.famfamfam-flags.hn {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -110px;
+}
+
+.famfamfam-flags.hr {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -122px;
+}
+
+.famfamfam-flags.ht {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -122px;
+}
+
+.famfamfam-flags.hu {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -122px;
+}
+
+.famfamfam-flags.id {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -122px;
+}
+
+.famfamfam-flags.ie {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -122px;
+}
+
+.famfamfam-flags.il {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -122px;
+}
+
+.famfamfam-flags.in {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -122px;
+}
+
+.famfamfam-flags.io {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -122px;
+}
+
+.famfamfam-flags.iq {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -122px;
+}
+
+.famfamfam-flags.ir {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -133px;
+}
+
+.famfamfam-flags.is {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -133px;
+}
+
+.famfamfam-flags.it {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -133px;
+}
+
+.famfamfam-flags.je {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -133px;
+}
+
+.famfamfam-flags.jm {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -133px;
+}
+
+.famfamfam-flags.jo {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -133px;
+}
+
+.famfamfam-flags.jp {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -133px;
+}
+
+.famfamfam-flags.ke {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -133px;
+}
+
+.famfamfam-flags.kg {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -133px;
+}
+
+.famfamfam-flags.kh {
+ width: 16px;
+ height: 11px;
+ background-position: -144px 0px;
+}
+
+.famfamfam-flags.ki {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -11px;
+}
+
+.famfamfam-flags.km {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -22px;
+}
+
+.famfamfam-flags.kn {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -33px;
+}
+
+.famfamfam-flags.kp {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -44px;
+}
+
+.famfamfam-flags.kr {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -55px;
+}
+
+.famfamfam-flags.kw {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -66px;
+}
+
+.famfamfam-flags.ae {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -77px;
+}
+
+.famfamfam-flags.kz {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -88px;
+}
+
+.famfamfam-flags.la {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -99px;
+}
+
+.famfamfam-flags.lb {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -110px;
+}
+
+.famfamfam-flags.lc {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -121px;
+}
+
+.famfamfam-flags.li {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -132px;
+}
+
+.famfamfam-flags.lk {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -144px;
+}
+
+.famfamfam-flags.lr {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -144px;
+}
+
+.famfamfam-flags.ls {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -144px;
+}
+
+.famfamfam-flags.lt {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -144px;
+}
+
+.famfamfam-flags.lu {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -144px;
+}
+
+.famfamfam-flags.lv {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -144px;
+}
+
+.famfamfam-flags.ly {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -144px;
+}
+
+.famfamfam-flags.ma {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -144px;
+}
+
+.famfamfam-flags.mc {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -144px;
+}
+
+.famfamfam-flags.md {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -144px;
+}
+
+.famfamfam-flags.ad {
+ width: 16px;
+ height: 11px;
+ background-position: -160px 0px;
+}
+
+.famfamfam-flags.mg {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -11px;
+}
+
+.famfamfam-flags.mh {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -22px;
+}
+
+.famfamfam-flags.mk {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -33px;
+}
+
+.famfamfam-flags.ml {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -44px;
+}
+
+.famfamfam-flags.mm {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -55px;
+}
+
+.famfamfam-flags.mn {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -66px;
+}
+
+.famfamfam-flags.mo {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -77px;
+}
+
+.famfamfam-flags.mp {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -88px;
+}
+
+.famfamfam-flags.mq {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -99px;
+}
+
+.famfamfam-flags.mr {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -110px;
+}
+
+.famfamfam-flags.ms {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -121px;
+}
+
+.famfamfam-flags.mt {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -132px;
+}
+
+.famfamfam-flags.mu {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -143px;
+}
+
+.famfamfam-flags.mv {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -155px;
+}
+
+.famfamfam-flags.mw {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -155px;
+}
+
+.famfamfam-flags.mx {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -155px;
+}
+
+.famfamfam-flags.my {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -155px;
+}
+
+.famfamfam-flags.mz {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -155px;
+}
+
+.famfamfam-flags.na {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -155px;
+}
+
+.famfamfam-flags.nc {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -155px;
+}
+
+.famfamfam-flags.ne {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -155px;
+}
+
+.famfamfam-flags.nf {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -155px;
+}
+
+.famfamfam-flags.ng {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -155px;
+}
+
+.famfamfam-flags.ni {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -155px;
+}
+
+.famfamfam-flags.bq, .famfamfam-flags.nl {
+ width: 16px;
+ height: 11px;
+ background-position: -176px 0px;
+}
+
+.famfamfam-flags.no {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -11px;
+}
+
+.famfamfam-flags.za {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -22px;
+}
+
+.famfamfam-flags.nr {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -33px;
+}
+
+.famfamfam-flags.nu {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -44px;
+}
+
+.famfamfam-flags.nz {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -55px;
+}
+
+.famfamfam-flags.om {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -66px;
+}
+
+.famfamfam-flags.pa {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -77px;
+}
+
+.famfamfam-flags.pe {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -88px;
+}
+
+.famfamfam-flags.pf {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -99px;
+}
+
+.famfamfam-flags.pg {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -110px;
+}
+
+.famfamfam-flags.ph {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -121px;
+}
+
+.famfamfam-flags.pk {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -132px;
+}
+
+.famfamfam-flags.pl {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -143px;
+}
+
+.famfamfam-flags.pm {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -154px;
+}
+
+.famfamfam-flags.pn {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -166px;
+}
+
+.famfamfam-flags.pr {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -166px;
+}
+
+.famfamfam-flags.ps {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -166px;
+}
+
+.famfamfam-flags.pt {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -166px;
+}
+
+.famfamfam-flags.pw {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -166px;
+}
+
+.famfamfam-flags.py {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -166px;
+}
+
+.famfamfam-flags.qa {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -166px;
+}
+
+.famfamfam-flags.re {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -166px;
+}
+
+.famfamfam-flags.ro {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -166px;
+}
+
+.famfamfam-flags.rs {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -166px;
+}
+
+.famfamfam-flags.ru {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -166px;
+}
+
+.famfamfam-flags.rw {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -166px;
+}
+
+.famfamfam-flags.sa {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -177px;
+}
+
+.famfamfam-flags.sb {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -177px;
+}
+
+.famfamfam-flags.sc {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -177px;
+}
+
+.famfamfam-flags.scotland {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -177px;
+}
+
+.famfamfam-flags.sd {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -177px;
+}
+
+.famfamfam-flags.se {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -177px;
+}
+
+.famfamfam-flags.sg {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -177px;
+}
+
+.famfamfam-flags.sh {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -177px;
+}
+
+.famfamfam-flags.si {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -177px;
+}
+
+.famfamfam-flags.sj {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -177px;
+}
+
+.famfamfam-flags.sk {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -177px;
+}
+
+.famfamfam-flags.sl {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -177px;
+}
+
+.famfamfam-flags.sm {
+ width: 16px;
+ height: 11px;
+ background-position: -192px 0px;
+}
+
+.famfamfam-flags.sn {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -11px;
+}
+
+.famfamfam-flags.so {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -22px;
+}
+
+.famfamfam-flags.sr {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -33px;
+}
+
+.famfamfam-flags.st {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -44px;
+}
+
+.famfamfam-flags.sv {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -55px;
+}
+
+.famfamfam-flags.sy {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -66px;
+}
+
+.famfamfam-flags.sz {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -77px;
+}
+
+.famfamfam-flags.tc {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -88px;
+}
+
+.famfamfam-flags.td {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -99px;
+}
+
+.famfamfam-flags.tf {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -110px;
+}
+
+.famfamfam-flags.tg {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -121px;
+}
+
+.famfamfam-flags.th {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -132px;
+}
+
+.famfamfam-flags.tj {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -143px;
+}
+
+.famfamfam-flags.tk {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -154px;
+}
+
+.famfamfam-flags.tl {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -165px;
+}
+
+.famfamfam-flags.tm {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -176px;
+}
+
+.famfamfam-flags.tn {
+ width: 16px;
+ height: 11px;
+ background-position: 0px -188px;
+}
+
+.famfamfam-flags.to {
+ width: 16px;
+ height: 11px;
+ background-position: -16px -188px;
+}
+
+.famfamfam-flags.tr {
+ width: 16px;
+ height: 11px;
+ background-position: -32px -188px;
+}
+
+.famfamfam-flags.tt {
+ width: 16px;
+ height: 11px;
+ background-position: -48px -188px;
+}
+
+.famfamfam-flags.tv {
+ width: 16px;
+ height: 11px;
+ background-position: -64px -188px;
+}
+
+.famfamfam-flags.tw {
+ width: 16px;
+ height: 11px;
+ background-position: -80px -188px;
+}
+
+.famfamfam-flags.tz {
+ width: 16px;
+ height: 11px;
+ background-position: -96px -188px;
+}
+
+.famfamfam-flags.ua {
+ width: 16px;
+ height: 11px;
+ background-position: -112px -188px;
+}
+
+.famfamfam-flags.ug {
+ width: 16px;
+ height: 11px;
+ background-position: -128px -188px;
+}
+
+.famfamfam-flags.um {
+ width: 16px;
+ height: 11px;
+ background-position: -144px -188px;
+}
+
+.famfamfam-flags.us {
+ width: 16px;
+ height: 11px;
+ background-position: -160px -188px;
+}
+
+.famfamfam-flags.uy {
+ width: 16px;
+ height: 11px;
+ background-position: -176px -188px;
+}
+
+.famfamfam-flags.uz {
+ width: 16px;
+ height: 11px;
+ background-position: -192px -188px;
+}
+
+.famfamfam-flags.va {
+ width: 16px;
+ height: 11px;
+ background-position: -208px 0px;
+}
+
+.famfamfam-flags.vc {
+ width: 16px;
+ height: 11px;
+ background-position: -208px -11px;
+}
+
+.famfamfam-flags.ve {
+ width: 16px;
+ height: 11px;
+ background-position: -208px -22px;
+}
+
+.famfamfam-flags.vg {
+ width: 16px;
+ height: 11px;
+ background-position: -208px -33px;
+}
+
+.famfamfam-flags.vi {
+ width: 16px;
+ height: 11px;
+ background-position: -208px -44px;
+}
+
+.famfamfam-flags.vn {
+ width: 16px;
+ height: 11px;
+ background-position: -208px -55px;
+}
+
+.famfamfam-flags.vu {
+ width: 16px;
+ height: 11px;
+ background-position: -208px -66px;
+}
+
+.famfamfam-flags.wales {
+ width: 16px;
+ height: 11px;
+ background-position: -208px -77px;
+}
+
+.famfamfam-flags.wf {
+ width: 16px;
+ height: 11px;
+ background-position: -208px -88px;
+}
+
+.famfamfam-flags.ws {
+ width: 16px;
+ height: 11px;
+ background-position: -208px -99px;
+}
+
+.famfamfam-flags.ye {
+ width: 16px;
+ height: 11px;
+ background-position: -208px -110px;
+}
+
+.famfamfam-flags.yt {
+ width: 16px;
+ height: 11px;
+ background-position: -208px -121px;
+}
+
+.famfamfam-flags.zw {
+ width: 16px;
+ height: 11px;
+ background-position: -208px -132px;
+}
+
+.famfamfam-flags.ch {
+ width: 11px;
+ height: 11px;
+ background-position: -208px -143px;
+}
+
+.famfamfam-flags.np {
+ width: 9px;
+ height: 11px;
+ background-position: -208px -154px;
+}
+
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/sprite/famfamfam-flags.min.css b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/sprite/famfamfam-flags.min.css
new file mode 100644
index 0000000..23fce33
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/sprite/famfamfam-flags.min.css
@@ -0,0 +1 @@
+.famfamfam-flags{background:url(famfamfam-flags.png) no-repeat;background-size:224px 199px}.famfamfam-flags.me{width:16px;height:12px;background-position:0 0}.famfamfam-flags.ky{width:16px;height:11px;background-position:-16px 0}.famfamfam-flags.af{width:16px;height:11px;background-position:0 -12px}.famfamfam-flags.ag{width:16px;height:11px;background-position:-16px -12px}.famfamfam-flags.ai{width:16px;height:11px;background-position:-32px 0}.famfamfam-flags.al{width:16px;height:11px;background-position:-32px -11px}.famfamfam-flags.am{width:16px;height:11px;background-position:0 -23px}.famfamfam-flags.an{width:16px;height:11px;background-position:-16px -23px}.famfamfam-flags.ao{width:16px;height:11px;background-position:-32px -23px}.famfamfam-flags.ar{width:16px;height:11px;background-position:0 -34px}.famfamfam-flags.as{width:16px;height:11px;background-position:-16px -34px}.famfamfam-flags.at{width:16px;height:11px;background-position:-32px -34px}.famfamfam-flags.au{width:16px;height:11px;background-position:-48px 0}.famfamfam-flags.aw{width:16px;height:11px;background-position:-48px -11px}.famfamfam-flags.ax{width:16px;height:11px;background-position:-48px -22px}.famfamfam-flags.az{width:16px;height:11px;background-position:-48px -33px}.famfamfam-flags.ba{width:16px;height:11px;background-position:0 -45px}.famfamfam-flags.bb{width:16px;height:11px;background-position:-16px -45px}.famfamfam-flags.bd{width:16px;height:11px;background-position:-32px -45px}.famfamfam-flags.be{width:16px;height:11px;background-position:-48px -45px}.famfamfam-flags.bf{width:16px;height:11px;background-position:-64px 0}.famfamfam-flags.bg{width:16px;height:11px;background-position:-64px -11px}.famfamfam-flags.bh{width:16px;height:11px;background-position:-64px -22px}.famfamfam-flags.bi{width:16px;height:11px;background-position:-64px -33px}.famfamfam-flags.bj{width:16px;height:11px;background-position:-64px -44px}.famfamfam-flags.bm{width:16px;height:11px;background-position:0 -56px}.famfamfam-flags.bn{width:16px;height:11px;background-position:-16px -56px}.famfamfam-flags.bo{width:16px;height:11px;background-position:-32px -56px}.famfamfam-flags.br{width:16px;height:11px;background-position:-48px -56px}.famfamfam-flags.bs{width:16px;height:11px;background-position:-64px -56px}.famfamfam-flags.bt{width:16px;height:11px;background-position:0 -67px}.famfamfam-flags.bv{width:16px;height:11px;background-position:-16px -67px}.famfamfam-flags.bw{width:16px;height:11px;background-position:-32px -67px}.famfamfam-flags.by{width:16px;height:11px;background-position:-48px -67px}.famfamfam-flags.bz{width:16px;height:11px;background-position:-64px -67px}.famfamfam-flags.ca{width:16px;height:11px;background-position:-80px 0}.famfamfam-flags.catalonia{width:16px;height:11px;background-position:-80px -11px}.famfamfam-flags.cc{width:16px;height:11px;background-position:-80px -22px}.famfamfam-flags.cd{width:16px;height:11px;background-position:-80px -33px}.famfamfam-flags.cf{width:16px;height:11px;background-position:-80px -44px}.famfamfam-flags.cg{width:16px;height:11px;background-position:-80px -55px}.famfamfam-flags.zm{width:16px;height:11px;background-position:-80px -66px}.famfamfam-flags.ci{width:16px;height:11px;background-position:0 -78px}.famfamfam-flags.ck{width:16px;height:11px;background-position:-16px -78px}.famfamfam-flags.cl{width:16px;height:11px;background-position:-32px -78px}.famfamfam-flags.cm{width:16px;height:11px;background-position:-48px -78px}.famfamfam-flags.cn{width:16px;height:11px;background-position:-64px -78px}.famfamfam-flags.co{width:16px;height:11px;background-position:-80px -78px}.famfamfam-flags.cr{width:16px;height:11px;background-position:-96px 0}.famfamfam-flags.cs{width:16px;height:11px;background-position:-96px -11px}.famfamfam-flags.cu{width:16px;height:11px;background-position:-96px -22px}.famfamfam-flags.cv{width:16px;height:11px;background-position:-96px -33px}.famfamfam-flags.cx{width:16px;height:11px;background-position:-96px -44px}.famfamfam-flags.cy{width:16px;height:11px;background-position:-96px -55px}.famfamfam-flags.cz{width:16px;height:11px;background-position:-96px -66px}.famfamfam-flags.de{width:16px;height:11px;background-position:-96px -77px}.famfamfam-flags.dj{width:16px;height:11px;background-position:0 -89px}.famfamfam-flags.dk{width:16px;height:11px;background-position:-16px -89px}.famfamfam-flags.dm{width:16px;height:11px;background-position:-32px -89px}.famfamfam-flags.do{width:16px;height:11px;background-position:-48px -89px}.famfamfam-flags.dz{width:16px;height:11px;background-position:-64px -89px}.famfamfam-flags.ec{width:16px;height:11px;background-position:-80px -89px}.famfamfam-flags.ee{width:16px;height:11px;background-position:-96px -89px}.famfamfam-flags.eg{width:16px;height:11px;background-position:0 -100px}.famfamfam-flags.eh{width:16px;height:11px;background-position:-16px -100px}.famfamfam-flags.england{width:16px;height:11px;background-position:-32px -100px}.famfamfam-flags.er{width:16px;height:11px;background-position:-48px -100px}.famfamfam-flags.es{width:16px;height:11px;background-position:-64px -100px}.famfamfam-flags.et{width:16px;height:11px;background-position:-80px -100px}.famfamfam-flags.europeanunion{width:16px;height:11px;background-position:-96px -100px}.famfamfam-flags.fam{width:16px;height:11px;background-position:-112px 0}.famfamfam-flags.fi{width:16px;height:11px;background-position:-112px -11px}.famfamfam-flags.fj{width:16px;height:11px;background-position:-112px -22px}.famfamfam-flags.fk{width:16px;height:11px;background-position:-112px -33px}.famfamfam-flags.fm{width:16px;height:11px;background-position:-112px -44px}.famfamfam-flags.fo{width:16px;height:11px;background-position:-112px -55px}.famfamfam-flags.fr,.famfamfam-flags.gp,.famfamfam-flags.mf,.famfamfam-flags.re,.famfamfam-flags.yt{width:16px;height:11px;background-position:-112px -66px}.famfamfam-flags.ga{width:16px;height:11px;background-position:-112px -77px}.famfamfam-flags.gb{width:16px;height:11px;background-position:-112px -88px}.famfamfam-flags.gd{width:16px;height:11px;background-position:-112px -99px}.famfamfam-flags.ge{width:16px;height:11px;background-position:0 -111px}.famfamfam-flags.gf{width:16px;height:11px;background-position:-16px -111px}.famfamfam-flags.gg{width:16px;height:11px;background-position:-32px -111px}.famfamfam-flags.gh{width:16px;height:11px;background-position:-48px -111px}.famfamfam-flags.gi{width:16px;height:11px;background-position:-64px -111px}.famfamfam-flags.gl{width:16px;height:11px;background-position:-80px -111px}.famfamfam-flags.gm{width:16px;height:11px;background-position:-96px -111px}.famfamfam-flags.gn{width:16px;height:11px;background-position:-112px -111px}.famfamfam-flags.gp{width:16px;height:11px;background-position:-128px 0}.famfamfam-flags.gq{width:16px;height:11px;background-position:-128px -11px}.famfamfam-flags.gr{width:16px;height:11px;background-position:-128px -22px}.famfamfam-flags.gs{width:16px;height:11px;background-position:-128px -33px}.famfamfam-flags.gt{width:16px;height:11px;background-position:-128px -44px}.famfamfam-flags.gu{width:16px;height:11px;background-position:-128px -55px}.famfamfam-flags.gw{width:16px;height:11px;background-position:-128px -66px}.famfamfam-flags.gy{width:16px;height:11px;background-position:-128px -77px}.famfamfam-flags.hk{width:16px;height:11px;background-position:-128px -88px}.famfamfam-flags.hm{width:16px;height:11px;background-position:-128px -99px}.famfamfam-flags.hn{width:16px;height:11px;background-position:-128px -110px}.famfamfam-flags.hr{width:16px;height:11px;background-position:0 -122px}.famfamfam-flags.ht{width:16px;height:11px;background-position:-16px -122px}.famfamfam-flags.hu{width:16px;height:11px;background-position:-32px -122px}.famfamfam-flags.id{width:16px;height:11px;background-position:-48px -122px}.famfamfam-flags.ie{width:16px;height:11px;background-position:-64px -122px}.famfamfam-flags.il{width:16px;height:11px;background-position:-80px -122px}.famfamfam-flags.in{width:16px;height:11px;background-position:-96px -122px}.famfamfam-flags.io{width:16px;height:11px;background-position:-112px -122px}.famfamfam-flags.iq{width:16px;height:11px;background-position:-128px -122px}.famfamfam-flags.ir{width:16px;height:11px;background-position:0 -133px}.famfamfam-flags.is{width:16px;height:11px;background-position:-16px -133px}.famfamfam-flags.it{width:16px;height:11px;background-position:-32px -133px}.famfamfam-flags.je{width:16px;height:11px;background-position:-48px -133px}.famfamfam-flags.jm{width:16px;height:11px;background-position:-64px -133px}.famfamfam-flags.jo{width:16px;height:11px;background-position:-80px -133px}.famfamfam-flags.jp{width:16px;height:11px;background-position:-96px -133px}.famfamfam-flags.ke{width:16px;height:11px;background-position:-112px -133px}.famfamfam-flags.kg{width:16px;height:11px;background-position:-128px -133px}.famfamfam-flags.kh{width:16px;height:11px;background-position:-144px 0}.famfamfam-flags.ki{width:16px;height:11px;background-position:-144px -11px}.famfamfam-flags.km{width:16px;height:11px;background-position:-144px -22px}.famfamfam-flags.kn{width:16px;height:11px;background-position:-144px -33px}.famfamfam-flags.kp{width:16px;height:11px;background-position:-144px -44px}.famfamfam-flags.kr{width:16px;height:11px;background-position:-144px -55px}.famfamfam-flags.kw{width:16px;height:11px;background-position:-144px -66px}.famfamfam-flags.ae{width:16px;height:11px;background-position:-144px -77px}.famfamfam-flags.kz{width:16px;height:11px;background-position:-144px -88px}.famfamfam-flags.la{width:16px;height:11px;background-position:-144px -99px}.famfamfam-flags.lb{width:16px;height:11px;background-position:-144px -110px}.famfamfam-flags.lc{width:16px;height:11px;background-position:-144px -121px}.famfamfam-flags.li{width:16px;height:11px;background-position:-144px -132px}.famfamfam-flags.lk{width:16px;height:11px;background-position:0 -144px}.famfamfam-flags.lr{width:16px;height:11px;background-position:-16px -144px}.famfamfam-flags.ls{width:16px;height:11px;background-position:-32px -144px}.famfamfam-flags.lt{width:16px;height:11px;background-position:-48px -144px}.famfamfam-flags.lu{width:16px;height:11px;background-position:-64px -144px}.famfamfam-flags.lv{width:16px;height:11px;background-position:-80px -144px}.famfamfam-flags.ly{width:16px;height:11px;background-position:-96px -144px}.famfamfam-flags.ma{width:16px;height:11px;background-position:-112px -144px}.famfamfam-flags.mc{width:16px;height:11px;background-position:-128px -144px}.famfamfam-flags.md{width:16px;height:11px;background-position:-144px -144px}.famfamfam-flags.ad{width:16px;height:11px;background-position:-160px 0}.famfamfam-flags.mg{width:16px;height:11px;background-position:-160px -11px}.famfamfam-flags.mh{width:16px;height:11px;background-position:-160px -22px}.famfamfam-flags.mk{width:16px;height:11px;background-position:-160px -33px}.famfamfam-flags.ml{width:16px;height:11px;background-position:-160px -44px}.famfamfam-flags.mm{width:16px;height:11px;background-position:-160px -55px}.famfamfam-flags.mn{width:16px;height:11px;background-position:-160px -66px}.famfamfam-flags.mo{width:16px;height:11px;background-position:-160px -77px}.famfamfam-flags.mp{width:16px;height:11px;background-position:-160px -88px}.famfamfam-flags.mq{width:16px;height:11px;background-position:-160px -99px}.famfamfam-flags.mr{width:16px;height:11px;background-position:-160px -110px}.famfamfam-flags.ms{width:16px;height:11px;background-position:-160px -121px}.famfamfam-flags.mt{width:16px;height:11px;background-position:-160px -132px}.famfamfam-flags.mu{width:16px;height:11px;background-position:-160px -143px}.famfamfam-flags.mv{width:16px;height:11px;background-position:0 -155px}.famfamfam-flags.mw{width:16px;height:11px;background-position:-16px -155px}.famfamfam-flags.mx{width:16px;height:11px;background-position:-32px -155px}.famfamfam-flags.my{width:16px;height:11px;background-position:-48px -155px}.famfamfam-flags.mz{width:16px;height:11px;background-position:-64px -155px}.famfamfam-flags.na{width:16px;height:11px;background-position:-80px -155px}.famfamfam-flags.nc{width:16px;height:11px;background-position:-96px -155px}.famfamfam-flags.ne{width:16px;height:11px;background-position:-112px -155px}.famfamfam-flags.nf{width:16px;height:11px;background-position:-128px -155px}.famfamfam-flags.ng{width:16px;height:11px;background-position:-144px -155px}.famfamfam-flags.ni{width:16px;height:11px;background-position:-160px -155px}.famfamfam-flags.bq,.famfamfam-flags.nl{width:16px;height:11px;background-position:-176px 0}.famfamfam-flags.no{width:16px;height:11px;background-position:-176px -11px}.famfamfam-flags.za{width:16px;height:11px;background-position:-176px -22px}.famfamfam-flags.nr{width:16px;height:11px;background-position:-176px -33px}.famfamfam-flags.nu{width:16px;height:11px;background-position:-176px -44px}.famfamfam-flags.nz{width:16px;height:11px;background-position:-176px -55px}.famfamfam-flags.om{width:16px;height:11px;background-position:-176px -66px}.famfamfam-flags.pa{width:16px;height:11px;background-position:-176px -77px}.famfamfam-flags.pe{width:16px;height:11px;background-position:-176px -88px}.famfamfam-flags.pf{width:16px;height:11px;background-position:-176px -99px}.famfamfam-flags.pg{width:16px;height:11px;background-position:-176px -110px}.famfamfam-flags.ph{width:16px;height:11px;background-position:-176px -121px}.famfamfam-flags.pk{width:16px;height:11px;background-position:-176px -132px}.famfamfam-flags.pl{width:16px;height:11px;background-position:-176px -143px}.famfamfam-flags.pm{width:16px;height:11px;background-position:-176px -154px}.famfamfam-flags.pn{width:16px;height:11px;background-position:0 -166px}.famfamfam-flags.pr{width:16px;height:11px;background-position:-16px -166px}.famfamfam-flags.ps{width:16px;height:11px;background-position:-32px -166px}.famfamfam-flags.pt{width:16px;height:11px;background-position:-48px -166px}.famfamfam-flags.pw{width:16px;height:11px;background-position:-64px -166px}.famfamfam-flags.py{width:16px;height:11px;background-position:-80px -166px}.famfamfam-flags.qa{width:16px;height:11px;background-position:-96px -166px}.famfamfam-flags.re{width:16px;height:11px;background-position:-112px -166px}.famfamfam-flags.ro{width:16px;height:11px;background-position:-128px -166px}.famfamfam-flags.rs{width:16px;height:11px;background-position:-144px -166px}.famfamfam-flags.ru{width:16px;height:11px;background-position:-160px -166px}.famfamfam-flags.rw{width:16px;height:11px;background-position:-176px -166px}.famfamfam-flags.sa{width:16px;height:11px;background-position:0 -177px}.famfamfam-flags.sb{width:16px;height:11px;background-position:-16px -177px}.famfamfam-flags.sc{width:16px;height:11px;background-position:-32px -177px}.famfamfam-flags.scotland{width:16px;height:11px;background-position:-48px -177px}.famfamfam-flags.sd{width:16px;height:11px;background-position:-64px -177px}.famfamfam-flags.se{width:16px;height:11px;background-position:-80px -177px}.famfamfam-flags.sg{width:16px;height:11px;background-position:-96px -177px}.famfamfam-flags.sh{width:16px;height:11px;background-position:-112px -177px}.famfamfam-flags.si{width:16px;height:11px;background-position:-128px -177px}.famfamfam-flags.sj{width:16px;height:11px;background-position:-144px -177px}.famfamfam-flags.sk{width:16px;height:11px;background-position:-160px -177px}.famfamfam-flags.sl{width:16px;height:11px;background-position:-176px -177px}.famfamfam-flags.sm{width:16px;height:11px;background-position:-192px 0}.famfamfam-flags.sn{width:16px;height:11px;background-position:-192px -11px}.famfamfam-flags.so{width:16px;height:11px;background-position:-192px -22px}.famfamfam-flags.sr{width:16px;height:11px;background-position:-192px -33px}.famfamfam-flags.st{width:16px;height:11px;background-position:-192px -44px}.famfamfam-flags.sv{width:16px;height:11px;background-position:-192px -55px}.famfamfam-flags.sy{width:16px;height:11px;background-position:-192px -66px}.famfamfam-flags.sz{width:16px;height:11px;background-position:-192px -77px}.famfamfam-flags.tc{width:16px;height:11px;background-position:-192px -88px}.famfamfam-flags.td{width:16px;height:11px;background-position:-192px -99px}.famfamfam-flags.tf{width:16px;height:11px;background-position:-192px -110px}.famfamfam-flags.tg{width:16px;height:11px;background-position:-192px -121px}.famfamfam-flags.th{width:16px;height:11px;background-position:-192px -132px}.famfamfam-flags.tj{width:16px;height:11px;background-position:-192px -143px}.famfamfam-flags.tk{width:16px;height:11px;background-position:-192px -154px}.famfamfam-flags.tl{width:16px;height:11px;background-position:-192px -165px}.famfamfam-flags.tm{width:16px;height:11px;background-position:-192px -176px}.famfamfam-flags.tn{width:16px;height:11px;background-position:0 -188px}.famfamfam-flags.to{width:16px;height:11px;background-position:-16px -188px}.famfamfam-flags.tr{width:16px;height:11px;background-position:-32px -188px}.famfamfam-flags.tt{width:16px;height:11px;background-position:-48px -188px}.famfamfam-flags.tv{width:16px;height:11px;background-position:-64px -188px}.famfamfam-flags.tw{width:16px;height:11px;background-position:-80px -188px}.famfamfam-flags.tz{width:16px;height:11px;background-position:-96px -188px}.famfamfam-flags.ua{width:16px;height:11px;background-position:-112px -188px}.famfamfam-flags.ug{width:16px;height:11px;background-position:-128px -188px}.famfamfam-flags.um{width:16px;height:11px;background-position:-144px -188px}.famfamfam-flags.us{width:16px;height:11px;background-position:-160px -188px}.famfamfam-flags.uy{width:16px;height:11px;background-position:-176px -188px}.famfamfam-flags.uz{width:16px;height:11px;background-position:-192px -188px}.famfamfam-flags.va{width:16px;height:11px;background-position:-208px 0}.famfamfam-flags.vc{width:16px;height:11px;background-position:-208px -11px}.famfamfam-flags.ve{width:16px;height:11px;background-position:-208px -22px}.famfamfam-flags.vg{width:16px;height:11px;background-position:-208px -33px}.famfamfam-flags.vi{width:16px;height:11px;background-position:-208px -44px}.famfamfam-flags.vn{width:16px;height:11px;background-position:-208px -55px}.famfamfam-flags.vu{width:16px;height:11px;background-position:-208px -66px}.famfamfam-flags.wales{width:16px;height:11px;background-position:-208px -77px}.famfamfam-flags.wf{width:16px;height:11px;background-position:-208px -88px}.famfamfam-flags.ws{width:16px;height:11px;background-position:-208px -99px}.famfamfam-flags.ye{width:16px;height:11px;background-position:-208px -110px}.famfamfam-flags.yt{width:16px;height:11px;background-position:-208px -121px}.famfamfam-flags.zw{width:16px;height:11px;background-position:-208px -132px}.famfamfam-flags.ch{width:11px;height:11px;background-position:-208px -143px}.famfamfam-flags.np{width:9px;height:11px;background-position:-208px -154px}
\ No newline at end of file
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/sprite/famfamfam-flags.png b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/sprite/famfamfam-flags.png
new file mode 100644
index 0000000..c820e3b
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/famfamfam-flags/dist/sprite/famfamfam-flags.png differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/.bower.json b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/.bower.json
new file mode 100644
index 0000000..e165e33
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/.bower.json
@@ -0,0 +1,37 @@
+{
+ "name": "font-awesome",
+ "description": "Font Awesome",
+ "keywords": [],
+ "homepage": "http://fontawesome.io",
+ "dependencies": {},
+ "devDependencies": {},
+ "license": [
+ "OFL-1.1",
+ "MIT",
+ "CC-BY-3.0"
+ ],
+ "main": [
+ "less/font-awesome.less",
+ "scss/font-awesome.scss"
+ ],
+ "ignore": [
+ "*/.*",
+ "*.json",
+ "src",
+ "*.yml",
+ "Gemfile",
+ "Gemfile.lock",
+ "*.md"
+ ],
+ "version": "4.6.3",
+ "_release": "4.6.3",
+ "_resolution": {
+ "type": "version",
+ "tag": "v4.6.3",
+ "commit": "0f618911b105195c931ec5d5bef425a2a2806cab"
+ },
+ "_source": "https://github.com/FortAwesome/Font-Awesome.git",
+ "_target": "^4.6.3",
+ "_originalSource": "font-awesome",
+ "_direct": true
+}
\ No newline at end of file
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/.gitignore b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/.gitignore
new file mode 100644
index 0000000..39c4f20
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/.gitignore
@@ -0,0 +1,33 @@
+*.pyc
+*.egg-info
+*.db
+*.db.old
+*.swp
+*.db-journal
+
+.coverage
+.DS_Store
+.installed.cfg
+_gh_pages/*
+
+.idea/*
+.svn/*
+src/website/static/*
+src/website/media/*
+
+bin
+cfcache
+develop-eggs
+dist
+downloads
+eggs
+parts
+tmp
+.sass-cache
+node_modules
+
+src/website/settingslocal.py
+stunnel.log
+
+.ruby-version
+.bundle
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/.npmignore b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/.npmignore
new file mode 100644
index 0000000..54a691f
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/.npmignore
@@ -0,0 +1,42 @@
+*.pyc
+*.egg-info
+*.db
+*.db.old
+*.swp
+*.db-journal
+
+.coverage
+.DS_Store
+.installed.cfg
+_gh_pages/*
+
+.idea/*
+.svn/*
+src/website/static/*
+src/website/media/*
+
+bin
+cfcache
+develop-eggs
+dist
+downloads
+eggs
+parts
+tmp
+.sass-cache
+node_modules
+
+src/website/settingslocal.py
+stunnel.log
+
+.ruby-version
+
+# don't need these in the npm package.
+src/
+_config.yml
+bower.json
+component.json
+composer.json
+CONTRIBUTING.md
+Gemfile
+Gemfile.lock
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/HELP-US-OUT.txt b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/HELP-US-OUT.txt
new file mode 100644
index 0000000..83d083d
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/HELP-US-OUT.txt
@@ -0,0 +1,7 @@
+I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project,
+Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome,
+comprehensive icon sets or copy and paste your own.
+
+Please. Check it out.
+
+-Dave Gandy
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/bower.json b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/bower.json
new file mode 100644
index 0000000..9e21126
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/bower.json
@@ -0,0 +1,22 @@
+{
+ "name": "font-awesome",
+ "description": "Font Awesome",
+ "keywords": [],
+ "homepage": "http://fontawesome.io",
+ "dependencies": {},
+ "devDependencies": {},
+ "license": ["OFL-1.1", "MIT", "CC-BY-3.0"],
+ "main": [
+ "less/font-awesome.less",
+ "scss/font-awesome.scss"
+ ],
+ "ignore": [
+ "*/.*",
+ "*.json",
+ "src",
+ "*.yml",
+ "Gemfile",
+ "Gemfile.lock",
+ "*.md"
+ ]
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/css/font-awesome.css b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/css/font-awesome.css
new file mode 100644
index 0000000..a0b879f
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/css/font-awesome.css
@@ -0,0 +1,2199 @@
+/*!
+ * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */
+/* FONT PATH
+ * -------------------------- */
+@font-face {
+ font-family: 'FontAwesome';
+ src: url('../fonts/fontawesome-webfont.eot?v=4.6.3');
+ src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+.fa {
+ display: inline-block;
+ font: normal normal normal 14px/1 FontAwesome;
+ font-size: inherit;
+ text-rendering: auto;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+/* makes the font 33% larger relative to the icon container */
+.fa-lg {
+ font-size: 1.33333333em;
+ line-height: 0.75em;
+ vertical-align: -15%;
+}
+.fa-2x {
+ font-size: 2em;
+}
+.fa-3x {
+ font-size: 3em;
+}
+.fa-4x {
+ font-size: 4em;
+}
+.fa-5x {
+ font-size: 5em;
+}
+.fa-fw {
+ width: 1.28571429em;
+ text-align: center;
+}
+.fa-ul {
+ padding-left: 0;
+ margin-left: 2.14285714em;
+ list-style-type: none;
+}
+.fa-ul > li {
+ position: relative;
+}
+.fa-li {
+ position: absolute;
+ left: -2.14285714em;
+ width: 2.14285714em;
+ top: 0.14285714em;
+ text-align: center;
+}
+.fa-li.fa-lg {
+ left: -1.85714286em;
+}
+.fa-border {
+ padding: .2em .25em .15em;
+ border: solid 0.08em #eeeeee;
+ border-radius: .1em;
+}
+.fa-pull-left {
+ float: left;
+}
+.fa-pull-right {
+ float: right;
+}
+.fa.fa-pull-left {
+ margin-right: .3em;
+}
+.fa.fa-pull-right {
+ margin-left: .3em;
+}
+/* Deprecated as of 4.4.0 */
+.pull-right {
+ float: right;
+}
+.pull-left {
+ float: left;
+}
+.fa.pull-left {
+ margin-right: .3em;
+}
+.fa.pull-right {
+ margin-left: .3em;
+}
+.fa-spin {
+ -webkit-animation: fa-spin 2s infinite linear;
+ animation: fa-spin 2s infinite linear;
+}
+.fa-pulse {
+ -webkit-animation: fa-spin 1s infinite steps(8);
+ animation: fa-spin 1s infinite steps(8);
+}
+@-webkit-keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+@keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+.fa-rotate-90 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+.fa-rotate-180 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+.fa-rotate-270 {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg);
+}
+.fa-flip-horizontal {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+.fa-flip-vertical {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(1, -1);
+ transform: scale(1, -1);
+}
+:root .fa-rotate-90,
+:root .fa-rotate-180,
+:root .fa-rotate-270,
+:root .fa-flip-horizontal,
+:root .fa-flip-vertical {
+ filter: none;
+}
+.fa-stack {
+ position: relative;
+ display: inline-block;
+ width: 2em;
+ height: 2em;
+ line-height: 2em;
+ vertical-align: middle;
+}
+.fa-stack-1x,
+.fa-stack-2x {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ text-align: center;
+}
+.fa-stack-1x {
+ line-height: inherit;
+}
+.fa-stack-2x {
+ font-size: 2em;
+}
+.fa-inverse {
+ color: #ffffff;
+}
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ readers do not read off random characters that represent icons */
+.fa-glass:before {
+ content: "\f000";
+}
+.fa-music:before {
+ content: "\f001";
+}
+.fa-search:before {
+ content: "\f002";
+}
+.fa-envelope-o:before {
+ content: "\f003";
+}
+.fa-heart:before {
+ content: "\f004";
+}
+.fa-star:before {
+ content: "\f005";
+}
+.fa-star-o:before {
+ content: "\f006";
+}
+.fa-user:before {
+ content: "\f007";
+}
+.fa-film:before {
+ content: "\f008";
+}
+.fa-th-large:before {
+ content: "\f009";
+}
+.fa-th:before {
+ content: "\f00a";
+}
+.fa-th-list:before {
+ content: "\f00b";
+}
+.fa-check:before {
+ content: "\f00c";
+}
+.fa-remove:before,
+.fa-close:before,
+.fa-times:before {
+ content: "\f00d";
+}
+.fa-search-plus:before {
+ content: "\f00e";
+}
+.fa-search-minus:before {
+ content: "\f010";
+}
+.fa-power-off:before {
+ content: "\f011";
+}
+.fa-signal:before {
+ content: "\f012";
+}
+.fa-gear:before,
+.fa-cog:before {
+ content: "\f013";
+}
+.fa-trash-o:before {
+ content: "\f014";
+}
+.fa-home:before {
+ content: "\f015";
+}
+.fa-file-o:before {
+ content: "\f016";
+}
+.fa-clock-o:before {
+ content: "\f017";
+}
+.fa-road:before {
+ content: "\f018";
+}
+.fa-download:before {
+ content: "\f019";
+}
+.fa-arrow-circle-o-down:before {
+ content: "\f01a";
+}
+.fa-arrow-circle-o-up:before {
+ content: "\f01b";
+}
+.fa-inbox:before {
+ content: "\f01c";
+}
+.fa-play-circle-o:before {
+ content: "\f01d";
+}
+.fa-rotate-right:before,
+.fa-repeat:before {
+ content: "\f01e";
+}
+.fa-refresh:before {
+ content: "\f021";
+}
+.fa-list-alt:before {
+ content: "\f022";
+}
+.fa-lock:before {
+ content: "\f023";
+}
+.fa-flag:before {
+ content: "\f024";
+}
+.fa-headphones:before {
+ content: "\f025";
+}
+.fa-volume-off:before {
+ content: "\f026";
+}
+.fa-volume-down:before {
+ content: "\f027";
+}
+.fa-volume-up:before {
+ content: "\f028";
+}
+.fa-qrcode:before {
+ content: "\f029";
+}
+.fa-barcode:before {
+ content: "\f02a";
+}
+.fa-tag:before {
+ content: "\f02b";
+}
+.fa-tags:before {
+ content: "\f02c";
+}
+.fa-book:before {
+ content: "\f02d";
+}
+.fa-bookmark:before {
+ content: "\f02e";
+}
+.fa-print:before {
+ content: "\f02f";
+}
+.fa-camera:before {
+ content: "\f030";
+}
+.fa-font:before {
+ content: "\f031";
+}
+.fa-bold:before {
+ content: "\f032";
+}
+.fa-italic:before {
+ content: "\f033";
+}
+.fa-text-height:before {
+ content: "\f034";
+}
+.fa-text-width:before {
+ content: "\f035";
+}
+.fa-align-left:before {
+ content: "\f036";
+}
+.fa-align-center:before {
+ content: "\f037";
+}
+.fa-align-right:before {
+ content: "\f038";
+}
+.fa-align-justify:before {
+ content: "\f039";
+}
+.fa-list:before {
+ content: "\f03a";
+}
+.fa-dedent:before,
+.fa-outdent:before {
+ content: "\f03b";
+}
+.fa-indent:before {
+ content: "\f03c";
+}
+.fa-video-camera:before {
+ content: "\f03d";
+}
+.fa-photo:before,
+.fa-image:before,
+.fa-picture-o:before {
+ content: "\f03e";
+}
+.fa-pencil:before {
+ content: "\f040";
+}
+.fa-map-marker:before {
+ content: "\f041";
+}
+.fa-adjust:before {
+ content: "\f042";
+}
+.fa-tint:before {
+ content: "\f043";
+}
+.fa-edit:before,
+.fa-pencil-square-o:before {
+ content: "\f044";
+}
+.fa-share-square-o:before {
+ content: "\f045";
+}
+.fa-check-square-o:before {
+ content: "\f046";
+}
+.fa-arrows:before {
+ content: "\f047";
+}
+.fa-step-backward:before {
+ content: "\f048";
+}
+.fa-fast-backward:before {
+ content: "\f049";
+}
+.fa-backward:before {
+ content: "\f04a";
+}
+.fa-play:before {
+ content: "\f04b";
+}
+.fa-pause:before {
+ content: "\f04c";
+}
+.fa-stop:before {
+ content: "\f04d";
+}
+.fa-forward:before {
+ content: "\f04e";
+}
+.fa-fast-forward:before {
+ content: "\f050";
+}
+.fa-step-forward:before {
+ content: "\f051";
+}
+.fa-eject:before {
+ content: "\f052";
+}
+.fa-chevron-left:before {
+ content: "\f053";
+}
+.fa-chevron-right:before {
+ content: "\f054";
+}
+.fa-plus-circle:before {
+ content: "\f055";
+}
+.fa-minus-circle:before {
+ content: "\f056";
+}
+.fa-times-circle:before {
+ content: "\f057";
+}
+.fa-check-circle:before {
+ content: "\f058";
+}
+.fa-question-circle:before {
+ content: "\f059";
+}
+.fa-info-circle:before {
+ content: "\f05a";
+}
+.fa-crosshairs:before {
+ content: "\f05b";
+}
+.fa-times-circle-o:before {
+ content: "\f05c";
+}
+.fa-check-circle-o:before {
+ content: "\f05d";
+}
+.fa-ban:before {
+ content: "\f05e";
+}
+.fa-arrow-left:before {
+ content: "\f060";
+}
+.fa-arrow-right:before {
+ content: "\f061";
+}
+.fa-arrow-up:before {
+ content: "\f062";
+}
+.fa-arrow-down:before {
+ content: "\f063";
+}
+.fa-mail-forward:before,
+.fa-share:before {
+ content: "\f064";
+}
+.fa-expand:before {
+ content: "\f065";
+}
+.fa-compress:before {
+ content: "\f066";
+}
+.fa-plus:before {
+ content: "\f067";
+}
+.fa-minus:before {
+ content: "\f068";
+}
+.fa-asterisk:before {
+ content: "\f069";
+}
+.fa-exclamation-circle:before {
+ content: "\f06a";
+}
+.fa-gift:before {
+ content: "\f06b";
+}
+.fa-leaf:before {
+ content: "\f06c";
+}
+.fa-fire:before {
+ content: "\f06d";
+}
+.fa-eye:before {
+ content: "\f06e";
+}
+.fa-eye-slash:before {
+ content: "\f070";
+}
+.fa-warning:before,
+.fa-exclamation-triangle:before {
+ content: "\f071";
+}
+.fa-plane:before {
+ content: "\f072";
+}
+.fa-calendar:before {
+ content: "\f073";
+}
+.fa-random:before {
+ content: "\f074";
+}
+.fa-comment:before {
+ content: "\f075";
+}
+.fa-magnet:before {
+ content: "\f076";
+}
+.fa-chevron-up:before {
+ content: "\f077";
+}
+.fa-chevron-down:before {
+ content: "\f078";
+}
+.fa-retweet:before {
+ content: "\f079";
+}
+.fa-shopping-cart:before {
+ content: "\f07a";
+}
+.fa-folder:before {
+ content: "\f07b";
+}
+.fa-folder-open:before {
+ content: "\f07c";
+}
+.fa-arrows-v:before {
+ content: "\f07d";
+}
+.fa-arrows-h:before {
+ content: "\f07e";
+}
+.fa-bar-chart-o:before,
+.fa-bar-chart:before {
+ content: "\f080";
+}
+.fa-twitter-square:before {
+ content: "\f081";
+}
+.fa-facebook-square:before {
+ content: "\f082";
+}
+.fa-camera-retro:before {
+ content: "\f083";
+}
+.fa-key:before {
+ content: "\f084";
+}
+.fa-gears:before,
+.fa-cogs:before {
+ content: "\f085";
+}
+.fa-comments:before {
+ content: "\f086";
+}
+.fa-thumbs-o-up:before {
+ content: "\f087";
+}
+.fa-thumbs-o-down:before {
+ content: "\f088";
+}
+.fa-star-half:before {
+ content: "\f089";
+}
+.fa-heart-o:before {
+ content: "\f08a";
+}
+.fa-sign-out:before {
+ content: "\f08b";
+}
+.fa-linkedin-square:before {
+ content: "\f08c";
+}
+.fa-thumb-tack:before {
+ content: "\f08d";
+}
+.fa-external-link:before {
+ content: "\f08e";
+}
+.fa-sign-in:before {
+ content: "\f090";
+}
+.fa-trophy:before {
+ content: "\f091";
+}
+.fa-github-square:before {
+ content: "\f092";
+}
+.fa-upload:before {
+ content: "\f093";
+}
+.fa-lemon-o:before {
+ content: "\f094";
+}
+.fa-phone:before {
+ content: "\f095";
+}
+.fa-square-o:before {
+ content: "\f096";
+}
+.fa-bookmark-o:before {
+ content: "\f097";
+}
+.fa-phone-square:before {
+ content: "\f098";
+}
+.fa-twitter:before {
+ content: "\f099";
+}
+.fa-facebook-f:before,
+.fa-facebook:before {
+ content: "\f09a";
+}
+.fa-github:before {
+ content: "\f09b";
+}
+.fa-unlock:before {
+ content: "\f09c";
+}
+.fa-credit-card:before {
+ content: "\f09d";
+}
+.fa-feed:before,
+.fa-rss:before {
+ content: "\f09e";
+}
+.fa-hdd-o:before {
+ content: "\f0a0";
+}
+.fa-bullhorn:before {
+ content: "\f0a1";
+}
+.fa-bell:before {
+ content: "\f0f3";
+}
+.fa-certificate:before {
+ content: "\f0a3";
+}
+.fa-hand-o-right:before {
+ content: "\f0a4";
+}
+.fa-hand-o-left:before {
+ content: "\f0a5";
+}
+.fa-hand-o-up:before {
+ content: "\f0a6";
+}
+.fa-hand-o-down:before {
+ content: "\f0a7";
+}
+.fa-arrow-circle-left:before {
+ content: "\f0a8";
+}
+.fa-arrow-circle-right:before {
+ content: "\f0a9";
+}
+.fa-arrow-circle-up:before {
+ content: "\f0aa";
+}
+.fa-arrow-circle-down:before {
+ content: "\f0ab";
+}
+.fa-globe:before {
+ content: "\f0ac";
+}
+.fa-wrench:before {
+ content: "\f0ad";
+}
+.fa-tasks:before {
+ content: "\f0ae";
+}
+.fa-filter:before {
+ content: "\f0b0";
+}
+.fa-briefcase:before {
+ content: "\f0b1";
+}
+.fa-arrows-alt:before {
+ content: "\f0b2";
+}
+.fa-group:before,
+.fa-users:before {
+ content: "\f0c0";
+}
+.fa-chain:before,
+.fa-link:before {
+ content: "\f0c1";
+}
+.fa-cloud:before {
+ content: "\f0c2";
+}
+.fa-flask:before {
+ content: "\f0c3";
+}
+.fa-cut:before,
+.fa-scissors:before {
+ content: "\f0c4";
+}
+.fa-copy:before,
+.fa-files-o:before {
+ content: "\f0c5";
+}
+.fa-paperclip:before {
+ content: "\f0c6";
+}
+.fa-save:before,
+.fa-floppy-o:before {
+ content: "\f0c7";
+}
+.fa-square:before {
+ content: "\f0c8";
+}
+.fa-navicon:before,
+.fa-reorder:before,
+.fa-bars:before {
+ content: "\f0c9";
+}
+.fa-list-ul:before {
+ content: "\f0ca";
+}
+.fa-list-ol:before {
+ content: "\f0cb";
+}
+.fa-strikethrough:before {
+ content: "\f0cc";
+}
+.fa-underline:before {
+ content: "\f0cd";
+}
+.fa-table:before {
+ content: "\f0ce";
+}
+.fa-magic:before {
+ content: "\f0d0";
+}
+.fa-truck:before {
+ content: "\f0d1";
+}
+.fa-pinterest:before {
+ content: "\f0d2";
+}
+.fa-pinterest-square:before {
+ content: "\f0d3";
+}
+.fa-google-plus-square:before {
+ content: "\f0d4";
+}
+.fa-google-plus:before {
+ content: "\f0d5";
+}
+.fa-money:before {
+ content: "\f0d6";
+}
+.fa-caret-down:before {
+ content: "\f0d7";
+}
+.fa-caret-up:before {
+ content: "\f0d8";
+}
+.fa-caret-left:before {
+ content: "\f0d9";
+}
+.fa-caret-right:before {
+ content: "\f0da";
+}
+.fa-columns:before {
+ content: "\f0db";
+}
+.fa-unsorted:before,
+.fa-sort:before {
+ content: "\f0dc";
+}
+.fa-sort-down:before,
+.fa-sort-desc:before {
+ content: "\f0dd";
+}
+.fa-sort-up:before,
+.fa-sort-asc:before {
+ content: "\f0de";
+}
+.fa-envelope:before {
+ content: "\f0e0";
+}
+.fa-linkedin:before {
+ content: "\f0e1";
+}
+.fa-rotate-left:before,
+.fa-undo:before {
+ content: "\f0e2";
+}
+.fa-legal:before,
+.fa-gavel:before {
+ content: "\f0e3";
+}
+.fa-dashboard:before,
+.fa-tachometer:before {
+ content: "\f0e4";
+}
+.fa-comment-o:before {
+ content: "\f0e5";
+}
+.fa-comments-o:before {
+ content: "\f0e6";
+}
+.fa-flash:before,
+.fa-bolt:before {
+ content: "\f0e7";
+}
+.fa-sitemap:before {
+ content: "\f0e8";
+}
+.fa-umbrella:before {
+ content: "\f0e9";
+}
+.fa-paste:before,
+.fa-clipboard:before {
+ content: "\f0ea";
+}
+.fa-lightbulb-o:before {
+ content: "\f0eb";
+}
+.fa-exchange:before {
+ content: "\f0ec";
+}
+.fa-cloud-download:before {
+ content: "\f0ed";
+}
+.fa-cloud-upload:before {
+ content: "\f0ee";
+}
+.fa-user-md:before {
+ content: "\f0f0";
+}
+.fa-stethoscope:before {
+ content: "\f0f1";
+}
+.fa-suitcase:before {
+ content: "\f0f2";
+}
+.fa-bell-o:before {
+ content: "\f0a2";
+}
+.fa-coffee:before {
+ content: "\f0f4";
+}
+.fa-cutlery:before {
+ content: "\f0f5";
+}
+.fa-file-text-o:before {
+ content: "\f0f6";
+}
+.fa-building-o:before {
+ content: "\f0f7";
+}
+.fa-hospital-o:before {
+ content: "\f0f8";
+}
+.fa-ambulance:before {
+ content: "\f0f9";
+}
+.fa-medkit:before {
+ content: "\f0fa";
+}
+.fa-fighter-jet:before {
+ content: "\f0fb";
+}
+.fa-beer:before {
+ content: "\f0fc";
+}
+.fa-h-square:before {
+ content: "\f0fd";
+}
+.fa-plus-square:before {
+ content: "\f0fe";
+}
+.fa-angle-double-left:before {
+ content: "\f100";
+}
+.fa-angle-double-right:before {
+ content: "\f101";
+}
+.fa-angle-double-up:before {
+ content: "\f102";
+}
+.fa-angle-double-down:before {
+ content: "\f103";
+}
+.fa-angle-left:before {
+ content: "\f104";
+}
+.fa-angle-right:before {
+ content: "\f105";
+}
+.fa-angle-up:before {
+ content: "\f106";
+}
+.fa-angle-down:before {
+ content: "\f107";
+}
+.fa-desktop:before {
+ content: "\f108";
+}
+.fa-laptop:before {
+ content: "\f109";
+}
+.fa-tablet:before {
+ content: "\f10a";
+}
+.fa-mobile-phone:before,
+.fa-mobile:before {
+ content: "\f10b";
+}
+.fa-circle-o:before {
+ content: "\f10c";
+}
+.fa-quote-left:before {
+ content: "\f10d";
+}
+.fa-quote-right:before {
+ content: "\f10e";
+}
+.fa-spinner:before {
+ content: "\f110";
+}
+.fa-circle:before {
+ content: "\f111";
+}
+.fa-mail-reply:before,
+.fa-reply:before {
+ content: "\f112";
+}
+.fa-github-alt:before {
+ content: "\f113";
+}
+.fa-folder-o:before {
+ content: "\f114";
+}
+.fa-folder-open-o:before {
+ content: "\f115";
+}
+.fa-smile-o:before {
+ content: "\f118";
+}
+.fa-frown-o:before {
+ content: "\f119";
+}
+.fa-meh-o:before {
+ content: "\f11a";
+}
+.fa-gamepad:before {
+ content: "\f11b";
+}
+.fa-keyboard-o:before {
+ content: "\f11c";
+}
+.fa-flag-o:before {
+ content: "\f11d";
+}
+.fa-flag-checkered:before {
+ content: "\f11e";
+}
+.fa-terminal:before {
+ content: "\f120";
+}
+.fa-code:before {
+ content: "\f121";
+}
+.fa-mail-reply-all:before,
+.fa-reply-all:before {
+ content: "\f122";
+}
+.fa-star-half-empty:before,
+.fa-star-half-full:before,
+.fa-star-half-o:before {
+ content: "\f123";
+}
+.fa-location-arrow:before {
+ content: "\f124";
+}
+.fa-crop:before {
+ content: "\f125";
+}
+.fa-code-fork:before {
+ content: "\f126";
+}
+.fa-unlink:before,
+.fa-chain-broken:before {
+ content: "\f127";
+}
+.fa-question:before {
+ content: "\f128";
+}
+.fa-info:before {
+ content: "\f129";
+}
+.fa-exclamation:before {
+ content: "\f12a";
+}
+.fa-superscript:before {
+ content: "\f12b";
+}
+.fa-subscript:before {
+ content: "\f12c";
+}
+.fa-eraser:before {
+ content: "\f12d";
+}
+.fa-puzzle-piece:before {
+ content: "\f12e";
+}
+.fa-microphone:before {
+ content: "\f130";
+}
+.fa-microphone-slash:before {
+ content: "\f131";
+}
+.fa-shield:before {
+ content: "\f132";
+}
+.fa-calendar-o:before {
+ content: "\f133";
+}
+.fa-fire-extinguisher:before {
+ content: "\f134";
+}
+.fa-rocket:before {
+ content: "\f135";
+}
+.fa-maxcdn:before {
+ content: "\f136";
+}
+.fa-chevron-circle-left:before {
+ content: "\f137";
+}
+.fa-chevron-circle-right:before {
+ content: "\f138";
+}
+.fa-chevron-circle-up:before {
+ content: "\f139";
+}
+.fa-chevron-circle-down:before {
+ content: "\f13a";
+}
+.fa-html5:before {
+ content: "\f13b";
+}
+.fa-css3:before {
+ content: "\f13c";
+}
+.fa-anchor:before {
+ content: "\f13d";
+}
+.fa-unlock-alt:before {
+ content: "\f13e";
+}
+.fa-bullseye:before {
+ content: "\f140";
+}
+.fa-ellipsis-h:before {
+ content: "\f141";
+}
+.fa-ellipsis-v:before {
+ content: "\f142";
+}
+.fa-rss-square:before {
+ content: "\f143";
+}
+.fa-play-circle:before {
+ content: "\f144";
+}
+.fa-ticket:before {
+ content: "\f145";
+}
+.fa-minus-square:before {
+ content: "\f146";
+}
+.fa-minus-square-o:before {
+ content: "\f147";
+}
+.fa-level-up:before {
+ content: "\f148";
+}
+.fa-level-down:before {
+ content: "\f149";
+}
+.fa-check-square:before {
+ content: "\f14a";
+}
+.fa-pencil-square:before {
+ content: "\f14b";
+}
+.fa-external-link-square:before {
+ content: "\f14c";
+}
+.fa-share-square:before {
+ content: "\f14d";
+}
+.fa-compass:before {
+ content: "\f14e";
+}
+.fa-toggle-down:before,
+.fa-caret-square-o-down:before {
+ content: "\f150";
+}
+.fa-toggle-up:before,
+.fa-caret-square-o-up:before {
+ content: "\f151";
+}
+.fa-toggle-right:before,
+.fa-caret-square-o-right:before {
+ content: "\f152";
+}
+.fa-euro:before,
+.fa-eur:before {
+ content: "\f153";
+}
+.fa-gbp:before {
+ content: "\f154";
+}
+.fa-dollar:before,
+.fa-usd:before {
+ content: "\f155";
+}
+.fa-rupee:before,
+.fa-inr:before {
+ content: "\f156";
+}
+.fa-cny:before,
+.fa-rmb:before,
+.fa-yen:before,
+.fa-jpy:before {
+ content: "\f157";
+}
+.fa-ruble:before,
+.fa-rouble:before,
+.fa-rub:before {
+ content: "\f158";
+}
+.fa-won:before,
+.fa-krw:before {
+ content: "\f159";
+}
+.fa-bitcoin:before,
+.fa-btc:before {
+ content: "\f15a";
+}
+.fa-file:before {
+ content: "\f15b";
+}
+.fa-file-text:before {
+ content: "\f15c";
+}
+.fa-sort-alpha-asc:before {
+ content: "\f15d";
+}
+.fa-sort-alpha-desc:before {
+ content: "\f15e";
+}
+.fa-sort-amount-asc:before {
+ content: "\f160";
+}
+.fa-sort-amount-desc:before {
+ content: "\f161";
+}
+.fa-sort-numeric-asc:before {
+ content: "\f162";
+}
+.fa-sort-numeric-desc:before {
+ content: "\f163";
+}
+.fa-thumbs-up:before {
+ content: "\f164";
+}
+.fa-thumbs-down:before {
+ content: "\f165";
+}
+.fa-youtube-square:before {
+ content: "\f166";
+}
+.fa-youtube:before {
+ content: "\f167";
+}
+.fa-xing:before {
+ content: "\f168";
+}
+.fa-xing-square:before {
+ content: "\f169";
+}
+.fa-youtube-play:before {
+ content: "\f16a";
+}
+.fa-dropbox:before {
+ content: "\f16b";
+}
+.fa-stack-overflow:before {
+ content: "\f16c";
+}
+.fa-instagram:before {
+ content: "\f16d";
+}
+.fa-flickr:before {
+ content: "\f16e";
+}
+.fa-adn:before {
+ content: "\f170";
+}
+.fa-bitbucket:before {
+ content: "\f171";
+}
+.fa-bitbucket-square:before {
+ content: "\f172";
+}
+.fa-tumblr:before {
+ content: "\f173";
+}
+.fa-tumblr-square:before {
+ content: "\f174";
+}
+.fa-long-arrow-down:before {
+ content: "\f175";
+}
+.fa-long-arrow-up:before {
+ content: "\f176";
+}
+.fa-long-arrow-left:before {
+ content: "\f177";
+}
+.fa-long-arrow-right:before {
+ content: "\f178";
+}
+.fa-apple:before {
+ content: "\f179";
+}
+.fa-windows:before {
+ content: "\f17a";
+}
+.fa-android:before {
+ content: "\f17b";
+}
+.fa-linux:before {
+ content: "\f17c";
+}
+.fa-dribbble:before {
+ content: "\f17d";
+}
+.fa-skype:before {
+ content: "\f17e";
+}
+.fa-foursquare:before {
+ content: "\f180";
+}
+.fa-trello:before {
+ content: "\f181";
+}
+.fa-female:before {
+ content: "\f182";
+}
+.fa-male:before {
+ content: "\f183";
+}
+.fa-gittip:before,
+.fa-gratipay:before {
+ content: "\f184";
+}
+.fa-sun-o:before {
+ content: "\f185";
+}
+.fa-moon-o:before {
+ content: "\f186";
+}
+.fa-archive:before {
+ content: "\f187";
+}
+.fa-bug:before {
+ content: "\f188";
+}
+.fa-vk:before {
+ content: "\f189";
+}
+.fa-weibo:before {
+ content: "\f18a";
+}
+.fa-renren:before {
+ content: "\f18b";
+}
+.fa-pagelines:before {
+ content: "\f18c";
+}
+.fa-stack-exchange:before {
+ content: "\f18d";
+}
+.fa-arrow-circle-o-right:before {
+ content: "\f18e";
+}
+.fa-arrow-circle-o-left:before {
+ content: "\f190";
+}
+.fa-toggle-left:before,
+.fa-caret-square-o-left:before {
+ content: "\f191";
+}
+.fa-dot-circle-o:before {
+ content: "\f192";
+}
+.fa-wheelchair:before {
+ content: "\f193";
+}
+.fa-vimeo-square:before {
+ content: "\f194";
+}
+.fa-turkish-lira:before,
+.fa-try:before {
+ content: "\f195";
+}
+.fa-plus-square-o:before {
+ content: "\f196";
+}
+.fa-space-shuttle:before {
+ content: "\f197";
+}
+.fa-slack:before {
+ content: "\f198";
+}
+.fa-envelope-square:before {
+ content: "\f199";
+}
+.fa-wordpress:before {
+ content: "\f19a";
+}
+.fa-openid:before {
+ content: "\f19b";
+}
+.fa-institution:before,
+.fa-bank:before,
+.fa-university:before {
+ content: "\f19c";
+}
+.fa-mortar-board:before,
+.fa-graduation-cap:before {
+ content: "\f19d";
+}
+.fa-yahoo:before {
+ content: "\f19e";
+}
+.fa-google:before {
+ content: "\f1a0";
+}
+.fa-reddit:before {
+ content: "\f1a1";
+}
+.fa-reddit-square:before {
+ content: "\f1a2";
+}
+.fa-stumbleupon-circle:before {
+ content: "\f1a3";
+}
+.fa-stumbleupon:before {
+ content: "\f1a4";
+}
+.fa-delicious:before {
+ content: "\f1a5";
+}
+.fa-digg:before {
+ content: "\f1a6";
+}
+.fa-pied-piper-pp:before {
+ content: "\f1a7";
+}
+.fa-pied-piper-alt:before {
+ content: "\f1a8";
+}
+.fa-drupal:before {
+ content: "\f1a9";
+}
+.fa-joomla:before {
+ content: "\f1aa";
+}
+.fa-language:before {
+ content: "\f1ab";
+}
+.fa-fax:before {
+ content: "\f1ac";
+}
+.fa-building:before {
+ content: "\f1ad";
+}
+.fa-child:before {
+ content: "\f1ae";
+}
+.fa-paw:before {
+ content: "\f1b0";
+}
+.fa-spoon:before {
+ content: "\f1b1";
+}
+.fa-cube:before {
+ content: "\f1b2";
+}
+.fa-cubes:before {
+ content: "\f1b3";
+}
+.fa-behance:before {
+ content: "\f1b4";
+}
+.fa-behance-square:before {
+ content: "\f1b5";
+}
+.fa-steam:before {
+ content: "\f1b6";
+}
+.fa-steam-square:before {
+ content: "\f1b7";
+}
+.fa-recycle:before {
+ content: "\f1b8";
+}
+.fa-automobile:before,
+.fa-car:before {
+ content: "\f1b9";
+}
+.fa-cab:before,
+.fa-taxi:before {
+ content: "\f1ba";
+}
+.fa-tree:before {
+ content: "\f1bb";
+}
+.fa-spotify:before {
+ content: "\f1bc";
+}
+.fa-deviantart:before {
+ content: "\f1bd";
+}
+.fa-soundcloud:before {
+ content: "\f1be";
+}
+.fa-database:before {
+ content: "\f1c0";
+}
+.fa-file-pdf-o:before {
+ content: "\f1c1";
+}
+.fa-file-word-o:before {
+ content: "\f1c2";
+}
+.fa-file-excel-o:before {
+ content: "\f1c3";
+}
+.fa-file-powerpoint-o:before {
+ content: "\f1c4";
+}
+.fa-file-photo-o:before,
+.fa-file-picture-o:before,
+.fa-file-image-o:before {
+ content: "\f1c5";
+}
+.fa-file-zip-o:before,
+.fa-file-archive-o:before {
+ content: "\f1c6";
+}
+.fa-file-sound-o:before,
+.fa-file-audio-o:before {
+ content: "\f1c7";
+}
+.fa-file-movie-o:before,
+.fa-file-video-o:before {
+ content: "\f1c8";
+}
+.fa-file-code-o:before {
+ content: "\f1c9";
+}
+.fa-vine:before {
+ content: "\f1ca";
+}
+.fa-codepen:before {
+ content: "\f1cb";
+}
+.fa-jsfiddle:before {
+ content: "\f1cc";
+}
+.fa-life-bouy:before,
+.fa-life-buoy:before,
+.fa-life-saver:before,
+.fa-support:before,
+.fa-life-ring:before {
+ content: "\f1cd";
+}
+.fa-circle-o-notch:before {
+ content: "\f1ce";
+}
+.fa-ra:before,
+.fa-resistance:before,
+.fa-rebel:before {
+ content: "\f1d0";
+}
+.fa-ge:before,
+.fa-empire:before {
+ content: "\f1d1";
+}
+.fa-git-square:before {
+ content: "\f1d2";
+}
+.fa-git:before {
+ content: "\f1d3";
+}
+.fa-y-combinator-square:before,
+.fa-yc-square:before,
+.fa-hacker-news:before {
+ content: "\f1d4";
+}
+.fa-tencent-weibo:before {
+ content: "\f1d5";
+}
+.fa-qq:before {
+ content: "\f1d6";
+}
+.fa-wechat:before,
+.fa-weixin:before {
+ content: "\f1d7";
+}
+.fa-send:before,
+.fa-paper-plane:before {
+ content: "\f1d8";
+}
+.fa-send-o:before,
+.fa-paper-plane-o:before {
+ content: "\f1d9";
+}
+.fa-history:before {
+ content: "\f1da";
+}
+.fa-circle-thin:before {
+ content: "\f1db";
+}
+.fa-header:before {
+ content: "\f1dc";
+}
+.fa-paragraph:before {
+ content: "\f1dd";
+}
+.fa-sliders:before {
+ content: "\f1de";
+}
+.fa-share-alt:before {
+ content: "\f1e0";
+}
+.fa-share-alt-square:before {
+ content: "\f1e1";
+}
+.fa-bomb:before {
+ content: "\f1e2";
+}
+.fa-soccer-ball-o:before,
+.fa-futbol-o:before {
+ content: "\f1e3";
+}
+.fa-tty:before {
+ content: "\f1e4";
+}
+.fa-binoculars:before {
+ content: "\f1e5";
+}
+.fa-plug:before {
+ content: "\f1e6";
+}
+.fa-slideshare:before {
+ content: "\f1e7";
+}
+.fa-twitch:before {
+ content: "\f1e8";
+}
+.fa-yelp:before {
+ content: "\f1e9";
+}
+.fa-newspaper-o:before {
+ content: "\f1ea";
+}
+.fa-wifi:before {
+ content: "\f1eb";
+}
+.fa-calculator:before {
+ content: "\f1ec";
+}
+.fa-paypal:before {
+ content: "\f1ed";
+}
+.fa-google-wallet:before {
+ content: "\f1ee";
+}
+.fa-cc-visa:before {
+ content: "\f1f0";
+}
+.fa-cc-mastercard:before {
+ content: "\f1f1";
+}
+.fa-cc-discover:before {
+ content: "\f1f2";
+}
+.fa-cc-amex:before {
+ content: "\f1f3";
+}
+.fa-cc-paypal:before {
+ content: "\f1f4";
+}
+.fa-cc-stripe:before {
+ content: "\f1f5";
+}
+.fa-bell-slash:before {
+ content: "\f1f6";
+}
+.fa-bell-slash-o:before {
+ content: "\f1f7";
+}
+.fa-trash:before {
+ content: "\f1f8";
+}
+.fa-copyright:before {
+ content: "\f1f9";
+}
+.fa-at:before {
+ content: "\f1fa";
+}
+.fa-eyedropper:before {
+ content: "\f1fb";
+}
+.fa-paint-brush:before {
+ content: "\f1fc";
+}
+.fa-birthday-cake:before {
+ content: "\f1fd";
+}
+.fa-area-chart:before {
+ content: "\f1fe";
+}
+.fa-pie-chart:before {
+ content: "\f200";
+}
+.fa-line-chart:before {
+ content: "\f201";
+}
+.fa-lastfm:before {
+ content: "\f202";
+}
+.fa-lastfm-square:before {
+ content: "\f203";
+}
+.fa-toggle-off:before {
+ content: "\f204";
+}
+.fa-toggle-on:before {
+ content: "\f205";
+}
+.fa-bicycle:before {
+ content: "\f206";
+}
+.fa-bus:before {
+ content: "\f207";
+}
+.fa-ioxhost:before {
+ content: "\f208";
+}
+.fa-angellist:before {
+ content: "\f209";
+}
+.fa-cc:before {
+ content: "\f20a";
+}
+.fa-shekel:before,
+.fa-sheqel:before,
+.fa-ils:before {
+ content: "\f20b";
+}
+.fa-meanpath:before {
+ content: "\f20c";
+}
+.fa-buysellads:before {
+ content: "\f20d";
+}
+.fa-connectdevelop:before {
+ content: "\f20e";
+}
+.fa-dashcube:before {
+ content: "\f210";
+}
+.fa-forumbee:before {
+ content: "\f211";
+}
+.fa-leanpub:before {
+ content: "\f212";
+}
+.fa-sellsy:before {
+ content: "\f213";
+}
+.fa-shirtsinbulk:before {
+ content: "\f214";
+}
+.fa-simplybuilt:before {
+ content: "\f215";
+}
+.fa-skyatlas:before {
+ content: "\f216";
+}
+.fa-cart-plus:before {
+ content: "\f217";
+}
+.fa-cart-arrow-down:before {
+ content: "\f218";
+}
+.fa-diamond:before {
+ content: "\f219";
+}
+.fa-ship:before {
+ content: "\f21a";
+}
+.fa-user-secret:before {
+ content: "\f21b";
+}
+.fa-motorcycle:before {
+ content: "\f21c";
+}
+.fa-street-view:before {
+ content: "\f21d";
+}
+.fa-heartbeat:before {
+ content: "\f21e";
+}
+.fa-venus:before {
+ content: "\f221";
+}
+.fa-mars:before {
+ content: "\f222";
+}
+.fa-mercury:before {
+ content: "\f223";
+}
+.fa-intersex:before,
+.fa-transgender:before {
+ content: "\f224";
+}
+.fa-transgender-alt:before {
+ content: "\f225";
+}
+.fa-venus-double:before {
+ content: "\f226";
+}
+.fa-mars-double:before {
+ content: "\f227";
+}
+.fa-venus-mars:before {
+ content: "\f228";
+}
+.fa-mars-stroke:before {
+ content: "\f229";
+}
+.fa-mars-stroke-v:before {
+ content: "\f22a";
+}
+.fa-mars-stroke-h:before {
+ content: "\f22b";
+}
+.fa-neuter:before {
+ content: "\f22c";
+}
+.fa-genderless:before {
+ content: "\f22d";
+}
+.fa-facebook-official:before {
+ content: "\f230";
+}
+.fa-pinterest-p:before {
+ content: "\f231";
+}
+.fa-whatsapp:before {
+ content: "\f232";
+}
+.fa-server:before {
+ content: "\f233";
+}
+.fa-user-plus:before {
+ content: "\f234";
+}
+.fa-user-times:before {
+ content: "\f235";
+}
+.fa-hotel:before,
+.fa-bed:before {
+ content: "\f236";
+}
+.fa-viacoin:before {
+ content: "\f237";
+}
+.fa-train:before {
+ content: "\f238";
+}
+.fa-subway:before {
+ content: "\f239";
+}
+.fa-medium:before {
+ content: "\f23a";
+}
+.fa-yc:before,
+.fa-y-combinator:before {
+ content: "\f23b";
+}
+.fa-optin-monster:before {
+ content: "\f23c";
+}
+.fa-opencart:before {
+ content: "\f23d";
+}
+.fa-expeditedssl:before {
+ content: "\f23e";
+}
+.fa-battery-4:before,
+.fa-battery-full:before {
+ content: "\f240";
+}
+.fa-battery-3:before,
+.fa-battery-three-quarters:before {
+ content: "\f241";
+}
+.fa-battery-2:before,
+.fa-battery-half:before {
+ content: "\f242";
+}
+.fa-battery-1:before,
+.fa-battery-quarter:before {
+ content: "\f243";
+}
+.fa-battery-0:before,
+.fa-battery-empty:before {
+ content: "\f244";
+}
+.fa-mouse-pointer:before {
+ content: "\f245";
+}
+.fa-i-cursor:before {
+ content: "\f246";
+}
+.fa-object-group:before {
+ content: "\f247";
+}
+.fa-object-ungroup:before {
+ content: "\f248";
+}
+.fa-sticky-note:before {
+ content: "\f249";
+}
+.fa-sticky-note-o:before {
+ content: "\f24a";
+}
+.fa-cc-jcb:before {
+ content: "\f24b";
+}
+.fa-cc-diners-club:before {
+ content: "\f24c";
+}
+.fa-clone:before {
+ content: "\f24d";
+}
+.fa-balance-scale:before {
+ content: "\f24e";
+}
+.fa-hourglass-o:before {
+ content: "\f250";
+}
+.fa-hourglass-1:before,
+.fa-hourglass-start:before {
+ content: "\f251";
+}
+.fa-hourglass-2:before,
+.fa-hourglass-half:before {
+ content: "\f252";
+}
+.fa-hourglass-3:before,
+.fa-hourglass-end:before {
+ content: "\f253";
+}
+.fa-hourglass:before {
+ content: "\f254";
+}
+.fa-hand-grab-o:before,
+.fa-hand-rock-o:before {
+ content: "\f255";
+}
+.fa-hand-stop-o:before,
+.fa-hand-paper-o:before {
+ content: "\f256";
+}
+.fa-hand-scissors-o:before {
+ content: "\f257";
+}
+.fa-hand-lizard-o:before {
+ content: "\f258";
+}
+.fa-hand-spock-o:before {
+ content: "\f259";
+}
+.fa-hand-pointer-o:before {
+ content: "\f25a";
+}
+.fa-hand-peace-o:before {
+ content: "\f25b";
+}
+.fa-trademark:before {
+ content: "\f25c";
+}
+.fa-registered:before {
+ content: "\f25d";
+}
+.fa-creative-commons:before {
+ content: "\f25e";
+}
+.fa-gg:before {
+ content: "\f260";
+}
+.fa-gg-circle:before {
+ content: "\f261";
+}
+.fa-tripadvisor:before {
+ content: "\f262";
+}
+.fa-odnoklassniki:before {
+ content: "\f263";
+}
+.fa-odnoklassniki-square:before {
+ content: "\f264";
+}
+.fa-get-pocket:before {
+ content: "\f265";
+}
+.fa-wikipedia-w:before {
+ content: "\f266";
+}
+.fa-safari:before {
+ content: "\f267";
+}
+.fa-chrome:before {
+ content: "\f268";
+}
+.fa-firefox:before {
+ content: "\f269";
+}
+.fa-opera:before {
+ content: "\f26a";
+}
+.fa-internet-explorer:before {
+ content: "\f26b";
+}
+.fa-tv:before,
+.fa-television:before {
+ content: "\f26c";
+}
+.fa-contao:before {
+ content: "\f26d";
+}
+.fa-500px:before {
+ content: "\f26e";
+}
+.fa-amazon:before {
+ content: "\f270";
+}
+.fa-calendar-plus-o:before {
+ content: "\f271";
+}
+.fa-calendar-minus-o:before {
+ content: "\f272";
+}
+.fa-calendar-times-o:before {
+ content: "\f273";
+}
+.fa-calendar-check-o:before {
+ content: "\f274";
+}
+.fa-industry:before {
+ content: "\f275";
+}
+.fa-map-pin:before {
+ content: "\f276";
+}
+.fa-map-signs:before {
+ content: "\f277";
+}
+.fa-map-o:before {
+ content: "\f278";
+}
+.fa-map:before {
+ content: "\f279";
+}
+.fa-commenting:before {
+ content: "\f27a";
+}
+.fa-commenting-o:before {
+ content: "\f27b";
+}
+.fa-houzz:before {
+ content: "\f27c";
+}
+.fa-vimeo:before {
+ content: "\f27d";
+}
+.fa-black-tie:before {
+ content: "\f27e";
+}
+.fa-fonticons:before {
+ content: "\f280";
+}
+.fa-reddit-alien:before {
+ content: "\f281";
+}
+.fa-edge:before {
+ content: "\f282";
+}
+.fa-credit-card-alt:before {
+ content: "\f283";
+}
+.fa-codiepie:before {
+ content: "\f284";
+}
+.fa-modx:before {
+ content: "\f285";
+}
+.fa-fort-awesome:before {
+ content: "\f286";
+}
+.fa-usb:before {
+ content: "\f287";
+}
+.fa-product-hunt:before {
+ content: "\f288";
+}
+.fa-mixcloud:before {
+ content: "\f289";
+}
+.fa-scribd:before {
+ content: "\f28a";
+}
+.fa-pause-circle:before {
+ content: "\f28b";
+}
+.fa-pause-circle-o:before {
+ content: "\f28c";
+}
+.fa-stop-circle:before {
+ content: "\f28d";
+}
+.fa-stop-circle-o:before {
+ content: "\f28e";
+}
+.fa-shopping-bag:before {
+ content: "\f290";
+}
+.fa-shopping-basket:before {
+ content: "\f291";
+}
+.fa-hashtag:before {
+ content: "\f292";
+}
+.fa-bluetooth:before {
+ content: "\f293";
+}
+.fa-bluetooth-b:before {
+ content: "\f294";
+}
+.fa-percent:before {
+ content: "\f295";
+}
+.fa-gitlab:before {
+ content: "\f296";
+}
+.fa-wpbeginner:before {
+ content: "\f297";
+}
+.fa-wpforms:before {
+ content: "\f298";
+}
+.fa-envira:before {
+ content: "\f299";
+}
+.fa-universal-access:before {
+ content: "\f29a";
+}
+.fa-wheelchair-alt:before {
+ content: "\f29b";
+}
+.fa-question-circle-o:before {
+ content: "\f29c";
+}
+.fa-blind:before {
+ content: "\f29d";
+}
+.fa-audio-description:before {
+ content: "\f29e";
+}
+.fa-volume-control-phone:before {
+ content: "\f2a0";
+}
+.fa-braille:before {
+ content: "\f2a1";
+}
+.fa-assistive-listening-systems:before {
+ content: "\f2a2";
+}
+.fa-asl-interpreting:before,
+.fa-american-sign-language-interpreting:before {
+ content: "\f2a3";
+}
+.fa-deafness:before,
+.fa-hard-of-hearing:before,
+.fa-deaf:before {
+ content: "\f2a4";
+}
+.fa-glide:before {
+ content: "\f2a5";
+}
+.fa-glide-g:before {
+ content: "\f2a6";
+}
+.fa-signing:before,
+.fa-sign-language:before {
+ content: "\f2a7";
+}
+.fa-low-vision:before {
+ content: "\f2a8";
+}
+.fa-viadeo:before {
+ content: "\f2a9";
+}
+.fa-viadeo-square:before {
+ content: "\f2aa";
+}
+.fa-snapchat:before {
+ content: "\f2ab";
+}
+.fa-snapchat-ghost:before {
+ content: "\f2ac";
+}
+.fa-snapchat-square:before {
+ content: "\f2ad";
+}
+.fa-pied-piper:before {
+ content: "\f2ae";
+}
+.fa-first-order:before {
+ content: "\f2b0";
+}
+.fa-yoast:before {
+ content: "\f2b1";
+}
+.fa-themeisle:before {
+ content: "\f2b2";
+}
+.fa-google-plus-circle:before,
+.fa-google-plus-official:before {
+ content: "\f2b3";
+}
+.fa-fa:before,
+.fa-font-awesome:before {
+ content: "\f2b4";
+}
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ border: 0;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+ position: static;
+ width: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ clip: auto;
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/css/font-awesome.css.map b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/css/font-awesome.css.map
new file mode 100644
index 0000000..60763a8
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/css/font-awesome.css.map
@@ -0,0 +1,7 @@
+{
+"version": 3,
+"mappings": ";;;;;;;AAGA,UAUC;EATC,WAAW,EAAE,aAAa;EAC1B,GAAG,EAAE,+CAAgE;EACrE,GAAG,EAAE,ySAAmG;EAKxG,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;ACTpB,GAAmB;EACjB,OAAO,EAAE,YAAY;EACrB,IAAI,EAAE,uCAAwD;EAC9D,SAAS,EAAE,OAAO;EAClB,cAAc,EAAE,IAAI;EACpB,sBAAsB,EAAE,WAAW;EACnC,uBAAuB,EAAE,SAAS;EAClC,SAAS,EAAE,eAAe;;;ACN5B,MAAsB;EACpB,SAAS,EAAE,SAAS;EACpB,WAAW,EAAE,MAAS;EACtB,cAAc,EAAE,IAAI;;AAEtB,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;ACVtC,MAAsB;EACpB,KAAK,EAAE,SAAW;EAClB,UAAU,EAAE,MAAM;;ACDpB,MAAsB;EACpB,YAAY,EAAE,CAAC;EACf,WAAW,ECKU,SAAS;EDJ9B,eAAe,EAAE,IAAI;EACrB,WAAK;IAAE,QAAQ,EAAE,QAAQ;;AAE3B,MAAsB;EACpB,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,UAAa;EACnB,KAAK,ECFgB,SAAS;EDG9B,GAAG,EAAE,SAAU;EACf,UAAU,EAAE,MAAM;EAClB,YAAuB;IACrB,IAAI,EAAE,UAA0B;;AEbpC,UAA0B;EACxB,OAAO,EAAE,gBAAgB;EACzB,MAAM,EAAE,iBAA4B;EACpC,aAAa,EAAE,IAAI;;AAGrB,WAAY;EAAE,KAAK,EAAE,KAAK;;AAC1B,UAAW;EAAE,KAAK,EAAE,IAAI;;AAGtB,aAAY;EAAE,YAAY,EAAE,IAAI;AAChC,cAAa;EAAE,WAAW,EAAE,IAAI;;ACXlC,QAAwB;EACtB,iBAAiB,EAAE,0BAA0B;EACrC,SAAS,EAAE,0BAA0B;;AAG/C,SAAyB;EACvB,iBAAiB,EAAE,4BAA4B;EACvC,SAAS,EAAE,4BAA4B;;AAGjD,0BASC;EARC,EAAG;IACD,iBAAiB,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;EAEjC,IAAK;IACH,iBAAiB,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;AAIrC,kBASC;EARC,EAAG;IACD,iBAAiB,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;EAEjC,IAAK;IACH,iBAAiB,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;AC5BrC,aAA8B;ECY5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,aAAgB;EAC/B,aAAa,EAAE,aAAgB;EAC3B,SAAS,EAAE,aAAgB;;ADdrC,cAA8B;ECW5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,cAAgB;EAC/B,aAAa,EAAE,cAAgB;EAC3B,SAAS,EAAE,cAAgB;;ADbrC,cAA8B;ECU5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,cAAgB;EAC/B,aAAa,EAAE,cAAgB;EAC3B,SAAS,EAAE,cAAgB;;ADXrC,mBAAmC;ECejC,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,YAAoB;EACnC,aAAa,EAAE,YAAoB;EAC/B,SAAS,EAAE,YAAoB;;ADjBzC,iBAAmC;ECcjC,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,YAAoB;EACnC,aAAa,EAAE,YAAoB;EAC/B,SAAS,EAAE,YAAoB;;ADZzC;;;;uBAIuC;EACrC,MAAM,EAAE,IAAI;;AEfd,SAAyB;EACvB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,MAAM;;AAExB,0BAAyD;EACvD,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;;AAEpB,YAA4B;EAAE,WAAW,EAAE,OAAO;;AAClD,YAA4B;EAAE,SAAS,EAAE,GAAG;;AAC5C,WAA2B;EAAE,KAAK,ELVZ,IAAI;;;;AMN1B,gBAAgC;EAAE,OAAO,ENoQ1B,GAAO;;AMnQtB,gBAAgC;EAAE,OAAO,EN0W1B,GAAO;;AMzWtB,iBAAiC;EAAE,OAAO,ENmb1B,GAAO;;AMlbvB,qBAAqC;EAAE,OAAO,ENmL1B,GAAO;;AMlL3B,gBAAgC;EAAE,OAAO,ENkR1B,GAAO;;AMjRtB,eAA+B;EAAE,OAAO,ENke1B,GAAO;;AMjerB,iBAAiC;EAAE,OAAO,ENse1B,GAAO;;AMrevB,eAA+B;EAAE,OAAO,EN+iB1B,GAAO;;AM9iBrB,eAA+B;EAAE,OAAO,ENyN1B,GAAO;;AMxNrB,mBAAmC;EAAE,OAAO,ENggB1B,GAAO;;AM/fzB,aAA6B;EAAE,OAAO,EN8f1B,GAAO;;AM7fnB,kBAAkC;EAAE,OAAO,EN+f1B,GAAO;;AM9fxB,gBAAgC;EAAE,OAAO,ENoG1B,GAAO;;AMnGtB;;gBAEgC;EAAE,OAAO,ENkgB1B,GAAO;;AMjgBtB,sBAAsC;EAAE,OAAO,ENua1B,GAAO;;AMta5B,uBAAuC;EAAE,OAAO,ENqa1B,GAAO;;AMpa7B,oBAAoC;EAAE,OAAO,EN+X1B,GAAO;;AM9X1B,iBAAiC;EAAE,OAAO,ENsb1B,GAAO;;AMrbvB;cAC8B;EAAE,OAAO,ENwH1B,GAAO;;AMvHpB,kBAAkC;EAAE,OAAO,ENygB1B,GAAO;;AMxgBxB,eAA+B;EAAE,OAAO,ENmQ1B,GAAO;;AMlQrB,iBAAiC;EAAE,OAAO,EN6L1B,GAAO;;AM5LvB,kBAAkC;EAAE,OAAO,EN0G1B,GAAO;;AMzGxB,eAA+B;EAAE,OAAO,EN+Y1B,GAAO;;AM9YrB,mBAAmC;EAAE,OAAO,ENiJ1B,GAAO;;AMhJzB,8BAA8C;EAAE,OAAO,ENI1B,GAAO;;AMHpC,4BAA4C;EAAE,OAAO,ENM1B,GAAO;;AMLlC,gBAAgC;EAAE,OAAO,ENkQ1B,GAAO;;AMjQtB,wBAAwC;EAAE,OAAO,EN4W1B,GAAO;;AM3W9B;iBACiC;EAAE,OAAO,ENmY1B,GAAO;;AMlYvB,kBAAkC;EAAE,OAAO,EN8X1B,GAAO;;AM7XxB,mBAAmC;EAAE,OAAO,ENiS1B,GAAO;;AMhSzB,eAA+B;EAAE,OAAO,ENoS1B,GAAO;;AMnSrB,eAA+B;EAAE,OAAO,ENgM1B,GAAO;;AM/LrB,qBAAqC;EAAE,OAAO,EN+O1B,GAAO;;AM9O3B,qBAAqC;EAAE,OAAO,EN8hB1B,GAAO;;AM7hB3B,sBAAsC;EAAE,OAAO,EN4hB1B,GAAO;;AM3hB5B,oBAAoC;EAAE,OAAO,EN6hB1B,GAAO;;AM5hB1B,iBAAiC;EAAE,OAAO,EN2W1B,GAAO;;AM1WvB,kBAAkC;EAAE,OAAO,ENW1B,GAAO;;AMVxB,cAA8B;EAAE,OAAO,ENod1B,GAAO;;AMndpB,eAA+B;EAAE,OAAO,ENod1B,GAAO;;AMndrB,eAA+B;EAAE,OAAO,EN2B1B,GAAO;;AM1BrB,mBAAmC;EAAE,OAAO,EN2B1B,GAAO;;AM1BzB,gBAAgC;EAAE,OAAO,ENkW1B,GAAO;;AMjWtB,iBAAiC;EAAE,OAAO,ENwC1B,GAAO;;AMvCvB,eAA+B;EAAE,OAAO,EN8L1B,GAAO;;AM7LrB,eAA+B;EAAE,OAAO,ENmB1B,GAAO;;AMlBrB,iBAAiC;EAAE,OAAO,ENoP1B,GAAO;;AMnPvB,sBAAsC;EAAE,OAAO,ENid1B,GAAO;;AMhd5B,qBAAqC;EAAE,OAAO,ENid1B,GAAO;;AMhd3B,qBAAqC;EAAE,OAAO,EN1C1B,GAAO;;AM2C3B,uBAAuC;EAAE,OAAO,EN7C1B,GAAO;;AM8C7B,sBAAsC;EAAE,OAAO,EN3C1B,GAAO;;AM4C5B,wBAAwC;EAAE,OAAO,EN9C1B,GAAO;;AM+C9B,eAA+B;EAAE,OAAO,ENwQ1B,GAAO;;AMvQrB;kBACkC;EAAE,OAAO,ENmT1B,GAAO;;AMlTxB,iBAAiC;EAAE,OAAO,ENmO1B,GAAO;;AMlOvB,uBAAuC;EAAE,OAAO,ENigB1B,GAAO;;AMhgB7B;;oBAEoC;EAAE,OAAO,EN+T1B,GAAO;;AM9T1B,iBAAiC;EAAE,OAAO,ENwT1B,GAAO;;AMvTvB,qBAAqC;EAAE,OAAO,EN+Q1B,GAAO;;AM9Q3B,iBAAiC;EAAE,OAAO,EN5D1B,GAAO;;AM6DvB,eAA+B;EAAE,OAAO,EN8c1B,GAAO;;AM7crB;0BAC0C;EAAE,OAAO,ENqT1B,GAAO;;AMpThC,yBAAyC;EAAE,OAAO,ENuX1B,GAAO;;AMtX/B,yBAAyC;EAAE,OAAO,EN0C1B,GAAO;;AMzC/B,iBAAiC;EAAE,OAAO,ENjC1B,GAAO;;AMkCvB,wBAAwC;EAAE,OAAO,ENma1B,GAAO;;AMla9B,wBAAwC;EAAE,OAAO,EN4H1B,GAAO;;AM3H9B,mBAAmC;EAAE,OAAO,EN7B1B,GAAO;;AM8BzB,eAA+B;EAAE,OAAO,EN0T1B,GAAO;;AMzTrB,gBAAgC;EAAE,OAAO,ENwS1B,GAAO;;AMvStB,eAA+B;EAAE,OAAO,ENia1B,GAAO;;AMharB,kBAAkC;EAAE,OAAO,ENgK1B,GAAO;;AM/JxB,uBAAuC;EAAE,OAAO,ENuH1B,GAAO;;AMtH7B,uBAAuC;EAAE,OAAO,EN4Z1B,GAAO;;AM3Z7B,gBAAgC;EAAE,OAAO,EN4F1B,GAAO;;AM3FtB,uBAAuC;EAAE,OAAO,ENoC1B,GAAO;;AMnC7B,wBAAwC;EAAE,OAAO,ENoC1B,GAAO;;AMnC9B,sBAAsC;EAAE,OAAO,ENsT1B,GAAO;;AMrT5B,uBAAuC;EAAE,OAAO,ENyQ1B,GAAO;;AMxQ7B,uBAAuC;EAAE,OAAO,ENwb1B,GAAO;;AMvb7B,uBAAuC;EAAE,OAAO,ENsB1B,GAAO;;AMrB7B,0BAA0C;EAAE,OAAO,EN2T1B,GAAO;;AM1ThC,sBAAsC;EAAE,OAAO,ENsM1B,GAAO;;AMrM5B,qBAAqC;EAAE,OAAO,EN6D1B,GAAO;;AM5D3B,yBAAyC;EAAE,OAAO,ENob1B,GAAO;;AMnb/B,yBAAyC;EAAE,OAAO,ENkB1B,GAAO;;AMjB/B,cAA8B;EAAE,OAAO,EN/C1B,GAAO;;AMgDpB,qBAAqC;EAAE,OAAO,EN3D1B,GAAO;;AM4D3B,sBAAsC;EAAE,OAAO,EN3D1B,GAAO;;AM4D5B,mBAAmC;EAAE,OAAO,EN3D1B,GAAO;;AM4DzB,qBAAqC;EAAE,OAAO,EN/D1B,GAAO;;AMgE3B;gBACgC;EAAE,OAAO,ENqV1B,GAAO;;AMpVtB,iBAAiC;EAAE,OAAO,ENuF1B,GAAO;;AMtFvB,mBAAmC;EAAE,OAAO,EN4C1B,GAAO;;AM3CzB,eAA+B;EAAE,OAAO,ENmS1B,GAAO;;AMlSrB,gBAAgC;EAAE,OAAO,ENsP1B,GAAO;;AMrPtB,mBAAmC;EAAE,OAAO,EN9D1B,GAAO;;AM+DzB,6BAA6C;EAAE,OAAO,ENgF1B,GAAO;;AM/EnC,eAA+B;EAAE,OAAO,EN+I1B,GAAO;;AM9IrB,eAA+B;EAAE,OAAO,ENoM1B,GAAO;;AMnMrB,eAA+B;EAAE,OAAO,ENmH1B,GAAO;;AMlHrB,cAA8B;EAAE,OAAO,ENiF1B,GAAO;;AMhFpB,oBAAoC;EAAE,OAAO,ENiF1B,GAAO;;AMhF1B;+BAC+C;EAAE,OAAO,EN0E1B,GAAO;;AMzErC,gBAAgC;EAAE,OAAO,ENmR1B,GAAO;;AMlRtB,mBAAmC;EAAE,OAAO,EN/B1B,GAAO;;AMgCzB,iBAAiC;EAAE,OAAO,ENoS1B,GAAO;;AMnSvB,kBAAkC;EAAE,OAAO,ENwB1B,GAAO;;AMvBxB,iBAAiC;EAAE,OAAO,ENqN1B,GAAO;;AMpNvB,qBAAqC;EAAE,OAAO,ENE1B,GAAO;;AMD3B,uBAAuC;EAAE,OAAO,ENF1B,GAAO;;AMG7B,kBAAkC;EAAE,OAAO,EN2S1B,GAAO;;AM1SxB,wBAAwC;EAAE,OAAO,ENyU1B,GAAO;;AMxU9B,iBAAiC;EAAE,OAAO,EN8G1B,GAAO;;AM7GvB,sBAAsC;EAAE,OAAO,EN+G1B,GAAO;;AM9G5B,mBAAmC;EAAE,OAAO,ENnF1B,GAAO;;AMoFzB,mBAAmC;EAAE,OAAO,ENrF1B,GAAO;;AMsFzB;oBACoC;EAAE,OAAO,EN/E1B,GAAO;;AMgF1B,yBAAyC;EAAE,OAAO,ENua1B,GAAO;;AMta/B,0BAA0C;EAAE,OAAO,ENmE1B,GAAO;;AMlEhC,uBAAuC;EAAE,OAAO,EN5C1B,GAAO;;AM6C7B,cAA8B;EAAE,OAAO,ENqK1B,GAAO;;AMpKpB;eAC+B;EAAE,OAAO,ENK1B,GAAO;;AMJrB,mBAAmC;EAAE,OAAO,ENQ1B,GAAO;;AMPzB,sBAAsC;EAAE,OAAO,ENmY1B,GAAO;;AMlY5B,wBAAwC;EAAE,OAAO,ENiY1B,GAAO;;AMhY9B,oBAAoC;EAAE,OAAO,EN2V1B,GAAO;;AM1V1B,kBAAkC;EAAE,OAAO,ENyI1B,GAAO;;AMxIxB,mBAAmC;EAAE,OAAO,ENyT1B,GAAO;;AMxTzB,0BAA0C;EAAE,OAAO,ENiL1B,GAAO;;AMhLhC,qBAAqC;EAAE,OAAO,EN0X1B,GAAO;;AMzX3B,wBAAwC;EAAE,OAAO,EN8C1B,GAAO;;AM7C9B,kBAAkC;EAAE,OAAO,ENoT1B,GAAO;;AMnTxB,iBAAiC;EAAE,OAAO,EN8Y1B,GAAO;;AM7YvB,wBAAwC;EAAE,OAAO,EN6G1B,GAAO;;AM5G9B,iBAAiC;EAAE,OAAO,EN8Z1B,GAAO;;AM7ZvB,kBAAkC;EAAE,OAAO,EN+J1B,GAAO;;AM9JxB,gBAAgC;EAAE,OAAO,ENsO1B,GAAO;;AMrOtB,mBAAmC;EAAE,OAAO,EN2U1B,GAAO;;AM1UzB,qBAAqC;EAAE,OAAO,EN/E1B,GAAO;;AMgF3B,uBAAuC;EAAE,OAAO,ENoO1B,GAAO;;AMnO7B,kBAAkC;EAAE,OAAO,EN8Y1B,GAAO;;AM7YxB;mBACmC;EAAE,OAAO,ENuC1B,GAAO;;AMtCzB,iBAAiC;EAAE,OAAO,ENiG1B,GAAO;;AMhGvB,iBAAiC;EAAE,OAAO,ENiZ1B,GAAO;;AMhZvB,sBAAsC;EAAE,OAAO,ENR1B,GAAO;;AMS5B,cAA8B;EAAE,OAAO,EN4Q1B,GAAO;;AM3QpB,gBAAgC;EAAE,OAAO,ENgH1B,GAAO;;AM/GtB,mBAAmC;EAAE,OAAO,ENnF1B,GAAO;;AMoFzB,eAA+B;EAAE,OAAO,ENzG1B,GAAO;;AM0GrB,sBAAsC;EAAE,OAAO,ENzD1B,GAAO;;AM0D5B,uBAAuC;EAAE,OAAO,EN0G1B,GAAO;;AMzG7B,sBAAsC;EAAE,OAAO,ENwG1B,GAAO;;AMvG5B,oBAAoC;EAAE,OAAO,ENyG1B,GAAO;;AMxG1B,sBAAsC;EAAE,OAAO,ENqG1B,GAAO;;AMpG5B,4BAA4C;EAAE,OAAO,EN5I1B,GAAO;;AM6IlC,6BAA6C;EAAE,OAAO,ENxI1B,GAAO;;AMyInC,0BAA0C;EAAE,OAAO,ENxI1B,GAAO;;AMyIhC,4BAA4C;EAAE,OAAO,ENhJ1B,GAAO;;AMiJlC,gBAAgC;EAAE,OAAO,ENsF1B,GAAO;;AMrFtB,iBAAiC;EAAE,OAAO,ENia1B,GAAO;;AMhavB,gBAAgC;EAAE,OAAO,ENiV1B,GAAO;;AMhVtB,iBAAiC;EAAE,OAAO,ENgD1B,GAAO;;AM/CvB,oBAAoC;EAAE,OAAO,ENvG1B,GAAO;;AMwG1B,qBAAqC;EAAE,OAAO,ENzI1B,GAAO;;AM0I3B;gBACgC;EAAE,OAAO,ENqY1B,GAAO;;AMpYtB;eAC+B;EAAE,OAAO,ENuI1B,GAAO;;AMtIrB,gBAAgC;EAAE,OAAO,ENpD1B,GAAO;;AMqDtB,gBAAgC;EAAE,OAAO,EN+C1B,GAAO;;AM9CtB;mBACmC;EAAE,OAAO,ENwP1B,GAAO;;AMvPzB;kBACkC;EAAE,OAAO,ENkC1B,GAAO;;AMjCxB,oBAAoC;EAAE,OAAO,ENsL1B,GAAO;;AMrL1B;mBACmC;EAAE,OAAO,EN0C1B,GAAO;;AMzCzB,iBAAiC;EAAE,OAAO,ENiS1B,GAAO;;AMhSvB;;eAE+B;EAAE,OAAO,EN9I1B,GAAO;;AM+IrB,kBAAkC;EAAE,OAAO,ENgI1B,GAAO;;AM/HxB,kBAAkC;EAAE,OAAO,EN8H1B,GAAO;;AM7HxB,wBAAwC;EAAE,OAAO,EN4S1B,GAAO;;AM3S9B,oBAAoC;EAAE,OAAO,ENoW1B,GAAO;;AMnW1B,gBAAgC;EAAE,OAAO,ENmT1B,GAAO;;AMlTtB,gBAAgC;EAAE,OAAO,ENkI1B,GAAO;;AMjItB,gBAAgC;EAAE,OAAO,ENuV1B,GAAO;;AMtVtB,oBAAoC;EAAE,OAAO,ENwL1B,GAAO;;AMvL1B,2BAA2C;EAAE,OAAO,ENyL1B,GAAO;;AMxLjC,6BAA6C;EAAE,OAAO,ENyD1B,GAAO;;AMxDnC,sBAAsC;EAAE,OAAO,ENuD1B,GAAO;;AMtD5B,gBAAgC;EAAE,OAAO,ENsJ1B,GAAO;;AMrJtB,qBAAqC;EAAE,OAAO,ENtH1B,GAAO;;AMuH3B,mBAAmC;EAAE,OAAO,ENhH1B,GAAO;;AMiHzB,qBAAqC;EAAE,OAAO,ENvH1B,GAAO;;AMwH3B,sBAAsC;EAAE,OAAO,ENvH1B,GAAO;;AMwH5B,kBAAkC;EAAE,OAAO,ENvE1B,GAAO;;AMwExB;eAC+B;EAAE,OAAO,EN2P1B,GAAO;;AM1PrB;oBACoC;EAAE,OAAO,EN+P1B,GAAO;;AM9P1B;mBACmC;EAAE,OAAO,EN4P1B,GAAO;;AM3PzB,mBAAmC;EAAE,OAAO,ENxC1B,GAAO;;AMyCzB,mBAAmC;EAAE,OAAO,ENkG1B,GAAO;;AMjGzB;eAC+B;EAAE,OAAO,EN8U1B,GAAO;;AM7UrB;gBACgC;EAAE,OAAO,ENqB1B,GAAO;;AMpBtB;qBACqC;EAAE,OAAO,EN2R1B,GAAO;;AM1R3B,oBAAoC;EAAE,OAAO,ENpF1B,GAAO;;AMqF1B,qBAAqC;EAAE,OAAO,ENnF1B,GAAO;;AMoF3B;eAC+B;EAAE,OAAO,ENjK1B,GAAO;;AMkKrB,kBAAkC;EAAE,OAAO,ENkO1B,GAAO;;AMjOxB,mBAAmC;EAAE,OAAO,ENkU1B,GAAO;;AMjUzB;oBACoC;EAAE,OAAO,EN1G1B,GAAO;;AM2G1B,sBAAsC;EAAE,OAAO,ENgF1B,GAAO;;AM/E5B,mBAAmC;EAAE,OAAO,ENnD1B,GAAO;;AMoDzB,yBAAyC;EAAE,OAAO,ENzG1B,GAAO;;AM0G/B,uBAAuC;EAAE,OAAO,ENzG1B,GAAO;;AM0G7B,kBAAkC;EAAE,OAAO,ENsU1B,GAAO;;AMrUxB,sBAAsC;EAAE,OAAO,EN+P1B,GAAO;;AM9P5B,mBAAmC;EAAE,OAAO,ENsQ1B,GAAO;;AMrQzB,iBAAiC;EAAE,OAAO,ENvL1B,GAAO;;AMwLvB,iBAAiC;EAAE,OAAO,ENzG1B,GAAO;;AM0GvB,kBAAkC;EAAE,OAAO,ENtF1B,GAAO;;AMuFxB,sBAAsC;EAAE,OAAO,EN3B1B,GAAO;;AM4B5B,qBAAqC;EAAE,OAAO,ENxK1B,GAAO;;AMyK3B,qBAAqC;EAAE,OAAO,ENkC1B,GAAO;;AMjC3B,oBAAoC;EAAE,OAAO,EN3O1B,GAAO;;AM4O1B,iBAAiC;EAAE,OAAO,ENiG1B,GAAO;;AMhGvB,sBAAsC;EAAE,OAAO,EN/C1B,GAAO;;AMgD5B,eAA+B;EAAE,OAAO,ENpM1B,GAAO;;AMqMrB,mBAAmC;EAAE,OAAO,ENe1B,GAAO;;AMdzB,sBAAsC;EAAE,OAAO,ENgJ1B,GAAO;;AM/I5B,4BAA4C;EAAE,OAAO,EN5O1B,GAAO;;AM6OlC,6BAA6C;EAAE,OAAO,EN5O1B,GAAO;;AM6OnC,0BAA0C;EAAE,OAAO,EN5O1B,GAAO;;AM6OhC,4BAA4C;EAAE,OAAO,ENhP1B,GAAO;;AMiPlC,qBAAqC;EAAE,OAAO,EN5O1B,GAAO;;AM6O3B,sBAAsC;EAAE,OAAO,EN5O1B,GAAO;;AM6O5B,mBAAmC;EAAE,OAAO,EN5O1B,GAAO;;AM6OzB,qBAAqC;EAAE,OAAO,ENhP1B,GAAO;;AMiP3B,kBAAkC;EAAE,OAAO,ENlG1B,GAAO;;AMmGxB,iBAAiC;EAAE,OAAO,ENuC1B,GAAO;;AMtCvB,iBAAiC;EAAE,OAAO,ENoP1B,GAAO;;AMnPvB;iBACiC;EAAE,OAAO,ENyF1B,GAAO;;AMxFvB,mBAAmC;EAAE,OAAO,EN9I1B,GAAO;;AM+IzB,qBAAqC;EAAE,OAAO,EN0I1B,GAAO;;AMzI3B,sBAAsC;EAAE,OAAO,EN0I1B,GAAO;;AMzI5B,kBAAkC;EAAE,OAAO,ENgN1B,GAAO;;AM/MxB,iBAAiC;EAAE,OAAO,ENnJ1B,GAAO;;AMoJvB;gBACgC;EAAE,OAAO,ENkJ1B,GAAO;;AMjJtB,qBAAqC;EAAE,OAAO,ENnB1B,GAAO;;AMoB3B,mBAAmC;EAAE,OAAO,ENxC1B,GAAO;;AMyCzB,wBAAwC;EAAE,OAAO,ENvC1B,GAAO;;AMwC9B,kBAAkC;EAAE,OAAO,EN0L1B,GAAO;;AMzLxB,kBAAkC;EAAE,OAAO,ENpC1B,GAAO;;AMqCxB,gBAAgC;EAAE,OAAO,ENoE1B,GAAO;;AMnEtB,kBAAkC;EAAE,OAAO,ENpC1B,GAAO;;AMqCxB,qBAAqC;EAAE,OAAO,ENkB1B,GAAO;;AMjB3B,iBAAiC;EAAE,OAAO,ENrD1B,GAAO;;AMsDvB,yBAAyC;EAAE,OAAO,ENvD1B,GAAO;;AMwD/B,mBAAmC;EAAE,OAAO,ENuO1B,GAAO;;AMtOzB,eAA+B;EAAE,OAAO,ENtJ1B,GAAO;;AMuJrB;oBACoC;EAAE,OAAO,ENqI1B,GAAO;;AMpI1B;;sBAEsC;EAAE,OAAO,ENuM1B,GAAO;;AMtM5B,yBAAyC;EAAE,OAAO,ENkC1B,GAAO;;AMjC/B,eAA+B;EAAE,OAAO,EN5I1B,GAAO;;AM6IrB,oBAAoC;EAAE,OAAO,EN7J1B,GAAO;;AM8J1B;uBACuC;EAAE,OAAO,EN1L1B,GAAO;;AM2L7B,mBAAmC;EAAE,OAAO,EN4G1B,GAAO;;AM3GzB,eAA+B;EAAE,OAAO,ENT1B,GAAO;;AMUrB,sBAAsC;EAAE,OAAO,ENhH1B,GAAO;;AMiH5B,sBAAsC;EAAE,OAAO,EN8M1B,GAAO;;AM7M5B,oBAAoC;EAAE,OAAO,ENyM1B,GAAO;;AMxM1B,iBAAiC;EAAE,OAAO,ENvH1B,GAAO;;AMwHvB,uBAAuC;EAAE,OAAO,ENmG1B,GAAO;;AMlG7B,qBAAqC;EAAE,OAAO,EN8C1B,GAAO;;AM7C3B,2BAA2C;EAAE,OAAO,EN8C1B,GAAO;;AM7CjC,iBAAiC;EAAE,OAAO,ENgJ1B,GAAO;;AM/IvB,qBAAqC;EAAE,OAAO,EN5N1B,GAAO;;AM6N3B,4BAA4C;EAAE,OAAO,ENjF1B,GAAO;;AMkFlC,iBAAiC;EAAE,OAAO,ENoH1B,GAAO;;AMnHvB,iBAAiC;EAAE,OAAO,ENkC1B,GAAO;;AMjCvB,8BAA8C;EAAE,OAAO,ENlM1B,GAAO;;AMmMpC,+BAA+C;EAAE,OAAO,ENlM1B,GAAO;;AMmMrC,4BAA4C;EAAE,OAAO,ENlM1B,GAAO;;AMmMlC,8BAA8C;EAAE,OAAO,ENtM1B,GAAO;;AMuMpC,gBAAgC;EAAE,OAAO,EN/B1B,GAAO;;AMgCtB,eAA+B;EAAE,OAAO,ENjK1B,GAAO;;AMkKrB,iBAAiC;EAAE,OAAO,EN9S1B,GAAO;;AM+SvB,qBAAqC;EAAE,OAAO,ENmP1B,GAAO;;AMlP3B,mBAAmC;EAAE,OAAO,EN9O1B,GAAO;;AM+OzB,qBAAqC;EAAE,OAAO,EN/I1B,GAAO;;AMgJ3B,qBAAqC;EAAE,OAAO,EN/I1B,GAAO;;AMgJ3B,qBAAqC;EAAE,OAAO,EN4G1B,GAAO;;AM3G3B,sBAAsC;EAAE,OAAO,ENsE1B,GAAO;;AMrE5B,iBAAiC;EAAE,OAAO,EN2M1B,GAAO;;AM1MvB,uBAAuC;EAAE,OAAO,EN6B1B,GAAO;;AM5B7B,yBAAyC;EAAE,OAAO,EN6B1B,GAAO;;AM5B/B,mBAAmC;EAAE,OAAO,ENhB1B,GAAO;;AMiBzB,qBAAqC;EAAE,OAAO,ENlB1B,GAAO;;AMmB3B,uBAAuC;EAAE,OAAO,ENvN1B,GAAO;;AMwN7B,wBAAwC;EAAE,OAAO,ENiD1B,GAAO;;AMhD9B,+BAA+C;EAAE,OAAO,EN3I1B,GAAO;;AM4IrC,uBAAuC;EAAE,OAAO,ENkH1B,GAAO;;AMjH7B,kBAAkC;EAAE,OAAO,EN1L1B,GAAO;;AM2LxB;8BAC8C;EAAE,OAAO,ENjP1B,GAAO;;AMkPpC;4BAC4C;EAAE,OAAO,ENhP1B,GAAO;;AMiPlC;+BAC+C;EAAE,OAAO,ENnP1B,GAAO;;AMoPrC;cAC8B;EAAE,OAAO,EN7J1B,GAAO;;AM8JpB,cAA8B;EAAE,OAAO,EN/F1B,GAAO;;AMgGpB;cAC8B;EAAE,OAAO,EN4N1B,GAAO;;AM3NpB;cAC8B;EAAE,OAAO,ENvD1B,GAAO;;AMwDpB;;;cAG8B;EAAE,OAAO,ENrD1B,GAAO;;AMsDpB;;cAE8B;EAAE,OAAO,EN8E1B,GAAO;;AM7EpB;cAC8B;EAAE,OAAO,ENtD1B,GAAO;;AMuDpB;cAC8B;EAAE,OAAO,ENzR1B,GAAO;;AM0RpB,eAA+B;EAAE,OAAO,ENzJ1B,GAAO;;AM0JrB,oBAAoC;EAAE,OAAO,EN7I1B,GAAO;;AM8I1B,yBAAyC;EAAE,OAAO,EN2G1B,GAAO;;AM1G/B,0BAA0C;EAAE,OAAO,EN2G1B,GAAO;;AM1GhC,0BAA0C;EAAE,OAAO,EN2G1B,GAAO;;AM1GhC,2BAA2C;EAAE,OAAO,EN2G1B,GAAO;;AM1GjC,2BAA2C;EAAE,OAAO,EN8G1B,GAAO;;AM7GjC,4BAA4C;EAAE,OAAO,EN8G1B,GAAO;;AM7GlC,oBAAoC;EAAE,OAAO,ENgK1B,GAAO;;AM/J1B,sBAAsC;EAAE,OAAO,EN4J1B,GAAO;;AM3J5B,yBAAyC;EAAE,OAAO,ENwO1B,GAAO;;AMvO/B,kBAAkC;EAAE,OAAO,ENqO1B,GAAO;;AMpOxB,eAA+B;EAAE,OAAO,EN+N1B,GAAO;;AM9NrB,sBAAsC;EAAE,OAAO,EN+N1B,GAAO;;AM9N5B,uBAAuC;EAAE,OAAO,ENmO1B,GAAO;;AMlO7B,kBAAkC;EAAE,OAAO,ENxM1B,GAAO;;AMyMxB,yBAAyC;EAAE,OAAO,EN+G1B,GAAO;;AM9G/B,oBAAoC;EAAE,OAAO,ENnF1B,GAAO;;AMoF1B,iBAAiC;EAAE,OAAO,EN/I1B,GAAO;;AMgJvB,cAA8B;EAAE,OAAO,ENhX1B,GAAO;;AMiXpB,oBAAoC;EAAE,OAAO,ENxT1B,GAAO;;AMyT1B,2BAA2C;EAAE,OAAO,ENxT1B,GAAO;;AMyTjC,iBAAiC;EAAE,OAAO,ENyK1B,GAAO;;AMxKvB,wBAAwC;EAAE,OAAO,ENyK1B,GAAO;;AMxK9B,0BAA0C;EAAE,OAAO,ENtD1B,GAAO;;AMuDhC,wBAAwC;EAAE,OAAO,ENpD1B,GAAO;;AMqD9B,0BAA0C;EAAE,OAAO,ENvD1B,GAAO;;AMwDhC,2BAA2C;EAAE,OAAO,ENvD1B,GAAO;;AMwDjC,gBAAgC;EAAE,OAAO,ENxW1B,GAAO;;AMyWtB,kBAAkC;EAAE,OAAO,EN0M1B,GAAO;;AMzMxB,kBAAkC;EAAE,OAAO,ENpX1B,GAAO;;AMqXxB,gBAAgC;EAAE,OAAO,ENpE1B,GAAO;;AMqEtB,mBAAmC;EAAE,OAAO,EN1N1B,GAAO;;AM2NzB,gBAAgC;EAAE,OAAO,ENqE1B,GAAO;;AMpEtB,qBAAqC;EAAE,OAAO,ENtJ1B,GAAO;;AMuJ3B,iBAAiC;EAAE,OAAO,ENuJ1B,GAAO;;AMtJvB,iBAAiC;EAAE,OAAO,EN/L1B,GAAO;;AMgMvB,eAA+B;EAAE,OAAO,EN1D1B,GAAO;;AM2DrB;mBACmC;EAAE,OAAO,ENnI1B,GAAO;;AMoIzB,gBAAgC;EAAE,OAAO,EN2G1B,GAAO;;AM1GtB,iBAAiC;EAAE,OAAO,ENxC1B,GAAO;;AMyCvB,kBAAkC;EAAE,OAAO,ENrX1B,GAAO;;AMsXxB,cAA8B;EAAE,OAAO,ENpU1B,GAAO;;AMqUpB,aAA6B;EAAE,OAAO,ENgL1B,GAAO;;AM/KnB,gBAAgC;EAAE,OAAO,ENqL1B,GAAO;;AMpLtB,iBAAiC;EAAE,OAAO,ENa1B,GAAO;;AMZvB,oBAAoC;EAAE,OAAO,ENrC1B,GAAO;;AMsC1B,yBAAyC;EAAE,OAAO,EN8E1B,GAAO;;AM7E/B,+BAA+C;EAAE,OAAO,ENtX1B,GAAO;;AMuXrC,8BAA8C;EAAE,OAAO,ENxX1B,GAAO;;AMyXpC;8BAC8C;EAAE,OAAO,EN3T1B,GAAO;;AM4TpC,uBAAuC;EAAE,OAAO,ENjP1B,GAAO;;AMkP7B,qBAAqC;EAAE,OAAO,EN+K1B,GAAO;;AM9K3B,uBAAuC;EAAE,OAAO,ENmK1B,GAAO;;AMlK7B;cAC8B;EAAE,OAAO,ENoI1B,GAAO;;AMnIpB,wBAAwC;EAAE,OAAO,ENjB1B,GAAO;;AMkB9B,wBAAwC;EAAE,OAAO,EN6D1B,GAAO;;AM5D9B,gBAAgC;EAAE,OAAO,EN2C1B,GAAO;;AM1CtB,0BAA0C;EAAE,OAAO,EN7O1B,GAAO;;AM8OhC,oBAAoC;EAAE,OAAO,EN2K1B,GAAO;;AM1K1B,iBAAiC;EAAE,OAAO,ENvD1B,GAAO;;AMwDvB;;qBAEqC;EAAE,OAAO,ENsI1B,GAAO;;AMrI3B;yBACyC;EAAE,OAAO,ENjK1B,GAAO;;AMkK/B,gBAAgC;EAAE,OAAO,ENwK1B,GAAO;;AMvKtB,iBAAiC;EAAE,OAAO,ENvK1B,GAAO;;AMwKvB,iBAAiC;EAAE,OAAO,ENhB1B,GAAO;;AMiBvB,wBAAwC;EAAE,OAAO,ENhB1B,GAAO;;AMiB9B,6BAA6C;EAAE,OAAO,ENsE1B,GAAO;;AMrEnC,sBAAsC;EAAE,OAAO,ENoE1B,GAAO;;AMnE5B,oBAAoC;EAAE,OAAO,EN7Q1B,GAAO;;AM8Q1B,eAA+B;EAAE,OAAO,EN1Q1B,GAAO;;AM2QrB,qBAAqC;EAAE,OAAO,ENjD1B,GAAO;;AMkD3B,yBAAyC;EAAE,OAAO,ENjD1B,GAAO;;AMkD/B,iBAAiC;EAAE,OAAO,ENvQ1B,GAAO;;AMwQvB,iBAAiC;EAAE,OAAO,EN9I1B,GAAO;;AM+IvB,mBAAmC;EAAE,OAAO,ENzI1B,GAAO;;AM0IzB,cAA8B;EAAE,OAAO,EN9O1B,GAAO;;AM+OpB,mBAAmC;EAAE,OAAO,EN3W1B,GAAO;;AM4WzB,gBAAgC;EAAE,OAAO,EN9T1B,GAAO;;AM+TtB,cAA8B;EAAE,OAAO,ENnE1B,GAAO;;AMoEpB,gBAAgC;EAAE,OAAO,ENoC1B,GAAO;;AMnCtB,eAA+B;EAAE,OAAO,ENjS1B,GAAO;;AMkSrB,gBAAgC;EAAE,OAAO,ENjS1B,GAAO;;AMkStB,kBAAkC;EAAE,OAAO,ENtY1B,GAAO;;AMuYxB,yBAAyC;EAAE,OAAO,ENtY1B,GAAO;;AMuY/B,gBAAgC;EAAE,OAAO,EN2C1B,GAAO;;AM1CtB,uBAAuC;EAAE,OAAO,EN2C1B,GAAO;;AM1C7B,kBAAkC;EAAE,OAAO,ENvC1B,GAAO;;AMwCxB;cAC8B;EAAE,OAAO,EN3W1B,GAAO;;AM4WpB;eAC+B;EAAE,OAAO,EN2D1B,GAAO;;AM1DrB,eAA+B;EAAE,OAAO,ENuF1B,GAAO;;AMtFrB,kBAAkC;EAAE,OAAO,ENwB1B,GAAO;;AMvBxB,qBAAqC;EAAE,OAAO,ENpS1B,GAAO;;AMqS3B,qBAAqC;EAAE,OAAO,ENkB1B,GAAO;;AMjB3B,mBAAmC;EAAE,OAAO,EN1S1B,GAAO;;AM2SzB,qBAAqC;EAAE,OAAO,ENxP1B,GAAO;;AMyP3B,sBAAsC;EAAE,OAAO,ENjP1B,GAAO;;AMkP5B,uBAAuC;EAAE,OAAO,EN9P1B,GAAO;;AM+P7B,4BAA4C;EAAE,OAAO,ENxP1B,GAAO;;AMyPlC;;uBAEuC;EAAE,OAAO,ENjQ1B,GAAO;;AMkQ7B;yBACyC;EAAE,OAAO,ENvQ1B,GAAO;;AMwQ/B;uBACuC;EAAE,OAAO,ENxQ1B,GAAO;;AMyQ7B;uBACuC;EAAE,OAAO,EN7P1B,GAAO;;AM8P7B,sBAAsC;EAAE,OAAO,EN1Q1B,GAAO;;AM2Q5B,eAA+B;EAAE,OAAO,ENsG1B,GAAO;;AMrGrB,kBAAkC;EAAE,OAAO,ENlV1B,GAAO;;AMmVxB,mBAAmC;EAAE,OAAO,ENnL1B,GAAO;;AMoLzB;;;;oBAIoC;EAAE,OAAO,ENxK1B,GAAO;;AMyK1B,yBAAyC;EAAE,OAAO,ENpW1B,GAAO;;AMqW/B;gBACgC;EAAE,OAAO,EN1E1B,GAAO;;AM2EtB;iBACiC;EAAE,OAAO,ENpT1B,GAAO;;AMqTvB,qBAAqC;EAAE,OAAO,EN1O1B,GAAO;;AM2O3B,cAA8B;EAAE,OAAO,EN5O1B,GAAO;;AM6OpB,sBAAsC;EAAE,OAAO,EN7N1B,GAAO;;AM8N5B,wBAAwC;EAAE,OAAO,ENwB1B,GAAO;;AMvB9B,aAA6B;EAAE,OAAO,ENzF1B,GAAO;;AM0FnB;iBACiC;EAAE,OAAO,EN2F1B,GAAO;;AM1FvB;sBACsC;EAAE,OAAO,EN9H1B,GAAO;;AM+H5B;wBACwC;EAAE,OAAO,EN/H1B,GAAO;;AMgI9B,kBAAkC;EAAE,OAAO,EN3N1B,GAAO;;AM4NxB;sBACsC;EAAE,OAAO,ENrX1B,GAAO;;AMsX5B,iBAAiC;EAAE,OAAO,ENnO1B,GAAO;;AMoOvB,oBAAoC;EAAE,OAAO,ENlI1B,GAAO;;AMmI1B,kBAAkC;EAAE,OAAO,EN1C1B,GAAO;;AM2CxB,oBAAoC;EAAE,OAAO,EN7D1B,GAAO;;AM8D1B,2BAA2C;EAAE,OAAO,EN7D1B,GAAO;;AM8DjC,eAA+B;EAAE,OAAO,ENpb1B,GAAO;;AMqbrB;mBACmC;EAAE,OAAO,ENzQ1B,GAAO;;AM0QzB,cAA8B;EAAE,OAAO,ENsC1B,GAAO;;AMrCpB,qBAAqC;EAAE,OAAO,EN/b1B,GAAO;;AMgc3B,eAA+B;EAAE,OAAO,ENrH1B,GAAO;;AMsHrB,qBAAqC;EAAE,OAAO,ENlD1B,GAAO;;AMmD3B,iBAAiC;EAAE,OAAO,ENsC1B,GAAO;;AMrCvB,eAA+B;EAAE,OAAO,ENiF1B,GAAO;;AMhFrB,sBAAsC;EAAE,OAAO,ENvJ1B,GAAO;;AMwJ5B,eAA+B;EAAE,OAAO,ENuE1B,GAAO;;AMtErB,qBAAqC;EAAE,OAAO,ENjb1B,GAAO;;AMkb3B,iBAAiC;EAAE,OAAO,EN9I1B,GAAO;;AM+IvB,wBAAwC;EAAE,OAAO,ENhQ1B,GAAO;;AMiQ9B,kBAAkC;EAAE,OAAO,EN9Z1B,GAAO;;AM+ZxB,wBAAwC;EAAE,OAAO,ENla1B,GAAO;;AMma9B,sBAAsC;EAAE,OAAO,ENpa1B,GAAO;;AMqa5B,kBAAkC;EAAE,OAAO,ENta1B,GAAO;;AMuaxB,oBAAoC;EAAE,OAAO,ENpa1B,GAAO;;AMqa1B,oBAAoC;EAAE,OAAO,ENpa1B,GAAO;;AMqa1B,qBAAqC;EAAE,OAAO,ENld1B,GAAO;;AMmd3B,uBAAuC;EAAE,OAAO,ENld1B,GAAO;;AMmd7B,gBAAgC;EAAE,OAAO,ENY1B,GAAO;;AMXtB,oBAAoC;EAAE,OAAO,EN3X1B,GAAO;;AM4X1B,aAA6B;EAAE,OAAO,ENre1B,GAAO;;AMsenB,qBAAqC;EAAE,OAAO,ENjV1B,GAAO;;AMkV3B,sBAAsC;EAAE,OAAO,ENpK1B,GAAO;;AMqK5B,wBAAwC;EAAE,OAAO,ENrd1B,GAAO;;AMsd9B,qBAAqC;EAAE,OAAO,EN3f1B,GAAO;;AM4f3B,oBAAoC;EAAE,OAAO,ENvJ1B,GAAO;;AMwJ1B,qBAAqC;EAAE,OAAO,EN5N1B,GAAO;;AM6N3B,iBAAiC;EAAE,OAAO,EN1O1B,GAAO;;AM2OvB,wBAAwC;EAAE,OAAO,EN1O1B,GAAO;;AM2O9B,qBAAqC;EAAE,OAAO,ENN1B,GAAO;;AMO3B,oBAAoC;EAAE,OAAO,ENN1B,GAAO;;AMO1B,kBAAkC;EAAE,OAAO,EN/d1B,GAAO;;AMgexB,cAA8B;EAAE,OAAO,EN7c1B,GAAO;;AM8cpB,kBAAkC;EAAE,OAAO,EN1P1B,GAAO;;AM2PxB,oBAAoC;EAAE,OAAO,ENhhB1B,GAAO;;AMihB1B,aAA6B;EAAE,OAAO,EN7b1B,GAAO;;AM8bnB;;cAE8B;EAAE,OAAO,ENxQ1B,GAAO;;AMyQpB,mBAAmC;EAAE,OAAO,EN7M1B,GAAO;;AM8MzB,qBAAqC;EAAE,OAAO,ENpd1B,GAAO;;AMqd3B,yBAAyC;EAAE,OAAO,ENnZ1B,GAAO;;AMoZ/B,mBAAmC;EAAE,OAAO,ENxY1B,GAAO;;AMyYzB,mBAAmC;EAAE,OAAO,EN1T1B,GAAO;;AM2TzB,kBAAkC;EAAE,OAAO,ENxP1B,GAAO;;AMyPxB,iBAAiC;EAAE,OAAO,ENrH1B,GAAO;;AMsHvB,uBAAuC;EAAE,OAAO,ENzG1B,GAAO;;AM0G7B,sBAAsC;EAAE,OAAO,ENrG1B,GAAO;;AMsG5B,mBAAmC;EAAE,OAAO,ENpG1B,GAAO;;AMqGzB,oBAAoC;EAAE,OAAO,EN5c1B,GAAO;;AM6c1B,0BAA0C;EAAE,OAAO,EN9c1B,GAAO;;AM+chC,kBAAkC;EAAE,OAAO,EN3Y1B,GAAO;;AM4YxB,eAA+B;EAAE,OAAO,ENhH1B,GAAO;;AMiHrB,sBAAsC;EAAE,OAAO,ENI1B,GAAO;;AMH5B,qBAAqC;EAAE,OAAO,EN5M1B,GAAO;;AM6M3B,sBAAsC;EAAE,OAAO,ENpE1B,GAAO;;AMqE5B,oBAAoC;EAAE,OAAO,ENhS1B,GAAO;;AMiS1B,gBAAgC;EAAE,OAAO,ENG1B,GAAO;;AMFtB,eAA+B;EAAE,OAAO,ENtO1B,GAAO;;AMuOrB,kBAAkC;EAAE,OAAO,EN7N1B,GAAO;;AM8NxB,sBAAsC;EAAE,OAAO,ENhC1B,GAAO;;AMiC5B,0BAA0C;EAAE,OAAO,ENhC1B,GAAO;;AMiChC,uBAAuC;EAAE,OAAO,END1B,GAAO;;AME7B,sBAAsC;EAAE,OAAO,EN1O1B,GAAO;;AM2O5B,qBAAqC;EAAE,OAAO,ENF1B,GAAO;;AMG3B,sBAAsC;EAAE,OAAO,EN3O1B,GAAO;;AM4O5B,wBAAwC;EAAE,OAAO,EN1O1B,GAAO;;AM2O9B,wBAAwC;EAAE,OAAO,EN5O1B,GAAO;;AM6O9B,iBAAiC;EAAE,OAAO,ENvN1B,GAAO;;AMwNvB,4BAA4C;EAAE,OAAO,EN9X1B,GAAO;;AM+XlC,sBAAsC;EAAE,OAAO,ENhM1B,GAAO;;AMiM5B,mBAAmC;EAAE,OAAO,ENI1B,GAAO;;AMHzB,iBAAiC;EAAE,OAAO,EN7I1B,GAAO;;AM8IvB,oBAAoC;EAAE,OAAO,ENjB1B,GAAO;;AMkB1B,qBAAqC;EAAE,OAAO,ENhB1B,GAAO;;AMiB3B;cAC8B;EAAE,OAAO,ENphB1B,GAAO;;AMqhBpB,kBAAkC;EAAE,OAAO,ENd1B,GAAO;;AMexB,gBAAgC;EAAE,OAAO,ENnD1B,GAAO;;AMoDtB,iBAAiC;EAAE,OAAO,ENvF1B,GAAO;;AMwFvB,iBAAiC;EAAE,OAAO,ENrP1B,GAAO",
+"sources": ["../scss/_path.scss","../scss/_core.scss","../scss/_larger.scss","../scss/_fixed-width.scss","../scss/_list.scss","../scss/_variables.scss","../scss/_bordered-pulled.scss","../scss/_animated.scss","../scss/_rotated-flipped.scss","../scss/_mixins.scss","../scss/_stacked.scss","../scss/_icons.scss"],
+"names": [],
+"file": "font-awesome.css"
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/css/font-awesome.min.css b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/css/font-awesome.min.css
new file mode 100644
index 0000000..9b27f8e
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/css/font-awesome.min.css
@@ -0,0 +1,4 @@
+/*!
+ * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.6.3');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/FontAwesome.otf b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/FontAwesome.otf
new file mode 100644
index 0000000..d4de13e
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/FontAwesome.otf differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.eot b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.eot
new file mode 100644
index 0000000..c7b00d2
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.eot differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.svg b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.svg
new file mode 100644
index 0000000..8b66187
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.svg
@@ -0,0 +1,685 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.ttf b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.ttf
new file mode 100644
index 0000000..f221e50
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.ttf differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.woff b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.woff
new file mode 100644
index 0000000..6e7483c
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.woff differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.woff2 b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.woff2
new file mode 100644
index 0000000..7eb74fd
Binary files /dev/null and b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/fonts/fontawesome-webfont.woff2 differ
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/animated.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/animated.less
new file mode 100644
index 0000000..66ad52a
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/animated.less
@@ -0,0 +1,34 @@
+// Animated Icons
+// --------------------------
+
+.@{fa-css-prefix}-spin {
+ -webkit-animation: fa-spin 2s infinite linear;
+ animation: fa-spin 2s infinite linear;
+}
+
+.@{fa-css-prefix}-pulse {
+ -webkit-animation: fa-spin 1s infinite steps(8);
+ animation: fa-spin 1s infinite steps(8);
+}
+
+@-webkit-keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+
+@keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/bordered-pulled.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/bordered-pulled.less
new file mode 100644
index 0000000..f1c8ad7
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/bordered-pulled.less
@@ -0,0 +1,25 @@
+// Bordered & Pulled
+// -------------------------
+
+.@{fa-css-prefix}-border {
+ padding: .2em .25em .15em;
+ border: solid .08em @fa-border-color;
+ border-radius: .1em;
+}
+
+.@{fa-css-prefix}-pull-left { float: left; }
+.@{fa-css-prefix}-pull-right { float: right; }
+
+.@{fa-css-prefix} {
+ &.@{fa-css-prefix}-pull-left { margin-right: .3em; }
+ &.@{fa-css-prefix}-pull-right { margin-left: .3em; }
+}
+
+/* Deprecated as of 4.4.0 */
+.pull-right { float: right; }
+.pull-left { float: left; }
+
+.@{fa-css-prefix} {
+ &.pull-left { margin-right: .3em; }
+ &.pull-right { margin-left: .3em; }
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/core.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/core.less
new file mode 100644
index 0000000..c577ac8
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/core.less
@@ -0,0 +1,12 @@
+// Base Class Definition
+// -------------------------
+
+.@{fa-css-prefix} {
+ display: inline-block;
+ font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
+ font-size: inherit; // can't have font-size inherit on line above, so need to override
+ text-rendering: auto; // optimizelegibility throws things off #1094
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/fixed-width.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/fixed-width.less
new file mode 100644
index 0000000..110289f
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/fixed-width.less
@@ -0,0 +1,6 @@
+// Fixed Width Icons
+// -------------------------
+.@{fa-css-prefix}-fw {
+ width: (18em / 14);
+ text-align: center;
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/font-awesome.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/font-awesome.less
new file mode 100644
index 0000000..c44e5f4
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/font-awesome.less
@@ -0,0 +1,18 @@
+/*!
+ * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */
+
+@import "variables.less";
+@import "mixins.less";
+@import "path.less";
+@import "core.less";
+@import "larger.less";
+@import "fixed-width.less";
+@import "list.less";
+@import "bordered-pulled.less";
+@import "animated.less";
+@import "rotated-flipped.less";
+@import "stacked.less";
+@import "icons.less";
+@import "screen-reader.less";
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/icons.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/icons.less
new file mode 100644
index 0000000..ba21b22
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/icons.less
@@ -0,0 +1,733 @@
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ readers do not read off random characters that represent icons */
+
+.@{fa-css-prefix}-glass:before { content: @fa-var-glass; }
+.@{fa-css-prefix}-music:before { content: @fa-var-music; }
+.@{fa-css-prefix}-search:before { content: @fa-var-search; }
+.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; }
+.@{fa-css-prefix}-heart:before { content: @fa-var-heart; }
+.@{fa-css-prefix}-star:before { content: @fa-var-star; }
+.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; }
+.@{fa-css-prefix}-user:before { content: @fa-var-user; }
+.@{fa-css-prefix}-film:before { content: @fa-var-film; }
+.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; }
+.@{fa-css-prefix}-th:before { content: @fa-var-th; }
+.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; }
+.@{fa-css-prefix}-check:before { content: @fa-var-check; }
+.@{fa-css-prefix}-remove:before,
+.@{fa-css-prefix}-close:before,
+.@{fa-css-prefix}-times:before { content: @fa-var-times; }
+.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; }
+.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; }
+.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; }
+.@{fa-css-prefix}-signal:before { content: @fa-var-signal; }
+.@{fa-css-prefix}-gear:before,
+.@{fa-css-prefix}-cog:before { content: @fa-var-cog; }
+.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; }
+.@{fa-css-prefix}-home:before { content: @fa-var-home; }
+.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; }
+.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; }
+.@{fa-css-prefix}-road:before { content: @fa-var-road; }
+.@{fa-css-prefix}-download:before { content: @fa-var-download; }
+.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; }
+.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; }
+.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; }
+.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; }
+.@{fa-css-prefix}-rotate-right:before,
+.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; }
+.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; }
+.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; }
+.@{fa-css-prefix}-lock:before { content: @fa-var-lock; }
+.@{fa-css-prefix}-flag:before { content: @fa-var-flag; }
+.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; }
+.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; }
+.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; }
+.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; }
+.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; }
+.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; }
+.@{fa-css-prefix}-tag:before { content: @fa-var-tag; }
+.@{fa-css-prefix}-tags:before { content: @fa-var-tags; }
+.@{fa-css-prefix}-book:before { content: @fa-var-book; }
+.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; }
+.@{fa-css-prefix}-print:before { content: @fa-var-print; }
+.@{fa-css-prefix}-camera:before { content: @fa-var-camera; }
+.@{fa-css-prefix}-font:before { content: @fa-var-font; }
+.@{fa-css-prefix}-bold:before { content: @fa-var-bold; }
+.@{fa-css-prefix}-italic:before { content: @fa-var-italic; }
+.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; }
+.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; }
+.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; }
+.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; }
+.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; }
+.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; }
+.@{fa-css-prefix}-list:before { content: @fa-var-list; }
+.@{fa-css-prefix}-dedent:before,
+.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; }
+.@{fa-css-prefix}-indent:before { content: @fa-var-indent; }
+.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; }
+.@{fa-css-prefix}-photo:before,
+.@{fa-css-prefix}-image:before,
+.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; }
+.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; }
+.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; }
+.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; }
+.@{fa-css-prefix}-tint:before { content: @fa-var-tint; }
+.@{fa-css-prefix}-edit:before,
+.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; }
+.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; }
+.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; }
+.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; }
+.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; }
+.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; }
+.@{fa-css-prefix}-backward:before { content: @fa-var-backward; }
+.@{fa-css-prefix}-play:before { content: @fa-var-play; }
+.@{fa-css-prefix}-pause:before { content: @fa-var-pause; }
+.@{fa-css-prefix}-stop:before { content: @fa-var-stop; }
+.@{fa-css-prefix}-forward:before { content: @fa-var-forward; }
+.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; }
+.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; }
+.@{fa-css-prefix}-eject:before { content: @fa-var-eject; }
+.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; }
+.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; }
+.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; }
+.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; }
+.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; }
+.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; }
+.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; }
+.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; }
+.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; }
+.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; }
+.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; }
+.@{fa-css-prefix}-ban:before { content: @fa-var-ban; }
+.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; }
+.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; }
+.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; }
+.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; }
+.@{fa-css-prefix}-mail-forward:before,
+.@{fa-css-prefix}-share:before { content: @fa-var-share; }
+.@{fa-css-prefix}-expand:before { content: @fa-var-expand; }
+.@{fa-css-prefix}-compress:before { content: @fa-var-compress; }
+.@{fa-css-prefix}-plus:before { content: @fa-var-plus; }
+.@{fa-css-prefix}-minus:before { content: @fa-var-minus; }
+.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; }
+.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; }
+.@{fa-css-prefix}-gift:before { content: @fa-var-gift; }
+.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; }
+.@{fa-css-prefix}-fire:before { content: @fa-var-fire; }
+.@{fa-css-prefix}-eye:before { content: @fa-var-eye; }
+.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; }
+.@{fa-css-prefix}-warning:before,
+.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; }
+.@{fa-css-prefix}-plane:before { content: @fa-var-plane; }
+.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; }
+.@{fa-css-prefix}-random:before { content: @fa-var-random; }
+.@{fa-css-prefix}-comment:before { content: @fa-var-comment; }
+.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; }
+.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; }
+.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; }
+.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; }
+.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; }
+.@{fa-css-prefix}-folder:before { content: @fa-var-folder; }
+.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; }
+.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; }
+.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; }
+.@{fa-css-prefix}-bar-chart-o:before,
+.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; }
+.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; }
+.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; }
+.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; }
+.@{fa-css-prefix}-key:before { content: @fa-var-key; }
+.@{fa-css-prefix}-gears:before,
+.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; }
+.@{fa-css-prefix}-comments:before { content: @fa-var-comments; }
+.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; }
+.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; }
+.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; }
+.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; }
+.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; }
+.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; }
+.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; }
+.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; }
+.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; }
+.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; }
+.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; }
+.@{fa-css-prefix}-upload:before { content: @fa-var-upload; }
+.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; }
+.@{fa-css-prefix}-phone:before { content: @fa-var-phone; }
+.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; }
+.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; }
+.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; }
+.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; }
+.@{fa-css-prefix}-facebook-f:before,
+.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; }
+.@{fa-css-prefix}-github:before { content: @fa-var-github; }
+.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; }
+.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; }
+.@{fa-css-prefix}-feed:before,
+.@{fa-css-prefix}-rss:before { content: @fa-var-rss; }
+.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; }
+.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; }
+.@{fa-css-prefix}-bell:before { content: @fa-var-bell; }
+.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; }
+.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; }
+.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; }
+.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; }
+.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; }
+.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; }
+.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; }
+.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; }
+.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; }
+.@{fa-css-prefix}-globe:before { content: @fa-var-globe; }
+.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; }
+.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; }
+.@{fa-css-prefix}-filter:before { content: @fa-var-filter; }
+.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; }
+.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; }
+.@{fa-css-prefix}-group:before,
+.@{fa-css-prefix}-users:before { content: @fa-var-users; }
+.@{fa-css-prefix}-chain:before,
+.@{fa-css-prefix}-link:before { content: @fa-var-link; }
+.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; }
+.@{fa-css-prefix}-flask:before { content: @fa-var-flask; }
+.@{fa-css-prefix}-cut:before,
+.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; }
+.@{fa-css-prefix}-copy:before,
+.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; }
+.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; }
+.@{fa-css-prefix}-save:before,
+.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; }
+.@{fa-css-prefix}-square:before { content: @fa-var-square; }
+.@{fa-css-prefix}-navicon:before,
+.@{fa-css-prefix}-reorder:before,
+.@{fa-css-prefix}-bars:before { content: @fa-var-bars; }
+.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; }
+.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; }
+.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; }
+.@{fa-css-prefix}-underline:before { content: @fa-var-underline; }
+.@{fa-css-prefix}-table:before { content: @fa-var-table; }
+.@{fa-css-prefix}-magic:before { content: @fa-var-magic; }
+.@{fa-css-prefix}-truck:before { content: @fa-var-truck; }
+.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; }
+.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; }
+.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; }
+.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; }
+.@{fa-css-prefix}-money:before { content: @fa-var-money; }
+.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; }
+.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; }
+.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; }
+.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; }
+.@{fa-css-prefix}-columns:before { content: @fa-var-columns; }
+.@{fa-css-prefix}-unsorted:before,
+.@{fa-css-prefix}-sort:before { content: @fa-var-sort; }
+.@{fa-css-prefix}-sort-down:before,
+.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; }
+.@{fa-css-prefix}-sort-up:before,
+.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; }
+.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; }
+.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; }
+.@{fa-css-prefix}-rotate-left:before,
+.@{fa-css-prefix}-undo:before { content: @fa-var-undo; }
+.@{fa-css-prefix}-legal:before,
+.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; }
+.@{fa-css-prefix}-dashboard:before,
+.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; }
+.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; }
+.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; }
+.@{fa-css-prefix}-flash:before,
+.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; }
+.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; }
+.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; }
+.@{fa-css-prefix}-paste:before,
+.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; }
+.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; }
+.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; }
+.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; }
+.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; }
+.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; }
+.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; }
+.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; }
+.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; }
+.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; }
+.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; }
+.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; }
+.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; }
+.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; }
+.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; }
+.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; }
+.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; }
+.@{fa-css-prefix}-beer:before { content: @fa-var-beer; }
+.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; }
+.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; }
+.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; }
+.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; }
+.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; }
+.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; }
+.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; }
+.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; }
+.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; }
+.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; }
+.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; }
+.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; }
+.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; }
+.@{fa-css-prefix}-mobile-phone:before,
+.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; }
+.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; }
+.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; }
+.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; }
+.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; }
+.@{fa-css-prefix}-circle:before { content: @fa-var-circle; }
+.@{fa-css-prefix}-mail-reply:before,
+.@{fa-css-prefix}-reply:before { content: @fa-var-reply; }
+.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; }
+.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; }
+.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; }
+.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; }
+.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; }
+.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; }
+.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; }
+.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; }
+.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; }
+.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; }
+.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; }
+.@{fa-css-prefix}-code:before { content: @fa-var-code; }
+.@{fa-css-prefix}-mail-reply-all:before,
+.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; }
+.@{fa-css-prefix}-star-half-empty:before,
+.@{fa-css-prefix}-star-half-full:before,
+.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; }
+.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; }
+.@{fa-css-prefix}-crop:before { content: @fa-var-crop; }
+.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; }
+.@{fa-css-prefix}-unlink:before,
+.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; }
+.@{fa-css-prefix}-question:before { content: @fa-var-question; }
+.@{fa-css-prefix}-info:before { content: @fa-var-info; }
+.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; }
+.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; }
+.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; }
+.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; }
+.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; }
+.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; }
+.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; }
+.@{fa-css-prefix}-shield:before { content: @fa-var-shield; }
+.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; }
+.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; }
+.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; }
+.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; }
+.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; }
+.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; }
+.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; }
+.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; }
+.@{fa-css-prefix}-html5:before { content: @fa-var-html5; }
+.@{fa-css-prefix}-css3:before { content: @fa-var-css3; }
+.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; }
+.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; }
+.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; }
+.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; }
+.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; }
+.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; }
+.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; }
+.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; }
+.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; }
+.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; }
+.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; }
+.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; }
+.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; }
+.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; }
+.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; }
+.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; }
+.@{fa-css-prefix}-compass:before { content: @fa-var-compass; }
+.@{fa-css-prefix}-toggle-down:before,
+.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; }
+.@{fa-css-prefix}-toggle-up:before,
+.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; }
+.@{fa-css-prefix}-toggle-right:before,
+.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; }
+.@{fa-css-prefix}-euro:before,
+.@{fa-css-prefix}-eur:before { content: @fa-var-eur; }
+.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; }
+.@{fa-css-prefix}-dollar:before,
+.@{fa-css-prefix}-usd:before { content: @fa-var-usd; }
+.@{fa-css-prefix}-rupee:before,
+.@{fa-css-prefix}-inr:before { content: @fa-var-inr; }
+.@{fa-css-prefix}-cny:before,
+.@{fa-css-prefix}-rmb:before,
+.@{fa-css-prefix}-yen:before,
+.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; }
+.@{fa-css-prefix}-ruble:before,
+.@{fa-css-prefix}-rouble:before,
+.@{fa-css-prefix}-rub:before { content: @fa-var-rub; }
+.@{fa-css-prefix}-won:before,
+.@{fa-css-prefix}-krw:before { content: @fa-var-krw; }
+.@{fa-css-prefix}-bitcoin:before,
+.@{fa-css-prefix}-btc:before { content: @fa-var-btc; }
+.@{fa-css-prefix}-file:before { content: @fa-var-file; }
+.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; }
+.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; }
+.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; }
+.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; }
+.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; }
+.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; }
+.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; }
+.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; }
+.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; }
+.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; }
+.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; }
+.@{fa-css-prefix}-xing:before { content: @fa-var-xing; }
+.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; }
+.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; }
+.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; }
+.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; }
+.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; }
+.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; }
+.@{fa-css-prefix}-adn:before { content: @fa-var-adn; }
+.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; }
+.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; }
+.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; }
+.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; }
+.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; }
+.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; }
+.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; }
+.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; }
+.@{fa-css-prefix}-apple:before { content: @fa-var-apple; }
+.@{fa-css-prefix}-windows:before { content: @fa-var-windows; }
+.@{fa-css-prefix}-android:before { content: @fa-var-android; }
+.@{fa-css-prefix}-linux:before { content: @fa-var-linux; }
+.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; }
+.@{fa-css-prefix}-skype:before { content: @fa-var-skype; }
+.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; }
+.@{fa-css-prefix}-trello:before { content: @fa-var-trello; }
+.@{fa-css-prefix}-female:before { content: @fa-var-female; }
+.@{fa-css-prefix}-male:before { content: @fa-var-male; }
+.@{fa-css-prefix}-gittip:before,
+.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; }
+.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; }
+.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; }
+.@{fa-css-prefix}-archive:before { content: @fa-var-archive; }
+.@{fa-css-prefix}-bug:before { content: @fa-var-bug; }
+.@{fa-css-prefix}-vk:before { content: @fa-var-vk; }
+.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; }
+.@{fa-css-prefix}-renren:before { content: @fa-var-renren; }
+.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; }
+.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; }
+.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; }
+.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; }
+.@{fa-css-prefix}-toggle-left:before,
+.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; }
+.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; }
+.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; }
+.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; }
+.@{fa-css-prefix}-turkish-lira:before,
+.@{fa-css-prefix}-try:before { content: @fa-var-try; }
+.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; }
+.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; }
+.@{fa-css-prefix}-slack:before { content: @fa-var-slack; }
+.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; }
+.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; }
+.@{fa-css-prefix}-openid:before { content: @fa-var-openid; }
+.@{fa-css-prefix}-institution:before,
+.@{fa-css-prefix}-bank:before,
+.@{fa-css-prefix}-university:before { content: @fa-var-university; }
+.@{fa-css-prefix}-mortar-board:before,
+.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; }
+.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; }
+.@{fa-css-prefix}-google:before { content: @fa-var-google; }
+.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; }
+.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; }
+.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; }
+.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; }
+.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; }
+.@{fa-css-prefix}-digg:before { content: @fa-var-digg; }
+.@{fa-css-prefix}-pied-piper-pp:before { content: @fa-var-pied-piper-pp; }
+.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; }
+.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; }
+.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; }
+.@{fa-css-prefix}-language:before { content: @fa-var-language; }
+.@{fa-css-prefix}-fax:before { content: @fa-var-fax; }
+.@{fa-css-prefix}-building:before { content: @fa-var-building; }
+.@{fa-css-prefix}-child:before { content: @fa-var-child; }
+.@{fa-css-prefix}-paw:before { content: @fa-var-paw; }
+.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; }
+.@{fa-css-prefix}-cube:before { content: @fa-var-cube; }
+.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; }
+.@{fa-css-prefix}-behance:before { content: @fa-var-behance; }
+.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; }
+.@{fa-css-prefix}-steam:before { content: @fa-var-steam; }
+.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; }
+.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; }
+.@{fa-css-prefix}-automobile:before,
+.@{fa-css-prefix}-car:before { content: @fa-var-car; }
+.@{fa-css-prefix}-cab:before,
+.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; }
+.@{fa-css-prefix}-tree:before { content: @fa-var-tree; }
+.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; }
+.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; }
+.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; }
+.@{fa-css-prefix}-database:before { content: @fa-var-database; }
+.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; }
+.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; }
+.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; }
+.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; }
+.@{fa-css-prefix}-file-photo-o:before,
+.@{fa-css-prefix}-file-picture-o:before,
+.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; }
+.@{fa-css-prefix}-file-zip-o:before,
+.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; }
+.@{fa-css-prefix}-file-sound-o:before,
+.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; }
+.@{fa-css-prefix}-file-movie-o:before,
+.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; }
+.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; }
+.@{fa-css-prefix}-vine:before { content: @fa-var-vine; }
+.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; }
+.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; }
+.@{fa-css-prefix}-life-bouy:before,
+.@{fa-css-prefix}-life-buoy:before,
+.@{fa-css-prefix}-life-saver:before,
+.@{fa-css-prefix}-support:before,
+.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; }
+.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; }
+.@{fa-css-prefix}-ra:before,
+.@{fa-css-prefix}-resistance:before,
+.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; }
+.@{fa-css-prefix}-ge:before,
+.@{fa-css-prefix}-empire:before { content: @fa-var-empire; }
+.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; }
+.@{fa-css-prefix}-git:before { content: @fa-var-git; }
+.@{fa-css-prefix}-y-combinator-square:before,
+.@{fa-css-prefix}-yc-square:before,
+.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; }
+.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; }
+.@{fa-css-prefix}-qq:before { content: @fa-var-qq; }
+.@{fa-css-prefix}-wechat:before,
+.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; }
+.@{fa-css-prefix}-send:before,
+.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; }
+.@{fa-css-prefix}-send-o:before,
+.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; }
+.@{fa-css-prefix}-history:before { content: @fa-var-history; }
+.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; }
+.@{fa-css-prefix}-header:before { content: @fa-var-header; }
+.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; }
+.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; }
+.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; }
+.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; }
+.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; }
+.@{fa-css-prefix}-soccer-ball-o:before,
+.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; }
+.@{fa-css-prefix}-tty:before { content: @fa-var-tty; }
+.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; }
+.@{fa-css-prefix}-plug:before { content: @fa-var-plug; }
+.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; }
+.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; }
+.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; }
+.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; }
+.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; }
+.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; }
+.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; }
+.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; }
+.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; }
+.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; }
+.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; }
+.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; }
+.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; }
+.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; }
+.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; }
+.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; }
+.@{fa-css-prefix}-trash:before { content: @fa-var-trash; }
+.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; }
+.@{fa-css-prefix}-at:before { content: @fa-var-at; }
+.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; }
+.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; }
+.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; }
+.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; }
+.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; }
+.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; }
+.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; }
+.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; }
+.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; }
+.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; }
+.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; }
+.@{fa-css-prefix}-bus:before { content: @fa-var-bus; }
+.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; }
+.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; }
+.@{fa-css-prefix}-cc:before { content: @fa-var-cc; }
+.@{fa-css-prefix}-shekel:before,
+.@{fa-css-prefix}-sheqel:before,
+.@{fa-css-prefix}-ils:before { content: @fa-var-ils; }
+.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; }
+.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; }
+.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; }
+.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; }
+.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; }
+.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; }
+.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; }
+.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; }
+.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; }
+.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; }
+.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; }
+.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; }
+.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; }
+.@{fa-css-prefix}-ship:before { content: @fa-var-ship; }
+.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; }
+.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; }
+.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; }
+.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; }
+.@{fa-css-prefix}-venus:before { content: @fa-var-venus; }
+.@{fa-css-prefix}-mars:before { content: @fa-var-mars; }
+.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; }
+.@{fa-css-prefix}-intersex:before,
+.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; }
+.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; }
+.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; }
+.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; }
+.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; }
+.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; }
+.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; }
+.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; }
+.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; }
+.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; }
+.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; }
+.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; }
+.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; }
+.@{fa-css-prefix}-server:before { content: @fa-var-server; }
+.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; }
+.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; }
+.@{fa-css-prefix}-hotel:before,
+.@{fa-css-prefix}-bed:before { content: @fa-var-bed; }
+.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; }
+.@{fa-css-prefix}-train:before { content: @fa-var-train; }
+.@{fa-css-prefix}-subway:before { content: @fa-var-subway; }
+.@{fa-css-prefix}-medium:before { content: @fa-var-medium; }
+.@{fa-css-prefix}-yc:before,
+.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; }
+.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; }
+.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; }
+.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; }
+.@{fa-css-prefix}-battery-4:before,
+.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; }
+.@{fa-css-prefix}-battery-3:before,
+.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; }
+.@{fa-css-prefix}-battery-2:before,
+.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; }
+.@{fa-css-prefix}-battery-1:before,
+.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; }
+.@{fa-css-prefix}-battery-0:before,
+.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; }
+.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; }
+.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; }
+.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; }
+.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; }
+.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; }
+.@{fa-css-prefix}-sticky-note-o:before { content: @fa-var-sticky-note-o; }
+.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; }
+.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; }
+.@{fa-css-prefix}-clone:before { content: @fa-var-clone; }
+.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; }
+.@{fa-css-prefix}-hourglass-o:before { content: @fa-var-hourglass-o; }
+.@{fa-css-prefix}-hourglass-1:before,
+.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; }
+.@{fa-css-prefix}-hourglass-2:before,
+.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; }
+.@{fa-css-prefix}-hourglass-3:before,
+.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; }
+.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; }
+.@{fa-css-prefix}-hand-grab-o:before,
+.@{fa-css-prefix}-hand-rock-o:before { content: @fa-var-hand-rock-o; }
+.@{fa-css-prefix}-hand-stop-o:before,
+.@{fa-css-prefix}-hand-paper-o:before { content: @fa-var-hand-paper-o; }
+.@{fa-css-prefix}-hand-scissors-o:before { content: @fa-var-hand-scissors-o; }
+.@{fa-css-prefix}-hand-lizard-o:before { content: @fa-var-hand-lizard-o; }
+.@{fa-css-prefix}-hand-spock-o:before { content: @fa-var-hand-spock-o; }
+.@{fa-css-prefix}-hand-pointer-o:before { content: @fa-var-hand-pointer-o; }
+.@{fa-css-prefix}-hand-peace-o:before { content: @fa-var-hand-peace-o; }
+.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; }
+.@{fa-css-prefix}-registered:before { content: @fa-var-registered; }
+.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; }
+.@{fa-css-prefix}-gg:before { content: @fa-var-gg; }
+.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; }
+.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; }
+.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; }
+.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; }
+.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; }
+.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; }
+.@{fa-css-prefix}-safari:before { content: @fa-var-safari; }
+.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; }
+.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; }
+.@{fa-css-prefix}-opera:before { content: @fa-var-opera; }
+.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; }
+.@{fa-css-prefix}-tv:before,
+.@{fa-css-prefix}-television:before { content: @fa-var-television; }
+.@{fa-css-prefix}-contao:before { content: @fa-var-contao; }
+.@{fa-css-prefix}-500px:before { content: @fa-var-500px; }
+.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; }
+.@{fa-css-prefix}-calendar-plus-o:before { content: @fa-var-calendar-plus-o; }
+.@{fa-css-prefix}-calendar-minus-o:before { content: @fa-var-calendar-minus-o; }
+.@{fa-css-prefix}-calendar-times-o:before { content: @fa-var-calendar-times-o; }
+.@{fa-css-prefix}-calendar-check-o:before { content: @fa-var-calendar-check-o; }
+.@{fa-css-prefix}-industry:before { content: @fa-var-industry; }
+.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; }
+.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; }
+.@{fa-css-prefix}-map-o:before { content: @fa-var-map-o; }
+.@{fa-css-prefix}-map:before { content: @fa-var-map; }
+.@{fa-css-prefix}-commenting:before { content: @fa-var-commenting; }
+.@{fa-css-prefix}-commenting-o:before { content: @fa-var-commenting-o; }
+.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; }
+.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; }
+.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; }
+.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; }
+.@{fa-css-prefix}-reddit-alien:before { content: @fa-var-reddit-alien; }
+.@{fa-css-prefix}-edge:before { content: @fa-var-edge; }
+.@{fa-css-prefix}-credit-card-alt:before { content: @fa-var-credit-card-alt; }
+.@{fa-css-prefix}-codiepie:before { content: @fa-var-codiepie; }
+.@{fa-css-prefix}-modx:before { content: @fa-var-modx; }
+.@{fa-css-prefix}-fort-awesome:before { content: @fa-var-fort-awesome; }
+.@{fa-css-prefix}-usb:before { content: @fa-var-usb; }
+.@{fa-css-prefix}-product-hunt:before { content: @fa-var-product-hunt; }
+.@{fa-css-prefix}-mixcloud:before { content: @fa-var-mixcloud; }
+.@{fa-css-prefix}-scribd:before { content: @fa-var-scribd; }
+.@{fa-css-prefix}-pause-circle:before { content: @fa-var-pause-circle; }
+.@{fa-css-prefix}-pause-circle-o:before { content: @fa-var-pause-circle-o; }
+.@{fa-css-prefix}-stop-circle:before { content: @fa-var-stop-circle; }
+.@{fa-css-prefix}-stop-circle-o:before { content: @fa-var-stop-circle-o; }
+.@{fa-css-prefix}-shopping-bag:before { content: @fa-var-shopping-bag; }
+.@{fa-css-prefix}-shopping-basket:before { content: @fa-var-shopping-basket; }
+.@{fa-css-prefix}-hashtag:before { content: @fa-var-hashtag; }
+.@{fa-css-prefix}-bluetooth:before { content: @fa-var-bluetooth; }
+.@{fa-css-prefix}-bluetooth-b:before { content: @fa-var-bluetooth-b; }
+.@{fa-css-prefix}-percent:before { content: @fa-var-percent; }
+.@{fa-css-prefix}-gitlab:before { content: @fa-var-gitlab; }
+.@{fa-css-prefix}-wpbeginner:before { content: @fa-var-wpbeginner; }
+.@{fa-css-prefix}-wpforms:before { content: @fa-var-wpforms; }
+.@{fa-css-prefix}-envira:before { content: @fa-var-envira; }
+.@{fa-css-prefix}-universal-access:before { content: @fa-var-universal-access; }
+.@{fa-css-prefix}-wheelchair-alt:before { content: @fa-var-wheelchair-alt; }
+.@{fa-css-prefix}-question-circle-o:before { content: @fa-var-question-circle-o; }
+.@{fa-css-prefix}-blind:before { content: @fa-var-blind; }
+.@{fa-css-prefix}-audio-description:before { content: @fa-var-audio-description; }
+.@{fa-css-prefix}-volume-control-phone:before { content: @fa-var-volume-control-phone; }
+.@{fa-css-prefix}-braille:before { content: @fa-var-braille; }
+.@{fa-css-prefix}-assistive-listening-systems:before { content: @fa-var-assistive-listening-systems; }
+.@{fa-css-prefix}-asl-interpreting:before,
+.@{fa-css-prefix}-american-sign-language-interpreting:before { content: @fa-var-american-sign-language-interpreting; }
+.@{fa-css-prefix}-deafness:before,
+.@{fa-css-prefix}-hard-of-hearing:before,
+.@{fa-css-prefix}-deaf:before { content: @fa-var-deaf; }
+.@{fa-css-prefix}-glide:before { content: @fa-var-glide; }
+.@{fa-css-prefix}-glide-g:before { content: @fa-var-glide-g; }
+.@{fa-css-prefix}-signing:before,
+.@{fa-css-prefix}-sign-language:before { content: @fa-var-sign-language; }
+.@{fa-css-prefix}-low-vision:before { content: @fa-var-low-vision; }
+.@{fa-css-prefix}-viadeo:before { content: @fa-var-viadeo; }
+.@{fa-css-prefix}-viadeo-square:before { content: @fa-var-viadeo-square; }
+.@{fa-css-prefix}-snapchat:before { content: @fa-var-snapchat; }
+.@{fa-css-prefix}-snapchat-ghost:before { content: @fa-var-snapchat-ghost; }
+.@{fa-css-prefix}-snapchat-square:before { content: @fa-var-snapchat-square; }
+.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; }
+.@{fa-css-prefix}-first-order:before { content: @fa-var-first-order; }
+.@{fa-css-prefix}-yoast:before { content: @fa-var-yoast; }
+.@{fa-css-prefix}-themeisle:before { content: @fa-var-themeisle; }
+.@{fa-css-prefix}-google-plus-circle:before,
+.@{fa-css-prefix}-google-plus-official:before { content: @fa-var-google-plus-official; }
+.@{fa-css-prefix}-fa:before,
+.@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; }
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/larger.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/larger.less
new file mode 100644
index 0000000..c9d6467
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/larger.less
@@ -0,0 +1,13 @@
+// Icon Sizes
+// -------------------------
+
+/* makes the font 33% larger relative to the icon container */
+.@{fa-css-prefix}-lg {
+ font-size: (4em / 3);
+ line-height: (3em / 4);
+ vertical-align: -15%;
+}
+.@{fa-css-prefix}-2x { font-size: 2em; }
+.@{fa-css-prefix}-3x { font-size: 3em; }
+.@{fa-css-prefix}-4x { font-size: 4em; }
+.@{fa-css-prefix}-5x { font-size: 5em; }
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/list.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/list.less
new file mode 100644
index 0000000..0b44038
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/list.less
@@ -0,0 +1,19 @@
+// List Icons
+// -------------------------
+
+.@{fa-css-prefix}-ul {
+ padding-left: 0;
+ margin-left: @fa-li-width;
+ list-style-type: none;
+ > li { position: relative; }
+}
+.@{fa-css-prefix}-li {
+ position: absolute;
+ left: -@fa-li-width;
+ width: @fa-li-width;
+ top: (2em / 14);
+ text-align: center;
+ &.@{fa-css-prefix}-lg {
+ left: (-@fa-li-width + (4em / 14));
+ }
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/mixins.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/mixins.less
new file mode 100644
index 0000000..beef231
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/mixins.less
@@ -0,0 +1,60 @@
+// Mixins
+// --------------------------
+
+.fa-icon() {
+ display: inline-block;
+ font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
+ font-size: inherit; // can't have font-size inherit on line above, so need to override
+ text-rendering: auto; // optimizelegibility throws things off #1094
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+}
+
+.fa-icon-rotate(@degrees, @rotation) {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})";
+ -webkit-transform: rotate(@degrees);
+ -ms-transform: rotate(@degrees);
+ transform: rotate(@degrees);
+}
+
+.fa-icon-flip(@horiz, @vert, @rotation) {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)";
+ -webkit-transform: scale(@horiz, @vert);
+ -ms-transform: scale(@horiz, @vert);
+ transform: scale(@horiz, @vert);
+}
+
+
+// Only display content to screen readers. A la Bootstrap 4.
+//
+// See: http://a11yproject.com/posts/how-to-hide-content/
+
+.sr-only() {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0,0,0,0);
+ border: 0;
+}
+
+// Use in conjunction with .sr-only to only display content when it's focused.
+//
+// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
+//
+// Credit: HTML5 Boilerplate
+
+.sr-only-focusable() {
+ &:active,
+ &:focus {
+ position: static;
+ width: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ clip: auto;
+ }
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/path.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/path.less
new file mode 100644
index 0000000..835be41
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/path.less
@@ -0,0 +1,15 @@
+/* FONT PATH
+ * -------------------------- */
+
+@font-face {
+ font-family: 'FontAwesome';
+ src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
+ src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
+ url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),
+ url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
+ url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
+ url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
+ // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
+ font-weight: normal;
+ font-style: normal;
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/rotated-flipped.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/rotated-flipped.less
new file mode 100644
index 0000000..f6ba814
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/rotated-flipped.less
@@ -0,0 +1,20 @@
+// Rotated & Flipped Icons
+// -------------------------
+
+.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
+.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
+.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
+
+.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
+.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
+
+// Hook for IE8-9
+// -------------------------
+
+:root .@{fa-css-prefix}-rotate-90,
+:root .@{fa-css-prefix}-rotate-180,
+:root .@{fa-css-prefix}-rotate-270,
+:root .@{fa-css-prefix}-flip-horizontal,
+:root .@{fa-css-prefix}-flip-vertical {
+ filter: none;
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/screen-reader.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/screen-reader.less
new file mode 100644
index 0000000..11c1881
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/screen-reader.less
@@ -0,0 +1,5 @@
+// Screen Readers
+// -------------------------
+
+.sr-only { .sr-only(); }
+.sr-only-focusable { .sr-only-focusable(); }
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/stacked.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/stacked.less
new file mode 100644
index 0000000..fc53fb0
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/stacked.less
@@ -0,0 +1,20 @@
+// Stacked Icons
+// -------------------------
+
+.@{fa-css-prefix}-stack {
+ position: relative;
+ display: inline-block;
+ width: 2em;
+ height: 2em;
+ line-height: 2em;
+ vertical-align: middle;
+}
+.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ text-align: center;
+}
+.@{fa-css-prefix}-stack-1x { line-height: inherit; }
+.@{fa-css-prefix}-stack-2x { font-size: 2em; }
+.@{fa-css-prefix}-inverse { color: @fa-inverse; }
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/variables.less b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/variables.less
new file mode 100644
index 0000000..2b33819
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/less/variables.less
@@ -0,0 +1,744 @@
+// Variables
+// --------------------------
+
+@fa-font-path: "../fonts";
+@fa-font-size-base: 14px;
+@fa-line-height-base: 1;
+//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.6.3/fonts"; // for referencing Bootstrap CDN font files directly
+@fa-css-prefix: fa;
+@fa-version: "4.6.3";
+@fa-border-color: #eee;
+@fa-inverse: #fff;
+@fa-li-width: (30em / 14);
+
+@fa-var-500px: "\f26e";
+@fa-var-adjust: "\f042";
+@fa-var-adn: "\f170";
+@fa-var-align-center: "\f037";
+@fa-var-align-justify: "\f039";
+@fa-var-align-left: "\f036";
+@fa-var-align-right: "\f038";
+@fa-var-amazon: "\f270";
+@fa-var-ambulance: "\f0f9";
+@fa-var-american-sign-language-interpreting: "\f2a3";
+@fa-var-anchor: "\f13d";
+@fa-var-android: "\f17b";
+@fa-var-angellist: "\f209";
+@fa-var-angle-double-down: "\f103";
+@fa-var-angle-double-left: "\f100";
+@fa-var-angle-double-right: "\f101";
+@fa-var-angle-double-up: "\f102";
+@fa-var-angle-down: "\f107";
+@fa-var-angle-left: "\f104";
+@fa-var-angle-right: "\f105";
+@fa-var-angle-up: "\f106";
+@fa-var-apple: "\f179";
+@fa-var-archive: "\f187";
+@fa-var-area-chart: "\f1fe";
+@fa-var-arrow-circle-down: "\f0ab";
+@fa-var-arrow-circle-left: "\f0a8";
+@fa-var-arrow-circle-o-down: "\f01a";
+@fa-var-arrow-circle-o-left: "\f190";
+@fa-var-arrow-circle-o-right: "\f18e";
+@fa-var-arrow-circle-o-up: "\f01b";
+@fa-var-arrow-circle-right: "\f0a9";
+@fa-var-arrow-circle-up: "\f0aa";
+@fa-var-arrow-down: "\f063";
+@fa-var-arrow-left: "\f060";
+@fa-var-arrow-right: "\f061";
+@fa-var-arrow-up: "\f062";
+@fa-var-arrows: "\f047";
+@fa-var-arrows-alt: "\f0b2";
+@fa-var-arrows-h: "\f07e";
+@fa-var-arrows-v: "\f07d";
+@fa-var-asl-interpreting: "\f2a3";
+@fa-var-assistive-listening-systems: "\f2a2";
+@fa-var-asterisk: "\f069";
+@fa-var-at: "\f1fa";
+@fa-var-audio-description: "\f29e";
+@fa-var-automobile: "\f1b9";
+@fa-var-backward: "\f04a";
+@fa-var-balance-scale: "\f24e";
+@fa-var-ban: "\f05e";
+@fa-var-bank: "\f19c";
+@fa-var-bar-chart: "\f080";
+@fa-var-bar-chart-o: "\f080";
+@fa-var-barcode: "\f02a";
+@fa-var-bars: "\f0c9";
+@fa-var-battery-0: "\f244";
+@fa-var-battery-1: "\f243";
+@fa-var-battery-2: "\f242";
+@fa-var-battery-3: "\f241";
+@fa-var-battery-4: "\f240";
+@fa-var-battery-empty: "\f244";
+@fa-var-battery-full: "\f240";
+@fa-var-battery-half: "\f242";
+@fa-var-battery-quarter: "\f243";
+@fa-var-battery-three-quarters: "\f241";
+@fa-var-bed: "\f236";
+@fa-var-beer: "\f0fc";
+@fa-var-behance: "\f1b4";
+@fa-var-behance-square: "\f1b5";
+@fa-var-bell: "\f0f3";
+@fa-var-bell-o: "\f0a2";
+@fa-var-bell-slash: "\f1f6";
+@fa-var-bell-slash-o: "\f1f7";
+@fa-var-bicycle: "\f206";
+@fa-var-binoculars: "\f1e5";
+@fa-var-birthday-cake: "\f1fd";
+@fa-var-bitbucket: "\f171";
+@fa-var-bitbucket-square: "\f172";
+@fa-var-bitcoin: "\f15a";
+@fa-var-black-tie: "\f27e";
+@fa-var-blind: "\f29d";
+@fa-var-bluetooth: "\f293";
+@fa-var-bluetooth-b: "\f294";
+@fa-var-bold: "\f032";
+@fa-var-bolt: "\f0e7";
+@fa-var-bomb: "\f1e2";
+@fa-var-book: "\f02d";
+@fa-var-bookmark: "\f02e";
+@fa-var-bookmark-o: "\f097";
+@fa-var-braille: "\f2a1";
+@fa-var-briefcase: "\f0b1";
+@fa-var-btc: "\f15a";
+@fa-var-bug: "\f188";
+@fa-var-building: "\f1ad";
+@fa-var-building-o: "\f0f7";
+@fa-var-bullhorn: "\f0a1";
+@fa-var-bullseye: "\f140";
+@fa-var-bus: "\f207";
+@fa-var-buysellads: "\f20d";
+@fa-var-cab: "\f1ba";
+@fa-var-calculator: "\f1ec";
+@fa-var-calendar: "\f073";
+@fa-var-calendar-check-o: "\f274";
+@fa-var-calendar-minus-o: "\f272";
+@fa-var-calendar-o: "\f133";
+@fa-var-calendar-plus-o: "\f271";
+@fa-var-calendar-times-o: "\f273";
+@fa-var-camera: "\f030";
+@fa-var-camera-retro: "\f083";
+@fa-var-car: "\f1b9";
+@fa-var-caret-down: "\f0d7";
+@fa-var-caret-left: "\f0d9";
+@fa-var-caret-right: "\f0da";
+@fa-var-caret-square-o-down: "\f150";
+@fa-var-caret-square-o-left: "\f191";
+@fa-var-caret-square-o-right: "\f152";
+@fa-var-caret-square-o-up: "\f151";
+@fa-var-caret-up: "\f0d8";
+@fa-var-cart-arrow-down: "\f218";
+@fa-var-cart-plus: "\f217";
+@fa-var-cc: "\f20a";
+@fa-var-cc-amex: "\f1f3";
+@fa-var-cc-diners-club: "\f24c";
+@fa-var-cc-discover: "\f1f2";
+@fa-var-cc-jcb: "\f24b";
+@fa-var-cc-mastercard: "\f1f1";
+@fa-var-cc-paypal: "\f1f4";
+@fa-var-cc-stripe: "\f1f5";
+@fa-var-cc-visa: "\f1f0";
+@fa-var-certificate: "\f0a3";
+@fa-var-chain: "\f0c1";
+@fa-var-chain-broken: "\f127";
+@fa-var-check: "\f00c";
+@fa-var-check-circle: "\f058";
+@fa-var-check-circle-o: "\f05d";
+@fa-var-check-square: "\f14a";
+@fa-var-check-square-o: "\f046";
+@fa-var-chevron-circle-down: "\f13a";
+@fa-var-chevron-circle-left: "\f137";
+@fa-var-chevron-circle-right: "\f138";
+@fa-var-chevron-circle-up: "\f139";
+@fa-var-chevron-down: "\f078";
+@fa-var-chevron-left: "\f053";
+@fa-var-chevron-right: "\f054";
+@fa-var-chevron-up: "\f077";
+@fa-var-child: "\f1ae";
+@fa-var-chrome: "\f268";
+@fa-var-circle: "\f111";
+@fa-var-circle-o: "\f10c";
+@fa-var-circle-o-notch: "\f1ce";
+@fa-var-circle-thin: "\f1db";
+@fa-var-clipboard: "\f0ea";
+@fa-var-clock-o: "\f017";
+@fa-var-clone: "\f24d";
+@fa-var-close: "\f00d";
+@fa-var-cloud: "\f0c2";
+@fa-var-cloud-download: "\f0ed";
+@fa-var-cloud-upload: "\f0ee";
+@fa-var-cny: "\f157";
+@fa-var-code: "\f121";
+@fa-var-code-fork: "\f126";
+@fa-var-codepen: "\f1cb";
+@fa-var-codiepie: "\f284";
+@fa-var-coffee: "\f0f4";
+@fa-var-cog: "\f013";
+@fa-var-cogs: "\f085";
+@fa-var-columns: "\f0db";
+@fa-var-comment: "\f075";
+@fa-var-comment-o: "\f0e5";
+@fa-var-commenting: "\f27a";
+@fa-var-commenting-o: "\f27b";
+@fa-var-comments: "\f086";
+@fa-var-comments-o: "\f0e6";
+@fa-var-compass: "\f14e";
+@fa-var-compress: "\f066";
+@fa-var-connectdevelop: "\f20e";
+@fa-var-contao: "\f26d";
+@fa-var-copy: "\f0c5";
+@fa-var-copyright: "\f1f9";
+@fa-var-creative-commons: "\f25e";
+@fa-var-credit-card: "\f09d";
+@fa-var-credit-card-alt: "\f283";
+@fa-var-crop: "\f125";
+@fa-var-crosshairs: "\f05b";
+@fa-var-css3: "\f13c";
+@fa-var-cube: "\f1b2";
+@fa-var-cubes: "\f1b3";
+@fa-var-cut: "\f0c4";
+@fa-var-cutlery: "\f0f5";
+@fa-var-dashboard: "\f0e4";
+@fa-var-dashcube: "\f210";
+@fa-var-database: "\f1c0";
+@fa-var-deaf: "\f2a4";
+@fa-var-deafness: "\f2a4";
+@fa-var-dedent: "\f03b";
+@fa-var-delicious: "\f1a5";
+@fa-var-desktop: "\f108";
+@fa-var-deviantart: "\f1bd";
+@fa-var-diamond: "\f219";
+@fa-var-digg: "\f1a6";
+@fa-var-dollar: "\f155";
+@fa-var-dot-circle-o: "\f192";
+@fa-var-download: "\f019";
+@fa-var-dribbble: "\f17d";
+@fa-var-dropbox: "\f16b";
+@fa-var-drupal: "\f1a9";
+@fa-var-edge: "\f282";
+@fa-var-edit: "\f044";
+@fa-var-eject: "\f052";
+@fa-var-ellipsis-h: "\f141";
+@fa-var-ellipsis-v: "\f142";
+@fa-var-empire: "\f1d1";
+@fa-var-envelope: "\f0e0";
+@fa-var-envelope-o: "\f003";
+@fa-var-envelope-square: "\f199";
+@fa-var-envira: "\f299";
+@fa-var-eraser: "\f12d";
+@fa-var-eur: "\f153";
+@fa-var-euro: "\f153";
+@fa-var-exchange: "\f0ec";
+@fa-var-exclamation: "\f12a";
+@fa-var-exclamation-circle: "\f06a";
+@fa-var-exclamation-triangle: "\f071";
+@fa-var-expand: "\f065";
+@fa-var-expeditedssl: "\f23e";
+@fa-var-external-link: "\f08e";
+@fa-var-external-link-square: "\f14c";
+@fa-var-eye: "\f06e";
+@fa-var-eye-slash: "\f070";
+@fa-var-eyedropper: "\f1fb";
+@fa-var-fa: "\f2b4";
+@fa-var-facebook: "\f09a";
+@fa-var-facebook-f: "\f09a";
+@fa-var-facebook-official: "\f230";
+@fa-var-facebook-square: "\f082";
+@fa-var-fast-backward: "\f049";
+@fa-var-fast-forward: "\f050";
+@fa-var-fax: "\f1ac";
+@fa-var-feed: "\f09e";
+@fa-var-female: "\f182";
+@fa-var-fighter-jet: "\f0fb";
+@fa-var-file: "\f15b";
+@fa-var-file-archive-o: "\f1c6";
+@fa-var-file-audio-o: "\f1c7";
+@fa-var-file-code-o: "\f1c9";
+@fa-var-file-excel-o: "\f1c3";
+@fa-var-file-image-o: "\f1c5";
+@fa-var-file-movie-o: "\f1c8";
+@fa-var-file-o: "\f016";
+@fa-var-file-pdf-o: "\f1c1";
+@fa-var-file-photo-o: "\f1c5";
+@fa-var-file-picture-o: "\f1c5";
+@fa-var-file-powerpoint-o: "\f1c4";
+@fa-var-file-sound-o: "\f1c7";
+@fa-var-file-text: "\f15c";
+@fa-var-file-text-o: "\f0f6";
+@fa-var-file-video-o: "\f1c8";
+@fa-var-file-word-o: "\f1c2";
+@fa-var-file-zip-o: "\f1c6";
+@fa-var-files-o: "\f0c5";
+@fa-var-film: "\f008";
+@fa-var-filter: "\f0b0";
+@fa-var-fire: "\f06d";
+@fa-var-fire-extinguisher: "\f134";
+@fa-var-firefox: "\f269";
+@fa-var-first-order: "\f2b0";
+@fa-var-flag: "\f024";
+@fa-var-flag-checkered: "\f11e";
+@fa-var-flag-o: "\f11d";
+@fa-var-flash: "\f0e7";
+@fa-var-flask: "\f0c3";
+@fa-var-flickr: "\f16e";
+@fa-var-floppy-o: "\f0c7";
+@fa-var-folder: "\f07b";
+@fa-var-folder-o: "\f114";
+@fa-var-folder-open: "\f07c";
+@fa-var-folder-open-o: "\f115";
+@fa-var-font: "\f031";
+@fa-var-font-awesome: "\f2b4";
+@fa-var-fonticons: "\f280";
+@fa-var-fort-awesome: "\f286";
+@fa-var-forumbee: "\f211";
+@fa-var-forward: "\f04e";
+@fa-var-foursquare: "\f180";
+@fa-var-frown-o: "\f119";
+@fa-var-futbol-o: "\f1e3";
+@fa-var-gamepad: "\f11b";
+@fa-var-gavel: "\f0e3";
+@fa-var-gbp: "\f154";
+@fa-var-ge: "\f1d1";
+@fa-var-gear: "\f013";
+@fa-var-gears: "\f085";
+@fa-var-genderless: "\f22d";
+@fa-var-get-pocket: "\f265";
+@fa-var-gg: "\f260";
+@fa-var-gg-circle: "\f261";
+@fa-var-gift: "\f06b";
+@fa-var-git: "\f1d3";
+@fa-var-git-square: "\f1d2";
+@fa-var-github: "\f09b";
+@fa-var-github-alt: "\f113";
+@fa-var-github-square: "\f092";
+@fa-var-gitlab: "\f296";
+@fa-var-gittip: "\f184";
+@fa-var-glass: "\f000";
+@fa-var-glide: "\f2a5";
+@fa-var-glide-g: "\f2a6";
+@fa-var-globe: "\f0ac";
+@fa-var-google: "\f1a0";
+@fa-var-google-plus: "\f0d5";
+@fa-var-google-plus-circle: "\f2b3";
+@fa-var-google-plus-official: "\f2b3";
+@fa-var-google-plus-square: "\f0d4";
+@fa-var-google-wallet: "\f1ee";
+@fa-var-graduation-cap: "\f19d";
+@fa-var-gratipay: "\f184";
+@fa-var-group: "\f0c0";
+@fa-var-h-square: "\f0fd";
+@fa-var-hacker-news: "\f1d4";
+@fa-var-hand-grab-o: "\f255";
+@fa-var-hand-lizard-o: "\f258";
+@fa-var-hand-o-down: "\f0a7";
+@fa-var-hand-o-left: "\f0a5";
+@fa-var-hand-o-right: "\f0a4";
+@fa-var-hand-o-up: "\f0a6";
+@fa-var-hand-paper-o: "\f256";
+@fa-var-hand-peace-o: "\f25b";
+@fa-var-hand-pointer-o: "\f25a";
+@fa-var-hand-rock-o: "\f255";
+@fa-var-hand-scissors-o: "\f257";
+@fa-var-hand-spock-o: "\f259";
+@fa-var-hand-stop-o: "\f256";
+@fa-var-hard-of-hearing: "\f2a4";
+@fa-var-hashtag: "\f292";
+@fa-var-hdd-o: "\f0a0";
+@fa-var-header: "\f1dc";
+@fa-var-headphones: "\f025";
+@fa-var-heart: "\f004";
+@fa-var-heart-o: "\f08a";
+@fa-var-heartbeat: "\f21e";
+@fa-var-history: "\f1da";
+@fa-var-home: "\f015";
+@fa-var-hospital-o: "\f0f8";
+@fa-var-hotel: "\f236";
+@fa-var-hourglass: "\f254";
+@fa-var-hourglass-1: "\f251";
+@fa-var-hourglass-2: "\f252";
+@fa-var-hourglass-3: "\f253";
+@fa-var-hourglass-end: "\f253";
+@fa-var-hourglass-half: "\f252";
+@fa-var-hourglass-o: "\f250";
+@fa-var-hourglass-start: "\f251";
+@fa-var-houzz: "\f27c";
+@fa-var-html5: "\f13b";
+@fa-var-i-cursor: "\f246";
+@fa-var-ils: "\f20b";
+@fa-var-image: "\f03e";
+@fa-var-inbox: "\f01c";
+@fa-var-indent: "\f03c";
+@fa-var-industry: "\f275";
+@fa-var-info: "\f129";
+@fa-var-info-circle: "\f05a";
+@fa-var-inr: "\f156";
+@fa-var-instagram: "\f16d";
+@fa-var-institution: "\f19c";
+@fa-var-internet-explorer: "\f26b";
+@fa-var-intersex: "\f224";
+@fa-var-ioxhost: "\f208";
+@fa-var-italic: "\f033";
+@fa-var-joomla: "\f1aa";
+@fa-var-jpy: "\f157";
+@fa-var-jsfiddle: "\f1cc";
+@fa-var-key: "\f084";
+@fa-var-keyboard-o: "\f11c";
+@fa-var-krw: "\f159";
+@fa-var-language: "\f1ab";
+@fa-var-laptop: "\f109";
+@fa-var-lastfm: "\f202";
+@fa-var-lastfm-square: "\f203";
+@fa-var-leaf: "\f06c";
+@fa-var-leanpub: "\f212";
+@fa-var-legal: "\f0e3";
+@fa-var-lemon-o: "\f094";
+@fa-var-level-down: "\f149";
+@fa-var-level-up: "\f148";
+@fa-var-life-bouy: "\f1cd";
+@fa-var-life-buoy: "\f1cd";
+@fa-var-life-ring: "\f1cd";
+@fa-var-life-saver: "\f1cd";
+@fa-var-lightbulb-o: "\f0eb";
+@fa-var-line-chart: "\f201";
+@fa-var-link: "\f0c1";
+@fa-var-linkedin: "\f0e1";
+@fa-var-linkedin-square: "\f08c";
+@fa-var-linux: "\f17c";
+@fa-var-list: "\f03a";
+@fa-var-list-alt: "\f022";
+@fa-var-list-ol: "\f0cb";
+@fa-var-list-ul: "\f0ca";
+@fa-var-location-arrow: "\f124";
+@fa-var-lock: "\f023";
+@fa-var-long-arrow-down: "\f175";
+@fa-var-long-arrow-left: "\f177";
+@fa-var-long-arrow-right: "\f178";
+@fa-var-long-arrow-up: "\f176";
+@fa-var-low-vision: "\f2a8";
+@fa-var-magic: "\f0d0";
+@fa-var-magnet: "\f076";
+@fa-var-mail-forward: "\f064";
+@fa-var-mail-reply: "\f112";
+@fa-var-mail-reply-all: "\f122";
+@fa-var-male: "\f183";
+@fa-var-map: "\f279";
+@fa-var-map-marker: "\f041";
+@fa-var-map-o: "\f278";
+@fa-var-map-pin: "\f276";
+@fa-var-map-signs: "\f277";
+@fa-var-mars: "\f222";
+@fa-var-mars-double: "\f227";
+@fa-var-mars-stroke: "\f229";
+@fa-var-mars-stroke-h: "\f22b";
+@fa-var-mars-stroke-v: "\f22a";
+@fa-var-maxcdn: "\f136";
+@fa-var-meanpath: "\f20c";
+@fa-var-medium: "\f23a";
+@fa-var-medkit: "\f0fa";
+@fa-var-meh-o: "\f11a";
+@fa-var-mercury: "\f223";
+@fa-var-microphone: "\f130";
+@fa-var-microphone-slash: "\f131";
+@fa-var-minus: "\f068";
+@fa-var-minus-circle: "\f056";
+@fa-var-minus-square: "\f146";
+@fa-var-minus-square-o: "\f147";
+@fa-var-mixcloud: "\f289";
+@fa-var-mobile: "\f10b";
+@fa-var-mobile-phone: "\f10b";
+@fa-var-modx: "\f285";
+@fa-var-money: "\f0d6";
+@fa-var-moon-o: "\f186";
+@fa-var-mortar-board: "\f19d";
+@fa-var-motorcycle: "\f21c";
+@fa-var-mouse-pointer: "\f245";
+@fa-var-music: "\f001";
+@fa-var-navicon: "\f0c9";
+@fa-var-neuter: "\f22c";
+@fa-var-newspaper-o: "\f1ea";
+@fa-var-object-group: "\f247";
+@fa-var-object-ungroup: "\f248";
+@fa-var-odnoklassniki: "\f263";
+@fa-var-odnoklassniki-square: "\f264";
+@fa-var-opencart: "\f23d";
+@fa-var-openid: "\f19b";
+@fa-var-opera: "\f26a";
+@fa-var-optin-monster: "\f23c";
+@fa-var-outdent: "\f03b";
+@fa-var-pagelines: "\f18c";
+@fa-var-paint-brush: "\f1fc";
+@fa-var-paper-plane: "\f1d8";
+@fa-var-paper-plane-o: "\f1d9";
+@fa-var-paperclip: "\f0c6";
+@fa-var-paragraph: "\f1dd";
+@fa-var-paste: "\f0ea";
+@fa-var-pause: "\f04c";
+@fa-var-pause-circle: "\f28b";
+@fa-var-pause-circle-o: "\f28c";
+@fa-var-paw: "\f1b0";
+@fa-var-paypal: "\f1ed";
+@fa-var-pencil: "\f040";
+@fa-var-pencil-square: "\f14b";
+@fa-var-pencil-square-o: "\f044";
+@fa-var-percent: "\f295";
+@fa-var-phone: "\f095";
+@fa-var-phone-square: "\f098";
+@fa-var-photo: "\f03e";
+@fa-var-picture-o: "\f03e";
+@fa-var-pie-chart: "\f200";
+@fa-var-pied-piper: "\f2ae";
+@fa-var-pied-piper-alt: "\f1a8";
+@fa-var-pied-piper-pp: "\f1a7";
+@fa-var-pinterest: "\f0d2";
+@fa-var-pinterest-p: "\f231";
+@fa-var-pinterest-square: "\f0d3";
+@fa-var-plane: "\f072";
+@fa-var-play: "\f04b";
+@fa-var-play-circle: "\f144";
+@fa-var-play-circle-o: "\f01d";
+@fa-var-plug: "\f1e6";
+@fa-var-plus: "\f067";
+@fa-var-plus-circle: "\f055";
+@fa-var-plus-square: "\f0fe";
+@fa-var-plus-square-o: "\f196";
+@fa-var-power-off: "\f011";
+@fa-var-print: "\f02f";
+@fa-var-product-hunt: "\f288";
+@fa-var-puzzle-piece: "\f12e";
+@fa-var-qq: "\f1d6";
+@fa-var-qrcode: "\f029";
+@fa-var-question: "\f128";
+@fa-var-question-circle: "\f059";
+@fa-var-question-circle-o: "\f29c";
+@fa-var-quote-left: "\f10d";
+@fa-var-quote-right: "\f10e";
+@fa-var-ra: "\f1d0";
+@fa-var-random: "\f074";
+@fa-var-rebel: "\f1d0";
+@fa-var-recycle: "\f1b8";
+@fa-var-reddit: "\f1a1";
+@fa-var-reddit-alien: "\f281";
+@fa-var-reddit-square: "\f1a2";
+@fa-var-refresh: "\f021";
+@fa-var-registered: "\f25d";
+@fa-var-remove: "\f00d";
+@fa-var-renren: "\f18b";
+@fa-var-reorder: "\f0c9";
+@fa-var-repeat: "\f01e";
+@fa-var-reply: "\f112";
+@fa-var-reply-all: "\f122";
+@fa-var-resistance: "\f1d0";
+@fa-var-retweet: "\f079";
+@fa-var-rmb: "\f157";
+@fa-var-road: "\f018";
+@fa-var-rocket: "\f135";
+@fa-var-rotate-left: "\f0e2";
+@fa-var-rotate-right: "\f01e";
+@fa-var-rouble: "\f158";
+@fa-var-rss: "\f09e";
+@fa-var-rss-square: "\f143";
+@fa-var-rub: "\f158";
+@fa-var-ruble: "\f158";
+@fa-var-rupee: "\f156";
+@fa-var-safari: "\f267";
+@fa-var-save: "\f0c7";
+@fa-var-scissors: "\f0c4";
+@fa-var-scribd: "\f28a";
+@fa-var-search: "\f002";
+@fa-var-search-minus: "\f010";
+@fa-var-search-plus: "\f00e";
+@fa-var-sellsy: "\f213";
+@fa-var-send: "\f1d8";
+@fa-var-send-o: "\f1d9";
+@fa-var-server: "\f233";
+@fa-var-share: "\f064";
+@fa-var-share-alt: "\f1e0";
+@fa-var-share-alt-square: "\f1e1";
+@fa-var-share-square: "\f14d";
+@fa-var-share-square-o: "\f045";
+@fa-var-shekel: "\f20b";
+@fa-var-sheqel: "\f20b";
+@fa-var-shield: "\f132";
+@fa-var-ship: "\f21a";
+@fa-var-shirtsinbulk: "\f214";
+@fa-var-shopping-bag: "\f290";
+@fa-var-shopping-basket: "\f291";
+@fa-var-shopping-cart: "\f07a";
+@fa-var-sign-in: "\f090";
+@fa-var-sign-language: "\f2a7";
+@fa-var-sign-out: "\f08b";
+@fa-var-signal: "\f012";
+@fa-var-signing: "\f2a7";
+@fa-var-simplybuilt: "\f215";
+@fa-var-sitemap: "\f0e8";
+@fa-var-skyatlas: "\f216";
+@fa-var-skype: "\f17e";
+@fa-var-slack: "\f198";
+@fa-var-sliders: "\f1de";
+@fa-var-slideshare: "\f1e7";
+@fa-var-smile-o: "\f118";
+@fa-var-snapchat: "\f2ab";
+@fa-var-snapchat-ghost: "\f2ac";
+@fa-var-snapchat-square: "\f2ad";
+@fa-var-soccer-ball-o: "\f1e3";
+@fa-var-sort: "\f0dc";
+@fa-var-sort-alpha-asc: "\f15d";
+@fa-var-sort-alpha-desc: "\f15e";
+@fa-var-sort-amount-asc: "\f160";
+@fa-var-sort-amount-desc: "\f161";
+@fa-var-sort-asc: "\f0de";
+@fa-var-sort-desc: "\f0dd";
+@fa-var-sort-down: "\f0dd";
+@fa-var-sort-numeric-asc: "\f162";
+@fa-var-sort-numeric-desc: "\f163";
+@fa-var-sort-up: "\f0de";
+@fa-var-soundcloud: "\f1be";
+@fa-var-space-shuttle: "\f197";
+@fa-var-spinner: "\f110";
+@fa-var-spoon: "\f1b1";
+@fa-var-spotify: "\f1bc";
+@fa-var-square: "\f0c8";
+@fa-var-square-o: "\f096";
+@fa-var-stack-exchange: "\f18d";
+@fa-var-stack-overflow: "\f16c";
+@fa-var-star: "\f005";
+@fa-var-star-half: "\f089";
+@fa-var-star-half-empty: "\f123";
+@fa-var-star-half-full: "\f123";
+@fa-var-star-half-o: "\f123";
+@fa-var-star-o: "\f006";
+@fa-var-steam: "\f1b6";
+@fa-var-steam-square: "\f1b7";
+@fa-var-step-backward: "\f048";
+@fa-var-step-forward: "\f051";
+@fa-var-stethoscope: "\f0f1";
+@fa-var-sticky-note: "\f249";
+@fa-var-sticky-note-o: "\f24a";
+@fa-var-stop: "\f04d";
+@fa-var-stop-circle: "\f28d";
+@fa-var-stop-circle-o: "\f28e";
+@fa-var-street-view: "\f21d";
+@fa-var-strikethrough: "\f0cc";
+@fa-var-stumbleupon: "\f1a4";
+@fa-var-stumbleupon-circle: "\f1a3";
+@fa-var-subscript: "\f12c";
+@fa-var-subway: "\f239";
+@fa-var-suitcase: "\f0f2";
+@fa-var-sun-o: "\f185";
+@fa-var-superscript: "\f12b";
+@fa-var-support: "\f1cd";
+@fa-var-table: "\f0ce";
+@fa-var-tablet: "\f10a";
+@fa-var-tachometer: "\f0e4";
+@fa-var-tag: "\f02b";
+@fa-var-tags: "\f02c";
+@fa-var-tasks: "\f0ae";
+@fa-var-taxi: "\f1ba";
+@fa-var-television: "\f26c";
+@fa-var-tencent-weibo: "\f1d5";
+@fa-var-terminal: "\f120";
+@fa-var-text-height: "\f034";
+@fa-var-text-width: "\f035";
+@fa-var-th: "\f00a";
+@fa-var-th-large: "\f009";
+@fa-var-th-list: "\f00b";
+@fa-var-themeisle: "\f2b2";
+@fa-var-thumb-tack: "\f08d";
+@fa-var-thumbs-down: "\f165";
+@fa-var-thumbs-o-down: "\f088";
+@fa-var-thumbs-o-up: "\f087";
+@fa-var-thumbs-up: "\f164";
+@fa-var-ticket: "\f145";
+@fa-var-times: "\f00d";
+@fa-var-times-circle: "\f057";
+@fa-var-times-circle-o: "\f05c";
+@fa-var-tint: "\f043";
+@fa-var-toggle-down: "\f150";
+@fa-var-toggle-left: "\f191";
+@fa-var-toggle-off: "\f204";
+@fa-var-toggle-on: "\f205";
+@fa-var-toggle-right: "\f152";
+@fa-var-toggle-up: "\f151";
+@fa-var-trademark: "\f25c";
+@fa-var-train: "\f238";
+@fa-var-transgender: "\f224";
+@fa-var-transgender-alt: "\f225";
+@fa-var-trash: "\f1f8";
+@fa-var-trash-o: "\f014";
+@fa-var-tree: "\f1bb";
+@fa-var-trello: "\f181";
+@fa-var-tripadvisor: "\f262";
+@fa-var-trophy: "\f091";
+@fa-var-truck: "\f0d1";
+@fa-var-try: "\f195";
+@fa-var-tty: "\f1e4";
+@fa-var-tumblr: "\f173";
+@fa-var-tumblr-square: "\f174";
+@fa-var-turkish-lira: "\f195";
+@fa-var-tv: "\f26c";
+@fa-var-twitch: "\f1e8";
+@fa-var-twitter: "\f099";
+@fa-var-twitter-square: "\f081";
+@fa-var-umbrella: "\f0e9";
+@fa-var-underline: "\f0cd";
+@fa-var-undo: "\f0e2";
+@fa-var-universal-access: "\f29a";
+@fa-var-university: "\f19c";
+@fa-var-unlink: "\f127";
+@fa-var-unlock: "\f09c";
+@fa-var-unlock-alt: "\f13e";
+@fa-var-unsorted: "\f0dc";
+@fa-var-upload: "\f093";
+@fa-var-usb: "\f287";
+@fa-var-usd: "\f155";
+@fa-var-user: "\f007";
+@fa-var-user-md: "\f0f0";
+@fa-var-user-plus: "\f234";
+@fa-var-user-secret: "\f21b";
+@fa-var-user-times: "\f235";
+@fa-var-users: "\f0c0";
+@fa-var-venus: "\f221";
+@fa-var-venus-double: "\f226";
+@fa-var-venus-mars: "\f228";
+@fa-var-viacoin: "\f237";
+@fa-var-viadeo: "\f2a9";
+@fa-var-viadeo-square: "\f2aa";
+@fa-var-video-camera: "\f03d";
+@fa-var-vimeo: "\f27d";
+@fa-var-vimeo-square: "\f194";
+@fa-var-vine: "\f1ca";
+@fa-var-vk: "\f189";
+@fa-var-volume-control-phone: "\f2a0";
+@fa-var-volume-down: "\f027";
+@fa-var-volume-off: "\f026";
+@fa-var-volume-up: "\f028";
+@fa-var-warning: "\f071";
+@fa-var-wechat: "\f1d7";
+@fa-var-weibo: "\f18a";
+@fa-var-weixin: "\f1d7";
+@fa-var-whatsapp: "\f232";
+@fa-var-wheelchair: "\f193";
+@fa-var-wheelchair-alt: "\f29b";
+@fa-var-wifi: "\f1eb";
+@fa-var-wikipedia-w: "\f266";
+@fa-var-windows: "\f17a";
+@fa-var-won: "\f159";
+@fa-var-wordpress: "\f19a";
+@fa-var-wpbeginner: "\f297";
+@fa-var-wpforms: "\f298";
+@fa-var-wrench: "\f0ad";
+@fa-var-xing: "\f168";
+@fa-var-xing-square: "\f169";
+@fa-var-y-combinator: "\f23b";
+@fa-var-y-combinator-square: "\f1d4";
+@fa-var-yahoo: "\f19e";
+@fa-var-yc: "\f23b";
+@fa-var-yc-square: "\f1d4";
+@fa-var-yelp: "\f1e9";
+@fa-var-yen: "\f157";
+@fa-var-yoast: "\f2b1";
+@fa-var-youtube: "\f167";
+@fa-var-youtube-play: "\f16a";
+@fa-var-youtube-square: "\f166";
+
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_animated.scss b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_animated.scss
new file mode 100644
index 0000000..8a020db
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_animated.scss
@@ -0,0 +1,34 @@
+// Spinning Icons
+// --------------------------
+
+.#{$fa-css-prefix}-spin {
+ -webkit-animation: fa-spin 2s infinite linear;
+ animation: fa-spin 2s infinite linear;
+}
+
+.#{$fa-css-prefix}-pulse {
+ -webkit-animation: fa-spin 1s infinite steps(8);
+ animation: fa-spin 1s infinite steps(8);
+}
+
+@-webkit-keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+
+@keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_bordered-pulled.scss b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_bordered-pulled.scss
new file mode 100644
index 0000000..d4b85a0
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_bordered-pulled.scss
@@ -0,0 +1,25 @@
+// Bordered & Pulled
+// -------------------------
+
+.#{$fa-css-prefix}-border {
+ padding: .2em .25em .15em;
+ border: solid .08em $fa-border-color;
+ border-radius: .1em;
+}
+
+.#{$fa-css-prefix}-pull-left { float: left; }
+.#{$fa-css-prefix}-pull-right { float: right; }
+
+.#{$fa-css-prefix} {
+ &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
+ &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
+}
+
+/* Deprecated as of 4.4.0 */
+.pull-right { float: right; }
+.pull-left { float: left; }
+
+.#{$fa-css-prefix} {
+ &.pull-left { margin-right: .3em; }
+ &.pull-right { margin-left: .3em; }
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_core.scss b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_core.scss
new file mode 100644
index 0000000..7425ef8
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_core.scss
@@ -0,0 +1,12 @@
+// Base Class Definition
+// -------------------------
+
+.#{$fa-css-prefix} {
+ display: inline-block;
+ font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
+ font-size: inherit; // can't have font-size inherit on line above, so need to override
+ text-rendering: auto; // optimizelegibility throws things off #1094
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_fixed-width.scss b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_fixed-width.scss
new file mode 100644
index 0000000..b221c98
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_fixed-width.scss
@@ -0,0 +1,6 @@
+// Fixed Width Icons
+// -------------------------
+.#{$fa-css-prefix}-fw {
+ width: (18em / 14);
+ text-align: center;
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_icons.scss b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_icons.scss
new file mode 100644
index 0000000..2944344
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_icons.scss
@@ -0,0 +1,733 @@
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ readers do not read off random characters that represent icons */
+
+.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; }
+.#{$fa-css-prefix}-music:before { content: $fa-var-music; }
+.#{$fa-css-prefix}-search:before { content: $fa-var-search; }
+.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; }
+.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; }
+.#{$fa-css-prefix}-star:before { content: $fa-var-star; }
+.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; }
+.#{$fa-css-prefix}-user:before { content: $fa-var-user; }
+.#{$fa-css-prefix}-film:before { content: $fa-var-film; }
+.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; }
+.#{$fa-css-prefix}-th:before { content: $fa-var-th; }
+.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; }
+.#{$fa-css-prefix}-check:before { content: $fa-var-check; }
+.#{$fa-css-prefix}-remove:before,
+.#{$fa-css-prefix}-close:before,
+.#{$fa-css-prefix}-times:before { content: $fa-var-times; }
+.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; }
+.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; }
+.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; }
+.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; }
+.#{$fa-css-prefix}-gear:before,
+.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; }
+.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; }
+.#{$fa-css-prefix}-home:before { content: $fa-var-home; }
+.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; }
+.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; }
+.#{$fa-css-prefix}-road:before { content: $fa-var-road; }
+.#{$fa-css-prefix}-download:before { content: $fa-var-download; }
+.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; }
+.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; }
+.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; }
+.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; }
+.#{$fa-css-prefix}-rotate-right:before,
+.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; }
+.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; }
+.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; }
+.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; }
+.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; }
+.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; }
+.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; }
+.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; }
+.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; }
+.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; }
+.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; }
+.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; }
+.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; }
+.#{$fa-css-prefix}-book:before { content: $fa-var-book; }
+.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; }
+.#{$fa-css-prefix}-print:before { content: $fa-var-print; }
+.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; }
+.#{$fa-css-prefix}-font:before { content: $fa-var-font; }
+.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; }
+.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; }
+.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; }
+.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; }
+.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; }
+.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; }
+.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; }
+.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; }
+.#{$fa-css-prefix}-list:before { content: $fa-var-list; }
+.#{$fa-css-prefix}-dedent:before,
+.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; }
+.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; }
+.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; }
+.#{$fa-css-prefix}-photo:before,
+.#{$fa-css-prefix}-image:before,
+.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; }
+.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; }
+.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; }
+.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; }
+.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; }
+.#{$fa-css-prefix}-edit:before,
+.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; }
+.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; }
+.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; }
+.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; }
+.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; }
+.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; }
+.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; }
+.#{$fa-css-prefix}-play:before { content: $fa-var-play; }
+.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; }
+.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; }
+.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; }
+.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; }
+.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; }
+.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; }
+.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; }
+.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; }
+.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; }
+.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; }
+.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; }
+.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; }
+.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; }
+.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; }
+.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; }
+.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; }
+.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; }
+.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; }
+.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; }
+.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; }
+.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; }
+.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; }
+.#{$fa-css-prefix}-mail-forward:before,
+.#{$fa-css-prefix}-share:before { content: $fa-var-share; }
+.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; }
+.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; }
+.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; }
+.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; }
+.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; }
+.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; }
+.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; }
+.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; }
+.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; }
+.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; }
+.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; }
+.#{$fa-css-prefix}-warning:before,
+.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; }
+.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; }
+.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; }
+.#{$fa-css-prefix}-random:before { content: $fa-var-random; }
+.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; }
+.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; }
+.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; }
+.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; }
+.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; }
+.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; }
+.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; }
+.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; }
+.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; }
+.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; }
+.#{$fa-css-prefix}-bar-chart-o:before,
+.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; }
+.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; }
+.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; }
+.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; }
+.#{$fa-css-prefix}-key:before { content: $fa-var-key; }
+.#{$fa-css-prefix}-gears:before,
+.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; }
+.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; }
+.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; }
+.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; }
+.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; }
+.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; }
+.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; }
+.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; }
+.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; }
+.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; }
+.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; }
+.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; }
+.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; }
+.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; }
+.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; }
+.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; }
+.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; }
+.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; }
+.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; }
+.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; }
+.#{$fa-css-prefix}-facebook-f:before,
+.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; }
+.#{$fa-css-prefix}-github:before { content: $fa-var-github; }
+.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; }
+.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; }
+.#{$fa-css-prefix}-feed:before,
+.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; }
+.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; }
+.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; }
+.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; }
+.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; }
+.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; }
+.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; }
+.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; }
+.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; }
+.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; }
+.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; }
+.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; }
+.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; }
+.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; }
+.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; }
+.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; }
+.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; }
+.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; }
+.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; }
+.#{$fa-css-prefix}-group:before,
+.#{$fa-css-prefix}-users:before { content: $fa-var-users; }
+.#{$fa-css-prefix}-chain:before,
+.#{$fa-css-prefix}-link:before { content: $fa-var-link; }
+.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; }
+.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; }
+.#{$fa-css-prefix}-cut:before,
+.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; }
+.#{$fa-css-prefix}-copy:before,
+.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; }
+.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; }
+.#{$fa-css-prefix}-save:before,
+.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; }
+.#{$fa-css-prefix}-square:before { content: $fa-var-square; }
+.#{$fa-css-prefix}-navicon:before,
+.#{$fa-css-prefix}-reorder:before,
+.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; }
+.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; }
+.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; }
+.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; }
+.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; }
+.#{$fa-css-prefix}-table:before { content: $fa-var-table; }
+.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; }
+.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; }
+.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; }
+.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; }
+.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; }
+.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; }
+.#{$fa-css-prefix}-money:before { content: $fa-var-money; }
+.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; }
+.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; }
+.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; }
+.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; }
+.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; }
+.#{$fa-css-prefix}-unsorted:before,
+.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; }
+.#{$fa-css-prefix}-sort-down:before,
+.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; }
+.#{$fa-css-prefix}-sort-up:before,
+.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; }
+.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; }
+.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; }
+.#{$fa-css-prefix}-rotate-left:before,
+.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; }
+.#{$fa-css-prefix}-legal:before,
+.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; }
+.#{$fa-css-prefix}-dashboard:before,
+.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; }
+.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; }
+.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; }
+.#{$fa-css-prefix}-flash:before,
+.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; }
+.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; }
+.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; }
+.#{$fa-css-prefix}-paste:before,
+.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; }
+.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; }
+.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; }
+.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; }
+.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; }
+.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; }
+.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; }
+.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; }
+.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; }
+.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; }
+.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; }
+.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; }
+.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; }
+.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; }
+.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; }
+.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; }
+.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; }
+.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; }
+.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; }
+.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; }
+.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; }
+.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; }
+.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; }
+.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; }
+.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; }
+.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; }
+.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; }
+.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; }
+.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; }
+.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; }
+.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; }
+.#{$fa-css-prefix}-mobile-phone:before,
+.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; }
+.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; }
+.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; }
+.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; }
+.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; }
+.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; }
+.#{$fa-css-prefix}-mail-reply:before,
+.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; }
+.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; }
+.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; }
+.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; }
+.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; }
+.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; }
+.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; }
+.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; }
+.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; }
+.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; }
+.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; }
+.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; }
+.#{$fa-css-prefix}-code:before { content: $fa-var-code; }
+.#{$fa-css-prefix}-mail-reply-all:before,
+.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; }
+.#{$fa-css-prefix}-star-half-empty:before,
+.#{$fa-css-prefix}-star-half-full:before,
+.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; }
+.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; }
+.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; }
+.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; }
+.#{$fa-css-prefix}-unlink:before,
+.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; }
+.#{$fa-css-prefix}-question:before { content: $fa-var-question; }
+.#{$fa-css-prefix}-info:before { content: $fa-var-info; }
+.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; }
+.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; }
+.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; }
+.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; }
+.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; }
+.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; }
+.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; }
+.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; }
+.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; }
+.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; }
+.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; }
+.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; }
+.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; }
+.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; }
+.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; }
+.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; }
+.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; }
+.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; }
+.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; }
+.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; }
+.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; }
+.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; }
+.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; }
+.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; }
+.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; }
+.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; }
+.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; }
+.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; }
+.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; }
+.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; }
+.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; }
+.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; }
+.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; }
+.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; }
+.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; }
+.#{$fa-css-prefix}-toggle-down:before,
+.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; }
+.#{$fa-css-prefix}-toggle-up:before,
+.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; }
+.#{$fa-css-prefix}-toggle-right:before,
+.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; }
+.#{$fa-css-prefix}-euro:before,
+.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; }
+.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; }
+.#{$fa-css-prefix}-dollar:before,
+.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; }
+.#{$fa-css-prefix}-rupee:before,
+.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; }
+.#{$fa-css-prefix}-cny:before,
+.#{$fa-css-prefix}-rmb:before,
+.#{$fa-css-prefix}-yen:before,
+.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; }
+.#{$fa-css-prefix}-ruble:before,
+.#{$fa-css-prefix}-rouble:before,
+.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; }
+.#{$fa-css-prefix}-won:before,
+.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; }
+.#{$fa-css-prefix}-bitcoin:before,
+.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; }
+.#{$fa-css-prefix}-file:before { content: $fa-var-file; }
+.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; }
+.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; }
+.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; }
+.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; }
+.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; }
+.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; }
+.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; }
+.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; }
+.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; }
+.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; }
+.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; }
+.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; }
+.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; }
+.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; }
+.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; }
+.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; }
+.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; }
+.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; }
+.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; }
+.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; }
+.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; }
+.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; }
+.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; }
+.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; }
+.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; }
+.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; }
+.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; }
+.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; }
+.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; }
+.#{$fa-css-prefix}-android:before { content: $fa-var-android; }
+.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; }
+.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; }
+.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; }
+.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; }
+.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; }
+.#{$fa-css-prefix}-female:before { content: $fa-var-female; }
+.#{$fa-css-prefix}-male:before { content: $fa-var-male; }
+.#{$fa-css-prefix}-gittip:before,
+.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; }
+.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; }
+.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; }
+.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; }
+.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; }
+.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; }
+.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; }
+.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; }
+.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; }
+.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; }
+.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; }
+.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; }
+.#{$fa-css-prefix}-toggle-left:before,
+.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; }
+.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; }
+.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; }
+.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; }
+.#{$fa-css-prefix}-turkish-lira:before,
+.#{$fa-css-prefix}-try:before { content: $fa-var-try; }
+.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; }
+.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; }
+.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; }
+.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; }
+.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; }
+.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; }
+.#{$fa-css-prefix}-institution:before,
+.#{$fa-css-prefix}-bank:before,
+.#{$fa-css-prefix}-university:before { content: $fa-var-university; }
+.#{$fa-css-prefix}-mortar-board:before,
+.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; }
+.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; }
+.#{$fa-css-prefix}-google:before { content: $fa-var-google; }
+.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; }
+.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; }
+.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; }
+.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; }
+.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; }
+.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; }
+.#{$fa-css-prefix}-pied-piper-pp:before { content: $fa-var-pied-piper-pp; }
+.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; }
+.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; }
+.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; }
+.#{$fa-css-prefix}-language:before { content: $fa-var-language; }
+.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; }
+.#{$fa-css-prefix}-building:before { content: $fa-var-building; }
+.#{$fa-css-prefix}-child:before { content: $fa-var-child; }
+.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; }
+.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; }
+.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; }
+.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; }
+.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; }
+.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; }
+.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; }
+.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; }
+.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; }
+.#{$fa-css-prefix}-automobile:before,
+.#{$fa-css-prefix}-car:before { content: $fa-var-car; }
+.#{$fa-css-prefix}-cab:before,
+.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; }
+.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; }
+.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; }
+.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; }
+.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; }
+.#{$fa-css-prefix}-database:before { content: $fa-var-database; }
+.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; }
+.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; }
+.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; }
+.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; }
+.#{$fa-css-prefix}-file-photo-o:before,
+.#{$fa-css-prefix}-file-picture-o:before,
+.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; }
+.#{$fa-css-prefix}-file-zip-o:before,
+.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; }
+.#{$fa-css-prefix}-file-sound-o:before,
+.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; }
+.#{$fa-css-prefix}-file-movie-o:before,
+.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; }
+.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; }
+.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; }
+.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; }
+.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; }
+.#{$fa-css-prefix}-life-bouy:before,
+.#{$fa-css-prefix}-life-buoy:before,
+.#{$fa-css-prefix}-life-saver:before,
+.#{$fa-css-prefix}-support:before,
+.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; }
+.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; }
+.#{$fa-css-prefix}-ra:before,
+.#{$fa-css-prefix}-resistance:before,
+.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; }
+.#{$fa-css-prefix}-ge:before,
+.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; }
+.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; }
+.#{$fa-css-prefix}-git:before { content: $fa-var-git; }
+.#{$fa-css-prefix}-y-combinator-square:before,
+.#{$fa-css-prefix}-yc-square:before,
+.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; }
+.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; }
+.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; }
+.#{$fa-css-prefix}-wechat:before,
+.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; }
+.#{$fa-css-prefix}-send:before,
+.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; }
+.#{$fa-css-prefix}-send-o:before,
+.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; }
+.#{$fa-css-prefix}-history:before { content: $fa-var-history; }
+.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; }
+.#{$fa-css-prefix}-header:before { content: $fa-var-header; }
+.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; }
+.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; }
+.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; }
+.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; }
+.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; }
+.#{$fa-css-prefix}-soccer-ball-o:before,
+.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; }
+.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; }
+.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; }
+.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; }
+.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; }
+.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; }
+.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; }
+.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; }
+.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; }
+.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; }
+.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; }
+.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; }
+.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; }
+.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; }
+.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; }
+.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; }
+.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; }
+.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; }
+.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; }
+.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; }
+.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; }
+.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; }
+.#{$fa-css-prefix}-at:before { content: $fa-var-at; }
+.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; }
+.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; }
+.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; }
+.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; }
+.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; }
+.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; }
+.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; }
+.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; }
+.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; }
+.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; }
+.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; }
+.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; }
+.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; }
+.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; }
+.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; }
+.#{$fa-css-prefix}-shekel:before,
+.#{$fa-css-prefix}-sheqel:before,
+.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; }
+.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; }
+.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; }
+.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; }
+.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; }
+.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; }
+.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; }
+.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; }
+.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; }
+.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; }
+.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; }
+.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; }
+.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; }
+.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; }
+.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; }
+.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; }
+.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; }
+.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; }
+.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; }
+.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; }
+.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; }
+.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; }
+.#{$fa-css-prefix}-intersex:before,
+.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; }
+.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; }
+.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; }
+.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; }
+.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; }
+.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; }
+.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; }
+.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; }
+.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; }
+.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; }
+.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; }
+.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; }
+.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; }
+.#{$fa-css-prefix}-server:before { content: $fa-var-server; }
+.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; }
+.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; }
+.#{$fa-css-prefix}-hotel:before,
+.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; }
+.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; }
+.#{$fa-css-prefix}-train:before { content: $fa-var-train; }
+.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; }
+.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; }
+.#{$fa-css-prefix}-yc:before,
+.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; }
+.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; }
+.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; }
+.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; }
+.#{$fa-css-prefix}-battery-4:before,
+.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; }
+.#{$fa-css-prefix}-battery-3:before,
+.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; }
+.#{$fa-css-prefix}-battery-2:before,
+.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; }
+.#{$fa-css-prefix}-battery-1:before,
+.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; }
+.#{$fa-css-prefix}-battery-0:before,
+.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; }
+.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; }
+.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; }
+.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; }
+.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; }
+.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; }
+.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; }
+.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; }
+.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; }
+.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; }
+.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; }
+.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; }
+.#{$fa-css-prefix}-hourglass-1:before,
+.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; }
+.#{$fa-css-prefix}-hourglass-2:before,
+.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; }
+.#{$fa-css-prefix}-hourglass-3:before,
+.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; }
+.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; }
+.#{$fa-css-prefix}-hand-grab-o:before,
+.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; }
+.#{$fa-css-prefix}-hand-stop-o:before,
+.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; }
+.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; }
+.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; }
+.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; }
+.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; }
+.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; }
+.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; }
+.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; }
+.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; }
+.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; }
+.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; }
+.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; }
+.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; }
+.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; }
+.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; }
+.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; }
+.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; }
+.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; }
+.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; }
+.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; }
+.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; }
+.#{$fa-css-prefix}-tv:before,
+.#{$fa-css-prefix}-television:before { content: $fa-var-television; }
+.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; }
+.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; }
+.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; }
+.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; }
+.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; }
+.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; }
+.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; }
+.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; }
+.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; }
+.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; }
+.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; }
+.#{$fa-css-prefix}-map:before { content: $fa-var-map; }
+.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; }
+.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; }
+.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; }
+.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; }
+.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; }
+.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; }
+.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; }
+.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; }
+.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; }
+.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; }
+.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; }
+.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; }
+.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; }
+.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; }
+.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; }
+.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; }
+.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; }
+.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; }
+.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; }
+.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; }
+.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; }
+.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; }
+.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; }
+.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; }
+.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; }
+.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; }
+.#{$fa-css-prefix}-gitlab:before { content: $fa-var-gitlab; }
+.#{$fa-css-prefix}-wpbeginner:before { content: $fa-var-wpbeginner; }
+.#{$fa-css-prefix}-wpforms:before { content: $fa-var-wpforms; }
+.#{$fa-css-prefix}-envira:before { content: $fa-var-envira; }
+.#{$fa-css-prefix}-universal-access:before { content: $fa-var-universal-access; }
+.#{$fa-css-prefix}-wheelchair-alt:before { content: $fa-var-wheelchair-alt; }
+.#{$fa-css-prefix}-question-circle-o:before { content: $fa-var-question-circle-o; }
+.#{$fa-css-prefix}-blind:before { content: $fa-var-blind; }
+.#{$fa-css-prefix}-audio-description:before { content: $fa-var-audio-description; }
+.#{$fa-css-prefix}-volume-control-phone:before { content: $fa-var-volume-control-phone; }
+.#{$fa-css-prefix}-braille:before { content: $fa-var-braille; }
+.#{$fa-css-prefix}-assistive-listening-systems:before { content: $fa-var-assistive-listening-systems; }
+.#{$fa-css-prefix}-asl-interpreting:before,
+.#{$fa-css-prefix}-american-sign-language-interpreting:before { content: $fa-var-american-sign-language-interpreting; }
+.#{$fa-css-prefix}-deafness:before,
+.#{$fa-css-prefix}-hard-of-hearing:before,
+.#{$fa-css-prefix}-deaf:before { content: $fa-var-deaf; }
+.#{$fa-css-prefix}-glide:before { content: $fa-var-glide; }
+.#{$fa-css-prefix}-glide-g:before { content: $fa-var-glide-g; }
+.#{$fa-css-prefix}-signing:before,
+.#{$fa-css-prefix}-sign-language:before { content: $fa-var-sign-language; }
+.#{$fa-css-prefix}-low-vision:before { content: $fa-var-low-vision; }
+.#{$fa-css-prefix}-viadeo:before { content: $fa-var-viadeo; }
+.#{$fa-css-prefix}-viadeo-square:before { content: $fa-var-viadeo-square; }
+.#{$fa-css-prefix}-snapchat:before { content: $fa-var-snapchat; }
+.#{$fa-css-prefix}-snapchat-ghost:before { content: $fa-var-snapchat-ghost; }
+.#{$fa-css-prefix}-snapchat-square:before { content: $fa-var-snapchat-square; }
+.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; }
+.#{$fa-css-prefix}-first-order:before { content: $fa-var-first-order; }
+.#{$fa-css-prefix}-yoast:before { content: $fa-var-yoast; }
+.#{$fa-css-prefix}-themeisle:before { content: $fa-var-themeisle; }
+.#{$fa-css-prefix}-google-plus-circle:before,
+.#{$fa-css-prefix}-google-plus-official:before { content: $fa-var-google-plus-official; }
+.#{$fa-css-prefix}-fa:before,
+.#{$fa-css-prefix}-font-awesome:before { content: $fa-var-font-awesome; }
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_larger.scss b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_larger.scss
new file mode 100644
index 0000000..41e9a81
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_larger.scss
@@ -0,0 +1,13 @@
+// Icon Sizes
+// -------------------------
+
+/* makes the font 33% larger relative to the icon container */
+.#{$fa-css-prefix}-lg {
+ font-size: (4em / 3);
+ line-height: (3em / 4);
+ vertical-align: -15%;
+}
+.#{$fa-css-prefix}-2x { font-size: 2em; }
+.#{$fa-css-prefix}-3x { font-size: 3em; }
+.#{$fa-css-prefix}-4x { font-size: 4em; }
+.#{$fa-css-prefix}-5x { font-size: 5em; }
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_list.scss b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_list.scss
new file mode 100644
index 0000000..7d1e4d5
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_list.scss
@@ -0,0 +1,19 @@
+// List Icons
+// -------------------------
+
+.#{$fa-css-prefix}-ul {
+ padding-left: 0;
+ margin-left: $fa-li-width;
+ list-style-type: none;
+ > li { position: relative; }
+}
+.#{$fa-css-prefix}-li {
+ position: absolute;
+ left: -$fa-li-width;
+ width: $fa-li-width;
+ top: (2em / 14);
+ text-align: center;
+ &.#{$fa-css-prefix}-lg {
+ left: -$fa-li-width + (4em / 14);
+ }
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_mixins.scss b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_mixins.scss
new file mode 100644
index 0000000..c3bbd57
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_mixins.scss
@@ -0,0 +1,60 @@
+// Mixins
+// --------------------------
+
+@mixin fa-icon() {
+ display: inline-block;
+ font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
+ font-size: inherit; // can't have font-size inherit on line above, so need to override
+ text-rendering: auto; // optimizelegibility throws things off #1094
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+}
+
+@mixin fa-icon-rotate($degrees, $rotation) {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})";
+ -webkit-transform: rotate($degrees);
+ -ms-transform: rotate($degrees);
+ transform: rotate($degrees);
+}
+
+@mixin fa-icon-flip($horiz, $vert, $rotation) {
+ -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)";
+ -webkit-transform: scale($horiz, $vert);
+ -ms-transform: scale($horiz, $vert);
+ transform: scale($horiz, $vert);
+}
+
+
+// Only display content to screen readers. A la Bootstrap 4.
+//
+// See: http://a11yproject.com/posts/how-to-hide-content/
+
+@mixin sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0,0,0,0);
+ border: 0;
+}
+
+// Use in conjunction with .sr-only to only display content when it's focused.
+//
+// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
+//
+// Credit: HTML5 Boilerplate
+
+@mixin sr-only-focusable {
+ &:active,
+ &:focus {
+ position: static;
+ width: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ clip: auto;
+ }
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_path.scss b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_path.scss
new file mode 100644
index 0000000..bb457c2
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_path.scss
@@ -0,0 +1,15 @@
+/* FONT PATH
+ * -------------------------- */
+
+@font-face {
+ font-family: 'FontAwesome';
+ src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
+ src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
+ url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
+ url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
+ url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
+ url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
+// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
+ font-weight: normal;
+ font-style: normal;
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_rotated-flipped.scss b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_rotated-flipped.scss
new file mode 100644
index 0000000..a3558fd
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_rotated-flipped.scss
@@ -0,0 +1,20 @@
+// Rotated & Flipped Icons
+// -------------------------
+
+.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
+.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
+.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
+
+.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
+.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
+
+// Hook for IE8-9
+// -------------------------
+
+:root .#{$fa-css-prefix}-rotate-90,
+:root .#{$fa-css-prefix}-rotate-180,
+:root .#{$fa-css-prefix}-rotate-270,
+:root .#{$fa-css-prefix}-flip-horizontal,
+:root .#{$fa-css-prefix}-flip-vertical {
+ filter: none;
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_screen-reader.scss b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_screen-reader.scss
new file mode 100644
index 0000000..637426f
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_screen-reader.scss
@@ -0,0 +1,5 @@
+// Screen Readers
+// -------------------------
+
+.sr-only { @include sr-only(); }
+.sr-only-focusable { @include sr-only-focusable(); }
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_stacked.scss b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_stacked.scss
new file mode 100644
index 0000000..aef7403
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_stacked.scss
@@ -0,0 +1,20 @@
+// Stacked Icons
+// -------------------------
+
+.#{$fa-css-prefix}-stack {
+ position: relative;
+ display: inline-block;
+ width: 2em;
+ height: 2em;
+ line-height: 2em;
+ vertical-align: middle;
+}
+.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ text-align: center;
+}
+.#{$fa-css-prefix}-stack-1x { line-height: inherit; }
+.#{$fa-css-prefix}-stack-2x { font-size: 2em; }
+.#{$fa-css-prefix}-inverse { color: $fa-inverse; }
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_variables.scss b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_variables.scss
new file mode 100644
index 0000000..a5a89ef
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/_variables.scss
@@ -0,0 +1,744 @@
+// Variables
+// --------------------------
+
+$fa-font-path: "../fonts" !default;
+$fa-font-size-base: 14px !default;
+$fa-line-height-base: 1 !default;
+//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.6.3/fonts" !default; // for referencing Bootstrap CDN font files directly
+$fa-css-prefix: fa !default;
+$fa-version: "4.6.3" !default;
+$fa-border-color: #eee !default;
+$fa-inverse: #fff !default;
+$fa-li-width: (30em / 14) !default;
+
+$fa-var-500px: "\f26e";
+$fa-var-adjust: "\f042";
+$fa-var-adn: "\f170";
+$fa-var-align-center: "\f037";
+$fa-var-align-justify: "\f039";
+$fa-var-align-left: "\f036";
+$fa-var-align-right: "\f038";
+$fa-var-amazon: "\f270";
+$fa-var-ambulance: "\f0f9";
+$fa-var-american-sign-language-interpreting: "\f2a3";
+$fa-var-anchor: "\f13d";
+$fa-var-android: "\f17b";
+$fa-var-angellist: "\f209";
+$fa-var-angle-double-down: "\f103";
+$fa-var-angle-double-left: "\f100";
+$fa-var-angle-double-right: "\f101";
+$fa-var-angle-double-up: "\f102";
+$fa-var-angle-down: "\f107";
+$fa-var-angle-left: "\f104";
+$fa-var-angle-right: "\f105";
+$fa-var-angle-up: "\f106";
+$fa-var-apple: "\f179";
+$fa-var-archive: "\f187";
+$fa-var-area-chart: "\f1fe";
+$fa-var-arrow-circle-down: "\f0ab";
+$fa-var-arrow-circle-left: "\f0a8";
+$fa-var-arrow-circle-o-down: "\f01a";
+$fa-var-arrow-circle-o-left: "\f190";
+$fa-var-arrow-circle-o-right: "\f18e";
+$fa-var-arrow-circle-o-up: "\f01b";
+$fa-var-arrow-circle-right: "\f0a9";
+$fa-var-arrow-circle-up: "\f0aa";
+$fa-var-arrow-down: "\f063";
+$fa-var-arrow-left: "\f060";
+$fa-var-arrow-right: "\f061";
+$fa-var-arrow-up: "\f062";
+$fa-var-arrows: "\f047";
+$fa-var-arrows-alt: "\f0b2";
+$fa-var-arrows-h: "\f07e";
+$fa-var-arrows-v: "\f07d";
+$fa-var-asl-interpreting: "\f2a3";
+$fa-var-assistive-listening-systems: "\f2a2";
+$fa-var-asterisk: "\f069";
+$fa-var-at: "\f1fa";
+$fa-var-audio-description: "\f29e";
+$fa-var-automobile: "\f1b9";
+$fa-var-backward: "\f04a";
+$fa-var-balance-scale: "\f24e";
+$fa-var-ban: "\f05e";
+$fa-var-bank: "\f19c";
+$fa-var-bar-chart: "\f080";
+$fa-var-bar-chart-o: "\f080";
+$fa-var-barcode: "\f02a";
+$fa-var-bars: "\f0c9";
+$fa-var-battery-0: "\f244";
+$fa-var-battery-1: "\f243";
+$fa-var-battery-2: "\f242";
+$fa-var-battery-3: "\f241";
+$fa-var-battery-4: "\f240";
+$fa-var-battery-empty: "\f244";
+$fa-var-battery-full: "\f240";
+$fa-var-battery-half: "\f242";
+$fa-var-battery-quarter: "\f243";
+$fa-var-battery-three-quarters: "\f241";
+$fa-var-bed: "\f236";
+$fa-var-beer: "\f0fc";
+$fa-var-behance: "\f1b4";
+$fa-var-behance-square: "\f1b5";
+$fa-var-bell: "\f0f3";
+$fa-var-bell-o: "\f0a2";
+$fa-var-bell-slash: "\f1f6";
+$fa-var-bell-slash-o: "\f1f7";
+$fa-var-bicycle: "\f206";
+$fa-var-binoculars: "\f1e5";
+$fa-var-birthday-cake: "\f1fd";
+$fa-var-bitbucket: "\f171";
+$fa-var-bitbucket-square: "\f172";
+$fa-var-bitcoin: "\f15a";
+$fa-var-black-tie: "\f27e";
+$fa-var-blind: "\f29d";
+$fa-var-bluetooth: "\f293";
+$fa-var-bluetooth-b: "\f294";
+$fa-var-bold: "\f032";
+$fa-var-bolt: "\f0e7";
+$fa-var-bomb: "\f1e2";
+$fa-var-book: "\f02d";
+$fa-var-bookmark: "\f02e";
+$fa-var-bookmark-o: "\f097";
+$fa-var-braille: "\f2a1";
+$fa-var-briefcase: "\f0b1";
+$fa-var-btc: "\f15a";
+$fa-var-bug: "\f188";
+$fa-var-building: "\f1ad";
+$fa-var-building-o: "\f0f7";
+$fa-var-bullhorn: "\f0a1";
+$fa-var-bullseye: "\f140";
+$fa-var-bus: "\f207";
+$fa-var-buysellads: "\f20d";
+$fa-var-cab: "\f1ba";
+$fa-var-calculator: "\f1ec";
+$fa-var-calendar: "\f073";
+$fa-var-calendar-check-o: "\f274";
+$fa-var-calendar-minus-o: "\f272";
+$fa-var-calendar-o: "\f133";
+$fa-var-calendar-plus-o: "\f271";
+$fa-var-calendar-times-o: "\f273";
+$fa-var-camera: "\f030";
+$fa-var-camera-retro: "\f083";
+$fa-var-car: "\f1b9";
+$fa-var-caret-down: "\f0d7";
+$fa-var-caret-left: "\f0d9";
+$fa-var-caret-right: "\f0da";
+$fa-var-caret-square-o-down: "\f150";
+$fa-var-caret-square-o-left: "\f191";
+$fa-var-caret-square-o-right: "\f152";
+$fa-var-caret-square-o-up: "\f151";
+$fa-var-caret-up: "\f0d8";
+$fa-var-cart-arrow-down: "\f218";
+$fa-var-cart-plus: "\f217";
+$fa-var-cc: "\f20a";
+$fa-var-cc-amex: "\f1f3";
+$fa-var-cc-diners-club: "\f24c";
+$fa-var-cc-discover: "\f1f2";
+$fa-var-cc-jcb: "\f24b";
+$fa-var-cc-mastercard: "\f1f1";
+$fa-var-cc-paypal: "\f1f4";
+$fa-var-cc-stripe: "\f1f5";
+$fa-var-cc-visa: "\f1f0";
+$fa-var-certificate: "\f0a3";
+$fa-var-chain: "\f0c1";
+$fa-var-chain-broken: "\f127";
+$fa-var-check: "\f00c";
+$fa-var-check-circle: "\f058";
+$fa-var-check-circle-o: "\f05d";
+$fa-var-check-square: "\f14a";
+$fa-var-check-square-o: "\f046";
+$fa-var-chevron-circle-down: "\f13a";
+$fa-var-chevron-circle-left: "\f137";
+$fa-var-chevron-circle-right: "\f138";
+$fa-var-chevron-circle-up: "\f139";
+$fa-var-chevron-down: "\f078";
+$fa-var-chevron-left: "\f053";
+$fa-var-chevron-right: "\f054";
+$fa-var-chevron-up: "\f077";
+$fa-var-child: "\f1ae";
+$fa-var-chrome: "\f268";
+$fa-var-circle: "\f111";
+$fa-var-circle-o: "\f10c";
+$fa-var-circle-o-notch: "\f1ce";
+$fa-var-circle-thin: "\f1db";
+$fa-var-clipboard: "\f0ea";
+$fa-var-clock-o: "\f017";
+$fa-var-clone: "\f24d";
+$fa-var-close: "\f00d";
+$fa-var-cloud: "\f0c2";
+$fa-var-cloud-download: "\f0ed";
+$fa-var-cloud-upload: "\f0ee";
+$fa-var-cny: "\f157";
+$fa-var-code: "\f121";
+$fa-var-code-fork: "\f126";
+$fa-var-codepen: "\f1cb";
+$fa-var-codiepie: "\f284";
+$fa-var-coffee: "\f0f4";
+$fa-var-cog: "\f013";
+$fa-var-cogs: "\f085";
+$fa-var-columns: "\f0db";
+$fa-var-comment: "\f075";
+$fa-var-comment-o: "\f0e5";
+$fa-var-commenting: "\f27a";
+$fa-var-commenting-o: "\f27b";
+$fa-var-comments: "\f086";
+$fa-var-comments-o: "\f0e6";
+$fa-var-compass: "\f14e";
+$fa-var-compress: "\f066";
+$fa-var-connectdevelop: "\f20e";
+$fa-var-contao: "\f26d";
+$fa-var-copy: "\f0c5";
+$fa-var-copyright: "\f1f9";
+$fa-var-creative-commons: "\f25e";
+$fa-var-credit-card: "\f09d";
+$fa-var-credit-card-alt: "\f283";
+$fa-var-crop: "\f125";
+$fa-var-crosshairs: "\f05b";
+$fa-var-css3: "\f13c";
+$fa-var-cube: "\f1b2";
+$fa-var-cubes: "\f1b3";
+$fa-var-cut: "\f0c4";
+$fa-var-cutlery: "\f0f5";
+$fa-var-dashboard: "\f0e4";
+$fa-var-dashcube: "\f210";
+$fa-var-database: "\f1c0";
+$fa-var-deaf: "\f2a4";
+$fa-var-deafness: "\f2a4";
+$fa-var-dedent: "\f03b";
+$fa-var-delicious: "\f1a5";
+$fa-var-desktop: "\f108";
+$fa-var-deviantart: "\f1bd";
+$fa-var-diamond: "\f219";
+$fa-var-digg: "\f1a6";
+$fa-var-dollar: "\f155";
+$fa-var-dot-circle-o: "\f192";
+$fa-var-download: "\f019";
+$fa-var-dribbble: "\f17d";
+$fa-var-dropbox: "\f16b";
+$fa-var-drupal: "\f1a9";
+$fa-var-edge: "\f282";
+$fa-var-edit: "\f044";
+$fa-var-eject: "\f052";
+$fa-var-ellipsis-h: "\f141";
+$fa-var-ellipsis-v: "\f142";
+$fa-var-empire: "\f1d1";
+$fa-var-envelope: "\f0e0";
+$fa-var-envelope-o: "\f003";
+$fa-var-envelope-square: "\f199";
+$fa-var-envira: "\f299";
+$fa-var-eraser: "\f12d";
+$fa-var-eur: "\f153";
+$fa-var-euro: "\f153";
+$fa-var-exchange: "\f0ec";
+$fa-var-exclamation: "\f12a";
+$fa-var-exclamation-circle: "\f06a";
+$fa-var-exclamation-triangle: "\f071";
+$fa-var-expand: "\f065";
+$fa-var-expeditedssl: "\f23e";
+$fa-var-external-link: "\f08e";
+$fa-var-external-link-square: "\f14c";
+$fa-var-eye: "\f06e";
+$fa-var-eye-slash: "\f070";
+$fa-var-eyedropper: "\f1fb";
+$fa-var-fa: "\f2b4";
+$fa-var-facebook: "\f09a";
+$fa-var-facebook-f: "\f09a";
+$fa-var-facebook-official: "\f230";
+$fa-var-facebook-square: "\f082";
+$fa-var-fast-backward: "\f049";
+$fa-var-fast-forward: "\f050";
+$fa-var-fax: "\f1ac";
+$fa-var-feed: "\f09e";
+$fa-var-female: "\f182";
+$fa-var-fighter-jet: "\f0fb";
+$fa-var-file: "\f15b";
+$fa-var-file-archive-o: "\f1c6";
+$fa-var-file-audio-o: "\f1c7";
+$fa-var-file-code-o: "\f1c9";
+$fa-var-file-excel-o: "\f1c3";
+$fa-var-file-image-o: "\f1c5";
+$fa-var-file-movie-o: "\f1c8";
+$fa-var-file-o: "\f016";
+$fa-var-file-pdf-o: "\f1c1";
+$fa-var-file-photo-o: "\f1c5";
+$fa-var-file-picture-o: "\f1c5";
+$fa-var-file-powerpoint-o: "\f1c4";
+$fa-var-file-sound-o: "\f1c7";
+$fa-var-file-text: "\f15c";
+$fa-var-file-text-o: "\f0f6";
+$fa-var-file-video-o: "\f1c8";
+$fa-var-file-word-o: "\f1c2";
+$fa-var-file-zip-o: "\f1c6";
+$fa-var-files-o: "\f0c5";
+$fa-var-film: "\f008";
+$fa-var-filter: "\f0b0";
+$fa-var-fire: "\f06d";
+$fa-var-fire-extinguisher: "\f134";
+$fa-var-firefox: "\f269";
+$fa-var-first-order: "\f2b0";
+$fa-var-flag: "\f024";
+$fa-var-flag-checkered: "\f11e";
+$fa-var-flag-o: "\f11d";
+$fa-var-flash: "\f0e7";
+$fa-var-flask: "\f0c3";
+$fa-var-flickr: "\f16e";
+$fa-var-floppy-o: "\f0c7";
+$fa-var-folder: "\f07b";
+$fa-var-folder-o: "\f114";
+$fa-var-folder-open: "\f07c";
+$fa-var-folder-open-o: "\f115";
+$fa-var-font: "\f031";
+$fa-var-font-awesome: "\f2b4";
+$fa-var-fonticons: "\f280";
+$fa-var-fort-awesome: "\f286";
+$fa-var-forumbee: "\f211";
+$fa-var-forward: "\f04e";
+$fa-var-foursquare: "\f180";
+$fa-var-frown-o: "\f119";
+$fa-var-futbol-o: "\f1e3";
+$fa-var-gamepad: "\f11b";
+$fa-var-gavel: "\f0e3";
+$fa-var-gbp: "\f154";
+$fa-var-ge: "\f1d1";
+$fa-var-gear: "\f013";
+$fa-var-gears: "\f085";
+$fa-var-genderless: "\f22d";
+$fa-var-get-pocket: "\f265";
+$fa-var-gg: "\f260";
+$fa-var-gg-circle: "\f261";
+$fa-var-gift: "\f06b";
+$fa-var-git: "\f1d3";
+$fa-var-git-square: "\f1d2";
+$fa-var-github: "\f09b";
+$fa-var-github-alt: "\f113";
+$fa-var-github-square: "\f092";
+$fa-var-gitlab: "\f296";
+$fa-var-gittip: "\f184";
+$fa-var-glass: "\f000";
+$fa-var-glide: "\f2a5";
+$fa-var-glide-g: "\f2a6";
+$fa-var-globe: "\f0ac";
+$fa-var-google: "\f1a0";
+$fa-var-google-plus: "\f0d5";
+$fa-var-google-plus-circle: "\f2b3";
+$fa-var-google-plus-official: "\f2b3";
+$fa-var-google-plus-square: "\f0d4";
+$fa-var-google-wallet: "\f1ee";
+$fa-var-graduation-cap: "\f19d";
+$fa-var-gratipay: "\f184";
+$fa-var-group: "\f0c0";
+$fa-var-h-square: "\f0fd";
+$fa-var-hacker-news: "\f1d4";
+$fa-var-hand-grab-o: "\f255";
+$fa-var-hand-lizard-o: "\f258";
+$fa-var-hand-o-down: "\f0a7";
+$fa-var-hand-o-left: "\f0a5";
+$fa-var-hand-o-right: "\f0a4";
+$fa-var-hand-o-up: "\f0a6";
+$fa-var-hand-paper-o: "\f256";
+$fa-var-hand-peace-o: "\f25b";
+$fa-var-hand-pointer-o: "\f25a";
+$fa-var-hand-rock-o: "\f255";
+$fa-var-hand-scissors-o: "\f257";
+$fa-var-hand-spock-o: "\f259";
+$fa-var-hand-stop-o: "\f256";
+$fa-var-hard-of-hearing: "\f2a4";
+$fa-var-hashtag: "\f292";
+$fa-var-hdd-o: "\f0a0";
+$fa-var-header: "\f1dc";
+$fa-var-headphones: "\f025";
+$fa-var-heart: "\f004";
+$fa-var-heart-o: "\f08a";
+$fa-var-heartbeat: "\f21e";
+$fa-var-history: "\f1da";
+$fa-var-home: "\f015";
+$fa-var-hospital-o: "\f0f8";
+$fa-var-hotel: "\f236";
+$fa-var-hourglass: "\f254";
+$fa-var-hourglass-1: "\f251";
+$fa-var-hourglass-2: "\f252";
+$fa-var-hourglass-3: "\f253";
+$fa-var-hourglass-end: "\f253";
+$fa-var-hourglass-half: "\f252";
+$fa-var-hourglass-o: "\f250";
+$fa-var-hourglass-start: "\f251";
+$fa-var-houzz: "\f27c";
+$fa-var-html5: "\f13b";
+$fa-var-i-cursor: "\f246";
+$fa-var-ils: "\f20b";
+$fa-var-image: "\f03e";
+$fa-var-inbox: "\f01c";
+$fa-var-indent: "\f03c";
+$fa-var-industry: "\f275";
+$fa-var-info: "\f129";
+$fa-var-info-circle: "\f05a";
+$fa-var-inr: "\f156";
+$fa-var-instagram: "\f16d";
+$fa-var-institution: "\f19c";
+$fa-var-internet-explorer: "\f26b";
+$fa-var-intersex: "\f224";
+$fa-var-ioxhost: "\f208";
+$fa-var-italic: "\f033";
+$fa-var-joomla: "\f1aa";
+$fa-var-jpy: "\f157";
+$fa-var-jsfiddle: "\f1cc";
+$fa-var-key: "\f084";
+$fa-var-keyboard-o: "\f11c";
+$fa-var-krw: "\f159";
+$fa-var-language: "\f1ab";
+$fa-var-laptop: "\f109";
+$fa-var-lastfm: "\f202";
+$fa-var-lastfm-square: "\f203";
+$fa-var-leaf: "\f06c";
+$fa-var-leanpub: "\f212";
+$fa-var-legal: "\f0e3";
+$fa-var-lemon-o: "\f094";
+$fa-var-level-down: "\f149";
+$fa-var-level-up: "\f148";
+$fa-var-life-bouy: "\f1cd";
+$fa-var-life-buoy: "\f1cd";
+$fa-var-life-ring: "\f1cd";
+$fa-var-life-saver: "\f1cd";
+$fa-var-lightbulb-o: "\f0eb";
+$fa-var-line-chart: "\f201";
+$fa-var-link: "\f0c1";
+$fa-var-linkedin: "\f0e1";
+$fa-var-linkedin-square: "\f08c";
+$fa-var-linux: "\f17c";
+$fa-var-list: "\f03a";
+$fa-var-list-alt: "\f022";
+$fa-var-list-ol: "\f0cb";
+$fa-var-list-ul: "\f0ca";
+$fa-var-location-arrow: "\f124";
+$fa-var-lock: "\f023";
+$fa-var-long-arrow-down: "\f175";
+$fa-var-long-arrow-left: "\f177";
+$fa-var-long-arrow-right: "\f178";
+$fa-var-long-arrow-up: "\f176";
+$fa-var-low-vision: "\f2a8";
+$fa-var-magic: "\f0d0";
+$fa-var-magnet: "\f076";
+$fa-var-mail-forward: "\f064";
+$fa-var-mail-reply: "\f112";
+$fa-var-mail-reply-all: "\f122";
+$fa-var-male: "\f183";
+$fa-var-map: "\f279";
+$fa-var-map-marker: "\f041";
+$fa-var-map-o: "\f278";
+$fa-var-map-pin: "\f276";
+$fa-var-map-signs: "\f277";
+$fa-var-mars: "\f222";
+$fa-var-mars-double: "\f227";
+$fa-var-mars-stroke: "\f229";
+$fa-var-mars-stroke-h: "\f22b";
+$fa-var-mars-stroke-v: "\f22a";
+$fa-var-maxcdn: "\f136";
+$fa-var-meanpath: "\f20c";
+$fa-var-medium: "\f23a";
+$fa-var-medkit: "\f0fa";
+$fa-var-meh-o: "\f11a";
+$fa-var-mercury: "\f223";
+$fa-var-microphone: "\f130";
+$fa-var-microphone-slash: "\f131";
+$fa-var-minus: "\f068";
+$fa-var-minus-circle: "\f056";
+$fa-var-minus-square: "\f146";
+$fa-var-minus-square-o: "\f147";
+$fa-var-mixcloud: "\f289";
+$fa-var-mobile: "\f10b";
+$fa-var-mobile-phone: "\f10b";
+$fa-var-modx: "\f285";
+$fa-var-money: "\f0d6";
+$fa-var-moon-o: "\f186";
+$fa-var-mortar-board: "\f19d";
+$fa-var-motorcycle: "\f21c";
+$fa-var-mouse-pointer: "\f245";
+$fa-var-music: "\f001";
+$fa-var-navicon: "\f0c9";
+$fa-var-neuter: "\f22c";
+$fa-var-newspaper-o: "\f1ea";
+$fa-var-object-group: "\f247";
+$fa-var-object-ungroup: "\f248";
+$fa-var-odnoklassniki: "\f263";
+$fa-var-odnoklassniki-square: "\f264";
+$fa-var-opencart: "\f23d";
+$fa-var-openid: "\f19b";
+$fa-var-opera: "\f26a";
+$fa-var-optin-monster: "\f23c";
+$fa-var-outdent: "\f03b";
+$fa-var-pagelines: "\f18c";
+$fa-var-paint-brush: "\f1fc";
+$fa-var-paper-plane: "\f1d8";
+$fa-var-paper-plane-o: "\f1d9";
+$fa-var-paperclip: "\f0c6";
+$fa-var-paragraph: "\f1dd";
+$fa-var-paste: "\f0ea";
+$fa-var-pause: "\f04c";
+$fa-var-pause-circle: "\f28b";
+$fa-var-pause-circle-o: "\f28c";
+$fa-var-paw: "\f1b0";
+$fa-var-paypal: "\f1ed";
+$fa-var-pencil: "\f040";
+$fa-var-pencil-square: "\f14b";
+$fa-var-pencil-square-o: "\f044";
+$fa-var-percent: "\f295";
+$fa-var-phone: "\f095";
+$fa-var-phone-square: "\f098";
+$fa-var-photo: "\f03e";
+$fa-var-picture-o: "\f03e";
+$fa-var-pie-chart: "\f200";
+$fa-var-pied-piper: "\f2ae";
+$fa-var-pied-piper-alt: "\f1a8";
+$fa-var-pied-piper-pp: "\f1a7";
+$fa-var-pinterest: "\f0d2";
+$fa-var-pinterest-p: "\f231";
+$fa-var-pinterest-square: "\f0d3";
+$fa-var-plane: "\f072";
+$fa-var-play: "\f04b";
+$fa-var-play-circle: "\f144";
+$fa-var-play-circle-o: "\f01d";
+$fa-var-plug: "\f1e6";
+$fa-var-plus: "\f067";
+$fa-var-plus-circle: "\f055";
+$fa-var-plus-square: "\f0fe";
+$fa-var-plus-square-o: "\f196";
+$fa-var-power-off: "\f011";
+$fa-var-print: "\f02f";
+$fa-var-product-hunt: "\f288";
+$fa-var-puzzle-piece: "\f12e";
+$fa-var-qq: "\f1d6";
+$fa-var-qrcode: "\f029";
+$fa-var-question: "\f128";
+$fa-var-question-circle: "\f059";
+$fa-var-question-circle-o: "\f29c";
+$fa-var-quote-left: "\f10d";
+$fa-var-quote-right: "\f10e";
+$fa-var-ra: "\f1d0";
+$fa-var-random: "\f074";
+$fa-var-rebel: "\f1d0";
+$fa-var-recycle: "\f1b8";
+$fa-var-reddit: "\f1a1";
+$fa-var-reddit-alien: "\f281";
+$fa-var-reddit-square: "\f1a2";
+$fa-var-refresh: "\f021";
+$fa-var-registered: "\f25d";
+$fa-var-remove: "\f00d";
+$fa-var-renren: "\f18b";
+$fa-var-reorder: "\f0c9";
+$fa-var-repeat: "\f01e";
+$fa-var-reply: "\f112";
+$fa-var-reply-all: "\f122";
+$fa-var-resistance: "\f1d0";
+$fa-var-retweet: "\f079";
+$fa-var-rmb: "\f157";
+$fa-var-road: "\f018";
+$fa-var-rocket: "\f135";
+$fa-var-rotate-left: "\f0e2";
+$fa-var-rotate-right: "\f01e";
+$fa-var-rouble: "\f158";
+$fa-var-rss: "\f09e";
+$fa-var-rss-square: "\f143";
+$fa-var-rub: "\f158";
+$fa-var-ruble: "\f158";
+$fa-var-rupee: "\f156";
+$fa-var-safari: "\f267";
+$fa-var-save: "\f0c7";
+$fa-var-scissors: "\f0c4";
+$fa-var-scribd: "\f28a";
+$fa-var-search: "\f002";
+$fa-var-search-minus: "\f010";
+$fa-var-search-plus: "\f00e";
+$fa-var-sellsy: "\f213";
+$fa-var-send: "\f1d8";
+$fa-var-send-o: "\f1d9";
+$fa-var-server: "\f233";
+$fa-var-share: "\f064";
+$fa-var-share-alt: "\f1e0";
+$fa-var-share-alt-square: "\f1e1";
+$fa-var-share-square: "\f14d";
+$fa-var-share-square-o: "\f045";
+$fa-var-shekel: "\f20b";
+$fa-var-sheqel: "\f20b";
+$fa-var-shield: "\f132";
+$fa-var-ship: "\f21a";
+$fa-var-shirtsinbulk: "\f214";
+$fa-var-shopping-bag: "\f290";
+$fa-var-shopping-basket: "\f291";
+$fa-var-shopping-cart: "\f07a";
+$fa-var-sign-in: "\f090";
+$fa-var-sign-language: "\f2a7";
+$fa-var-sign-out: "\f08b";
+$fa-var-signal: "\f012";
+$fa-var-signing: "\f2a7";
+$fa-var-simplybuilt: "\f215";
+$fa-var-sitemap: "\f0e8";
+$fa-var-skyatlas: "\f216";
+$fa-var-skype: "\f17e";
+$fa-var-slack: "\f198";
+$fa-var-sliders: "\f1de";
+$fa-var-slideshare: "\f1e7";
+$fa-var-smile-o: "\f118";
+$fa-var-snapchat: "\f2ab";
+$fa-var-snapchat-ghost: "\f2ac";
+$fa-var-snapchat-square: "\f2ad";
+$fa-var-soccer-ball-o: "\f1e3";
+$fa-var-sort: "\f0dc";
+$fa-var-sort-alpha-asc: "\f15d";
+$fa-var-sort-alpha-desc: "\f15e";
+$fa-var-sort-amount-asc: "\f160";
+$fa-var-sort-amount-desc: "\f161";
+$fa-var-sort-asc: "\f0de";
+$fa-var-sort-desc: "\f0dd";
+$fa-var-sort-down: "\f0dd";
+$fa-var-sort-numeric-asc: "\f162";
+$fa-var-sort-numeric-desc: "\f163";
+$fa-var-sort-up: "\f0de";
+$fa-var-soundcloud: "\f1be";
+$fa-var-space-shuttle: "\f197";
+$fa-var-spinner: "\f110";
+$fa-var-spoon: "\f1b1";
+$fa-var-spotify: "\f1bc";
+$fa-var-square: "\f0c8";
+$fa-var-square-o: "\f096";
+$fa-var-stack-exchange: "\f18d";
+$fa-var-stack-overflow: "\f16c";
+$fa-var-star: "\f005";
+$fa-var-star-half: "\f089";
+$fa-var-star-half-empty: "\f123";
+$fa-var-star-half-full: "\f123";
+$fa-var-star-half-o: "\f123";
+$fa-var-star-o: "\f006";
+$fa-var-steam: "\f1b6";
+$fa-var-steam-square: "\f1b7";
+$fa-var-step-backward: "\f048";
+$fa-var-step-forward: "\f051";
+$fa-var-stethoscope: "\f0f1";
+$fa-var-sticky-note: "\f249";
+$fa-var-sticky-note-o: "\f24a";
+$fa-var-stop: "\f04d";
+$fa-var-stop-circle: "\f28d";
+$fa-var-stop-circle-o: "\f28e";
+$fa-var-street-view: "\f21d";
+$fa-var-strikethrough: "\f0cc";
+$fa-var-stumbleupon: "\f1a4";
+$fa-var-stumbleupon-circle: "\f1a3";
+$fa-var-subscript: "\f12c";
+$fa-var-subway: "\f239";
+$fa-var-suitcase: "\f0f2";
+$fa-var-sun-o: "\f185";
+$fa-var-superscript: "\f12b";
+$fa-var-support: "\f1cd";
+$fa-var-table: "\f0ce";
+$fa-var-tablet: "\f10a";
+$fa-var-tachometer: "\f0e4";
+$fa-var-tag: "\f02b";
+$fa-var-tags: "\f02c";
+$fa-var-tasks: "\f0ae";
+$fa-var-taxi: "\f1ba";
+$fa-var-television: "\f26c";
+$fa-var-tencent-weibo: "\f1d5";
+$fa-var-terminal: "\f120";
+$fa-var-text-height: "\f034";
+$fa-var-text-width: "\f035";
+$fa-var-th: "\f00a";
+$fa-var-th-large: "\f009";
+$fa-var-th-list: "\f00b";
+$fa-var-themeisle: "\f2b2";
+$fa-var-thumb-tack: "\f08d";
+$fa-var-thumbs-down: "\f165";
+$fa-var-thumbs-o-down: "\f088";
+$fa-var-thumbs-o-up: "\f087";
+$fa-var-thumbs-up: "\f164";
+$fa-var-ticket: "\f145";
+$fa-var-times: "\f00d";
+$fa-var-times-circle: "\f057";
+$fa-var-times-circle-o: "\f05c";
+$fa-var-tint: "\f043";
+$fa-var-toggle-down: "\f150";
+$fa-var-toggle-left: "\f191";
+$fa-var-toggle-off: "\f204";
+$fa-var-toggle-on: "\f205";
+$fa-var-toggle-right: "\f152";
+$fa-var-toggle-up: "\f151";
+$fa-var-trademark: "\f25c";
+$fa-var-train: "\f238";
+$fa-var-transgender: "\f224";
+$fa-var-transgender-alt: "\f225";
+$fa-var-trash: "\f1f8";
+$fa-var-trash-o: "\f014";
+$fa-var-tree: "\f1bb";
+$fa-var-trello: "\f181";
+$fa-var-tripadvisor: "\f262";
+$fa-var-trophy: "\f091";
+$fa-var-truck: "\f0d1";
+$fa-var-try: "\f195";
+$fa-var-tty: "\f1e4";
+$fa-var-tumblr: "\f173";
+$fa-var-tumblr-square: "\f174";
+$fa-var-turkish-lira: "\f195";
+$fa-var-tv: "\f26c";
+$fa-var-twitch: "\f1e8";
+$fa-var-twitter: "\f099";
+$fa-var-twitter-square: "\f081";
+$fa-var-umbrella: "\f0e9";
+$fa-var-underline: "\f0cd";
+$fa-var-undo: "\f0e2";
+$fa-var-universal-access: "\f29a";
+$fa-var-university: "\f19c";
+$fa-var-unlink: "\f127";
+$fa-var-unlock: "\f09c";
+$fa-var-unlock-alt: "\f13e";
+$fa-var-unsorted: "\f0dc";
+$fa-var-upload: "\f093";
+$fa-var-usb: "\f287";
+$fa-var-usd: "\f155";
+$fa-var-user: "\f007";
+$fa-var-user-md: "\f0f0";
+$fa-var-user-plus: "\f234";
+$fa-var-user-secret: "\f21b";
+$fa-var-user-times: "\f235";
+$fa-var-users: "\f0c0";
+$fa-var-venus: "\f221";
+$fa-var-venus-double: "\f226";
+$fa-var-venus-mars: "\f228";
+$fa-var-viacoin: "\f237";
+$fa-var-viadeo: "\f2a9";
+$fa-var-viadeo-square: "\f2aa";
+$fa-var-video-camera: "\f03d";
+$fa-var-vimeo: "\f27d";
+$fa-var-vimeo-square: "\f194";
+$fa-var-vine: "\f1ca";
+$fa-var-vk: "\f189";
+$fa-var-volume-control-phone: "\f2a0";
+$fa-var-volume-down: "\f027";
+$fa-var-volume-off: "\f026";
+$fa-var-volume-up: "\f028";
+$fa-var-warning: "\f071";
+$fa-var-wechat: "\f1d7";
+$fa-var-weibo: "\f18a";
+$fa-var-weixin: "\f1d7";
+$fa-var-whatsapp: "\f232";
+$fa-var-wheelchair: "\f193";
+$fa-var-wheelchair-alt: "\f29b";
+$fa-var-wifi: "\f1eb";
+$fa-var-wikipedia-w: "\f266";
+$fa-var-windows: "\f17a";
+$fa-var-won: "\f159";
+$fa-var-wordpress: "\f19a";
+$fa-var-wpbeginner: "\f297";
+$fa-var-wpforms: "\f298";
+$fa-var-wrench: "\f0ad";
+$fa-var-xing: "\f168";
+$fa-var-xing-square: "\f169";
+$fa-var-y-combinator: "\f23b";
+$fa-var-y-combinator-square: "\f1d4";
+$fa-var-yahoo: "\f19e";
+$fa-var-yc: "\f23b";
+$fa-var-yc-square: "\f1d4";
+$fa-var-yelp: "\f1e9";
+$fa-var-yen: "\f157";
+$fa-var-yoast: "\f2b1";
+$fa-var-youtube: "\f167";
+$fa-var-youtube-play: "\f16a";
+$fa-var-youtube-square: "\f166";
+
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/font-awesome.scss b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/font-awesome.scss
new file mode 100644
index 0000000..2308b14
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/font-awesome/scss/font-awesome.scss
@@ -0,0 +1,18 @@
+/*!
+ * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */
+
+@import "variables";
+@import "mixins";
+@import "path";
+@import "core";
+@import "larger";
+@import "fixed-width";
+@import "list";
+@import "bordered-pulled";
+@import "animated";
+@import "rotated-flipped";
+@import "stacked";
+@import "icons";
+@import "screen-reader";
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/.bower.json b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/.bower.json
new file mode 100644
index 0000000..8d2d407
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/.bower.json
@@ -0,0 +1,41 @@
+{
+ "name": "jquery-validation",
+ "homepage": "http://jqueryvalidation.org/",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/jzaefferer/jquery-validation.git"
+ },
+ "authors": [
+ "Jörn Zaefferer "
+ ],
+ "description": "Form validation made easy",
+ "main": "dist/jquery.validate.js",
+ "keywords": [
+ "forms",
+ "validation",
+ "validate"
+ ],
+ "license": "MIT",
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "bower_components",
+ "test",
+ "demo",
+ "lib"
+ ],
+ "dependencies": {
+ "jquery": ">= 1.7.2"
+ },
+ "version": "1.15.0",
+ "_release": "1.15.0",
+ "_resolution": {
+ "type": "version",
+ "tag": "1.15.0",
+ "commit": "1621cadc940900a4a7809fe29f2b568328be4340"
+ },
+ "_source": "https://github.com/jzaefferer/jquery-validation.git",
+ "_target": "^1.15.0",
+ "_originalSource": "jquery-validation",
+ "_direct": true
+}
\ No newline at end of file
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/CONTRIBUTING.md b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/CONTRIBUTING.md
new file mode 100644
index 0000000..f6d10ab
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/CONTRIBUTING.md
@@ -0,0 +1,54 @@
+# Contributing to the jQuery Validation Plugin
+
+## Reporting an Issue
+
+1. Make sure the problem you're addressing is reproducible.
+2. Use http://jsbin.com or http://jsfiddle.net to provide a test page.
+3. Indicate what browsers the issue can be reproduced in. **Note: IE Compatibilty mode issues will not be addressed. Make sure you test in a real browser!**
+4. What version of the plug-in is the issue reproducible in. Is it reproducible after updating to the latest version.
+
+Documentation issues are also tracked at the [jQuery Validation](https://github.com/jzaefferer/jquery-validation/issues) issue tracker.
+Pull Requests to improve the docs are welcome at the [jQuery Validation docs](https://github.com/jzaefferer/validation-content) repository, though.
+
+**IMPORTANT NOTE ABOUT EMAIL VALIDATION**. As of version 1.12.0 this plugin is using the same regular expression that the [HTML5 specification suggests for browsers to use](https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address). We will follow their lead and use the same check. If you think the specification is wrong, please report the issue to them. If you have different requirements, consider [using a custom method](http://jqueryvalidation.org/jQuery.validator.addMethod/).
+In case you need to adjust the built-in validation regular expression patterns, please [follow the documentation](http://jqueryvalidation.org/jQuery.validator.methods/).
+
+## Contributing code
+
+Thanks for contributing! Here's a few guidelines to help your contribution get landed.
+
+1. Make sure the problem you're addressing is reproducible. Use jsbin.com or jsfiddle.net to provide a test page.
+2. Follow the [jQuery style guide](http://contribute.jquery.com/style-guides/js)
+3. Add or update unit tests along with your patch. Run the unit tests in at least one browser (see below).
+4. Run `grunt` (see below) to check for linting and a few other issues.
+5. Describe the change in your commit message and reference the ticket, like this: "Demos: Fixed delegate bug for dynamic-totals demo. Fixes #51". If you're adding a new localization file, use something like this: "Localization: Added croatian (HR) localization"
+
+## Build setup
+
+1. Install [NodeJS](http://nodejs.org).
+2. Install the Grunt CLI To install by running `npm install -g grunt-cli`. More details are available on their website http://gruntjs.com/getting-started.
+3. Install the NPM dependencies by running `npm install`.
+4. The build can now be called by running `grunt`.
+
+## Creating a new Additional Method
+
+If you've wrote custom methods that you'd like to contribute to additional-methods.js:
+
+1. Create a branch
+2. Add the method as a new file in `src/additional`
+3. (Optional) Add translations to `src/localization`
+4. Send a pull request to the master branch.
+
+## Unit Tests
+
+To run unit tests, just open `test/index.html` within your browser. Make sure you ran `npm install` before so all required dependencies are available.
+Start with one browser while developing the fix, then run against others before committing. Usually latest Chrome, Firefox, Safari and Opera and a few IEs.
+
+## Documentation
+
+Please report documentation issues at the [jQuery Validation](https://github.com/jzaefferer/jquery-validation/issues) issue tracker.
+In case your pull request implements or changes public API it would be a plus you would provide a pull request against the [jQuery Validation docs](https://github.com/jzaefferer/validation-content) repository.
+
+## Linting
+
+To run JSHint and other tools, use `grunt`.
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/Gruntfile.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/Gruntfile.js
new file mode 100644
index 0000000..9af3674
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/Gruntfile.js
@@ -0,0 +1,190 @@
+/*jshint node:true*/
+module.exports = function( grunt ) {
+
+"use strict";
+
+var banner,
+ umdStart,
+ umdMiddle,
+ umdEnd,
+ umdStandardDefine,
+ umdAdditionalDefine,
+ umdLocalizationDefine;
+
+banner = "/*!\n" +
+ " * jQuery Validation Plugin v<%= pkg.version %>\n" +
+ " *\n" +
+ " * <%= pkg.homepage %>\n" +
+ " *\n" +
+ " * Copyright (c) <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>\n" +
+ " * Released under the <%= _.pluck(pkg.licenses, 'type').join(', ') %> license\n" +
+ " */\n";
+
+// Define UMD wrapper variables
+
+umdStart = "(function( factory ) {\n" +
+ "\tif ( typeof define === \"function\" && define.amd ) {\n";
+
+umdMiddle = "\t} else if (typeof module === \"object\" && module.exports) {\n" +
+ "\t\tmodule.exports = factory( require( \"jquery\" ) );\n" +
+ "\t} else {\n" +
+ "\t\tfactory( jQuery );\n" +
+ "\t}\n" +
+ "}(function( $ ) {\n\n";
+
+umdEnd = "\n}));";
+
+umdStandardDefine = "\t\tdefine( [\"jquery\"], factory );\n";
+umdAdditionalDefine = "\t\tdefine( [\"jquery\", \"./jquery.validate\"], factory );\n";
+umdLocalizationDefine = "\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n";
+
+grunt.initConfig( {
+ pkg: grunt.file.readJSON( "package.json" ),
+ concat: {
+
+ // Used to copy to dist folder
+ dist: {
+ options: {
+ banner: banner +
+ umdStart +
+ umdStandardDefine +
+ umdMiddle,
+ footer: umdEnd
+ },
+ files: {
+ "dist/jquery.validate.js": [ "src/core.js", "src/*.js" ]
+ }
+ },
+ extra: {
+ options: {
+ banner: banner +
+ umdStart +
+ umdAdditionalDefine +
+ umdMiddle,
+ footer: umdEnd
+ },
+ files: {
+ "dist/additional-methods.js": [ "src/additional/additional.js", "src/additional/*.js" ]
+ }
+ }
+ },
+ uglify: {
+ options: {
+ preserveComments: false,
+ banner: "/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - " +
+ "<%= grunt.template.today('m/d/yyyy') %>\n" +
+ " * <%= pkg.homepage %>\n" +
+ " * Copyright (c) <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>;" +
+ " Licensed <%= _.pluck(pkg.licenses, 'type').join(', ') %> */\n"
+ },
+ dist: {
+ files: {
+ "dist/additional-methods.min.js": "dist/additional-methods.js",
+ "dist/jquery.validate.min.js": "dist/jquery.validate.js"
+ }
+ },
+ all: {
+ expand: true,
+ cwd: "dist/localization",
+ src: "**/*.js",
+ dest: "dist/localization",
+ ext: ".min.js"
+ }
+ },
+ compress: {
+ dist: {
+ options: {
+ mode: "zip",
+ level: 1,
+ archive: "dist/<%= pkg.name %>-<%= pkg.version %>.zip",
+ pretty: true
+ },
+ src: [
+ "changelog.txt",
+ "demo/**/*.*",
+ "dist/**/*.js",
+ "Gruntfile.js",
+ "lib/**/*.*",
+ "package.json",
+ "README.md",
+ "src/**/*.*",
+ "test/**/*.*"
+ ]
+ }
+ },
+ qunit: {
+ files: "test/index.html"
+ },
+ jshint: {
+ options: {
+ jshintrc: true
+ },
+ core: {
+ src: "src/**/*.js"
+ },
+ test: {
+ src: [ "test/*.js", "test/additional/*.js" ]
+ },
+ grunt: {
+ src: "Gruntfile.js"
+ }
+ },
+ watch: {
+ options: {
+ atBegin: true
+ },
+ src: {
+ files: "<%= jshint.core.src %>",
+ tasks: [
+ "concat"
+ ]
+ }
+ },
+ jscs: {
+ all: [ "<%= jshint.core.src %>", "<%= jshint.test.src %>", "<%= jshint.grunt.src %>" ]
+ },
+ copy: {
+ dist: {
+ options: {
+
+ // Append UMD wrapper
+ process: function( content ) {
+ return umdStart + umdLocalizationDefine + umdMiddle + content + umdEnd;
+ }
+ },
+ src: "src/localization/*",
+ dest: "dist/localization",
+ expand: true,
+ flatten: true,
+ filter: "isFile"
+ }
+ },
+ replace: {
+ dist: {
+ src: "dist/**/*.min.js",
+ overwrite: true,
+ replacements: [
+ {
+ from: "./jquery.validate",
+ to: "./jquery.validate.min"
+ }
+ ]
+ }
+ }
+} );
+
+grunt.loadNpmTasks( "grunt-contrib-jshint" );
+grunt.loadNpmTasks( "grunt-contrib-qunit" );
+grunt.loadNpmTasks( "grunt-contrib-uglify" );
+grunt.loadNpmTasks( "grunt-contrib-concat" );
+grunt.loadNpmTasks( "grunt-contrib-compress" );
+grunt.loadNpmTasks( "grunt-contrib-watch" );
+grunt.loadNpmTasks( "grunt-jscs" );
+grunt.loadNpmTasks( "grunt-contrib-copy" );
+grunt.loadNpmTasks( "grunt-text-replace" );
+
+grunt.registerTask( "default", [ "concat", "copy", "jscs", "jshint", "qunit" ] );
+grunt.registerTask( "release", [ "default", "uglify", "replace", "compress" ] );
+grunt.registerTask( "start", [ "concat", "watch" ] );
+
+};
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/LICENSE.md b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/LICENSE.md
new file mode 100644
index 0000000..dc377cc
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/LICENSE.md
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+=====================
+
+Copyright Jörn Zaefferer
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/README.md b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/README.md
new file mode 100644
index 0000000..6571abd
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/README.md
@@ -0,0 +1,63 @@
+[jQuery Validation Plugin](http://jqueryvalidation.org/) - Form validation made easy
+================================
+
+[![Build Status](https://secure.travis-ci.org/jzaefferer/jquery-validation.svg)](http://travis-ci.org/jzaefferer/jquery-validation)
+[![devDependency Status](https://david-dm.org/jzaefferer/jquery-validation/dev-status.svg?theme=shields.io)](https://david-dm.org/jzaefferer/jquery-validation#info=devDependencies)
+[![Join the chat at https://gitter.im/jzaefferer/jquery-validation](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jzaefferer/jquery-validation)
+
+The jQuery Validation Plugin provides drop-in validation for your existing forms, while making all kinds of customizations to fit your application really easy.
+
+## [⚠️ Looking for maintainers ⚠️](https://github.com/jzaefferer/jquery-validation/issues/1569)
+
+This project is looking for one or more maintainers. This mostly involves triaging issues, reviewing pull requests, and occasionally fixing bugs or finishing a feature implementation. If you're interested, [please get in touch](https://github.com/jzaefferer/jquery-validation/issues/1569).
+
+
+## Getting Started
+
+### Downloading the prebuilt files
+
+Prebuilt files can be downloaded from http://jqueryvalidation.org/
+
+### Downloading the latest changes
+
+The unreleased development files can be obtained by:
+
+ 1. [Downloading](https://github.com/jzaefferer/jquery-validation/archive/master.zip) or Forking this repository
+ 2. [Setup the build](CONTRIBUTING.md#build-setup)
+ 3. Run `grunt` to create the built files in the "dist" directory
+
+### Including it on your page
+
+Include jQuery and the plugin on a page. Then select a form to validate and call the `validate` method.
+
+```html
+
+
+
+
+```
+
+Alternatively include jQuery and the plugin via requirejs in your module.
+
+```js
+define(["jquery", "jquery.validate"], function( $ ) {
+ $("form").validate();
+});
+```
+
+For more information on how to setup a rules and customizations, [check the documentation](http://jqueryvalidation.org/documentation/).
+
+## Reporting issues and contributing code
+
+See the [Contributing Guidelines](CONTRIBUTING.md) for details.
+
+**IMPORTANT NOTE ABOUT EMAIL VALIDATION**. As of version 1.12.0 this plugin is using the same regular expression that the [HTML5 specification suggests for browsers to use](https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address). We will follow their lead and use the same check. If you think the specification is wrong, please report the issue to them. If you have different requirements, consider [using a custom method](http://jqueryvalidation.org/jQuery.validator.addMethod/).
+In case you need to adjust the built-in validation regular expression patterns, please [follow the documentation](http://jqueryvalidation.org/jQuery.validator.methods/).
+
+## License
+Copyright © Jörn Zaefferer
+Licensed under the MIT license.
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/bower.json b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/bower.json
new file mode 100644
index 0000000..0d4547d
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/bower.json
@@ -0,0 +1,31 @@
+{
+ "name": "jquery-validation",
+ "homepage": "http://jqueryvalidation.org/",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/jzaefferer/jquery-validation.git"
+ },
+ "authors": [
+ "Jörn Zaefferer "
+ ],
+ "description": "Form validation made easy",
+ "main": "dist/jquery.validate.js",
+ "keywords": [
+ "forms",
+ "validation",
+ "validate"
+ ],
+ "license": "MIT",
+ "ignore": [
+ "**/.*",
+ "node_modules",
+ "bower_components",
+ "test",
+ "demo",
+ "lib"
+ ],
+ "dependencies": {
+ "jquery": ">= 1.7.2"
+ },
+ "version": "1.15.0"
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/build/release.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/build/release.js
new file mode 100644
index 0000000..8e30e42
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/build/release.js
@@ -0,0 +1,49 @@
+/* Release checklist
+- Run `git changelog` and edit to match previous output (this should make use of jquey-release instead)
+- pull latest https://github.com/jquery/jquery-release
+- disable _generateChangelog task in release.js (BOOOO)
+- adjust commit message in jquery-release/lib/repo.js to prepand "Release:", to make the commit hook happy
+- run
+ node release.js --remote=jzaefferer/jquery-validation
+- Wait a while, verify and confirm each step
+- Create GitHub release: Pick the new tag, add changelog, upload zip
+- Update MS CDN (see 1password for url and credentials)
+- Check jsdelivr CDN
+- Update validation-content/pages/index.html (may have to hold off on CDN updates until available)
+- Write blog post: Some highlights, changelog, download links
+*/
+
+/*jshint node:true */
+module.exports = function( Release ) {
+
+function today() {
+ return new Date().toISOString().replace(/T.+/, "");
+}
+
+// also add version property to this
+Release._jsonFiles.push( "validation.jquery.json" );
+
+Release.define({
+ issueTracker: "github",
+ changelogShell: function() {
+ return Release.newVersion + " / " + today() + "\n==================\n\n";
+ },
+
+ generateArtifacts: function( done ) {
+ Release.exec( "grunt release", "Grunt command failed" );
+ done([
+ "dist/additional-methods.js",
+ "dist/additional-methods.min.js",
+ "dist/jquery.validate.js",
+ "dist/jquery.validate.min.js"
+ ]);
+ },
+
+ cdnPublish: false,
+ npmPublish: true,
+
+ // disable authors check
+ _checkAuthorsTxt: function() {}
+});
+
+};
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/changelog.md b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/changelog.md
new file mode 100644
index 0000000..f6a1af3
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/changelog.md
@@ -0,0 +1,534 @@
+1.14.0 / 2015-06-30
+==================
+
+## Core
+ * Remove unused removeAttrs method
+ * Replace regex for url method
+ * Remove bad url param in $.ajax, overwritten by $.extend
+ * Properly handle nested cancel submit button
+ * Fix indent
+ * Refactor attributeRules and dataRules to share noramlizer
+ * dataRules method to convert value to number for number inputs
+ * Update url method to allow for protocol-relative URLs
+ * Remove deprecated $.format placeholder
+ * Use jQuery 1.7+ on/off, add destroy method
+ * IE8 compatibility changed .indexOf to $.inArray
+ * Cast NaN value attributes to undefined for Opera Mini
+ * Stop trimming value inside required method
+ * Use :disabled selector to match disabled elements
+ * Exclude some keyboard keys to prevent revalidating the field
+ * Do not search the whole DOM for radio/checkbox elements
+ * Throw better errors for bad rule methods
+ * Fixed number validation error
+ * Fix reference to whatwg spec
+ * Focus invalid element when validating a custom set of inputs
+ * Reset element styles when using custom highlight methods
+ * Escape dollar sign in error id
+ * Revert "Ignore readonly as well as disabled fields."
+ * Update link in comment for Luhn algorithm
+
+## Additionals
+ * Update dateITA to address timezone issue
+ * Fix extension method to only method period
+ * Fix accept method to match period only
+ * Update time method to allow single digit hour
+ * Drop bad test for notEqualTo method
+ * Add notEqualTo method
+ * Use correct jQuery reference via `$`
+ * Remove useless regex check in iban method
+ * Brazilian CPF number
+
+## Localization
+ * Update messages_tr.js
+ * Update messages_sr_lat.js
+ * Adding Perú Spanish (ES PE)
+ * Adding Georgian (ქართული, ge)
+ * Fixed typo in catalan translation
+ * Improve Finnish (fi) translation
+ * Add armenian (hy_AM) locale
+ * Extend italian (it) translation with currency method
+ * Add bn_BD locale
+ * Update zh locale
+ * Remove full stop at the end of italian messages
+
+1.13.1 / 2014-10-14
+==================
+
+## Core
+ * Allow 0 as value for autoCreateRanges
+ * Apply ignore setting to all validationTargetFor elements
+ * Don't trim value in min/max/rangelength methods
+ * Escape id/name before using it as a selector in errorsFor
+ * Explicit default for focusCleanup option
+ * Fix incorrect regexp for describedby matcher
+ * Ignore readonly as well as disabled fields
+ * Improve id escaping, store escaped id in describedby
+ * Use return value of submitHandler to allow or prevent form submit
+
+## Additionals
+ * Add postalcodeBR method
+ * Fix pattern method when parameter is a string
+
+
+1.13.0 / 2014-07-01
+==================
+
+## All
+* Add plugin UMD wrapper
+
+## Core
+* Respect non-error aria-describedby and empty hidden errors
+* Improve dateISO RegExp
+* Added radio/checkbox to delegate click-event
+* Use aria-describedby for non-label elements
+* Register focusin, focusout and keyup also on radio/checkbox
+* Fix normalization for rangelength attribute value
+* Update elementValue method to deal with type="number" fields
+* Use charAt instead of array notation on strings, to support IE8(?)
+
+## Localization
+* Fix sk translation of rangelength method
+* Add Finnish methods
+* Fixed GL number validation message
+* Fixed ES number method validation message
+* Added galician (GL)
+* Fixed French messages for min and max methods
+
+## Additionals
+* Add statesUS method
+* Fix dateITA method to deal with DST bug
+* Add persian date method
+* Add postalCodeCA method
+* Add postalcodeIT method
+
+1.12.0 / 2014-04-01
+==================
+
+* Add ARIA testing ([3d5658e](https://github.com/jzaefferer/jquery-validation/commit/3d5658e9e4825fab27198c256beed86f0bd12577))
+* Add es-AR localization messages. ([7b30beb](https://github.com/jzaefferer/jquery-validation/commit/7b30beb8ebd218c38a55d26a63d529e16035c7a2))
+* Add missing dots to 'es' and 'es_AR' messages. ([a2a653c](https://github.com/jzaefferer/jquery-validation/commit/a2a653cb68926ca034b4b09d742d275db934d040))
+* Added Indonesian (ID) localization ([1d348bd](https://github.com/jzaefferer/jquery-validation/commit/1d348bdcb65807c71da8d0bfc13a97663631cd3a))
+* Added NIF, NIE and CIF Spanish documents numbers validation ([#830](https://github.com/jzaefferer/jquery-validation/issues/830), [317c20f](https://github.com/jzaefferer/jquery-validation/commit/317c20fa9bb772770bb9b70d46c7081d7cfc6545))
+* Added the current form to the context of the remote ajax request ([0a18ae6](https://github.com/jzaefferer/jquery-validation/commit/0a18ae65b9b6d877e3d15650a5c2617a9d2b11d5))
+* Additionals: Update IBAN method, trim trailing whitespaces ([#970](https://github.com/jzaefferer/jquery-validation/issues/970), [347b04a](https://github.com/jzaefferer/jquery-validation/commit/347b04a7d4e798227405246a5de3fc57451d52e1))
+* BIC method: Improve RegEx, {1} is always redundant. Closes gh-744 ([5cad6b4](https://github.com/jzaefferer/jquery-validation/commit/5cad6b493575e8a9a82470d17e0900c881130873))
+* Bower: Add Bower.json for package registration ([e86ccb0](https://github.com/jzaefferer/jquery-validation/commit/e86ccb06e301613172d472cf15dd4011ff71b398))
+* Changes dollar references to 'jQuery', for compability with jQuery.noConflict. Closes gh-754 ([2049afe](https://github.com/jzaefferer/jquery-validation/commit/2049afe46c1be7b3b89b1d9f0690f5bebf4fbf68))
+* Core: Add "method" field to error list entry ([89a15c7](https://github.com/jzaefferer/jquery-validation/commit/89a15c7a4b17fa2caaf4ff817f09b04c094c3884))
+* Core: Added support for generic messages via data-msg attribute ([5bebaa5](https://github.com/jzaefferer/jquery-validation/commit/5bebaa5c55c73f457c0e0181ec4e3b0c409e2a9d))
+* Core: Allow attributes to have a value of zero (eg min='0') ([#854](https://github.com/jzaefferer/jquery-validation/issues/854), [9dc0d1d](https://github.com/jzaefferer/jquery-validation/commit/9dc0d1dd946b2c6178991fb16df0223c76162579))
+* Core: Disable deprecated $.format ([#755](https://github.com/jzaefferer/jquery-validation/issues/755), [bf3b350](https://github.com/jzaefferer/jquery-validation/commit/bf3b3509140ea8ab5d83d3ec58fd9f1d7822efc5))
+* Core: Fix support for multiple error classes ([c1f0baf](https://github.com/jzaefferer/jquery-validation/commit/c1f0baf36c21ca175bbc05fb9345e5b44b094821))
+* Core: Ignore events on ignored elements ([#700](https://github.com/jzaefferer/jquery-validation/issues/700), [a864211](https://github.com/jzaefferer/jquery-validation/commit/a86421131ea69786ee9e0d23a68a54a7658ccdbf))
+* Core: Improve elementValue method ([6c041ed](https://github.com/jzaefferer/jquery-validation/commit/6c041edd21af1425d12d06cdd1e6e32a78263e82))
+* Core: Make element() handle ignored elements properly. ([3f464a8](https://github.com/jzaefferer/jquery-validation/commit/3f464a8da49dbb0e4881ada04165668e4a63cecb))
+* Core: Switch dataRules parsing to W3C HTML5 spec style ([460fd22](https://github.com/jzaefferer/jquery-validation/commit/460fd22b6c84a74c825ce1fa860c0a9da20b56bb))
+* Core: Trigger success on optional but have other successful validators ([#851](https://github.com/jzaefferer/jquery-validation/issues/851), [f93e1de](https://github.com/jzaefferer/jquery-validation/commit/f93e1deb48ec8b3a8a54e946a37db2de42d3aa2a))
+* Core: Use plain element instead of un-wrapping the element again ([03cd4c9](https://github.com/jzaefferer/jquery-validation/commit/03cd4c93069674db5415a0bf174a5870da47e5d2))
+* Core: make sure remote is executed last ([#711](https://github.com/jzaefferer/jquery-validation/issues/711), [ad91b6f](https://github.com/jzaefferer/jquery-validation/commit/ad91b6f388b7fdfb03b74e78554cbab9fd8fca6f))
+* Demo: Use correct option in multipart demo. ([#1025](https://github.com/jzaefferer/jquery-validation/issues/1025), [070edc7](https://github.com/jzaefferer/jquery-validation/commit/070edc7be4de564cb74cfa9ee4e3f40b6b70b76f))
+* Fix $/jQuery usage in additional methods. Fixes #839 ([#839](https://github.com/jzaefferer/jquery-validation/issues/839), [59bc899](https://github.com/jzaefferer/jquery-validation/commit/59bc899e4586255a4251903712e813c21d25b3e1))
+* Improve Chinese translations ([1a0bfe3](https://github.com/jzaefferer/jquery-validation/commit/1a0bfe32b16f8912ddb57388882aa880fab04ffe))
+* Initial ARIA-Required implementation ([bf3cfb2](https://github.com/jzaefferer/jquery-validation/commit/bf3cfb234ede2891d3f7e19df02894797dd7ba5e))
+* Localization: change accept values to extension. Fixes #771, closes gh-793. ([#771](https://github.com/jzaefferer/jquery-validation/issues/771), [12edec6](https://github.com/jzaefferer/jquery-validation/commit/12edec66eb30dc7e86756222d455d49b34016f65))
+* Messages: Add icelandic localization ([dc88575](https://github.com/jzaefferer/jquery-validation/commit/dc885753c8872044b0eaa1713cecd94c19d4c73d))
+* Messages: Add missing dots to 'bg', 'fr' and 'sr' messages. ([adbc636](https://github.com/jzaefferer/jquery-validation/commit/adbc6361c377bf6b74c35df9782479b1115fbad7))
+* Messages: Create messages_sr_lat.js ([f2f9007](https://github.com/jzaefferer/jquery-validation/commit/f2f90076518014d98495c2a9afb9a35d45d184e6))
+* Messages: Create messages_tj.js ([de830b3](https://github.com/jzaefferer/jquery-validation/commit/de830b3fd8689a7384656c17565ee92c2878d8a5))
+* Messages: Fix sr_lat translation, add missing space ([880ba1c](https://github.com/jzaefferer/jquery-validation/commit/880ba1ca545903a41d8c5332fc4038a7e9a580bd))
+* Messages: Update messages_sr.js, fix missing space ([10313f4](https://github.com/jzaefferer/jquery-validation/commit/10313f418c18ea75f385248468c2d3600f136cfb))
+* Methods: Add additional method for currency ([1a981b4](https://github.com/jzaefferer/jquery-validation/commit/1a981b440346620964c87ebdd0fa03246348390e))
+* Methods: Adding Smart Quotes to stripHTML's punctuation removal ([aa0d624](https://github.com/jzaefferer/jquery-validation/commit/aa0d6241c3ea04663edc1e45ed6e6134630bdd2f))
+* Methods: Fix dateITA method, avoiding summertime errors ([279b932](https://github.com/jzaefferer/jquery-validation/commit/279b932c1267b7238e6652880b7846ba3bbd2084))
+* Methods: Localized methods for chilean culture (es-CL) ([cf36b93](https://github.com/jzaefferer/jquery-validation/commit/cf36b933499e435196d951401221d533a4811810))
+* Methods: Update email to use HTML5 regex, remove email2 method ([#828](https://github.com/jzaefferer/jquery-validation/issues/828), [dd162ae](https://github.com/jzaefferer/jquery-validation/commit/dd162ae360639f73edd2dcf7a256710b2f5a4e64))
+* Pattern method: Remove delimiters, since HTML5 implementations don't include those either. ([37992c1](https://github.com/jzaefferer/jquery-validation/commit/37992c1c9e2e0be8b315ccccc2acb74863439d3e))
+* Restricting credit card validator to include length check. Closes gh-772 ([f5f47c5](https://github.com/jzaefferer/jquery-validation/commit/f5f47c5c661da5b0c0c6d59d169e82230928a804))
+* Update messages_ko.js - closes gh-715 ([5da3085](https://github.com/jzaefferer/jquery-validation/commit/5da3085ff02e0e6ecc955a8bfc3bb9a8d220581b))
+* Update messages_pt_BR.js. Closes gh-782 ([4bf813b](https://github.com/jzaefferer/jquery-validation/commit/4bf813b751ce34fac3c04eaa2e80f75da3461124))
+* Update phonesUK and mobileUK to accept new prefixes. Closes gh-750 ([d447b41](https://github.com/jzaefferer/jquery-validation/commit/d447b41b830dee984be21d8281ec7b87a852001d))
+* Verify nine-digit zip codes. Closes gh-726 ([165005d](https://github.com/jzaefferer/jquery-validation/commit/165005d4b5780e22d13d13189d107940c622a76f))
+* phoneUS: Add N11 exclusions. Closes gh-861 ([519bbc6](https://github.com/jzaefferer/jquery-validation/commit/519bbc656bcb26e8aae5166d7b2e000014e0d12a))
+* resetForm should clear any aria-invalid values ([4f8a631](https://github.com/jzaefferer/jquery-validation/commit/4f8a631cbe84f496ec66260ada52db2aa0bb3733))
+* valid(): Check all elements. Fixes #791 - valid() validates only the first (invalid) element ([#791](https://github.com/jzaefferer/jquery-validation/issues/791), [6f26803](https://github.com/jzaefferer/jquery-validation/commit/6f268031afaf4e155424ee74dd11f6c47fbb8553))
+
+1.11.1 / 2013-03-22
+==================
+
+ * Revert to also converting parameters of range method to numbers. Closes gh-702
+ * Replace most usage of PHP with mockjax handlers. Do some demo cleanup as well, update to newer masked-input plugin. Keep captcha demo in PHP. Fixes #662
+ * Remove inline code highlighting from milk demo. View source works fine.
+ * Fix dynamic-totals demo by trimming whitespace from template content before passing to jQuery constructor
+ * Fix min/max validation. Closes gh-666. Fixes #648
+ * Fixed 'messages' coming up as a rule and causing an exception after being updated through rules("add"). Closes gh-670, fixes #624
+ * Add Korean (ko) localization. Closes gh-671
+ * Improved the UK postcode method to filter out more invalid postcodes. Closes #682
+ * Update messages_sv.js. Closes #683
+ * Change grunt link to the project website. Closes #684
+ * Move remote method down the list to run last, after all other methods applied to a field. Fixes #679
+ * Update plugin.json description, should include the word 'validate'
+ * Fix typos
+ * Fix jQuery loader to use path of itself. Fixes nested demos.
+ * Update grunt-contrib-qunit to make use of PhantomJS 1.8, when installed through node module 'phantomjs'
+ * Make valid() return a boolean instead of 0 or 1. Fixes #109 - valid() does not return boolean value
+
+1.11.0 / 2013-02-04
+==================
+
+ * Remove clearing as numbers of `min`, `max` and `range` rules. Fixes #455. Closes gh-528.
+ * Update pre-existing labels - fixes #430 closes gh-436
+ * Fix $.validator.format to avoid group interpolation, where at least IE8/9 replaces -bash with the match. Fixes #614
+ * Fix mimetype regex
+ * Add plugin manifest and update headers to just MIT license, drop unnecessary dual-licensing (like jQuery).
+ * Hebrew messages: Removed dots at end of sentences - Fixes gh-568
+ * French translation for require_from_group validation. Fixes gh-573.
+ * Allow groups to be an array or a string - Fixes #479
+ * Removed spaces with multiple MIME types
+ * Fix some date validations, JS syntax errors.
+ * Remove support for metadata plugin, replace with data-rule- and data-msg- (added in 907467e8) properties.
+ * Added sftp as a valid url-pattern
+ * Add Malay (my) localization
+ * Update localization/messages_hu.js
+ * Remove focusin/focusout polyfill. Fixes #542 - Inclusion of jquery.validate interfers with focusin and focusout events in IE9
+ * Localization: Fixed typo in finnish translation
+ * Fix RTM demo to show invalid icon when going from valid back to invalid
+ * Fixed premature return in remote function which prevented ajax call from being made in case an input was entered too quickly. Ensures remote validation always validates the newest value.
+ * Undo fix for #244. Fixes #521 - E-mail validation fires immediately when text is in the field.
+
+1.10.0 / 2012-09-07
+===================
+
+ * Corrected French strings for nowhitespace, phoneUS, phoneUK and mobileUK based upon community feedback.
+ * rename files for language_REGION according to the standard ISO_3166-1 (http://en.wikipedia.org/wiki/ISO_3166-1), for Taiwan tha language is Chinese (zh) and the region is Taiwan (TW)
+ * Optimise RegEx patterns, especially for UK phone numbers.
+ * Add Language Name for each file, rename the language code according to the standard ISO 639 for Estonian, Georgian, Ukrainian and Chinese (http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
+ * Added croatian (HR) localization
+ * Existing French translations were edited and French translations for the additional methods were added.
+ * Merged in changes for specifying custom error messages in data attributes
+ * Updated UK Mobile phone number regex for new numbers. Fixes #154
+ * Add element to success call with test. Fixes #60
+ * Fixed regex for time additional method. Fixes #131
+ * resetForm now clears old previousValue on form elements. Fixes #312
+ * Added checkbox test to require_from_group and changed require_from_group to use elementValue. Fixes #359
+ * Fixed dataFilter response issues in jQuery 1.5.2+. Fixes #405
+ * Added jQuery Mobile demo. Fixes #249
+ * Deoptimize findByName for correctness. Fixes #82 - $.validator.prototype.findByName breaks in IE7
+ * Added US zip code support and test. Fixes #90
+ * Changed lastElement to lastActive in keyup, skip validation on tab or empty element. Fixes #244
+ * Removed number stripping from stripHtml. Fixes #2
+ * Fixed invalid count on invalid to valid remote validation. Fixes #286
+ * Add link to file_input to demo index
+ * Moved old accept method to extension additional-method, added new accept method to handle standard browser mimetype filtering. Fixes #287 and supersedes #369
+ * Disables blur event when onfocusout is set to false. Test added.
+ * Fixed value issue for radio buttons and checkboxes. Fixes #363
+ * Added test for rangeWords and fixed regex and bounds in method. Fixes #308
+ * Fixed TinyMCE Demo and added link on demo page. Fixes #382
+ * Changed localization message for min/max. Fixes #273
+ * Added pseudo selector for text input types to fix issue with default empty type attribute. Added tests and some test markup. Fixes #217
+ * Fixed delegate bug for dynamic-totals demo. Fixes #51
+ * Fix incorrect message for alphanumeric validator
+ * Removed incorrect false check on required attribute
+ * required attribute fix for non-html5 browsers. Fixes #301
+ * Added methods "require_from_group" and "skip_or_fill_minimum"
+ * Use correct iso code for swedish
+ * Updated demo HTML files to use HTML5 doctype
+ * Fixed regex issue for decimals without leading zeroes. Added new methods test. Fixes #41
+ * Introduce a elementValue method that normalizes only string values (don't touch array value of multi-select). Fixes #116
+ * Support for dynamically added submit buttons, and updated test case. Uses validateDelegate. Code from PR #9
+ * Fix bad double quote in test fixtures
+ * Fix maxWords method to include the upper bound, not exclude it. Fixes #284
+ * Fixed grammar error in german range validator message. Fixes #315
+ * Fixed handling of multiple class names for errorClass option. Test by Max Lynch. Fixes #280
+ * Fix jQuery.format usage, should be $.validator.format. Fixes #329
+ * Methods for 'all' UK phone numbers + UK postcodes
+ * Pattern method: Convert string param to RegExp. Fixes issue #223
+ * grammar error in german localization file
+ * Added Estonian localization for messages
+ * Improve tooltip handling on themerollered demo
+ * Add type="text" to input fields without type attribute to please qSA
+ * Update themerollered demo to use tooltip to show errors as overlay.
+ * Update themerollered demo to use latest jQuery UI (along with newer jQuery version). Move code around to speed up page load.
+ * Fixed min error message broken in Japanese.
+ * Update form plugin to latest version. Enhance the ajaxSubmit demo.
+ * Drop dateDE and numberDE methods from classRuleSettings, leftover from moving those to localized methods
+ * Passing submit event to submitHandler callback
+ * Fixed #219 - Fix valid() on elements with dependency-callback or dependency-expression.
+ * Improve build to remove dist dir to ensure only the current release gets zipped up
+
+1.9.0
+---
+* Added Basque (EU) localization
+* Added Slovenian (SL) localization
+* Fixed issue #127 - Finnish translations has one : instead of ;
+* Fixed Russian localization, minor syntax issue
+* Added in support for HTML5 input types, fixes #97
+* Improved HTML5 support by setting novalidate attribute on the form, and reading the type attribute.
+* Fixed showLabel() removing all classes from error element. Remove only settings.validClass. Fixes #151.
+* Added 'pattern' to additional-methods to validate against arbitrary regular expressions.
+* Improved email method to not allow the dot at the end (valid by RFC, but unwanted here). Fixes #143
+* Fixed swedish and norwegian translations, min/max messages got switched. Fixes #181
+* Fixed #184 - resetForm: should unset lastElement
+* Fixed #71 - improve existing time method and add time12h method for 12h am/pm time format
+* Fixed #177 - Fix validation of a single radio or checkbox input
+* Fixed #189 - :hidden elements are now ignored by default
+* Fixed #194 - Required as attribute fails if jQuery>=1.6 - Use .prop instead of .attr
+* Fixed #47, #39, #32 - Allowed credit card numbers to contain spaces as well as dashes (spaces are commonly input by users).
+
+1.8.1
+---
+* Added Thai (TH) localization, fixes #85
+* Added Vietnamese (VI) localization, thanks Ngoc
+* Fixed issue #78. Error/Valid styling applies to all radio buttons of same group for required validation.
+* Don't use form.elements as that isn't supported in jQuery 1.6 anymore. Its buggy as hell anyway (IE6-8: form.elements === form).
+
+1.8.0
+---
+* Improved NL localization (http://plugins.jquery.com/node/14120)
+* Added Georgian (GE) localization, thanks Avtandil Kikabidze
+* Added Serbian (SR) localization, thanks Aleksandar Milovac
+* Added ipv4 and ipv6 to additional methods, thanks Natal Ngétal
+* Added Japanese (JA) localization, thanks Bryan Meyerovich
+* Added Catalan (CA) localization, thanks Xavier de Pedro
+* Fixed missing var statements within for-in loops
+* Fix for remote validation, where a formatted message got messed up (https://github.com/jzaefferer/jquery-validation/issues/11)
+* Bugfixes for compatibility with jQuery 1.5.1, while maintaining backwards-compatibility
+
+1.7
+---
+* Added Lithuanian (LT) localization
+* Added Greek (EL) localization (http://plugins.jquery.com/node/12319)
+* Added Latvian (LV) localization (http://plugins.jquery.com/node/12349)
+* Added Hebrew (HE) localization (http://plugins.jquery.com/node/12039)
+* Fixed Spanish (ES) localization (http://plugins.jquery.com/node/12696)
+* Added jQuery UI themerolled demo
+* Removed cmxform.js
+* Fixed four missing semicolons (http://plugins.jquery.com/node/12639)
+* Renamed phone-method in additional-methods.js to phoneUS
+* Added phoneUK and mobileUK methods to additional-methods.js (http://plugins.jquery.com/node/12359)
+* Deep extend options to avoid modifying multiple forms when using the rules-method on a single element (http://plugins.jquery.com/node/12411)
+* Bugfixes for compatibility with jQuery 1.4.2, while maintaining backwards-compatibility
+
+1.6
+---
+* Added Arabic (AR), Portuguese (PTPT), Persian (FA), Finnish (FI) and Bulgarian (BR) localization
+* Updated Swedish (SE) localization (some missing html iso characters)
+* Fixed $.validator.addMethod to properly handle empty string vs. undefined for the message argument
+* Fixed two accidental global variables
+* Enhanced min/max/rangeWords (in additional-methods.js) to strip html before counting; good when counting words in a richtext editor
+* Added localized methods for DE, NL and PT, removing the dateDE and numberDE methods (use messages_de.js and methods_de.js with date and number methods instead)
+* Fixed remote form submit synchronization, kudos to Matas Petrikas
+* Improved interactive select validation, now validating also on click (via option or select, inconsistent across browsers); doesn't work in Safari, which doesn't trigger a click event at all on select elements; fixes http://plugins.jquery.com/node/11520
+* Updated to latest form plugin (2.36), fixing http://plugins.jquery.com/node/11487
+* Bind to blur event for equalTo target to revalidate when that target changes, fixes http://plugins.jquery.com/node/11450
+* Simplified select validation, delegating to jQuery's val() method to get the select value; should fix http://plugins.jquery.com/node/11239
+* Fixed default message for digits (http://plugins.jquery.com/node/9853)
+* Fixed issue with cached remote message (http://plugins.jquery.com/node/11029 and http://plugins.jquery.com/node/9351)
+* Fixed a missing semicolon in additional-methods.js (http://plugins.jquery.com/node/9233)
+* Added automatic detection of substitution parameters in messages, removing the need to provide format functions (http://plugins.jquery.com/node/11195)
+* Fixed an issue with :filled/:blank somewhat caused by Sizzle (http://plugins.jquery.com/node/11144)
+* Added an integer method to additional-methods.js (http://plugins.jquery.com/node/9612)
+* Fixed errorsFor method where the for-attribute contains characters that need escaping to be valid inside a selector (http://plugins.jquery.com/node/9611)
+
+1.5.5
+---
+* Fix for http://plugins.jquery.com/node/8659
+* Fixed trailing comma in messages_cs.js
+
+1.5.4
+---
+* Fixed remote method bug (http://plugins.jquery.com/node/8658)
+
+1.5.3
+---
+* Fixed a bug related to the wrapper-option, where all ancestor-elements that matched the wrapper-option where selected (http://plugins.jquery.com/node/7624)
+* Updated multipart demo to use latest jQuery UI accordion
+* Added dateNL and time methods to additionalMethods.js
+* Added Traditional Chinese (Taiwan, tw) and Kazakhstan (KK) localization
+* Moved jQuery.format (formerly String.format) to jQuery.validator.format, jQuery.format is deprecated and will be removed in 1.6 (see http://code.google.com/p/jquery-utils/issues/detail?id=15 for details)
+* Cleaned up messages_pl.js and messages_ptbr.js (still defined messages for max/min/rangeValue, which were removed in 1.4)
+* Fixed flawed boolean logic in valid-plugin-method for multiple elements; now all elements need to be valid for a boolean-true result (http://plugins.jquery.com/node/8481)
+* Enhancement $.validator.addMethod: An undefined third message-argument won't overwrite an existing message (http://plugins.jquery.com/node/8443)
+* Enhancement to submitHandler option: When used, click events on submit buttons are captured and the submitting button is inserted into the form before calling submitHandler, and removed afterwards; keeps submit buttons intact (http://plugins.jquery.com/node/7183#comment-3585)
+* Added option validClass, default "valid", which adds that class to all valid elements, after validation (http://dev.jquery.com/ticket/2205)
+* Added creditcardtypes method to additionalMethods.js, including tests (via http://dev.jquery.com/ticket/3635)
+* Improved remote method to allow serverside message as a string, or true for valid, or false for invalid using the clientside defined message (http://dev.jquery.com/ticket/3807)
+* Improved accept method to also accept a Drupal-style comma-separated list of values (http://plugins.jquery.com/node/8580)
+
+1.5.2
+---
+* Fixed messages in additional-methods.js for maxWords, minWords, and rangeWords to include call to $.format
+* Fixed value passed to methods to exclude carriage return (\r), same as jQuery's val() does
+* Added slovak (sk) localization
+* Added demo for integration with jQuery UI tabs
+* Added selects-grouping example to tabs demo (see second tab, birthdate field)
+
+1.5.1
+---
+* Updated marketo demo to use invalidHandler option instead of binding invalid-form event
+* Added TinyMCE integration example
+* Added ukrainian (ua) localization
+* Fixed length validation to work with trimmed value (regression from 1.5 where general trimming before validation was removed)
+* Various small fixes for compatibility with both 1.2.6 and 1.3
+
+1.5
+---
+* Improved basic demo, validating confirm-password field after password changed
+* Fixed basic validation to pass the untrimmed input value as the first parameter to validation methods, changed required accordingly; breaks existing custom method that rely on the trimming
+* Added norwegian (no), italian (it), hungarian (hu) and romanian (ro) localization
+* Fixed #3195: Two flaws in swedish localization
+* Fixed #3503: Extended rules("add") to accept messages property: use to specify add custom messages to an element via rules("add", { messages: { required: "Required! " } });
+* Fixed #3356: Regression from #2908 when using meta-option
+* Fixed #3370: Added ignoreTitle option, set to skip reading messages from the title attribute, helps to avoid issues with Google Toolbar; default is false for compatibility
+* Fixed #3516: Trigger invalid-form event even when remote validation is involved
+* Added invalidHandler option as a shortcut to bind("invalid-form", function() {})
+* Fixed Safari issue for loading indicator in ajaxSubmit-integration-demo (append to body first, then hide)
+* Added test for creditcard validation and improved default message
+* Enhanced remote validation, accepting options to passthrough to $.ajax as parameter (either url string or options, including url property plus everything else that $.ajax supports)
+
+1.4
+---
+* Fixed #2931, validate elements in document order and ignore type=image inputs
+* Fixed usage of $ and jQuery variables, now fully compatible with all variations of noConflict usage
+* Implemented #2908, enabling custom messages via metadata ala class="{required:true,messages:{required:'required field'}}", added demo/custom-messages-metadata-demo.html
+* Removed deprecated methods minValue (min), maxValue (max), rangeValue (rangevalue), minLength (minlength), maxLength (maxlength), rangeLength (rangelength)
+* Fixed #2215 regression: Call unhighlight only for current elements, not everything
+* Implemented #2989, enabling image button to cancel validation
+* Fixed issue where IE incorrectly validates against maxlength=0
+* Added czech (cs) localization
+* Reset validator.submitted on validator.resetForm(), enabling a full reset when necessary
+* Fixed #3035, skipping all falsy attributes when reading rules (0, undefined, empty string), removed part of the maxlength workaround (for 0)
+* Added dutch (nl) localization (#3201)
+
+1.3
+---
+* Fixed invalid-form event, now only triggered when form is invalid
+* Added spanish (es), russian (ru), portuguese brazilian (ptbr), turkish (tr), and polish (pl) localization
+* Added removeAttrs plugin to facilitate adding and removing multiple attributes
+* Added groups option to display a single message for multiple elements, via groups: { arbitraryGroupName: "fieldName1 fieldName2[, fieldNameN" }
+* Enhanced rules() for adding and removing (static) rules: rules("add", "method1[, methodN]"/{method1:param[, method_n:param]}) and rules("remove"[, "method1[, method_n]")
+* Enhanced rules-option, accepts space-separated string-list of methods, eg. {birthdate: "required date"}
+* Fixed checkbox group validation with inline rules: As long as the rules are specified on the first element, the group is now properly validated on click
+* Fixed #2473, ignoring all rules with an explicit parameter of boolean-false, eg. required:false is the same as not specifying required at all (it was handled as required:true so far)
+* Fixed #2424, with a modified patch from #2473: Methods returning a dependency-mismatch don't stop other rules from being evaluated anymore; still, success isn't applied for optional fields
+* Fixed url and email validation to not use trimmed values
+* Fixed creditcard validation to accept only digits and dashes ("asdf" is not a valid creditcard number)
+* Allow both button and input elements for cancel buttons (via class="cancel")
+* Fixed #2215: Fixed message display to call unhighlight as part of showing and hiding messages, no more visual side-effects while checking an element and extracted validator.checkForm to validate a form without UI sideeffects
+* Rewrote custom selectors (:blank, :filled, :unchecked) with functions for compatibility with AIR
+
+1.2.1
+-----
+
+* Bundled delegate plugin with validate plugin - its always required anyway
+* Improved remote validation to include parts from the ajaxQueue plugin for proper synchronization (no additional plugin necessary)
+* Fixed stopRequest to prevent pendingRequest < 0
+* Added jQuery.validator.autoCreateRanges property, defaults to false, enable to convert min/max to range and minlength/maxlength to rangelength; this basically fixes the issue introduced by automatically creating ranges in 1.2
+* Fixed optional-methods to not highlight anything at all if the field is blank, that is, don't trigger success
+* Allow false/null for highlight/unhighlight options instead of forcing a do-nothing-callback even when nothing needs to be highlighted
+* Fixed validate() call with no elements selected, returning undefined instead of throwing an error
+* Improved demo, replacing metadata with classes/attributes for specifying rules
+* Fixed error when no custom message is used for remote validation
+* Modified email and url validation to require domain label and top label
+* Fixed url and email validation to require TLD (actually to require domain label); 1.2 version (TLD is optional) is moved to additions as url2 and email2
+* Fixed dynamic-totals demo in IE6/7 and improved templating, using textarea to store multiline template and string interpolation
+* Added login form example with "Email password" link that makes the password field optional
+* Enhanced dynamic-totals demo with an example of a single message for two fields
+
+1.2
+---
+
+* Added AJAX-captcha validation example (based on http://psyrens.com/captcha/)
+* Added remember-the-milk-demo (thanks RTM team for the permission!)
+* Added marketo-demo (thanks Glen Lipka!)
+* Added support for ajax-validation, see method "remote"; serverside returns JSON, true for valid elements, false or a String for invalid, String is used as message
+* Added highlight and unhighlight options, by default toggles errorClass on element, allows custom highlighting
+* Added valid() plugin method for easy programmatic checking of forms and fields without the need to use the validator API
+* Added rules() plugin method to read and write rules for an element (currently read only)
+* Replaced regex for email method, thanks to the contribution by Scott Gonzalez, see http://projects.scottsplayground.com/email_address_validation/
+* Restructured event architecture to rely solely on delegation, both improving performance, and ease-of-use for the developer (requires jquery.delegate.js)
+* Moved documentation from inline to http://docs.jquery.com/Plugins/Validation - including interactive examples for all methods
+* Removed validator.refresh(), validation is now completely dynamic
+* Renamed minValue to min, maxValue to max and rangeValue to range, deprecating the previous names (to be removed in 1.3)
+* Renamed minLength to minlength, maxLength to maxlength and rangeLength to rangelength, deprecating the previous names (to be removed in 1.3)
+* Added feature to merge min + max into and range and minlength + maxlength into rangelength
+* Added support for dynamic rule parameters, allowing to specify a function as a parameter eg. for minlength, called when validating the element
+* Allow to specify null or an empty string as a message to display nothing (see marketo demo)
+* Rules overhaul: Now supports combination of rules-option, metadata, classes (new) and attributes (new), see rules() for details
+
+1.1.2
+---
+
+* Replaced regex for URL method, thanks to the contribution by Scott Gonzalez, see http://projects.scottsplayground.com/iri/
+* Improved email method to better handle unicode characters
+* Fixed error container to hide when all elements are valid, not only on form submit
+* Fixed String.format to jQuery.format (moving into jQuery namespace)
+* Fixed accept method to accept both upper and lowercase extensions
+* Fixed validate() plugin method to create only one validator instance for a given form and always return that one instance (avoids binding events multiple times)
+* Changed debug-mode console log from "error" to "warn" level
+
+1.1.1
+-----
+
+* Fixed invalid XHTML, preventing error label creation in IE since jQuery 1.1.4
+* Fixed and improved String.format: Global search & replace, better handling of array arguments
+* Fixed cancel-button handling to use validator-object for storing state instead of form element
+* Fixed name selectors to handle "complex" names, eg. containing brackets ("list[]")
+* Added button and disabled elements to exclude from validation
+* Moved element event handlers to refresh to be able to add handlers to new elements
+* Fixed email validation to allow long top level domains (eg. ".travel")
+* Moved showErrors() from valid() to form()
+* Added validator.size(): returns the number of current errors
+* Call submitHandler with validator as scope for easier access of it's methods, eg. to find error labels using errorsFor(Element)
+* Compatible with jQuery 1.1.x and 1.2.x
+
+1.1
+---
+
+* Added validation on blur, keyup and click (for checkboxes and radiobutton). Replaces event-option.
+* Fixed resetForm
+* Fixed custom-methods-demo
+
+1.0
+---
+
+* Improved number and numberDE methods to check for correct decimal numbers with delimiters
+* Only elements that have rules are checked (otherwise success-option is applied to all elements)
+* Added creditcard number method (thanks to Brian Klug)
+* Added ignore-option, eg. ignore: "[@type=hidden]", using that expression to exclude elements to validate. Default: none, though submit and reset buttons are always ignored
+* Heavily enhanced Functions-as-messages by providing a flexible String.format helper
+* Accept Functions as messages, providing runtime-custom-messages
+* Fixed exclusion of elements without rules from successList
+* Fixed custom-method-demo, replaced the alert with message displaying the number of errors
+* Fixed form-submit-prevention when using submitHandler
+* Completely removed dependency on element IDs, though they are still used (when present) to link error labels to inputs. Achieved by using
+ an array with {name, message, element} instead of an object with id:message pairs for the internal errorList.
+* Added support for specifying simple rules as simple strings, eg. "required" is equivalent to {required: true}
+* Added feature: Add errorClass to invalid field�s parent element, making it easy to style the label/field container or the label for the field.
+* Added feature: focusCleanup - If enabled, removes the errorClass from the invalid elements and hides all errors messages whenever the element is focused.
+* Added success option to show the a field was validated successfully
+* Fixed Opera select-issue (avoiding a attribute-collision)
+* Fixed problems with focussing hidden elements in IE
+* Added feature to skip validation for submit buttons with class "cancel"
+* Fixed potential issues with Google Toolbar by preferring plugin option messages over title attribute
+* submitHandler is only called when an actual submit event was handled, validator.form() returns false only for invalid forms
+* Invalid elements are now focused only on submit or via validator.focusInvalid(), avoiding all trouble with focus-on-blur
+* IE6 error container layout issue is solved
+* Customize error element via errorElement option
+* Added validator.refresh() to find new inputs in the form
+* Added accept validation method, checks file extensions
+* Improved dependency feature by adding two custom expressions: ":blank" to select elements with an empty value and �:filled� to select elements with a value, both excluding whitespace
+* Added a resetForm() method to the validator: Resets each form element (using the form plugin, if available), removes classes on invalid elements and hides all error messages
+* Fixed docs for validator.showErrors()
+* Fixed error label creation to always use html() instead of text(), allowing arbitrary HTML passed in as messages
+* Fixed error label creation to use specified error class
+* Added dependency feature: The requires method accepts both String (jQuery expressions) and Functions as the argument
+* Heavily improved customizing of error message display: Use normal messages and show/hide an additional container; Completely replace message display with own mechanism (while being able to delegate to the default handler; Customize placing of generated labels (instead of default below-element)
+* Fixed two major bugs in IE (error containers) and Opera (metadata)
+* Modified validation methods to accept empty fields as valid (exception: of course �required� and also �equalTo� methods)
+* Renamed "min" to "minLength", "max" to "maxLength", "length" to "rangeLength"
+* Added "minValue", "maxValue" and "rangeValue"
+* Streamlined API for support of different events. The default, submit, can be disabled. If any event is specified, that is applied to each element (instead of the entire form). Combining keyup-validation with submit-validation is now extremely easy to setup
+* Added support for one-message-per-rule when defining messages via plugin settings
+* Added support to wrap metadata in some parent element. Useful when metadata is used for other plugins, too.
+* Refactored tests and demos: Less files, better demos
+* Improved documentation: More examples for methods, more reference texts explaining some basics
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/dist/additional-methods.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/dist/additional-methods.js
new file mode 100644
index 0000000..55efc3d
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/dist/additional-methods.js
@@ -0,0 +1,1056 @@
+/*!
+ * jQuery Validation Plugin v1.15.0
+ *
+ * http://jqueryvalidation.org/
+ *
+ * Copyright (c) 2016 Jörn Zaefferer
+ * Released under the MIT license
+ */
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "./jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+( function() {
+
+ function stripHtml( value ) {
+
+ // Remove html tags and space chars
+ return value.replace( /<.[^<>]*?>/g, " " ).replace( / | /gi, " " )
+
+ // Remove punctuation
+ .replace( /[.(),;:!?%#$'\"_+=\/\-“”’]*/g, "" );
+ }
+
+ $.validator.addMethod( "maxWords", function( value, element, params ) {
+ return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length <= params;
+ }, $.validator.format( "Please enter {0} words or less." ) );
+
+ $.validator.addMethod( "minWords", function( value, element, params ) {
+ return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length >= params;
+ }, $.validator.format( "Please enter at least {0} words." ) );
+
+ $.validator.addMethod( "rangeWords", function( value, element, params ) {
+ var valueStripped = stripHtml( value ),
+ regex = /\b\w+\b/g;
+ return this.optional( element ) || valueStripped.match( regex ).length >= params[ 0 ] && valueStripped.match( regex ).length <= params[ 1 ];
+ }, $.validator.format( "Please enter between {0} and {1} words." ) );
+
+}() );
+
+// Accept a value from a file input based on a required mimetype
+$.validator.addMethod( "accept", function( value, element, param ) {
+
+ // Split mime on commas in case we have multiple types we can accept
+ var typeParam = typeof param === "string" ? param.replace( /\s/g, "" ) : "image/*",
+ optionalValue = this.optional( element ),
+ i, file, regex;
+
+ // Element is optional
+ if ( optionalValue ) {
+ return optionalValue;
+ }
+
+ if ( $( element ).attr( "type" ) === "file" ) {
+
+ // Escape string to be used in the regex
+ // see: http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
+ // Escape also "/*" as "/.*" as a wildcard
+ typeParam = typeParam.replace( /[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&" ).replace( /,/g, "|" ).replace( "\/*", "/.*" );
+
+ // Check if the element has a FileList before checking each file
+ if ( element.files && element.files.length ) {
+ regex = new RegExp( ".?(" + typeParam + ")$", "i" );
+ for ( i = 0; i < element.files.length; i++ ) {
+ file = element.files[ i ];
+
+ // Grab the mimetype from the loaded file, verify it matches
+ if ( !file.type.match( regex ) ) {
+ return false;
+ }
+ }
+ }
+ }
+
+ // Either return true because we've validated each file, or because the
+ // browser does not support element.files and the FileList feature
+ return true;
+}, $.validator.format( "Please enter a value with a valid mimetype." ) );
+
+$.validator.addMethod( "alphanumeric", function( value, element ) {
+ return this.optional( element ) || /^\w+$/i.test( value );
+}, "Letters, numbers, and underscores only please" );
+
+/*
+ * Dutch bank account numbers (not 'giro' numbers) have 9 digits
+ * and pass the '11 check'.
+ * We accept the notation with spaces, as that is common.
+ * acceptable: 123456789 or 12 34 56 789
+ */
+$.validator.addMethod( "bankaccountNL", function( value, element ) {
+ if ( this.optional( element ) ) {
+ return true;
+ }
+ if ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {
+ return false;
+ }
+
+ // Now '11 check'
+ var account = value.replace( / /g, "" ), // Remove spaces
+ sum = 0,
+ len = account.length,
+ pos, factor, digit;
+ for ( pos = 0; pos < len; pos++ ) {
+ factor = len - pos;
+ digit = account.substring( pos, pos + 1 );
+ sum = sum + factor * digit;
+ }
+ return sum % 11 === 0;
+}, "Please specify a valid bank account number" );
+
+$.validator.addMethod( "bankorgiroaccountNL", function( value, element ) {
+ return this.optional( element ) ||
+ ( $.validator.methods.bankaccountNL.call( this, value, element ) ) ||
+ ( $.validator.methods.giroaccountNL.call( this, value, element ) );
+}, "Please specify a valid bank or giro account number" );
+
+/**
+ * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity.
+ *
+ * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)
+ *
+ * Validation is case-insensitive. Please make sure to normalize input yourself.
+ *
+ * BIC definition in detail:
+ * - First 4 characters - bank code (only letters)
+ * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)
+ * - Next 2 characters - location code (letters and digits)
+ * a. shall not start with '0' or '1'
+ * b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)
+ * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)
+ */
+$.validator.addMethod( "bic", function( value, element ) {
+ return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );
+}, "Please specify a valid BIC code" );
+
+/*
+ * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities
+ * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal
+ */
+$.validator.addMethod( "cifES", function( value ) {
+ "use strict";
+
+ var num = [],
+ controlDigit, sum, i, count, tmp, secondDigit;
+
+ value = value.toUpperCase();
+
+ // Quick format test
+ if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
+ return false;
+ }
+
+ for ( i = 0; i < 9; i++ ) {
+ num[ i ] = parseInt( value.charAt( i ), 10 );
+ }
+
+ // Algorithm for checking CIF codes
+ sum = num[ 2 ] + num[ 4 ] + num[ 6 ];
+ for ( count = 1; count < 8; count += 2 ) {
+ tmp = ( 2 * num[ count ] ).toString();
+ secondDigit = tmp.charAt( 1 );
+
+ sum += parseInt( tmp.charAt( 0 ), 10 ) + ( secondDigit === "" ? 0 : parseInt( secondDigit, 10 ) );
+ }
+
+ /* The first (position 1) is a letter following the following criteria:
+ * A. Corporations
+ * B. LLCs
+ * C. General partnerships
+ * D. Companies limited partnerships
+ * E. Communities of goods
+ * F. Cooperative Societies
+ * G. Associations
+ * H. Communities of homeowners in horizontal property regime
+ * J. Civil Societies
+ * K. Old format
+ * L. Old format
+ * M. Old format
+ * N. Nonresident entities
+ * P. Local authorities
+ * Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions
+ * R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008)
+ * S. Organs of State Administration and regions
+ * V. Agrarian Transformation
+ * W. Permanent establishments of non-resident in Spain
+ */
+ if ( /^[ABCDEFGHJNPQRSUVW]{1}/.test( value ) ) {
+ sum += "";
+ controlDigit = 10 - parseInt( sum.charAt( sum.length - 1 ), 10 );
+ value += controlDigit;
+ return ( num[ 8 ].toString() === String.fromCharCode( 64 + controlDigit ) || num[ 8 ].toString() === value.charAt( value.length - 1 ) );
+ }
+
+ return false;
+
+}, "Please specify a valid CIF number." );
+
+/*
+ * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number.
+ * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.
+ */
+$.validator.addMethod( "cpfBR", function( value ) {
+
+ // Removing special characters from value
+ value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );
+
+ // Checking value to have 11 digits only
+ if ( value.length !== 11 ) {
+ return false;
+ }
+
+ var sum = 0,
+ firstCN, secondCN, checkResult, i;
+
+ firstCN = parseInt( value.substring( 9, 10 ), 10 );
+ secondCN = parseInt( value.substring( 10, 11 ), 10 );
+
+ checkResult = function( sum, cn ) {
+ var result = ( sum * 10 ) % 11;
+ if ( ( result === 10 ) || ( result === 11 ) ) {
+ result = 0;
+ }
+ return ( result === cn );
+ };
+
+ // Checking for dump data
+ if ( value === "" ||
+ value === "00000000000" ||
+ value === "11111111111" ||
+ value === "22222222222" ||
+ value === "33333333333" ||
+ value === "44444444444" ||
+ value === "55555555555" ||
+ value === "66666666666" ||
+ value === "77777777777" ||
+ value === "88888888888" ||
+ value === "99999999999"
+ ) {
+ return false;
+ }
+
+ // Step 1 - using first Check Number:
+ for ( i = 1; i <= 9; i++ ) {
+ sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 11 - i );
+ }
+
+ // If first Check Number (CN) is valid, move to Step 2 - using second Check Number:
+ if ( checkResult( sum, firstCN ) ) {
+ sum = 0;
+ for ( i = 1; i <= 10; i++ ) {
+ sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 12 - i );
+ }
+ return checkResult( sum, secondCN );
+ }
+ return false;
+
+}, "Please specify a valid CPF number" );
+
+// http://jqueryvalidation.org/creditcard-method/
+// based on http://en.wikipedia.org/wiki/Luhn_algorithm
+$.validator.addMethod( "creditcard", function( value, element ) {
+ if ( this.optional( element ) ) {
+ return "dependency-mismatch";
+ }
+
+ // Accept only spaces, digits and dashes
+ if ( /[^0-9 \-]+/.test( value ) ) {
+ return false;
+ }
+
+ var nCheck = 0,
+ nDigit = 0,
+ bEven = false,
+ n, cDigit;
+
+ value = value.replace( /\D/g, "" );
+
+ // Basing min and max length on
+ // http://developer.ean.com/general_info/Valid_Credit_Card_Types
+ if ( value.length < 13 || value.length > 19 ) {
+ return false;
+ }
+
+ for ( n = value.length - 1; n >= 0; n-- ) {
+ cDigit = value.charAt( n );
+ nDigit = parseInt( cDigit, 10 );
+ if ( bEven ) {
+ if ( ( nDigit *= 2 ) > 9 ) {
+ nDigit -= 9;
+ }
+ }
+
+ nCheck += nDigit;
+ bEven = !bEven;
+ }
+
+ return ( nCheck % 10 ) === 0;
+}, "Please enter a valid credit card number." );
+
+/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
+ * Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
+ * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
+ */
+$.validator.addMethod( "creditcardtypes", function( value, element, param ) {
+ if ( /[^0-9\-]+/.test( value ) ) {
+ return false;
+ }
+
+ value = value.replace( /\D/g, "" );
+
+ var validTypes = 0x0000;
+
+ if ( param.mastercard ) {
+ validTypes |= 0x0001;
+ }
+ if ( param.visa ) {
+ validTypes |= 0x0002;
+ }
+ if ( param.amex ) {
+ validTypes |= 0x0004;
+ }
+ if ( param.dinersclub ) {
+ validTypes |= 0x0008;
+ }
+ if ( param.enroute ) {
+ validTypes |= 0x0010;
+ }
+ if ( param.discover ) {
+ validTypes |= 0x0020;
+ }
+ if ( param.jcb ) {
+ validTypes |= 0x0040;
+ }
+ if ( param.unknown ) {
+ validTypes |= 0x0080;
+ }
+ if ( param.all ) {
+ validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
+ }
+ if ( validTypes & 0x0001 && /^(5[12345])/.test( value ) ) { // Mastercard
+ return value.length === 16;
+ }
+ if ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa
+ return value.length === 16;
+ }
+ if ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex
+ return value.length === 15;
+ }
+ if ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub
+ return value.length === 14;
+ }
+ if ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute
+ return value.length === 15;
+ }
+ if ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover
+ return value.length === 16;
+ }
+ if ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb
+ return value.length === 16;
+ }
+ if ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb
+ return value.length === 15;
+ }
+ if ( validTypes & 0x0080 ) { // Unknown
+ return true;
+ }
+ return false;
+}, "Please enter a valid credit card number." );
+
+/**
+ * Validates currencies with any given symbols by @jameslouiz
+ * Symbols can be optional or required. Symbols required by default
+ *
+ * Usage examples:
+ * currency: ["£", false] - Use false for soft currency validation
+ * currency: ["$", false]
+ * currency: ["RM", false] - also works with text based symbols such as "RM" - Malaysia Ringgit etc
+ *
+ *
+ *
+ * Soft symbol checking
+ * currencyInput: {
+ * currency: ["$", false]
+ * }
+ *
+ * Strict symbol checking (default)
+ * currencyInput: {
+ * currency: "$"
+ * //OR
+ * currency: ["$", true]
+ * }
+ *
+ * Multiple Symbols
+ * currencyInput: {
+ * currency: "$,£,¢"
+ * }
+ */
+$.validator.addMethod( "currency", function( value, element, param ) {
+ var isParamString = typeof param === "string",
+ symbol = isParamString ? param : param[ 0 ],
+ soft = isParamString ? true : param[ 1 ],
+ regex;
+
+ symbol = symbol.replace( /,/g, "" );
+ symbol = soft ? symbol + "]" : symbol + "]?";
+ regex = "^[" + symbol + "([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$";
+ regex = new RegExp( regex );
+ return this.optional( element ) || regex.test( value );
+
+}, "Please specify a valid currency" );
+
+$.validator.addMethod( "dateFA", function( value, element ) {
+ return this.optional( element ) || /^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value );
+}, $.validator.messages.date );
+
+/**
+ * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
+ *
+ * @example $.validator.methods.date("01/01/1900")
+ * @result true
+ *
+ * @example $.validator.methods.date("01/13/1990")
+ * @result false
+ *
+ * @example $.validator.methods.date("01.01.1900")
+ * @result false
+ *
+ * @example
+ * @desc Declares an optional input element whose value must be a valid date.
+ *
+ * @name $.validator.methods.dateITA
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+$.validator.addMethod( "dateITA", function( value, element ) {
+ var check = false,
+ re = /^\d{1,2}\/\d{1,2}\/\d{4}$/,
+ adata, gg, mm, aaaa, xdata;
+ if ( re.test( value ) ) {
+ adata = value.split( "/" );
+ gg = parseInt( adata[ 0 ], 10 );
+ mm = parseInt( adata[ 1 ], 10 );
+ aaaa = parseInt( adata[ 2 ], 10 );
+ xdata = new Date( Date.UTC( aaaa, mm - 1, gg, 12, 0, 0, 0 ) );
+ if ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth() === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) {
+ check = true;
+ } else {
+ check = false;
+ }
+ } else {
+ check = false;
+ }
+ return this.optional( element ) || check;
+}, $.validator.messages.date );
+
+$.validator.addMethod( "dateNL", function( value, element ) {
+ return this.optional( element ) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test( value );
+}, $.validator.messages.date );
+
+// Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept
+$.validator.addMethod( "extension", function( value, element, param ) {
+ param = typeof param === "string" ? param.replace( /,/g, "|" ) : "png|jpe?g|gif";
+ return this.optional( element ) || value.match( new RegExp( "\\.(" + param + ")$", "i" ) );
+}, $.validator.format( "Please enter a value with a valid extension." ) );
+
+/**
+ * Dutch giro account numbers (not bank numbers) have max 7 digits
+ */
+$.validator.addMethod( "giroaccountNL", function( value, element ) {
+ return this.optional( element ) || /^[0-9]{1,7}$/.test( value );
+}, "Please specify a valid giro account number" );
+
+/**
+ * IBAN is the international bank account number.
+ * It has a country - specific format, that is checked here too
+ *
+ * Validation is case-insensitive. Please make sure to normalize input yourself.
+ */
+$.validator.addMethod( "iban", function( value, element ) {
+
+ // Some quick simple tests to prevent needless work
+ if ( this.optional( element ) ) {
+ return true;
+ }
+
+ // Remove spaces and to upper case
+ var iban = value.replace( / /g, "" ).toUpperCase(),
+ ibancheckdigits = "",
+ leadingZeroes = true,
+ cRest = "",
+ cOperator = "",
+ countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;
+
+ // Check the country code and find the country specific format
+ countrycode = iban.substring( 0, 2 );
+ bbancountrypatterns = {
+ "AL": "\\d{8}[\\dA-Z]{16}",
+ "AD": "\\d{8}[\\dA-Z]{12}",
+ "AT": "\\d{16}",
+ "AZ": "[\\dA-Z]{4}\\d{20}",
+ "BE": "\\d{12}",
+ "BH": "[A-Z]{4}[\\dA-Z]{14}",
+ "BA": "\\d{16}",
+ "BR": "\\d{23}[A-Z][\\dA-Z]",
+ "BG": "[A-Z]{4}\\d{6}[\\dA-Z]{8}",
+ "CR": "\\d{17}",
+ "HR": "\\d{17}",
+ "CY": "\\d{8}[\\dA-Z]{16}",
+ "CZ": "\\d{20}",
+ "DK": "\\d{14}",
+ "DO": "[A-Z]{4}\\d{20}",
+ "EE": "\\d{16}",
+ "FO": "\\d{14}",
+ "FI": "\\d{14}",
+ "FR": "\\d{10}[\\dA-Z]{11}\\d{2}",
+ "GE": "[\\dA-Z]{2}\\d{16}",
+ "DE": "\\d{18}",
+ "GI": "[A-Z]{4}[\\dA-Z]{15}",
+ "GR": "\\d{7}[\\dA-Z]{16}",
+ "GL": "\\d{14}",
+ "GT": "[\\dA-Z]{4}[\\dA-Z]{20}",
+ "HU": "\\d{24}",
+ "IS": "\\d{22}",
+ "IE": "[\\dA-Z]{4}\\d{14}",
+ "IL": "\\d{19}",
+ "IT": "[A-Z]\\d{10}[\\dA-Z]{12}",
+ "KZ": "\\d{3}[\\dA-Z]{13}",
+ "KW": "[A-Z]{4}[\\dA-Z]{22}",
+ "LV": "[A-Z]{4}[\\dA-Z]{13}",
+ "LB": "\\d{4}[\\dA-Z]{20}",
+ "LI": "\\d{5}[\\dA-Z]{12}",
+ "LT": "\\d{16}",
+ "LU": "\\d{3}[\\dA-Z]{13}",
+ "MK": "\\d{3}[\\dA-Z]{10}\\d{2}",
+ "MT": "[A-Z]{4}\\d{5}[\\dA-Z]{18}",
+ "MR": "\\d{23}",
+ "MU": "[A-Z]{4}\\d{19}[A-Z]{3}",
+ "MC": "\\d{10}[\\dA-Z]{11}\\d{2}",
+ "MD": "[\\dA-Z]{2}\\d{18}",
+ "ME": "\\d{18}",
+ "NL": "[A-Z]{4}\\d{10}",
+ "NO": "\\d{11}",
+ "PK": "[\\dA-Z]{4}\\d{16}",
+ "PS": "[\\dA-Z]{4}\\d{21}",
+ "PL": "\\d{24}",
+ "PT": "\\d{21}",
+ "RO": "[A-Z]{4}[\\dA-Z]{16}",
+ "SM": "[A-Z]\\d{10}[\\dA-Z]{12}",
+ "SA": "\\d{2}[\\dA-Z]{18}",
+ "RS": "\\d{18}",
+ "SK": "\\d{20}",
+ "SI": "\\d{15}",
+ "ES": "\\d{20}",
+ "SE": "\\d{20}",
+ "CH": "\\d{5}[\\dA-Z]{12}",
+ "TN": "\\d{20}",
+ "TR": "\\d{5}[\\dA-Z]{17}",
+ "AE": "\\d{3}\\d{16}",
+ "GB": "[A-Z]{4}\\d{14}",
+ "VG": "[\\dA-Z]{4}\\d{16}"
+ };
+
+ bbanpattern = bbancountrypatterns[ countrycode ];
+
+ // As new countries will start using IBAN in the
+ // future, we only check if the countrycode is known.
+ // This prevents false negatives, while almost all
+ // false positives introduced by this, will be caught
+ // by the checksum validation below anyway.
+ // Strict checking should return FALSE for unknown
+ // countries.
+ if ( typeof bbanpattern !== "undefined" ) {
+ ibanregexp = new RegExp( "^[A-Z]{2}\\d{2}" + bbanpattern + "$", "" );
+ if ( !( ibanregexp.test( iban ) ) ) {
+ return false; // Invalid country specific format
+ }
+ }
+
+ // Now check the checksum, first convert to digits
+ ibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 );
+ for ( i = 0; i < ibancheck.length; i++ ) {
+ charAt = ibancheck.charAt( i );
+ if ( charAt !== "0" ) {
+ leadingZeroes = false;
+ }
+ if ( !leadingZeroes ) {
+ ibancheckdigits += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf( charAt );
+ }
+ }
+
+ // Calculate the result of: ibancheckdigits % 97
+ for ( p = 0; p < ibancheckdigits.length; p++ ) {
+ cChar = ibancheckdigits.charAt( p );
+ cOperator = "" + cRest + "" + cChar;
+ cRest = cOperator % 97;
+ }
+ return cRest === 1;
+}, "Please specify a valid IBAN" );
+
+$.validator.addMethod( "integer", function( value, element ) {
+ return this.optional( element ) || /^-?\d+$/.test( value );
+}, "A positive or negative non-decimal number please" );
+
+$.validator.addMethod( "ipv4", function( value, element ) {
+ return this.optional( element ) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test( value );
+}, "Please enter a valid IP v4 address." );
+
+$.validator.addMethod( "ipv6", function( value, element ) {
+ return this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value );
+}, "Please enter a valid IP v6 address." );
+
+$.validator.addMethod( "lettersonly", function( value, element ) {
+ return this.optional( element ) || /^[a-z]+$/i.test( value );
+}, "Letters only please" );
+
+$.validator.addMethod( "letterswithbasicpunc", function( value, element ) {
+ return this.optional( element ) || /^[a-z\-.,()'"\s]+$/i.test( value );
+}, "Letters or punctuation only please" );
+
+$.validator.addMethod( "mobileNL", function( value, element ) {
+ return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
+}, "Please specify a valid mobile number" );
+
+/* For UK phone functions, do the following server side processing:
+ * Compare original input with this RegEx pattern:
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
+ * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0'
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
+ */
+$.validator.addMethod( "mobileUK", function( phone_number, element ) {
+ phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
+ return this.optional( element ) || phone_number.length > 9 &&
+ phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/ );
+}, "Please specify a valid mobile number" );
+
+/*
+ * The número de identidad de extranjero ( NIE )is a code used to identify the non-nationals in Spain
+ */
+$.validator.addMethod( "nieES", function( value ) {
+ "use strict";
+
+ value = value.toUpperCase();
+
+ // Basic format test
+ if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
+ return false;
+ }
+
+ // Test NIE
+ //T
+ if ( /^[T]{1}/.test( value ) ) {
+ return ( value[ 8 ] === /^[T]{1}[A-Z0-9]{8}$/.test( value ) );
+ }
+
+ //XYZ
+ if ( /^[XYZ]{1}/.test( value ) ) {
+ return (
+ value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt(
+ value.replace( "X", "0" )
+ .replace( "Y", "1" )
+ .replace( "Z", "2" )
+ .substring( 0, 8 ) % 23
+ )
+ );
+ }
+
+ return false;
+
+}, "Please specify a valid NIE number." );
+
+/*
+ * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals
+ */
+$.validator.addMethod( "nifES", function( value ) {
+ "use strict";
+
+ value = value.toUpperCase();
+
+ // Basic format test
+ if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
+ return false;
+ }
+
+ // Test NIF
+ if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {
+ return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );
+ }
+
+ // Test specials NIF (starts with K, L or M)
+ if ( /^[KLM]{1}/.test( value ) ) {
+ return ( value[ 8 ] === String.fromCharCode( 64 ) );
+ }
+
+ return false;
+
+}, "Please specify a valid NIF number." );
+
+jQuery.validator.addMethod( "notEqualTo", function( value, element, param ) {
+ return this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );
+}, "Please enter a different value, values must not be the same." );
+
+$.validator.addMethod( "nowhitespace", function( value, element ) {
+ return this.optional( element ) || /^\S+$/i.test( value );
+}, "No white space please" );
+
+/**
+* Return true if the field value matches the given format RegExp
+*
+* @example $.validator.methods.pattern("AR1004",element,/^AR\d{4}$/)
+* @result true
+*
+* @example $.validator.methods.pattern("BR1004",element,/^AR\d{4}$/)
+* @result false
+*
+* @name $.validator.methods.pattern
+* @type Boolean
+* @cat Plugins/Validate/Methods
+*/
+$.validator.addMethod( "pattern", function( value, element, param ) {
+ if ( this.optional( element ) ) {
+ return true;
+ }
+ if ( typeof param === "string" ) {
+ param = new RegExp( "^(?:" + param + ")$" );
+ }
+ return param.test( value );
+}, "Invalid format." );
+
+/**
+ * Dutch phone numbers have 10 digits (or 11 and start with +31).
+ */
+$.validator.addMethod( "phoneNL", function( value, element ) {
+ return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
+}, "Please specify a valid phone number." );
+
+/* For UK phone functions, do the following server side processing:
+ * Compare original input with this RegEx pattern:
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
+ * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0'
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
+ */
+$.validator.addMethod( "phoneUK", function( phone_number, element ) {
+ phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
+ return this.optional( element ) || phone_number.length > 9 &&
+ phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/ );
+}, "Please specify a valid phone number" );
+
+/**
+ * Matches US phone number format
+ *
+ * where the area code may not start with 1 and the prefix may not start with 1
+ * allows '-' or ' ' as a separator and allows parens around area code
+ * some people may want to put a '1' in front of their number
+ *
+ * 1(212)-999-2345 or
+ * 212 999 2344 or
+ * 212-999-0983
+ *
+ * but not
+ * 111-123-5434
+ * and not
+ * 212 123 4567
+ */
+$.validator.addMethod( "phoneUS", function( phone_number, element ) {
+ phone_number = phone_number.replace( /\s+/g, "" );
+ return this.optional( element ) || phone_number.length > 9 &&
+ phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/ );
+}, "Please specify a valid phone number" );
+
+/* For UK phone functions, do the following server side processing:
+ * Compare original input with this RegEx pattern:
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
+ * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0'
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
+ */
+
+// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
+$.validator.addMethod( "phonesUK", function( phone_number, element ) {
+ phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
+ return this.optional( element ) || phone_number.length > 9 &&
+ phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/ );
+}, "Please specify a valid uk phone number" );
+
+/**
+ * Matches a valid Canadian Postal Code
+ *
+ * @example jQuery.validator.methods.postalCodeCA( "H0H 0H0", element )
+ * @result true
+ *
+ * @example jQuery.validator.methods.postalCodeCA( "H0H0H0", element )
+ * @result false
+ *
+ * @name jQuery.validator.methods.postalCodeCA
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+$.validator.addMethod( "postalCodeCA", function( value, element ) {
+ return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test( value );
+}, "Please specify a valid postal code" );
+
+/*
+* Valida CEPs do brasileiros:
+*
+* Formatos aceitos:
+* 99999-999
+* 99.999-999
+* 99999999
+*/
+$.validator.addMethod( "postalcodeBR", function( cep_value, element ) {
+ return this.optional( element ) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value );
+}, "Informe um CEP válido." );
+
+/* Matches Italian postcode (CAP) */
+$.validator.addMethod( "postalcodeIT", function( value, element ) {
+ return this.optional( element ) || /^\d{5}$/.test( value );
+}, "Please specify a valid postal code" );
+
+$.validator.addMethod( "postalcodeNL", function( value, element ) {
+ return this.optional( element ) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test( value );
+}, "Please specify a valid postal code" );
+
+// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK)
+$.validator.addMethod( "postcodeUK", function( value, element ) {
+ return this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test( value );
+}, "Please specify a valid UK postcode" );
+
+/*
+ * Lets you say "at least X inputs that match selector Y must be filled."
+ *
+ * The end result is that neither of these inputs:
+ *
+ *
+ *
+ *
+ * ...will validate unless at least one of them is filled.
+ *
+ * partnumber: {require_from_group: [1,".productinfo"]},
+ * description: {require_from_group: [1,".productinfo"]}
+ *
+ * options[0]: number of fields that must be filled in the group
+ * options[1]: CSS selector that defines the group of conditionally required fields
+ */
+$.validator.addMethod( "require_from_group", function( value, element, options ) {
+ var $fields = $( options[ 1 ], element.form ),
+ $fieldsFirst = $fields.eq( 0 ),
+ validator = $fieldsFirst.data( "valid_req_grp" ) ? $fieldsFirst.data( "valid_req_grp" ) : $.extend( {}, this ),
+ isValid = $fields.filter( function() {
+ return validator.elementValue( this );
+ } ).length >= options[ 0 ];
+
+ // Store the cloned validator for future validation
+ $fieldsFirst.data( "valid_req_grp", validator );
+
+ // If element isn't being validated, run each require_from_group field's validation rules
+ if ( !$( element ).data( "being_validated" ) ) {
+ $fields.data( "being_validated", true );
+ $fields.each( function() {
+ validator.element( this );
+ } );
+ $fields.data( "being_validated", false );
+ }
+ return isValid;
+}, $.validator.format( "Please fill at least {0} of these fields." ) );
+
+/*
+ * Lets you say "either at least X inputs that match selector Y must be filled,
+ * OR they must all be skipped (left blank)."
+ *
+ * The end result, is that none of these inputs:
+ *
+ *
+ *
+ *
+ *
+ * ...will validate unless either at least two of them are filled,
+ * OR none of them are.
+ *
+ * partnumber: {skip_or_fill_minimum: [2,".productinfo"]},
+ * description: {skip_or_fill_minimum: [2,".productinfo"]},
+ * color: {skip_or_fill_minimum: [2,".productinfo"]}
+ *
+ * options[0]: number of fields that must be filled in the group
+ * options[1]: CSS selector that defines the group of conditionally required fields
+ *
+ */
+$.validator.addMethod( "skip_or_fill_minimum", function( value, element, options ) {
+ var $fields = $( options[ 1 ], element.form ),
+ $fieldsFirst = $fields.eq( 0 ),
+ validator = $fieldsFirst.data( "valid_skip" ) ? $fieldsFirst.data( "valid_skip" ) : $.extend( {}, this ),
+ numberFilled = $fields.filter( function() {
+ return validator.elementValue( this );
+ } ).length,
+ isValid = numberFilled === 0 || numberFilled >= options[ 0 ];
+
+ // Store the cloned validator for future validation
+ $fieldsFirst.data( "valid_skip", validator );
+
+ // If element isn't being validated, run each skip_or_fill_minimum field's validation rules
+ if ( !$( element ).data( "being_validated" ) ) {
+ $fields.data( "being_validated", true );
+ $fields.each( function() {
+ validator.element( this );
+ } );
+ $fields.data( "being_validated", false );
+ }
+ return isValid;
+}, $.validator.format( "Please either skip these fields or fill at least {0} of them." ) );
+
+/* Validates US States and/or Territories by @jdforsythe
+ * Can be case insensitive or require capitalization - default is case insensitive
+ * Can include US Territories or not - default does not
+ * Can include US Military postal abbreviations (AA, AE, AP) - default does not
+ *
+ * Note: "States" always includes DC (District of Colombia)
+ *
+ * Usage examples:
+ *
+ * This is the default - case insensitive, no territories, no military zones
+ * stateInput: {
+ * caseSensitive: false,
+ * includeTerritories: false,
+ * includeMilitary: false
+ * }
+ *
+ * Only allow capital letters, no territories, no military zones
+ * stateInput: {
+ * caseSensitive: false
+ * }
+ *
+ * Case insensitive, include territories but not military zones
+ * stateInput: {
+ * includeTerritories: true
+ * }
+ *
+ * Only allow capital letters, include territories and military zones
+ * stateInput: {
+ * caseSensitive: true,
+ * includeTerritories: true,
+ * includeMilitary: true
+ * }
+ *
+ */
+$.validator.addMethod( "stateUS", function( value, element, options ) {
+ var isDefault = typeof options === "undefined",
+ caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive,
+ includeTerritories = ( isDefault || typeof options.includeTerritories === "undefined" ) ? false : options.includeTerritories,
+ includeMilitary = ( isDefault || typeof options.includeMilitary === "undefined" ) ? false : options.includeMilitary,
+ regex;
+
+ if ( !includeTerritories && !includeMilitary ) {
+ regex = "^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
+ } else if ( includeTerritories && includeMilitary ) {
+ regex = "^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
+ } else if ( includeTerritories ) {
+ regex = "^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
+ } else {
+ regex = "^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
+ }
+
+ regex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, "i" );
+ return this.optional( element ) || regex.test( value );
+}, "Please specify a valid state" );
+
+// TODO check if value starts with <, otherwise don't try stripping anything
+$.validator.addMethod( "strippedminlength", function( value, element, param ) {
+ return $( value ).text().length >= param;
+}, $.validator.format( "Please enter at least {0} characters" ) );
+
+$.validator.addMethod( "time", function( value, element ) {
+ return this.optional( element ) || /^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test( value );
+}, "Please enter a valid time, between 00:00 and 23:59" );
+
+$.validator.addMethod( "time12h", function( value, element ) {
+ return this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test( value );
+}, "Please enter a valid time in 12-hour am/pm format" );
+
+// Same as url, but TLD is optional
+$.validator.addMethod( "url2", function( value, element ) {
+ return this.optional( element ) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value );
+}, $.validator.messages.url );
+
+/**
+ * Return true, if the value is a valid vehicle identification number (VIN).
+ *
+ * Works with all kind of text inputs.
+ *
+ * @example
+ * @desc Declares a required input element whose value must be a valid vehicle identification number.
+ *
+ * @name $.validator.methods.vinUS
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+$.validator.addMethod( "vinUS", function( v ) {
+ if ( v.length !== 17 ) {
+ return false;
+ }
+
+ var LL = [ "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ],
+ VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ],
+ FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ],
+ rs = 0,
+ i, n, d, f, cd, cdv;
+
+ for ( i = 0; i < 17; i++ ) {
+ f = FL[ i ];
+ d = v.slice( i, i + 1 );
+ if ( i === 8 ) {
+ cdv = d;
+ }
+ if ( !isNaN( d ) ) {
+ d *= f;
+ } else {
+ for ( n = 0; n < LL.length; n++ ) {
+ if ( d.toUpperCase() === LL[ n ] ) {
+ d = VL[ n ];
+ d *= f;
+ if ( isNaN( cdv ) && n === 8 ) {
+ cdv = LL[ n ];
+ }
+ break;
+ }
+ }
+ }
+ rs += d;
+ }
+ cd = rs % 11;
+ if ( cd === 10 ) {
+ cd = "X";
+ }
+ if ( cd === cdv ) {
+ return true;
+ }
+ return false;
+}, "The specified vehicle identification number (VIN) is invalid." );
+
+$.validator.addMethod( "zipcodeUS", function( value, element ) {
+ return this.optional( element ) || /^\d{5}(-\d{4})?$/.test( value );
+}, "The specified US ZIP Code is invalid" );
+
+$.validator.addMethod( "ziprange", function( value, element ) {
+ return this.optional( element ) || /^90[2-5]\d\{2\}-\d{4}$/.test( value );
+}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx" );
+
+}));
\ No newline at end of file
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/dist/additional-methods.min.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/dist/additional-methods.min.js
new file mode 100644
index 0000000..c0c7878
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/dist/additional-methods.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.15.0 - 2/24/2016
+ * http://jqueryvalidation.org/
+ * Copyright (c) 2016 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","./jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){!function(){function b(a){return a.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ").replace(/[.(),;:!?%#$'\"_+=\/\-“”’]*/g,"")}a.validator.addMethod("maxWords",function(a,c,d){return this.optional(c)||b(a).match(/\b\w+\b/g).length<=d},a.validator.format("Please enter {0} words or less.")),a.validator.addMethod("minWords",function(a,c,d){return this.optional(c)||b(a).match(/\b\w+\b/g).length>=d},a.validator.format("Please enter at least {0} words.")),a.validator.addMethod("rangeWords",function(a,c,d){var e=b(a),f=/\b\w+\b/g;return this.optional(c)||e.match(f).length>=d[0]&&e.match(f).length<=d[1]},a.validator.format("Please enter between {0} and {1} words."))}(),a.validator.addMethod("accept",function(b,c,d){var e,f,g,h="string"==typeof d?d.replace(/\s/g,""):"image/*",i=this.optional(c);if(i)return i;if("file"===a(c).attr("type")&&(h=h.replace(/[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g,"\\$&").replace(/,/g,"|").replace("/*","/.*"),c.files&&c.files.length))for(g=new RegExp(".?("+h+")$","i"),e=0;ec;c++)d=h-c,e=f.substring(c,c+1),g+=d*e;return g%11===0},"Please specify a valid bank account number"),a.validator.addMethod("bankorgiroaccountNL",function(b,c){return this.optional(c)||a.validator.methods.bankaccountNL.call(this,b,c)||a.validator.methods.giroaccountNL.call(this,b,c)},"Please specify a valid bank or giro account number"),a.validator.addMethod("bic",function(a,b){return this.optional(b)||/^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test(a.toUpperCase())},"Please specify a valid BIC code"),a.validator.addMethod("cifES",function(a){"use strict";var b,c,d,e,f,g,h=[];if(a=a.toUpperCase(),!a.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)"))return!1;for(d=0;9>d;d++)h[d]=parseInt(a.charAt(d),10);for(c=h[2]+h[4]+h[6],e=1;8>e;e+=2)f=(2*h[e]).toString(),g=f.charAt(1),c+=parseInt(f.charAt(0),10)+(""===g?0:parseInt(g,10));return/^[ABCDEFGHJNPQRSUVW]{1}/.test(a)?(c+="",b=10-parseInt(c.charAt(c.length-1),10),a+=b,h[8].toString()===String.fromCharCode(64+b)||h[8].toString()===a.charAt(a.length-1)):!1},"Please specify a valid CIF number."),a.validator.addMethod("cpfBR",function(a){if(a=a.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g,""),11!==a.length)return!1;var b,c,d,e,f=0;if(b=parseInt(a.substring(9,10),10),c=parseInt(a.substring(10,11),10),d=function(a,b){var c=10*a%11;return 10!==c&&11!==c||(c=0),c===b},""===a||"00000000000"===a||"11111111111"===a||"22222222222"===a||"33333333333"===a||"44444444444"===a||"55555555555"===a||"66666666666"===a||"77777777777"===a||"88888888888"===a||"99999999999"===a)return!1;for(e=1;9>=e;e++)f+=parseInt(a.substring(e-1,e),10)*(11-e);if(d(f,b)){for(f=0,e=1;10>=e;e++)f+=parseInt(a.substring(e-1,e),10)*(12-e);return d(f,c)}return!1},"Please specify a valid CPF number"),a.validator.addMethod("creditcard",function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 \-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\D/g,""),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},"Please enter a valid credit card number."),a.validator.addMethod("creditcardtypes",function(a,b,c){if(/[^0-9\-]+/.test(a))return!1;a=a.replace(/\D/g,"");var d=0;return c.mastercard&&(d|=1),c.visa&&(d|=2),c.amex&&(d|=4),c.dinersclub&&(d|=8),c.enroute&&(d|=16),c.discover&&(d|=32),c.jcb&&(d|=64),c.unknown&&(d|=128),c.all&&(d=255),1&d&&/^(5[12345])/.test(a)?16===a.length:2&d&&/^(4)/.test(a)?16===a.length:4&d&&/^(3[47])/.test(a)?15===a.length:8&d&&/^(3(0[012345]|[68]))/.test(a)?14===a.length:16&d&&/^(2(014|149))/.test(a)?15===a.length:32&d&&/^(6011)/.test(a)?16===a.length:64&d&&/^(3)/.test(a)?16===a.length:64&d&&/^(2131|1800)/.test(a)?15===a.length:!!(128&d)},"Please enter a valid credit card number."),a.validator.addMethod("currency",function(a,b,c){var d,e="string"==typeof c,f=e?c:c[0],g=e?!0:c[1];return f=f.replace(/,/g,""),f=g?f+"]":f+"]?",d="^["+f+"([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$",d=new RegExp(d),this.optional(b)||d.test(a)},"Please specify a valid currency"),a.validator.addMethod("dateFA",function(a,b){return this.optional(b)||/^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test(a)},a.validator.messages.date),a.validator.addMethod("dateITA",function(a,b){var c,d,e,f,g,h=!1,i=/^\d{1,2}\/\d{1,2}\/\d{4}$/;return i.test(a)?(c=a.split("/"),d=parseInt(c[0],10),e=parseInt(c[1],10),f=parseInt(c[2],10),g=new Date(Date.UTC(f,e-1,d,12,0,0,0)),h=g.getUTCFullYear()===f&&g.getUTCMonth()===e-1&&g.getUTCDate()===d):h=!1,this.optional(b)||h},a.validator.messages.date),a.validator.addMethod("dateNL",function(a,b){return this.optional(b)||/^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(a)},a.validator.messages.date),a.validator.addMethod("extension",function(a,b,c){return c="string"==typeof c?c.replace(/,/g,"|"):"png|jpe?g|gif",this.optional(b)||a.match(new RegExp("\\.("+c+")$","i"))},a.validator.format("Please enter a value with a valid extension.")),a.validator.addMethod("giroaccountNL",function(a,b){return this.optional(b)||/^[0-9]{1,7}$/.test(a)},"Please specify a valid giro account number"),a.validator.addMethod("iban",function(a,b){if(this.optional(b))return!0;var c,d,e,f,g,h,i,j,k,l=a.replace(/ /g,"").toUpperCase(),m="",n=!0,o="",p="";if(c=l.substring(0,2),h={AL:"\\d{8}[\\dA-Z]{16}",AD:"\\d{8}[\\dA-Z]{12}",AT:"\\d{16}",AZ:"[\\dA-Z]{4}\\d{20}",BE:"\\d{12}",BH:"[A-Z]{4}[\\dA-Z]{14}",BA:"\\d{16}",BR:"\\d{23}[A-Z][\\dA-Z]",BG:"[A-Z]{4}\\d{6}[\\dA-Z]{8}",CR:"\\d{17}",HR:"\\d{17}",CY:"\\d{8}[\\dA-Z]{16}",CZ:"\\d{20}",DK:"\\d{14}",DO:"[A-Z]{4}\\d{20}",EE:"\\d{16}",FO:"\\d{14}",FI:"\\d{14}",FR:"\\d{10}[\\dA-Z]{11}\\d{2}",GE:"[\\dA-Z]{2}\\d{16}",DE:"\\d{18}",GI:"[A-Z]{4}[\\dA-Z]{15}",GR:"\\d{7}[\\dA-Z]{16}",GL:"\\d{14}",GT:"[\\dA-Z]{4}[\\dA-Z]{20}",HU:"\\d{24}",IS:"\\d{22}",IE:"[\\dA-Z]{4}\\d{14}",IL:"\\d{19}",IT:"[A-Z]\\d{10}[\\dA-Z]{12}",KZ:"\\d{3}[\\dA-Z]{13}",KW:"[A-Z]{4}[\\dA-Z]{22}",LV:"[A-Z]{4}[\\dA-Z]{13}",LB:"\\d{4}[\\dA-Z]{20}",LI:"\\d{5}[\\dA-Z]{12}",LT:"\\d{16}",LU:"\\d{3}[\\dA-Z]{13}",MK:"\\d{3}[\\dA-Z]{10}\\d{2}",MT:"[A-Z]{4}\\d{5}[\\dA-Z]{18}",MR:"\\d{23}",MU:"[A-Z]{4}\\d{19}[A-Z]{3}",MC:"\\d{10}[\\dA-Z]{11}\\d{2}",MD:"[\\dA-Z]{2}\\d{18}",ME:"\\d{18}",NL:"[A-Z]{4}\\d{10}",NO:"\\d{11}",PK:"[\\dA-Z]{4}\\d{16}",PS:"[\\dA-Z]{4}\\d{21}",PL:"\\d{24}",PT:"\\d{21}",RO:"[A-Z]{4}[\\dA-Z]{16}",SM:"[A-Z]\\d{10}[\\dA-Z]{12}",SA:"\\d{2}[\\dA-Z]{18}",RS:"\\d{18}",SK:"\\d{20}",SI:"\\d{15}",ES:"\\d{20}",SE:"\\d{20}",CH:"\\d{5}[\\dA-Z]{12}",TN:"\\d{20}",TR:"\\d{5}[\\dA-Z]{17}",AE:"\\d{3}\\d{16}",GB:"[A-Z]{4}\\d{14}",VG:"[\\dA-Z]{4}\\d{16}"},g=h[c],"undefined"!=typeof g&&(i=new RegExp("^[A-Z]{2}\\d{2}"+g+"$",""),!i.test(l)))return!1;for(d=l.substring(4,l.length)+l.substring(0,4),j=0;j9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/)},"Please specify a valid mobile number"),a.validator.addMethod("nieES",function(a){"use strict";return a=a.toUpperCase(),a.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)")?/^[T]{1}/.test(a)?a[8]===/^[T]{1}[A-Z0-9]{8}$/.test(a):/^[XYZ]{1}/.test(a)?a[8]==="TRWAGMYFPDXBNJZSQVHLCKE".charAt(a.replace("X","0").replace("Y","1").replace("Z","2").substring(0,8)%23):!1:!1},"Please specify a valid NIE number."),a.validator.addMethod("nifES",function(a){"use strict";return a=a.toUpperCase(),a.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)")?/^[0-9]{8}[A-Z]{1}$/.test(a)?"TRWAGMYFPDXBNJZSQVHLCKE".charAt(a.substring(8,0)%23)===a.charAt(8):/^[KLM]{1}/.test(a)?a[8]===String.fromCharCode(64):!1:!1},"Please specify a valid NIF number."),jQuery.validator.addMethod("notEqualTo",function(b,c,d){return this.optional(c)||!a.validator.methods.equalTo.call(this,b,c,d)},"Please enter a different value, values must not be the same."),a.validator.addMethod("nowhitespace",function(a,b){return this.optional(b)||/^\S+$/i.test(a)},"No white space please"),a.validator.addMethod("pattern",function(a,b,c){return this.optional(b)?!0:("string"==typeof c&&(c=new RegExp("^(?:"+c+")$")),c.test(a))},"Invalid format."),a.validator.addMethod("phoneNL",function(a,b){return this.optional(b)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test(a)},"Please specify a valid phone number."),a.validator.addMethod("phoneUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/)},"Please specify a valid phone number"),a.validator.addMethod("phoneUS",function(a,b){return a=a.replace(/\s+/g,""),this.optional(b)||a.length>9&&a.match(/^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/)},"Please specify a valid phone number"),a.validator.addMethod("phonesUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/)},"Please specify a valid uk phone number"),a.validator.addMethod("postalCodeCA",function(a,b){return this.optional(b)||/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postalcodeBR",function(a,b){return this.optional(b)||/^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test(a)},"Informe um CEP válido."),a.validator.addMethod("postalcodeIT",function(a,b){return this.optional(b)||/^\d{5}$/.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postalcodeNL",function(a,b){return this.optional(b)||/^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postcodeUK",function(a,b){return this.optional(b)||/^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(a)},"Please specify a valid UK postcode"),a.validator.addMethod("require_from_group",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data("valid_req_grp")?f.data("valid_req_grp"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length>=d[0];return f.data("valid_req_grp",g),a(c).data("being_validated")||(e.data("being_validated",!0),e.each(function(){g.element(this)}),e.data("being_validated",!1)),h},a.validator.format("Please fill at least {0} of these fields.")),a.validator.addMethod("skip_or_fill_minimum",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data("valid_skip")?f.data("valid_skip"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length,i=0===h||h>=d[0];return f.data("valid_skip",g),a(c).data("being_validated")||(e.data("being_validated",!0),e.each(function(){g.element(this)}),e.data("being_validated",!1)),i},a.validator.format("Please either skip these fields or fill at least {0} of them.")),a.validator.addMethod("stateUS",function(a,b,c){var d,e="undefined"==typeof c,f=e||"undefined"==typeof c.caseSensitive?!1:c.caseSensitive,g=e||"undefined"==typeof c.includeTerritories?!1:c.includeTerritories,h=e||"undefined"==typeof c.includeMilitary?!1:c.includeMilitary;return d=g||h?g&&h?"^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":g?"^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":"^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$":"^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$",d=f?new RegExp(d):new RegExp(d,"i"),this.optional(b)||d.test(a)},"Please specify a valid state"),a.validator.addMethod("strippedminlength",function(b,c,d){return a(b).text().length>=d},a.validator.format("Please enter at least {0} characters")),a.validator.addMethod("time",function(a,b){return this.optional(b)||/^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test(a)},"Please enter a valid time, between 00:00 and 23:59"),a.validator.addMethod("time12h",function(a,b){return this.optional(b)||/^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(a)},"Please enter a valid time in 12-hour am/pm format"),a.validator.addMethod("url2",function(a,b){return this.optional(b)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},a.validator.messages.url),a.validator.addMethod("vinUS",function(a){if(17!==a.length)return!1;var b,c,d,e,f,g,h=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"],i=[1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9],j=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2],k=0;for(b=0;17>b;b++){if(e=j[b],d=a.slice(b,b+1),8===b&&(g=d),isNaN(d)){for(c=0;c " )
+ .attr( "name", validator.submitButton.name )
+ .val( $( validator.submitButton ).val() )
+ .appendTo( validator.currentForm );
+ }
+ result = validator.settings.submitHandler.call( validator, validator.currentForm, event );
+ if ( validator.submitButton ) {
+
+ // And clean up afterwards; thanks to no-block-scope, hidden can be referenced
+ hidden.remove();
+ }
+ if ( result !== undefined ) {
+ return result;
+ }
+ return false;
+ }
+ return true;
+ }
+
+ // Prevent submit for invalid forms or custom submit handlers
+ if ( validator.cancelSubmit ) {
+ validator.cancelSubmit = false;
+ return handle();
+ }
+ if ( validator.form() ) {
+ if ( validator.pendingRequest ) {
+ validator.formSubmitted = true;
+ return false;
+ }
+ return handle();
+ } else {
+ validator.focusInvalid();
+ return false;
+ }
+ } );
+ }
+
+ return validator;
+ },
+
+ // http://jqueryvalidation.org/valid/
+ valid: function() {
+ var valid, validator, errorList;
+
+ if ( $( this[ 0 ] ).is( "form" ) ) {
+ valid = this.validate().form();
+ } else {
+ errorList = [];
+ valid = true;
+ validator = $( this[ 0 ].form ).validate();
+ this.each( function() {
+ valid = validator.element( this ) && valid;
+ if ( !valid ) {
+ errorList = errorList.concat( validator.errorList );
+ }
+ } );
+ validator.errorList = errorList;
+ }
+ return valid;
+ },
+
+ // http://jqueryvalidation.org/rules/
+ rules: function( command, argument ) {
+
+ // If nothing is selected, return nothing; can't chain anyway
+ if ( !this.length ) {
+ return;
+ }
+
+ var element = this[ 0 ],
+ settings, staticRules, existingRules, data, param, filtered;
+
+ if ( command ) {
+ settings = $.data( element.form, "validator" ).settings;
+ staticRules = settings.rules;
+ existingRules = $.validator.staticRules( element );
+ switch ( command ) {
+ case "add":
+ $.extend( existingRules, $.validator.normalizeRule( argument ) );
+
+ // Remove messages from rules, but allow them to be set separately
+ delete existingRules.messages;
+ staticRules[ element.name ] = existingRules;
+ if ( argument.messages ) {
+ settings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );
+ }
+ break;
+ case "remove":
+ if ( !argument ) {
+ delete staticRules[ element.name ];
+ return existingRules;
+ }
+ filtered = {};
+ $.each( argument.split( /\s/ ), function( index, method ) {
+ filtered[ method ] = existingRules[ method ];
+ delete existingRules[ method ];
+ if ( method === "required" ) {
+ $( element ).removeAttr( "aria-required" );
+ }
+ } );
+ return filtered;
+ }
+ }
+
+ data = $.validator.normalizeRules(
+ $.extend(
+ {},
+ $.validator.classRules( element ),
+ $.validator.attributeRules( element ),
+ $.validator.dataRules( element ),
+ $.validator.staticRules( element )
+ ), element );
+
+ // Make sure required is at front
+ if ( data.required ) {
+ param = data.required;
+ delete data.required;
+ data = $.extend( { required: param }, data );
+ $( element ).attr( "aria-required", "true" );
+ }
+
+ // Make sure remote is at back
+ if ( data.remote ) {
+ param = data.remote;
+ delete data.remote;
+ data = $.extend( data, { remote: param } );
+ }
+
+ return data;
+ }
+} );
+
+// Custom selectors
+$.extend( $.expr[ ":" ], {
+
+ // http://jqueryvalidation.org/blank-selector/
+ blank: function( a ) {
+ return !$.trim( "" + $( a ).val() );
+ },
+
+ // http://jqueryvalidation.org/filled-selector/
+ filled: function( a ) {
+ var val = $( a ).val();
+ return val !== null && !!$.trim( "" + val );
+ },
+
+ // http://jqueryvalidation.org/unchecked-selector/
+ unchecked: function( a ) {
+ return !$( a ).prop( "checked" );
+ }
+} );
+
+// Constructor for validator
+$.validator = function( options, form ) {
+ this.settings = $.extend( true, {}, $.validator.defaults, options );
+ this.currentForm = form;
+ this.init();
+};
+
+// http://jqueryvalidation.org/jQuery.validator.format/
+$.validator.format = function( source, params ) {
+ if ( arguments.length === 1 ) {
+ return function() {
+ var args = $.makeArray( arguments );
+ args.unshift( source );
+ return $.validator.format.apply( this, args );
+ };
+ }
+ if ( params === undefined ) {
+ return source;
+ }
+ if ( arguments.length > 2 && params.constructor !== Array ) {
+ params = $.makeArray( arguments ).slice( 1 );
+ }
+ if ( params.constructor !== Array ) {
+ params = [ params ];
+ }
+ $.each( params, function( i, n ) {
+ source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
+ return n;
+ } );
+ } );
+ return source;
+};
+
+$.extend( $.validator, {
+
+ defaults: {
+ messages: {},
+ groups: {},
+ rules: {},
+ errorClass: "error",
+ pendingClass: "pending",
+ validClass: "valid",
+ errorElement: "label",
+ focusCleanup: false,
+ focusInvalid: true,
+ errorContainer: $( [] ),
+ errorLabelContainer: $( [] ),
+ onsubmit: true,
+ ignore: ":hidden",
+ ignoreTitle: false,
+ onfocusin: function( element ) {
+ this.lastActive = element;
+
+ // Hide error label and remove error class on focus if enabled
+ if ( this.settings.focusCleanup ) {
+ if ( this.settings.unhighlight ) {
+ this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
+ }
+ this.hideThese( this.errorsFor( element ) );
+ }
+ },
+ onfocusout: function( element ) {
+ if ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {
+ this.element( element );
+ }
+ },
+ onkeyup: function( element, event ) {
+
+ // Avoid revalidate the field when pressing one of the following keys
+ // Shift => 16
+ // Ctrl => 17
+ // Alt => 18
+ // Caps lock => 20
+ // End => 35
+ // Home => 36
+ // Left arrow => 37
+ // Up arrow => 38
+ // Right arrow => 39
+ // Down arrow => 40
+ // Insert => 45
+ // Num lock => 144
+ // AltGr key => 225
+ var excludedKeys = [
+ 16, 17, 18, 20, 35, 36, 37,
+ 38, 39, 40, 45, 144, 225
+ ];
+
+ if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {
+ return;
+ } else if ( element.name in this.submitted || element.name in this.invalid ) {
+ this.element( element );
+ }
+ },
+ onclick: function( element ) {
+
+ // Click on selects, radiobuttons and checkboxes
+ if ( element.name in this.submitted ) {
+ this.element( element );
+
+ // Or option elements, check parent select in that case
+ } else if ( element.parentNode.name in this.submitted ) {
+ this.element( element.parentNode );
+ }
+ },
+ highlight: function( element, errorClass, validClass ) {
+ if ( element.type === "radio" ) {
+ this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
+ } else {
+ $( element ).addClass( errorClass ).removeClass( validClass );
+ }
+ },
+ unhighlight: function( element, errorClass, validClass ) {
+ if ( element.type === "radio" ) {
+ this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
+ } else {
+ $( element ).removeClass( errorClass ).addClass( validClass );
+ }
+ }
+ },
+
+ // http://jqueryvalidation.org/jQuery.validator.setDefaults/
+ setDefaults: function( settings ) {
+ $.extend( $.validator.defaults, settings );
+ },
+
+ messages: {
+ required: "This field is required.",
+ remote: "Please fix this field.",
+ email: "Please enter a valid email address.",
+ url: "Please enter a valid URL.",
+ date: "Please enter a valid date.",
+ dateISO: "Please enter a valid date ( ISO ).",
+ number: "Please enter a valid number.",
+ digits: "Please enter only digits.",
+ equalTo: "Please enter the same value again.",
+ maxlength: $.validator.format( "Please enter no more than {0} characters." ),
+ minlength: $.validator.format( "Please enter at least {0} characters." ),
+ rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
+ range: $.validator.format( "Please enter a value between {0} and {1}." ),
+ max: $.validator.format( "Please enter a value less than or equal to {0}." ),
+ min: $.validator.format( "Please enter a value greater than or equal to {0}." ),
+ step: $.validator.format( "Please enter a multiple of {0}." )
+ },
+
+ autoCreateRanges: false,
+
+ prototype: {
+
+ init: function() {
+ this.labelContainer = $( this.settings.errorLabelContainer );
+ this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );
+ this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );
+ this.submitted = {};
+ this.valueCache = {};
+ this.pendingRequest = 0;
+ this.pending = {};
+ this.invalid = {};
+ this.reset();
+
+ var groups = ( this.groups = {} ),
+ rules;
+ $.each( this.settings.groups, function( key, value ) {
+ if ( typeof value === "string" ) {
+ value = value.split( /\s/ );
+ }
+ $.each( value, function( index, name ) {
+ groups[ name ] = key;
+ } );
+ } );
+ rules = this.settings.rules;
+ $.each( rules, function( key, value ) {
+ rules[ key ] = $.validator.normalizeRule( value );
+ } );
+
+ function delegate( event ) {
+ var validator = $.data( this.form, "validator" ),
+ eventType = "on" + event.type.replace( /^validate/, "" ),
+ settings = validator.settings;
+ if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {
+ settings[ eventType ].call( validator, this, event );
+ }
+ }
+
+ $( this.currentForm )
+ .on( "focusin.validate focusout.validate keyup.validate",
+ ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
+ "[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
+ "[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
+ "[type='radio'], [type='checkbox'], [contenteditable]", delegate )
+
+ // Support: Chrome, oldIE
+ // "select" is provided as event.target when clicking a option
+ .on( "click.validate", "select, option, [type='radio'], [type='checkbox']", delegate );
+
+ if ( this.settings.invalidHandler ) {
+ $( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler );
+ }
+
+ // Add aria-required to any Static/Data/Class required fields before first validation
+ // Screen readers require this attribute to be present before the initial submission http://www.w3.org/TR/WCAG-TECHS/ARIA2.html
+ $( this.currentForm ).find( "[required], [data-rule-required], .required" ).attr( "aria-required", "true" );
+ },
+
+ // http://jqueryvalidation.org/Validator.form/
+ form: function() {
+ this.checkForm();
+ $.extend( this.submitted, this.errorMap );
+ this.invalid = $.extend( {}, this.errorMap );
+ if ( !this.valid() ) {
+ $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
+ }
+ this.showErrors();
+ return this.valid();
+ },
+
+ checkForm: function() {
+ this.prepareForm();
+ for ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {
+ this.check( elements[ i ] );
+ }
+ return this.valid();
+ },
+
+ // http://jqueryvalidation.org/Validator.element/
+ element: function( element ) {
+ var cleanElement = this.clean( element ),
+ checkElement = this.validationTargetFor( cleanElement ),
+ v = this,
+ result = true,
+ rs, group;
+
+ if ( checkElement === undefined ) {
+ delete this.invalid[ cleanElement.name ];
+ } else {
+ this.prepareElement( checkElement );
+ this.currentElements = $( checkElement );
+
+ // If this element is grouped, then validate all group elements already
+ // containing a value
+ group = this.groups[ checkElement.name ];
+ if ( group ) {
+ $.each( this.groups, function( name, testgroup ) {
+ if ( testgroup === group && name !== checkElement.name ) {
+ cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );
+ if ( cleanElement && cleanElement.name in v.invalid ) {
+ v.currentElements.push( cleanElement );
+ result = result && v.check( cleanElement );
+ }
+ }
+ } );
+ }
+
+ rs = this.check( checkElement ) !== false;
+ result = result && rs;
+ if ( rs ) {
+ this.invalid[ checkElement.name ] = false;
+ } else {
+ this.invalid[ checkElement.name ] = true;
+ }
+
+ if ( !this.numberOfInvalids() ) {
+
+ // Hide error containers on last error
+ this.toHide = this.toHide.add( this.containers );
+ }
+ this.showErrors();
+
+ // Add aria-invalid status for screen readers
+ $( element ).attr( "aria-invalid", !rs );
+ }
+
+ return result;
+ },
+
+ // http://jqueryvalidation.org/Validator.showErrors/
+ showErrors: function( errors ) {
+ if ( errors ) {
+ var validator = this;
+
+ // Add items to error list and map
+ $.extend( this.errorMap, errors );
+ this.errorList = $.map( this.errorMap, function( message, name ) {
+ return {
+ message: message,
+ element: validator.findByName( name )[ 0 ]
+ };
+ } );
+
+ // Remove items from success list
+ this.successList = $.grep( this.successList, function( element ) {
+ return !( element.name in errors );
+ } );
+ }
+ if ( this.settings.showErrors ) {
+ this.settings.showErrors.call( this, this.errorMap, this.errorList );
+ } else {
+ this.defaultShowErrors();
+ }
+ },
+
+ // http://jqueryvalidation.org/Validator.resetForm/
+ resetForm: function() {
+ if ( $.fn.resetForm ) {
+ $( this.currentForm ).resetForm();
+ }
+ this.invalid = {};
+ this.submitted = {};
+ this.prepareForm();
+ this.hideErrors();
+ var elements = this.elements()
+ .removeData( "previousValue" )
+ .removeAttr( "aria-invalid" );
+
+ this.resetElements( elements );
+ },
+
+ resetElements: function( elements ) {
+ var i;
+
+ if ( this.settings.unhighlight ) {
+ for ( i = 0; elements[ i ]; i++ ) {
+ this.settings.unhighlight.call( this, elements[ i ],
+ this.settings.errorClass, "" );
+ this.findByName( elements[ i ].name ).removeClass( this.settings.validClass );
+ }
+ } else {
+ elements
+ .removeClass( this.settings.errorClass )
+ .removeClass( this.settings.validClass );
+ }
+ },
+
+ numberOfInvalids: function() {
+ return this.objectLength( this.invalid );
+ },
+
+ objectLength: function( obj ) {
+ /* jshint unused: false */
+ var count = 0,
+ i;
+ for ( i in obj ) {
+ if ( obj[ i ] ) {
+ count++;
+ }
+ }
+ return count;
+ },
+
+ hideErrors: function() {
+ this.hideThese( this.toHide );
+ },
+
+ hideThese: function( errors ) {
+ errors.not( this.containers ).text( "" );
+ this.addWrapper( errors ).hide();
+ },
+
+ valid: function() {
+ return this.size() === 0;
+ },
+
+ size: function() {
+ return this.errorList.length;
+ },
+
+ focusInvalid: function() {
+ if ( this.settings.focusInvalid ) {
+ try {
+ $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )
+ .filter( ":visible" )
+ .focus()
+
+ // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
+ .trigger( "focusin" );
+ } catch ( e ) {
+
+ // Ignore IE throwing errors when focusing hidden elements
+ }
+ }
+ },
+
+ findLastActive: function() {
+ var lastActive = this.lastActive;
+ return lastActive && $.grep( this.errorList, function( n ) {
+ return n.element.name === lastActive.name;
+ } ).length === 1 && lastActive;
+ },
+
+ elements: function() {
+ var validator = this,
+ rulesCache = {};
+
+ // Select all valid inputs inside the form (no submit or reset buttons)
+ return $( this.currentForm )
+ .find( "input, select, textarea, [contenteditable]" )
+ .not( ":submit, :reset, :image, :disabled" )
+ .not( this.settings.ignore )
+ .filter( function() {
+ var name = this.name || $( this ).attr( "name" ); // For contenteditable
+ if ( !name && validator.settings.debug && window.console ) {
+ console.error( "%o has no name assigned", this );
+ }
+
+ // Set form expando on contenteditable
+ if ( this.hasAttribute( "contenteditable" ) ) {
+ this.form = $( this ).closest( "form" )[ 0 ];
+ }
+
+ // Select only the first element for each name, and only those with rules specified
+ if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
+ return false;
+ }
+
+ rulesCache[ name ] = true;
+ return true;
+ } );
+ },
+
+ clean: function( selector ) {
+ return $( selector )[ 0 ];
+ },
+
+ errors: function() {
+ var errorClass = this.settings.errorClass.split( " " ).join( "." );
+ return $( this.settings.errorElement + "." + errorClass, this.errorContext );
+ },
+
+ resetInternals: function() {
+ this.successList = [];
+ this.errorList = [];
+ this.errorMap = {};
+ this.toShow = $( [] );
+ this.toHide = $( [] );
+ },
+
+ reset: function() {
+ this.resetInternals();
+ this.currentElements = $( [] );
+ },
+
+ prepareForm: function() {
+ this.reset();
+ this.toHide = this.errors().add( this.containers );
+ },
+
+ prepareElement: function( element ) {
+ this.reset();
+ this.toHide = this.errorsFor( element );
+ },
+
+ elementValue: function( element ) {
+ var $element = $( element ),
+ type = element.type,
+ val, idx;
+
+ if ( type === "radio" || type === "checkbox" ) {
+ return this.findByName( element.name ).filter( ":checked" ).val();
+ } else if ( type === "number" && typeof element.validity !== "undefined" ) {
+ return element.validity.badInput ? "NaN" : $element.val();
+ }
+
+ if ( element.hasAttribute( "contenteditable" ) ) {
+ val = $element.text();
+ } else {
+ val = $element.val();
+ }
+
+ if ( type === "file" ) {
+
+ // Modern browser (chrome & safari)
+ if ( val.substr( 0, 12 ) === "C:\\fakepath\\" ) {
+ return val.substr( 12 );
+ }
+
+ // Legacy browsers
+ // Unix-based path
+ idx = val.lastIndexOf( "/" );
+ if ( idx >= 0 ) {
+ return val.substr( idx + 1 );
+ }
+
+ // Windows-based path
+ idx = val.lastIndexOf( "\\" );
+ if ( idx >= 0 ) {
+ return val.substr( idx + 1 );
+ }
+
+ // Just the file name
+ return val;
+ }
+
+ if ( typeof val === "string" ) {
+ return val.replace( /\r/g, "" );
+ }
+ return val;
+ },
+
+ check: function( element ) {
+ element = this.validationTargetFor( this.clean( element ) );
+
+ var rules = $( element ).rules(),
+ rulesCount = $.map( rules, function( n, i ) {
+ return i;
+ } ).length,
+ dependencyMismatch = false,
+ val = this.elementValue( element ),
+ result, method, rule;
+
+ // If a normalizer is defined for this element, then
+ // call it to retreive the changed value instead
+ // of using the real one.
+ // Note that `this` in the normalizer is `element`.
+ if ( typeof rules.normalizer === "function" ) {
+ val = rules.normalizer.call( element, val );
+
+ if ( typeof val !== "string" ) {
+ throw new TypeError( "The normalizer should return a string value." );
+ }
+
+ // Delete the normalizer from rules to avoid treating
+ // it as a pre-defined method.
+ delete rules.normalizer;
+ }
+
+ for ( method in rules ) {
+ rule = { method: method, parameters: rules[ method ] };
+ try {
+ result = $.validator.methods[ method ].call( this, val, element, rule.parameters );
+
+ // If a method indicates that the field is optional and therefore valid,
+ // don't mark it as valid when there are no other rules
+ if ( result === "dependency-mismatch" && rulesCount === 1 ) {
+ dependencyMismatch = true;
+ continue;
+ }
+ dependencyMismatch = false;
+
+ if ( result === "pending" ) {
+ this.toHide = this.toHide.not( this.errorsFor( element ) );
+ return;
+ }
+
+ if ( !result ) {
+ this.formatAndAdd( element, rule );
+ return false;
+ }
+ } catch ( e ) {
+ if ( this.settings.debug && window.console ) {
+ console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
+ }
+ if ( e instanceof TypeError ) {
+ e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
+ }
+
+ throw e;
+ }
+ }
+ if ( dependencyMismatch ) {
+ return;
+ }
+ if ( this.objectLength( rules ) ) {
+ this.successList.push( element );
+ }
+ return true;
+ },
+
+ // Return the custom message for the given element and validation method
+ // specified in the element's HTML5 data attribute
+ // return the generic message if present and no method specific message is present
+ customDataMessage: function( element, method ) {
+ return $( element ).data( "msg" + method.charAt( 0 ).toUpperCase() +
+ method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" );
+ },
+
+ // Return the custom message for the given element name and validation method
+ customMessage: function( name, method ) {
+ var m = this.settings.messages[ name ];
+ return m && ( m.constructor === String ? m : m[ method ] );
+ },
+
+ // Return the first defined argument, allowing empty strings
+ findDefined: function() {
+ for ( var i = 0; i < arguments.length; i++ ) {
+ if ( arguments[ i ] !== undefined ) {
+ return arguments[ i ];
+ }
+ }
+ return undefined;
+ },
+
+ defaultMessage: function( element, rule ) {
+ var message = this.findDefined(
+ this.customMessage( element.name, rule.method ),
+ this.customDataMessage( element, rule.method ),
+
+ // 'title' is never undefined, so handle empty string as undefined
+ !this.settings.ignoreTitle && element.title || undefined,
+ $.validator.messages[ rule.method ],
+ "Warning: No message defined for " + element.name + " "
+ ),
+ theregex = /\$?\{(\d+)\}/g;
+ if ( typeof message === "function" ) {
+ message = message.call( this, rule.parameters, element );
+ } else if ( theregex.test( message ) ) {
+ message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters );
+ }
+
+ return message;
+ },
+
+ formatAndAdd: function( element, rule ) {
+ var message = this.defaultMessage( element, rule );
+
+ this.errorList.push( {
+ message: message,
+ element: element,
+ method: rule.method
+ } );
+
+ this.errorMap[ element.name ] = message;
+ this.submitted[ element.name ] = message;
+ },
+
+ addWrapper: function( toToggle ) {
+ if ( this.settings.wrapper ) {
+ toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
+ }
+ return toToggle;
+ },
+
+ defaultShowErrors: function() {
+ var i, elements, error;
+ for ( i = 0; this.errorList[ i ]; i++ ) {
+ error = this.errorList[ i ];
+ if ( this.settings.highlight ) {
+ this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
+ }
+ this.showLabel( error.element, error.message );
+ }
+ if ( this.errorList.length ) {
+ this.toShow = this.toShow.add( this.containers );
+ }
+ if ( this.settings.success ) {
+ for ( i = 0; this.successList[ i ]; i++ ) {
+ this.showLabel( this.successList[ i ] );
+ }
+ }
+ if ( this.settings.unhighlight ) {
+ for ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {
+ this.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );
+ }
+ }
+ this.toHide = this.toHide.not( this.toShow );
+ this.hideErrors();
+ this.addWrapper( this.toShow ).show();
+ },
+
+ validElements: function() {
+ return this.currentElements.not( this.invalidElements() );
+ },
+
+ invalidElements: function() {
+ return $( this.errorList ).map( function() {
+ return this.element;
+ } );
+ },
+
+ showLabel: function( element, message ) {
+ var place, group, errorID, v,
+ error = this.errorsFor( element ),
+ elementID = this.idOrName( element ),
+ describedBy = $( element ).attr( "aria-describedby" );
+
+ if ( error.length ) {
+
+ // Refresh error/success class
+ error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
+
+ // Replace message on existing label
+ error.html( message );
+ } else {
+
+ // Create error element
+ error = $( "<" + this.settings.errorElement + ">" )
+ .attr( "id", elementID + "-error" )
+ .addClass( this.settings.errorClass )
+ .html( message || "" );
+
+ // Maintain reference to the element to be placed into the DOM
+ place = error;
+ if ( this.settings.wrapper ) {
+
+ // Make sure the element is visible, even in IE
+ // actually showing the wrapped element is handled elsewhere
+ place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent();
+ }
+ if ( this.labelContainer.length ) {
+ this.labelContainer.append( place );
+ } else if ( this.settings.errorPlacement ) {
+ this.settings.errorPlacement( place, $( element ) );
+ } else {
+ place.insertAfter( element );
+ }
+
+ // Link error back to the element
+ if ( error.is( "label" ) ) {
+
+ // If the error is a label, then associate using 'for'
+ error.attr( "for", elementID );
+
+ // If the element is not a child of an associated label, then it's necessary
+ // to explicitly apply aria-describedby
+ } else if ( error.parents( "label[for='" + this.escapeCssMeta( elementID ) + "']" ).length === 0 ) {
+ errorID = error.attr( "id" );
+
+ // Respect existing non-error aria-describedby
+ if ( !describedBy ) {
+ describedBy = errorID;
+ } else if ( !describedBy.match( new RegExp( "\\b" + this.escapeCssMeta( errorID ) + "\\b" ) ) ) {
+
+ // Add to end of list if not already present
+ describedBy += " " + errorID;
+ }
+ $( element ).attr( "aria-describedby", describedBy );
+
+ // If this element is grouped, then assign to all elements in the same group
+ group = this.groups[ element.name ];
+ if ( group ) {
+ v = this;
+ $.each( v.groups, function( name, testgroup ) {
+ if ( testgroup === group ) {
+ $( "[name='" + v.escapeCssMeta( name ) + "']", v.currentForm )
+ .attr( "aria-describedby", error.attr( "id" ) );
+ }
+ } );
+ }
+ }
+ }
+ if ( !message && this.settings.success ) {
+ error.text( "" );
+ if ( typeof this.settings.success === "string" ) {
+ error.addClass( this.settings.success );
+ } else {
+ this.settings.success( error, element );
+ }
+ }
+ this.toShow = this.toShow.add( error );
+ },
+
+ errorsFor: function( element ) {
+ var name = this.escapeCssMeta( this.idOrName( element ) ),
+ describer = $( element ).attr( "aria-describedby" ),
+ selector = "label[for='" + name + "'], label[for='" + name + "'] *";
+
+ // 'aria-describedby' should directly reference the error element
+ if ( describer ) {
+ selector = selector + ", #" + this.escapeCssMeta( describer )
+ .replace( /\s+/g, ", #" );
+ }
+
+ return this
+ .errors()
+ .filter( selector );
+ },
+
+ // See https://api.jquery.com/category/selectors/, for CSS
+ // meta-characters that should be escaped in order to be used with JQuery
+ // as a literal part of a name/id or any selector.
+ escapeCssMeta: function( string ) {
+ return string.replace( /([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1" );
+ },
+
+ idOrName: function( element ) {
+ return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );
+ },
+
+ validationTargetFor: function( element ) {
+
+ // If radio/checkbox, validate first element in group instead
+ if ( this.checkable( element ) ) {
+ element = this.findByName( element.name );
+ }
+
+ // Always apply ignore filter
+ return $( element ).not( this.settings.ignore )[ 0 ];
+ },
+
+ checkable: function( element ) {
+ return ( /radio|checkbox/i ).test( element.type );
+ },
+
+ findByName: function( name ) {
+ return $( this.currentForm ).find( "[name='" + this.escapeCssMeta( name ) + "']" );
+ },
+
+ getLength: function( value, element ) {
+ switch ( element.nodeName.toLowerCase() ) {
+ case "select":
+ return $( "option:selected", element ).length;
+ case "input":
+ if ( this.checkable( element ) ) {
+ return this.findByName( element.name ).filter( ":checked" ).length;
+ }
+ }
+ return value.length;
+ },
+
+ depend: function( param, element ) {
+ return this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;
+ },
+
+ dependTypes: {
+ "boolean": function( param ) {
+ return param;
+ },
+ "string": function( param, element ) {
+ return !!$( param, element.form ).length;
+ },
+ "function": function( param, element ) {
+ return param( element );
+ }
+ },
+
+ optional: function( element ) {
+ var val = this.elementValue( element );
+ return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
+ },
+
+ startRequest: function( element ) {
+ if ( !this.pending[ element.name ] ) {
+ this.pendingRequest++;
+ $( element ).addClass( this.settings.pendingClass );
+ this.pending[ element.name ] = true;
+ }
+ },
+
+ stopRequest: function( element, valid ) {
+ this.pendingRequest--;
+
+ // Sometimes synchronization fails, make sure pendingRequest is never < 0
+ if ( this.pendingRequest < 0 ) {
+ this.pendingRequest = 0;
+ }
+ delete this.pending[ element.name ];
+ $( element ).removeClass( this.settings.pendingClass );
+ if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {
+ $( this.currentForm ).submit();
+ this.formSubmitted = false;
+ } else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {
+ $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
+ this.formSubmitted = false;
+ }
+ },
+
+ previousValue: function( element, method ) {
+ return $.data( element, "previousValue" ) || $.data( element, "previousValue", {
+ old: null,
+ valid: true,
+ message: this.defaultMessage( element, { method: method } )
+ } );
+ },
+
+ // Cleans up all forms and elements, removes validator-specific events
+ destroy: function() {
+ this.resetForm();
+
+ $( this.currentForm )
+ .off( ".validate" )
+ .removeData( "validator" )
+ .find( ".validate-equalTo-blur" )
+ .off( ".validate-equalTo" )
+ .removeClass( "validate-equalTo-blur" );
+ }
+
+ },
+
+ classRuleSettings: {
+ required: { required: true },
+ email: { email: true },
+ url: { url: true },
+ date: { date: true },
+ dateISO: { dateISO: true },
+ number: { number: true },
+ digits: { digits: true },
+ creditcard: { creditcard: true }
+ },
+
+ addClassRules: function( className, rules ) {
+ if ( className.constructor === String ) {
+ this.classRuleSettings[ className ] = rules;
+ } else {
+ $.extend( this.classRuleSettings, className );
+ }
+ },
+
+ classRules: function( element ) {
+ var rules = {},
+ classes = $( element ).attr( "class" );
+
+ if ( classes ) {
+ $.each( classes.split( " " ), function() {
+ if ( this in $.validator.classRuleSettings ) {
+ $.extend( rules, $.validator.classRuleSettings[ this ] );
+ }
+ } );
+ }
+ return rules;
+ },
+
+ normalizeAttributeRule: function( rules, type, method, value ) {
+
+ // Convert the value to a number for number inputs, and for text for backwards compability
+ // allows type="date" and others to be compared as strings
+ if ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
+ value = Number( value );
+
+ // Support Opera Mini, which returns NaN for undefined minlength
+ if ( isNaN( value ) ) {
+ value = undefined;
+ }
+ }
+
+ if ( value || value === 0 ) {
+ rules[ method ] = value;
+ } else if ( type === method && type !== "range" ) {
+
+ // Exception: the jquery validate 'range' method
+ // does not test for the html5 'range' type
+ rules[ method ] = true;
+ }
+ },
+
+ attributeRules: function( element ) {
+ var rules = {},
+ $element = $( element ),
+ type = element.getAttribute( "type" ),
+ method, value;
+
+ for ( method in $.validator.methods ) {
+
+ // Support for in both html5 and older browsers
+ if ( method === "required" ) {
+ value = element.getAttribute( method );
+
+ // Some browsers return an empty string for the required attribute
+ // and non-HTML5 browsers might have required="" markup
+ if ( value === "" ) {
+ value = true;
+ }
+
+ // Force non-HTML5 browsers to return bool
+ value = !!value;
+ } else {
+ value = $element.attr( method );
+ }
+
+ this.normalizeAttributeRule( rules, type, method, value );
+ }
+
+ // 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
+ if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {
+ delete rules.maxlength;
+ }
+
+ return rules;
+ },
+
+ dataRules: function( element ) {
+ var rules = {},
+ $element = $( element ),
+ type = element.getAttribute( "type" ),
+ method, value;
+
+ for ( method in $.validator.methods ) {
+ value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
+ this.normalizeAttributeRule( rules, type, method, value );
+ }
+ return rules;
+ },
+
+ staticRules: function( element ) {
+ var rules = {},
+ validator = $.data( element.form, "validator" );
+
+ if ( validator.settings.rules ) {
+ rules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};
+ }
+ return rules;
+ },
+
+ normalizeRules: function( rules, element ) {
+
+ // Handle dependency check
+ $.each( rules, function( prop, val ) {
+
+ // Ignore rule when param is explicitly false, eg. required:false
+ if ( val === false ) {
+ delete rules[ prop ];
+ return;
+ }
+ if ( val.param || val.depends ) {
+ var keepRule = true;
+ switch ( typeof val.depends ) {
+ case "string":
+ keepRule = !!$( val.depends, element.form ).length;
+ break;
+ case "function":
+ keepRule = val.depends.call( element, element );
+ break;
+ }
+ if ( keepRule ) {
+ rules[ prop ] = val.param !== undefined ? val.param : true;
+ } else {
+ $.data( element.form, "validator" ).resetElements( $( element ) );
+ delete rules[ prop ];
+ }
+ }
+ } );
+
+ // Evaluate parameters
+ $.each( rules, function( rule, parameter ) {
+ rules[ rule ] = $.isFunction( parameter ) && rule !== "normalizer" ? parameter( element ) : parameter;
+ } );
+
+ // Clean number parameters
+ $.each( [ "minlength", "maxlength" ], function() {
+ if ( rules[ this ] ) {
+ rules[ this ] = Number( rules[ this ] );
+ }
+ } );
+ $.each( [ "rangelength", "range" ], function() {
+ var parts;
+ if ( rules[ this ] ) {
+ if ( $.isArray( rules[ this ] ) ) {
+ rules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];
+ } else if ( typeof rules[ this ] === "string" ) {
+ parts = rules[ this ].replace( /[\[\]]/g, "" ).split( /[\s,]+/ );
+ rules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];
+ }
+ }
+ } );
+
+ if ( $.validator.autoCreateRanges ) {
+
+ // Auto-create ranges
+ if ( rules.min != null && rules.max != null ) {
+ rules.range = [ rules.min, rules.max ];
+ delete rules.min;
+ delete rules.max;
+ }
+ if ( rules.minlength != null && rules.maxlength != null ) {
+ rules.rangelength = [ rules.minlength, rules.maxlength ];
+ delete rules.minlength;
+ delete rules.maxlength;
+ }
+ }
+
+ return rules;
+ },
+
+ // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
+ normalizeRule: function( data ) {
+ if ( typeof data === "string" ) {
+ var transformed = {};
+ $.each( data.split( /\s/ ), function() {
+ transformed[ this ] = true;
+ } );
+ data = transformed;
+ }
+ return data;
+ },
+
+ // http://jqueryvalidation.org/jQuery.validator.addMethod/
+ addMethod: function( name, method, message ) {
+ $.validator.methods[ name ] = method;
+ $.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];
+ if ( method.length < 3 ) {
+ $.validator.addClassRules( name, $.validator.normalizeRule( name ) );
+ }
+ },
+
+ // http://jqueryvalidation.org/jQuery.validator.methods/
+ methods: {
+
+ // http://jqueryvalidation.org/required-method/
+ required: function( value, element, param ) {
+
+ // Check if dependency is met
+ if ( !this.depend( param, element ) ) {
+ return "dependency-mismatch";
+ }
+ if ( element.nodeName.toLowerCase() === "select" ) {
+
+ // Could be an array for select-multiple or a string, both are fine this way
+ var val = $( element ).val();
+ return val && val.length > 0;
+ }
+ if ( this.checkable( element ) ) {
+ return this.getLength( value, element ) > 0;
+ }
+ return value.length > 0;
+ },
+
+ // http://jqueryvalidation.org/email-method/
+ email: function( value, element ) {
+
+ // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
+ // Retrieved 2014-01-14
+ // If you have a problem with this implementation, report a bug against the above spec
+ // Or use custom methods to implement your own email validation
+ return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );
+ },
+
+ // http://jqueryvalidation.org/url-method/
+ url: function( value, element ) {
+
+ // Copyright (c) 2010-2013 Diego Perini, MIT licensed
+ // https://gist.github.com/dperini/729294
+ // see also https://mathiasbynens.be/demo/url-regex
+ // modified to allow protocol-relative URLs
+ return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );
+ },
+
+ // http://jqueryvalidation.org/date-method/
+ date: function( value, element ) {
+ return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );
+ },
+
+ // http://jqueryvalidation.org/dateISO-method/
+ dateISO: function( value, element ) {
+ return this.optional( element ) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );
+ },
+
+ // http://jqueryvalidation.org/number-method/
+ number: function( value, element ) {
+ return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value );
+ },
+
+ // http://jqueryvalidation.org/digits-method/
+ digits: function( value, element ) {
+ return this.optional( element ) || /^\d+$/.test( value );
+ },
+
+ // http://jqueryvalidation.org/minlength-method/
+ minlength: function( value, element, param ) {
+ var length = $.isArray( value ) ? value.length : this.getLength( value, element );
+ return this.optional( element ) || length >= param;
+ },
+
+ // http://jqueryvalidation.org/maxlength-method/
+ maxlength: function( value, element, param ) {
+ var length = $.isArray( value ) ? value.length : this.getLength( value, element );
+ return this.optional( element ) || length <= param;
+ },
+
+ // http://jqueryvalidation.org/rangelength-method/
+ rangelength: function( value, element, param ) {
+ var length = $.isArray( value ) ? value.length : this.getLength( value, element );
+ return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );
+ },
+
+ // http://jqueryvalidation.org/min-method/
+ min: function( value, element, param ) {
+ return this.optional( element ) || value >= param;
+ },
+
+ // http://jqueryvalidation.org/max-method/
+ max: function( value, element, param ) {
+ return this.optional( element ) || value <= param;
+ },
+
+ // http://jqueryvalidation.org/range-method/
+ range: function( value, element, param ) {
+ return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );
+ },
+
+ // http://jqueryvalidation.org/step-method/
+ step: function( value, element, param ) {
+ var type = $( element ).attr( "type" ),
+ errorMessage = "Step attribute on input type " + type + " is not supported.",
+ supportedTypes = [ "text", "number", "range" ],
+ re = new RegExp( "\\b" + type + "\\b" ),
+ notSupported = type && !re.test( supportedTypes.join() );
+
+ // Works only for text, number and range input types
+ // TODO find a way to support input types date, datetime, datetime-local, month, time and week
+ if ( notSupported ) {
+ throw new Error( errorMessage );
+ }
+ return this.optional( element ) || ( value % param === 0 );
+ },
+
+ // http://jqueryvalidation.org/equalTo-method/
+ equalTo: function( value, element, param ) {
+
+ // Bind to the blur event of the target in order to revalidate whenever the target field is updated
+ var target = $( param );
+ if ( this.settings.onfocusout && target.not( ".validate-equalTo-blur" ).length ) {
+ target.addClass( "validate-equalTo-blur" ).on( "blur.validate-equalTo", function() {
+ $( element ).valid();
+ } );
+ }
+ return value === target.val();
+ },
+
+ // http://jqueryvalidation.org/remote-method/
+ remote: function( value, element, param, method ) {
+ if ( this.optional( element ) ) {
+ return "dependency-mismatch";
+ }
+
+ method = typeof method === "string" && method || "remote";
+
+ var previous = this.previousValue( element, method ),
+ validator, data, optionDataString;
+
+ if ( !this.settings.messages[ element.name ] ) {
+ this.settings.messages[ element.name ] = {};
+ }
+ previous.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];
+ this.settings.messages[ element.name ][ method ] = previous.message;
+
+ param = typeof param === "string" && { url: param } || param;
+ optionDataString = $.param( $.extend( { data: value }, param.data ) );
+ if ( previous.old === optionDataString ) {
+ return previous.valid;
+ }
+
+ previous.old = optionDataString;
+ validator = this;
+ this.startRequest( element );
+ data = {};
+ data[ element.name ] = value;
+ $.ajax( $.extend( true, {
+ mode: "abort",
+ port: "validate" + element.name,
+ dataType: "json",
+ data: data,
+ context: validator.currentForm,
+ success: function( response ) {
+ var valid = response === true || response === "true",
+ errors, message, submitted;
+
+ validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
+ if ( valid ) {
+ submitted = validator.formSubmitted;
+ validator.resetInternals();
+ validator.toHide = validator.errorsFor( element );
+ validator.formSubmitted = submitted;
+ validator.successList.push( element );
+ validator.invalid[ element.name ] = false;
+ validator.showErrors();
+ } else {
+ errors = {};
+ message = response || validator.defaultMessage( element, { method: method, parameters: value } );
+ errors[ element.name ] = previous.message = message;
+ validator.invalid[ element.name ] = true;
+ validator.showErrors( errors );
+ }
+ previous.valid = valid;
+ validator.stopRequest( element, valid );
+ }
+ }, param ) );
+ return "pending";
+ }
+ }
+
+} );
+
+// Ajax mode: abort
+// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
+// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
+
+var pendingRequests = {},
+ ajax;
+
+// Use a prefilter if available (1.5+)
+if ( $.ajaxPrefilter ) {
+ $.ajaxPrefilter( function( settings, _, xhr ) {
+ var port = settings.port;
+ if ( settings.mode === "abort" ) {
+ if ( pendingRequests[ port ] ) {
+ pendingRequests[ port ].abort();
+ }
+ pendingRequests[ port ] = xhr;
+ }
+ } );
+} else {
+
+ // Proxy ajax
+ ajax = $.ajax;
+ $.ajax = function( settings ) {
+ var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
+ port = ( "port" in settings ? settings : $.ajaxSettings ).port;
+ if ( mode === "abort" ) {
+ if ( pendingRequests[ port ] ) {
+ pendingRequests[ port ].abort();
+ }
+ pendingRequests[ port ] = ajax.apply( this, arguments );
+ return pendingRequests[ port ];
+ }
+ return ajax.apply( this, arguments );
+ };
+}
+
+}));
\ No newline at end of file
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js
new file mode 100644
index 0000000..2a3c1e8
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.15.0 - 2/24/2016
+ * http://jqueryvalidation.org/
+ * Copyright (c) 2016 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.settings.submitHandler&&(c.submitButton=b.target),a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.settings.submitHandler?(c.submitButton&&(d=a(" ").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),e=c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),void 0!==e?e:!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){if(this.length){var d,e,f,g,h,i,j=this[0];if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(b,c){i[c]=f[c],delete f[c],"required"===c&&a(j).removeAttr("aria-required")}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g),a(j).attr("aria-required","true")),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}}),a.extend(a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){var c=a(b).val();return null!==c&&!!a.trim(""+c)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||-1!==a.inArray(c.keyCode,d)||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date ( ISO ).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c=a.data(this.form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!a(this).is(e.ignore)&&e[d].call(c,this,b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable]",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler),a(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required","true")},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=h&&g.check(e)))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)a[b]&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0]),d in c||!b.objectLength(a(this).rules())?!1:(c[d]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type;return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=b.hasAttribute("contenteditable")?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f=a(b).rules(),g=a.map(f,function(a,b){return b}).length,h=!1,i=this.elementValue(b);if("function"==typeof f.normalizer){if(i=f.normalizer.call(b,i),"string"!=typeof i)throw new TypeError("The normalizer should return a string value.");delete f.normalizer}for(d in f){e={method:d,parameters:f[d]};try{if(c=a.validator.methods[d].call(this,i,b,e.parameters),"dependency-mismatch"===c&&1===g){h=!0;continue}if(h=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(j){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",j),j instanceof TypeError&&(j.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),j}}if(!h)return this.objectLength(f)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;aWarning: No message defined for "+b.name+""),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return a.replace(/([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0!==e.param?e.param:!0:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(d,e){b[d]=a.isFunction(e)&&"normalizer"!==d?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||d>=e},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||c>=a},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e=a(c).attr("type"),f="Step attribute on input type "+e+" is not supported.",g=["text","number","range"],h=new RegExp("\\b"+e+"\\b"),i=e&&!h.test(g.join());if(i)throw new Error(f);return this.optional(c)||b%d===0},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var b,c={};a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)})});
\ No newline at end of file
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/package.json b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/package.json
new file mode 100644
index 0000000..87dad7d
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/package.json
@@ -0,0 +1,57 @@
+{
+ "name": "jquery-validation",
+ "title": "jQuery Validation Plugin",
+ "description": "Client-side form validation made easy",
+ "version": "1.15.0",
+ "homepage": "http://jqueryvalidation.org/",
+ "license": "MIT",
+ "author": {
+ "name": "Jörn Zaefferer",
+ "email": "joern.zaefferer@gmail.com",
+ "url": "http://bassistance.de"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/jzaefferer/jquery-validation.git"
+ },
+ "bugs": {
+ "url": "https://github.com/jzaefferer/jquery-validation/issues"
+ },
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "http://www.opensource.org/licenses/MIT"
+ }
+ ],
+ "scripts": {
+ "test": "grunt",
+ "prepublish": "grunt"
+ },
+ "files": [
+ "dist/localization/",
+ "dist/additional-methods.js",
+ "dist/jquery.validate.js"
+ ],
+ "main": "dist/jquery.validate.js",
+ "dependencies": {},
+ "devDependencies": {
+ "commitplease": "^2.2.3",
+ "grunt": "^0.4.4",
+ "grunt-contrib-compress": "^0.7",
+ "grunt-contrib-concat": "^0.3",
+ "grunt-contrib-copy": "^0.5",
+ "grunt-contrib-jshint": "^0.11.3",
+ "grunt-contrib-qunit": "^0.4",
+ "grunt-contrib-uglify": "^0.4",
+ "grunt-contrib-watch": "^0.6",
+ "grunt-jscs": "^2.2",
+ "grunt-text-replace": "^0.3.11"
+ },
+ "keywords": [
+ "jquery",
+ "jquery-plugin",
+ "forms",
+ "validation",
+ "validate"
+ ]
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/accept.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/accept.js
new file mode 100644
index 0000000..ee627fc
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/accept.js
@@ -0,0 +1,38 @@
+// Accept a value from a file input based on a required mimetype
+$.validator.addMethod( "accept", function( value, element, param ) {
+
+ // Split mime on commas in case we have multiple types we can accept
+ var typeParam = typeof param === "string" ? param.replace( /\s/g, "" ) : "image/*",
+ optionalValue = this.optional( element ),
+ i, file, regex;
+
+ // Element is optional
+ if ( optionalValue ) {
+ return optionalValue;
+ }
+
+ if ( $( element ).attr( "type" ) === "file" ) {
+
+ // Escape string to be used in the regex
+ // see: http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
+ // Escape also "/*" as "/.*" as a wildcard
+ typeParam = typeParam.replace( /[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&" ).replace( /,/g, "|" ).replace( "\/*", "/.*" );
+
+ // Check if the element has a FileList before checking each file
+ if ( element.files && element.files.length ) {
+ regex = new RegExp( ".?(" + typeParam + ")$", "i" );
+ for ( i = 0; i < element.files.length; i++ ) {
+ file = element.files[ i ];
+
+ // Grab the mimetype from the loaded file, verify it matches
+ if ( !file.type.match( regex ) ) {
+ return false;
+ }
+ }
+ }
+ }
+
+ // Either return true because we've validated each file, or because the
+ // browser does not support element.files and the FileList feature
+ return true;
+}, $.validator.format( "Please enter a value with a valid mimetype." ) );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/additional.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/additional.js
new file mode 100644
index 0000000..5dd01a2
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/additional.js
@@ -0,0 +1,26 @@
+( function() {
+
+ function stripHtml( value ) {
+
+ // Remove html tags and space chars
+ return value.replace( /<.[^<>]*?>/g, " " ).replace( / | /gi, " " )
+
+ // Remove punctuation
+ .replace( /[.(),;:!?%#$'\"_+=\/\-“”’]*/g, "" );
+ }
+
+ $.validator.addMethod( "maxWords", function( value, element, params ) {
+ return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length <= params;
+ }, $.validator.format( "Please enter {0} words or less." ) );
+
+ $.validator.addMethod( "minWords", function( value, element, params ) {
+ return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length >= params;
+ }, $.validator.format( "Please enter at least {0} words." ) );
+
+ $.validator.addMethod( "rangeWords", function( value, element, params ) {
+ var valueStripped = stripHtml( value ),
+ regex = /\b\w+\b/g;
+ return this.optional( element ) || valueStripped.match( regex ).length >= params[ 0 ] && valueStripped.match( regex ).length <= params[ 1 ];
+ }, $.validator.format( "Please enter between {0} and {1} words." ) );
+
+}() );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/alphanumeric.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/alphanumeric.js
new file mode 100644
index 0000000..79e54e0
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/alphanumeric.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "alphanumeric", function( value, element ) {
+ return this.optional( element ) || /^\w+$/i.test( value );
+}, "Letters, numbers, and underscores only please" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/bankaccountNL.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/bankaccountNL.js
new file mode 100644
index 0000000..1671f49
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/bankaccountNL.js
@@ -0,0 +1,26 @@
+/*
+ * Dutch bank account numbers (not 'giro' numbers) have 9 digits
+ * and pass the '11 check'.
+ * We accept the notation with spaces, as that is common.
+ * acceptable: 123456789 or 12 34 56 789
+ */
+$.validator.addMethod( "bankaccountNL", function( value, element ) {
+ if ( this.optional( element ) ) {
+ return true;
+ }
+ if ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {
+ return false;
+ }
+
+ // Now '11 check'
+ var account = value.replace( / /g, "" ), // Remove spaces
+ sum = 0,
+ len = account.length,
+ pos, factor, digit;
+ for ( pos = 0; pos < len; pos++ ) {
+ factor = len - pos;
+ digit = account.substring( pos, pos + 1 );
+ sum = sum + factor * digit;
+ }
+ return sum % 11 === 0;
+}, "Please specify a valid bank account number" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/bankorgiroaccountNL.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/bankorgiroaccountNL.js
new file mode 100644
index 0000000..b224f45
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/bankorgiroaccountNL.js
@@ -0,0 +1,5 @@
+$.validator.addMethod( "bankorgiroaccountNL", function( value, element ) {
+ return this.optional( element ) ||
+ ( $.validator.methods.bankaccountNL.call( this, value, element ) ) ||
+ ( $.validator.methods.giroaccountNL.call( this, value, element ) );
+}, "Please specify a valid bank or giro account number" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/bic.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/bic.js
new file mode 100644
index 0000000..49f137f
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/bic.js
@@ -0,0 +1,18 @@
+/**
+ * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity.
+ *
+ * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)
+ *
+ * Validation is case-insensitive. Please make sure to normalize input yourself.
+ *
+ * BIC definition in detail:
+ * - First 4 characters - bank code (only letters)
+ * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)
+ * - Next 2 characters - location code (letters and digits)
+ * a. shall not start with '0' or '1'
+ * b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)
+ * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)
+ */
+$.validator.addMethod( "bic", function( value, element ) {
+ return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );
+}, "Please specify a valid BIC code" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/cifES.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/cifES.js
new file mode 100644
index 0000000..b66a9c2
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/cifES.js
@@ -0,0 +1,61 @@
+/*
+ * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities
+ * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal
+ */
+$.validator.addMethod( "cifES", function( value ) {
+ "use strict";
+
+ var num = [],
+ controlDigit, sum, i, count, tmp, secondDigit;
+
+ value = value.toUpperCase();
+
+ // Quick format test
+ if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
+ return false;
+ }
+
+ for ( i = 0; i < 9; i++ ) {
+ num[ i ] = parseInt( value.charAt( i ), 10 );
+ }
+
+ // Algorithm for checking CIF codes
+ sum = num[ 2 ] + num[ 4 ] + num[ 6 ];
+ for ( count = 1; count < 8; count += 2 ) {
+ tmp = ( 2 * num[ count ] ).toString();
+ secondDigit = tmp.charAt( 1 );
+
+ sum += parseInt( tmp.charAt( 0 ), 10 ) + ( secondDigit === "" ? 0 : parseInt( secondDigit, 10 ) );
+ }
+
+ /* The first (position 1) is a letter following the following criteria:
+ * A. Corporations
+ * B. LLCs
+ * C. General partnerships
+ * D. Companies limited partnerships
+ * E. Communities of goods
+ * F. Cooperative Societies
+ * G. Associations
+ * H. Communities of homeowners in horizontal property regime
+ * J. Civil Societies
+ * K. Old format
+ * L. Old format
+ * M. Old format
+ * N. Nonresident entities
+ * P. Local authorities
+ * Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions
+ * R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008)
+ * S. Organs of State Administration and regions
+ * V. Agrarian Transformation
+ * W. Permanent establishments of non-resident in Spain
+ */
+ if ( /^[ABCDEFGHJNPQRSUVW]{1}/.test( value ) ) {
+ sum += "";
+ controlDigit = 10 - parseInt( sum.charAt( sum.length - 1 ), 10 );
+ value += controlDigit;
+ return ( num[ 8 ].toString() === String.fromCharCode( 64 + controlDigit ) || num[ 8 ].toString() === value.charAt( value.length - 1 ) );
+ }
+
+ return false;
+
+}, "Please specify a valid CIF number." );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/cpfBR.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/cpfBR.js
new file mode 100644
index 0000000..37f083e
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/cpfBR.js
@@ -0,0 +1,60 @@
+/*
+ * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number.
+ * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.
+ */
+$.validator.addMethod( "cpfBR", function( value ) {
+
+ // Removing special characters from value
+ value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );
+
+ // Checking value to have 11 digits only
+ if ( value.length !== 11 ) {
+ return false;
+ }
+
+ var sum = 0,
+ firstCN, secondCN, checkResult, i;
+
+ firstCN = parseInt( value.substring( 9, 10 ), 10 );
+ secondCN = parseInt( value.substring( 10, 11 ), 10 );
+
+ checkResult = function( sum, cn ) {
+ var result = ( sum * 10 ) % 11;
+ if ( ( result === 10 ) || ( result === 11 ) ) {
+ result = 0;
+ }
+ return ( result === cn );
+ };
+
+ // Checking for dump data
+ if ( value === "" ||
+ value === "00000000000" ||
+ value === "11111111111" ||
+ value === "22222222222" ||
+ value === "33333333333" ||
+ value === "44444444444" ||
+ value === "55555555555" ||
+ value === "66666666666" ||
+ value === "77777777777" ||
+ value === "88888888888" ||
+ value === "99999999999"
+ ) {
+ return false;
+ }
+
+ // Step 1 - using first Check Number:
+ for ( i = 1; i <= 9; i++ ) {
+ sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 11 - i );
+ }
+
+ // If first Check Number (CN) is valid, move to Step 2 - using second Check Number:
+ if ( checkResult( sum, firstCN ) ) {
+ sum = 0;
+ for ( i = 1; i <= 10; i++ ) {
+ sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 12 - i );
+ }
+ return checkResult( sum, secondCN );
+ }
+ return false;
+
+}, "Please specify a valid CPF number" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/creditcard.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/creditcard.js
new file mode 100644
index 0000000..ce7febb
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/creditcard.js
@@ -0,0 +1,40 @@
+// http://jqueryvalidation.org/creditcard-method/
+// based on http://en.wikipedia.org/wiki/Luhn_algorithm
+$.validator.addMethod( "creditcard", function( value, element ) {
+ if ( this.optional( element ) ) {
+ return "dependency-mismatch";
+ }
+
+ // Accept only spaces, digits and dashes
+ if ( /[^0-9 \-]+/.test( value ) ) {
+ return false;
+ }
+
+ var nCheck = 0,
+ nDigit = 0,
+ bEven = false,
+ n, cDigit;
+
+ value = value.replace( /\D/g, "" );
+
+ // Basing min and max length on
+ // http://developer.ean.com/general_info/Valid_Credit_Card_Types
+ if ( value.length < 13 || value.length > 19 ) {
+ return false;
+ }
+
+ for ( n = value.length - 1; n >= 0; n-- ) {
+ cDigit = value.charAt( n );
+ nDigit = parseInt( cDigit, 10 );
+ if ( bEven ) {
+ if ( ( nDigit *= 2 ) > 9 ) {
+ nDigit -= 9;
+ }
+ }
+
+ nCheck += nDigit;
+ bEven = !bEven;
+ }
+
+ return ( nCheck % 10 ) === 0;
+}, "Please enter a valid credit card number." );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/creditcardtypes.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/creditcardtypes.js
new file mode 100644
index 0000000..2a61e6a
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/creditcardtypes.js
@@ -0,0 +1,69 @@
+/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
+ * Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
+ * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
+ */
+$.validator.addMethod( "creditcardtypes", function( value, element, param ) {
+ if ( /[^0-9\-]+/.test( value ) ) {
+ return false;
+ }
+
+ value = value.replace( /\D/g, "" );
+
+ var validTypes = 0x0000;
+
+ if ( param.mastercard ) {
+ validTypes |= 0x0001;
+ }
+ if ( param.visa ) {
+ validTypes |= 0x0002;
+ }
+ if ( param.amex ) {
+ validTypes |= 0x0004;
+ }
+ if ( param.dinersclub ) {
+ validTypes |= 0x0008;
+ }
+ if ( param.enroute ) {
+ validTypes |= 0x0010;
+ }
+ if ( param.discover ) {
+ validTypes |= 0x0020;
+ }
+ if ( param.jcb ) {
+ validTypes |= 0x0040;
+ }
+ if ( param.unknown ) {
+ validTypes |= 0x0080;
+ }
+ if ( param.all ) {
+ validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
+ }
+ if ( validTypes & 0x0001 && /^(5[12345])/.test( value ) ) { // Mastercard
+ return value.length === 16;
+ }
+ if ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa
+ return value.length === 16;
+ }
+ if ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex
+ return value.length === 15;
+ }
+ if ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub
+ return value.length === 14;
+ }
+ if ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute
+ return value.length === 15;
+ }
+ if ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover
+ return value.length === 16;
+ }
+ if ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb
+ return value.length === 16;
+ }
+ if ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb
+ return value.length === 15;
+ }
+ if ( validTypes & 0x0080 ) { // Unknown
+ return true;
+ }
+ return false;
+}, "Please enter a valid credit card number." );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/currency.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/currency.js
new file mode 100644
index 0000000..76197df
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/currency.js
@@ -0,0 +1,41 @@
+/**
+ * Validates currencies with any given symbols by @jameslouiz
+ * Symbols can be optional or required. Symbols required by default
+ *
+ * Usage examples:
+ * currency: ["£", false] - Use false for soft currency validation
+ * currency: ["$", false]
+ * currency: ["RM", false] - also works with text based symbols such as "RM" - Malaysia Ringgit etc
+ *
+ *
+ *
+ * Soft symbol checking
+ * currencyInput: {
+ * currency: ["$", false]
+ * }
+ *
+ * Strict symbol checking (default)
+ * currencyInput: {
+ * currency: "$"
+ * //OR
+ * currency: ["$", true]
+ * }
+ *
+ * Multiple Symbols
+ * currencyInput: {
+ * currency: "$,£,¢"
+ * }
+ */
+$.validator.addMethod( "currency", function( value, element, param ) {
+ var isParamString = typeof param === "string",
+ symbol = isParamString ? param : param[ 0 ],
+ soft = isParamString ? true : param[ 1 ],
+ regex;
+
+ symbol = symbol.replace( /,/g, "" );
+ symbol = soft ? symbol + "]" : symbol + "]?";
+ regex = "^[" + symbol + "([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$";
+ regex = new RegExp( regex );
+ return this.optional( element ) || regex.test( value );
+
+}, "Please specify a valid currency" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/dateFA.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/dateFA.js
new file mode 100644
index 0000000..22baa88
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/dateFA.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "dateFA", function( value, element ) {
+ return this.optional( element ) || /^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value );
+}, $.validator.messages.date );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/dateITA.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/dateITA.js
new file mode 100644
index 0000000..29c40b1
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/dateITA.js
@@ -0,0 +1,39 @@
+/**
+ * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
+ *
+ * @example $.validator.methods.date("01/01/1900")
+ * @result true
+ *
+ * @example $.validator.methods.date("01/13/1990")
+ * @result false
+ *
+ * @example $.validator.methods.date("01.01.1900")
+ * @result false
+ *
+ * @example
+ * @desc Declares an optional input element whose value must be a valid date.
+ *
+ * @name $.validator.methods.dateITA
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+$.validator.addMethod( "dateITA", function( value, element ) {
+ var check = false,
+ re = /^\d{1,2}\/\d{1,2}\/\d{4}$/,
+ adata, gg, mm, aaaa, xdata;
+ if ( re.test( value ) ) {
+ adata = value.split( "/" );
+ gg = parseInt( adata[ 0 ], 10 );
+ mm = parseInt( adata[ 1 ], 10 );
+ aaaa = parseInt( adata[ 2 ], 10 );
+ xdata = new Date( Date.UTC( aaaa, mm - 1, gg, 12, 0, 0, 0 ) );
+ if ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth() === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) {
+ check = true;
+ } else {
+ check = false;
+ }
+ } else {
+ check = false;
+ }
+ return this.optional( element ) || check;
+}, $.validator.messages.date );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/dateNL.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/dateNL.js
new file mode 100644
index 0000000..cf650bc
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/dateNL.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "dateNL", function( value, element ) {
+ return this.optional( element ) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test( value );
+}, $.validator.messages.date );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/extension.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/extension.js
new file mode 100644
index 0000000..4903875
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/extension.js
@@ -0,0 +1,5 @@
+// Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept
+$.validator.addMethod( "extension", function( value, element, param ) {
+ param = typeof param === "string" ? param.replace( /,/g, "|" ) : "png|jpe?g|gif";
+ return this.optional( element ) || value.match( new RegExp( "\\.(" + param + ")$", "i" ) );
+}, $.validator.format( "Please enter a value with a valid extension." ) );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/giroaccountNL.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/giroaccountNL.js
new file mode 100644
index 0000000..0cfd04c
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/giroaccountNL.js
@@ -0,0 +1,6 @@
+/**
+ * Dutch giro account numbers (not bank numbers) have max 7 digits
+ */
+$.validator.addMethod( "giroaccountNL", function( value, element ) {
+ return this.optional( element ) || /^[0-9]{1,7}$/.test( value );
+}, "Please specify a valid giro account number" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/iban.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/iban.js
new file mode 100644
index 0000000..54d6641
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/iban.js
@@ -0,0 +1,126 @@
+/**
+ * IBAN is the international bank account number.
+ * It has a country - specific format, that is checked here too
+ *
+ * Validation is case-insensitive. Please make sure to normalize input yourself.
+ */
+$.validator.addMethod( "iban", function( value, element ) {
+
+ // Some quick simple tests to prevent needless work
+ if ( this.optional( element ) ) {
+ return true;
+ }
+
+ // Remove spaces and to upper case
+ var iban = value.replace( / /g, "" ).toUpperCase(),
+ ibancheckdigits = "",
+ leadingZeroes = true,
+ cRest = "",
+ cOperator = "",
+ countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;
+
+ // Check the country code and find the country specific format
+ countrycode = iban.substring( 0, 2 );
+ bbancountrypatterns = {
+ "AL": "\\d{8}[\\dA-Z]{16}",
+ "AD": "\\d{8}[\\dA-Z]{12}",
+ "AT": "\\d{16}",
+ "AZ": "[\\dA-Z]{4}\\d{20}",
+ "BE": "\\d{12}",
+ "BH": "[A-Z]{4}[\\dA-Z]{14}",
+ "BA": "\\d{16}",
+ "BR": "\\d{23}[A-Z][\\dA-Z]",
+ "BG": "[A-Z]{4}\\d{6}[\\dA-Z]{8}",
+ "CR": "\\d{17}",
+ "HR": "\\d{17}",
+ "CY": "\\d{8}[\\dA-Z]{16}",
+ "CZ": "\\d{20}",
+ "DK": "\\d{14}",
+ "DO": "[A-Z]{4}\\d{20}",
+ "EE": "\\d{16}",
+ "FO": "\\d{14}",
+ "FI": "\\d{14}",
+ "FR": "\\d{10}[\\dA-Z]{11}\\d{2}",
+ "GE": "[\\dA-Z]{2}\\d{16}",
+ "DE": "\\d{18}",
+ "GI": "[A-Z]{4}[\\dA-Z]{15}",
+ "GR": "\\d{7}[\\dA-Z]{16}",
+ "GL": "\\d{14}",
+ "GT": "[\\dA-Z]{4}[\\dA-Z]{20}",
+ "HU": "\\d{24}",
+ "IS": "\\d{22}",
+ "IE": "[\\dA-Z]{4}\\d{14}",
+ "IL": "\\d{19}",
+ "IT": "[A-Z]\\d{10}[\\dA-Z]{12}",
+ "KZ": "\\d{3}[\\dA-Z]{13}",
+ "KW": "[A-Z]{4}[\\dA-Z]{22}",
+ "LV": "[A-Z]{4}[\\dA-Z]{13}",
+ "LB": "\\d{4}[\\dA-Z]{20}",
+ "LI": "\\d{5}[\\dA-Z]{12}",
+ "LT": "\\d{16}",
+ "LU": "\\d{3}[\\dA-Z]{13}",
+ "MK": "\\d{3}[\\dA-Z]{10}\\d{2}",
+ "MT": "[A-Z]{4}\\d{5}[\\dA-Z]{18}",
+ "MR": "\\d{23}",
+ "MU": "[A-Z]{4}\\d{19}[A-Z]{3}",
+ "MC": "\\d{10}[\\dA-Z]{11}\\d{2}",
+ "MD": "[\\dA-Z]{2}\\d{18}",
+ "ME": "\\d{18}",
+ "NL": "[A-Z]{4}\\d{10}",
+ "NO": "\\d{11}",
+ "PK": "[\\dA-Z]{4}\\d{16}",
+ "PS": "[\\dA-Z]{4}\\d{21}",
+ "PL": "\\d{24}",
+ "PT": "\\d{21}",
+ "RO": "[A-Z]{4}[\\dA-Z]{16}",
+ "SM": "[A-Z]\\d{10}[\\dA-Z]{12}",
+ "SA": "\\d{2}[\\dA-Z]{18}",
+ "RS": "\\d{18}",
+ "SK": "\\d{20}",
+ "SI": "\\d{15}",
+ "ES": "\\d{20}",
+ "SE": "\\d{20}",
+ "CH": "\\d{5}[\\dA-Z]{12}",
+ "TN": "\\d{20}",
+ "TR": "\\d{5}[\\dA-Z]{17}",
+ "AE": "\\d{3}\\d{16}",
+ "GB": "[A-Z]{4}\\d{14}",
+ "VG": "[\\dA-Z]{4}\\d{16}"
+ };
+
+ bbanpattern = bbancountrypatterns[ countrycode ];
+
+ // As new countries will start using IBAN in the
+ // future, we only check if the countrycode is known.
+ // This prevents false negatives, while almost all
+ // false positives introduced by this, will be caught
+ // by the checksum validation below anyway.
+ // Strict checking should return FALSE for unknown
+ // countries.
+ if ( typeof bbanpattern !== "undefined" ) {
+ ibanregexp = new RegExp( "^[A-Z]{2}\\d{2}" + bbanpattern + "$", "" );
+ if ( !( ibanregexp.test( iban ) ) ) {
+ return false; // Invalid country specific format
+ }
+ }
+
+ // Now check the checksum, first convert to digits
+ ibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 );
+ for ( i = 0; i < ibancheck.length; i++ ) {
+ charAt = ibancheck.charAt( i );
+ if ( charAt !== "0" ) {
+ leadingZeroes = false;
+ }
+ if ( !leadingZeroes ) {
+ ibancheckdigits += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf( charAt );
+ }
+ }
+
+ // Calculate the result of: ibancheckdigits % 97
+ for ( p = 0; p < ibancheckdigits.length; p++ ) {
+ cChar = ibancheckdigits.charAt( p );
+ cOperator = "" + cRest + "" + cChar;
+ cRest = cOperator % 97;
+ }
+ return cRest === 1;
+}, "Please specify a valid IBAN" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/integer.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/integer.js
new file mode 100644
index 0000000..779431d
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/integer.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "integer", function( value, element ) {
+ return this.optional( element ) || /^-?\d+$/.test( value );
+}, "A positive or negative non-decimal number please" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/ipv4.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/ipv4.js
new file mode 100644
index 0000000..2ddefc9
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/ipv4.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "ipv4", function( value, element ) {
+ return this.optional( element ) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test( value );
+}, "Please enter a valid IP v4 address." );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/ipv6.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/ipv6.js
new file mode 100644
index 0000000..3351d4d
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/ipv6.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "ipv6", function( value, element ) {
+ return this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value );
+}, "Please enter a valid IP v6 address." );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/lettersonly.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/lettersonly.js
new file mode 100644
index 0000000..893b487
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/lettersonly.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "lettersonly", function( value, element ) {
+ return this.optional( element ) || /^[a-z]+$/i.test( value );
+}, "Letters only please" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/letterswithbasicpunc.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/letterswithbasicpunc.js
new file mode 100644
index 0000000..9bbb4d9
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/letterswithbasicpunc.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "letterswithbasicpunc", function( value, element ) {
+ return this.optional( element ) || /^[a-z\-.,()'"\s]+$/i.test( value );
+}, "Letters or punctuation only please" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/mobileNL.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/mobileNL.js
new file mode 100644
index 0000000..3f1f45a
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/mobileNL.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "mobileNL", function( value, element ) {
+ return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
+}, "Please specify a valid mobile number" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/mobileUK.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/mobileUK.js
new file mode 100644
index 0000000..e1c5ce3
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/mobileUK.js
@@ -0,0 +1,13 @@
+/* For UK phone functions, do the following server side processing:
+ * Compare original input with this RegEx pattern:
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
+ * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0'
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
+ */
+$.validator.addMethod( "mobileUK", function( phone_number, element ) {
+ phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
+ return this.optional( element ) || phone_number.length > 9 &&
+ phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/ );
+}, "Please specify a valid mobile number" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/nieES.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/nieES.js
new file mode 100644
index 0000000..254c0da
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/nieES.js
@@ -0,0 +1,34 @@
+/*
+ * The número de identidad de extranjero ( NIE )is a code used to identify the non-nationals in Spain
+ */
+$.validator.addMethod( "nieES", function( value ) {
+ "use strict";
+
+ value = value.toUpperCase();
+
+ // Basic format test
+ if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
+ return false;
+ }
+
+ // Test NIE
+ //T
+ if ( /^[T]{1}/.test( value ) ) {
+ return ( value[ 8 ] === /^[T]{1}[A-Z0-9]{8}$/.test( value ) );
+ }
+
+ //XYZ
+ if ( /^[XYZ]{1}/.test( value ) ) {
+ return (
+ value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt(
+ value.replace( "X", "0" )
+ .replace( "Y", "1" )
+ .replace( "Z", "2" )
+ .substring( 0, 8 ) % 23
+ )
+ );
+ }
+
+ return false;
+
+}, "Please specify a valid NIE number." );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/nifES.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/nifES.js
new file mode 100644
index 0000000..64686b6
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/nifES.js
@@ -0,0 +1,26 @@
+/*
+ * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals
+ */
+$.validator.addMethod( "nifES", function( value ) {
+ "use strict";
+
+ value = value.toUpperCase();
+
+ // Basic format test
+ if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
+ return false;
+ }
+
+ // Test NIF
+ if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {
+ return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );
+ }
+
+ // Test specials NIF (starts with K, L or M)
+ if ( /^[KLM]{1}/.test( value ) ) {
+ return ( value[ 8 ] === String.fromCharCode( 64 ) );
+ }
+
+ return false;
+
+}, "Please specify a valid NIF number." );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/notEqualTo.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/notEqualTo.js
new file mode 100644
index 0000000..a99e4df
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/notEqualTo.js
@@ -0,0 +1,3 @@
+jQuery.validator.addMethod( "notEqualTo", function( value, element, param ) {
+ return this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );
+}, "Please enter a different value, values must not be the same." );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/nowhitespace.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/nowhitespace.js
new file mode 100644
index 0000000..7f6c3bd
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/nowhitespace.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "nowhitespace", function( value, element ) {
+ return this.optional( element ) || /^\S+$/i.test( value );
+}, "No white space please" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/pattern.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/pattern.js
new file mode 100644
index 0000000..0d9de75
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/pattern.js
@@ -0,0 +1,22 @@
+/**
+* Return true if the field value matches the given format RegExp
+*
+* @example $.validator.methods.pattern("AR1004",element,/^AR\d{4}$/)
+* @result true
+*
+* @example $.validator.methods.pattern("BR1004",element,/^AR\d{4}$/)
+* @result false
+*
+* @name $.validator.methods.pattern
+* @type Boolean
+* @cat Plugins/Validate/Methods
+*/
+$.validator.addMethod( "pattern", function( value, element, param ) {
+ if ( this.optional( element ) ) {
+ return true;
+ }
+ if ( typeof param === "string" ) {
+ param = new RegExp( "^(?:" + param + ")$" );
+ }
+ return param.test( value );
+}, "Invalid format." );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/phoneNL.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/phoneNL.js
new file mode 100644
index 0000000..f7febbe
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/phoneNL.js
@@ -0,0 +1,6 @@
+/**
+ * Dutch phone numbers have 10 digits (or 11 and start with +31).
+ */
+$.validator.addMethod( "phoneNL", function( value, element ) {
+ return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
+}, "Please specify a valid phone number." );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/phoneUK.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/phoneUK.js
new file mode 100644
index 0000000..b97866f
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/phoneUK.js
@@ -0,0 +1,13 @@
+/* For UK phone functions, do the following server side processing:
+ * Compare original input with this RegEx pattern:
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
+ * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0'
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
+ */
+$.validator.addMethod( "phoneUK", function( phone_number, element ) {
+ phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
+ return this.optional( element ) || phone_number.length > 9 &&
+ phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/ );
+}, "Please specify a valid phone number" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/phoneUS.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/phoneUS.js
new file mode 100644
index 0000000..fed8ac3
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/phoneUS.js
@@ -0,0 +1,21 @@
+/**
+ * Matches US phone number format
+ *
+ * where the area code may not start with 1 and the prefix may not start with 1
+ * allows '-' or ' ' as a separator and allows parens around area code
+ * some people may want to put a '1' in front of their number
+ *
+ * 1(212)-999-2345 or
+ * 212 999 2344 or
+ * 212-999-0983
+ *
+ * but not
+ * 111-123-5434
+ * and not
+ * 212 123 4567
+ */
+$.validator.addMethod( "phoneUS", function( phone_number, element ) {
+ phone_number = phone_number.replace( /\s+/g, "" );
+ return this.optional( element ) || phone_number.length > 9 &&
+ phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/ );
+}, "Please specify a valid phone number" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/phonesUK.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/phonesUK.js
new file mode 100644
index 0000000..fa04167
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/phonesUK.js
@@ -0,0 +1,15 @@
+/* For UK phone functions, do the following server side processing:
+ * Compare original input with this RegEx pattern:
+ * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
+ * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0'
+ * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
+ * A number of very detailed GB telephone number RegEx patterns can also be found at:
+ * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
+ */
+
+// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
+$.validator.addMethod( "phonesUK", function( phone_number, element ) {
+ phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
+ return this.optional( element ) || phone_number.length > 9 &&
+ phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/ );
+}, "Please specify a valid uk phone number" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postalCodeCA.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postalCodeCA.js
new file mode 100644
index 0000000..ba3bb4a
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postalCodeCA.js
@@ -0,0 +1,16 @@
+/**
+ * Matches a valid Canadian Postal Code
+ *
+ * @example jQuery.validator.methods.postalCodeCA( "H0H 0H0", element )
+ * @result true
+ *
+ * @example jQuery.validator.methods.postalCodeCA( "H0H0H0", element )
+ * @result false
+ *
+ * @name jQuery.validator.methods.postalCodeCA
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+$.validator.addMethod( "postalCodeCA", function( value, element ) {
+ return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test( value );
+}, "Please specify a valid postal code" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postalcodeBR.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postalcodeBR.js
new file mode 100644
index 0000000..609f21b
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postalcodeBR.js
@@ -0,0 +1,11 @@
+/*
+* Valida CEPs do brasileiros:
+*
+* Formatos aceitos:
+* 99999-999
+* 99.999-999
+* 99999999
+*/
+$.validator.addMethod( "postalcodeBR", function( cep_value, element ) {
+ return this.optional( element ) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value );
+}, "Informe um CEP válido." );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postalcodeIT.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postalcodeIT.js
new file mode 100644
index 0000000..38ea89d
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postalcodeIT.js
@@ -0,0 +1,4 @@
+/* Matches Italian postcode (CAP) */
+$.validator.addMethod( "postalcodeIT", function( value, element ) {
+ return this.optional( element ) || /^\d{5}$/.test( value );
+}, "Please specify a valid postal code" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postalcodeNL.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postalcodeNL.js
new file mode 100644
index 0000000..38a5476
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postalcodeNL.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "postalcodeNL", function( value, element ) {
+ return this.optional( element ) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test( value );
+}, "Please specify a valid postal code" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postcodeUK.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postcodeUK.js
new file mode 100644
index 0000000..26a4743
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/postcodeUK.js
@@ -0,0 +1,4 @@
+// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK)
+$.validator.addMethod( "postcodeUK", function( value, element ) {
+ return this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test( value );
+}, "Please specify a valid UK postcode" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/require_from_group.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/require_from_group.js
new file mode 100644
index 0000000..c80d833
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/require_from_group.js
@@ -0,0 +1,37 @@
+/*
+ * Lets you say "at least X inputs that match selector Y must be filled."
+ *
+ * The end result is that neither of these inputs:
+ *
+ *
+ *
+ *
+ * ...will validate unless at least one of them is filled.
+ *
+ * partnumber: {require_from_group: [1,".productinfo"]},
+ * description: {require_from_group: [1,".productinfo"]}
+ *
+ * options[0]: number of fields that must be filled in the group
+ * options[1]: CSS selector that defines the group of conditionally required fields
+ */
+$.validator.addMethod( "require_from_group", function( value, element, options ) {
+ var $fields = $( options[ 1 ], element.form ),
+ $fieldsFirst = $fields.eq( 0 ),
+ validator = $fieldsFirst.data( "valid_req_grp" ) ? $fieldsFirst.data( "valid_req_grp" ) : $.extend( {}, this ),
+ isValid = $fields.filter( function() {
+ return validator.elementValue( this );
+ } ).length >= options[ 0 ];
+
+ // Store the cloned validator for future validation
+ $fieldsFirst.data( "valid_req_grp", validator );
+
+ // If element isn't being validated, run each require_from_group field's validation rules
+ if ( !$( element ).data( "being_validated" ) ) {
+ $fields.data( "being_validated", true );
+ $fields.each( function() {
+ validator.element( this );
+ } );
+ $fields.data( "being_validated", false );
+ }
+ return isValid;
+}, $.validator.format( "Please fill at least {0} of these fields." ) );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/skip_or_fill_minimum.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/skip_or_fill_minimum.js
new file mode 100644
index 0000000..73bb6b5
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/skip_or_fill_minimum.js
@@ -0,0 +1,43 @@
+/*
+ * Lets you say "either at least X inputs that match selector Y must be filled,
+ * OR they must all be skipped (left blank)."
+ *
+ * The end result, is that none of these inputs:
+ *
+ *
+ *
+ *
+ *
+ * ...will validate unless either at least two of them are filled,
+ * OR none of them are.
+ *
+ * partnumber: {skip_or_fill_minimum: [2,".productinfo"]},
+ * description: {skip_or_fill_minimum: [2,".productinfo"]},
+ * color: {skip_or_fill_minimum: [2,".productinfo"]}
+ *
+ * options[0]: number of fields that must be filled in the group
+ * options[1]: CSS selector that defines the group of conditionally required fields
+ *
+ */
+$.validator.addMethod( "skip_or_fill_minimum", function( value, element, options ) {
+ var $fields = $( options[ 1 ], element.form ),
+ $fieldsFirst = $fields.eq( 0 ),
+ validator = $fieldsFirst.data( "valid_skip" ) ? $fieldsFirst.data( "valid_skip" ) : $.extend( {}, this ),
+ numberFilled = $fields.filter( function() {
+ return validator.elementValue( this );
+ } ).length,
+ isValid = numberFilled === 0 || numberFilled >= options[ 0 ];
+
+ // Store the cloned validator for future validation
+ $fieldsFirst.data( "valid_skip", validator );
+
+ // If element isn't being validated, run each skip_or_fill_minimum field's validation rules
+ if ( !$( element ).data( "being_validated" ) ) {
+ $fields.data( "being_validated", true );
+ $fields.each( function() {
+ validator.element( this );
+ } );
+ $fields.data( "being_validated", false );
+ }
+ return isValid;
+}, $.validator.format( "Please either skip these fields or fill at least {0} of them." ) );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/statesUS.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/statesUS.js
new file mode 100644
index 0000000..015894f
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/statesUS.js
@@ -0,0 +1,54 @@
+/* Validates US States and/or Territories by @jdforsythe
+ * Can be case insensitive or require capitalization - default is case insensitive
+ * Can include US Territories or not - default does not
+ * Can include US Military postal abbreviations (AA, AE, AP) - default does not
+ *
+ * Note: "States" always includes DC (District of Colombia)
+ *
+ * Usage examples:
+ *
+ * This is the default - case insensitive, no territories, no military zones
+ * stateInput: {
+ * caseSensitive: false,
+ * includeTerritories: false,
+ * includeMilitary: false
+ * }
+ *
+ * Only allow capital letters, no territories, no military zones
+ * stateInput: {
+ * caseSensitive: false
+ * }
+ *
+ * Case insensitive, include territories but not military zones
+ * stateInput: {
+ * includeTerritories: true
+ * }
+ *
+ * Only allow capital letters, include territories and military zones
+ * stateInput: {
+ * caseSensitive: true,
+ * includeTerritories: true,
+ * includeMilitary: true
+ * }
+ *
+ */
+$.validator.addMethod( "stateUS", function( value, element, options ) {
+ var isDefault = typeof options === "undefined",
+ caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive,
+ includeTerritories = ( isDefault || typeof options.includeTerritories === "undefined" ) ? false : options.includeTerritories,
+ includeMilitary = ( isDefault || typeof options.includeMilitary === "undefined" ) ? false : options.includeMilitary,
+ regex;
+
+ if ( !includeTerritories && !includeMilitary ) {
+ regex = "^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
+ } else if ( includeTerritories && includeMilitary ) {
+ regex = "^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
+ } else if ( includeTerritories ) {
+ regex = "^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
+ } else {
+ regex = "^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
+ }
+
+ regex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, "i" );
+ return this.optional( element ) || regex.test( value );
+}, "Please specify a valid state" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/strippedminlength.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/strippedminlength.js
new file mode 100644
index 0000000..e5bf734
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/strippedminlength.js
@@ -0,0 +1,4 @@
+// TODO check if value starts with <, otherwise don't try stripping anything
+$.validator.addMethod( "strippedminlength", function( value, element, param ) {
+ return $( value ).text().length >= param;
+}, $.validator.format( "Please enter at least {0} characters" ) );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/time.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/time.js
new file mode 100644
index 0000000..2bcbce1
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/time.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "time", function( value, element ) {
+ return this.optional( element ) || /^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test( value );
+}, "Please enter a valid time, between 00:00 and 23:59" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/time12h.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/time12h.js
new file mode 100644
index 0000000..fcd3fa2
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/time12h.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "time12h", function( value, element ) {
+ return this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test( value );
+}, "Please enter a valid time in 12-hour am/pm format" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/url2.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/url2.js
new file mode 100644
index 0000000..2baaf61
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/url2.js
@@ -0,0 +1,4 @@
+// Same as url, but TLD is optional
+$.validator.addMethod( "url2", function( value, element ) {
+ return this.optional( element ) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value );
+}, $.validator.messages.url );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/vinUS.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/vinUS.js
new file mode 100644
index 0000000..15460d7
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/vinUS.js
@@ -0,0 +1,54 @@
+/**
+ * Return true, if the value is a valid vehicle identification number (VIN).
+ *
+ * Works with all kind of text inputs.
+ *
+ * @example
+ * @desc Declares a required input element whose value must be a valid vehicle identification number.
+ *
+ * @name $.validator.methods.vinUS
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+$.validator.addMethod( "vinUS", function( v ) {
+ if ( v.length !== 17 ) {
+ return false;
+ }
+
+ var LL = [ "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ],
+ VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ],
+ FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ],
+ rs = 0,
+ i, n, d, f, cd, cdv;
+
+ for ( i = 0; i < 17; i++ ) {
+ f = FL[ i ];
+ d = v.slice( i, i + 1 );
+ if ( i === 8 ) {
+ cdv = d;
+ }
+ if ( !isNaN( d ) ) {
+ d *= f;
+ } else {
+ for ( n = 0; n < LL.length; n++ ) {
+ if ( d.toUpperCase() === LL[ n ] ) {
+ d = VL[ n ];
+ d *= f;
+ if ( isNaN( cdv ) && n === 8 ) {
+ cdv = LL[ n ];
+ }
+ break;
+ }
+ }
+ }
+ rs += d;
+ }
+ cd = rs % 11;
+ if ( cd === 10 ) {
+ cd = "X";
+ }
+ if ( cd === cdv ) {
+ return true;
+ }
+ return false;
+}, "The specified vehicle identification number (VIN) is invalid." );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/zipcodeUS.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/zipcodeUS.js
new file mode 100644
index 0000000..8d52ac0
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/zipcodeUS.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "zipcodeUS", function( value, element ) {
+ return this.optional( element ) || /^\d{5}(-\d{4})?$/.test( value );
+}, "The specified US ZIP Code is invalid" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/ziprange.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/ziprange.js
new file mode 100644
index 0000000..48dc683
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/additional/ziprange.js
@@ -0,0 +1,3 @@
+$.validator.addMethod( "ziprange", function( value, element ) {
+ return this.optional( element ) || /^90[2-5]\d\{2\}-\d{4}$/.test( value );
+}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx" );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/ajax.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/ajax.js
new file mode 100644
index 0000000..fb56de4
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/ajax.js
@@ -0,0 +1,35 @@
+// Ajax mode: abort
+// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
+// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
+
+var pendingRequests = {},
+ ajax;
+
+// Use a prefilter if available (1.5+)
+if ( $.ajaxPrefilter ) {
+ $.ajaxPrefilter( function( settings, _, xhr ) {
+ var port = settings.port;
+ if ( settings.mode === "abort" ) {
+ if ( pendingRequests[ port ] ) {
+ pendingRequests[ port ].abort();
+ }
+ pendingRequests[ port ] = xhr;
+ }
+ } );
+} else {
+
+ // Proxy ajax
+ ajax = $.ajax;
+ $.ajax = function( settings ) {
+ var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
+ port = ( "port" in settings ? settings : $.ajaxSettings ).port;
+ if ( mode === "abort" ) {
+ if ( pendingRequests[ port ] ) {
+ pendingRequests[ port ].abort();
+ }
+ pendingRequests[ port ] = ajax.apply( this, arguments );
+ return pendingRequests[ port ];
+ }
+ return ajax.apply( this, arguments );
+ };
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/core.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/core.js
new file mode 100644
index 0000000..70a246a
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/core.js
@@ -0,0 +1,1476 @@
+$.extend( $.fn, {
+
+ // http://jqueryvalidation.org/validate/
+ validate: function( options ) {
+
+ // If nothing is selected, return nothing; can't chain anyway
+ if ( !this.length ) {
+ if ( options && options.debug && window.console ) {
+ console.warn( "Nothing selected, can't validate, returning nothing." );
+ }
+ return;
+ }
+
+ // Check if a validator for this form was already created
+ var validator = $.data( this[ 0 ], "validator" );
+ if ( validator ) {
+ return validator;
+ }
+
+ // Add novalidate tag if HTML5.
+ this.attr( "novalidate", "novalidate" );
+
+ validator = new $.validator( options, this[ 0 ] );
+ $.data( this[ 0 ], "validator", validator );
+
+ if ( validator.settings.onsubmit ) {
+
+ this.on( "click.validate", ":submit", function( event ) {
+ if ( validator.settings.submitHandler ) {
+ validator.submitButton = event.target;
+ }
+
+ // Allow suppressing validation by adding a cancel class to the submit button
+ if ( $( this ).hasClass( "cancel" ) ) {
+ validator.cancelSubmit = true;
+ }
+
+ // Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
+ if ( $( this ).attr( "formnovalidate" ) !== undefined ) {
+ validator.cancelSubmit = true;
+ }
+ } );
+
+ // Validate the form on submit
+ this.on( "submit.validate", function( event ) {
+ if ( validator.settings.debug ) {
+
+ // Prevent form submit to be able to see console output
+ event.preventDefault();
+ }
+ function handle() {
+ var hidden, result;
+ if ( validator.settings.submitHandler ) {
+ if ( validator.submitButton ) {
+
+ // Insert a hidden input as a replacement for the missing submit button
+ hidden = $( " " )
+ .attr( "name", validator.submitButton.name )
+ .val( $( validator.submitButton ).val() )
+ .appendTo( validator.currentForm );
+ }
+ result = validator.settings.submitHandler.call( validator, validator.currentForm, event );
+ if ( validator.submitButton ) {
+
+ // And clean up afterwards; thanks to no-block-scope, hidden can be referenced
+ hidden.remove();
+ }
+ if ( result !== undefined ) {
+ return result;
+ }
+ return false;
+ }
+ return true;
+ }
+
+ // Prevent submit for invalid forms or custom submit handlers
+ if ( validator.cancelSubmit ) {
+ validator.cancelSubmit = false;
+ return handle();
+ }
+ if ( validator.form() ) {
+ if ( validator.pendingRequest ) {
+ validator.formSubmitted = true;
+ return false;
+ }
+ return handle();
+ } else {
+ validator.focusInvalid();
+ return false;
+ }
+ } );
+ }
+
+ return validator;
+ },
+
+ // http://jqueryvalidation.org/valid/
+ valid: function() {
+ var valid, validator, errorList;
+
+ if ( $( this[ 0 ] ).is( "form" ) ) {
+ valid = this.validate().form();
+ } else {
+ errorList = [];
+ valid = true;
+ validator = $( this[ 0 ].form ).validate();
+ this.each( function() {
+ valid = validator.element( this ) && valid;
+ if ( !valid ) {
+ errorList = errorList.concat( validator.errorList );
+ }
+ } );
+ validator.errorList = errorList;
+ }
+ return valid;
+ },
+
+ // http://jqueryvalidation.org/rules/
+ rules: function( command, argument ) {
+
+ // If nothing is selected, return nothing; can't chain anyway
+ if ( !this.length ) {
+ return;
+ }
+
+ var element = this[ 0 ],
+ settings, staticRules, existingRules, data, param, filtered;
+
+ if ( command ) {
+ settings = $.data( element.form, "validator" ).settings;
+ staticRules = settings.rules;
+ existingRules = $.validator.staticRules( element );
+ switch ( command ) {
+ case "add":
+ $.extend( existingRules, $.validator.normalizeRule( argument ) );
+
+ // Remove messages from rules, but allow them to be set separately
+ delete existingRules.messages;
+ staticRules[ element.name ] = existingRules;
+ if ( argument.messages ) {
+ settings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );
+ }
+ break;
+ case "remove":
+ if ( !argument ) {
+ delete staticRules[ element.name ];
+ return existingRules;
+ }
+ filtered = {};
+ $.each( argument.split( /\s/ ), function( index, method ) {
+ filtered[ method ] = existingRules[ method ];
+ delete existingRules[ method ];
+ if ( method === "required" ) {
+ $( element ).removeAttr( "aria-required" );
+ }
+ } );
+ return filtered;
+ }
+ }
+
+ data = $.validator.normalizeRules(
+ $.extend(
+ {},
+ $.validator.classRules( element ),
+ $.validator.attributeRules( element ),
+ $.validator.dataRules( element ),
+ $.validator.staticRules( element )
+ ), element );
+
+ // Make sure required is at front
+ if ( data.required ) {
+ param = data.required;
+ delete data.required;
+ data = $.extend( { required: param }, data );
+ $( element ).attr( "aria-required", "true" );
+ }
+
+ // Make sure remote is at back
+ if ( data.remote ) {
+ param = data.remote;
+ delete data.remote;
+ data = $.extend( data, { remote: param } );
+ }
+
+ return data;
+ }
+} );
+
+// Custom selectors
+$.extend( $.expr[ ":" ], {
+
+ // http://jqueryvalidation.org/blank-selector/
+ blank: function( a ) {
+ return !$.trim( "" + $( a ).val() );
+ },
+
+ // http://jqueryvalidation.org/filled-selector/
+ filled: function( a ) {
+ var val = $( a ).val();
+ return val !== null && !!$.trim( "" + val );
+ },
+
+ // http://jqueryvalidation.org/unchecked-selector/
+ unchecked: function( a ) {
+ return !$( a ).prop( "checked" );
+ }
+} );
+
+// Constructor for validator
+$.validator = function( options, form ) {
+ this.settings = $.extend( true, {}, $.validator.defaults, options );
+ this.currentForm = form;
+ this.init();
+};
+
+// http://jqueryvalidation.org/jQuery.validator.format/
+$.validator.format = function( source, params ) {
+ if ( arguments.length === 1 ) {
+ return function() {
+ var args = $.makeArray( arguments );
+ args.unshift( source );
+ return $.validator.format.apply( this, args );
+ };
+ }
+ if ( params === undefined ) {
+ return source;
+ }
+ if ( arguments.length > 2 && params.constructor !== Array ) {
+ params = $.makeArray( arguments ).slice( 1 );
+ }
+ if ( params.constructor !== Array ) {
+ params = [ params ];
+ }
+ $.each( params, function( i, n ) {
+ source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
+ return n;
+ } );
+ } );
+ return source;
+};
+
+$.extend( $.validator, {
+
+ defaults: {
+ messages: {},
+ groups: {},
+ rules: {},
+ errorClass: "error",
+ pendingClass: "pending",
+ validClass: "valid",
+ errorElement: "label",
+ focusCleanup: false,
+ focusInvalid: true,
+ errorContainer: $( [] ),
+ errorLabelContainer: $( [] ),
+ onsubmit: true,
+ ignore: ":hidden",
+ ignoreTitle: false,
+ onfocusin: function( element ) {
+ this.lastActive = element;
+
+ // Hide error label and remove error class on focus if enabled
+ if ( this.settings.focusCleanup ) {
+ if ( this.settings.unhighlight ) {
+ this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
+ }
+ this.hideThese( this.errorsFor( element ) );
+ }
+ },
+ onfocusout: function( element ) {
+ if ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {
+ this.element( element );
+ }
+ },
+ onkeyup: function( element, event ) {
+
+ // Avoid revalidate the field when pressing one of the following keys
+ // Shift => 16
+ // Ctrl => 17
+ // Alt => 18
+ // Caps lock => 20
+ // End => 35
+ // Home => 36
+ // Left arrow => 37
+ // Up arrow => 38
+ // Right arrow => 39
+ // Down arrow => 40
+ // Insert => 45
+ // Num lock => 144
+ // AltGr key => 225
+ var excludedKeys = [
+ 16, 17, 18, 20, 35, 36, 37,
+ 38, 39, 40, 45, 144, 225
+ ];
+
+ if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {
+ return;
+ } else if ( element.name in this.submitted || element.name in this.invalid ) {
+ this.element( element );
+ }
+ },
+ onclick: function( element ) {
+
+ // Click on selects, radiobuttons and checkboxes
+ if ( element.name in this.submitted ) {
+ this.element( element );
+
+ // Or option elements, check parent select in that case
+ } else if ( element.parentNode.name in this.submitted ) {
+ this.element( element.parentNode );
+ }
+ },
+ highlight: function( element, errorClass, validClass ) {
+ if ( element.type === "radio" ) {
+ this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
+ } else {
+ $( element ).addClass( errorClass ).removeClass( validClass );
+ }
+ },
+ unhighlight: function( element, errorClass, validClass ) {
+ if ( element.type === "radio" ) {
+ this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
+ } else {
+ $( element ).removeClass( errorClass ).addClass( validClass );
+ }
+ }
+ },
+
+ // http://jqueryvalidation.org/jQuery.validator.setDefaults/
+ setDefaults: function( settings ) {
+ $.extend( $.validator.defaults, settings );
+ },
+
+ messages: {
+ required: "This field is required.",
+ remote: "Please fix this field.",
+ email: "Please enter a valid email address.",
+ url: "Please enter a valid URL.",
+ date: "Please enter a valid date.",
+ dateISO: "Please enter a valid date ( ISO ).",
+ number: "Please enter a valid number.",
+ digits: "Please enter only digits.",
+ equalTo: "Please enter the same value again.",
+ maxlength: $.validator.format( "Please enter no more than {0} characters." ),
+ minlength: $.validator.format( "Please enter at least {0} characters." ),
+ rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
+ range: $.validator.format( "Please enter a value between {0} and {1}." ),
+ max: $.validator.format( "Please enter a value less than or equal to {0}." ),
+ min: $.validator.format( "Please enter a value greater than or equal to {0}." ),
+ step: $.validator.format( "Please enter a multiple of {0}." )
+ },
+
+ autoCreateRanges: false,
+
+ prototype: {
+
+ init: function() {
+ this.labelContainer = $( this.settings.errorLabelContainer );
+ this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );
+ this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );
+ this.submitted = {};
+ this.valueCache = {};
+ this.pendingRequest = 0;
+ this.pending = {};
+ this.invalid = {};
+ this.reset();
+
+ var groups = ( this.groups = {} ),
+ rules;
+ $.each( this.settings.groups, function( key, value ) {
+ if ( typeof value === "string" ) {
+ value = value.split( /\s/ );
+ }
+ $.each( value, function( index, name ) {
+ groups[ name ] = key;
+ } );
+ } );
+ rules = this.settings.rules;
+ $.each( rules, function( key, value ) {
+ rules[ key ] = $.validator.normalizeRule( value );
+ } );
+
+ function delegate( event ) {
+ var validator = $.data( this.form, "validator" ),
+ eventType = "on" + event.type.replace( /^validate/, "" ),
+ settings = validator.settings;
+ if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {
+ settings[ eventType ].call( validator, this, event );
+ }
+ }
+
+ $( this.currentForm )
+ .on( "focusin.validate focusout.validate keyup.validate",
+ ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
+ "[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
+ "[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
+ "[type='radio'], [type='checkbox'], [contenteditable]", delegate )
+
+ // Support: Chrome, oldIE
+ // "select" is provided as event.target when clicking a option
+ .on( "click.validate", "select, option, [type='radio'], [type='checkbox']", delegate );
+
+ if ( this.settings.invalidHandler ) {
+ $( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler );
+ }
+
+ // Add aria-required to any Static/Data/Class required fields before first validation
+ // Screen readers require this attribute to be present before the initial submission http://www.w3.org/TR/WCAG-TECHS/ARIA2.html
+ $( this.currentForm ).find( "[required], [data-rule-required], .required" ).attr( "aria-required", "true" );
+ },
+
+ // http://jqueryvalidation.org/Validator.form/
+ form: function() {
+ this.checkForm();
+ $.extend( this.submitted, this.errorMap );
+ this.invalid = $.extend( {}, this.errorMap );
+ if ( !this.valid() ) {
+ $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
+ }
+ this.showErrors();
+ return this.valid();
+ },
+
+ checkForm: function() {
+ this.prepareForm();
+ for ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {
+ this.check( elements[ i ] );
+ }
+ return this.valid();
+ },
+
+ // http://jqueryvalidation.org/Validator.element/
+ element: function( element ) {
+ var cleanElement = this.clean( element ),
+ checkElement = this.validationTargetFor( cleanElement ),
+ v = this,
+ result = true,
+ rs, group;
+
+ if ( checkElement === undefined ) {
+ delete this.invalid[ cleanElement.name ];
+ } else {
+ this.prepareElement( checkElement );
+ this.currentElements = $( checkElement );
+
+ // If this element is grouped, then validate all group elements already
+ // containing a value
+ group = this.groups[ checkElement.name ];
+ if ( group ) {
+ $.each( this.groups, function( name, testgroup ) {
+ if ( testgroup === group && name !== checkElement.name ) {
+ cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );
+ if ( cleanElement && cleanElement.name in v.invalid ) {
+ v.currentElements.push( cleanElement );
+ result = result && v.check( cleanElement );
+ }
+ }
+ } );
+ }
+
+ rs = this.check( checkElement ) !== false;
+ result = result && rs;
+ if ( rs ) {
+ this.invalid[ checkElement.name ] = false;
+ } else {
+ this.invalid[ checkElement.name ] = true;
+ }
+
+ if ( !this.numberOfInvalids() ) {
+
+ // Hide error containers on last error
+ this.toHide = this.toHide.add( this.containers );
+ }
+ this.showErrors();
+
+ // Add aria-invalid status for screen readers
+ $( element ).attr( "aria-invalid", !rs );
+ }
+
+ return result;
+ },
+
+ // http://jqueryvalidation.org/Validator.showErrors/
+ showErrors: function( errors ) {
+ if ( errors ) {
+ var validator = this;
+
+ // Add items to error list and map
+ $.extend( this.errorMap, errors );
+ this.errorList = $.map( this.errorMap, function( message, name ) {
+ return {
+ message: message,
+ element: validator.findByName( name )[ 0 ]
+ };
+ } );
+
+ // Remove items from success list
+ this.successList = $.grep( this.successList, function( element ) {
+ return !( element.name in errors );
+ } );
+ }
+ if ( this.settings.showErrors ) {
+ this.settings.showErrors.call( this, this.errorMap, this.errorList );
+ } else {
+ this.defaultShowErrors();
+ }
+ },
+
+ // http://jqueryvalidation.org/Validator.resetForm/
+ resetForm: function() {
+ if ( $.fn.resetForm ) {
+ $( this.currentForm ).resetForm();
+ }
+ this.invalid = {};
+ this.submitted = {};
+ this.prepareForm();
+ this.hideErrors();
+ var elements = this.elements()
+ .removeData( "previousValue" )
+ .removeAttr( "aria-invalid" );
+
+ this.resetElements( elements );
+ },
+
+ resetElements: function( elements ) {
+ var i;
+
+ if ( this.settings.unhighlight ) {
+ for ( i = 0; elements[ i ]; i++ ) {
+ this.settings.unhighlight.call( this, elements[ i ],
+ this.settings.errorClass, "" );
+ this.findByName( elements[ i ].name ).removeClass( this.settings.validClass );
+ }
+ } else {
+ elements
+ .removeClass( this.settings.errorClass )
+ .removeClass( this.settings.validClass );
+ }
+ },
+
+ numberOfInvalids: function() {
+ return this.objectLength( this.invalid );
+ },
+
+ objectLength: function( obj ) {
+ /* jshint unused: false */
+ var count = 0,
+ i;
+ for ( i in obj ) {
+ if ( obj[ i ] ) {
+ count++;
+ }
+ }
+ return count;
+ },
+
+ hideErrors: function() {
+ this.hideThese( this.toHide );
+ },
+
+ hideThese: function( errors ) {
+ errors.not( this.containers ).text( "" );
+ this.addWrapper( errors ).hide();
+ },
+
+ valid: function() {
+ return this.size() === 0;
+ },
+
+ size: function() {
+ return this.errorList.length;
+ },
+
+ focusInvalid: function() {
+ if ( this.settings.focusInvalid ) {
+ try {
+ $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )
+ .filter( ":visible" )
+ .focus()
+
+ // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
+ .trigger( "focusin" );
+ } catch ( e ) {
+
+ // Ignore IE throwing errors when focusing hidden elements
+ }
+ }
+ },
+
+ findLastActive: function() {
+ var lastActive = this.lastActive;
+ return lastActive && $.grep( this.errorList, function( n ) {
+ return n.element.name === lastActive.name;
+ } ).length === 1 && lastActive;
+ },
+
+ elements: function() {
+ var validator = this,
+ rulesCache = {};
+
+ // Select all valid inputs inside the form (no submit or reset buttons)
+ return $( this.currentForm )
+ .find( "input, select, textarea, [contenteditable]" )
+ .not( ":submit, :reset, :image, :disabled" )
+ .not( this.settings.ignore )
+ .filter( function() {
+ var name = this.name || $( this ).attr( "name" ); // For contenteditable
+ if ( !name && validator.settings.debug && window.console ) {
+ console.error( "%o has no name assigned", this );
+ }
+
+ // Set form expando on contenteditable
+ if ( this.hasAttribute( "contenteditable" ) ) {
+ this.form = $( this ).closest( "form" )[ 0 ];
+ }
+
+ // Select only the first element for each name, and only those with rules specified
+ if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
+ return false;
+ }
+
+ rulesCache[ name ] = true;
+ return true;
+ } );
+ },
+
+ clean: function( selector ) {
+ return $( selector )[ 0 ];
+ },
+
+ errors: function() {
+ var errorClass = this.settings.errorClass.split( " " ).join( "." );
+ return $( this.settings.errorElement + "." + errorClass, this.errorContext );
+ },
+
+ resetInternals: function() {
+ this.successList = [];
+ this.errorList = [];
+ this.errorMap = {};
+ this.toShow = $( [] );
+ this.toHide = $( [] );
+ },
+
+ reset: function() {
+ this.resetInternals();
+ this.currentElements = $( [] );
+ },
+
+ prepareForm: function() {
+ this.reset();
+ this.toHide = this.errors().add( this.containers );
+ },
+
+ prepareElement: function( element ) {
+ this.reset();
+ this.toHide = this.errorsFor( element );
+ },
+
+ elementValue: function( element ) {
+ var $element = $( element ),
+ type = element.type,
+ val, idx;
+
+ if ( type === "radio" || type === "checkbox" ) {
+ return this.findByName( element.name ).filter( ":checked" ).val();
+ } else if ( type === "number" && typeof element.validity !== "undefined" ) {
+ return element.validity.badInput ? "NaN" : $element.val();
+ }
+
+ if ( element.hasAttribute( "contenteditable" ) ) {
+ val = $element.text();
+ } else {
+ val = $element.val();
+ }
+
+ if ( type === "file" ) {
+
+ // Modern browser (chrome & safari)
+ if ( val.substr( 0, 12 ) === "C:\\fakepath\\" ) {
+ return val.substr( 12 );
+ }
+
+ // Legacy browsers
+ // Unix-based path
+ idx = val.lastIndexOf( "/" );
+ if ( idx >= 0 ) {
+ return val.substr( idx + 1 );
+ }
+
+ // Windows-based path
+ idx = val.lastIndexOf( "\\" );
+ if ( idx >= 0 ) {
+ return val.substr( idx + 1 );
+ }
+
+ // Just the file name
+ return val;
+ }
+
+ if ( typeof val === "string" ) {
+ return val.replace( /\r/g, "" );
+ }
+ return val;
+ },
+
+ check: function( element ) {
+ element = this.validationTargetFor( this.clean( element ) );
+
+ var rules = $( element ).rules(),
+ rulesCount = $.map( rules, function( n, i ) {
+ return i;
+ } ).length,
+ dependencyMismatch = false,
+ val = this.elementValue( element ),
+ result, method, rule;
+
+ // If a normalizer is defined for this element, then
+ // call it to retreive the changed value instead
+ // of using the real one.
+ // Note that `this` in the normalizer is `element`.
+ if ( typeof rules.normalizer === "function" ) {
+ val = rules.normalizer.call( element, val );
+
+ if ( typeof val !== "string" ) {
+ throw new TypeError( "The normalizer should return a string value." );
+ }
+
+ // Delete the normalizer from rules to avoid treating
+ // it as a pre-defined method.
+ delete rules.normalizer;
+ }
+
+ for ( method in rules ) {
+ rule = { method: method, parameters: rules[ method ] };
+ try {
+ result = $.validator.methods[ method ].call( this, val, element, rule.parameters );
+
+ // If a method indicates that the field is optional and therefore valid,
+ // don't mark it as valid when there are no other rules
+ if ( result === "dependency-mismatch" && rulesCount === 1 ) {
+ dependencyMismatch = true;
+ continue;
+ }
+ dependencyMismatch = false;
+
+ if ( result === "pending" ) {
+ this.toHide = this.toHide.not( this.errorsFor( element ) );
+ return;
+ }
+
+ if ( !result ) {
+ this.formatAndAdd( element, rule );
+ return false;
+ }
+ } catch ( e ) {
+ if ( this.settings.debug && window.console ) {
+ console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
+ }
+ if ( e instanceof TypeError ) {
+ e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
+ }
+
+ throw e;
+ }
+ }
+ if ( dependencyMismatch ) {
+ return;
+ }
+ if ( this.objectLength( rules ) ) {
+ this.successList.push( element );
+ }
+ return true;
+ },
+
+ // Return the custom message for the given element and validation method
+ // specified in the element's HTML5 data attribute
+ // return the generic message if present and no method specific message is present
+ customDataMessage: function( element, method ) {
+ return $( element ).data( "msg" + method.charAt( 0 ).toUpperCase() +
+ method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" );
+ },
+
+ // Return the custom message for the given element name and validation method
+ customMessage: function( name, method ) {
+ var m = this.settings.messages[ name ];
+ return m && ( m.constructor === String ? m : m[ method ] );
+ },
+
+ // Return the first defined argument, allowing empty strings
+ findDefined: function() {
+ for ( var i = 0; i < arguments.length; i++ ) {
+ if ( arguments[ i ] !== undefined ) {
+ return arguments[ i ];
+ }
+ }
+ return undefined;
+ },
+
+ defaultMessage: function( element, rule ) {
+ var message = this.findDefined(
+ this.customMessage( element.name, rule.method ),
+ this.customDataMessage( element, rule.method ),
+
+ // 'title' is never undefined, so handle empty string as undefined
+ !this.settings.ignoreTitle && element.title || undefined,
+ $.validator.messages[ rule.method ],
+ "Warning: No message defined for " + element.name + " "
+ ),
+ theregex = /\$?\{(\d+)\}/g;
+ if ( typeof message === "function" ) {
+ message = message.call( this, rule.parameters, element );
+ } else if ( theregex.test( message ) ) {
+ message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters );
+ }
+
+ return message;
+ },
+
+ formatAndAdd: function( element, rule ) {
+ var message = this.defaultMessage( element, rule );
+
+ this.errorList.push( {
+ message: message,
+ element: element,
+ method: rule.method
+ } );
+
+ this.errorMap[ element.name ] = message;
+ this.submitted[ element.name ] = message;
+ },
+
+ addWrapper: function( toToggle ) {
+ if ( this.settings.wrapper ) {
+ toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
+ }
+ return toToggle;
+ },
+
+ defaultShowErrors: function() {
+ var i, elements, error;
+ for ( i = 0; this.errorList[ i ]; i++ ) {
+ error = this.errorList[ i ];
+ if ( this.settings.highlight ) {
+ this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
+ }
+ this.showLabel( error.element, error.message );
+ }
+ if ( this.errorList.length ) {
+ this.toShow = this.toShow.add( this.containers );
+ }
+ if ( this.settings.success ) {
+ for ( i = 0; this.successList[ i ]; i++ ) {
+ this.showLabel( this.successList[ i ] );
+ }
+ }
+ if ( this.settings.unhighlight ) {
+ for ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {
+ this.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );
+ }
+ }
+ this.toHide = this.toHide.not( this.toShow );
+ this.hideErrors();
+ this.addWrapper( this.toShow ).show();
+ },
+
+ validElements: function() {
+ return this.currentElements.not( this.invalidElements() );
+ },
+
+ invalidElements: function() {
+ return $( this.errorList ).map( function() {
+ return this.element;
+ } );
+ },
+
+ showLabel: function( element, message ) {
+ var place, group, errorID, v,
+ error = this.errorsFor( element ),
+ elementID = this.idOrName( element ),
+ describedBy = $( element ).attr( "aria-describedby" );
+
+ if ( error.length ) {
+
+ // Refresh error/success class
+ error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
+
+ // Replace message on existing label
+ error.html( message );
+ } else {
+
+ // Create error element
+ error = $( "<" + this.settings.errorElement + ">" )
+ .attr( "id", elementID + "-error" )
+ .addClass( this.settings.errorClass )
+ .html( message || "" );
+
+ // Maintain reference to the element to be placed into the DOM
+ place = error;
+ if ( this.settings.wrapper ) {
+
+ // Make sure the element is visible, even in IE
+ // actually showing the wrapped element is handled elsewhere
+ place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent();
+ }
+ if ( this.labelContainer.length ) {
+ this.labelContainer.append( place );
+ } else if ( this.settings.errorPlacement ) {
+ this.settings.errorPlacement( place, $( element ) );
+ } else {
+ place.insertAfter( element );
+ }
+
+ // Link error back to the element
+ if ( error.is( "label" ) ) {
+
+ // If the error is a label, then associate using 'for'
+ error.attr( "for", elementID );
+
+ // If the element is not a child of an associated label, then it's necessary
+ // to explicitly apply aria-describedby
+ } else if ( error.parents( "label[for='" + this.escapeCssMeta( elementID ) + "']" ).length === 0 ) {
+ errorID = error.attr( "id" );
+
+ // Respect existing non-error aria-describedby
+ if ( !describedBy ) {
+ describedBy = errorID;
+ } else if ( !describedBy.match( new RegExp( "\\b" + this.escapeCssMeta( errorID ) + "\\b" ) ) ) {
+
+ // Add to end of list if not already present
+ describedBy += " " + errorID;
+ }
+ $( element ).attr( "aria-describedby", describedBy );
+
+ // If this element is grouped, then assign to all elements in the same group
+ group = this.groups[ element.name ];
+ if ( group ) {
+ v = this;
+ $.each( v.groups, function( name, testgroup ) {
+ if ( testgroup === group ) {
+ $( "[name='" + v.escapeCssMeta( name ) + "']", v.currentForm )
+ .attr( "aria-describedby", error.attr( "id" ) );
+ }
+ } );
+ }
+ }
+ }
+ if ( !message && this.settings.success ) {
+ error.text( "" );
+ if ( typeof this.settings.success === "string" ) {
+ error.addClass( this.settings.success );
+ } else {
+ this.settings.success( error, element );
+ }
+ }
+ this.toShow = this.toShow.add( error );
+ },
+
+ errorsFor: function( element ) {
+ var name = this.escapeCssMeta( this.idOrName( element ) ),
+ describer = $( element ).attr( "aria-describedby" ),
+ selector = "label[for='" + name + "'], label[for='" + name + "'] *";
+
+ // 'aria-describedby' should directly reference the error element
+ if ( describer ) {
+ selector = selector + ", #" + this.escapeCssMeta( describer )
+ .replace( /\s+/g, ", #" );
+ }
+
+ return this
+ .errors()
+ .filter( selector );
+ },
+
+ // See https://api.jquery.com/category/selectors/, for CSS
+ // meta-characters that should be escaped in order to be used with JQuery
+ // as a literal part of a name/id or any selector.
+ escapeCssMeta: function( string ) {
+ return string.replace( /([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1" );
+ },
+
+ idOrName: function( element ) {
+ return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );
+ },
+
+ validationTargetFor: function( element ) {
+
+ // If radio/checkbox, validate first element in group instead
+ if ( this.checkable( element ) ) {
+ element = this.findByName( element.name );
+ }
+
+ // Always apply ignore filter
+ return $( element ).not( this.settings.ignore )[ 0 ];
+ },
+
+ checkable: function( element ) {
+ return ( /radio|checkbox/i ).test( element.type );
+ },
+
+ findByName: function( name ) {
+ return $( this.currentForm ).find( "[name='" + this.escapeCssMeta( name ) + "']" );
+ },
+
+ getLength: function( value, element ) {
+ switch ( element.nodeName.toLowerCase() ) {
+ case "select":
+ return $( "option:selected", element ).length;
+ case "input":
+ if ( this.checkable( element ) ) {
+ return this.findByName( element.name ).filter( ":checked" ).length;
+ }
+ }
+ return value.length;
+ },
+
+ depend: function( param, element ) {
+ return this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;
+ },
+
+ dependTypes: {
+ "boolean": function( param ) {
+ return param;
+ },
+ "string": function( param, element ) {
+ return !!$( param, element.form ).length;
+ },
+ "function": function( param, element ) {
+ return param( element );
+ }
+ },
+
+ optional: function( element ) {
+ var val = this.elementValue( element );
+ return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
+ },
+
+ startRequest: function( element ) {
+ if ( !this.pending[ element.name ] ) {
+ this.pendingRequest++;
+ $( element ).addClass( this.settings.pendingClass );
+ this.pending[ element.name ] = true;
+ }
+ },
+
+ stopRequest: function( element, valid ) {
+ this.pendingRequest--;
+
+ // Sometimes synchronization fails, make sure pendingRequest is never < 0
+ if ( this.pendingRequest < 0 ) {
+ this.pendingRequest = 0;
+ }
+ delete this.pending[ element.name ];
+ $( element ).removeClass( this.settings.pendingClass );
+ if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {
+ $( this.currentForm ).submit();
+ this.formSubmitted = false;
+ } else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {
+ $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
+ this.formSubmitted = false;
+ }
+ },
+
+ previousValue: function( element, method ) {
+ return $.data( element, "previousValue" ) || $.data( element, "previousValue", {
+ old: null,
+ valid: true,
+ message: this.defaultMessage( element, { method: method } )
+ } );
+ },
+
+ // Cleans up all forms and elements, removes validator-specific events
+ destroy: function() {
+ this.resetForm();
+
+ $( this.currentForm )
+ .off( ".validate" )
+ .removeData( "validator" )
+ .find( ".validate-equalTo-blur" )
+ .off( ".validate-equalTo" )
+ .removeClass( "validate-equalTo-blur" );
+ }
+
+ },
+
+ classRuleSettings: {
+ required: { required: true },
+ email: { email: true },
+ url: { url: true },
+ date: { date: true },
+ dateISO: { dateISO: true },
+ number: { number: true },
+ digits: { digits: true },
+ creditcard: { creditcard: true }
+ },
+
+ addClassRules: function( className, rules ) {
+ if ( className.constructor === String ) {
+ this.classRuleSettings[ className ] = rules;
+ } else {
+ $.extend( this.classRuleSettings, className );
+ }
+ },
+
+ classRules: function( element ) {
+ var rules = {},
+ classes = $( element ).attr( "class" );
+
+ if ( classes ) {
+ $.each( classes.split( " " ), function() {
+ if ( this in $.validator.classRuleSettings ) {
+ $.extend( rules, $.validator.classRuleSettings[ this ] );
+ }
+ } );
+ }
+ return rules;
+ },
+
+ normalizeAttributeRule: function( rules, type, method, value ) {
+
+ // Convert the value to a number for number inputs, and for text for backwards compability
+ // allows type="date" and others to be compared as strings
+ if ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
+ value = Number( value );
+
+ // Support Opera Mini, which returns NaN for undefined minlength
+ if ( isNaN( value ) ) {
+ value = undefined;
+ }
+ }
+
+ if ( value || value === 0 ) {
+ rules[ method ] = value;
+ } else if ( type === method && type !== "range" ) {
+
+ // Exception: the jquery validate 'range' method
+ // does not test for the html5 'range' type
+ rules[ method ] = true;
+ }
+ },
+
+ attributeRules: function( element ) {
+ var rules = {},
+ $element = $( element ),
+ type = element.getAttribute( "type" ),
+ method, value;
+
+ for ( method in $.validator.methods ) {
+
+ // Support for in both html5 and older browsers
+ if ( method === "required" ) {
+ value = element.getAttribute( method );
+
+ // Some browsers return an empty string for the required attribute
+ // and non-HTML5 browsers might have required="" markup
+ if ( value === "" ) {
+ value = true;
+ }
+
+ // Force non-HTML5 browsers to return bool
+ value = !!value;
+ } else {
+ value = $element.attr( method );
+ }
+
+ this.normalizeAttributeRule( rules, type, method, value );
+ }
+
+ // 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
+ if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {
+ delete rules.maxlength;
+ }
+
+ return rules;
+ },
+
+ dataRules: function( element ) {
+ var rules = {},
+ $element = $( element ),
+ type = element.getAttribute( "type" ),
+ method, value;
+
+ for ( method in $.validator.methods ) {
+ value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
+ this.normalizeAttributeRule( rules, type, method, value );
+ }
+ return rules;
+ },
+
+ staticRules: function( element ) {
+ var rules = {},
+ validator = $.data( element.form, "validator" );
+
+ if ( validator.settings.rules ) {
+ rules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};
+ }
+ return rules;
+ },
+
+ normalizeRules: function( rules, element ) {
+
+ // Handle dependency check
+ $.each( rules, function( prop, val ) {
+
+ // Ignore rule when param is explicitly false, eg. required:false
+ if ( val === false ) {
+ delete rules[ prop ];
+ return;
+ }
+ if ( val.param || val.depends ) {
+ var keepRule = true;
+ switch ( typeof val.depends ) {
+ case "string":
+ keepRule = !!$( val.depends, element.form ).length;
+ break;
+ case "function":
+ keepRule = val.depends.call( element, element );
+ break;
+ }
+ if ( keepRule ) {
+ rules[ prop ] = val.param !== undefined ? val.param : true;
+ } else {
+ $.data( element.form, "validator" ).resetElements( $( element ) );
+ delete rules[ prop ];
+ }
+ }
+ } );
+
+ // Evaluate parameters
+ $.each( rules, function( rule, parameter ) {
+ rules[ rule ] = $.isFunction( parameter ) && rule !== "normalizer" ? parameter( element ) : parameter;
+ } );
+
+ // Clean number parameters
+ $.each( [ "minlength", "maxlength" ], function() {
+ if ( rules[ this ] ) {
+ rules[ this ] = Number( rules[ this ] );
+ }
+ } );
+ $.each( [ "rangelength", "range" ], function() {
+ var parts;
+ if ( rules[ this ] ) {
+ if ( $.isArray( rules[ this ] ) ) {
+ rules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];
+ } else if ( typeof rules[ this ] === "string" ) {
+ parts = rules[ this ].replace( /[\[\]]/g, "" ).split( /[\s,]+/ );
+ rules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];
+ }
+ }
+ } );
+
+ if ( $.validator.autoCreateRanges ) {
+
+ // Auto-create ranges
+ if ( rules.min != null && rules.max != null ) {
+ rules.range = [ rules.min, rules.max ];
+ delete rules.min;
+ delete rules.max;
+ }
+ if ( rules.minlength != null && rules.maxlength != null ) {
+ rules.rangelength = [ rules.minlength, rules.maxlength ];
+ delete rules.minlength;
+ delete rules.maxlength;
+ }
+ }
+
+ return rules;
+ },
+
+ // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
+ normalizeRule: function( data ) {
+ if ( typeof data === "string" ) {
+ var transformed = {};
+ $.each( data.split( /\s/ ), function() {
+ transformed[ this ] = true;
+ } );
+ data = transformed;
+ }
+ return data;
+ },
+
+ // http://jqueryvalidation.org/jQuery.validator.addMethod/
+ addMethod: function( name, method, message ) {
+ $.validator.methods[ name ] = method;
+ $.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];
+ if ( method.length < 3 ) {
+ $.validator.addClassRules( name, $.validator.normalizeRule( name ) );
+ }
+ },
+
+ // http://jqueryvalidation.org/jQuery.validator.methods/
+ methods: {
+
+ // http://jqueryvalidation.org/required-method/
+ required: function( value, element, param ) {
+
+ // Check if dependency is met
+ if ( !this.depend( param, element ) ) {
+ return "dependency-mismatch";
+ }
+ if ( element.nodeName.toLowerCase() === "select" ) {
+
+ // Could be an array for select-multiple or a string, both are fine this way
+ var val = $( element ).val();
+ return val && val.length > 0;
+ }
+ if ( this.checkable( element ) ) {
+ return this.getLength( value, element ) > 0;
+ }
+ return value.length > 0;
+ },
+
+ // http://jqueryvalidation.org/email-method/
+ email: function( value, element ) {
+
+ // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
+ // Retrieved 2014-01-14
+ // If you have a problem with this implementation, report a bug against the above spec
+ // Or use custom methods to implement your own email validation
+ return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );
+ },
+
+ // http://jqueryvalidation.org/url-method/
+ url: function( value, element ) {
+
+ // Copyright (c) 2010-2013 Diego Perini, MIT licensed
+ // https://gist.github.com/dperini/729294
+ // see also https://mathiasbynens.be/demo/url-regex
+ // modified to allow protocol-relative URLs
+ return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );
+ },
+
+ // http://jqueryvalidation.org/date-method/
+ date: function( value, element ) {
+ return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );
+ },
+
+ // http://jqueryvalidation.org/dateISO-method/
+ dateISO: function( value, element ) {
+ return this.optional( element ) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );
+ },
+
+ // http://jqueryvalidation.org/number-method/
+ number: function( value, element ) {
+ return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value );
+ },
+
+ // http://jqueryvalidation.org/digits-method/
+ digits: function( value, element ) {
+ return this.optional( element ) || /^\d+$/.test( value );
+ },
+
+ // http://jqueryvalidation.org/minlength-method/
+ minlength: function( value, element, param ) {
+ var length = $.isArray( value ) ? value.length : this.getLength( value, element );
+ return this.optional( element ) || length >= param;
+ },
+
+ // http://jqueryvalidation.org/maxlength-method/
+ maxlength: function( value, element, param ) {
+ var length = $.isArray( value ) ? value.length : this.getLength( value, element );
+ return this.optional( element ) || length <= param;
+ },
+
+ // http://jqueryvalidation.org/rangelength-method/
+ rangelength: function( value, element, param ) {
+ var length = $.isArray( value ) ? value.length : this.getLength( value, element );
+ return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );
+ },
+
+ // http://jqueryvalidation.org/min-method/
+ min: function( value, element, param ) {
+ return this.optional( element ) || value >= param;
+ },
+
+ // http://jqueryvalidation.org/max-method/
+ max: function( value, element, param ) {
+ return this.optional( element ) || value <= param;
+ },
+
+ // http://jqueryvalidation.org/range-method/
+ range: function( value, element, param ) {
+ return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );
+ },
+
+ // http://jqueryvalidation.org/step-method/
+ step: function( value, element, param ) {
+ var type = $( element ).attr( "type" ),
+ errorMessage = "Step attribute on input type " + type + " is not supported.",
+ supportedTypes = [ "text", "number", "range" ],
+ re = new RegExp( "\\b" + type + "\\b" ),
+ notSupported = type && !re.test( supportedTypes.join() );
+
+ // Works only for text, number and range input types
+ // TODO find a way to support input types date, datetime, datetime-local, month, time and week
+ if ( notSupported ) {
+ throw new Error( errorMessage );
+ }
+ return this.optional( element ) || ( value % param === 0 );
+ },
+
+ // http://jqueryvalidation.org/equalTo-method/
+ equalTo: function( value, element, param ) {
+
+ // Bind to the blur event of the target in order to revalidate whenever the target field is updated
+ var target = $( param );
+ if ( this.settings.onfocusout && target.not( ".validate-equalTo-blur" ).length ) {
+ target.addClass( "validate-equalTo-blur" ).on( "blur.validate-equalTo", function() {
+ $( element ).valid();
+ } );
+ }
+ return value === target.val();
+ },
+
+ // http://jqueryvalidation.org/remote-method/
+ remote: function( value, element, param, method ) {
+ if ( this.optional( element ) ) {
+ return "dependency-mismatch";
+ }
+
+ method = typeof method === "string" && method || "remote";
+
+ var previous = this.previousValue( element, method ),
+ validator, data, optionDataString;
+
+ if ( !this.settings.messages[ element.name ] ) {
+ this.settings.messages[ element.name ] = {};
+ }
+ previous.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];
+ this.settings.messages[ element.name ][ method ] = previous.message;
+
+ param = typeof param === "string" && { url: param } || param;
+ optionDataString = $.param( $.extend( { data: value }, param.data ) );
+ if ( previous.old === optionDataString ) {
+ return previous.valid;
+ }
+
+ previous.old = optionDataString;
+ validator = this;
+ this.startRequest( element );
+ data = {};
+ data[ element.name ] = value;
+ $.ajax( $.extend( true, {
+ mode: "abort",
+ port: "validate" + element.name,
+ dataType: "json",
+ data: data,
+ context: validator.currentForm,
+ success: function( response ) {
+ var valid = response === true || response === "true",
+ errors, message, submitted;
+
+ validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
+ if ( valid ) {
+ submitted = validator.formSubmitted;
+ validator.resetInternals();
+ validator.toHide = validator.errorsFor( element );
+ validator.formSubmitted = submitted;
+ validator.successList.push( element );
+ validator.invalid[ element.name ] = false;
+ validator.showErrors();
+ } else {
+ errors = {};
+ message = response || validator.defaultMessage( element, { method: method, parameters: value } );
+ errors[ element.name ] = previous.message = message;
+ validator.invalid[ element.name ] = true;
+ validator.showErrors( errors );
+ }
+ previous.valid = valid;
+ validator.stopRequest( element, valid );
+ }
+ }, param ) );
+ return "pending";
+ }
+ }
+
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ar.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ar.js
new file mode 100644
index 0000000..c7b5c2a
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ar.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: AR (Arabic; العربية)
+ */
+$.extend( $.validator.messages, {
+ required: "هذا الحقل إلزامي",
+ remote: "يرجى تصحيح هذا الحقل للمتابعة",
+ email: "رجاء إدخال عنوان بريد إلكتروني صحيح",
+ url: "رجاء إدخال عنوان موقع إلكتروني صحيح",
+ date: "رجاء إدخال تاريخ صحيح",
+ dateISO: "رجاء إدخال تاريخ صحيح (ISO)",
+ number: "رجاء إدخال عدد بطريقة صحيحة",
+ digits: "رجاء إدخال أرقام فقط",
+ creditcard: "رجاء إدخال رقم بطاقة ائتمان صحيح",
+ equalTo: "رجاء إدخال نفس القيمة",
+ extension: "رجاء إدخال ملف بامتداد موافق عليه",
+ maxlength: $.validator.format( "الحد الأقصى لعدد الحروف هو {0}" ),
+ minlength: $.validator.format( "الحد الأدنى لعدد الحروف هو {0}" ),
+ rangelength: $.validator.format( "عدد الحروف يجب أن يكون بين {0} و {1}" ),
+ range: $.validator.format( "رجاء إدخال عدد قيمته بين {0} و {1}" ),
+ max: $.validator.format( "رجاء إدخال عدد أقل من أو يساوي (0}" ),
+ min: $.validator.format( "رجاء إدخال عدد أكبر من أو يساوي (0}" )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_bg.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_bg.js
new file mode 100644
index 0000000..1414656
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_bg.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: BG (Bulgarian; български език)
+ */
+$.extend( $.validator.messages, {
+ required: "Полето е задължително.",
+ remote: "Моля, въведете правилната стойност.",
+ email: "Моля, въведете валиден email.",
+ url: "Моля, въведете валидно URL.",
+ date: "Моля, въведете валидна дата.",
+ dateISO: "Моля, въведете валидна дата (ISO).",
+ number: "Моля, въведете валиден номер.",
+ digits: "Моля, въведете само цифри.",
+ creditcard: "Моля, въведете валиден номер на кредитна карта.",
+ equalTo: "Моля, въведете същата стойност отново.",
+ extension: "Моля, въведете стойност с валидно разширение.",
+ maxlength: $.validator.format( "Моля, въведете повече от {0} символа." ),
+ minlength: $.validator.format( "Моля, въведете поне {0} символа." ),
+ rangelength: $.validator.format( "Моля, въведете стойност с дължина между {0} и {1} символа." ),
+ range: $.validator.format( "Моля, въведете стойност между {0} и {1}." ),
+ max: $.validator.format( "Моля, въведете стойност по-малка или равна на {0}." ),
+ min: $.validator.format( "Моля, въведете стойност по-голяма или равна на {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_bn_BD.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_bn_BD.js
new file mode 100644
index 0000000..2ec5b93
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_bn_BD.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: bn_BD (Bengali, Bangladesh)
+ */
+$.extend( $.validator.messages, {
+ required: "এই তথ্যটি আবশ্যক।",
+ remote: "এই তথ্যটি ঠিক করুন।",
+ email: "অনুগ্রহ করে একটি সঠিক মেইল ঠিকানা লিখুন।",
+ url: "অনুগ্রহ করে একটি সঠিক লিঙ্ক দিন।",
+ date: "তারিখ সঠিক নয়।",
+ dateISO: "অনুগ্রহ করে একটি সঠিক (ISO) তারিখ লিখুন।",
+ number: "অনুগ্রহ করে একটি সঠিক নম্বর লিখুন।",
+ digits: "এখানে শুধু সংখ্যা ব্যবহার করা যাবে।",
+ creditcard: "অনুগ্রহ করে একটি ক্রেডিট কার্ডের সঠিক নম্বর লিখুন।",
+ equalTo: "একই মান আবার লিখুন।",
+ extension: "সঠিক ধরনের ফাইল আপলোড করুন।",
+ maxlength: $.validator.format( "{0}টির বেশি অক্ষর লেখা যাবে না।" ),
+ minlength: $.validator.format( "{0}টির কম অক্ষর লেখা যাবে না।" ),
+ rangelength: $.validator.format( "{0} থেকে {1} টি অক্ষর সম্বলিত মান লিখুন।" ),
+ range: $.validator.format( "{0} থেকে {1} এর মধ্যে একটি মান ব্যবহার করুন।" ),
+ max: $.validator.format( "অনুগ্রহ করে {0} বা তার চাইতে কম মান ব্যবহার করুন।" ),
+ min: $.validator.format( "অনুগ্রহ করে {0} বা তার চাইতে বেশি মান ব্যবহার করুন।" )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ca.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ca.js
new file mode 100644
index 0000000..2d650bc
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ca.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: CA (Catalan; català)
+ */
+$.extend( $.validator.messages, {
+ required: "Aquest camp és obligatori.",
+ remote: "Si us plau, omple aquest camp.",
+ email: "Si us plau, escriu una adreça de correu-e vàlida",
+ url: "Si us plau, escriu una URL vàlida.",
+ date: "Si us plau, escriu una data vàlida.",
+ dateISO: "Si us plau, escriu una data (ISO) vàlida.",
+ number: "Si us plau, escriu un número enter vàlid.",
+ digits: "Si us plau, escriu només dígits.",
+ creditcard: "Si us plau, escriu un número de tarjeta vàlid.",
+ equalTo: "Si us plau, escriu el mateix valor de nou.",
+ extension: "Si us plau, escriu un valor amb una extensió acceptada.",
+ maxlength: $.validator.format( "Si us plau, no escriguis més de {0} caracters." ),
+ minlength: $.validator.format( "Si us plau, no escriguis menys de {0} caracters." ),
+ rangelength: $.validator.format( "Si us plau, escriu un valor entre {0} i {1} caracters." ),
+ range: $.validator.format( "Si us plau, escriu un valor entre {0} i {1}." ),
+ max: $.validator.format( "Si us plau, escriu un valor menor o igual a {0}." ),
+ min: $.validator.format( "Si us plau, escriu un valor major o igual a {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_cs.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_cs.js
new file mode 100644
index 0000000..b2d1f20
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_cs.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: CS (Czech; čeština, český jazyk)
+ */
+$.extend( $.validator.messages, {
+ required: "Tento údaj je povinný.",
+ remote: "Prosím, opravte tento údaj.",
+ email: "Prosím, zadejte platný e-mail.",
+ url: "Prosím, zadejte platné URL.",
+ date: "Prosím, zadejte platné datum.",
+ dateISO: "Prosím, zadejte platné datum (ISO).",
+ number: "Prosím, zadejte číslo.",
+ digits: "Prosím, zadávejte pouze číslice.",
+ creditcard: "Prosím, zadejte číslo kreditní karty.",
+ equalTo: "Prosím, zadejte znovu stejnou hodnotu.",
+ extension: "Prosím, zadejte soubor se správnou příponou.",
+ maxlength: $.validator.format( "Prosím, zadejte nejvíce {0} znaků." ),
+ minlength: $.validator.format( "Prosím, zadejte nejméně {0} znaků." ),
+ rangelength: $.validator.format( "Prosím, zadejte od {0} do {1} znaků." ),
+ range: $.validator.format( "Prosím, zadejte hodnotu od {0} do {1}." ),
+ max: $.validator.format( "Prosím, zadejte hodnotu menší nebo rovnu {0}." ),
+ min: $.validator.format( "Prosím, zadejte hodnotu větší nebo rovnu {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_da.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_da.js
new file mode 100644
index 0000000..b43673a
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_da.js
@@ -0,0 +1,20 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: DA (Danish; dansk)
+ */
+$.extend( $.validator.messages, {
+ required: "Dette felt er påkrævet.",
+ maxlength: $.validator.format( "Indtast højst {0} tegn." ),
+ minlength: $.validator.format( "Indtast mindst {0} tegn." ),
+ rangelength: $.validator.format( "Indtast mindst {0} og højst {1} tegn." ),
+ email: "Indtast en gyldig email-adresse.",
+ url: "Indtast en gyldig URL.",
+ date: "Indtast en gyldig dato.",
+ number: "Indtast et tal.",
+ digits: "Indtast kun cifre.",
+ equalTo: "Indtast den samme værdi igen.",
+ range: $.validator.format( "Angiv en værdi mellem {0} og {1}." ),
+ max: $.validator.format( "Angiv en værdi der højst er {0}." ),
+ min: $.validator.format( "Angiv en værdi der mindst er {0}." ),
+ creditcard: "Indtast et gyldigt kreditkortnummer."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_de.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_de.js
new file mode 100644
index 0000000..dff7c96
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_de.js
@@ -0,0 +1,20 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: DE (German, Deutsch)
+ */
+$.extend( $.validator.messages, {
+ required: "Dieses Feld ist ein Pflichtfeld.",
+ maxlength: $.validator.format( "Geben Sie bitte maximal {0} Zeichen ein." ),
+ minlength: $.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ),
+ rangelength: $.validator.format( "Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein." ),
+ email: "Geben Sie bitte eine gültige E-Mail Adresse ein.",
+ url: "Geben Sie bitte eine gültige URL ein.",
+ date: "Bitte geben Sie ein gültiges Datum ein.",
+ number: "Geben Sie bitte eine Nummer ein.",
+ digits: "Geben Sie bitte nur Ziffern ein.",
+ equalTo: "Bitte denselben Wert wiederholen.",
+ range: $.validator.format( "Geben Sie bitte einen Wert zwischen {0} und {1} ein." ),
+ max: $.validator.format( "Geben Sie bitte einen Wert kleiner oder gleich {0} ein." ),
+ min: $.validator.format( "Geben Sie bitte einen Wert größer oder gleich {0} ein." ),
+ creditcard: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_el.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_el.js
new file mode 100644
index 0000000..784f910
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_el.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: EL (Greek; ελληνικά)
+ */
+$.extend( $.validator.messages, {
+ required: "Αυτό το πεδίο είναι υποχρεωτικό.",
+ remote: "Παρακαλώ διορθώστε αυτό το πεδίο.",
+ email: "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση email.",
+ url: "Παρακαλώ εισάγετε ένα έγκυρο URL.",
+ date: "Παρακαλώ εισάγετε μια έγκυρη ημερομηνία.",
+ dateISO: "Παρακαλώ εισάγετε μια έγκυρη ημερομηνία (ISO).",
+ number: "Παρακαλώ εισάγετε έναν έγκυρο αριθμό.",
+ digits: "Παρακαλώ εισάγετε μόνο αριθμητικά ψηφία.",
+ creditcard: "Παρακαλώ εισάγετε έναν έγκυρο αριθμό πιστωτικής κάρτας.",
+ equalTo: "Παρακαλώ εισάγετε την ίδια τιμή ξανά.",
+ extension: "Παρακαλώ εισάγετε μια τιμή με έγκυρη επέκταση αρχείου.",
+ maxlength: $.validator.format( "Παρακαλώ εισάγετε μέχρι και {0} χαρακτήρες." ),
+ minlength: $.validator.format( "Παρακαλώ εισάγετε τουλάχιστον {0} χαρακτήρες." ),
+ rangelength: $.validator.format( "Παρακαλώ εισάγετε μια τιμή με μήκος μεταξύ {0} και {1} χαρακτήρων." ),
+ range: $.validator.format( "Παρακαλώ εισάγετε μια τιμή μεταξύ {0} και {1}." ),
+ max: $.validator.format( "Παρακαλώ εισάγετε μια τιμή μικρότερη ή ίση του {0}." ),
+ min: $.validator.format( "Παρακαλώ εισάγετε μια τιμή μεγαλύτερη ή ίση του {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_es.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_es.js
new file mode 100644
index 0000000..06462c5
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_es.js
@@ -0,0 +1,26 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: ES (Spanish; Español)
+ */
+$.extend( $.validator.messages, {
+ required: "Este campo es obligatorio.",
+ remote: "Por favor, rellena este campo.",
+ email: "Por favor, escribe una dirección de correo válida.",
+ url: "Por favor, escribe una URL válida.",
+ date: "Por favor, escribe una fecha válida.",
+ dateISO: "Por favor, escribe una fecha (ISO) válida.",
+ number: "Por favor, escribe un número válido.",
+ digits: "Por favor, escribe sólo dígitos.",
+ creditcard: "Por favor, escribe un número de tarjeta válido.",
+ equalTo: "Por favor, escribe el mismo valor de nuevo.",
+ extension: "Por favor, escribe un valor con una extensión aceptada.",
+ maxlength: $.validator.format( "Por favor, no escribas más de {0} caracteres." ),
+ minlength: $.validator.format( "Por favor, no escribas menos de {0} caracteres." ),
+ rangelength: $.validator.format( "Por favor, escribe un valor entre {0} y {1} caracteres." ),
+ range: $.validator.format( "Por favor, escribe un valor entre {0} y {1}." ),
+ max: $.validator.format( "Por favor, escribe un valor menor o igual a {0}." ),
+ min: $.validator.format( "Por favor, escribe un valor mayor o igual a {0}." ),
+ nifES: "Por favor, escribe un NIF válido.",
+ nieES: "Por favor, escribe un NIE válido.",
+ cifES: "Por favor, escribe un CIF válido."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_es_AR.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_es_AR.js
new file mode 100644
index 0000000..5504876
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_es_AR.js
@@ -0,0 +1,27 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: ES (Spanish; Español)
+ * Region: AR (Argentina)
+ */
+$.extend( $.validator.messages, {
+ required: "Este campo es obligatorio.",
+ remote: "Por favor, completá este campo.",
+ email: "Por favor, escribí una dirección de correo válida.",
+ url: "Por favor, escribí una URL válida.",
+ date: "Por favor, escribí una fecha válida.",
+ dateISO: "Por favor, escribí una fecha (ISO) válida.",
+ number: "Por favor, escribí un número entero válido.",
+ digits: "Por favor, escribí sólo dígitos.",
+ creditcard: "Por favor, escribí un número de tarjeta válido.",
+ equalTo: "Por favor, escribí el mismo valor de nuevo.",
+ extension: "Por favor, escribí un valor con una extensión aceptada.",
+ maxlength: $.validator.format( "Por favor, no escribas más de {0} caracteres." ),
+ minlength: $.validator.format( "Por favor, no escribas menos de {0} caracteres." ),
+ rangelength: $.validator.format( "Por favor, escribí un valor entre {0} y {1} caracteres." ),
+ range: $.validator.format( "Por favor, escribí un valor entre {0} y {1}." ),
+ max: $.validator.format( "Por favor, escribí un valor menor o igual a {0}." ),
+ min: $.validator.format( "Por favor, escribí un valor mayor o igual a {0}." ),
+ nifES: "Por favor, escribí un NIF válido.",
+ nieES: "Por favor, escribí un NIE válido.",
+ cifES: "Por favor, escribí un CIF válido."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_es_PE.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_es_PE.js
new file mode 100644
index 0000000..261e2bf
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_es_PE.js
@@ -0,0 +1,27 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: ES (Spanish; Español)
+ * Region: PE (Perú)
+ */
+$.extend( $.validator.messages, {
+ required: "Este campo es obligatorio.",
+ remote: "Por favor, llene este campo.",
+ email: "Por favor, escriba un correo electrónico válido.",
+ url: "Por favor, escriba una URL válida.",
+ date: "Por favor, escriba una fecha válida.",
+ dateISO: "Por favor, escriba una fecha (ISO) válida.",
+ number: "Por favor, escriba un número válido.",
+ digits: "Por favor, escriba sólo dígitos.",
+ creditcard: "Por favor, escriba un número de tarjeta válido.",
+ equalTo: "Por favor, escriba el mismo valor de nuevo.",
+ extension: "Por favor, escriba un valor con una extensión permitida.",
+ maxlength: $.validator.format( "Por favor, no escriba más de {0} caracteres." ),
+ minlength: $.validator.format( "Por favor, no escriba menos de {0} caracteres." ),
+ rangelength: $.validator.format( "Por favor, escriba un valor entre {0} y {1} caracteres." ),
+ range: $.validator.format( "Por favor, escriba un valor entre {0} y {1}." ),
+ max: $.validator.format( "Por favor, escriba un valor menor o igual a {0}." ),
+ min: $.validator.format( "Por favor, escriba un valor mayor o igual a {0}." ),
+ nifES: "Por favor, escriba un NIF válido.",
+ nieES: "Por favor, escriba un NIE válido.",
+ cifES: "Por favor, escriba un CIF válido."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_et.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_et.js
new file mode 100644
index 0000000..ed1e780
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_et.js
@@ -0,0 +1,21 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: ET (Estonian; eesti, eesti keel)
+ */
+$.extend( $.validator.messages, {
+ required: "See väli peab olema täidetud.",
+ maxlength: $.validator.format( "Palun sisestage vähem kui {0} tähemärki." ),
+ minlength: $.validator.format( "Palun sisestage vähemalt {0} tähemärki." ),
+ rangelength: $.validator.format( "Palun sisestage väärtus vahemikus {0} kuni {1} tähemärki." ),
+ email: "Palun sisestage korrektne e-maili aadress.",
+ url: "Palun sisestage korrektne URL.",
+ date: "Palun sisestage korrektne kuupäev.",
+ dateISO: "Palun sisestage korrektne kuupäev (YYYY-MM-DD).",
+ number: "Palun sisestage korrektne number.",
+ digits: "Palun sisestage ainult numbreid.",
+ equalTo: "Palun sisestage sama väärtus uuesti.",
+ range: $.validator.format( "Palun sisestage väärtus vahemikus {0} kuni {1}." ),
+ max: $.validator.format( "Palun sisestage väärtus, mis on väiksem või võrdne arvuga {0}." ),
+ min: $.validator.format( "Palun sisestage väärtus, mis on suurem või võrdne arvuga {0}." ),
+ creditcard: "Palun sisestage korrektne krediitkaardi number."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_eu.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_eu.js
new file mode 100644
index 0000000..05ab5c6
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_eu.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: EU (Basque; euskara, euskera)
+ */
+$.extend( $.validator.messages, {
+ required: "Eremu hau beharrezkoa da.",
+ remote: "Mesedez, bete eremu hau.",
+ email: "Mesedez, idatzi baliozko posta helbide bat.",
+ url: "Mesedez, idatzi baliozko URL bat.",
+ date: "Mesedez, idatzi baliozko data bat.",
+ dateISO: "Mesedez, idatzi baliozko (ISO) data bat.",
+ number: "Mesedez, idatzi baliozko zenbaki oso bat.",
+ digits: "Mesedez, idatzi digituak soilik.",
+ creditcard: "Mesedez, idatzi baliozko txartel zenbaki bat.",
+ equalTo: "Mesedez, idatzi berdina berriro ere.",
+ extension: "Mesedez, idatzi onartutako luzapena duen balio bat.",
+ maxlength: $.validator.format( "Mesedez, ez idatzi {0} karaktere baino gehiago." ),
+ minlength: $.validator.format( "Mesedez, ez idatzi {0} karaktere baino gutxiago." ),
+ rangelength: $.validator.format( "Mesedez, idatzi {0} eta {1} karaktere arteko balio bat." ),
+ range: $.validator.format( "Mesedez, idatzi {0} eta {1} arteko balio bat." ),
+ max: $.validator.format( "Mesedez, idatzi {0} edo txikiagoa den balio bat." ),
+ min: $.validator.format( "Mesedez, idatzi {0} edo handiagoa den balio bat." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_fa.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_fa.js
new file mode 100644
index 0000000..edd6430
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_fa.js
@@ -0,0 +1,26 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: FA (Persian; فارسی)
+ */
+$.extend( $.validator.messages, {
+ required: "تکمیل این فیلد اجباری است.",
+ remote: "لطفا این فیلد را تصحیح کنید.",
+ email: ".لطفا یک ایمیل صحیح وارد کنید",
+ url: "لطفا آدرس صحیح وارد کنید.",
+ date: "لطفا یک تاریخ صحیح وارد کنید",
+ dateFA: "لطفا یک تاریخ صحیح وارد کنید",
+ dateISO: "لطفا تاریخ صحیح وارد کنید (ISO).",
+ number: "لطفا عدد صحیح وارد کنید.",
+ digits: "لطفا تنها رقم وارد کنید",
+ creditcard: "لطفا کریدیت کارت صحیح وارد کنید.",
+ equalTo: "لطفا مقدار برابری وارد کنید",
+ extension: "لطفا مقداری وارد کنید که ",
+ maxlength: $.validator.format( "لطفا بیشتر از {0} حرف وارد نکنید." ),
+ minlength: $.validator.format( "لطفا کمتر از {0} حرف وارد نکنید." ),
+ rangelength: $.validator.format( "لطفا مقداری بین {0} تا {1} حرف وارد کنید." ),
+ range: $.validator.format( "لطفا مقداری بین {0} تا {1} حرف وارد کنید." ),
+ max: $.validator.format( "لطفا مقداری کمتر از {0} وارد کنید." ),
+ min: $.validator.format( "لطفا مقداری بیشتر از {0} وارد کنید." ),
+ minWords: $.validator.format( "لطفا حداقل {0} کلمه وارد کنید." ),
+ maxWords: $.validator.format( "لطفا حداکثر {0} کلمه وارد کنید." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_fi.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_fi.js
new file mode 100644
index 0000000..8b9759c
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_fi.js
@@ -0,0 +1,21 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: FI (Finnish; suomi, suomen kieli)
+ */
+$.extend( $.validator.messages, {
+ required: "Tämä kenttä on pakollinen.",
+ email: "Syötä oikea sähköpostiosoite.",
+ url: "Syötä oikea URL-osoite.",
+ date: "Syötä oikea päivämäärä.",
+ dateISO: "Syötä oikea päivämäärä muodossa VVVV-KK-PP.",
+ number: "Syötä luku.",
+ creditcard: "Syötä voimassa oleva luottokorttinumero.",
+ digits: "Syötä pelkästään numeroita.",
+ equalTo: "Syötä sama arvo uudestaan.",
+ maxlength: $.validator.format( "Voit syöttää enintään {0} merkkiä." ),
+ minlength: $.validator.format( "Vähintään {0} merkkiä." ),
+ rangelength: $.validator.format( "Syötä vähintään {0} ja enintään {1} merkkiä." ),
+ range: $.validator.format( "Syötä arvo väliltä {0}–{1}." ),
+ max: $.validator.format( "Syötä arvo, joka on enintään {0}." ),
+ min: $.validator.format( "Syötä arvo, joka on vähintään {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_fr.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_fr.js
new file mode 100644
index 0000000..1fd9e8d
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_fr.js
@@ -0,0 +1,49 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: FR (French; français)
+ */
+$.extend( $.validator.messages, {
+ required: "Ce champ est obligatoire.",
+ remote: "Veuillez corriger ce champ.",
+ email: "Veuillez fournir une adresse électronique valide.",
+ url: "Veuillez fournir une adresse URL valide.",
+ date: "Veuillez fournir une date valide.",
+ dateISO: "Veuillez fournir une date valide (ISO).",
+ number: "Veuillez fournir un numéro valide.",
+ digits: "Veuillez fournir seulement des chiffres.",
+ creditcard: "Veuillez fournir un numéro de carte de crédit valide.",
+ equalTo: "Veuillez fournir encore la même valeur.",
+ extension: "Veuillez fournir une valeur avec une extension valide.",
+ maxlength: $.validator.format( "Veuillez fournir au plus {0} caractères." ),
+ minlength: $.validator.format( "Veuillez fournir au moins {0} caractères." ),
+ rangelength: $.validator.format( "Veuillez fournir une valeur qui contient entre {0} et {1} caractères." ),
+ range: $.validator.format( "Veuillez fournir une valeur entre {0} et {1}." ),
+ max: $.validator.format( "Veuillez fournir une valeur inférieure ou égale à {0}." ),
+ min: $.validator.format( "Veuillez fournir une valeur supérieure ou égale à {0}." ),
+ maxWords: $.validator.format( "Veuillez fournir au plus {0} mots." ),
+ minWords: $.validator.format( "Veuillez fournir au moins {0} mots." ),
+ rangeWords: $.validator.format( "Veuillez fournir entre {0} et {1} mots." ),
+ letterswithbasicpunc: "Veuillez fournir seulement des lettres et des signes de ponctuation.",
+ alphanumeric: "Veuillez fournir seulement des lettres, nombres, espaces et soulignages.",
+ lettersonly: "Veuillez fournir seulement des lettres.",
+ nowhitespace: "Veuillez ne pas inscrire d'espaces blancs.",
+ ziprange: "Veuillez fournir un code postal entre 902xx-xxxx et 905-xx-xxxx.",
+ integer: "Veuillez fournir un nombre non décimal qui est positif ou négatif.",
+ vinUS: "Veuillez fournir un numéro d'identification du véhicule (VIN).",
+ dateITA: "Veuillez fournir une date valide.",
+ time: "Veuillez fournir une heure valide entre 00:00 et 23:59.",
+ phoneUS: "Veuillez fournir un numéro de téléphone valide.",
+ phoneUK: "Veuillez fournir un numéro de téléphone valide.",
+ mobileUK: "Veuillez fournir un numéro de téléphone mobile valide.",
+ strippedminlength: $.validator.format( "Veuillez fournir au moins {0} caractères." ),
+ email2: "Veuillez fournir une adresse électronique valide.",
+ url2: "Veuillez fournir une adresse URL valide.",
+ creditcardtypes: "Veuillez fournir un numéro de carte de crédit valide.",
+ ipv4: "Veuillez fournir une adresse IP v4 valide.",
+ ipv6: "Veuillez fournir une adresse IP v6 valide.",
+ require_from_group: "Veuillez fournir au moins {0} de ces champs.",
+ nifES: "Veuillez fournir un numéro NIF valide.",
+ nieES: "Veuillez fournir un numéro NIE valide.",
+ cifES: "Veuillez fournir un numéro CIF valide.",
+ postalCodeCA: "Veuillez fournir un code postal valide."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ge.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ge.js
new file mode 100644
index 0000000..635b903
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ge.js
@@ -0,0 +1,23 @@
+/**
+ * @author @tatocaster
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: GE (Georgian; ქართული)
+ */
+$.extend( $.validator.messages, {
+ required: "ეს ველი სავალდებულოა",
+ remote: "გთხოვთ შეასწოროთ.",
+ email: "გთხოვთ შეიყვანოთ სწორი ფორმატით.",
+ url: "გთხოვთ შეიყვანოთ სწორი ფორმატით.",
+ date: "გთხოვთ შეიყვანოთ სწორი თარიღი.",
+ dateISO: "გთხოვთ შეიყვანოთ სწორი ფორმატით ( ISO ).",
+ number: "გთხოვთ შეიყვანოთ რიცხვი.",
+ digits: "დაშვებულია მხოლოდ ციფრები.",
+ creditcard: "გთხოვთ შეიყვანოთ სწორი ფორმატის ბარათის კოდი.",
+ equalTo: "გთხოვთ შეიყვანოთ იგივე მნიშვნელობა.",
+ maxlength: $.validator.format( "გთხოვთ შეიყვანოთ არა უმეტეს {0} სიმბოლოსი." ),
+ minlength: $.validator.format( "შეიყვანეთ მინიმუმ {0} სიმბოლო." ),
+ rangelength: $.validator.format( "გთხოვთ შეიყვანოთ {0} -დან {1} -მდე რაოდენობის სიმბოლოები." ),
+ range: $.validator.format( "შეიყვანეთ {0} -სა {1} -ს შორის." ),
+ max: $.validator.format( "გთხოვთ შეიყვანოთ მნიშვნელობა ნაკლები ან ტოლი {0} -ს." ),
+ min: $.validator.format( "გთხოვთ შეიყვანოთ მნიშვნელობა მეტი ან ტოლი {0} -ს." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_gl.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_gl.js
new file mode 100644
index 0000000..cf7e3b0
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_gl.js
@@ -0,0 +1,28 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: GL (Galician; Galego)
+ */
+( function( $ ) {
+ $.extend( $.validator.messages, {
+ required: "Este campo é obrigatorio.",
+ remote: "Por favor, cubre este campo.",
+ email: "Por favor, escribe unha dirección de correo válida.",
+ url: "Por favor, escribe unha URL válida.",
+ date: "Por favor, escribe unha data válida.",
+ dateISO: "Por favor, escribe unha data (ISO) válida.",
+ number: "Por favor, escribe un número válido.",
+ digits: "Por favor, escribe só díxitos.",
+ creditcard: "Por favor, escribe un número de tarxeta válido.",
+ equalTo: "Por favor, escribe o mesmo valor de novo.",
+ extension: "Por favor, escribe un valor cunha extensión aceptada.",
+ maxlength: $.validator.format( "Por favor, non escribas máis de {0} caracteres." ),
+ minlength: $.validator.format( "Por favor, non escribas menos de {0} caracteres." ),
+ rangelength: $.validator.format( "Por favor, escribe un valor entre {0} e {1} caracteres." ),
+ range: $.validator.format( "Por favor, escribe un valor entre {0} e {1}." ),
+ max: $.validator.format( "Por favor, escribe un valor menor ou igual a {0}." ),
+ min: $.validator.format( "Por favor, escribe un valor maior ou igual a {0}." ),
+ nifES: "Por favor, escribe un NIF válido.",
+ nieES: "Por favor, escribe un NIE válido.",
+ cifES: "Por favor, escribe un CIF válido."
+ } );
+}( jQuery ) );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_he.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_he.js
new file mode 100644
index 0000000..6abd2fa
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_he.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: HE (Hebrew; עברית)
+ */
+$.extend( $.validator.messages, {
+ required: "השדה הזה הינו שדה חובה",
+ remote: "נא לתקן שדה זה",
+ email: "נא למלא כתובת דוא\"ל חוקית",
+ url: "נא למלא כתובת אינטרנט חוקית",
+ date: "נא למלא תאריך חוקי",
+ dateISO: "נא למלא תאריך חוקי (ISO)",
+ number: "נא למלא מספר",
+ digits: "נא למלא רק מספרים",
+ creditcard: "נא למלא מספר כרטיס אשראי חוקי",
+ equalTo: "נא למלא את אותו ערך שוב",
+ extension: "נא למלא ערך עם סיומת חוקית",
+ maxlength: $.validator.format( ".נא לא למלא יותר מ- {0} תווים" ),
+ minlength: $.validator.format( "נא למלא לפחות {0} תווים" ),
+ rangelength: $.validator.format( "נא למלא ערך בין {0} ל- {1} תווים" ),
+ range: $.validator.format( "נא למלא ערך בין {0} ל- {1}" ),
+ max: $.validator.format( "נא למלא ערך קטן או שווה ל- {0}" ),
+ min: $.validator.format( "נא למלא ערך גדול או שווה ל- {0}" )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_hr.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_hr.js
new file mode 100644
index 0000000..d829550
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_hr.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: HR (Croatia; hrvatski jezik)
+ */
+$.extend( $.validator.messages, {
+ required: "Ovo polje je obavezno.",
+ remote: "Ovo polje treba popraviti.",
+ email: "Unesite ispravnu e-mail adresu.",
+ url: "Unesite ispravan URL.",
+ date: "Unesite ispravan datum.",
+ dateISO: "Unesite ispravan datum (ISO).",
+ number: "Unesite ispravan broj.",
+ digits: "Unesite samo brojeve.",
+ creditcard: "Unesite ispravan broj kreditne kartice.",
+ equalTo: "Unesite ponovo istu vrijednost.",
+ extension: "Unesite vrijednost sa ispravnom ekstenzijom.",
+ maxlength: $.validator.format( "Maksimalni broj znakova je {0} ." ),
+ minlength: $.validator.format( "Minimalni broj znakova je {0} ." ),
+ rangelength: $.validator.format( "Unesite vrijednost između {0} i {1} znakova." ),
+ range: $.validator.format( "Unesite vrijednost između {0} i {1}." ),
+ max: $.validator.format( "Unesite vrijednost manju ili jednaku {0}." ),
+ min: $.validator.format( "Unesite vrijednost veću ili jednaku {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_hu.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_hu.js
new file mode 100644
index 0000000..0f3a9d2
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_hu.js
@@ -0,0 +1,22 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: HU (Hungarian; Magyar)
+ */
+$.extend( $.validator.messages, {
+ required: "Kötelező megadni.",
+ maxlength: $.validator.format( "Legfeljebb {0} karakter hosszú legyen." ),
+ minlength: $.validator.format( "Legalább {0} karakter hosszú legyen." ),
+ rangelength: $.validator.format( "Legalább {0} és legfeljebb {1} karakter hosszú legyen." ),
+ email: "Érvényes e-mail címnek kell lennie.",
+ url: "Érvényes URL-nek kell lennie.",
+ date: "Dátumnak kell lennie.",
+ number: "Számnak kell lennie.",
+ digits: "Csak számjegyek lehetnek.",
+ equalTo: "Meg kell egyeznie a két értéknek.",
+ range: $.validator.format( "{0} és {1} közé kell esnie." ),
+ max: $.validator.format( "Nem lehet nagyobb, mint {0}." ),
+ min: $.validator.format( "Nem lehet kisebb, mint {0}." ),
+ creditcard: "Érvényes hitelkártyaszámnak kell lennie.",
+ remote: "Kérem javítsa ki ezt a mezőt.",
+ dateISO: "Kérem írjon be egy érvényes dátumot (ISO)."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_hy_AM.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_hy_AM.js
new file mode 100644
index 0000000..c0dea09
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_hy_AM.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: HY_AM (Armenian; հայերեն լեզու)
+ */
+$.extend( $.validator.messages, {
+ required: "Պարտադիր լրացման դաշտ",
+ remote: "Ներմուծեք ճիշտ արժեքը",
+ email: "Ներմուծեք վավեր էլեկտրոնային փոստի հասցե",
+ url: "Ներմուծեք վավեր URL",
+ date: "Ներմուծեք վավեր ամսաթիվ",
+ dateISO: "Ներմուծեք ISO ֆորմատով վավեր ամսաթիվ։",
+ number: "Ներմուծեք թիվ",
+ digits: "Ներմուծեք միայն թվեր",
+ creditcard: "Ներմուծեք ճիշտ բանկային քարտի համար",
+ equalTo: "Ներմուծեք միևնուն արժեքը ևս մեկ անգամ",
+ extension: "Ընտրեք ճիշտ ընդլանումով ֆայլ",
+ maxlength: $.validator.format( "Ներմուծեք ոչ ավել քան {0} նիշ" ),
+ minlength: $.validator.format( "Ներմուծեք ոչ պակաս քան {0} նիշ" ),
+ rangelength: $.validator.format( "Ներմուծեք {0}֊ից {1} երկարությամբ արժեք" ),
+ range: $.validator.format( "Ներմուծեք թիվ {0}֊ից {1} միջակայքում" ),
+ max: $.validator.format( "Ներմուծեք թիվ, որը փոքր կամ հավասար է {0}֊ին" ),
+ min: $.validator.format( "Ներմուծեք թիվ, որը մեծ կամ հավասար է {0}֊ին" )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_id.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_id.js
new file mode 100644
index 0000000..efd729b
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_id.js
@@ -0,0 +1,22 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: ID (Indonesia; Indonesian)
+ */
+$.extend( $.validator.messages, {
+ required: "Kolom ini diperlukan.",
+ remote: "Harap benarkan kolom ini.",
+ email: "Silakan masukkan format email yang benar.",
+ url: "Silakan masukkan format URL yang benar.",
+ date: "Silakan masukkan format tanggal yang benar.",
+ dateISO: "Silakan masukkan format tanggal(ISO) yang benar.",
+ number: "Silakan masukkan angka yang benar.",
+ digits: "Harap masukan angka saja.",
+ creditcard: "Harap masukkan format kartu kredit yang benar.",
+ equalTo: "Harap masukkan nilai yg sama dengan sebelumnya.",
+ maxlength: $.validator.format( "Input dibatasi hanya {0} karakter." ),
+ minlength: $.validator.format( "Input tidak kurang dari {0} karakter." ),
+ rangelength: $.validator.format( "Panjang karakter yg diizinkan antara {0} dan {1} karakter." ),
+ range: $.validator.format( "Harap masukkan nilai antara {0} dan {1}." ),
+ max: $.validator.format( "Harap masukkan nilai lebih kecil atau sama dengan {0}." ),
+ min: $.validator.format( "Harap masukkan nilai lebih besar atau sama dengan {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_is.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_is.js
new file mode 100644
index 0000000..4040909
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_is.js
@@ -0,0 +1,21 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: IS (Icelandic; íslenska)
+ */
+$.extend( $.validator.messages, {
+ required: "Þessi reitur er nauðsynlegur.",
+ remote: "Lagaðu þennan reit.",
+ maxlength: $.validator.format( "Sláðu inn mest {0} stafi." ),
+ minlength: $.validator.format( "Sláðu inn minnst {0} stafi." ),
+ rangelength: $.validator.format( "Sláðu inn minnst {0} og mest {1} stafi." ),
+ email: "Sláðu inn gilt netfang.",
+ url: "Sláðu inn gilda vefslóð.",
+ date: "Sláðu inn gilda dagsetningu.",
+ number: "Sláðu inn tölu.",
+ digits: "Sláðu inn tölustafi eingöngu.",
+ equalTo: "Sláðu sama gildi inn aftur.",
+ range: $.validator.format( "Sláðu inn gildi milli {0} og {1}." ),
+ max: $.validator.format( "Sláðu inn gildi sem er minna en eða jafnt og {0}." ),
+ min: $.validator.format( "Sláðu inn gildi sem er stærra en eða jafnt og {0}." ),
+ creditcard: "Sláðu inn gilt greiðslukortanúmer."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_it.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_it.js
new file mode 100644
index 0000000..54f07e1
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_it.js
@@ -0,0 +1,27 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: IT (Italian; Italiano)
+ */
+$.extend( $.validator.messages, {
+ required: "Campo obbligatorio",
+ remote: "Controlla questo campo",
+ email: "Inserisci un indirizzo email valido",
+ url: "Inserisci un indirizzo web valido",
+ date: "Inserisci una data valida",
+ dateISO: "Inserisci una data valida (ISO)",
+ number: "Inserisci un numero valido",
+ digits: "Inserisci solo numeri",
+ creditcard: "Inserisci un numero di carta di credito valido",
+ equalTo: "Il valore non corrisponde",
+ extension: "Inserisci un valore con un'estensione valida",
+ maxlength: $.validator.format( "Non inserire più di {0} caratteri" ),
+ minlength: $.validator.format( "Inserisci almeno {0} caratteri" ),
+ rangelength: $.validator.format( "Inserisci un valore compreso tra {0} e {1} caratteri" ),
+ range: $.validator.format( "Inserisci un valore compreso tra {0} e {1}" ),
+ max: $.validator.format( "Inserisci un valore minore o uguale a {0}" ),
+ min: $.validator.format( "Inserisci un valore maggiore o uguale a {0}" ),
+ nifES: "Inserisci un NIF valido",
+ nieES: "Inserisci un NIE valido",
+ cifES: "Inserisci un CIF valido",
+ currency: "Inserisci una valuta valida"
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ja.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ja.js
new file mode 100644
index 0000000..5dcf240
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ja.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: JA (Japanese; 日本語)
+ */
+$.extend( $.validator.messages, {
+ required: "このフィールドは必須です。",
+ remote: "このフィールドを修正してください。",
+ email: "有効なEメールアドレスを入力してください。",
+ url: "有効なURLを入力してください。",
+ date: "有効な日付を入力してください。",
+ dateISO: "有効な日付(ISO)を入力してください。",
+ number: "有効な数字を入力してください。",
+ digits: "数字のみを入力してください。",
+ creditcard: "有効なクレジットカード番号を入力してください。",
+ equalTo: "同じ値をもう一度入力してください。",
+ extension: "有効な拡張子を含む値を入力してください。",
+ maxlength: $.validator.format( "{0} 文字以内で入力してください。" ),
+ minlength: $.validator.format( "{0} 文字以上で入力してください。" ),
+ rangelength: $.validator.format( "{0} 文字から {1} 文字までの値を入力してください。" ),
+ range: $.validator.format( "{0} から {1} までの値を入力してください。" ),
+ max: $.validator.format( "{0} 以下の値を入力してください。" ),
+ min: $.validator.format( "{0} 以上の値を入力してください。" )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ka.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ka.js
new file mode 100644
index 0000000..8849022
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ka.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: KA (Georgian; ქართული)
+ */
+$.extend( $.validator.messages, {
+ required: "ამ ველის შევსება აუცილებელია.",
+ remote: "გთხოვთ მიუთითოთ სწორი მნიშვნელობა.",
+ email: "გთხოვთ მიუთითოთ ელ-ფოსტის კორექტული მისამართი.",
+ url: "გთხოვთ მიუთითოთ კორექტული URL.",
+ date: "გთხოვთ მიუთითოთ კორექტული თარიღი.",
+ dateISO: "გთხოვთ მიუთითოთ კორექტული თარიღი ISO ფორმატში.",
+ number: "გთხოვთ მიუთითოთ ციფრი.",
+ digits: "გთხოვთ მიუთითოთ მხოლოდ ციფრები.",
+ creditcard: "გთხოვთ მიუთითოთ საკრედიტო ბარათის კორექტული ნომერი.",
+ equalTo: "გთხოვთ მიუთითოთ ასეთივე მნიშვნელობა კიდევ ერთხელ.",
+ extension: "გთხოვთ აირჩიოთ ფაილი კორექტული გაფართოებით.",
+ maxlength: $.validator.format( "დასაშვებია არაუმეტეს {0} სიმბოლო." ),
+ minlength: $.validator.format( "აუცილებელია შეიყვანოთ მინიმუმ {0} სიმბოლო." ),
+ rangelength: $.validator.format( "ტექსტში სიმბოლოების რაოდენობა უნდა იყოს {0}-დან {1}-მდე." ),
+ range: $.validator.format( "გთხოვთ შეიყვანოთ ციფრი {0}-დან {1}-მდე." ),
+ max: $.validator.format( "გთხოვთ შეიყვანოთ ციფრი რომელიც ნაკლებია ან უდრის {0}-ს." ),
+ min: $.validator.format( "გთხოვთ შეიყვანოთ ციფრი რომელიც მეტია ან უდრის {0}-ს." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_kk.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_kk.js
new file mode 100644
index 0000000..41ca482
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_kk.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: KK (Kazakh; қазақ тілі)
+ */
+$.extend( $.validator.messages, {
+ required: "Бұл өрісті міндетті түрде толтырыңыз.",
+ remote: "Дұрыс мағына енгізуіңізді сұраймыз.",
+ email: "Нақты электронды поштаңызды енгізуіңізді сұраймыз.",
+ url: "Нақты URL-ды енгізуіңізді сұраймыз.",
+ date: "Нақты URL-ды енгізуіңізді сұраймыз.",
+ dateISO: "Нақты ISO форматымен сәйкес датасын енгізуіңізді сұраймыз.",
+ number: "Күнді енгізуіңізді сұраймыз.",
+ digits: "Тек қана сандарды енгізуіңізді сұраймыз.",
+ creditcard: "Несие картасының нөмірін дұрыс енгізуіңізді сұраймыз.",
+ equalTo: "Осы мәнді қайта енгізуіңізді сұраймыз.",
+ extension: "Файлдың кеңейтуін дұрыс таңдаңыз.",
+ maxlength: $.validator.format( "Ұзындығы {0} символдан көр болмасын." ),
+ minlength: $.validator.format( "Ұзындығы {0} символдан аз болмасын." ),
+ rangelength: $.validator.format( "Ұзындығы {0}-{1} дейін мән енгізуіңізді сұраймыз." ),
+ range: $.validator.format( "Пожалуйста, введите число от {0} до {1}. - {0} - {1} санын енгізуіңізді сұраймыз." ),
+ max: $.validator.format( "{0} аз немесе тең санын енгізуіңіді сұраймыз." ),
+ min: $.validator.format( "{0} көп немесе тең санын енгізуіңізді сұраймыз." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ko.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ko.js
new file mode 100644
index 0000000..d9f4ab0
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ko.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: KO (Korean; 한국어)
+ */
+$.extend( $.validator.messages, {
+ required: "필수 항목입니다.",
+ remote: "항목을 수정하세요.",
+ email: "유효하지 않은 E-Mail주소입니다.",
+ url: "유효하지 않은 URL입니다.",
+ date: "올바른 날짜를 입력하세요.",
+ dateISO: "올바른 날짜(ISO)를 입력하세요.",
+ number: "유효한 숫자가 아닙니다.",
+ digits: "숫자만 입력 가능합니다.",
+ creditcard: "신용카드 번호가 바르지 않습니다.",
+ equalTo: "같은 값을 다시 입력하세요.",
+ extension: "올바른 확장자가 아닙니다.",
+ maxlength: $.validator.format( "{0}자를 넘을 수 없습니다. " ),
+ minlength: $.validator.format( "{0}자 이상 입력하세요." ),
+ rangelength: $.validator.format( "문자 길이가 {0} 에서 {1} 사이의 값을 입력하세요." ),
+ range: $.validator.format( "{0} 에서 {1} 사이의 값을 입력하세요." ),
+ max: $.validator.format( "{0} 이하의 값을 입력하세요." ),
+ min: $.validator.format( "{0} 이상의 값을 입력하세요." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_lt.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_lt.js
new file mode 100644
index 0000000..9d4ed35
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_lt.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: LT (Lithuanian; lietuvių kalba)
+ */
+$.extend( $.validator.messages, {
+ required: "Šis laukas yra privalomas.",
+ remote: "Prašau pataisyti šį lauką.",
+ email: "Prašau įvesti teisingą elektroninio pašto adresą.",
+ url: "Prašau įvesti teisingą URL.",
+ date: "Prašau įvesti teisingą datą.",
+ dateISO: "Prašau įvesti teisingą datą (ISO).",
+ number: "Prašau įvesti teisingą skaičių.",
+ digits: "Prašau naudoti tik skaitmenis.",
+ creditcard: "Prašau įvesti teisingą kreditinės kortelės numerį.",
+ equalTo: "Prašau įvestį tą pačią reikšmę dar kartą.",
+ extension: "Prašau įvesti reikšmę su teisingu plėtiniu.",
+ maxlength: $.validator.format( "Prašau įvesti ne daugiau kaip {0} simbolių." ),
+ minlength: $.validator.format( "Prašau įvesti bent {0} simbolius." ),
+ rangelength: $.validator.format( "Prašau įvesti reikšmes, kurių ilgis nuo {0} iki {1} simbolių." ),
+ range: $.validator.format( "Prašau įvesti reikšmę intervale nuo {0} iki {1}." ),
+ max: $.validator.format( "Prašau įvesti reikšmę mažesnę arba lygią {0}." ),
+ min: $.validator.format( "Prašau įvesti reikšmę didesnę arba lygią {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_lv.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_lv.js
new file mode 100644
index 0000000..bc5632b
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_lv.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: LV (Latvian; latviešu valoda)
+ */
+$.extend( $.validator.messages, {
+ required: "Šis lauks ir obligāts.",
+ remote: "Lūdzu, pārbaudiet šo lauku.",
+ email: "Lūdzu, ievadiet derīgu e-pasta adresi.",
+ url: "Lūdzu, ievadiet derīgu URL adresi.",
+ date: "Lūdzu, ievadiet derīgu datumu.",
+ dateISO: "Lūdzu, ievadiet derīgu datumu (ISO).",
+ number: "Lūdzu, ievadiet derīgu numuru.",
+ digits: "Lūdzu, ievadiet tikai ciparus.",
+ creditcard: "Lūdzu, ievadiet derīgu kredītkartes numuru.",
+ equalTo: "Lūdzu, ievadiet to pašu vēlreiz.",
+ extension: "Lūdzu, ievadiet vērtību ar derīgu paplašinājumu.",
+ maxlength: $.validator.format( "Lūdzu, ievadiet ne vairāk kā {0} rakstzīmes." ),
+ minlength: $.validator.format( "Lūdzu, ievadiet vismaz {0} rakstzīmes." ),
+ rangelength: $.validator.format( "Lūdzu ievadiet {0} līdz {1} rakstzīmes." ),
+ range: $.validator.format( "Lūdzu, ievadiet skaitli no {0} līdz {1}." ),
+ max: $.validator.format( "Lūdzu, ievadiet skaitli, kurš ir mazāks vai vienāds ar {0}." ),
+ min: $.validator.format( "Lūdzu, ievadiet skaitli, kurš ir lielāks vai vienāds ar {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_mk.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_mk.js
new file mode 100644
index 0000000..21da328
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_mk.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: MK (Macedonian; македонски јазик)
+ */
+$.extend( $.validator.messages, {
+ required: "Полето е задолжително.",
+ remote: "Поправете го ова поле",
+ email: "Внесете правилна e-mail адреса",
+ url: "Внесете правилен URL.",
+ date: "Внесете правилен датум",
+ dateISO: "Внесете правилен датум (ISO).",
+ number: "Внесете правилен број.",
+ digits: "Внесете само бројки.",
+ creditcard: "Внесете правилен број на кредитната картичка.",
+ equalTo: "Внесете ја истата вредност повторно.",
+ extension: "Внесете вредност со соодветна екстензија.",
+ maxlength: $.validator.format( "Внесете максимално {0} знаци." ),
+ minlength: $.validator.format( "Внесете барем {0} знаци." ),
+ rangelength: $.validator.format( "Внесете вредност со должина помеѓу {0} и {1} знаци." ),
+ range: $.validator.format( "Внесете вредност помеѓу {0} и {1}." ),
+ max: $.validator.format( "Внесете вредност помала или еднаква на {0}." ),
+ min: $.validator.format( "Внесете вредност поголема или еднаква на {0}" )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_my.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_my.js
new file mode 100644
index 0000000..f652345
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_my.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: MY (Malay; Melayu)
+ */
+$.extend( $.validator.messages, {
+ required: "Medan ini diperlukan.",
+ remote: "Sila betulkan medan ini.",
+ email: "Sila masukkan alamat emel yang betul.",
+ url: "Sila masukkan URL yang betul.",
+ date: "Sila masukkan tarikh yang betul.",
+ dateISO: "Sila masukkan tarikh(ISO) yang betul.",
+ number: "Sila masukkan nombor yang betul.",
+ digits: "Sila masukkan nilai digit sahaja.",
+ creditcard: "Sila masukkan nombor kredit kad yang betul.",
+ equalTo: "Sila masukkan nilai yang sama semula.",
+ extension: "Sila masukkan nilai yang telah diterima.",
+ maxlength: $.validator.format( "Sila masukkan tidak lebih dari {0} aksara." ),
+ minlength: $.validator.format( "Sila masukkan sekurang-kurangnya {0} aksara." ),
+ rangelength: $.validator.format( "Sila masukkan antara {0} dan {1} panjang aksara." ),
+ range: $.validator.format( "Sila masukkan nilai antara {0} dan {1} aksara." ),
+ max: $.validator.format( "Sila masukkan nilai yang kurang atau sama dengan {0}." ),
+ min: $.validator.format( "Sila masukkan nilai yang lebih atau sama dengan {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_nl.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_nl.js
new file mode 100644
index 0000000..1487ace
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_nl.js
@@ -0,0 +1,33 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: NL (Dutch; Nederlands, Vlaams)
+ */
+$.extend( $.validator.messages, {
+ required: "Dit is een verplicht veld.",
+ remote: "Controleer dit veld.",
+ email: "Vul hier een geldig e-mailadres in.",
+ url: "Vul hier een geldige URL in.",
+ date: "Vul hier een geldige datum in.",
+ dateISO: "Vul hier een geldige datum in (ISO-formaat).",
+ number: "Vul hier een geldig getal in.",
+ digits: "Vul hier alleen getallen in.",
+ creditcard: "Vul hier een geldig creditcardnummer in.",
+ equalTo: "Vul hier dezelfde waarde in.",
+ extension: "Vul hier een waarde in met een geldige extensie.",
+ maxlength: $.validator.format( "Vul hier maximaal {0} tekens in." ),
+ minlength: $.validator.format( "Vul hier minimaal {0} tekens in." ),
+ rangelength: $.validator.format( "Vul hier een waarde in van minimaal {0} en maximaal {1} tekens." ),
+ range: $.validator.format( "Vul hier een waarde in van minimaal {0} en maximaal {1}." ),
+ max: $.validator.format( "Vul hier een waarde in kleiner dan of gelijk aan {0}." ),
+ min: $.validator.format( "Vul hier een waarde in groter dan of gelijk aan {0}." ),
+
+ // For validations in additional-methods.js
+ iban: "Vul hier een geldig IBAN in.",
+ dateNL: "Vul hier een geldige datum in.",
+ phoneNL: "Vul hier een geldig Nederlands telefoonnummer in.",
+ mobileNL: "Vul hier een geldig Nederlands mobiel telefoonnummer in.",
+ postalcodeNL: "Vul hier een geldige postcode in.",
+ bankaccountNL: "Vul hier een geldig bankrekeningnummer in.",
+ giroaccountNL: "Vul hier een geldig gironummer in.",
+ bankorgiroaccountNL: "Vul hier een geldig bank- of gironummer in."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_no.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_no.js
new file mode 100644
index 0000000..aff23cf
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_no.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: NO (Norwegian; Norsk)
+ */
+$.extend( $.validator.messages, {
+ required: "Dette feltet er obligatorisk.",
+ maxlength: $.validator.format( "Maksimalt {0} tegn." ),
+ minlength: $.validator.format( "Minimum {0} tegn." ),
+ rangelength: $.validator.format( "Angi minimum {0} og maksimum {1} tegn." ),
+ email: "Oppgi en gyldig epostadresse.",
+ url: "Angi en gyldig URL.",
+ date: "Angi en gyldig dato.",
+ dateISO: "Angi en gyldig dato (&ARING;&ARING;&ARING;&ARING;-MM-DD).",
+ dateSE: "Angi en gyldig dato.",
+ number: "Angi et gyldig nummer.",
+ numberSE: "Angi et gyldig nummer.",
+ digits: "Skriv kun tall.",
+ equalTo: "Skriv samme verdi igjen.",
+ range: $.validator.format( "Angi en verdi mellom {0} og {1}." ),
+ max: $.validator.format( "Angi en verdi som er mindre eller lik {0}." ),
+ min: $.validator.format( "Angi en verdi som er større eller lik {0}." ),
+ creditcard: "Angi et gyldig kredittkortnummer."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_pl.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_pl.js
new file mode 100644
index 0000000..1a94b3c
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_pl.js
@@ -0,0 +1,24 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: PL (Polish; język polski, polszczyzna)
+ */
+$.extend( $.validator.messages, {
+ required: "To pole jest wymagane.",
+ remote: "Proszę o wypełnienie tego pola.",
+ email: "Proszę o podanie prawidłowego adresu email.",
+ url: "Proszę o podanie prawidłowego URL.",
+ date: "Proszę o podanie prawidłowej daty.",
+ dateISO: "Proszę o podanie prawidłowej daty (ISO).",
+ number: "Proszę o podanie prawidłowej liczby.",
+ digits: "Proszę o podanie samych cyfr.",
+ creditcard: "Proszę o podanie prawidłowej karty kredytowej.",
+ equalTo: "Proszę o podanie tej samej wartości ponownie.",
+ extension: "Proszę o podanie wartości z prawidłowym rozszerzeniem.",
+ maxlength: $.validator.format( "Proszę o podanie nie więcej niż {0} znaków." ),
+ minlength: $.validator.format( "Proszę o podanie przynajmniej {0} znaków." ),
+ rangelength: $.validator.format( "Proszę o podanie wartości o długości od {0} do {1} znaków." ),
+ range: $.validator.format( "Proszę o podanie wartości z przedziału od {0} do {1}." ),
+ max: $.validator.format( "Proszę o podanie wartości mniejszej bądź równej {0}." ),
+ min: $.validator.format( "Proszę o podanie wartości większej bądź równej {0}." ),
+ pattern: $.validator.format( "Pole zawiera niedozwolone znaki." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_pt_BR.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_pt_BR.js
new file mode 100644
index 0000000..a7eeec1
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_pt_BR.js
@@ -0,0 +1,75 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: PT (Portuguese; português)
+ * Region: BR (Brazil)
+ */
+$.extend( $.validator.messages, {
+
+ // Core
+ required: "Este campo é requerido.",
+ remote: "Por favor, corrija este campo.",
+ email: "Por favor, forneça um endereço de email válido.",
+ url: "Por favor, forneça uma URL válida.",
+ date: "Por favor, forneça uma data válida.",
+ dateISO: "Por favor, forneça uma data válida (ISO).",
+ number: "Por favor, forneça um número válido.",
+ digits: "Por favor, forneça somente dígitos.",
+ creditcard: "Por favor, forneça um cartão de crédito válido.",
+ equalTo: "Por favor, forneça o mesmo valor novamente.",
+ maxlength: $.validator.format( "Por favor, forneça não mais que {0} caracteres." ),
+ minlength: $.validator.format( "Por favor, forneça ao menos {0} caracteres." ),
+ rangelength: $.validator.format( "Por favor, forneça um valor entre {0} e {1} caracteres de comprimento." ),
+ range: $.validator.format( "Por favor, forneça um valor entre {0} e {1}." ),
+ max: $.validator.format( "Por favor, forneça um valor menor ou igual a {0}." ),
+ min: $.validator.format( "Por favor, forneça um valor maior ou igual a {0}." ),
+
+ // Metodos Adicionais
+ maxWords: $.validator.format( "Por favor, forneça com {0} palavras ou menos." ),
+ minWords: $.validator.format( "Por favor, forneça pelo menos {0} palavras." ),
+ rangeWords: $.validator.format( "Por favor, forneça entre {0} e {1} palavras." ),
+ accept: "Por favor, forneça um tipo válido.",
+ alphanumeric: "Por favor, forneça somente com letras, números e sublinhados.",
+ bankaccountNL: "Por favor, forneça com um número de conta bancária válida.",
+ bankorgiroaccountNL: "Por favor, forneça um banco válido ou número de conta.",
+ bic: "Por favor, forneça um código BIC válido.",
+ cifES: "Por favor, forneça um código CIF válido.",
+ creditcardtypes: "Por favor, forneça um número de cartão de crédito válido.",
+ currency: "Por favor, forneça uma moeda válida.",
+ dateFA: "Por favor, forneça uma data correta.",
+ dateITA: "Por favor, forneça uma data correta.",
+ dateNL: "Por favor, forneça uma data correta.",
+ extension: "Por favor, forneça um valor com uma extensão válida.",
+ giroaccountNL: "Por favor, forneça um número de conta corrente válido.",
+ iban: "Por favor, forneça um código IBAN válido.",
+ integer: "Por favor, forneça um número não decimal.",
+ ipv4: "Por favor, forneça um IPv4 válido.",
+ ipv6: "Por favor, forneça um IPv6 válido.",
+ lettersonly: "Por favor, forneça apenas com letras.",
+ letterswithbasicpunc: "Por favor, forneça apenas letras ou pontuações.",
+ mobileNL: "Por favor, forneceça um número válido de telefone.",
+ mobileUK: "Por favor, forneceça um número válido de telefone.",
+ nieES: "Por favor, forneça um NIE válido.",
+ nifES: "Por favor, forneça um NIF válido.",
+ nowhitespace: "Por favor, não utilize espaços em branco.",
+ pattern: "O formato fornenecido é inválido.",
+ phoneNL: "Por favor, forneceça um número de telefone válido.",
+ phoneUK: "Por favor, forneceça um número de telefone válido.",
+ phoneUS: "Por favor, forneceça um número de telefone válido.",
+ phonesUK: "Por favor, forneceça um número de telefone válido.",
+ postalCodeCA: "Por favor, forneceça um número de código postal válido.",
+ postalcodeIT: "Por favor, forneceça um número de código postal válido.",
+ postalcodeNL: "Por favor, forneceça um número de código postal válido.",
+ postcodeUK: "Por favor, forneceça um número de código postal válido.",
+ postalcodeBR: "Por favor, forneça um CEP válido.",
+ require_from_group: $.validator.format( "Por favor, forneça pelo menos {0} destes campos." ),
+ skip_or_fill_minimum: $.validator.format( "Por favor, optar entre ignorar esses campos ou preencher pelo menos {0} deles." ),
+ stateUS: "Por favor, forneça um estado válido.",
+ strippedminlength: $.validator.format( "Por favor, forneça pelo menos {0} caracteres." ),
+ time: "Por favor, forneça um horário válido, no intervado de 00:00 e 23:59.",
+ time12h: "Por favor, forneça um horário válido, no intervado de 01:00 e 12:59 am/pm.",
+ url2: "Por favor, forneceça uma URL válida.",
+ vinUS: "O número de identificação de veículo informada (VIN) é inválido.",
+ zipcodeUS: "Por favor, forneceça um código postal americano válido.",
+ ziprange: "O código postal deve estar entre 902xx-xxxx e 905xx-xxxx",
+ cpfBR: "Por favor, forneça um CPF válido."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_pt_PT.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_pt_PT.js
new file mode 100644
index 0000000..0a41b89
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_pt_PT.js
@@ -0,0 +1,27 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: PT (Portuguese; português)
+ * Region: PT (Portugal)
+ */
+$.extend( $.validator.messages, {
+ required: "Campo de preenchimento obrigatório.",
+ remote: "Por favor, corrija este campo.",
+ email: "Por favor, introduza um endereço eletrónico válido.",
+ url: "Por favor, introduza um URL válido.",
+ date: "Por favor, introduza uma data válida.",
+ dateISO: "Por favor, introduza uma data válida (ISO).",
+ number: "Por favor, introduza um número válido.",
+ digits: "Por favor, introduza apenas dígitos.",
+ creditcard: "Por favor, introduza um número de cartão de crédito válido.",
+ equalTo: "Por favor, introduza de novo o mesmo valor.",
+ extension: "Por favor, introduza um ficheiro com uma extensão válida.",
+ maxlength: $.validator.format( "Por favor, não introduza mais do que {0} caracteres." ),
+ minlength: $.validator.format( "Por favor, introduza pelo menos {0} caracteres." ),
+ rangelength: $.validator.format( "Por favor, introduza entre {0} e {1} caracteres." ),
+ range: $.validator.format( "Por favor, introduza um valor entre {0} e {1}." ),
+ max: $.validator.format( "Por favor, introduza um valor menor ou igual a {0}." ),
+ min: $.validator.format( "Por favor, introduza um valor maior ou igual a {0}." ),
+ nifES: "Por favor, introduza um NIF válido.",
+ nieES: "Por favor, introduza um NIE válido.",
+ cifES: "Por favor, introduza um CIF válido."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ro.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ro.js
new file mode 100644
index 0000000..7ea626b
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ro.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: RO (Romanian, limba română)
+ */
+$.extend( $.validator.messages, {
+ required: "Acest câmp este obligatoriu.",
+ remote: "Te rugăm să completezi acest câmp.",
+ email: "Te rugăm să introduci o adresă de email validă",
+ url: "Te rugăm sa introduci o adresă URL validă.",
+ date: "Te rugăm să introduci o dată corectă.",
+ dateISO: "Te rugăm să introduci o dată (ISO) corectă.",
+ number: "Te rugăm să introduci un număr întreg valid.",
+ digits: "Te rugăm să introduci doar cifre.",
+ creditcard: "Te rugăm să introduci un numar de carte de credit valid.",
+ equalTo: "Te rugăm să reintroduci valoarea.",
+ extension: "Te rugăm să introduci o valoare cu o extensie validă.",
+ maxlength: $.validator.format( "Te rugăm să nu introduci mai mult de {0} caractere." ),
+ minlength: $.validator.format( "Te rugăm să introduci cel puțin {0} caractere." ),
+ rangelength: $.validator.format( "Te rugăm să introduci o valoare între {0} și {1} caractere." ),
+ range: $.validator.format( "Te rugăm să introduci o valoare între {0} și {1}." ),
+ max: $.validator.format( "Te rugăm să introduci o valoare egal sau mai mică decât {0}." ),
+ min: $.validator.format( "Te rugăm să introduci o valoare egal sau mai mare decât {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ru.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ru.js
new file mode 100644
index 0000000..7cc5363
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_ru.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: RU (Russian; русский язык)
+ */
+$.extend( $.validator.messages, {
+ required: "Это поле необходимо заполнить.",
+ remote: "Пожалуйста, введите правильное значение.",
+ email: "Пожалуйста, введите корректный адрес электронной почты.",
+ url: "Пожалуйста, введите корректный URL.",
+ date: "Пожалуйста, введите корректную дату.",
+ dateISO: "Пожалуйста, введите корректную дату в формате ISO.",
+ number: "Пожалуйста, введите число.",
+ digits: "Пожалуйста, вводите только цифры.",
+ creditcard: "Пожалуйста, введите правильный номер кредитной карты.",
+ equalTo: "Пожалуйста, введите такое же значение ещё раз.",
+ extension: "Пожалуйста, выберите файл с правильным расширением.",
+ maxlength: $.validator.format( "Пожалуйста, введите не больше {0} символов." ),
+ minlength: $.validator.format( "Пожалуйста, введите не меньше {0} символов." ),
+ rangelength: $.validator.format( "Пожалуйста, введите значение длиной от {0} до {1} символов." ),
+ range: $.validator.format( "Пожалуйста, введите число от {0} до {1}." ),
+ max: $.validator.format( "Пожалуйста, введите число, меньшее или равное {0}." ),
+ min: $.validator.format( "Пожалуйста, введите число, большее или равное {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_si.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_si.js
new file mode 100644
index 0000000..5a94020
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_si.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SI (Slovenian)
+ */
+$.extend( $.validator.messages, {
+ required: "To polje je obvezno.",
+ remote: "Vpis v tem polju ni v pravi obliki.",
+ email: "Prosimo, vnesite pravi email naslov.",
+ url: "Prosimo, vnesite pravi URL.",
+ date: "Prosimo, vnesite pravi datum.",
+ dateISO: "Prosimo, vnesite pravi datum (ISO).",
+ number: "Prosimo, vnesite pravo številko.",
+ digits: "Prosimo, vnesite samo številke.",
+ creditcard: "Prosimo, vnesite pravo številko kreditne kartice.",
+ equalTo: "Prosimo, ponovno vnesite enako vsebino.",
+ extension: "Prosimo, vnesite vsebino z pravo končnico.",
+ maxlength: $.validator.format( "Prosimo, da ne vnašate več kot {0} znakov." ),
+ minlength: $.validator.format( "Prosimo, vnesite vsaj {0} znakov." ),
+ rangelength: $.validator.format( "Prosimo, vnesite od {0} do {1} znakov." ),
+ range: $.validator.format( "Prosimo, vnesite vrednost med {0} in {1}." ),
+ max: $.validator.format( "Prosimo, vnesite vrednost manjšo ali enako {0}." ),
+ min: $.validator.format( "Prosimo, vnesite vrednost večjo ali enako {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sk.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sk.js
new file mode 100644
index 0000000..044a027
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sk.js
@@ -0,0 +1,20 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SK (Slovak; slovenčina, slovenský jazyk)
+ */
+$.extend( $.validator.messages, {
+ required: "Povinné zadať.",
+ maxlength: $.validator.format( "Maximálne {0} znakov." ),
+ minlength: $.validator.format( "Minimálne {0} znakov." ),
+ rangelength: $.validator.format( "Minimálne {0} a maximálne {1} znakov." ),
+ email: "E-mailová adresa musí byť platná.",
+ url: "URL musí byť platná.",
+ date: "Musí byť dátum.",
+ number: "Musí byť číslo.",
+ digits: "Môže obsahovať iba číslice.",
+ equalTo: "Dve hodnoty sa musia rovnať.",
+ range: $.validator.format( "Musí byť medzi {0} a {1}." ),
+ max: $.validator.format( "Nemôže byť viac ako {0}." ),
+ min: $.validator.format( "Nemôže byť menej ako {0}." ),
+ creditcard: "Číslo platobnej karty musí byť platné."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sl.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sl.js
new file mode 100644
index 0000000..89f74a7
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sl.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Language: SL (Slovenian; slovenski jezik)
+ */
+$.extend( $.validator.messages, {
+ required: "To polje je obvezno.",
+ remote: "Prosimo popravite to polje.",
+ email: "Prosimo vnesite veljaven email naslov.",
+ url: "Prosimo vnesite veljaven URL naslov.",
+ date: "Prosimo vnesite veljaven datum.",
+ dateISO: "Prosimo vnesite veljaven ISO datum.",
+ number: "Prosimo vnesite veljavno število.",
+ digits: "Prosimo vnesite samo števila.",
+ creditcard: "Prosimo vnesite veljavno številko kreditne kartice.",
+ equalTo: "Prosimo ponovno vnesite vrednost.",
+ extension: "Prosimo vnesite vrednost z veljavno končnico.",
+ maxlength: $.validator.format( "Prosimo vnesite največ {0} znakov." ),
+ minlength: $.validator.format( "Prosimo vnesite najmanj {0} znakov." ),
+ rangelength: $.validator.format( "Prosimo vnesite najmanj {0} in največ {1} znakov." ),
+ range: $.validator.format( "Prosimo vnesite vrednost med {0} in {1}." ),
+ max: $.validator.format( "Prosimo vnesite vrednost manjše ali enako {0}." ),
+ min: $.validator.format( "Prosimo vnesite vrednost večje ali enako {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sr.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sr.js
new file mode 100644
index 0000000..7cdd429
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sr.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SR (Serbian; српски језик)
+ */
+$.extend( $.validator.messages, {
+ required: "Поље је обавезно.",
+ remote: "Средите ово поље.",
+ email: "Унесите исправну и-мејл адресу.",
+ url: "Унесите исправан URL.",
+ date: "Унесите исправан датум.",
+ dateISO: "Унесите исправан датум (ISO).",
+ number: "Унесите исправан број.",
+ digits: "Унесите само цифе.",
+ creditcard: "Унесите исправан број кредитне картице.",
+ equalTo: "Унесите исту вредност поново.",
+ extension: "Унесите вредност са одговарајућом екстензијом.",
+ maxlength: $.validator.format( "Унесите мање од {0} карактера." ),
+ minlength: $.validator.format( "Унесите барем {0} карактера." ),
+ rangelength: $.validator.format( "Унесите вредност дугачку између {0} и {1} карактера." ),
+ range: $.validator.format( "Унесите вредност између {0} и {1}." ),
+ max: $.validator.format( "Унесите вредност мању или једнаку {0}." ),
+ min: $.validator.format( "Унесите вредност већу или једнаку {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sr_lat.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sr_lat.js
new file mode 100644
index 0000000..f12bfb5
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sr_lat.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SR (Serbian - Latin alphabet; srpski jezik - latinica)
+ */
+$.extend( $.validator.messages, {
+ required: "Polje je obavezno.",
+ remote: "Sredite ovo polje.",
+ email: "Unesite ispravnu e-mail adresu",
+ url: "Unesite ispravan URL.",
+ date: "Unesite ispravan datum.",
+ dateISO: "Unesite ispravan datum (ISO).",
+ number: "Unesite ispravan broj.",
+ digits: "Unesite samo cifre.",
+ creditcard: "Unesite ispravan broj kreditne kartice.",
+ equalTo: "Unesite istu vrednost ponovo.",
+ extension: "Unesite vrednost sa odgovarajućom ekstenzijom.",
+ maxlength: $.validator.format( "Unesite manje od {0} karaktera." ),
+ minlength: $.validator.format( "Unesite barem {0} karaktera." ),
+ rangelength: $.validator.format( "Unesite vrednost dugačku između {0} i {1} karaktera." ),
+ range: $.validator.format( "Unesite vrednost između {0} i {1}." ),
+ max: $.validator.format( "Unesite vrednost manju ili jednaku {0}." ),
+ min: $.validator.format( "Unesite vrednost veću ili jednaku {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sv.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sv.js
new file mode 100644
index 0000000..31d45f2
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_sv.js
@@ -0,0 +1,21 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SV (Swedish; Svenska)
+ */
+$.extend( $.validator.messages, {
+ required: "Detta fält är obligatoriskt.",
+ maxlength: $.validator.format( "Du får ange högst {0} tecken." ),
+ minlength: $.validator.format( "Du måste ange minst {0} tecken." ),
+ rangelength: $.validator.format( "Ange minst {0} och max {1} tecken." ),
+ email: "Ange en korrekt e-postadress.",
+ url: "Ange en korrekt URL.",
+ date: "Ange ett korrekt datum.",
+ dateISO: "Ange ett korrekt datum (ÅÅÅÅ-MM-DD).",
+ number: "Ange ett korrekt nummer.",
+ digits: "Ange endast siffror.",
+ equalTo: "Ange samma värde igen.",
+ range: $.validator.format( "Ange ett värde mellan {0} och {1}." ),
+ max: $.validator.format( "Ange ett värde som är mindre eller lika med {0}." ),
+ min: $.validator.format( "Ange ett värde som är större eller lika med {0}." ),
+ creditcard: "Ange ett korrekt kreditkortsnummer."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_th.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_th.js
new file mode 100644
index 0000000..88c9927
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_th.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: TH (Thai; ไทย)
+ */
+$.extend( $.validator.messages, {
+ required: "โปรดระบุ",
+ remote: "โปรดแก้ไขให้ถูกต้อง",
+ email: "โปรดระบุที่อยู่อีเมล์ที่ถูกต้อง",
+ url: "โปรดระบุ URL ที่ถูกต้อง",
+ date: "โปรดระบุวันที่ ที่ถูกต้อง",
+ dateISO: "โปรดระบุวันที่ ที่ถูกต้อง (ระบบ ISO).",
+ number: "โปรดระบุทศนิยมที่ถูกต้อง",
+ digits: "โปรดระบุจำนวนเต็มที่ถูกต้อง",
+ creditcard: "โปรดระบุรหัสบัตรเครดิตที่ถูกต้อง",
+ equalTo: "โปรดระบุค่าเดิมอีกครั้ง",
+ extension: "โปรดระบุค่าที่มีส่วนขยายที่ถูกต้อง",
+ maxlength: $.validator.format( "โปรดอย่าระบุค่าที่ยาวกว่า {0} อักขระ" ),
+ minlength: $.validator.format( "โปรดอย่าระบุค่าที่สั้นกว่า {0} อักขระ" ),
+ rangelength: $.validator.format( "โปรดอย่าระบุค่าความยาวระหว่าง {0} ถึง {1} อักขระ" ),
+ range: $.validator.format( "โปรดระบุค่าระหว่าง {0} และ {1}" ),
+ max: $.validator.format( "โปรดระบุค่าน้อยกว่าหรือเท่ากับ {0}" ),
+ min: $.validator.format( "โปรดระบุค่ามากกว่าหรือเท่ากับ {0}" )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_tj.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_tj.js
new file mode 100644
index 0000000..4bbb4d2
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_tj.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: TJ (Tajikistan; Забони тоҷикӣ)
+ */
+$.extend( $.validator.messages, {
+ required: "Ворид кардани ин филд маҷбури аст.",
+ remote: "Илтимос, маълумоти саҳеҳ ворид кунед.",
+ email: "Илтимос, почтаи электронии саҳеҳ ворид кунед.",
+ url: "Илтимос, URL адреси саҳеҳ ворид кунед.",
+ date: "Илтимос, таърихи саҳеҳ ворид кунед.",
+ dateISO: "Илтимос, таърихи саҳеҳи (ISO)ӣ ворид кунед.",
+ number: "Илтимос, рақамҳои саҳеҳ ворид кунед.",
+ digits: "Илтимос, танҳо рақам ворид кунед.",
+ creditcard: "Илтимос, кредит карди саҳеҳ ворид кунед.",
+ equalTo: "Илтимос, миқдори баробар ворид кунед.",
+ extension: "Илтимос, қофияи файлро дуруст интихоб кунед",
+ maxlength: $.validator.format( "Илтимос, бештар аз {0} рамз ворид накунед." ),
+ minlength: $.validator.format( "Илтимос, камтар аз {0} рамз ворид накунед." ),
+ rangelength: $.validator.format( "Илтимос, камтар аз {0} ва зиёда аз {1} рамз ворид кунед." ),
+ range: $.validator.format( "Илтимос, аз {0} то {1} рақам зиёд ворид кунед." ),
+ max: $.validator.format( "Илтимос, бештар аз {0} рақам ворид накунед." ),
+ min: $.validator.format( "Илтимос, камтар аз {0} рақам ворид накунед." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_tr.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_tr.js
new file mode 100644
index 0000000..db22113
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_tr.js
@@ -0,0 +1,24 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: TR (Turkish; Türkçe)
+ */
+$.extend( $.validator.messages, {
+ required: "Bu alanın doldurulması zorunludur.",
+ remote: "Lütfen bu alanı düzeltin.",
+ email: "Lütfen geçerli bir e-posta adresi giriniz.",
+ url: "Lütfen geçerli bir web adresi (URL) giriniz.",
+ date: "Lütfen geçerli bir tarih giriniz.",
+ dateISO: "Lütfen geçerli bir tarih giriniz(ISO formatında)",
+ number: "Lütfen geçerli bir sayı giriniz.",
+ digits: "Lütfen sadece sayısal karakterler giriniz.",
+ creditcard: "Lütfen geçerli bir kredi kartı giriniz.",
+ equalTo: "Lütfen aynı değeri tekrar giriniz.",
+ extension: "Lütfen geçerli uzantıya sahip bir değer giriniz.",
+ maxlength: $.validator.format( "Lütfen en fazla {0} karakter uzunluğunda bir değer giriniz." ),
+ minlength: $.validator.format( "Lütfen en az {0} karakter uzunluğunda bir değer giriniz." ),
+ rangelength: $.validator.format( "Lütfen en az {0} ve en fazla {1} uzunluğunda bir değer giriniz." ),
+ range: $.validator.format( "Lütfen {0} ile {1} arasında bir değer giriniz." ),
+ max: $.validator.format( "Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz." ),
+ min: $.validator.format( "Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz." ),
+ require_from_group: "Lütfen bu alanların en az {0} tanesini doldurunuz."
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_uk.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_uk.js
new file mode 100644
index 0000000..f6b69dd
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_uk.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: UK (Ukrainian; українська мова)
+ */
+$.extend( $.validator.messages, {
+ required: "Це поле необхідно заповнити.",
+ remote: "Будь ласка, введіть правильне значення.",
+ email: "Будь ласка, введіть коректну адресу електронної пошти.",
+ url: "Будь ласка, введіть коректний URL.",
+ date: "Будь ласка, введіть коректну дату.",
+ dateISO: "Будь ласка, введіть коректну дату у форматі ISO.",
+ number: "Будь ласка, введіть число.",
+ digits: "Вводите потрібно лише цифри.",
+ creditcard: "Будь ласка, введіть правильний номер кредитної карти.",
+ equalTo: "Будь ласка, введіть таке ж значення ще раз.",
+ extension: "Будь ласка, виберіть файл з правильним розширенням.",
+ maxlength: $.validator.format( "Будь ласка, введіть не більше {0} символів." ),
+ minlength: $.validator.format( "Будь ласка, введіть не менше {0} символів." ),
+ rangelength: $.validator.format( "Будь ласка, введіть значення довжиною від {0} до {1} символів." ),
+ range: $.validator.format( "Будь ласка, введіть число від {0} до {1}." ),
+ max: $.validator.format( "Будь ласка, введіть число, менше або рівно {0}." ),
+ min: $.validator.format( "Будь ласка, введіть число, більше або рівно {0}." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_vi.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_vi.js
new file mode 100644
index 0000000..fda8ef1
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_vi.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: VI (Vietnamese; Tiếng Việt)
+ */
+$.extend( $.validator.messages, {
+ required: "Hãy nhập.",
+ remote: "Hãy sửa cho đúng.",
+ email: "Hãy nhập email.",
+ url: "Hãy nhập URL.",
+ date: "Hãy nhập ngày.",
+ dateISO: "Hãy nhập ngày (ISO).",
+ number: "Hãy nhập số.",
+ digits: "Hãy nhập chữ số.",
+ creditcard: "Hãy nhập số thẻ tín dụng.",
+ equalTo: "Hãy nhập thêm lần nữa.",
+ extension: "Phần mở rộng không đúng.",
+ maxlength: $.validator.format( "Hãy nhập từ {0} kí tự trở xuống." ),
+ minlength: $.validator.format( "Hãy nhập từ {0} kí tự trở lên." ),
+ rangelength: $.validator.format( "Hãy nhập từ {0} đến {1} kí tự." ),
+ range: $.validator.format( "Hãy nhập từ {0} đến {1}." ),
+ max: $.validator.format( "Hãy nhập từ {0} trở xuống." ),
+ min: $.validator.format( "Hãy nhập từ {1} trở lên." )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_zh.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_zh.js
new file mode 100644
index 0000000..3d349f3
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_zh.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: ZH (Chinese, 中文 (Zhōngwén), 汉语, 漢語)
+ */
+$.extend( $.validator.messages, {
+ required: "这是必填字段",
+ remote: "请修正此字段",
+ email: "请输入有效的电子邮件地址",
+ url: "请输入有效的网址",
+ date: "请输入有效的日期",
+ dateISO: "请输入有效的日期 (YYYY-MM-DD)",
+ number: "请输入有效的数字",
+ digits: "只能输入数字",
+ creditcard: "请输入有效的信用卡号码",
+ equalTo: "你的输入不相同",
+ extension: "请输入有效的后缀",
+ maxlength: $.validator.format( "最多可以输入 {0} 个字符" ),
+ minlength: $.validator.format( "最少要输入 {0} 个字符" ),
+ rangelength: $.validator.format( "请输入长度在 {0} 到 {1} 之间的字符串" ),
+ range: $.validator.format( "请输入范围在 {0} 到 {1} 之间的数值" ),
+ max: $.validator.format( "请输入不大于 {0} 的数值" ),
+ min: $.validator.format( "请输入不小于 {0} 的数值" )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_zh_TW.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_zh_TW.js
new file mode 100644
index 0000000..f6d46c2
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/messages_zh_TW.js
@@ -0,0 +1,24 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: ZH (Chinese; 中文 (Zhōngwén), 汉语, 漢語)
+ * Region: TW (Taiwan)
+ */
+$.extend( $.validator.messages, {
+ required: "必須填寫",
+ remote: "請修正此欄位",
+ email: "請輸入有效的電子郵件",
+ url: "請輸入有效的網址",
+ date: "請輸入有效的日期",
+ dateISO: "請輸入有效的日期 (YYYY-MM-DD)",
+ number: "請輸入正確的數值",
+ digits: "只可輸入數字",
+ creditcard: "請輸入有效的信用卡號碼",
+ equalTo: "請重複輸入一次",
+ extension: "請輸入有效的後綴",
+ maxlength: $.validator.format( "最多 {0} 個字" ),
+ minlength: $.validator.format( "最少 {0} 個字" ),
+ rangelength: $.validator.format( "請輸入長度為 {0} 至 {1} 之間的字串" ),
+ range: $.validator.format( "請輸入 {0} 至 {1} 之間的數值" ),
+ max: $.validator.format( "請輸入不大於 {0} 的數值" ),
+ min: $.validator.format( "請輸入不小於 {0} 的數值" )
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_de.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_de.js
new file mode 100644
index 0000000..018e462
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_de.js
@@ -0,0 +1,12 @@
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: DE
+ */
+$.extend( $.validator.methods, {
+ date: function( value, element ) {
+ return this.optional( element ) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test( value );
+ },
+ number: function( value, element ) {
+ return this.optional( element ) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test( value );
+ }
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_es_CL.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_es_CL.js
new file mode 100644
index 0000000..7b85369
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_es_CL.js
@@ -0,0 +1,12 @@
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: ES_CL
+ */
+$.extend( $.validator.methods, {
+ date: function( value, element ) {
+ return this.optional( element ) || /^\d\d?\-\d\d?\-\d\d\d?\d?$/.test( value );
+ },
+ number: function( value, element ) {
+ return this.optional( element ) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test( value );
+ }
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_fi.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_fi.js
new file mode 100644
index 0000000..dc2a9b0
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_fi.js
@@ -0,0 +1,12 @@
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: FI
+ */
+$.extend( $.validator.methods, {
+ date: function( value, element ) {
+ return this.optional( element ) || /^\d{1,2}\.\d{1,2}\.\d{4}$/.test( value );
+ },
+ number: function( value, element ) {
+ return this.optional( element ) || /^-?(?:\d+)(?:,\d+)?$/.test( value );
+ }
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_nl.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_nl.js
new file mode 100644
index 0000000..f630fa5
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_nl.js
@@ -0,0 +1,9 @@
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: NL
+ */
+$.extend( $.validator.methods, {
+ date: function( value, element ) {
+ return this.optional( element ) || /^\d\d?[\.\/\-]\d\d?[\.\/\-]\d\d\d?\d?$/.test( value );
+ }
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_pt.js b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_pt.js
new file mode 100644
index 0000000..1d6a534
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/src/localization/methods_pt.js
@@ -0,0 +1,9 @@
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: PT_BR
+ */
+$.extend( $.validator.methods, {
+ date: function( value, element ) {
+ return this.optional( element ) || /^\d\d?\/\d\d?\/\d\d\d?\d?$/.test( value );
+ }
+} );
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/validation.jquery.json b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/validation.jquery.json
new file mode 100644
index 0000000..48ad747
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery-validation/validation.jquery.json
@@ -0,0 +1,29 @@
+{
+ "name": "validation",
+ "title": "jQuery Validation",
+ "description": "Form validation made easy. Validate a simple comment form with inline rules, or a complex signup form with powerful remote checks.",
+ "keywords": [
+ "forms",
+ "validation",
+ "validate"
+ ],
+ "author": {
+ "name": "Jörn Zaefferer",
+ "email": "joern.zaefferer@gmail.com",
+ "url": "http://bassistance.de"
+ },
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "http://www.opensource.org/licenses/MIT"
+ }
+ ],
+ "bugs": "https://github.com/jzaefferer/jquery-validation/issues",
+ "homepage": "https://github.com/jzaefferer/jquery-validation",
+ "docs": "http://jqueryvalidation.org/documentation/",
+ "download": "https://github.com/jzaefferer/jquery-validation/releases",
+ "dependencies": {
+ "jquery": ">=1.4.4"
+ },
+ "version": "1.15.0"
+}
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery/.bower.json b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery/.bower.json
new file mode 100644
index 0000000..3eaf928
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery/.bower.json
@@ -0,0 +1,25 @@
+{
+ "name": "jquery",
+ "main": "dist/jquery.js",
+ "license": "MIT",
+ "ignore": [
+ "package.json"
+ ],
+ "keywords": [
+ "jquery",
+ "javascript",
+ "browser",
+ "library"
+ ],
+ "homepage": "https://github.com/jquery/jquery-dist",
+ "version": "2.2.0",
+ "_release": "2.2.0",
+ "_resolution": {
+ "type": "version",
+ "tag": "2.2.0",
+ "commit": "6fc01e29bdad0964f62ef56d01297039cdcadbe5"
+ },
+ "_source": "https://github.com/jquery/jquery-dist.git",
+ "_target": "2.2.0",
+ "_originalSource": "jquery"
+}
\ No newline at end of file
diff --git a/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery/AUTHORS.txt b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery/AUTHORS.txt
new file mode 100644
index 0000000..feb0a43
--- /dev/null
+++ b/src/AbpCompanyName.AbpProjectName.Web/wwwroot/lib/jquery/AUTHORS.txt
@@ -0,0 +1,275 @@
+Authors ordered by first contribution.
+
+John Resig
+Gilles van den Hoven
+Michael Geary
+Stefan Petre
+Yehuda Katz
+Corey Jewett
+Klaus Hartl
+Franck Marcia
+Jörn Zaefferer
+Paul Bakaus
+Brandon Aaron
+Mike Alsup
+Dave Methvin
+Ed Engelhardt
+Sean Catchpole
+Paul Mclanahan
+David Serduke
+Richard D. Worth
+Scott González
+Ariel Flesler
+Jon Evans
+TJ Holowaychuk
+Michael Bensoussan
+Robert Katić
+Louis-Rémi Babé
+Earle Castledine
+Damian Janowski
+Rich Dougherty
+Kim Dalsgaard
+Andrea Giammarchi
+Mark Gibson
+Karl Swedberg
+Justin Meyer
+Ben Alman
+James Padolsey
+David Petersen
+Batiste Bieler
+Alexander Farkas
+Rick Waldron
+Filipe Fortes
+Neeraj Singh
+Paul Irish
+Iraê Carvalho
+Matt Curry
+Michael Monteleone
+Noah Sloan
+Tom Viner
+Douglas Neiner
+Adam J. Sontag
+Dave Reed
+Ralph Whitbeck
+Carl Fürstenberg
+Jacob Wright
+J. Ryan Stinnett
+unknown
+temp01
+Heungsub Lee
+Colin Snover
+Ryan W Tenney
+Pinhook
+Ron Otten
+Jephte Clain
+Anton Matzneller
+Alex Sexton
+Dan Heberden
+Henri Wiechers
+Russell Holbrook
+Julian Aubourg
+Gianni Alessandro Chiappetta
+Scott Jehl
+James Burke
+Jonas Pfenniger
+Xavi Ramirez
+Jared Grippe
+Sylvester Keil
+Brandon Sterne
+Mathias Bynens
+Timmy Willison
+Corey Frang
+Digitalxero
+Anton Kovalyov
+David Murdoch
+Josh Varner
+Charles McNulty
+Jordan Boesch
+Jess Thrysoee
+Michael Murray
+Lee Carpenter
+Alexis Abril
+Rob Morgan
+John Firebaugh
+Sam Bisbee
+Gilmore Davidson
+Brian Brennan
+Xavier Montillet
+Daniel Pihlstrom
+Sahab Yazdani
+avaly
+Scott Hughes
+Mike Sherov
+Greg Hazel
+Schalk Neethling
+Denis Knauf
+Timo Tijhof
+Steen Nielsen
+Anton Ryzhov
+Shi Chuan
+Berker Peksag
+Toby Brain
+Matt Mueller
+Justin
+Daniel Herman
+Oleg Gaidarenko
+Richard Gibson
+Rafaël Blais Masson
+cmc3cn <59194618@qq.com>
+Joe Presbrey
+Sindre Sorhus
+Arne de Bree
+Vladislav Zarakovsky
+Andrew E Monat
+Oskari
+Joao Henrique de Andrade Bruni
+tsinha
+Matt Farmer
+Trey Hunner
+Jason Moon
+Jeffery To
+Kris Borchers
+Vladimir Zhuravlev
+Jacob Thornton
+Chad Killingsworth
+Nowres Rafid
+David Benjamin
+Uri Gilad
+Chris Faulkner
+Elijah Manor
+Daniel Chatfield
+Nikita Govorov
+Wesley Walser
+Mike Pennisi
+Markus Staab
+Dave Riddle
+Callum Macrae
+Benjamin Truyman
+James Huston
+Erick Ruiz de Chávez
+David Bonner
+Akintayo Akinwunmi
+MORGAN